Friday, February 27, 2009

Threads are evil

Having a child is an exercise in chaos. If you're a software developer you will probably not even notice any change in your daily routine. It's basically all that's wrong with project management at your workplace. Late night refactorings, ever changing specs, volatile project scope, improbable deadlines and virtually no chance of success. Still you probably end up finishing every project no mater how mismanaged. Somehow things get done and the jumbled mess of incomprehensible code produces the desired output. On strings, prayer sand a roll of duck tape, you get through it and you live to fight another project.

That’s until you encounter concurrency computing.



If you’re a competent developer you know that threads are evil. But they pale in comparison with daily challenges of multi-offspring household. Having n > 1 children is a like developing a multithreaded application – with a few twists. In this case you’re the CPU processing the requests (this is where being married dual core pays off!), there’s no logging, exceptions are constant and unrelenting. Fixing a bug just means you’ve neglected to take care of something else. Being used to chaos you persevere – but invariably you burn out and fail.

It’s amazing how simple the problems you face at work seem to the veterans of n > 1 children families. Everything else is dead simple. Also you learn to appreciate your spouse. At the end of the day – she puts on her cape and turns into a superhero that saves the day. Barely being able to keep your eyes opened you gaze at the better half of your dynamic duo – she looks out of this world. You can finally close your eyes and take a nap. Her multitasking superpowers defeat the chaos. Your final thought before you daze into the never-land is: “She’d be an amazing programmer…”

Monday, January 12, 2009

Project Flowchart

This is pretty much every project I've worked on:

And it accurately describes what having kids is all about. Whenever you think you've worked something out the landscape changes. You're back in the wild, it's getting dark and a low roar of the beast is heard in the distance...

Sunday, November 09, 2008

OT: Why I think Amanda Palmer is semi-goddess

Coz she shares beautiful, wacky, amazing and special moments with us? Because she’s odd? Because she gets Neil Gaiman staying at her place? Because she’s my age, but gives me more food for thought than Seth Godin? Coz she can Google?
Because hearing her voice makes Ema smile in her sleep?

Yes.

Saturday, October 04, 2008

OT: Readable code and Regular updates

Just a quick note to let you know my new blog is online. readable code is my C# blog and is more technical in nature. If you're interested in checking out the first 3 installments to my Building a Regular Expression Random Data Generator series head over there now and leave some comments!

Saturday, September 06, 2008

Dad 2.0

As I'm sure you are blissfully unaware of - project Ivy is now called Ema. The last internal build was on Monday and we shipped Tuesday. There was no party, no confetti, no champagne (just some prescribed medication for mom). I might be biased but the final product turned out great. We missed the deadline by 4 days which I'm sure you'll agree is practically on schedule but we are feature complete (we've got voice recognition and emission tested, waste management system on-line, food intake running...) so I'm congratulating myself on a job well done!
Also we've changed our url, but that's a topic for the next post with the working title: My life is a box, (Boxing Goran?).
Also I'm internetless! For the first time in 8 years I'm offline. Well not completely off line as I got my mobile phone and this UMTS card for my laptop. But I feel as if I'm all alone and naked in the dark... OK. That was waaay off topic.
So no pictures till I get my computer running again, which is incredibly low on mom's priority list. So as soon as I set up the kitchen, build that rack, fix the sink and move that TV - you'll be the first to know.

Sunday, August 31, 2008

The return of the lego dinosaurs

David is definitely going through his dino phase. I fondly remember mine. Dinosaurs are all he thinks about all day. Here's a wonderful example of a Diplodocus...

It's still lego and it's still dino's but I'm much happier with the latest development. I'm sure you'll notice there is no cave men lurking around eager to play with the diplodocus. Yay!

Dad 1 : creationism 0.

Index is out of bounds


Our countdown to project ivy has just returned an unhandled exception. We have passed zero and we're counting upwards.
On a side note we're also (4 days) late on moving-to-a-new-house project. I'm sure you'll notice that neither of these is my fault!
But being a bit late in a project is nothing new to us software developers. Now why is that? I'm sure we've all read books on project estimations, multiplied our estimates by pi, threatened to quit if project scope gets out of hands again. Still none of this makes a difference. The problem is that projects get late by the actions (or lack of actions) of people who have no vested interest in meeting the deadline. The guys that pour concrete don't care about me moving in. My boss keeps forgetting I have a life. And I guess "ivy" will come out whenever she's ready and isn't aiming for the due date.

Wednesday, August 27, 2008

OT: Interface pet peeves

When talking about badly designed UI’s age verification interfaces surely deserve a few (thousand) words.

The basic premise of age verification controls is quite bizarre in itself. Somehow, somewhere, someone got the bright idea that the best way to weed out those not old enough to handle mature content is to ask for their birth date. Yeah.
Next up is the fact that 99 out of a 100 controls will use the dreaded drop down menus for day, month and year selection. Drop down menus are the worst UI invention since, well ever – but that’s another story. I guess using a calendar to choose a date would be too radical.
And last but not least, the vast majority of controls out there list years in a descending order. This means that 2008 (or the year the page was put up) is the first choice offered. How many less-then-one-year olds are using the internet these days? And are they really looking for mature content?

Wednesday, July 30, 2008

OT: Wiki Gaming

I'm always on a lookout for computer games that David might find interesting in the future. I'm looking for something non-violent that stimulates creativity and perhaps teaches you a few things about the world around you. So invariably most of the games in the selection are physics based.
I recently came across this gem of a game called Fantastic Contraption. The game simulates a simple 2D world with a few gadgets you can use to create a contraption. The goal of the game is to push, drag, drive or hurl an object from your work area to the goal area. Sounds simple right? Well, it depends on the level you play! And the level I had most fun on was this one:

Your task is to get the ball through the area of falling boulders to the goal. My first successful contraption was a caterpillar that dug through the boulders and used around 30 pieces to get the job done. But soon when enough people completed the first 20 levels new challenges were invented. Something the creator of the game never thought about. One of the challenges was to see what the lowest number of pieces is needed to complete a level. Surprisingly the answer is usually between 0 and 3 pieces!
So I got back to work and thought about using the using the boulders and a seesaw to hurl the ball to the goal. Sure enough I made a green solution (not using any of the powered widgets – another user game-play invention!) the level using 8 pieces and proudly posted it to the forums. Took them less then two hours to tweak my design to 3 pieces.

I'm always amazed by the power of collectives. Browsing through the contraptions has got to move you. So many ideas and approaches to solving the same problems, so many brilliant solutions. I'm definitely bookmarking this one.

Tuesday, July 29, 2008

Lego horror

I came home the other day and to my horror found another lego set box in the middle of the hallway. It's not the legos you see. I love the fact David plays with them. Stimulating young minds and all that. But the box showed – ah just look at it.

Was I wrong at being horrified by this image? How about this one at the side of the box.

Dinosaurs and (what I can only gather are) neatherdals playing together? Is that creationists trying to creep their way in my home? Was it wrong that I sat David down and explained (ok, I'm not saying he got it) that dinos and humans never coexisted in the same period (he just smiled and said diinooo!). I continued railing on about Dinosauria, millions of years of evolution and DNA while mom slowly took him out of the room.

I guess what I’m getting at is that I fail to see significant difference between making sure David is safe from physical harm and making sure he’s safe from intellectual harm. So I’m doing my best on both fronts but the damn legos sure aren’t making things easy.

Monday, July 21, 2008

How do you tell if your boy is a Dilbert or a Pointy Haired Boss?

The other day I was watching David play with his Legos. He was putting together a train when he encountered an engineering problem. You see, not all of the undercarriages can be joined together as some are missing their couplings. But just then in an “Also sprach Zarathustra” sound tracked moment he picked up the toy wrench and connected the final train-carriage.

I’m guessing he’s a Dilbert.

Right now David and Mom went to the sea-side and I’m home alone for the week. So I just miss them. A lot.

Monday, June 02, 2008

Project Ivy Private Beta

Project Ivy has gone from concept phase to private beta. Still the wonders of modern technology make it possible to take a snapshot of the development build. And here's the exclusive!

How great is that? It's quite hard to believe we're able to create things like that - even though it's the second time around. And it's quite emotional for me to even look at that picture. I guess evolution wired us to feel like that, so that we might take better care of our offspring. But the other part of me thinks that this just might be on of the two cutest faces on the planet.
I'm off to view the rest of the video again (yes, that's why they call it the 4d ultrasound - don't get me started!) and give the Subversion server (mom) a big hug :)

Tuesday, May 20, 2008

Bug Bash And Meta



The amount of news happening in my life is inversely proportional to the frequency of posts on this blog. Since all three of us came down with a flu I've got some time to spare.
Our next project is a (fingers crossed!) female version of David codenamed Ivy. I'm guessing 10 megatons will compare to the yield of that event. So I'm kinda wondering if I should discontinue David.exe or expand it?
I mean - come September I'll have zero time to report and by January I'll have two projects on my hands. And we're moving to a new house! How much will Ivy differ from David? Can they both fit in the same blog? Is it too soon for David to start blogging himself?
Leave a note after the beep...

Sunday, March 02, 2008

A new project

Ok, it’s time to come clean. I’ve been absent for a while as we (my significant other and I) were starting a new project. You see David has been going so well lately we somehow got the idea we’re actually good at this. Like - we could launch another startup while not breaking a step at the current one.
We’re overly optimistic I know!
If that wasn’t enough, we decided to move. Yep, when turning your life upside down it’s best to do it thoroughly. Paying obscene attention to detail, we’ve planed the moving date to coincide with the due date.
I know, perfect!
For those of you obsessed with everything David (and those of you not answering your phones!), the codename for this one is Percy. Got that? It’s David’s idea and if you don’t know who Percy is (hint: think locomotives with human faces) you do not have kids, are not around kids, do not like kids and shouldn’t be reading this blog anyway. Now the only officially stable aspect of my life is my job.
Don’t worry – it’s under consideration!

Saturday, January 19, 2008

Teh Bugz

Despite utilizing the latest and greatest development methodology, being agile, unit tested (Oops - test driven!), aspect oriented, interface based, source controlled, continuously integrated, FXCop-ed, NDepend checked and NBenchmarked, service layered, RESTed and KISSed on a regular basis - there’s this tiny little bug…



You see, David has no problem putting this puzzle together on his own. Gathering the right pieces, get them correctly aligned and oriented and popping them in. It’s just this one piece he keeps getting the wrong side up. Every time.

Tuesday, December 25, 2007

And I, for one, welcome our new robot overlords!

The best gifts are carefully chosen

Let’s say it is Christmas season and you need to buy a gift for your geeky spouse. It’s the easiest task in the world! You see, we might have grown up, became parents project managers and all that. But we’re still geeks. So turn on that dusty laptop we bought you a long time ago, google for geek toys and buy anything with robot, usb or led in the description.

The best gifts are gifts that need assembling

It appeals to our geeky nature to have to figure things out, to learn what makes stuff tick and to get a gift as a collection of parts is pure heaven. To us the assembly phase is not the means to a goal, it is the goal.

The best gifts come with “spare” parts

Nothing worries us more then parts that don’t fit. You see, missing a part is not our fault. They forgot to pack it in so it’s their fault. But parts left over from construction – now that’s pure horror. Then again – perhaps we’re so brilliant we somehow managed optimize the construction and saved on parts.

The best gifts are robots

Period!

Monday, November 12, 2007

Two point oh and still in beta


Yes, we did it! We shipped! You should have been there. I’ve seen things you people wouldn’t believe. Parties, beaming with kids dancing to loud music… I watched confetti glitter in the disco light near the plasma TV. All those moments have been captured on digital discs as zeros and ones, to live forever in that which is web. Time to upload…

So what’s new in version 2.0?

  1. Upgraded to Verbal Communication Foundation (with sl-si language support and reliable messaging services)
  2. Waste Disposal Adapter (potty)
  3. Auto navigation (not slamming into walls so much)
  4. Auto recharging (self cleaning module missing!)
  5. Voice Directed Action Control™ (stop, don’t, wait, OMG)
  6. Innumerable bug fixes and corrections

But the most important thing isn’t visible in the fact sheets and comparison charts. There’s been a fundamental shift in the way this project is developed. Throughout the 1.0 phase it’s been mostly about mom and dad. Everything revolved around us. We controlled the vertical and the horizontal. As we approached the new milestone, we began detecting small foreign inputs, bits and pieces that didn’t fit in our neatly structured curriculum. A paradigm shift not unlike that which happened on the web had begun.

David’s progress and development had slipped out of our control. We’re no longer the editors. User generated content now replaces all we tried to teach. With so many information providers out there, you can’t really compete. It’s the kindergarten teacher, it’s his peers, it’s the tubes and the series of tubes, it’s the passerbys and bystanders. Mom and dad still matter, but matter less each day. I know that now and I’ll accept that one day. Till then I’ll take comfort in my zeros and ones captured on digital discs, that live forever in that which is web. Time to download…

Monday, October 29, 2007

OT: Gaming

Just felt like sharing some of my favorite games. Surprisingly, most of them are free or really cheap games. Perhaps it's down to my c64 and amiga upbringing but games based on ideas attract me more then games based on polish and bling.
Also, most of the games are physics based. This is only natural as small scale / single developer games can't compete on professionally drawn graphics, orchestrated music, star actor voice-overs... A single guy doesn't have the time to draw all the baddies, but he can program them! So here's a short list:

Tower of Goo

Originally an experimental game-play project game (see below) but one that might have spun a new company for the author. The game is based upon a simple idea of having to build a tower using amorphous substance called goo. All you need to do is pick up a goo blob and stretch it to form a truss. Besides building a solid structure the player is rushed by remaining goo blobs which have a tendency to concentrate on the most precarious, the highest peek of the built structure. This shifting mass makes your buildings somewhat unstable and reaching the target height proves quite challenging.

Crayon physics

Another EGP favorite. The basic idea of this game is that your drawings become physical objects in the game. You draw a box and a box of the same size appears in the game, drops down to a see-saw and flings a ball across the screen. The object of each level is to touch a star with your ball.

Toribash

I bought this game a while ago but newer versions seem to be free. Also the rendering engine got upgraded a lot! The basic premise of this game is physics based fighting. You control a 3d fighter through issuing basic commands (relax, stretch, hold, grip...) to his joints. After making your moves the simulation continues a certain amount of frames whereupon you're given a choice to again issue new commands. In multi-player mode you have a limited time to issue your commands before the simulation continues. This results in an amazing combat game with no prefixed moves or combos but simply amazingly realistic action. The game is heavily modded and supports a wide array of game rules (most damage wins or player that touches the ground first looses etc.).

Zen bondage

In this game your task is to wrap a wooden object with a thread. Your task is to cover almost 100% of the object so any concave areas must be navigated with care.

Flow

An extraordinarily clever game following a unique game design philosophy. You control a small creature that gains size and speed by eating other creatures in the game. You're given free choice of progressing through the game levels (depth) in sequence or skipping through to the final level at once.

Bridge construction set

My all time favorite (although not free!) game. The history of this game started out with BridgeBuilder which was a 2d bridge building game. Next came Pontifex which moved the game in 3d environment and added different bridge building material. The last of the series called BridgeIt upgraded the graphics engine but for me BCS is still the best in the lot. Your task in this game is to use the available material (iron, steel trusses or cables) and build a bridge capable of passing a test (like having a train pass over it). It's one of those games where creativity rules. BBG still hosts contest where the most efficient bridge (read cheapest) which completes a level wins. Some of the entries just blow you away. Also somewhere along the line we started making walking / moving structures :). This was not something the creators of the game ever envisioned but clearly shows the power of building games as a platform for expression a not a collection of pretty pictures.

If you like games like these, then head over to Fun Motion, Experimental game-play project or Introversion Software. Those should keep you busy for months!

Thursday, October 25, 2007

The Gnome Achievement

Anyone even remotely connected to gaming computers has surely heard about Half-life 2. While most will agree the game is a brilliant example of what games can be – I for one believe it is much more then that. Half-life 2* is a metaphor for life.
Episode one begins with you waking up buried under a pile of rubble (womb). The character dog (your dad) helps you out (birth) at which point you are reunited with Alyx (your mom). You hit the ground running fending of Combine (bad influences), following Vortigaunts (good influences). Most of the game revolves around trying to escape the Citadel (college) and avoiding antlions and zombies (drugs and other dangers of college-life). Your choices are limited and usually directed by Alyx.
In episode two you have graduated to adulthood. You’re given more choice and control of movement. And finally, although cleverly hidden, you’re given a choice of ensuring progeny.
Of course I’m referring to the now infamous gnome achievement award. The gnome, you get a choice of bringing along through the game, is your child. In this wonderful parable that is episode two, you will be given the task of taking care of it, making sure it gets through to the next level and finally placing him carefully into the rocket thereby ensuring its prosperous future.

*1/2 life * 2 = life

Wednesday, October 24, 2007

About keeping score

One thing we parents do obsess about is constantly testing our offspring to see how they measure up to other kids within the same age group. This “friendly” competition used to be quite contained to relatively small groups of friends and families. You could always rely on some smug relative commenting on the fact that his project reached a milestone a full week ahead of yours. “These things matter you know,” he’ll say. “She’s only two but by this time next year, we’ll be enrolling her to collage! She’s a genious like that kid on YourTubes!” (Yes, both misspellings were intentional)
While I’ve yet to meet a 5yo who can’t walk or talk (barring illness or birth defect!), it somehow seems crucial our kids start doing those things way ahead of schedule. I wonder why we’re less enthusiastic when our kids start dating at 15…
So the next time you get cornered like that, put on your best casual face and calmly retort with: “How wonderful! Ours just had his first beer.” and walk away.
Beats the hell out of “saved the rainforest”, “cured cancer” or “finished a new C++ compiler written entirely in javascript”.