Random Update

Been forever since I wrote something. And now I update randomly. At work. Oh boy, I am so dead.

Countdown

So when I press F12 on my MacBook, I have the following widget running on my Dashboard:

223 Days, 14 Hours, 16 Min, 21 Sec

That’s the number of days I (supposedly) have left to my service in the army.

There’s a caveat to this, of course. By my own math, I should have to serve all the way till September 2009, but the government’s website currently reports my ORD to be in February 2009. The countdown on my Dashboard uses the more optimistic (that is, earlier) date.

I have very mixed feelings about the army and the military, and it’s no exaggeration to say that it’s been the primary cause of unhappiness in my life. Everyone has his or her valid views on the matter, of course, but I had the unfortunate experience of being exposed to Schindler’s List and graphic war poetry in primary school, and it’s colored my views on what being a soldier means ever since.

I keep telling myself that national defense is necessary, but my reaction to seeing a person in military uniform is always the same.

That person is evil.

Irrational, maybe. But then again, the notion that honor for country is nothing but a myth was planted in my mind from very early on. And the fact that I have to wear a uniform everyday, with the full knowledge of what it means when war inevitably comes, disturbs me greatly.

Nowadays I’m able to push these thoughts to the back of my mind, but sometimes, on evenings like this when the mortality of everyone I know becomes so real, I really don’t know what to think.

Writing Stuff is Hard

Man, I so wish I could be a competent (or at least regular) blogger, but honestly, writing things is hard. I had this idea about documenting the inconsistent behavior of scrollbars in Windows XP using a blog post, but then I realized no one cares about stuff like that.

Well, maybe I do, but then again I’m not a very normal person.

Future Projects

I enjoy writing code. I’m not very good at it, and my experience is that I don’t work well when coding in a group, but the point is that I enjoy building things that run on a computer. I enjoy the feeling of accomplishment that comes from seeing a system work and knowing that my handiwork was involved. Most of it isn’t really my effort, of course: the heavy lifting is done by the folks behind PHP and WordPress. I merely ride on the back of giants.

But that’s talking about web development work. More specifically, the enhancements I’ve made to my client Antonio’s site in recent weeks. What I’ve been dreaming of doing, however, is something similar but not quite the same.

I want to write a desktop application. Or rather, two desktop applications.

The first is a cross-browser, cross-platform bookmark synchronizer. The idea is simple: as part of my work, I use multiple browsers on multiple operating systems on multiple computers. It might seem like a silly thing, but I want the bookmarks in every one of those browsers to be exactly the same. I bookmark sites all the time, and it drives me crazy when I can’t access a bookmark because it’s living on a different partition.

The second application is a simple mouse-button to keyboard-shortcut mapper for OS X. A number of such applications already exist, but they’re shareware, and I want to write one that’s open-source. It would also be a great opportunity for me to learn about the Carbon API as well.

I don’t expect that writing either of these applications is going to be easy. While I have written modestly-sized web applications in the past, I have never succeeded to building a non-trivial desktop application from scratch. There’s just too much complexity. Traditional applications have to deal with threading, event handling, and all sorts of other dross. Web applications are hosted by a web server which handles most of this complexity—I just have to handle the POST data and I’m done! This is a gross simplification, I know, but web development just seems easier to me somehow.

Now that I’ve laid these plans out, however, it’s time to get started working on them. You know the mantra: Release early, release often.

New Design

Done using CSS only—no images here, baby.

Update: Or perhaps I spoke too soon. The page was looking too drab so I decided to add some gradients and drop shadows. Oh well, the image-free version wasn’t that bad.

Internet Explorer 6 Must Die

antoniotahhan.com

friendsonly.org

My dear gentle readers, Internet Explorer 7 has been out for more than a year now. It doesn’t even require that stupid WGA check to install anymore. Please, please, please stop using the garbage that is Internet Explorer 6.

I’m going to try to fix these layout problems, of course, but it would really make my life easier if you just start using IE7 or Firefox instead. Consider this a public service announcement.

Thanks for keeping the intarwebs sane.

Flock 1.1.1

So now I’m trying out Flock as a blogging client. I remember trying their browser out back when they had their first public beta (after teasing us with screenshots galore) and feeling distinctly unimpressed. But hey, everyone deserves a second chance, right?

Unnatural Languages

Wow, is it April already? Time sure flies.

Okay, so clearly I’m not the most prolific blogger in the world. It’s not that I’m out of ideas; I just find it hard to express myself in prose nowadays. Part of this might be because I’ve immersed myself in relearning a couple of programming languages lately: Ruby, Objective-C and even good ol’ C++. It’s kinda hard to write in plain English again after all you’ve seen lately are things like if ([obj respondsToSelector:@selector(valueForKey:)]) (BlockMethods.getImplementation()->*eachPtr)([obj valueForKey:@"array"]) { |x| class << x; attr_accessor :tag; end }

You may think this is because I’m a huge geek with no life outside of computers. That is, of course, absolutely correct. But to be honest, I’m not very good at programming for a geek; I just love learning about new languages and appreciating the beauty of their design.

In my freshman year at Cornell, I took a course where we had to write a compiler for a simple object-oriented language that would output assembly for a fictitious machine. Going through this course was like a revelation: scoping rules were not—as I thought at the time—dictated by some lower-level system, but were intentional design choices. I also saw that inheritance in OOP wasn’t at all natural to implement, which implied to me that the concept of objects came first before someone decided to put it in a language.

Put in other words, I realized that programming languages were human-created abstractions. And from that point on, I saw programming languages as something akin to works of art; each language is a collection of design choices—some more unusual than others—that come together and attempt to form a coherent whole. It’s really quite a fascinating subject…

No? Oh come on, at least I think so.

Another WordPress Update

Seems like I only update this site when WordPress tells me to. But hey, at least you know I’m still alive. I have a number of posts I’ve been planning to write, but I guess that’ll have to wait until I recover from this annoying cold that just doesn’t want to go away.

Meanwhile, what a bombshell.

A Word on Mac FTP Clients

FileZilla

Since I’ve just uploaded a bunch of files via FTP to update WordPress, I might as well mention something about FTP clients on the Mac. People keep recommending Transmit, which I know is full of liquid awesome like what everyone says, but I’m a starving NSF with a barely adequate income. Paying US$30 for an FTP client is just out of the question.

At this point, I usually give up and just use Cyberduck, but it turns out Cyberduck has its own little quirk. Every time I do an upload, it insists on performing what seems like multiple ls commands to grab the timestamp of every file that it’s about to overwrite before it even begins the upload process. It also doesn’t help that performing any other task (clicking on a toolbar button, opening the application preferences) while this happens will summon the dreaded beachball.

But then, through sheer luck (read: Wikipedia), I learned that FileZilla now has a Mac version! Granted, its interface is utterly un-Mac-like and the entire application is essentially unchanged from the Windows version, but here’s the bottom line: it’s free and reliable. It may not be pretty, but FileZilla works incredibly well. And really, isn’t that all you need?