I like Lego: An abstraction about Design

In my experience, there is always one family that always gives the good Christmas and birthday presents, the ones that you remember into your adulthood.

For me, that family was my mum’s brothers family, and apart from their enormous generosity they showed our family, there are two things that came from them that I can say had some influence on my development as a computer geek. The last one was an Amiga computer which just helped me stay in touch with the rest of the computing world whilst everything had moved onto PC’s and the regurgitation of Windows 95 and this new ‘multimedia’ buzzword that these PC’s could do. Pfft.

Anyhow, the other gift, was a huge Lego set when I was about 3 years old. As you know Lego is modular, each piece does its specified task, and if you ever had to unit test a Lego block, it’d have well defined behaviors to make this a straight forward task (we’d hope).

Now when you start considering the connections Lego pieces can have with each other, there are a number of permutations possible. Lego’s are blocks that form structures in our space and have to live by the rules of gravity and laws of ‘building strength’. We can shape (and even force) these structures to take somewhat unusual shapes that challenge the contract that each lego block has with its neighbours by trying to squeeze the sides of piece into itself (to allow a triangle or odd shape piece to fit). Or we can challenge the laws of gravity by arranging the pieces one on top of the other until the slight variations in each piece cause the stack to start arching over to one side and eventually fall.

Such problems are unforeseen during the design of the Lego piece. Where do we go from here? Do we enhance our existing Lego block with new means to cope with these conditions? Such as a fan to keep the piece in an orientation when the promiscuous falling condition is met, or a removable lego side to allow for those hard to fit pieces to overlap somewhat.

Google’s internal code review tool

http://www.niallkennedy.com/blog/archives/2006/11/google-mondrian.html

Recently at my work, someone asked, why do we keep lacking unit tests? Now there are many varied reasons for this and the discussion can go on forever, but I should say, that there is an understanding amongst us that unit tests as well as other tests (ie user acceptance) needs to be done after an item is completed.

The problem as I see it, is the lack of review at the end of the completion of the item. If we do not review each others work, not just the code, but the process, the checks have been followed, verify the user has reviewed and is happy with the work, verify the work against the user spec, SUFFICIENT TESTS EXIST, etc, then we cannot ensure quality.

We are a small team, there is no assigned quality manager who is responsible for the above quality controls being followed.

The point of this blog then, is to introduce a tool Google wrote for themselves, they name Mondrian. It’s purpose is to do web based code reviews. Ok, so my intro above was a little disjointed to the subject, but it does reduce the barriers in doing code reviews, in my opinion, what should be a strong quality control feature. It provides an audit trail of these said features also.

Look at the attached video of the presentation of Mondrian. The first 15 mins serve as a great introduction into the problems of code review (emails flying around, finding someone to do the review). I like that the presenter makes the distinction: Some places do pair programming, others do code reviews. Both are in XP, but it seems that one or the other are both strong quality controls and in a place where there aren’t the staff to devote to pair programming, increasing the importance of code reviews sounds like a pretty sound manoeuvre.

Time Management Diets

http://www.everythingsysadmin.com/archives/000171.html

Now I’m a reasonably slender person, many thanks to not living with a greek mother who provides snacks breakfast, brunch, lunch, dunch and dinner; helped along by this ‘vegetarianism phase’ of my life but if our physical appearance depended on how we consumed and utilised our own time, then I’d have to say that I’d be one huge behemoth creature, perhaps a jaba the hut of overbooked tasks and personal projects unrealised.

The attached blog provides 3 ‘Time Management Diets‘ in order to reduce the precious units known as seconds from falling into the vortex known as the relinquished past.

So if the TV diet, the mailing list diet, or the meeting diet sound like things you incorporate into your own life then you may as well get on board.

There is no time like the present. (Pun intended)

Java Fun and Games: Tips from the Java grab bag

http://www.javaworld.com/javaworld/jw-01-2007/jw-0102-games.html?fsrc=rss-index

I’m sure these will come in handy from time to time.

  • The simplest sound API
  • Window centering
  • Drop shadows
  • Hyperlinks and browser launching
  • Status bars
  • Image grabber (website)

Osteoporosis vs Lactose Intolerance

Well, if the dairy industry push that dairy will stop Osteoporosis especially in women as they age, I wonder how many people who suffer Lactose Intolerance go on later in life to suffer osteoporosis?

I mean if you consumed so much dairy in your lifetime to cause the gland that processes lactose to give up, then surely you’ve consumed enough dairy to stop the onslaught of ravaged bones later in life?

Alternatively, could Lactose Intolerant people be further at risk because they’ve reduced their consumption of dairy due to their condition and now lack the amount of dairy recommended by the experts?

Or is it all crap, are Lactose Intolerant and regular Joe’s all at similar risk. Is the dairy industry’s push of Osteoporosis an exaggeration? How much milk is enough?

Hey, I warn you now, this is an un-researched, completely biased question, but knowledgeable comments are appreciated.

… and could it DID!!!

Well, its been a few weeks now since I put in a 100GB 7200 RPM drive to replace the 4200RPM 40GB that Toshiba had christened this laptop with. Speed wise, it is noticeable, not as noticeable as I was expecting, but the main points are that I can hit two areas of the disk at once without experiencing the severe performance hit that I was used to on my old disk.

I say, if you are a developer, then shell out the extra for a dual core, but if you are the poor uni student like me (violin music please) then the upgrade has bought a little more life into this lappy till I return to regular full time work.

How null breaks polymorphism: or the problem with null

http://eureka3d.com/blog/?p=21

Do you find yourself constantly checking for null

Does your clever little method now look like a small mess after you’ve incorporated your null checks? Do you find yourself asking, ‘how is anyone else going to ever follow that now’?

If so, then how is this for a neat idea? Write a language with a keyword that tells the compiler that a parameter you are passing or expecting to receive from a method cannot be null, and as a result of this checking, know that you can code the method with a lot more clarity and an immunity to null pointer exceptions.

Steve Riley’s 2 part blog on this subject poses the above scenario and some solutions even for those of us stuck in a language we cannot neuter the nulls. It’s a very enjoyable read.