I’ve been flailing about the internet with excessive ADD trying to decide what to learn next. These are really exciting times to be a software developer / computer scientist. There are so many development fads, languages, frameworks, and methodologies to keep up with. There are hundreds of high quality dev-bloggers to read, so many fascinating concepts to digest. Burp.
It’s an industry where you really have to keep practicing and learning to stay even remotely relevant. To learn a new language or framework is a large investment in time and mental energy, and the industry is quite hard to predict. What looks like a promising and popular new language one day can evaporate into yesterday’s fad.
What to learn? What to study? What to build? Python? ECMAScript? Scala? Ruby? Objective-C? Erlang?
Two interesting trends is that a lot of modern languages all seem to be evolving towards sharing a lot of common features. For instance, I haven’t done any serious amount of functional programming since I was in university. A lot of languages are now mixing in functional programming features. Even Java will be adding closures.
Functional programming is of particular relevance to the second interesting trend that is going on. The microchip industry has reached a practical limit and we are no longer seeing huge leaps in clock-speeds. Instead we are seeing more and more cores packed into each chip. The trend for the next while will be more and more cores instead of faster speeds. What this means is that as a programmer, you can’t rely on your single-CPU program to get faster on newer machines. But you will be able to speed things up if you can write your program to divide it’s work up over many cores in parallel. Functional programs lend themselves to natural parallel execution.
It’s widely considered very difficult to write multi-threaded programs. I don’t disagree, however, I’ve always enjoyed it. I get a big kick out of tackling multithreaded programming issues and squeezing out that parallel performance. A lot of researchers are struggling to design a new language that will make it easier to write parallel programs in our multi-cored future.
So I’m still not sure what I want to really dive into. The other problem is that I need a good project. Without a significant problem to solve, I can’t really choose a good language to learn, and I can’t truly learn it without using it to solve a non-trivial problem. Now if only I had a small, but cool {radio-astronomy|bioinformatics|cognitive science} project to solve….
We’re heading to Las Vegas later this week. There’s a lot happening there over the 4th of July weekend. The World Series of Poker main event will be on at the time, but for me, more importantly the Man VS Machine Poker Championship will be happening at the same time. A lot of folks I know from the UofA will be there. Several of my coworker/friends from Dublin are also going to be there. It promises to be an exciting trip. After that we are heading up to Edmonton for a summer visit, which will also be action packed with a wedding, visiting family and friends, and the like.
Well, I have to say, investing in an Apple Time Capsule was a smart move. I finally got a new Disk and restoring from the Time Capsule was an effortless and flawless experience. The fact that it constantly keeps you backed up over wireless means that you never have to remember to plug in a drive, and so I lost nothing after the crash. I’ve been pretty lucky with disks so far. I’ve been a heavy computer user for over 15 years and this was the first time I’ve ever had a disk crash.
Now if only I could get a Time Capsule for my brain…
Definitely no coding going on this weekend. My MacBook Pro’s hard disk decided to go belly up on Thursday. I’m very glad now I invested in a Time Capsule, as I should be almost perfectly backed up.
I got a big fat new development machine at work for doing server development. It has 8 cores and 16 gigabytes of RAM. It’s a beast.
It needs a 64-bit OS, so I decided to give Vista a whirl to see what all the fuss is about. What a mistake. I lasted two days. I couldn’t even get our server software to run without crapping all over itself. An endless chain of permissions issues. At least now I understand why there’s been so much ill-will over Vista.
The linux nerds at the office hooked me up with an Ubuntu Linux 8.04 install and I have been playing with that for the past two days. WOW. So. Much. Better. I really missed the command line and my virtual desktops.
Of course, I’m not much better off because our code base has not been compiled in GCC for quite a while, and many things don’t build as of yet. It’s going to take some elbow grease to get it running. My plan is to get it compiling error free again, and see if I can get it going under Eclipse CDT.
If that doesn’t fly, I am digging ubuntu so much I think I will just have to do development using virtualization environments running Windows XP, as a last resort.
Apologies for my blogging absence. Working and socializing have devoured my time of late, leaving little for anything but passive modes of internet usage. I wish I could just poop out mountains of text each day. It was one of the motivations to start blogging in the first place. I need a way to train myself in the discipline of regular serialization of thoughts.
I admire those who seem to be able to effortlessly spew forth massive daily discourse, fully coherent as if it simply poured out of them in one crystalline piece. My three hindrances are
- Discipline. It’s so much easier to just flip on the XBox and play some Call of Duty 4….
- Organization. My mind is a fuzzy nebulous place. Writing requires a linear structure. It’s like learning to paint perspective, mapping three-dimensions onto two.
- Originality. I find it hard to write about something if I know that someone, somewhere, has already said it, and said it better. I may as well just link to them and say ‘what he said’.
Nevertheless, tonight I find myself reclined on the couch, clacking away at this post. I guess I’ll hit ‘publish’ and then follow it up with some random ‘here’s what’s happening lately in my life’ kind of posts.
I’ve spent a little more time this weekend learning Objective-C and Cocoa programming for the iPhone. It looks like sqlite3 is the format of choice for structured data storage on the iPhone, so I’ve been working on stuffing the USDA sr20 food dataset into an sqlite3 format. Using Apple’s examples, I’ve figured out how to do basic lists and navigation bars. So far I have a simple app that loads the food names and displays them in a single scrollable list.
Now that I’ve figured out the basic mechanics, comes the hard work — design! I can’t just do a straight port of CoM to the iPhone — it just won’t fit! And using only fingers to navigate and enter data adds a further challenge. I’ve got to come up with the core functions and design each screen carefully. It also doesn’t make sense to track the complete set of nutrients since there’s not much screen space to display it all anyways.
Apple recently released their SDK for the iPhone and iPod Touch and I’m pretty keen to try it out. As a first project I am thinking of trying to write a lightweight port of CRON-o-Meter. Objective-C still looks like gibberish to me. It will take a little while to get used to it — especially since I work heavily in C and Java at my day job. More than anything though, switching to use XCode instead of Eclipse is by far the most painful step for me.
But alas, I need to keep my mind nimble. I don’t want to become one of those old dogs who can’t learn new tricks. I’m already feeling like an old-timer in some ways — becoming obsolete is a big worry of mine. Most of the code I work with at work is old-school, low-level C, so I don’t get a lot of time to play with the shiny new toys the kids these days are playing with. I need to trade off a few evening XBox marathons with a few good hacking sessions.
Folks, it’s been a full few weeks. We’ve moved twice, attended numerous parties and nights out, seen several films, and a gone to a few big events. On wednesday I was lucky enough to go see the Ireland vs Brazil football match at Croke Park, one of the largest stadiums in Europe. We had a corporate box, which was a lot of fun. Last night we saw The Smashing Pumpkins play here in Dublin. I also squeezed in a play-through of Mass Effect, which I finished yesterday. Next weekend we’re heading to Glasgow with some friends to hang out and watch another football match. I’m currently enjoying A Steampunk’s Guide to the Apocalypse and I’m a Lebowski, You’re a Lebowski.
It is a sad evening here in Dublin. We arrived home this evening, and immediately knew something wasn’t right as Vega is usually there to pounce on us with love and affection when we walk in the door. Christine found her splayed on the floor in our bedroom, eyes open, body rigid, and a small puddle of pee. We have no idea how she died, as she seemed very healthy. Perhaps she got poisoned when roaming the neighborhood. Or maybe she simply had a heart attack — she would get really amazingly worked up when seeing another cat in our yard through the window. We got in a bunch of crying and then drove her to a local vet for cremation.
I’ll miss you vega. Thanks for 8 wonderful years of snuggles.