Archief voor de categorie 'Programmeren'
vrijdag 9 maart 2007 in Programmeren. Permanente link | Eén reactie
Ha. ‘t Is eens wat anders dan Kretschmer of Jung: Your programmer personality type is DHSC.
You’re a Doer.
You are very quick at getting tasks done. You believe the outcome is the most important part of a task and the faster you can reach that outcome the better. After all, time is money.
Ik programmeer bij momenten redelijk snel, ja.
You like coding at a High level.
The world is made up of objects and components, you should create your programs in the same way.
Ik zit inderdaad niet echt graag in de loopgraven. Beetje top-down mens, ik. Mijn laatste ervaring in de loopgraven was, euh, Z80 assembler. Om u een idee te geven.
You work best in a Solo situation.
The best way to program is by yourself. There’s no communication problems, you know every part of the code allowing you to write the best programs possible.
Um. Kweetniet. Ik heb er nooit problemen mee gehad om met meer dan één mens tegelijk te pogrammeren aan iets.
You are a Conservative programmer.
The less code you write, the less chance there is of it containing a bug. You write short and to the point code that gets the job done efficiently.
Mwof. Ik vlieg er wel meestal meteen in, en dan komt er soms veel te veel code. Maar dan refactor ik regelmatig wel eens, en durf ik wel helemaal opnieuw te beginnen. De blutsen met de builen, veronderstel ik?
donderdag 5 oktober 2006 in Programmeren. Permanente link | Eén reactie
Humor, zie ook Kottke:
Heh.
maandag 26 juni 2006 in Programmeren. Permanente link | 16 reacties
…dat is het geluid van mijn hart dat bloedt.
Ik ben aan een WordPress-template aan het programmeerderen.
Niet “aan het programmeren”. Want “programmeren”, dat impliceert serieus werken. WordPress moedigt serieus werken niet aan.
Scheiding tussen inhoud en presentatie is er nauwelijks, abstractie wordt er nauwelijks gemaakt, en vies werken wordt praktisch aangemoedigd.
Het is dan ook altijd weer schipperen tussen binnen de lijntjes van de WordPress-functies te werken en een plugin schrijven en gewoon brutekracht hap smijt MySQL-queries en PHP te doen… vies, vies, vies. Ick ick ick.
En het stomme van de zaak: uiteindelijk zijn dat allemaal zo geen ingewikkelde zaken, en uiteindelijk heb ik soms de indruk dat het bijna gemakkelijker zou zijn om het allemaal zelf te programmeren.
Tot ik kijk wat er allemaal zou moeten gedaan worden, en dat het toch wel weer het wiel uitvinden zou worden… urgh ack crap.
Toch maar eens kijken naar een betere oplossing dan WordPress? Drupal toch nog?
Pfff.
woensdag 3 mei 2006 in Programmeren. Permanente link | Geen reacties
Wijs!
Ik heb indertijd nog dingen gemaakt met Inform 6. En, euh, meer dan twintig jaar geleden dingen gemaakt met The Quill.
Met “dingen” bedoel ik dan wat men nu Interactive Fiction noemt, en indertijd Adventure Games. Of, nadat er ook point & click-dingen waren zoals de King’s/Police/Space Quests: Text Adventures.
Werelden bouwen is wijs, zelfs al zit er niemand anders in. En met Inform 7 wordt het wel heel erg eenvoudig. Natural language programming! Hoera! Kijk, dit is de broncode:
“House”
by Michel Vuijlsteke
Section 1 - Setting things up
The player is wearing a bathrobe and some slippers.
The description of the bathrobe is “It’s a dark blue striped bathrobe with deep pockets.” The description of the slippers is “They’re pretty threadbare slippers.”
The bathrobe is the player’s holdall.
Section 2 - Ground floor
The Hallway is a room. “You are in a dark and narrow hallway. Heavy oak beams loom overhead. A rickety door, all wood and metal and jingly glass bits, leads outside.
[if the curtains are not in the room]A doorway leads east [otherwise]Gray curtains hang down from the ceiling on the east wall[end if] and a large brown wardrobe looms against the west wall.”
The front door, some beams, some curtains and a wardrobe are scenery in the hallway.
The wardrobe is closed and openable. It contains a dark green overcoat. The overcoat is wearable. The description of the overcoat is “The coat is a dark green ankle-length affair, shiny in patches and with its lining hanging out.”
The front door is south of the hallway and north of the street. The front door is a lockable and unlocked door. “[if open]The front door is open, gently swaying in the wind. [otherwise]The front door is shut.”
A door-mat and a white desk are in the hallway.
A small brass key unlocks the front door.
The white desk is pushable between rooms.
Instead of taking the desk, say “You can barely lift the desk, let alone carry it. You may be able to push it around though.”
Instead of taking the door-mat, say “Ugh! It’s all muddy!”
Instead of taking the front door, say “The door may be rickety, but it’s still surprisingly well attached to the door jamb.”
Instead of taking the beams, say “You can’t quite reach the beams.”
Instead of taking the curtains:
say “You tug on the curtains. They practically fall apart in your hands, revealing a dark room behind them.”,
remove the curtains from play.
The Street is a room. “You are standing in the middle of an empty, weirdly modern street running through muddy fields. Sand crunches underfoot.
The only house in the street that doesn’t have its doors and windows boarded is a drooping affair to the north.”
Some sand is scenery in the street.
Instead of taking the sand, say “You consider pocketing a handful of damp sand but think better of it.”
The house is scenery in the street.
The description of the house is “The house looks like a mediaeval affair hidden behind peeling nineteenth century plasterwork. It has quite obviously seen better times.
There’s a rickety door and a window with half-drawn blinds on the ground floor.”
The window is scenery in the street. “The window is gray with caked on dust.”
The street is outside of the hallway.
En dat geeft dan bijvoorbeeld dit:
House
An Interactive Fiction by Michel Vuijlsteke
Release 1 / Serial number 060503 / Inform 7 build 3K27 (I6/v6.31 lib 6/10N) SD
Hallway
You are in a dark and narrow hallway. Heavy oak beams loom overhead. A rickety door, all wood and metal and jingly glass bits, leads outside.
Gray curtains hang down from the ceiling on the east wall and a large brown wardrobe looms against the west wall.
You can see a door-mat and a white desk here.
>look at myself
As good-looking as ever.
>inventory
You are carrying:
a bathrobe (being worn and open but empty)
some slippers (being worn)
>examine bathrobe
It’s a dark blue striped bathrobe with deep pockets.
>put slippers in bathrobe
(first taking them off)
You put the slippers into the bathrobe.
>look in wardrobe
You can’t see inside, since the wardrobe is closed.
>open it
You open the wardrobe, revealing a dark green overcoat.
>wear overcoat
(first taking the dark green overcoat)
You put on the dark green overcoat.
>open door
You open the front door.
>examine door
The front door is open, gently swaying in the wind.
>go out
Street
You are standing in the middle of an empty, weirdly modern street running through muddy fields. Sand crunches underfoot.
The only house in the street that doesn’t have its doors and windows boarded is a drooping affair to the north.
>get sand
You consider pocketing a handful of damp sand but think better of it.
>look at the window
The window is gray with caked on dust.
>n
Hallway
You can see a door-mat and a white desk here.
>get door-mat
Ugh! It’s all muddy!
>get desk
You can barely lift the desk, let alone carry it. You may be able to push it around though.
>look
Hallway
You are in a dark and narrow hallway. Heavy oak beams loom overhead. A rickety door, all wood and metal and jingly glass bits, leads outside.
Gray curtains hang down from the ceiling on the east wall and a large brown wardrobe looms against the west wall.
You can see a door-mat and a white desk here.
>get curtains
You tug on the curtains. They practically fall apart in your hands, revealing a dark room behind them.
>get beams
You can’t quite reach the beams.
>get desk
You can barely lift the desk, let alone carry it. You may be able to push it around though.
Een uurtje werk, twee kamers en het begin van een puzzel (het bureau verplaatsen tot onder de balk, wie weet zit daar wel iets in!), en ik heb er serieus goesting in om er aan verder te doen.
Ach, wereldliteratuur it ain’t, en ik ben hoedanook niet van plan om dergelijke dingen op de wereld los te laten, maar het is ongelooflijk wijs om te prutsen, en Inform 7 is echt machtig.
woensdag 22 maart 2006 in Programmeren. Permanente link | 11 reacties
Het heeft zo zijn voordelen, met een klein team ontwikkelen. Veel nadelen ook, vooral als “klein team” eigenlijk betekent “één mens alleen die ontwerpt en programmeert en test”, maar ook een aantal voordelen.
Het grootste voordeel is wel dat er geen tijd verloren gaat aan coördinatie tussen programmeurs. Geen coderingsafspraken, geen code reviews, geen roadmaps, niets behalve wat in mijn eigen hoofd zit—al is er uiteraard wel een roadmap en een as-I-code-it-handleiding, en zijn er richtlijnen waar ik me aan houd.
Geen CVS nodig ook—al zou ik er wàt graag één installeren, de tijdskost is niet te verrechtvaardigen: als er ergens iets gewijzgd is in een bestand, is het (in principe) mijn eigne verantwoordelijkheid.
Ook geen bug tracking ding: al zou ik er, opnieuw, enorm graag één hebben om (vooral anderen) wat meer zicht te verschaffen in planning en dingen, de moeite is de toegevoegde waarde niet waard.
…en dus is dit voor het ogenblik mijn planning en mijn bug tracking in één (klik voor detail):

…een boekje, een pen, en quality control door de Little Gods of Debugging.
En behalve dat: ‘t zijn de domste bugs eerst natuurlijk. Pak nu het vierdevoorlaatste item op delijst met te fixen bugs voor vandaag: “highlight day when in day overview”.
Ik laat ergens een kalender zó verschijnen:
Response.Write(getCalendar(DateSerial(thisYear,thisMonth,1), beginDay, endDay))
…en dat werkt niet. Doet niet wat het moet doen. Het zou moeten een maandkalendertje tonen met daarin de dagen tussen beginDay en endDay in een ander kleurtje, maar de dagen blijven gewoon niet-gekleurd staan. Alle code is juist hoor, en als ik bijvoorbeeld
Response.Write(getCalendar(DateSerial(thisYear,thisMonth,1), 21, 24))
zeg, dan worden proper de 21ste tot de 24ste gehighlight. Zo’n typische typing-issue, want dit werkt wel, als ik het er vingerdik op leg dat het om getallen moet gaan:
Response.Write(getCalendar(DateSerial(thisYear,thisMonth,1), beginDay+0, endDay+0))
Ja, ik weet ook niet waarom. Ik dacht nu echt dat asp vbscript weak typing deed, dat het niet uitmaakte of ik een getal als een string dan wel als een getal doorgeef… nee dus.
Geschreven al luisterend naar: Claude Nougaro - Au théâtre des Champs Elysées disc 2 - Comedie musicale
dinsdag 21 maart 2006 in Programmeren, Werk. Permanente link | 2 reacties
Dat is nu dus eens een typische situatie hé: ik moet een menu maken op de website van het werk, en ik zit al een kwartier te debatteren met mezelf hoe ik dat het beste doe.
Probleem is dat het algemene menu alles proper doet zoals het hoort, en databasegegenereerd en zo, maar dat de news & events-pagina’s door andere code gegenereerd worden, uit een ander stuk database, met een volledig andere logica.
So indulge me while I think out loud… Het menu van news & events ziet er voorlopig alsdus uit:
- Headlines
- News archive
- Events calendar
- Press releases
- Speeches
Daar moet iets uit komen als
<ul id="leftnav">
<li class=”current”><a href=”news/”>Headlines</a></li>
<li><a href=”news/archive”>News archive</a></li>
<li><a href=”events/”>Events calendar</a></li>
<li><a href=”press/”>Press releases</a></li>
<li><a href=”speeches/”>Speeches</a></li>
</ul>
waarbij die class="current" mee verhuist met de pagina. Al die pagina’s worden door verschillende stukken code gemaakt, en bevatten nog eens onderverdelingen (“events calendar” kan bijvoorbeeld eventsIndex zijn, of eventRange, of eventSingle, etc.), dus het is geen eenvoudige één op één, maar da’s een detail: ik zou een Dictionary kunnen maken (old skool ASP hé, geen asociative arrays of zo) met daarin de menu-items, die aflopen, en de juiste op “current” zetten.
Allemaal goed en wel, maar de reden waarom ik er lastig van loop, ik dat ik voorzie dat dat nieuws zeer binnenkort allemaal uitbreidingen gaat kennen, waardoor er meer dan één niveau zal zijn, en dat ik dan allerlei prutserijen ga moeten uithalen. En: dat ik precies hetzelfde—een te genereren menu van min of meer wisselende complexiteit—ga meemaken op nog andere delen van de website. En dat het weer eens een andere plaats is waar “dingen” moeten aangepast wordenals er “iets” verandert.
Gn. Het ideaal zou zijn om het allemaal eens grondig te herbekijken, maar daar is nu geen tijd voor: ‘t is zaak van parer au plus pressé en af te raken van een gescheiden intranet/internetnieuws en een Typepad-account overbodig maken en een archief ontsluiten.
Zucht.
Kijk zie, het van u afschrijven is therapeutisch én handig. Ik ga het voorlopig houden op simpel en eenvoudig (en, helaas, vies): domweg een lijstje in één niveau, uitzonderingsmaatregel voor news & events, mooi documentere in de site manual, en dan zien we wel waar we uiteindelijk op uitkomen als het ooit nodig is om complexere dingen te gebruiken.
Le mieux est l’ennemi du bien le mieux est l’ennemi du bien le mieux est l’ennemi du bien le mieux est l’ennemi du bien le mieux est l’ennemi du bien le mieux est l’ennemi du bien……
Geschreven al luisterend naar: P.J. Harvey - Is This Desire? - A Perfect Day Elise
update: the best laid plans of mice & men… Ik heb het uiteindelijk nog simpeler gedaan:
Response.Write("<li"&iif(thisLeftnav="latest"," class=""current""","")&"><a href=""news/"">Actualités</a></li>")
Response.Write(”<li”&iif(thisLeftnav=”archive”,” class=”"current”"”,”")&”><a href=”"news/archive/”">Archives</a></li>”)
Response.Write(”<li”&iif(thisLeftnav=”events”,” class=”"current”"”,”")&”><a href=”"events/”">Calendrier</a></li>”)
Ja, ‘t is vies. En dan?
O ja, VBScript (ugh yuck bleah, I know) heeft blijkbaar geen iif, terwijl dat toch wel een serieus handig ding is. Dan maar in de rapte:
function iif(sTest, sTrue, sFalse)
if sTest then iif=sTrue else iif=sFalse end if
end function
Ach ja. Simpel kan ook.
Geschreven al luisterend naar: Planxty - After The Break - You Rambling Boys Of Pleasure
zondag 19 maart 2006 in Programmeren. Permanente link | 4 reacties
Er zijn stapels prutserijen in allerlei programma’s die de mensen een stapel werk zouden besparen mochten ze ze kennen. Photoshop is zo’n notoir programma dat vol met shortcuts en handigheidjes zit, en ook de Microsoft Office-programma’s lopen over van de nuttige features die niemand praktisch gebruikt.
Maar ook dingen als T-SQL, dat nochtans een relatief beperkte lijst toch wel goed gedocumenteerde functies heeft, die met andere woorden op een relatief beperkte tijd allemaal eens zelf te doorlopen en uit te proberen zijn, bevat zaken die het leven veel gemakkelijker zouden kunnen maken maar dat toch wellicht vaak niet doen wegens onbekend en dus onbemind.
[phew, ik ben zo content dat ik door die zin geraakt ben, dat het me eigenlijk zelfs niet al te veel meer kan schelen of hij nog begrijpbaar is]
Stel er moeten op een website events getoond worden, afhankelijk van een aantal mogelijke factoren. Bijvoorbeeld dat alle events van een bepaald type getoond moeten worden en/of van een bepaalde dag en/of van een bepaald departement.
Naieve structuur van de database:
- tblEvents
- ID
- title
- deptID
- typeID
- eventdate
- description
Dat geeft, euh, acht mogelijke combinaties:
- select * from tblEvents
- select * from tblEvents where deptID=[dept]
- select * from tblEvents where typeID=[type]
- select * from tblEvents where eventdate=[date]
- select * from tblEvents where typeID=[type] and eventdate=[date]
- select * from tblEvents where deptID=[dept] and eventdate=[date]
- select * from tblEvents where typeID=[type] and deptID=[dept]
- select * from tblEvents where typeID=[type] and deptID=[dept] and eventdate=[date]
In het programmeren wordt dat al snel iets als
queryString="select * from tblEvents"
if ([type] not null OR [dept] not null OR [date] nor null) then
queryString=queryString & ” where 1=1 “
if ([type] not null) then
queryString=queryString & “ and typeID=”&[type]
end if
if ([dept] not null) then
queryString=queryString & “ and deptID=”&[dept]
end if
if ([date] not null) then
queryString=queryString & “ and eventdate=”&[date]
end if
end if
Mja. Beetje vies natuurlijk. Dat soort dingen kan ook in de database zelf gebeuren. Eén mogelijkheid is met case when (zie bijvoorbeeld alhier voor een voorbeeldje), maar in dit geval gaat het nog veel sneller met coalesce:
select * from tblEvents where
typeID=coalesce([type],typeID) and
deptID=coalesce([dept],deptID) and
eventdate=coalesce([date],eventdate)
Ha! Die coalesce aanvaardt een onbeperkt aantal parameters en geeft de eerste niet-NULL-waarde terug.
Dus: als [type] en [dept] niet meegegeven werden en [date] wel, dan wordt de query hierboven
select * from tblEvents where
typeID=typeID and
deptID=deptID and
eventdate=[date]
Dat zou kunnen opgebouwd worden in een query en zo, maar nóg veel gemakkelijker (om niet te zeggen properder) is het om het allemaal in een stored procedure te smijten. Dat wordt dan iets als
create procedure getEvents
@type int=null, @dept int=null, @date datetime=null as
select * from tblEvents where
typeID=coalesce(@type,typeID) and
deptID=coalesce(@dept,deptID) and
eventdate=coalesce(@date,eventdate)
…en dan proper schone aanroepen als bijvoorbeeld exec getEvents voor alle evenementen, en exec getEvents @deptID=5 voor alle evenementen van departement 5, en exec getEvents @typeID=3, @dept=6 voor alle evenementen van type 3 en departement 6.
Proper, mijn gedacht.
donderdag 5 januari 2006 in Programmeren. Permanente link | 10 reacties
Good programming is about scratching an itch. En ook wel: warning—major geekitude ensues.
Stijn van mijn vorig werk heeft een collectie weird and wonderful software staan op zijn website, zo onder meer het wonderlijke odo.
Wat het doet? Het draait op de achtergrond, en het logt allerlei dingen.
Eén pixelje per minuut in een resizable statusvenstertje dat al sinds jaar en dag onderaan mijn linkermonitor staat.
In het venster staan bovenaan bewegingen van de muis (groen=horizontaal, rood=verticaal), en onderaan het aantal keer dat je van applicatie verandert (blauw), het aantal muisklikken (rood) en het en het aantal toetsaanslagen (groen).
Zeer zeker: scratching a very specific itch.
Zó zie het er in het uitgerokken uit [klik voor groter beeld]:

Om het uur een lichtgrijs streepje, en om het kwartier een iets donkerder streepje. Overlappende kleuren combineren, dus als er onderaan veel magenta staat, is het dat er veel van applicatie geswitched is (blauw) en met de muis geklikt is (+rood). Staat er veel cyaan, is het dat er veel getypt is (groen) en ook veel van applicatie veranderd (+blauw).
En o ja, had ik al gezegd dat het zijn gegevens ook in een database wegschrijft, à rato van één record per minuut, maand na maand na maand, dag en nacht? Spartaanse interface; maar doet wat het moet doen:

Enfin, in mijn geval, ettelijke honderdduizenden records en vijftig op twaalfhonderd pixels control freak’s dream:

Typisch zo’n applicatie die over de jaren heen verfijnd is trouwens. Kleine details als tooltips die detail geven per minuut als je over een minuut gaat waar data opgenomen werd:

…en een tooltip die aangeeft wanneer het laatste en het eerstvolgende datapunt opgenomen werd als je over een minuut gaat waar niets gebeurde:

…in dit geval dat het laatste wapenfeit “gisteren” op mijn computer om 6u23 deze ochtend gebeurde, en het eerste “vandaag” om 8u00.
Functionaliteit weg in plaats van bij soms ook: vroeger kon je de snelheid aanpassen, maar dat werd toch niet gebruikt, dus nu staat die vast, één pixel per seconde.
Klap op de vuurpijl: het staat toch in de achtergrond alle toetsaanslagen te monitoren, dus zijn ook echt nuttige dingen mogelijk. En sinds vorige week—mits goedvinden van de mannen van den IT op het werk volgende maandag—is het een must-install geworden op mijn voorlopige laptop.
Die is namelijk een QWERTY-model, en al zet ik hem wel in Belgium-French, ik heb er geen < en geen > en geen \ op: QWERTY heeft namelijk geen toets naast de linkershift. En zonder <\> is het echt serieus moeilijk om bijvoorbeeld HTML te schrijven.
De oplossing:
[Fix]
Fix102=1
toe te voegen in odo.ini. Maakt van het 101–toetsenkeyboard een 102–toetsenkeyboard. Zorgt ervoor dat de linkershifttoets bij één enkele aanslag < geeft, in combinatie met de rechtershift >, en in combinatie met rechter-alt \.
Pure magic.
freewaresoftwaregeek
zondag 30 oktober 2005 in Programmeren. Permanente link | 5 reacties
…en zo kwam er vandaag alsnog PHP aan te pas. Blijkbaar zit er in WordPress geen standaardfunctie om de laatste x commentaren te tonen.
In MovableType is dat simpelweg
<MTComments lastn="15" sort_order="descend">
<p>
<MTCommentEntry>
<a href=”<$MTEntryPermalink$>#c<$MTCommentID$>”>
<$MTCommentAuthor$>
</a> over
<a href=”<$MTEntryPermalink$>”>
<$MTEntryTitle generate=”1″$>
</a>
</MTCommentEntry>
</p>
</MTComments>
Maar niet standaard WP. Enfin, ik dus wat gezoch op tinternet, en dan kom je al meteen op allerlei plugins die vanalles en de pompsteen doen. Terwijl ik hoegenaamd niet zoveel nodig heb.
Dus dan maar zelf gedaan, en da’s dan standaard-PHP dus:
global $wpdb;
$comments = $wpdb->get_results(”SELECT ID, comment_ID, comment_author, post_title FROM $wpdb->comments LEFT JOIN $wpdb->posts ON $wpdb->posts.ID=$wpdb->comments.comment_post_ID WHERE post_status = ‘publish’ AND comment_approved = ‘1′ ORDER BY comment_ID DESC LIMIT 15″);
foreach ($comments as $comment) {
echo “<p>”.$comment->comment_author.
” over “.$comment->post_title.”</p>”;
}
Heh. Nu nog een permalink te pakken krijgen. En dat zal, vrees ik, niet zo simpel zijn.
Met de ingebouwde .htaccess-generator komen er links uit als
- http://blog.vuijlsteke.be/2005/10/links-for-2005-10-29.html
- http://blog.vuijlsteke.be/2005/10/today-i-are-been-mostly-listening-to.html
- http://blog.vuijlsteke.be/2005/10/naam-in-japanse-tekens-voor-tattoo.html
terwijl de equivalente links bij TypePad zijn:
Godver. Typepad doet een vervanging van alle aardige tekens door _, trunceert het resultaat tot 15 tekens, en voegt er indien nodig _[volgnummer] achter. Maar dat wordt dus nergens bijgehouden. En het kan ook niet gereconstrueerd worden uit de database.
Enige manier om het te achterhalen, is de fecking gegenereerde files allemaal te downloaden. Dus:
wget --mirror -w 1 -p http://blog.zog.org
en dan moet ik nog eens een man ls doen om een lijst te krijgen van alle files, in de vorm van een dir /b /r *.html, maar dan in unixlingo, dus zoiets:
/2005/10/filenaam1.html
/2005/10/filenaam2.html
/2005/10/filenaam3.html
en dan vrees ik dat ik zal moeten alles in een grote excel-file smijten en één voor één de permalinks juist zetten in de WordPress-database.
Tenzij iemand een beter idee heeft op het internet, natuurlijk. Ik zal nog eens zoeken.
donderdag 27 oktober 2005 in Programmeren. Permanente link | 6 reacties
Kijk, het spijt me, maar ik blijf dit dus ongelooflijk wijs vinden:
select datefrom, case when dateuntil is null then datefrom else dateuntil end dateuntil from vwNewsAll
In ‘t proper:
select
datefrom as startdate,
case when dateuntil is null
then
datefrom
else
dateuntil
end
as enddate
from vwNewsAll
In mensentaal: neem uit een view in de database alle begin– en einddatums. En als er geen einddatum ingevuld is, steek de begindatum in de einddatum.
[en ja, ik weet dat er veel andere manieren zijn om hetzelfde properder te doen, maar toch: Leve SQL!]
[en zie ook alhier, en ik heb er zo nóg een aantal over de jaren: ik vind het gewoon een schattige constructie
]
Geschreven al luisterend naar: Max Raabe - - In der Bar zum Krokodil
Geschreven al luisterend naar: Kate Bush - Hounds Of Love - Running Up That Hill (A Deal W
woensdag 19 oktober 2005 in Programmeren. Permanente link | 2 reacties
Ha. Dat splash screen teruggevonden van mijn eigen BlogJet-dinges dat ik in C# geschreven had:

zondag 16 oktober 2005 in Programmeren. Permanente link | 6 reacties
Huhu.
gets.reverse.downcase.each(' ') {|k| print k.capitalize.chomp(' ')+'!! '}
‘t Is gelijk leren stappen, beginnen met een nieuwe programmeertaal. 
woensdag 7 september 2005 in Programmeren, Werk. Permanente link | 12 reacties
Wij hebben op het werk een ontwikkeling in ASP.NET (C#) staan. Daar moeten wat functies aan toegevoegd worden.
Iemand enig idee waar ik het beste op zoek ga naar een goede ontwikkelaar daarvoor?
Het budget is niet meteen astronomisch te noemen, maar: ‘t zou wel een mooie referentie zijn (met internationale uitstraling), er is potentieel op langetermijnrelatie als het goed gaat, en, uiteraard: het is interessant samenwerken met fijne mensen voor het Goed Van Europa En De Wereld!
update Behold! The Power of the LazyWeb! and, eigenlijk, the power of interpersoonlijke relaties en vertrouwensdinges: als Steven zegt dat mensen goed bezig zijn, dan is dat meer waard dan veel andere aanbevelingen of teksten op websites. Dok-Noordwaarts voor mij morgen!
dinsdag 6 september 2005 in Programmeren. Permanente link | Geen reacties
Don’t you just love SQL?
select case when (long_en is null) and (long_fr is null) then 'eee!!' end warning from tblEvents
Ach, ‘t is al een lange dag geweest 
maandag 15 augustus 2005 in Programmeren. Permanente link | Eén reactie
Ik probeer van thuis uit via het VPN te werken op een computer die achter een firewall staat die blijkbaar vervelend doet.
Dat “vervelend doen” uit zich in regelmatig even wegvallen, files als “modified” rapporteren terwijl er niemand aangeweest is en in het algemeen de meest obscure fouten ter wereld.
Visual Studio.NET heeft het daar niet gemakkelijk mee, maar over het VPN en met Visual Web Developer 2005 is het helemaal om zeep: bij praktisch wijziging van een lijn code geeft het ding een time-out van meer dan een minuut.
Niet zo fijn.
Dus: mijn oude (legale!) versie van Homesite bovengehaald en geïnstalleerd, en nu zit ik daarmee te werken.
update: Behalve dat ik er niet mee aan het werken ben, want het VPN / de firewall / ikweetnietwat heeft het voorlopig weer laten afweten.
Er is weinig of niets zo frustrerend als willen werken en het niet kunnen, om de één of andere stomme technische reden. Dju. Ga ik hier nu dus zitten uit armoe het stomste werk ter wereld zitten doen—html opkuisen.
Gh!