Hi there.

Hello,

I’m a terrible blogger. I don’t have very strong opinions, especially about whether I’m right. I don’t have any really truly amazing ideas right now. I misuse parentheses (frequently). My sentences are too short (or too long) and I have as much evocative prose in my whole body as William Faulkner had in his left small toe. And he didn’t even write with his small toes. I’m probably not the right person to be doing this at all, actually.

However, I am keen on sharing some things I’m learning and have learned over the last few years, if mostly as a notekeeping mechanism for myself. I hope they’re useful to someone else, even if they’re just used as strawman examples of ridiculously misassigned conclusions, or as affirmations of the obvious. By the way, dear audience of almost zero — if they are useful or totally wrong, I’d love to hear about it!

So, I’m a programmer. I started writing software when I was about 8 years old, playing with GW-BASIC on an 8088. I moved on eventually to Pascal, then 80×86 Assembly, and that’s where I really fell in love with programming. Assembly is so simple that you could memorize the entire instruction set, the number of bytes each instruction took, how many clock cycles it ran in, everything! Working on a system with very very limited memory and computing power, it’s a goldmine to be armed with this information. The simplicity of the language allowed for a lot of very clever tricks. The best place to see this in action then, and even today, is on the demo scene. Beautiful stuff.

Fast forward to today, and some of us are still thinking about the same confined area. I’m writing software for cell phones — basically the 386s of the present day. Sadly, our circuits aren’t laid as bare as they were in the early 90s: We can’t find clever ways to manipulate the call stack or try guessing commands on undocumented processor ports; we’ve been cornered into layers of abstraction to protect us from a fragmented market — No ASM, but rather tools and sensible APIs like BREW and, even worse, J2ME. Even so, it’s great fun to push the limits of these devices.

Something to consider very soon may be — when phones become sufficiently powerful, where will we go to push the edges of computing? Watches? Computerized earrings? Nanobots?

Anyhow, enough procrastination. Back to work!

Leave a Reply