Monday, December 25, 2006
Monday, December 11, 2006
Where have you been?
I've been getting my life back. David reached his first year milestone and passed all the tests with flying colors. We had a small party afterwards with lots of developer friends showing up (more on this later).
In the mean time a new web 2.0 site popped up and I just couldn't resist testing it. And here's the result:
Posted by Goran at 9:26 AM 0 comments
Monday, November 20, 2006
Talk to DavidBot
Recently I discovered an interesting site offering free, customizable AI bots. So now you can talk to DavidBot!
Posted by Goran at 9:52 AM 0 comments
Labels: david art
Monday, October 16, 2006
Huston
David stretched out his hands and grabbed at the sharpened edge of the art-deco coffee table. His vision slightly blurred by a casual glance at one of the multiple sources of light that matched the coffee table in style and color. He commanded his leg muscles to propel him upwards. “Height is good,” a thought flashed through his synapses. Reaching the desired level his muscles stopped automatically. “Now hold steady! Let’s have a look…” Suddenly there was a flash of color at his peripheral vision. It was coming from a TV set at his right. With a slight movement of hips he adjusted his posture now heading towards the plasma screen. “Walk!” he commanded and his legs followed with his hands now only slightly caressing the wooden surface varnished to perfection. “3,” a number flashed in his mind while he approached the far edge of the table. “2,” his fingers flowed along the surface without friction. “1,” a step separated him from the void that lay between the table and the TV.
With no further thought, David took his first step.
Posted by Goran at 10:09 AM 0 comments
Labels: first step, upgrade
Sunday, October 15, 2006
Consultants of swing
David developed some bugs last week so I had to hire some consultants to help me fix the problems. As always outsourcing turned out to be an fascinating experience. Apparently The Consultants work through a strict checklist before they actually begin debugging.
- Refer the project to another consultant.
- Do nothing.
- Express amazement at progress.
So David spent two days in a hospital to make us feel better I guess. He displayed an remarkable ability to self debug! I know what you are thinking: “how could I do it in my current project? I’m way behind schedule and I haven’t yet begun writing those pesky test suites…” Well, the truth is, don’t really remember putting that in, but I can’t have mom take the credit now can I?
Who cares, I’m just happy David is all better now!
Posted by Goran at 6:56 AM 0 comments
Labels: debug
Wednesday, October 04, 2006
Handling
One of the most important aspects of interacting with the environment is shape recognition and object handling. Not surprisingly many of the so-called didactic toys supposedly teach your baby how to distinguish, grab and hold various shapes.
But simple cubes and pyramids are easy. The most difficult shapes are food items. You see it’s easy to recognize, grab and bite a sphere (provided it fits in your mouth!) but food items are more interesting.
I was watching David eat a cookie. This particular cookie is square shaped and as such is easy to recognize and hold. With each successive bite though – it changes shape. It becomes a square with a bite taken out, then it’s a kind of a triangle with a jagged edge, next it becomes almost a trapezoid… The wonderful thing is – it’s still a cookie and David has no problem understanding this. I know it’s common sense to us but that’s because you’ve learned that food items rarely change into non-food items just because you’ve taken a bite (interestingly, David does not recognize a banana without the peel).
An item that changes shape presents a difficult handling problem. You can teach a robot to hold an apple but that won’t help it hold a cherry. David must continually modify his gripping technique and be attuned to dangerous cookie fault lines. One false nip, one careless pinch and the cookie crumbles and escapes to the floor! Still, utilizing the Failure Driven Approach™ David more or less successfully eats a cookie by himself. A breathtaking testament to the triumphant progress our project is making. Go David go!
Posted by Goran at 7:15 AM 0 comments
Labels: driven, interaction
Friday, September 29, 2006
Interfacing the environment
I’ve been reading Joel Spolskys User Interface Design for Programmers which is a useful paradigm shift for most programmers and it got me thinking…
I have quite a far amount of trouble keeping David from pressing the reset (and off!) button on my computer. Why is that? Why is he so interested in pressing that particular piece of plastic? He certainly has no idea of what it does or that it does anything.
It’s because the button invites pressing. It’s designed by professionals to look like something that can or rather should be pressed. That’s why David feels the need to turn knobs on the oven, handle the remote control, open closed drawers and rarely plays with his toys.
Toys designers got it all wrong. It’s not about the vivacious colors or the high pitched sounds. It’s about usability. So I’m off to buy some toys with interfaces!
Posted by Goran at 2:44 AM 0 comments
Labels: design, interaction, ui
Tuesday, September 26, 2006
A random thing you will want to, but probably shouldn’t do as a newfangled dad #8
Let your baby get a hold of rattle.
Posted by Goran at 3:28 PM 0 comments
Labels: random things
Monday, September 25, 2006
Home alone
So mom finally left for work and we’re home alone. This is a part of a cunning strategy to prepare for the inevitable. It’s been almost a year into the development of David and the time has come for a first candidate release. RC1 will be deployed in the local kindergarten in two weeks, which makes this the final push to locate and resolve any outstanding bugs or issues. I need time and concentration and that means we had to get rid of mom.
With mom out of the way I can finally start working on a few minor adjustments I’ve been hacking at for weeks.
- Self maintenance, enabling self drinking
- Self maintenance, enabling self feeding (a toughie)
- Self awareness, preventing head bumps
Posted by Goran at 12:43 AM 0 comments
Thursday, September 21, 2006
Sokoban
This week David started to walk around with a help of a cardboard box. He neither wants nor need any help from his parents and all the trolleys and walkers we bought are resting idly in the corner. So we’re having fun playing sokoban all day long.
Only there’s only one box…
And there’s no single area you need to place the box…
And you have no control over the sokoban…
Posted by Goran at 1:00 AM 0 comments
Tuesday, September 12, 2006
The Ministry of Failure
It’s interesting to observe emerging behavior in David, seeing his ideas and solutions not provided by me or mom. You begin to see how much your life is constrained by common sense, how your vision narrows with the accumulation of knowledge. It’s inspiring!
David’s learning path is not so much of following guidance – something we are taught throughout our lives. He trusts no authority and tests even the unlikeliest theories. He might like the taste of a squashed banana – but he will try to see if it tastes better if he squashes it himself, with my Logitech (cordless) mouse, while leaning against the TV and singing...
David’s an avid believer in The Ministry of Failure. To become better, you need to fail. To quote Niels Bohr: »An expert is a man who has made all the mistakes, which can be made, in a very narrow field.« Perhaps this is the next development paradigm that will surpass TDD (and if so – I claim copyright!). I call it the Failure Driven Development.
Posted by Goran at 3:33 PM 0 comments
Labels: development, driven
Monday, September 04, 2006
Legacy code
It’s next to impossible to modify baby code. Once you program something, it’s there forever. Not unlike any legacy code you’re stuck with in your firm.
David was programmed to call me and mom “tada”. I’m not quite sure how or when it happened, but now it stuck. And no amount of role-playing and signaling “mama” changes anything.
So until David upgrades to 2.0 “tada” it is. You see with upgrades you get to shadow certain base methods, but the original programming will stay. So be very careful around your baby. Don’t say things you don’t mean. Don’t say things you don’t want repeated at the most inappropriate circumstances. Don’t say anything because you’re frustrated. Don’t say things you might regret later. Your baby understands more than you imagine!
You could be stuck with “tada” for a year or two…
Posted by Goran at 1:58 PM 0 comments
Labels: development
Thursday, August 31, 2006
OT: Daydream in blue
Recently net’s crackpots were stirred by news about a little company called Steorn. Apparently Steorn invented a device that produces free energy.
That’s right, free energy – and I quote:
- The technology has a coefficient of performance greater than 100%.
- The operation of the technology (i.e. the creation of energy) is not derived from the degradation of its component parts.
- There is no identifiable environmental source of the energy (as might be witnessed by a cooling of ambient air temperature).
While 1. is meaningless and 2. is debatable - 3. is just too vague to approach. Is there an outside source of energy or isn’t there? Or to put it more simply – where’s the little hamster at?
I guess insolitology needs an update.
Posted by Goran at 9:03 AM 0 comments
Wednesday, August 30, 2006
Who's driving this project?
I’ve been noticing subtle shifts in project David’s scope and direction. While I’ve been trying to steer things in a more intellectual direction, a tranquil state, making things cool, something was pulling the project the other way. The activities were getting physical, more kinetic. We stopped looking at stuff – stuff was being thrown now. We stopped pointing at stuff and twaddle – we crawled, walked, climbed and grabbed.
Somehow David took over. I guess this is how all things come to pass – you turn around and it’s there. Yesterday you were in control, today you’re just along for the ride.
Still I am the current project manager. I am responsible for delivering deliverables on time, meeting project goals and staying within the budget. I ain’t giving up just yet! Not while you’re under my roof…
… and that’s how you turn into “dad”.
Posted by Goran at 12:26 PM 0 comments
Labels: management, project
Tuesday, August 29, 2006
Teeth counter #1
Teeth count is now at six!
Posted by Goran at 2:22 PM 0 comments
Labels: teeth count
Sunday, August 27, 2006
A random thing you will want to, but probably shouldn’t do as a newfangled dad #7
Teach your baby how to climb stuff.
Posted by Goran at 3:51 AM 0 comments
Labels: random things
Saturday, August 26, 2006
Remoting
As of today David can be operated by remote control. I don’t mean he listens to voice commands or anything. You operate David by placing the TV remote control at the desired location and just hang around.
Special sensors (ESP) enable David to immediately recognize an available remote control is within his domain. He then proceeds to locating the device (usually takes about 12 seconds) and then closes in for the grab. Once the device is acquired it is promptly put in the mouth and chewed. Unless of-course the batteries fall out – then those are put in the mouth and chewed.
In any case, remoting is a quite useful feature as it enables us to “program” David to do various tasks, such as climbing onto a chair, couch or a bed. Yey!
Posted by Goran at 4:47 AM 0 comments
Labels: development, remoting
Thursday, August 24, 2006
Upgrade
In a few short months we will upgrade David to version 2.0. This will be the first mayor release since the beginning of the project. In light of this paramount event I've equiped myself with the new operations manual for babies v2.0.
If you thought managing baby was hard, you’ll never make it in phase two. Everything you think you know is useless, anything you actually do know has no bearing. It’s Alice through the looking glass all over again. And you better take the Red Queen seriously – you need to run just to stand still.
Posted by Goran at 7:16 AM 0 comments
Labels: maintenance, upgrade
Saturday, August 12, 2006
David's coming back!
Although we talked each day, although i could see him via video-calls, although I was almost there – it was not enough. It’s like using remote connection, the resolution is all wrong, the colors are missing and everything is slow.
That got me thinking. Will all this technology that we’re trying to reinvent – really help us communicate faster, cheaper, longer? Or will it finally enable us to travel remotely and stay home?
Posted by Goran at 10:48 AM 0 comments
Monday, August 07, 2006
Void
David went on a trip with mom. So this week all his methods return void...
Posted by Goran at 8:26 AM 0 comments
Labels: void
Friday, August 04, 2006
OT: My friend needs the internet
This is both funny and sad. In the 21st century, the future of all my childhood SF movies, with most people talking about broadband, net neutrality and web2.0, my friend lost his internet connection.
He was trying to switch his ISP (i did the same last year) and ended up in a no man's land between the bullying former ISP's parent company (i know!) and the incompetent current ISP (who now claim to be able to connect him by the end of next month).
I hope my netless friend gets back to the future soon as I miss having him around. But then again, internet is a big place. Perhaps there's a 2.0 version of him floating around...
Posted by Goran at 10:30 PM 0 comments
Sunday, July 30, 2006
Implementing interfaces (IThrow)
The most important aspect of baby development is the correct and timely implementation of various interfaces in the Human.Babies namespace.
David has just implemented the IThrow interface today.
namespace Human.Babies
{
public interface IThrow
{
void Throw();
}
}
Note that the method accepts no parameters. There is no way to specify the direction, force or the object of the operation.
Posted by Goran at 7:23 AM 0 comments
Labels: interfaces
Friday, July 14, 2006
Aibo vs. David
I won’t even pretend I have time to blog anymore. David finaly implemented the ICrawl interface! This means a sharp decrease in time I have available to blog (or do anything!)...
...and increases the chances of »someone« pressing the wrong button. I found that MSWord auto-recovery functionality doesn’t always get you what you wanted.
David has been developed to the point of being compared to other top products in the field of AI. Here’s the technical specification part of the Aibo vs David comparison table:
Aibo Ers-7 (mind service pack 2) vs. David (Comparison table)
Posted by Goran at 11:55 PM 0 comments
Thursday, June 15, 2006
Ascii David
A photo of David - geek style.
¢¢|£©€¸“§ÂéµÍôëýµÖ½½Ñí¿Úõ¤€¨¦ŠÀÖÀ”µ¼„ÜÈ´ÃþÛý|à”õ™Úž£×ÙÞÀàÅì챊¦Æµ¶È°–ËŒŒ„”ŽšÐöÕו®¬Õú×Úºí™|ôé
‰Øš«©ˆà–¤Žôœì½¡‚„·¤¨«Ä¸Ö|›|µ£àǥÝ|زöþÏÕÒÙÚÅ£ÄØÛÖ–Äîž®Íóóö¶Û‡œ€·«¸¨Ý×Ä¥ŒÏìèøšÕ ŽòáÜ•´çÎ’ëëéÊ
¼ÄŸñöίúÈò|í•Êê®||—°Î‡¶¹æÈ´ÕìÝÝ‹çÖýŠ‰ðµê¥ëûÖìÍȹœàÅí|—€œ¿ï|è¡÷‹ð“Á÷ᚣ²¼ê审ӗ‚²ïʔʕ袑ý
Ч»µæ©æý»Þð•¥³òÖî´¿Ÿ‘Œ¨ÚÛ¹¨ßŠßÆ–“£¾¼ÝèÜΣ®íÊ¥îÓŽ¶ ‚ªºì‚«Ý¬â•¿Ý½©¡ÇßÑã¶Ò|ÑÔÌΆЃᨮ©|± ϧݛ…ˆé§
ÛÈÐœé¼ÞÎ¼Ë½ðŠ¿¢÷ƽï¡î–åû²˜¦âµ½Ñ“Ðœˆ×´Þ´èÉð¾½Ú‰Èƒ©ûé’Þ›Íâà亞þÇãÀ¸ÔÉÕéŃÁ‚§¥‚¨œ´¨Çí£“ŽÒ‘ñâ‘ä«|ãï›ÜÇ
³„ƒÎ“Öüº¶¿|îäïòõ··~Ï´¥°™þòùÔ°„Ö¡œÛÖæÛúñ´ó¿ÍÄ|‘±¼áêñ†Ý”~ºˆ…å‘’°Ù¾ûÍè°ÌÈညŸ‰×ö—ÚÙ»Ó›Ÿž±Š§~û
ê†çªÆ¯×‹«½Ï|ƾ¶Ë¾ÎΔŸ¹ËàÚŠæ«‹¾©ïÕÕÑ㌖œÆŒÜìè¯áÒ©÷ÉîŸåØÀ”ÖØ¢|íÚˆ §ÜÝ®‚ŒË™¥…„šìâÍÙòôäס¿ˆ˜âäÔžê¶
†õ£ì”Ù†”Šû굈³Œä’|óø÷ª×»ˆ§¸„ɵŠÝО¡ðíŽüªøý¼èÃÁážñ‘Ú•ûæÊëßý÷¸×~ëöãîù|ë”ý|¾ò²¼±|ð´éƒè²¦Ô™ÃÏ|Óá|Ý£
â¹ÖÙžìÑ“©|§ÑÆÑï’ß›®–Ø£ ‘Í~à£Ø•×婺ÌÕàâêï’“ãÇÓÙûã¼èœ¼ºÂ³ˆ¿³”ûÓýõŠ”Œ€¾³ÝÙÁÀÇœ¸ªóºŒç샺òŽÑŽæ÷¸½ý°»´²èí
¸§‰Ø‡…ŠÛÒÖ¼þ¥óÃûíČϾÀÓ§ðúäÓ⚟׹âƒþÔüÞƲÍạ́։Ċ£ŸòÕ¥øó§ç¼ù¿«‘•§úèýûº÷¢µçäòÌâ‚Èԣ票¡’ÉÉŽ¼¹Ø롯ë£
±ŽÅÇä|æëÀƒž¥è»ÏÚŽƒ¦¦Æ¹ì‰ÇñšáÅ¿ù˜ùš¤ÏÈŒ¡ÙºðÜÑ|úµ¬Ð¾âäü¾Ûòä~Ÿ¸±ÄŸÐ§â¾ð¨¡´Ù›Ø³ŠÓâíÎæûÉäÕœ«ñøú¿×¨ùÝ
°ïíû‹Á¦Ÿ³®îõÚᑵŠÒŽì”ÓÌ‚§ÂÕåšûôëÅ騾„ººµ‰®Ó½ÈþòȃÂÆΩªÒ•¯×¿ÄùýÔèš”ñ€þŽ´µ‹¶®ü¹ÏÏÚ³…Î|ßý’Öµäèþþ̨
ÕŸ˜°…´‚â¹âéùéïçÚÜ°ã®–Æë|ì¦Ù¼¡‰«ó¡ïÒ–´ê÷㤪½ß÷ʶ³ãüö|Ë‹‚¿ƒ‹ˆÃù¡Ó~Õ–òô•ý覼óú¾®ø¿ó¬µìᯮ|ÚʲŒâ
ßØ“ÈþÖÌÙ™¯þ‹§ç¿Ôã€ä€ûñ°ÝªÌµ~Ñã´ãùšµüðÌÉžÀÕ舨~œä¹°¯ËŠÞè÷ÃÂìþÖ®Æ÷ØËìĦ|þÅðÉᓶ¨Ïâ…ÅÁñΈ—÷|‚ǽ
‹•å”Õ®£¤ªðÛŠÝÞÔæ«üß©“–|œ‘ã³èâ©°ª¬õ·à”¸»ÔΕûζ|ÛÈÌø²§·¿ŽÀ¼€ÊáÌ¢ƒšÜÜͲЮ¼üò°ýØ~ˆ»ô»÷‹©š‚žˆÑÊÙŠ~´Ä
骔ƒôÖÃÏÂŒ´È‰ô•ÀßÚŸ²ù†ƒÉãﳺţ·åµŽ„ÐÛç顈ŸïΛ ©‰Š²ò‡ç Ð|ï¨ñ¾Û᜚»ö†“ص¾çþßÛ¼Œäºöñ¹¯íÍõÃÍ|³¤|ç¼ôô
ͨ·çå¸ðÐ’Û¦Û¥§ô…¢¾†šºä‚²¾œ×Øè~¦·üôŸÚ¼è‘;„Ûü®Ó·…ÒÅñ¾Þõ–§áýÀé¥Üº¬¤‰¤Å¨»Ö©|‚|áו⎦žõÌ—§ú¯ã¹„¶ñ˜ãçÑ
~ ¨Ç€÷¯¡Š·Ñû¿á݃ô¡–îÜÃýæþûÉÀ¬†¹Íñú¯°¦°Þê¿ðôû‰€òŨÖÞĤ|À³€ë|Š’•²™¡¿öÊú“ÃÆ–¹Û´ðá~ï›ëš¾ÇºÖÞÜ䥋ÙËœ|Á–
¿ÙéüñÊÞÞûò—‡ƒÇãÏÛØÕè|•|‚α¹–Ý—Œã±¬Ï‰´›¨•Š¥šÎò‚Ò’€öˆŠÚôÒÓ¯¹ùׄ|½èó²í¼¶î™Ò ù™ù·Î¸ÈÒ“¦Çô×øÒÏÜë¢ì
ìì…›ü´±‡ÖõçÊʨ֦‹ª¡Þ͡ŞހꃜºËŽóÌáØ⣈¬ƒ£È¢«êØäðÞ’Ëí×ÒÞꥬ³—ݨÅÁݒü©ÜÝí|‚¬½Àó´ð¤ªš‘äÎÊÙöü÷
|û±»™®‰ŸµêÎâéѽ˜½ÉÚÂñ®|ßØ”À”~ñýÔåËòò»£ÖÖÖíÓëï‡ë¬Öˆ€ÂÚ‹Ÿ•§˜æçáÉ‘®îàIJ˜Ä~ïÚ¸ó¸í좖ÝÐËÐñ͈°¹ºÑ|·
¥û“ñŒ©Ëð›Žý¼‘üçŒã¨ÛÀñ‡¢êïÏýÝ”÷×|ôÒ–üܶšÞ‰ÀÅí䬈ϰð¤ø»çÊêù¸þÓÝ°°£¹‚Ó¿ÜÊ«ß‹§ø›Üê³èñüï|ƒ•
óƒÈ™çÁÕ°ø™§âëŽÐõ°àóËà毲סÉÆœéàÍÏÆïåó…ÓˆÏÜîÖ…½‡©åûš÷ɨ€†Çê䘖·øŒçÈ”ä¿ó‡ô¹‘™Ý¡È²¢ËÛ‹«Ÿßó÷²¶Ú§Œ¿
µ”ßï÷Ÿü¨±þïñćù¶ç—ãݲ ”§½ìí¡Ú˜»ëÆ—¦ß„þËø|˜íÞÇá™ÉÆüžŸ–įŒú°Û´øÒżä¾ñ£‰£ä~ßåðÈì·Ó•¼¾˜œà§£ôüÞºÝÑÝ”
ÎË´ÅáÎÈ—Ø¢£Þ®Ã½ üßëîש¶…ÝŠ«§¯ê¤Ú‹èåüÖˆšÕ¯á|~|ÔÇÏ‘Šô¤‹ÍúÏŽòòë|¢¾¬Ê‰Òþ¢Öªö|€ôž¯ˆ»çÉ㵰Ѷ‘ÄŠ™²~Ò·£
Ÿ¶¢‹ì²‰ã‰ûòƒÜîÚñ÷¡×»¢‘ƒ|À¹ûð°ªËä“™…í~ƒÈ°„”Û±ÝÈ‚¯Ú ùüԕňŸóÛ½À‘Á½”Žü¾†å¾ªú†óú¬â³Õ°ÎÞ‘Þ¯ø¬µÝˆíÜï
ÉÀ§Ãâõ’¸Á¹†¿Î¨¤ì°ºó¤Òû÷ò誺ÄÚÃ…¼Âø¤ÁÌ€—ü¶ÛâþäƦãß·ÔÌø~÷ù‡¶½¦û邨ÜøÏö•½Â|þ÷¤âåÜ‚õ–ƒÞš¿£½ýÛ
Ë|ðø««Ûþضú¼ãÁèÞ‰ƒ‹Àþê®Ú¡´ë µÅª”ܤœ³ÆÈÅæûäÂâ…ÖÄùÀą‘Ž´Û||¸ˆ‚äã~È«~šƒÏ›ç‘¡¥ëåè쇄ŠÝÆ÷“¹ž½Üêá
éÌßÈÌž²ƒü´°…¥º×Á»äˆóû¶÷åðƒ‹§Ä¹–ôú±“öúºó€·Û¿ ´÷·Þƒµ°‡Å»²Ó|¥Í¨‡éÙÎ¥™›û“ùÊÔ³äÁ¡ÝÇ놡¨÷§à“È‚‚—ÑÍšõ’ê
†Ú÷šç¿÷Æ£ê´òȬÞÌåŸØŸõÛÍâ𼩼á‰ýÖăòÆååþ¹¼ò|šõ˜ùÃÚñ€©¡æÏžÔôõ‰ÇëúÅéǸ·¶Û†ûÁû|ñ€ÆÊßä¿ä»š¦•œžÓ
~®÷”˜Ñ|Ç’Š|…ñ~’ÐéëÄÍí¬šòÖíÜìíí“ËÉ—Åúù²ñ¦ãå¼µ õ«Ï¶ªÇþªüÍÖ|Ó£ÝëÔ¾¥ýÖË°¸†žõó„Þ†~¨ÃŸ|á›ÛÁ·’ð|ä…·
¸ÌçãÂ¥²î¨þ¡•˜ì¥ó†à ¯Ç´ˆÄ‚Á‡½Þ–´ä¤×ê³å|´›‹Î¥¾ø ¬€‰ÒïßÉÈßž¦…£±²Ëü՚ϚŽ“¢¾¯•‰íýü¿˜Û‘Ê¡µ˜ú¡|§í~ðº¹Á
Úº³|À·Í|¸ðž”»´·ãû™Éò²ê…È ûÉÆ®´•æÕ®ù”³ØæЕጩš‹~ˆ÷›µ°¡¸þ¤ÜÈ€§|ì¶ò»‚„Ò¬ÐËôÄÞÛñÑßšßèË×ƅ󾫪ú™Ú
Åï㌘²¯°÷“¨°ä½Ü§¼~|ð¤ˆÏ¯àÇÓž¶Üë~—™ÄêØÍ̾ފã×øø³®µÜ ̆ï𿯋¹„¼Û¼¢¼’àã’£³‚ÔáÑõ—è¡î|´¯’¾”ͧ|¤ýµ
|Þß³á‚Á›ë¹ÎÒº×å©£Á¥þÅèëÑ™Ï|Ô‚ˆã±ªÝ—¢ƒ£ò‹‰©ñ ¦°€¥ÃŽÒÔ㴉τˆŠóÉÕžˆ—˽ç¤Û×À³æ²¶Ÿêª÷ä̃܇×úþÛÕí|¶î
㕉û³©µà檚Ǧ¨€Ã èëÒÒů䎀ò‚Å©¯ßŒó÷~ÎèòŠÉŠñËùöÙ¯Ëû¥»|â…§ÁŒµ˜§àŸ°ÑßÈ“ä€ÛíÌ¿ÈîŸÞ‰Ùá‰Ý¦êöËú‹˜¤ÙìÙòžº¾
§¿ß쎺ÉèÞÀÑÚ³Ž”ã¡ÝÀ…ó†þªÞ‹™à‡Äƒ†ÓûÒ~ÔŠ¨ÆÕ½¶’Ú¡«•Ïõ—÷½¶Ð˜|¼»é§ÖÚ€×ˬ´§è‡åáÑ×¼ãÊŸÞøцÝǪ̈ü
É°ë…îÙ§¼ýÈ•ü˜èÊí²À»ËŠž÷‚Ôþ—õ£ü‰¡áË£´µž|îøÚù¿ìšÞ”ÕËý×ïšõÖ¬ó€’“Óî¾ù¢ºÎ¨¶Û»’»|Ȳ̫¦ßŠÅÒí¨°¯Ó¼«Šþ
Posted by Goran at 3:03 PM 0 comments
Thursday, June 01, 2006
Debugging (part II)
I was on my own again.
I raided the home pharmacy (with my dad being an MD I do not use the term haphazardly) and found nothing (nothing I’m allowed to use on a 9.5 kg humanoid). It was time to go out and buy some drugs. This being the information age – the age of web 2.0 shops and services – one does not expect leaving the comfy chair would be necessary. In my country one would be wrong.
So I ventured out (physically walked!) in the friezing cold (ok I’m exaggerating here!). To my horror the pharmacy was packed. I had to wait in line while bunch of old ladies (with mean elbows!) got the info on the latest fad diseases. Meanwhile my wife sent me a MMS photo of David looking like Regan Teresa MacNeil at her worst. I’m not sure what happened next but the line in front of me was suddenly cleared. A few of the old ladies were moaning and the clerk was looking at me kinda funny but I paid cash and was out of there in a flash.
Posted by Goran at 11:59 AM 0 comments
Labels: debug
Saturday, May 27, 2006
Remembrance of Things Past
I'm in a proustian mood tonight. Browsing through my so 80’s collection I’m playing for David I stumbled upon Bryan Ferry’s Don’t stop the dance. Now for those of you who never owned an Amiga in the Amiga days, who never subscribed to Eurochartand never heard of Dr. Awesome of the Crusaders it wont mean much. To me it means a world of things.
What will David’s 20s collection be like? Will I get it?
Posted by Goran at 1:45 AM 0 comments
Friday, May 19, 2006
I'm sorry!
I'm sorry! I humbly apologize. I haven’t been taking care of this blog for a month now. I could list you tons of excuses buit the fact remains I’ve bloged not a single line this month.
I was toying with the idea od writing a substitute blogger to fill in when I can’t be bothered to write. But decided it wouldn’t be fair to you. So I apologize again and I swear I will…
Posted by Goran at 5:42 AM 0 comments
Labels: apology
Friday, April 21, 2006
Respect!
I want to be a cool dad, you know? I’d hate being one of those uncool parents that show up at the wrong time, wearing the wrong things and saying the wrong thing to the wrong people. That would make me a failure in my book. So I’m doing some Googling on trends and music, joining cool IRC channels (avoiding the lame ones), learning how to sphr33k 4s h4xor lol! and correctly misuse the punctuation marks.
I do wonder if my hard earned skills will ever come in handy. I wonder if my dad went through all this? All I can say is - respect!
Posted by Goran at 1:16 AM 0 comments
Labels: cool
Tuesday, April 18, 2006
Debugging (part I)
A few days ago David started acting strangely. He was less cheerful then usual and that is a bad omen. He was crankier then usual; a regular mr. Ganglion! He was throwing more exceptions then usual - plus me and mom developed a splitting headache - so I knew we had a bug on our hands.
It was time to fire-up those debugging tools! The first tool you should always use in such situations is a Home Medical Encyclopedia. This is the kind of book your grandma buys from a ruthless encyclopedia salesman. This informed me David is either perfectly healthy, he is dying or any number of things in between.
My second weapon of choice was (of course) The Little Search Engine That Could. Only this time it couldn't. With links like: a survey, a credit card (I can still see the friggin’ numbers!) and ovaries I walked away with a strange feeing baby fever has more to do with female adult mental disorders than David!
So I phoned my dad who told me to sit tight and to call back if the fever gets up to 40°C.
Needles to say I wasn’t satisfied with this…
Posted by Goran at 12:27 PM 0 comments
Labels: debug
Tuesday, April 11, 2006
Geektionary: Mom
A generic BabyEvent and BabyException handler.
Posted by Goran at 10:17 AM 0 comments
Labels: geektionary
Wednesday, March 29, 2006
Implementing interfaces (ITurnable)
The most important aspect of baby development is the correct and timely implementation of various interfaces in the Human.Babies namespace.
David has just implemented the ITurnable interface today.
namespace Human.Babies
{
public interface ITurnable
{
void TurnLeft();
void TurnRight();
}
}
Through the magic of abstract classes and inheritance we also get Turning and Turned events to bind on mom. She loves it and I recorded the first build on cam. You might have noticed I haven’t bloged any of the previous interfaces. Eg. yesterday’s post was a result of the IGrabber.GrabObject method. That is because they we’re already implemented at birth. Anyway, here’s a short list:
- ICute
- IGrabber
- IKicker
- IScreamer
- IDemandable
- ILovable
Posted by Goran at 11:13 AM 0 comments
Labels: interfaces
Monday, March 27, 2006
A random thing you will want to, but probably shouldn’t do as a newfangled dad #6
Posted by Goran at 9:45 AM 0 comments
Labels: random things
Sunday, March 26, 2006
Project review
Scheduled pediatric check-ups are like the dreaded project review meeting on a project under-manned, over-sponsored and hopelessly behind schedule. So when the time comes – you just know things will not go as planned.
It starts off with a barrage of project related questions like: Is the baby breastfed? Is the baby being read to? Is the baby being exercised? And there’s no good answer to such questions.
Project sponsor: Is the baby breastfed?
You: Yes.
Project sponsor: I see. Perhaps you should consider switching to formula. Breastfeeding the baby can lead to baby becoming over-dependent…
You: ?
Project sponsor: Is the baby being exercised?
You: Why yes, we’re…
Project sponsor: I see your baby has over-developed muscle tonus. You should consider not putting your baby through so much exercise…
Next the project milestones are reviewed.
Project sponsor: Does the baby stand on its own?
You: Well no, he’s 4 months old!
Project sponsor: I see –you think your baby is developing at a satisfactory rate then?
You: I’ve done much reading on the subject and I think…
Project sponsor: I see – you thing reading a book or two on the subject makes you a specialist then?
You: I…
Project sponsor: Are you ok with your baby developing slower then his peers?
You: Wtf?
Project sponsor: “So where’s the Gantt?”
At this point you point your gun toward one of two possible directions depending on whether you are an introverted or extroverted individual…
Posted by Goran at 1:23 PM 0 comments
Monday, March 06, 2006
A random thing you will want to, but probably shouldn’t do as a newfangled dad #5
Use your baby’s birth-date as password.
Posted by Goran at 10:21 PM 0 comments
Labels: random things
Monday, February 27, 2006
The Gantt
Every project needs a Gantt chart. It is essential. You can’t persuade any self-respecting middle-to-upper management cone-head to sign off on your project plan unless he sees the Gantt. He’ll tell you:
”Where’s the Gantt?”
And you’ll be like:
”Wtf, I just showed you the project schedule and…”
And he’ll just go:
“Where’s the Gantt?”
And you’ll try to explain:
”Look, there is no need for a Gantt chart – all the information you could cram into that chart is right…”
“So where’s the Gantt?” comes the reply.
So here’s the Gantt.
This needs some elaboration.
Familiarization (7.11-7.12)
As noted elsewhere, you inherit your baby project (roughly) 4% of the way through. Considering the fact you’re dealing with an 18 years long project, 4% is a lot. This means you’ll need to familiarize yourself with your baby.
Research (14.11-1.1)
In about a week, you will realize you haven’t the foggiest idea. You’ll read books, Google and call-up psychics. After two weeks you’ll give up.
Learning Basics (7.11-14.11)
In order to begin with the caretaking activities you will need to learn some basics. This includes (and is not limited to) feeding the baby, taking the baby for walks, keeping the baby clean and dry and keep the baby happy.
Caretaking Activities (14.11-?)
Apart from the developing stuff, you’ll actually need to maintain your baby. Have you ever worked on a project where you needed to maintain the data while actually developing system to manage the same data? We’ll it’s just like that.
Sleep (?)
What sleep?
Playing Your Favorite Board Game
I average 12 seconds a day. Which means I’ll finish a quick game of Go in about 450 days.
Household Tasks (daily)
The Baby Project is a perfect opportunity for your spouse to off-load some of the chores to you (this is an inherently bad idea – think Microsoft product support and India). At this time you have no choice but to pencil it in.
Teaching Basics (15.10-?)
A Baby requires you to teach it some of the basic skills of living in a civilized society. This includes (and is not limited to) eating, walking, talking, taking care of nature calls and to say “I’m really, really sorry” when he does something you don’t approve of.
Blogging (whenever)
This will fall under work-time (in case your boss is a cone-head, you will need to work at it at 1 am).
Posted by Goran at 2:41 PM 0 comments
Tuesday, February 21, 2006
A random thing you will want to, but probably shouldn’t do as a newfangled dad #4
Register a gmail account for your baby.
Posted by Goran at 6:22 AM 0 comments
Labels: random things
Sunday, February 19, 2006
Nice to meet you post
Hi!
If I could keep a coherent thought in my head for more then fifteen seconds, knew how to form complete sentences, had a vocabulary, was able to type (well, strike the intended keys) then this would be written by me and not my dad.
<-- This is me today.
Well not really me – it’s a picture of me. Anyways, since dad takes care of the unmentionables and mom takes care of the food, I thought I should let him blog for me as well. As long as I’m full, dry, warm, had enough sleep and winamp is blasting Sugababes I’m good.
I wouldn’t call that high maintenance – would you? I do find my parents are hard to program. I have to guide them every step of the way. Nothing happens without my auditory signal. I swear, if I never cried they would forget to feed me! They just don’t seem very intelligent. I’ll have to work on them some more.
David
Posted by Goran at 9:59 AM 0 comments
Labels: david, maintenance
Friday, February 17, 2006
A random thing you will want to, but probably shouldn’t do as a newfangled dad #3
Let your baby write blog.
Posted by Goran at 8:31 AM 0 comments
Labels: random things
Tuesday, February 14, 2006
Geektionary: Baby.Diapers
The purpose of Baby.Diaper classes is to catch and handle bowel exceptions. These vary in type, smell and mass.
Baby.Diper classes implement one of two common interfaces: IWashable or IDisposable.
Posted by Goran at 10:10 AM 0 comments
Labels: geektionary
Saturday, February 11, 2006
Programming sleep mode
First of all, you need to make sure your baby is at a stage of development where sleep method is implemented (we’re talking about the public sleep method here, not to be confused with internal InvokeUnconsciousness method which is called at random for the first few weeks).
Next, you need to realize there is no surefire way to invoke sleep. There are literally hundreds of overloads of the sleep method, ranging from simple .Sleep (MothersMilk food) to more complex .Sleep (Sound music, Toy teddy, String bedtimeStory, Int TimeoutInHours) methods. And each is more likely to throw an exception then work as advertised. But then again, they might work the next time you try them. The trick is to keep trying and experimenting!
For the past month David would instantly fall asleep to Guns’n’Roses’s Welcome to the Jungle played insanely loud while being held in my arms and gently bounced off beat with a freshly opened banana* nearby to provide the correct aromatic environment for sleeping. The key is to experiment! Naturally David stopped responding to this method two days ago – but I’m having some success with Enya’s May it be, Oranges, Mathmos space projector and circular walks through the apartment.
Did you know the word “banana” is the most commonly used password for female users named a variation of the name “Anna”?
Posted by Goran at 12:47 AM 0 comments
Labels: development, sleep
Monday, February 06, 2006
A random thing you will want to, but probably shouldn’t do as a newfangled dad #2
Start a blog about your baby.
Posted by Goran at 4:25 AM 0 comments
Labels: random things
Friday, February 03, 2006
Basic design flaws (part II)
Subtitled: Inheritance
Despite what you might have learned at sex class – your baby does not inherit from you. Babies inherit from an abstract baby class. The bad news is over 90% of class methods are abstract and need implementation. The other 10% need redesign.
As you may have noticed – the designer of the abstract baby class had no clue and surely had no experience in OOP. Case in point is the “eat (object food)” method. You might think that putting any object as food would do. Certainly there’s nothing in the method signature that suggests otherwise. You would be wrong! You see, babies need different kind of food objects at different stages in their development. You’d think the almighty class designer would consider other solutions to the problem, but nooo. It’s up to you to know how your baby works and what to feed it and when. Talk about encapsulation…
As previously stated, the baby does not inherit from you. You see, none of your class methods will work in a baby. You need to write them from scratch. The good news is none of your spouse methods are implemented. So she needs to program them too.
And guess who’s a better programmer!
Posted by Goran at 10:57 AM 0 comments
Labels: design, inheritance
Thursday, February 02, 2006
A random thing you will want to, but probably shouldn’t do as a newfangled dad #1
Name variables after your baby’s name.
Posted by Goran at 10:44 AM 0 comments
Labels: random things
Monday, January 30, 2006
Mismanaging project(s) (part III)
Subtitled: Time management
There is no time management because a prerequisite to time management is – time. You see, it’s kinda difficult to manage something you have so little of. Just look at this blog. This was supposed to be a daily blog. See anything new for the past week?
But that’s beside the point. The point is your baby needs to learn time management. You need to teach him what daytime is, what lunchtime means and what nighttime brings. This is a serious matter. How serious, you ask? Of the utmost seriousness. Sounds serious, doesn’t it? Well, it is. You see - you and your baby need sleep. Continuous, 6 hour, non of that pre-R.E.M. stuff sleep. It’s a vicious circle. If you or your baby do not get enough sleep, you get cranky (a no-no) or the baby gets cranky (a bigger no-no), then you’ll both get even less sleep during the day. This will result in an even higher level of crankiness, which may potentially result in heightened levels of crankiness in your spouse (the biggest no-no of them all!). If this escalates… We’ll it’s probably best not to go there.
And yet there’s something even more important. After all that crankiness and petulance you’ll take a long look at your baby, you’ll take him into your arms and he’ll reach out with his little hands and grab you by your face and your ear and smile and say “Ga!”. And you’ll forget all the bad stuff that happened during your day, all the crankiness will leave your body, nothing else will matter and everything will be just fine. And you know what that is? That’s daddy management.
Something your baby doesn’t need to be taught.
Posted by Goran at 2:53 PM 0 comments
Labels: project
Monday, January 16, 2006
The Book
There’s always a book (it’s usually quite colorful and has the following keywords in the title or the subtitle: children, happy, wonders, parenting and easy). And the book will have all the answers, and it will tell you what to do if you wish your child to become the president of your country and what to avoid if you do not wish your offspring to off a few of his schoolmates later on. It will be a firm teacher and a loving friend. And will tell you absolute crap and make your life miserable.
There’s no way to organize anything for the first few months. You’ll barely keep up with the daily tasks and activities. Just to show you an example: You’ll get up at 3:00 am (babies think of this as morning), get the baby out of the cradle, fetch some warm water, change the diaper (twice), wake-up mum to feed the baby, make the coffee, change the diaper again and put the baby back to sleep by carrying it around the apartment for a few hours. Around 9:00 am it will smile at you and fall into deep sleep. You’ll enjoy a brief moment of bliss knowing you’re a good daddy. At this moment the book will tell you that responding to your baby crying at 3:00 am was wrong, changing diapers at night will make your baby a violent sex offender, feeding a gremlin after midnight would have been a better idea, mum drinking coffee will cause the baby to stop drinking her milk and that babies must learn to comfort themselves and must not be held in arms for more the 30 minutes.
So I recommend a book that’s more like something a man can use. So pick up a copy of The Baby Owner's Manual at amazon. Your mileage may vary.
Though now I think the section on programming sleep mode needs to be expanded…
Posted by Goran at 10:36 AM 0 comments
Labels: reading
Saturday, January 14, 2006
Basic design flaws
Subtitled: Structured error (non)handling
Babies are purely designed classes. They suffer from basic design flaws which must be corrected before they are ready to be let out into the world without supervision. Case in point is the umbilical cord. You know what the umbilical cord is? It’s a classic case of broken encapsulation.
When a baby error occurs it’s caught and wrapped into the most general exception you can imagine and thrown out at you to handle. Not only do babies not even attempt to handle the problems themselves, they even hide any error information that may or may not be known to them. The only message that gets through the communication channel is a loud audio signal designed to wreak havoc on your nervous system.
The stack trace usually returns a simple: “…error at Baby.Sleep(54000);”.
So debugging babies is next to impossible. It’s more akin to voodoo science then debugging. You do A and the baby does B. Great! What you don’t realize is that you doing A has more chance of causing rain then for your baby to do B again. You see, your baby is probably not even reacting to your A. She stopped crying because there was a slight movement in her bowels she’s now investigating. You could be levitating in a lotus position and she wouldn’t flinch.
Also – babies tend to develop much quicker then you can follow. Whatever worked yesterday is old news. Sounds that stopped the crying instantly now only make it worse. How is a developer versed in structure, logic and control expected to deal with this? Well, think of it as working on a team project. Except you and your “team member” don’t communicate and he keeps changing your code without telling you about it. Now that is a familiar situation isn’t it?
Posted by Goran at 7:46 AM 0 comments
Labels: design, error handling
Thursday, January 12, 2006
Mismanaging project(s) (part II)
Subtitled: Organization, structure and control
The first thing you must realize is this - you are not developing your baby from scratch. What you are doing is taking over a project nine months into its progress. It was a hostile takeover and mum (though sedated at this point) is not liking it. Naturally, the documentation is lacking and it is up to you to bring the project back on track.
So most of us turn to user manuals, operating instructions and best practices. As soon as you start delving into the available online resource on the subject you'll get the feeling 95% of the people in the biz range from different to nutz.
In short you have a half-baked product with heaps of undocumented features. The only thing you can do is try to figure it out yourself. This means testing. And I have some bad news on the way error handling is implemented in babies.
Posted by Goran at 1:34 PM 0 comments
Labels: project
Wednesday, January 11, 2006
Mismanaging project(s)
Subtitled: Planning
As previously stated, project “having a child” has no planning stage. Well there may have been some informal discussions beforehand and certainly a decision (conscious or not) has been made at some point not to use birth control. But that’s as far as it goes I mean really – have you ever met someone planning their parenthood? Anyone out there estimating costs? Setting deadlines? Estimating resources? I thought not! There are exceptions but then again – too few to mention.
Speaking of resource estimation, this is yet another overlooked planning phase of our mismanaged project. Estimating resources seems just too easy. There’s a mum, usually a dad, a couple of grandparents, an uncle somewhere out there and your next door teenaged girl. She’ll end up under expenses later on – but for now let’s count her in. Well there’s just one thing wrong with it, it has nothing to do with reality!
First of mum will be out of commission for the first week or two. She just went through a last minute solution build and deliver process, you can’t count on her. Grandparents will just make things worse. It’s been ages since they last worked at a project like this. They’re retired remember? And you can forget about the uncle or the babysitter till the project is in the later stage of development. It’s just you - dad…
Posted by Goran at 2:22 AM 0 comments
Labels: project
Tuesday, January 10, 2006
Why the late start?
So why the late start? David was born on 7th of November 2005 which theoretically gave me ample time to blog his development so far. That’s what I thought – well up to the second day David left the production line and became an in-house application. Since then I’ve been averaging about 5h sleep time / day (most of it in fragments of 20 mins). So much for theory…
So anyone telling you kids are easy is either lying to you or is at best someone’s uncle (or an aunt). Kids are !easy. And with good reason. Try to look at a child as a software application. Look at it from a viewpoint of a project manager. Do you see what’s wrong with this picture?
First of all there’s no project plan. Kids happen (well, you know what I mean). There’s no planning stage. No parents have sat down and sketched how the baby should turn out. It’s a classic cowboy programming approach. “Let’s have kids!” Well this is the aftermath…
I’m not saying having a child is bad. I’m not saying I don’t enjoy every microsecond of sharing this planet with my son. I’m just saying there’s more to this then you’ve heard. People with kids will rarely let you in on it. It’s preprogrammed in us by evolution. Species without this have since went extinct. See Dodo.
Posted by Goran at 12:55 PM 0 comments