Thursday, February 26, 2009

Get your nerd on, with Castles of Air

I apologize for the self-promotion, but I know we have a big audience and I'd like to drum up an initial following for my newest blog.

Castles of Air is about the art and science of software development. While this is admittedly a very specialized interest, I know we are blessed by a high proportion of nerds and smart people among our fans. I've been a developer for about a decade and a half now, because I've always felt that writing programs is an enjoyable hobby which also, luckily, is often worth good money. I also believe that working with computers is an excellent introduction to rigorous logic and everybody should learn at least the basics as an important part of their education.

You know my strong feelings about science, and I approach programming from a scientific background as well. I expect to be writing several posts about how to approach debugging as a science, making hypotheses about where the problems might lie and testing those to prove them true or false. And of course, I think of the mind as a great big virtual reality machine for modeling the world.

If all that doesn't sound like it could possibly hold the slightest bit of interest for you, just get back to the regularly scheduled programming and forget I wasted your time. But if you are interested, please check out my new blog, bookmark it, follow it, save the RSS feed, or whatever you want to do.


  1. Sounds great--I'll definitely be checking it out! But "blessed"???

  2. You think gods have a monopoly on blessing people? Come on!

  3. RSS'd to my Google Reader. As much as I like the topic of how wrong religions are, my main area of interest will always be in computers, particularly programming.

  4. See, yeah, that's why I said "blessed by nerds" and not "blessed with nerds." Nothing supernatural going on at all.

    Besides, "bless" is a perfectly respectable programming term. ;)

  5. Another programmer here. Subscribed!

  6. @Kazim

    I noticed you link to the greatest source of Nerd humor in the universe...I'm referring to "The Daily WTF".

    In a previous job I had many samples I could have sent them... Since I was fixing all of them. One line of code looked like this:
    // we were coding in VB...Sorry..
    Var = 100 * Var /100
    With a comment associated which said:
    "I don't know what the original coder was trying to do here, but I'm leaving it in so I can show people how dumb the guy was"

  7. I'll make sure to check that out Kazim.

    Var = 100 * Var /100
    "I don't know what the original coder was trying to do here, but I'm leaving it in so I can show people how dumb the guy was"

    He's not dumb, he's brilliant! You see the code changes the 'Var' slightly, due to the floating point operation /100 * 100. Hence 'Var' != 'MyOriginalVar'. Unless the original value was 0, in which case it will stay the same.

    So simply check for 'Var' != 'MyOriginalVar' which is equivalent to checking 'Var' == 0. In fact this is better since you aren't hard coding zero!

    /I kid.

  8. I'm a professional .NET developer. I would love your blog if it wasn't for the fact that the background / contrast hurts my eyes after a bottle of wine.

    By the way, I'm not an alcoholic, I'm in the UK and it is 22:30 right now and the rugby has just finished.

    I don't know if you are familiar with rugby. It is like american football; except harder, without padding and helmets, and it's not bad form if you punch, gouge, stamp etc and the referee doesn't see. Closer to ice-hockey I guess.

  9. I changed the template. Just for you, Angry Atheist. I hope you're satisfied now.

  10. Can we get wider text columns here too?

  11. well, one problem I see with the creative-0 example. 100, like any integer value will in most programming languages be treated as an integral type.

    If the variable in expression

    var = 100 * var / 100;

    is a floating point type, implicit conversion will take place according to the rules of the language.

    I'm too tired to think through any edge cases that may give unintended results here, except to say there may be unintended results in some cases ;).

    So one has to be careful when doing more arcane things that rely on the more arcane rules of the language you're using.

    This goes back to programming and debugging - part of the art and craft of debugging is artful/craftful programming.

    I'm slightly below average in the craft of programming and far below average in the art. This is why I come home tired at the end of the day rather than energized (I'm a programmer/debugger of sorts by profession as well).

    I'll monitor your blog tho I'll often be too tired to post to it hah! But still, it sounds like a great idea...

  12. Actually, I think I'm wrong in my prior post. I'm likely thinking of coercion in the other direction, such as the definition

    int x = 2.2;

    in some languages. Also compares and expressions involving mixed types - you have to be intimately familiar with the conversion conventions of the language you're using.

    Oh well, that's why I don't program for fun anymore, especially on my own at home when tired ;)

    Point is, just use 0 when you need 0 instead of a more clever 0 (yall can tell I'm a QA puke).

    Rather like my preference that theists say "I don't know" rather than "god did it, I believe"....

    Sorry about the intrusion folks. Back to the regular program...


  13. @Kazim
    I am going to check it out. Who knows maybe I will learn something. I am still an undergrad but debugging was something that I had the most trouble with in my last assignment so It can't hurt.

    Just curious do your colleagues know about The Atheist Community.

  14. Voldemort:

    Actually, I ALMOST made a similar reply to Gav, but realized I would have been wrong. The mistake is that you are assuming that "100 * Var / 100" will be an integer.

    While it's true that "100" is an int literal, if Var is declared as a floating point value, then "100" will probably be converted to a float before doing the operations, which will result in a final value which is also float.

    I thought this might be illegal, but I tried it in Java and it works the way I said. I don't know how Visual Basic would interpret it.

    Voldemort: My colleagues have no idea I'm an atheist, and given the company culture, I prefer it stay that way as long as possible.

  15. Kazim,

    Yes, that template is much easier on a drunk/hungover mind. I will therefore be checking it out on a regular basis!

    Sorry to hear your work is full of god-lovers. So much for the intelligence of the IT industry. Where I work it is completely the opposite. Although I wouldn't describe all of my fellow workers as strident atheists, they certainly consider theism to be ridiculous.

  16. Yeah, I brought up my job environment on the show before. It's an odd little private company run by a very rich old guy with his own management style. Strict dress code, strict working hours (8-5, DON'T BE LATER THAN 8), and official handbook policy says that employees must adhere to "high Christian principles."

  17. My job before last was doing QA for a SW development product, I was in charge of the C/C++ compiler - talk about truckloads of debugging... I had to know the rules governing implicit conversions permissible between types. C isn't so bad, but C++ is absolutely out of sight bewildering. Most of my job was deciphering bug reports containing code like the var example....

    These days my dev. efforts are all in C# and Nant, tho sometimes I still have to do some C++.

    So I've forgotten most of the rules and don't want to ever remember them again ;)


  18. @All

    Now I wish I had actually submitted a WTF, because I can't remember the exact details of the line of code! I think it was a floating point value, though.

    However, in the database design, tables would have a primary key, and another field called "linkRelID"...used to link that record to a record in another table. Other tables used text fields for the purpose of linking (and those had numerical primary keys, also), and all sorts of other things which individually wouldn't have been a big deal, but in a 500,000 line program, it became pretty awful to maintain.


PLEASE NOTE: The Atheist Experience has moved to a new location, and this blog is now closed to comments. To participate in future discussions, please visit

This blog encourages believers who disagree with us to comment. However, anonymous comments are disallowed to weed out cowardly flamers who hide behind anonymity. Commenters will only be banned when they've demonstrated they're nothing more than trolls whose behavior is intentionally offensive to the blog's readership.

Note: Only a member of this blog may post a comment.