Spinsels op het web
actions » SearchLogin 185 articles • 11 Mar 2010

Recent articles in 'Software Dev'

Monday, 22 Feb 2010

permalink Use my stuff! It will save you almost $300,000 !

Use my software, it will save you almost $300,000!

http://www.ohloh.net/p/pyro [[image: pyro_cost.png]]

http://www.ohloh.net/p/snakelets [[image: snakelets_cost.png]]

:-P

• Wrote irmen at 23:39 | read 12× | 0 Comments

Saturday, 30 Jan 2010

permalink Mijn oude CORBA versus SOAP artikel

Om te voorkomen dat hij kwijt raakt link ik nog maar eens een keer mijn oude CORBA versus SOAP artikel. Dit schreef ik ergens in 2002 omdat ik vond dat SOAP bagger was en alles wat CORBA al had nog een keer aan het uitvinden was maar op een slechtere manier. Mijn mening is wel iets genuanceerder tegenwoordig, maar ik blijf een aversie hebben tegen SOAP.

Anyway, hier is het artikel: downloadCORBA_vs_SOAP.odt (Open Document Format). Het staat ook als PDF op de site van de Object Management Group zelf.

• Wrote irmen at 16:38 | read 4× | 0 Comments

Sunday, 27 Dec 2009

permalink Compensated sum (Kahan summation): a+b is niet c

Een rij floating point getallen optellen op de normale manier levert een steeds groter wordende afrondingsfout op. Er bestaat een algorithme dat deze fout behoorlijk verkleint: Kahan Summation.

Ik heb het even geprobeerd in Java en ten opzichte van de absolute precisie die je krijgt door BigDecimal te gebruiken voor de optelling, leverde dat het volgende resultaat:

  • 100 random doubles: normal sum error: 7.105427e-15 ; compensated sum error: 0.000000e+00
  • 10000 random doubles: normal sum error: -9.094947e-13 ; compensated sum error: 0.000000e+00
  • 1 miljoen random doubles: normal sum error: -1.338776e-09 ; compensated sum error: 0.000000e+00

Pas zo'n beetje vanaf 1 miljoen waardes wordt de normale error groter dan 1e-10, dus tenzij je echt absolute precisie wilt zou je gewoon normale optelling kunnen gebruiken... Of je kiest ervoor om sowieso BigDecimal (arbitrary precision decimals) te gebruiken voor dit soort 'kritieke' optellingen. Het is veel langzamer dan doubles optellen, maar als het niet om heel veel waardes gaat is dat wellicht verwaarloosbaar.

De Kahan summation was bijna even snel als de gewone optelling, en leverde in al mijn tests een fout op van nul, dus in speciale gevallen is dit een interessante optie. Let wel op de problemen die je kunt krijgen met optimizing compilers: als die slim genoeg zijn, dan optimaliseren ze het hele algoritme eruit zodat er een normale optelling overblijft. Zie het Wikipedia artikel voor meer info.

Dit is de code voor de compensated sum:

double compensatedSum(double[] numbers)
{
    double s = 0.0;
    double c = 0.0;
    double y;
    double t;
    for (double number : numbers) {
         y = number-c;
         t = s+y;
         c = (t-s) - y;
         s = t;
    }
    return s;
}
• Wrote irmen at 13:28 | read 11× | 0 Comments

Monday, 14 Dec 2009

permalink History of programming languages!

1987 - Larry Wall falls asleep and hits Larry Wall's forehead on the keyboard. Upon waking Larry Wall decides that the string of characters on Larry Wall's monitor isn't random but an example program in a programming language that God wants His prophet, Larry Wall, to design. Perl is born.

Zomaar 1 random 'fact' uit A Brief, Incomplete, and Mostly Wrong History of Programming Languages. Erg grappig :-D En nog behoorlijk actueel ook want het loopt helemaal door naar Scala uit 2003.

• Wrote irmen at 01:30 (edited 1×, last on 25 Dec 2009) | read 10× | 0 Comments

Saturday, 02 Aug 2008

permalink Python Imaging Library (PIL) op Mac OS X inclusief libjpeg en freetype2

Ik wilde image manipulatie doen vanuit Python op mijn Mac. Dan kom je zo'n beetje automatisch op PIL uit.

Hieronder heb ik beschreven hoe je PIL zelf compileert met de juiste libraries erbij (PNG/JPEG/FREETYPE). Zoals ik het hier heb beschreven werkt het op mijn PowerPC MAC Mini met OS X 10.4 (Tiger), maar ik verwacht dat het op nieuwere Macs ook gewoon werkt.

    • Read more »
• Wrote irmen at 02:13 (edited 1×, last on 28 Feb 2010) | read 278× | 0 Comments

Thursday, 22 Mar 2007

permalink SOAP: The S stands for Simple. Or not?

Back in the days, I wasn't a real fan of SOAP, so to say. (CORBA vs SOAP). Today I came across the following blog entry: The S stands for Simple

It's hilarious. It hits the nail on the head, and I can't really say anything else to justify my still strong aversion to SOAP. Judging by the number of comments and the general state of mind they convey, I'm hardly alone here. Isn't it incredible that SOAP remains that overhyped buzzword thingy in a lot of organizations? :-(

• Wrote irmen at 22:54 (edited 1×, last on 23 Mar 2007) | read 86× | 0 Comments

Monday, 12 Feb 2007

permalink Release early, release often... of Gletsjer model?

Hm, veel open-source aanhangers zijn ook van mening dat dé manier van OSS ontwikkeling "release early, release often" is. Dat wil zeggen dat je dus vroeg en vaak nieuwe versies uitbrengt, en zo de vaart erin houdt en gebruikers gauw voorziet van aanpassingen en verbeteringen.

Mijn eigen project Pyro is denk ik een goed voorbeeld van het tegenovergestelde.

Pas zojuist heb ik een beta versie van de nieuwe 3.6 versie de deur uit gedaan. Meer dan een jaar na de vorige versie. :-O

  • 2007-02-12 Pyro-3.6-beta
  • 2005-10-07 Pyro-3.5
  • 2004-05-29 Pyro-3.4
  • 2003-08-14 Pyro-3.3
  • 2003-04-23 Pyro-3.2
  • 2003-01-19 Pyro-3.1
  • 2002-11-20 Pyro-3.0

Ouch.

Maar is dit een kwalijke zaak? Ik weet het eerlijk gezegd niet. Ik werk niet zo veel aan Pyro, omdat het eigenlijk een heel stabiel stuk software is, en het is min of meer feature-complete. Tevens zitten alle tussentijdse wijzigingen die ik maak wel gewoon in CVS ingecheckt, dus als je wilt kun je altijd een tussentijdse versie ophalen direct uit CVS. Een andere belangrijke reden is dat ik gewoonweg niet zo veel tijd heb om eraan te werken. En ik ben de enige ontwikkelaar. Dat beperkt de ontwikkelsnelheid nogal, vanuit praktisch oogpunt.

Wat wel een beetje raar voelt is dat de allereerste Pyro versie stamt van omstreeks 10 jaar geleden (ergens eind 1996 geloof ik), en dat Pyro sinds versie 2.0 op Sourceforge staat, wat dus sinds januari 2001 is.

Pyro's ontwikkel model is meer als een gletsjer lijkt het wel. Heel vroeger begonnen, stabiel en voorspelbaar, kruipt langzaam maar gestaag vooruit. Ik heb er geen klachten over gehoord tot dusver. :->

• Wrote irmen at 23:52 (edited 1×, last on 13 Feb 2007) | read 76× | 2 Comments

Tuesday, 23 Jan 2007

permalink Scaling systems

Software system's scalability is not that simple as you might think. According to a blog posting on 'adding simplicity', it boils down to much more than a simple "I can handle more users". We need to consider six scalability vectors:

  • Transactional
  • Data
  • Operational
  • Deployability
  • Productivity
  • Feature time-to-market

Those six vectors are interconnected in different ways. All in all a good read: "You scaled your what?"

• Wrote irmen at 01:24 | read 45× | 0 Comments

Wednesday, 15 Nov 2006

permalink Law of Demeter

The Law of Demeter, also known as the don't talk to strangers principle of low coupling in software design:

The Law of Demeter was originally formulated as a style rule for designing object-oriented systems. "Only talk to your immediate friends" is the motto. The style rule was discovered at Northeastern University in the fall of 1987 by Ian Holland.

A more general formulation of the Law of Demeter is: Each unit should have only limited knowledge about other units: only units "closely" related to the current unit. Or: Each unit should only talk to its friends; Don't talk to strangers.

Basically it can be formulated like this:

A method of an object should use only the following kinds of objects:

  1. itself
  2. its parameters
  3. any objects it creates/instantiates
  4. its direct component objects

• Wrote irmen at 00:06 (edited 2×, last on 30 Nov 2006) | read 269× | 1 Comments

Friday, 14 Oct 2005

permalink Installing and configuring MSDE (SQLServer Desktop Edition)

How to install and configure SQL Server 2000 on Windows XP Home/Professional

First: You cannot install the real SQLServer itself because you need Windows Server edition for that. But you can install MSDE (the freely available 'desktop engine' or 'developer edition' as I call it) and then the SQLServer client tools to be able to use the SQL Enterprise Manager GUI tool to administer your databases (on XP Home too, you don't need XP Pro for this).

This article describes the steps needed to set up a nicely working SQLServer environment based on MSDE.

    • Read more »
• Wrote irmen at 14:36 (edited 6×, last on 02 Feb 2006) | read 2605× | 7 Comments

permalink IIS installeren op Windows XP Home edition

Goed, Windows XP Home heeft dus geen Personal Web Server of IIS. (Windows XP professional wel). Via een paar extra handelingen waarbij een Windows 2000 cd benodigd is, is het toch mogelijk om IIS te installeren op XP Home! Heel duidelijk uitgelegd op deze site hier. (lokale mirror: downloadiis-on-xp-home.html)

In combinatie met MSDE remoteother article kun je dan dus toch een Microsoft-georiënteerde ontwikkelomgevig realiseren (voor ASP.NET development bijvoorbeeld).

Het kan zijn dat Visual Studio .NET begint te klagen dat "web server is not running ASP.NET 1.1". Als dat gebeurt moet je ASP.NET opnieuw in IIS registreren door het volgende in te typen:

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322>aspnet_regiis -i

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322>aspnet_regiis -c

(Mutatis mutandis het .net versienummer). De eerste installeert ASP.NET en de tweede kopieert ook de client-side javascript files enzovoort.

(L) Meer dan 1 website aanmaken in IIS

De IIS die je op bovenstaande manier installeert is niet in staat om meer dan 1 website tegelijk te runnen. Het is in de GUI zelfs niet mogelijk om er meer dan 1 te definiëren! Maar door gebruik te maken van de meegeleverde admin scripts kun je wel degelijk meer dan 1 website aanmaken en configureren. Het is slechts de beperking dat je maar 1 website tegelijk actief kan hebben in IIS.

Hoe ga je te werk: in C:\Inetpub\AdminScripts staan een lading scripts en adsutil.vbs is degene die je moet hebben.

  • opvragen gedefinieerde servers: adsutil.vbs enum w3svc /p
    Je ziet dan wat dingen en ook een of meer getallen zoals [/w3svc/1]. Bepaal het hoogste getal, dit noemen we maxindex (b.v. 4 = de 4e web server definitie)
  • aanmaken nieuwe server en kopiëren van config van server 1:
    adsutil.vbs create_vserv W3SVC/?
    adsutil.vbs copy W3SVC/1 W3SVC/?

    Vul bij ? maxindex+1 in (het eerstvolgende server nummer dus)
  • Nu kun je in de management console van IIS al meerdere servers zien en ze stoppen/starten (er kan er maar 1 tegelijk gestart zijn)
  • server verwijderen: adsutil.vbs delete W3SVC/?
    (vul bij ? het server nummer in)
• Wrote irmen at 14:00 (edited 5×, last on 24 Oct 2005) | read 1093× | 0 Comments

11 shown; more articles may be found in the archives. The permalink icon is the article's permalink.
Process times: page=0.681 request=0.685 cpu=0.520