zaterdag 10 juli 2010

Nieuwe stofzuiger

Een maand geleden waren de stofzuigerzakken op. Ik moest dus nieuwe stofzuigerzakken kopen. Maar de stofzuiger in kwestie begon al aardig uit elkaar te vallen, na een jaar of tien trouwe dienst en mishandeling. En die stofzuigerzakken zijn ook niet goedkoop, dus als ik dan nieuwe zakken koop, dan wil ik ze ook allemaal opmaken. Dat duurt nogal lang, gezien de frequentie van stofzuigen in huize Rijstveld.

Het alternatief is natuurlijk dat ik een nieuwe stofzuiger koop. Ik zat al een tijdje verlekkerd te kijken naar stofzuigerzakloze stofzuigers. Een Dyson, bijvoorbeeld. Nu deed zich eindelijk de ideale smoes voor om zo'n ding te kopen.

Maarja, zelfs zo'n mooie Dyson verplaatst alleen maar lucht van de zuigmond naar een uitlaatrooster, en stuurt het stof naar het stofreservoir. Je moet zelf de zuigmond langs alle stoffige plaatsen bewegen. En dat is niet een favoriete bezigheid in huize Rijstveld.

Toen herinnerde me ik de Roomba. Dat is een ufo-vormige robot die zelfstandig door de kamer heen en weer rijdt en het stof opeet.

Roomba (overgenomen van www.roomba.nl)


Het instapmodel, de 520, kost driehonderd euro. De duurdere modellen zijn niet echt anders, maar die hebben extra snufjes. Zoals een programmeerbare timer, een afstandsbediening en virtuele muren. Daar betaal je dan een paar honderd euro voor.

't Is dus niet een goedkoop ding, en daar moet je toch wel even over nadenken. Na circa drie seconden nadenken besloot ik dat ik er een wilde hebben. De extra snufjes vond ik overbodig en te duur, zodat ik een paar muisklikken later het instapmodel besteld had.

Ik heb 'm ondertussen drie weken in huis, en ik kan zeggen dat ik tevreden ben. Het resultaat is in orde. Het apparaat kan natuurlijk niet overal komen, maar wel op veel plekken waar ik zelf niet makkelijk kon komen. Zoals onder bedden, onder kastjes en onder de bank. De hoeveelheid stof die 'ie telkens weet te vinden is indrukwekkend.

Stofzuigen is makkelijk geworden, vooropgesteld dat de te zuigen kamer enigzins opgeruimd is. Als de kamer vol ligt met kleine speelgoeddingetjes, losse draden of allerlei andere rommel dan kan de Roomba niet optimaal werken. Dus de kamers van huize Rijstveld zijn tegenwoordig een stuk opgeruimder dan vroeger. Ik voel me nu ook meer een manager dan een arbeider: vroeger moest ik zelf stofzuigen, nu zorg ik dat de robot het werk kan doen.

Hij maakt wel meer geluid dan ik gehoopt had. Je gaat niet lekker een boekje lezen of een goed gesprek voeren terwijl de Roomba in dezelfde kamer aan het werk is. Ik heb niet eens geprobeerd om hem 's nachts de huiskamer te laten vegen.



Het apparaat zoekt z'n weg door de kamer door een willekeurige kant op te rijden totdat 'ie ergens tegenaan botst. Dan gaat 'ie een andere willekeurige kant op. Doe dat lang genoeg en dan heb je, statistisch gezien, de hele kamer wel gehad. De Roomba bepaalt zelf hoe groot de kamer ongeveer is en leidt daaruit af hoe lang 'ie moet werken.

Iemand vroeg hoe lang de Roomba in de praktijk bezig is met een kamer. Mijn indruk was dat 't meestal tussen één en drie kwartier was. Ik heb het maar eens getimed, en toen bleek dat de slaapkamer (ca. drie bij vier meter, dus 12 m2) zowat een uur kostte, terwijl de kamer van de kleuter (zowat 3,5 bij 2,5 meter = zowat acht m2) in een minuut of tien klaar was.

Het doet er voor mij niet echt zoveel toe hoe lang 't duurt. Ik zet 'm aan het werk en dan ga ik iets anders doen. Als hij klaar is dan zoekt 'ie zelf zijn oplaadstation op.

De Roomba is snugger genoeg om niet van de trap te vallen. Ik heb 'm zelfs op de bank aan het werk gezet. Hij was meer bezig met zich los te wurmen uit de hoekjes dan met stofzuigen (het resultaat was dan ook niet zo geweldig), maar hij gaf niet meteen op en hij viel er niet vanaf.



Er werd ook gevraagd hoe de poezen erop reageren. Nou, dat viel me wel mee. Ze blijven wel uit de buurt, maar ze reageren niet zo panisch als op de gewone stofzuiger. Op youtube zijn diverse filmpjes te zien waarbij er een poes bovenop een rondrijdende Roomba zit. Zoveel vertrouwen hebben mijn poezen niet, en ik denk niet dat het ooit zover komt. Maar echt bang zijn ze ook niet.

nanske zet zich in voor anderen

Als nanske iets van je wil, dan kom je dat heus wel te weten. Zelfs als het niet om haarzelf gaat.

Ik heb een paar weken geleden een Roomba gekocht. En dat heb ik de hele wereld laten weten via twitter:
fransinlaos Stofzuigen is weer leuk met mijn nieuwe Roomba 520. Eén druk op de knop en het gaat verder vanzelf. 9:51 AM Jun 19th

Binnen een paar uur had nanske het ontdekt:
cruenna @fransinlaos Nee! Gadgetfreak dat je dr bent! 12:09 PM Jun 19th

Daarna bleef het een tijdje rustig. Tot gisteravond. Toen twitterde ze (terwijl ze in de klimhal had moeten zijn):
cruenna @fransinlaos RT @jacvre: Wie heeft er een #roomba? En is het wat? Maakt ie veel herrie? Hoe lang is ie bezig met pak m beet 65 m^2? about 23 hours ago

en vlak daarna
cruenna @fransinlaos Oh en @jacvre zou ook nog graag weten hoe de katten reageren op de Roomba, dikke stress of valt dat mee? about 23 hours ago

Ik was wel in de klimhal, dus ik was niet meteen in staat om te reageren. En vanochtend moest ik uitslapen en boodschappen doen enzo. Dus wat gebeurde er vandaag, zo rond een uur of één 's middags? Ik kreeg een smsje van nanske:
Je bent toch nog niet weg, of wel? Doe anders 's twitter lezen?

Ik begrijp niet zo goed wat weg zijn te maken heeft met wel of niet twitter lezen; met die telefoons van tegenwoordig kan je bijna overal twitteren. Maar enfin, ik besloot om een review van de Roomba te schrijven. Binnenkort op dit blog te lezen.

woensdag 21 april 2010

iPhone en Android

Collega Roene en ik hebben het plan opgevat om miljonair te worden. Dat gaan we doen door een iPhone-spelletje te maken en op de iPhone-markt te verkopen. Roene heeft een iPod Touch, daar kan hij 't op testen. Maar ik heb noch een iPhone, noch een iPod Touch. Ik zal dus de iPhone van Lien af en toe moeten lenen. Maar dat is maar tijdelijk, hoor; zodra het geld begint binnen te stromen koop ik gewoon zelf een iPhone.

Maar om een iPhone-app te maken heb je een Mac nodig. En niet zomaar de eerste de beste tweedehands Mac. Nee, 't moet een Intel-Mac zijn. Als diepte-investering heb ik maar een Mac mini gekocht. 't Is een leuk klein doosje, het staat niet in de weg op mijn buro, en is toch redelijk krachtig.

Mac mini (foto © Apple)


Ik heb ook al de iPhone SDK gedownload, en een eerste poging gedaan om My First iPhone App te maken. Dat kostte meer moeite dan ik hoopte; de app is wegens tijdgebrek nog niet klaar.

Uiteraard vergeet ik Android niet. Ik ga 't spelletje tegelijk voor dat platform maken. Zo is 't meteen een mooie manier om de development kits, de programmeeromgevingen en dergelijke van deze twee platformen met elkaar te vergelijken. Daartoe heb ik gisteren de Android SDK maar weer eens gedownload en geïnstalleerd. Opmerkelijk verschil met de iPhone is dat My First Android App in slechts luttele minuten klaar was.

T-Mobile / Google G1 Android Phone


Helaas lukte het niet meteen om de Android app te testen. 't Kostte me eerst een boel moeite om de emulator werkend te krijgen. Ik denk dat ik een oude emulator-configuratie had, van een vorige keer dat ik de Android SDK had geïnstalleerd. Toen ik een nieuwe configuratie aangemaakt had werkte het namelijk wel. Maar voordat ik erachter was dat dat het probleem was was ik al heel wat tijd kwijt.

Vervolgens wilde ik de app op mijn G1 testen, via de USB-koppeling. Dat lukte helaas ook niet meteen. Windows hield vol dat mijn G1 alleen maar een USB disk was. Na een boel gehannes met USB devices en USB drivers gaf Windows eindelijk z'n verzet op, en daarna kon ik moeiteloos mijn “Hello, Android”-applicatie op mijn G1 zien werken.

De volgende stap is dat ik de app sign met een eigen private key. Dat is nodig om een release versie te maken. Dan moet ik eerst een certificaat maken enzo. Nah, dat komt de volgende keer wel, ik vind het wel mooi voor vandaag.

dinsdag 6 april 2010

C# is toch niet geweldig

Zo'n twee maanden geleden schreef ik dat ik tegenwoordig in C# programmeer. En dat ik dat toch wel een aardig taaltje vond. Modern, enzo.

Nou, ik ben er toch wel wat op teruggekomen. Ik ben tegen een paar dingen aangelopen die me niet zo bevallen. Properties, bijvoorbeeld. Daarover zal ik vandaag klagen. Later zal ik over delegates en events klagen.

Wat is een property? Het is iets dat het midden houdt tussen een method (een aktie) en een field (een waarde). Stel dat je een class hebt die een AGV representeert. Die zou bijvoorbeeld een method ‘GaRijden’ kunnen hebben, en ‘GaLinksaf’ en ‘Stop’ et cetera. En de class zou als fields onder meer ‘Snelheid’ en ‘ContainerGewicht’ kunnen hebben.

agv.GaRijden();
agv.GaLinksaf();
System.Console.WriteLine("snelheid is " + agv.Snelheid + " m/s");


Een property is, zoals gezegd, iets dat het midden houdt tussen een method en een field. Je gebruikt 'm alsof 't een field is, maar in werkelijkheid roep je met het opvragen en instellen een stukje code aan. Je zou bijvoorbeeld een property voor het opvragen van de positie kunnen maken:

Systeem.Console.WriteLine("positie is " + agv.Positie);

In de AGV-class zou dat er zo uit kunnen zien:

public Coordinates Positie {
get {
// zet de GPS-ontvanger aan
// wacht op een locatie-fix
// return de positie
}
}


Er gebeurt nogal wat bij het ophalen van de positie, maar dat zie je niet. Dus je weet niet wat je allemaal teweeg brengt. Dit soort constructies is dan ook niet zo slim. Microsoft zelf zegt daarover:

“Properties are used like fields, meaning that properties should not be computationally complex or produce side effects.”


Zoals eerder vermeld zijn niet alle IT-professionals in staat om goed werk te leveren. Dus ik reken er maar niet op dat deze eigenschap van C# altijd goed gebruikt wordt.

En wat voegen properties eigenlijk toe? Je kan ze altijd vervangen door (zonodig) een private field (die de waarde bevat), gecombineerd met gewone get- en/of set-methods.

dinsdag 30 maart 2010

Stil zijn

Soms plaag ik Philip. Dan praat ik hem bijvoorbeeld na als hij iets zegt. Hij reageert steevast met iets als: “Papa, dat is niet leuk. Dat mag jij niet zeggen!”

Als ik dan vraag wat ik dan wél mag zeggen, dan is het antwoord: ”Niks!” Ok, dan zeg ik ‘niks’: “Niks, niks, niks. Niks. Niks, niks.” Maar vreemd genoeg is dat ook niet naar wens.

Gelukkig heeft Philip er nu wat op gevonden. Hij zegt niet meer dat ik niks mag zeggen. In plaats daarvan zegt hij: “Papa, niet doen. Je moet nu gewoon stil zijn.”

donderdag 4 februari 2010

C#?!

't Is ondertussen al zo ongeveer vijf en dertig jaar geleden dat ik voor het eerst een computerprogrammaatje maakte. Er zijn oudgedienden die erin geslaagd zijn om in zo'n lange periode vooral bezig te zijn met één of een paar verschillende programmeertalen. Dan heb je het dus over mensen die het grootste deel van hun werkzame leven met een taal als PL/1 of Cobol hebben gewerkt.

Zo niet ik. Als kind programmeerde ik (met enige hulp van papa) op een IBM-mainframe in een scripttaaltje dat Exec heette. In de middelbare-schooljaren was het vooral Basic (een spaghetti-taal) en APL (een nogal wiskundige taal). Allebei write-only-talen: het is veel te makkelijk om er een chaotisch of onleesbaar programma in te schrijven. Later kwam (Turbo) Pascal; die taal was wat dat betreft een stuk beter.



Tijdens het voortgezet onderwijs kwam C in mijn leven. Dat was eerst even schrikken; 't was nogal cryptisch. Maar dat wende gauw en ik vind het nog steeds één van de fijnste talen om mee te werken. Ik maakte verder kennis met diverse assembly-talen en machinetalen, en zelfs Prolog. Tijdens stage leerde ik PL/1 kennen, en Rexx (een opvolger van Exec). Als afstudeeropdracht schreef ik een compiler voor Modula-2 (een opvolger van Pascal). In C.

Bij mijn eerste baan programmeerde ik in het begin vooral in C. Later moest ik in Visual Basic werken. Die taal heeft z'n toepassingsgebied - en daar zaten wij ver buiten. 't Was één van de redenen dat ik ontslag nam. Bij de volgende werkgever kwam ik in de wondere wereld van Perl terecht. En UNIX shell scripts. En uitgebreide makefiles.

the Perl Camel
(a trademark of O'Reilly - www.perl.com)


Ondertussen had ik ook kennis gemaakt met C++. Ik vond de concepten wel interessant, maar de taal was zo rommelig, en zich nog zo aan het ontwikkelen, dat ik me er niet echt toe aangetrokken voelde. En 't was er eigenlijk ook niet van gekomen om er echt iets mee te doen.

Bij mijn derde baas leerde ik Java kennen. Wat een heerlijke taal! Veel van de goede concepten van C++, maar dan zonder de meeste nadelen van C++. En uitstekend gedocumenteerd. Ik heb jarenlang bijna niets anders gedaan. Eigenlijk alleen tussendoor wat JavaScript, een grappig modern scripttaaltje. En toen kwam ik opeens bij het onderhoud van oude software terecht. Ik ging in Cobol werken! Gelukkig maar heel eventjes. Toen was het weer een hele tijd C (en een beetje C++).

Dino
(© 2007 Frans van Otten)


Ik heb al die tijd geprobeerd wat afstand te houden van Microsoft Windows-specifieke programmeertalen en -omgevingen. Mijn ervaringen daarmee waren niet zo positief. Zolang je je precies aan hun manier van werken hield, dan ging het wel goed. Maar zodra je daar ook maar een beetje buiten kwam, dan werd het opeens heel lastig. Het spul was rommelig, slecht gedocumenteerd en foutgevoelig.

Nu ontkom ik er niet meer aan. Ik moet in .Net werken, met C#. En wat blijkt? Ik vind het niet eens zo heel erg. C# is dan ook een moderne taal, en voor een groot deel gebaseerd op Java. Ik vermaak me eigenlijk best wel.

Maar ik denk dat ik nooit zal wennen aan Visual Studio. Zo'n grafisch georiënteerde geïntegreerde ontwikkelomgeving vind ik maar niks. Eclipse vond ik ook al waardeloos. Geef mij maar Emacs en een bash-shell.