Is Sarah Beeny Pregnant?

My wife was watching Property Snakes and Ladders last night, hosted by the lovely Sarah Beeny.

I happened to look up and was forced to exclaim: “Dear god, is that woman ever NOT pregnant?”

This is the results of that shock. Enjoy!

Onlinerel Facebook Twitter Myspace Friendfeed Technorati del.icio.us Digg Google Yahoo Buzz StumbleUpon

Posted in Daftness | Tagged | 1 Comment

List Rendering HTML Helper for ASP.NET MVC

Here’s a quick little helper I use for quickly rendering out a list of items in ASP.NET MVC:

The story about how this code came about is quite interesting, and will be revealed in a coming post. In the meantime, a possible extension would be to take Partials instead of strings of HTML.

If you find this useful, sling me a mail and let me know how its helping you.

Think on!

Onlinerel Facebook Twitter Myspace Friendfeed Technorati del.icio.us Digg Google Yahoo Buzz StumbleUpon

Posted in Code | Tagged | Leave a comment

Why Techzing’s Jason Roberts Will Learn the Hard Way(TM)

One of the Podcasts I subscribe to, and is great to have on in the background while coding AND doing the dishes, is the excellent Techzing. Allow me to set you up so you know who’s who going in: Jason is the American guy and Justin is the English guy.

They cover a diverse range of subjects that makes a change from the Oprah style ‘whatever Microsoft’s voiding from its bowels today’ style of podcast. Go subscribe now. But there’s one thing that’s been a common thread for a while now and it’s finally flipped a bit in my brain.

Justin is annoying because he willfully mispronounces everything and anything that the world has already generally standardised on a common pronunciation: case in point, the excellent Balsamiq wire-framing tool – he says BALSA-MIK instead of the generally recognised BAL-SAM-IK.

Jason is annoying because he steadfastly refuses to see the benefit or use in any kind of source control except his arcane tar and zip up the directory containing the source and pray.

In Techzing 55 – Ambient Thinking, Jason lambasts Subversion for making no difference or impact to the return he gets from his medieval process. Now Jason is a pretty smart guy, who seems to have a background in Trading and certain aspects of AI, which makes his flat-earth society style approach to source control all the more baffling; perhaps he has just been lucky to date.

The way I would like to explain it to him is with the following analogy: Health Insurance. You could say ‘I’m not going to buy any Health Insurance, because I’ll take Vitamins every day and eat nothing but fruit. If I do that, what good would Health Insurance be to me as I won’t need it!‘. You can see where I’m going with this.

The problem with that kind of strategy is short changing the impact of inevitable disaster because of over reliance on the effectiveness of disaster prevention is a fool’s game.  In terms of source control, this is true whether you’re a lone cowboy developer or working in a team of many. There are levels of impact mitigation when it comes to source control and whatever level you are currently on, you should be striving for the next level up.

  • File System & Directory of TARs (JASON!)
  • Source Control on Local Machine
  • Source Control on Remote Machine
  • Source Control on Remote Machine with Daily Backups
  • Source Control on Remote Machine with Daily Remote Backups
  • (And on…)

The funny thing is, you may think you have it covered at present. But you don’t; there’s always a Cygnus Atratus waiting for you – yes, YOU. Perhaps when you’re sleepily at the wheel. Perhaps when your foot accidentally knocks a shoddily installed floor powersocket, taking the source control server down, and the RAID array with it. Perhaps a mis-key while seated at your keyboard of the gods. The  nature, origin and magnitude of potential disaster is unknowable to humans. It is NP-Complete.

One day your source repository and backups will go awry and it will be unrecoverable. What will you do then, when the Horsemen are queued at your front door?

Corollary: Test your backup plan!

Onlinerel Facebook Twitter Myspace Friendfeed Technorati del.icio.us Digg Google Yahoo Buzz StumbleUpon

Posted in DevThought | 6 Comments

The Three Types of Open Source

This post is mainly a reaction to a typical kind of reaction I’ve been seeing towards certain Open Source projects of late. The way I see it there are currently three broad categories of Open Source: CasualProfessional and Dictatorship (Dictatorial?).

Casual Open Source is the kind of project that the Ruby world seems to thrive on. People quickly make a thing, share it, sometimes fix and maintain it, other times abandon it and move on. The infamous ‘Why the lucky stiff’ was King of Casual Open Source in the Ruby world (view his works here) – creating odd and compelling pieces of code to very shortly move on to the next thing that inspired him. Ayende may be considered the .NET King of Casual.

Professional Open Source is what people tend  to think Open Source really is. In my view, Professional Open Source is represented by the types of project such as nHibernate or Castle Windsor. These projects have a large following and a core team of relatively active commiters and formal releases. They might even have a roadmap. In essence, these projects are maintained by a community. Some folks even offer commercial support for certain of these Professional Open Source projects.

Dictatorship Open Source is basically anything that the great unwashed masses are barred from freely contributing to, such as the Linux Kernel or even Rails.

Here is a murky and raggedy hand drawn diagram to elucidate:

OSS VENN

The perception of a lot of beginners is that all Open Source is Professional Open Source. Once they begin a thing, they then are stuck with a millstone around their necks that they have to maintain and support. This inevitably puts some people off the idea of open sourcing their code. Often times, people who should know better also make this confusion.

General Internet Bumblehorn, Jeff Atwood, famously moaned and bewailed the fact that his chosen choice of Text processor (Markdown) had been abandoned to the wolves by its creator (the taciturn John Gruber) and how this was ‘bad parenting’:

As Markdown’s “parent”, John has a few key responsibilities in shepherding his baby to maturity. Namely, to lead. To set direction. Beyond that initial 2004 push, he’s done precious little of either. John is running this particular open source project the way Steve Jobs runs Apple — by sheer force of individual ego. And that sucks.

Now generally, if I could reach out through my monitor and strangle Jeff Atwood, I would; what right does he or anyone have to dictate how someone should handle their Open Source work? Jeff has made the error of confusing Professional and Casual Open Source. His whole article basically erects a massive set of barriers to entering Open Source for the casual programmer, lest they fall to Jeff’s future wind-changing ire. The basic problem is that Jeff chose an arguably dead project that is of little practical end use to the majority of the world outside developer geeks, and got away with it because his target audience were nerds and think putting asterisks to indicate bold is cool. He necroed it. However, by virtue of his good work it now lives again and serves a slightly useful purpose, as he should have done. But I digress.

Open sourcing a piece of code is nothing like being a ‘parent’. You can always, and probably should at the earliest opportunity, abandon your open source code. It’s the only way it will live and evolve by attracting a community, or die and be supplanted in the digital ecosystem. You should be free to experiment and follow your curiosities.

My ‘abandon the baby’ (if you will) philosophy could also help in some way to guard against dictatorship open source, which usually isn’t very much fun. What I’d like to see is a common understanding spread about the three types of Open Source and what projects are suitable for which category.

People could eventually mark their projects publicly with which type of project it is so that the casual wayfaring stranger, happening by a particular project on some lonely, windswept night immediately knows ‘Hey, this project is someone’s toy but might be useful to me. I’ll fork it and see what I can do, maybe even carry it on, but essentially I am on my own‘ versus ‘Hmm a useful project with a thriving community and a mailing list. Wonder if I can help out?‘ It would serve as a useful signpost for the expectations of others. And this game is all about managing expectations.

Something to think on.

Onlinerel Facebook Twitter Myspace Friendfeed Technorati del.icio.us Digg Google Yahoo Buzz StumbleUpon

Posted in DevThought | 1 Comment

Generating a Cryptographically Strong Seed in C#

The Random number generator in .NET, like most other languages and platforms, will generate predicatable sequences unless you seed the generator with a truly random value. Talk about Catch-22. Here’s the code I use to generate a strong seed for the Random number generator.

Onlinerel Facebook Twitter Myspace Friendfeed Technorati del.icio.us Digg Google Yahoo Buzz StumbleUpon

Posted in Code | Leave a comment