programming ruby

I’ve been hearing about Ruby for some time now (at least 4 years). It wasn’t until Ken got into it that I started thinking about it more seriously. It’s an object-oriented language and appeals to my academic side. It’s also pretty well thought out, and has some really great features (blocks!). Anyway, I’m working on building up my coding chops. It’s been a while, and right now ANSI C is my strongest language (C is a nice language, though).

Anyway, I purchased the PDF version of “Programming Ruby” and am reading through it. Good book. Well laid out and is getting me to the code ASAP. Anyway, I’ll post my progress!

My first real project is going to be a web-based prayer request app. I know, a CMS would probably give me what I need, but I want to design something I can use.

pointers are a pain in the butt

I’ve been programming in C for about 6 months now. I learned C waaaay back in college. At that time, I hated it. It was very awkward to me, after having done a lot of work in Pascal. We weren’t really given much instruction in C, either, and so I learned the hard way. Well, mostly. I never really grok’d pointers as they exist in C. It’s weird. Once I learned Java, I thought I’d never have to worry about pointers ever again.

Wrong. At my last job, I did a little C++ programming as well. Somehow, I managed to get by, but still never really learned pointers properly. It really wasn’t until about a week ago that I really, truly started to understand them.

I feel much better now.


a little underwhelmed

Well, I’ve been using linux (Redhat Enterprise Server 3.0) at work now for over a month. It’s mostly good, but there are a few problems.

  • The CD-ROM drive has issues : for some reason, after about a day of being powered on, the computer loses all communication with the CD-ROM drive. I can’t even open the tray. I don’t recall this being an issue under XP, but it may have been.
  • The GNOME interface is kinda crappy: for instance, sometimes, dragging a window doesn’t work; a second click pops the window to that position. If this were consistent, I’d think it’s a feature, but it isn’t. sometimes, dragging a window drags a window. Other times, it just sits there, waiting for the second click. I don’t get it. I’m pretty sure it’s a bug
  • Still no good Office alternative: I have to interact with others who are using MS Office. Unfortunately, OpenOffice destroys various parts of these documents, so I really can’t use it. For my own files it’s fine.
  • Inconsistency: It’s driving me nuts that every application has a different interface, and different conventions. I never thought much about this before, but even Windows does a better job here. Of course the Mac is great when it comes to this, and I *usually* don’t run into issues.
  • No Sound: This isn’t a big issue for me, but the darn thing should work. Apparently, it mis-identifies the sound device, and it thinks everything is okay. However, it just produces no sound save for the system beep. Not too cool.

Other than these (somewhat significant) issues, linux is nice. I like having all the commandline tools at my fingertips (I guess I could just use Gygwin on Windows), but overall, the stability is nice. If I can get these things working, I’d be all set. I’ll try to figure them out, but I’d rather spend my time writing code, which I can do just fine without fixing these things. Oh well



Uh, I guess Microsoft is just playing with me now. I get a notification that Windows Update is ready to download SP2. So, I click the dialog to go ahead and download it. It went away. No failure message, and certainly, no update. So then, I go to the update site to get the download. I used the “express install option”, which apparently means, “do nothing”.

That option scans for the most recent updates. When it returns, there are no updates to be found. Not only that, but there’s a message that says that Microsoft recommends updating to SP2 as soon as it’s released, and gives me links to find out more about the features of SP2. Okay, but can I install it? Apparently, it isn’t ready yet.

Okay, so then why was I notified that it was ready for download? What a load of crap.


“Holy software glut, Batman!”

Has anyone noticed the plethora of software technologies surrounding Java? I mean, Sun is bad enough:

  • J2SE
  • J2RE
  • J2EE
  • J2ME(with multiple profiles. A few years ago, I couldn’t even figure out which parts to download!)

But now, there are IDEs, and all manner of creations for project building, build management, etc., etc, ad infinitum. On the Apache Jakarta Project’s web site, there are no fewer than 19 projects! Honestly, I can’t really figure out the difference between some of them. I’m evaluating tools for my company’s project, trying to get a feel for what’s out there. There’s a lot. But, can someone tell me what the core difference is between Jakarta Ant and Jakarta Maven? Maven claims to be a project oriented build tool, whereas Ant is a build tool that, uh, well, builds projects (furrows brow, scratches head).

Okay, I know that choice in software is a Good Thing®, but really, as a potential user, it’s nice to be clear on what my choices are. If I can’t figure out what a product is and what it does and why I should use it after reading the homepage (I mean like 5 paragraphs), then I get really frustrated. I’ve had to do this many times with many different products, and quite frankly, I’m sick of it.

Okay, feel better now.


great quote…

I found this quote in several places, and I think it’s great. So often, as developers, we try to be clever. I think we should focus on correctness and reducing errors.

“Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.”

-Brian Kernighan


strange feeling

So, we finally got the development kit for the system I’m working on at work. Previously, I was coding in Windows. Now, since the compiler only runs on one machine (thanks to a stupid dongle), we have the compiler on the test box (a Windows PC), and run a VNC server.

The upside is now that the Win32-only compiler is isolated to one machine, we can access that machine via any platform that has a VNC client. Like, say, oh, I dunno, my PowerBook. Haha! It’s the weirdest thing seeing the Windows desktop on my PB. There are a few drawbacks however.

“Chicken of the VNC”, the VNC client I’m using, logs out the current user on the remote machine if you quit it. Odd. This isn’t a problem for our setup, though.

It’s really nice. I can use XCode, which is pretty handy, though I haven’t found all the features I need, or gvim on my Mac to edit the code via a samba share. I then run the DOS command line version of the compiler on the build/test machine, and away I go. *sigh* this is the life.


“his name is Robert Paulsen…”

Don’t know what got me thinking about this… There are so many technologies and products that buzz in and out of our collective conscience that it often feels like they don’t even have a name. They’re just faceless entities that served their time, perhaps not even a true role. Then, as quickly as they appeared, vanished.

My BeDev ID is 8837. I signed up to be a Be developer way back in 1997. The benefits were that you got a copy of the latest developer release of the OS, discounts on PowerPC hardware, and several newsletters. Those were the halcyon days at Be.

For the uninitiated, BeOS was the “pervasively multi-tasking”, Media OS for digital content creators. It had amazingly low latency for applications like audio and video editing. There were realtime VST plugins that could be used simultaneously. The basic video editor could do all its transitions in realtime on relatively meager hardware (although I had a dual PII-233MHz – which at the time was pretty hefty)

Its roots lie with Apple. Jean-Louis Gassee, ex-Apple VP, decided that he’d go out on his own to develop a next-generation operating system. The result was amazing. Micro-kernel-based, and lean, the OS could handle just about anything you could throw at it… at once. No exaggeration, I once had 9 copies of Doom running, and none of them seemed to be dropping frames. 1997. Pentium IIs. B’lie’ dat. There was also an OpenGL demo that ran really well. It was a software implementation, as they had no OpenGL hardware drivers at the time. It was amazing. You could also play multiple streams of video, audio, and have MP3 encoding all going on at once, too. I tried doing the same thing on Macs of the time, as well as NT4 on the same hardware, and, well… uh, they didn’t come near what BeOS could pull off.

One of the coolest aspects of BeOS was, of course, the community surrounding it. In those days, there were lots of developers who hung out on* You could follow discussions about kernel threading, fragile base classes in C++, and just about anything your geeky mind could think of. Not only that, but the developers would answer questions, too! 🙂

The biggest problem at the time was what the community referred to as “tractor apps”, apps that would draw people to use the OS. There were fledgling applications for audio and video, and even productivity, but there was nothing there that was really killer, that made someone say, “wow, I gotta gets me mines”. The biggest hook they had going was the “wow” factor in the media area.

What helped in my mind was that most of the GNU and other FOSS out there was ported to the platform. I remember playing MAME on BeOS, as well as using Perl, bash, gcc, LAME, and just about anything else imaginable.

I started a project! I hooked up with a developer in Madagascar and we designed a Windows ® Explorer-like file manager. I think we called it Marco Polo or something like that. BeOS didn’t have a tree view in it’s GUI, and that was something that took a lot of getting used to. However, there were several advantages that it did have in its UI. For instance, right-clicking a folder allowed you to navigate it’s entire sub-tree without opening a folder. You could also move or copy files in this fashion. Very nice. Anyway, after learning a lot about how the OS was put together, and running out of spare time, we dropped the project. It was fun, though! It was from programming for BeOS that one understands the simplicity and elegance of the system. The whole thing was truly object-oriented, which made programming a *lot* easier for beginners. The biggest complication in my mind was the POSIX layer that somewhat broke the OO model of the OS, but it was exactly this layer that allowed so much FOSS to be ported so quickly.

Life was good, and for once I had a computer that could keep up with my fragmented, scattered, everything-at-once approach to computing. Then, the meteor hit. Be announced that they would be “changing focus” – read: “uh, our market is starting to be addressed by our competitors(Microsoft), so we need to get into another market.” They moved to the internet appliance market. “What’s that?”, you say? “Never heard of that!”. That’s right. Because the IA market is the market that never was. BeIA (as the embedded BeOS was dubbed) found itself strewn among the carnage that included the 3Com Audrey and the NetWinder . BeIA saw limited use in a few products. There was the failed Sony appliance, the e-Villa, and the IZ RADAR 24. Shortly after the failure of the e-Villa, Be was bought by Palm. Everyone had high hopes of hearing the great news that the next big version of PalmOS would take advantage of the BeOS’ great realtime and media features. We’re still waiting (Cups hand to ear. hears crickets chirping, hard drive grinding).

As bleak as all this sounds, you may be asking, “what ever happened to BeOS?”. The answer is that it didn’t die. It kinda morphed into something(s) else. Yellowtab bought the rights to the source code, and have created Zeta, the next release of BeOS. On the FOSS front, there have been many activities, but the most interesting one is OpenBeos, recently reborn as Haiku. It looks fairly promising, as development has evolved over the years. There are other projects as well, but I won’t get into them.

These days, I have a PII-333MHz running BeOS, serving up MP3s. It doesn’t crash 🙂

So, there you have it. The story of yet another one of those technologies that came and went like a leaf on the ocean.


maximum suckage

That’s the last time I buy a Canon scanner. Doesn’t even have TWAIN drivers. I mean, HELLO! Canon? yeah, the early nineties called and they want you to start using their technology.

I was working on a slideshow for a wedding, and I needed to scan handwriting for the title screen. So, I plugged in my old Canon N1220U to my WinXP box. didn’t work. Well, served me right. I had turned my old WinXP box into a linux box, and turned my Win98 box into my main WinXP box (follow that?). Anyway, silly me thought that a plug-N-Play USB scanner that worked on my other Windows system should work just fine on the new Windows system: I mean, a driver’s a driver, right? Hmmmm, apparently not.
So then I decided to give the scanner a try on my Powerbook. No go. None of the built-in apps recongnize it. Hmm, okay, so I direct my trusty browser over to the Canon site to get the latest drivers. They claim to support it under OSX, but get this, it ONLY WORKS WITH PHOTOSHOP. Device driver??? Sounds like a PS plugin to me. Anyway, so I even tried a few other things like VueScan. no go. It recognized the scanner, but couldn’t open it, and when it did, the app froze. Grrr…

By this time, it was getting late, and I needed to finish this thing rather quickly. So, I go to Best Buy and grab the Canon LiDE-30, thinking, well, I like the quality of the images from the Canon, maybe the newer ones have better support (a quick check on their site reveals that it’s designed to work with OSX). So, I get this scanner back home and install the software. Um, worst. software. ever. It’s some god-awful ugly app that looks like a bad imitation of OSX 10.0, complete with gaudy pinstripes and everything. And, guess what? It STILL doesn’t work with the built-in capture software in OSX. Yeesh.

Okay, whatever, at least now I can scan the photos. Get the project done, but now I have 2 scanners, neither of which I’m completely happy with. Well, at least I’m getting a $30 rebate on the new one.
So, a few months later, and I’m messing around on my Powerbook, and I happen to look at the system profiler. It has a function that lists log entries. for some reason, the console log is taking FOREVER to load up. Once it’s done, it reveals that the log file is 29.5 MB That’s MEGABYTES. What the hey? So I look at the file, and it’s line after line of

Looking for devices matching vendor ID=1193 and product ID=8717
Looking for devices matching vendor ID=1193 and product ID=8718

So, I do a quick google on this log message, and lo and behold, I’m not the only one! Apparently, the scanner starts 2 processes that continuously poll for the scanner. When they don’t find it, they log a message to the console log. Oy Vey.

That’s the last time I buy a Canon scanner.