Bizarre Time Machine Error
May 2nd, 2008This can't be good:

"This backup is too large for the backup volume. The backup requires 100.0 MB but only 172.3 GB are available."
This can't be good:

"This backup is too large for the backup volume. The backup requires 100.0 MB but only 172.3 GB are available."
Programming can be a great hobby. Anyone can do it, there are lots of good, free tools, and you can "scratch an itch" - write something that you need yourself. Hacking for fun is a great way to learn more about the computer you're using, and is just an interesting mental exercise.
Let's say you decide one day "I want to write a text editor". Sure, there are a thousand other text editors out there - but the reason all these editors exist is because a thousand other people said "I want to write a text editor" and did it. If the existing tools don't do exactly what you want, chances are there are other people like you, who aren't happy with the existing tools and will like what makes yours unique.
A text editor is a great example of where the Real World makes doing the job less fun.
So you start out with a character buffer. You're working in C++ so you have a linked list of pointer to char, an 8 bit type. You write code to let the use type characters and insert them into the buffer, track multiple lines, handle cursor movement. Handle PgUp, PgDn to move a page at a time. Cool stuff - you've got a marginally working editor. So you create a project at Google Code and post it.
Some users download it and start playing with it. A user in Montréal says when she reads in text files that have her city name in them with the accent, the accented character doesn't show up right. Uh oh.
So you find a copy of Joel's article on Unicode and read it. No problem - change that char buffer to wchar_t and you're good.
Well, better. Your new friend in Montréal is happy, but after a little while, you're getting email from some new friends in Turkey asking why their text doesn't look right. Googling around a bit, you find Michael Kaplan's blog, and reading it scares the pants off you and you give up and tell the user in Turkey that maybe they'd be happy with Notepad.
There are examples like this all over software development. Want to talk HTTP? Sure you can send GET /foo HTTP/1.1 and get stuff back most of the time, but handling every case is hard.
The best way for a hobbyist to handle these things is to reuse as much code as possible. If you're using the .NET framework to work with strings then you don't even have to think about most issues; they're handled for you by the framework. Same with HTTP. The Flex framework, the various Java frameworks - as much fun it sounds like it would be to implement HTTP, find a mailing list where implementers are talking about issues, see how much fun it really is once you're past the easy part.
Now that I've been posting things on Twitter, I notice I have a few followers. And the followers I have are mostly .NET developers. I was a bug .NET proponent a few years ago, but I haven't actually written any C# code in a long time now, and I thought I'd talk about why.
There are two separate places I could be using .NET: For my own personal projects, and for work.
Concerning work, it's easy to explain why I'm not using .NET, and it's not what you think. It basically comes down to deployment.
Windows XP, still the largest market, doesn't come with a .NET Framework installed. No matter what the penetration statistics are, this means we need to ship the framework, add it to our setup, and support users having trouble with that part of setup. Many users of the product I work on try it out using a free trial download, and the framework adds significant size to the download (or if we download it on demand, trips up the people who downloaded it to install offline).
I went through the same thing at my last company, where I managed to convince them that the framework download was worth it. In that case we were creating a brand new app, and the benefits of using .NET over starting out in C++ were clearer. At Adobe, we'd be using .NET features in a large, existing C++ application, so the benefits are less obvious.
For my own personal projects, the short answer is that I bought a Mac.
I love developing with the .NET Framework, but I don't like Windows Vista. I had high hopes for Vista, and the final product just didn't deliver.
My main beef with Windows is that it degrades over time. Everyone knows this, so many people just plan to re-pave their system at some regular interval. But that's a stupid way to have to use a computer. My Vista install at work went from clean to annoyingly slow in about 6 months. Same thing happened at home.
Meanwhile, my old Mac Powerbook is running well after all the time and usage it's seen.
It was a tough choice moving my main home system from a PC to Mac, but honestly, I do spend more time now "using" the computer and less time maintaining it. The only thing missing is Visual Studio.
What's filled that gap for me is Flex Builder. Now that Adobe AIR exists, I can write an application in Flex on either platform, and run the application on either platform. It's the perfect setup for someone with a foot in both worlds. It sometimes makes interop with native platform stuff difficult, but that's already a pain with .NET and my .NET stuff would only work on Windows (I'm discounting Mono here because last I looked the Windows Forms support on the Mac wasn't great, and deployment was even more difficult than the .NET framework).
So there you have it. I hope it doesn't cost me all my followers. :)
We were out and about yesterday when a photo opportunity presented itself that actually managed to saturate the image buffer in the 40D. I had to stop and wait while some of the images were flushed out to the CF card.

High speed shooting is the only way to capture a toddler jumping in a mud puddle!
Unfortunately I had the ISO set to Auto to the camera chose 400 even though there was lots of light. I'm no sure why, but this made the pictures a bit less sharp than I would have liked.
Almost a year ago, I wrote about Twitter:
The only reason it’s interesting is that it’s reached a critical mass - but it’s so obviously *not* got staying power that I’m amazed so many people are so interested in it. It’s fun to play with for a little while, but I seriously doubt people are going to keep posting their little life updates once the novelty wears off.
And yet here we are a year later, and Twitter is not only alive, but growing.
So why is it?
I compared Twitter to IRC, and gave some reasons IRC stopped growing years ago (to the point where most folks today have no idea what it is), but I never actually said there was anything wrong with IRC. IRC was great. And Twitter is still the closest thing we have to an IRC that works for everybody (across firewalls, with no configuration hassles).
So I'm going to hang out in Twitter for a bit, and see what it's like. I still find the sense of community that existed in the BBS days, and again in IRC days, is missing on the Web today. Maybe this is it.
Updates here.
Finally, the last remnant of the giant snow bank should be melting away today.
Before:

After:

It's great to be able to see the neighborhood again.
We've been using this video baby monitor that we received as a gift until just recently, when it started to die. Random bursts of static while you're trying to sleep are just no fun. It's an analog device, so the camera part is simply broadcasting audio and video at 900mhz, and the receiver picks up whatever's there and displays it and plays the audio portion out the speaker.
There's no security, so every now and then we'd hear the neighbor's 900mhz cordless phone through the monitor. I don't know for sure that they could hear our monitor on their phone, but it wouldn't surprise me. So when looking for a replacement, security was definitely a factor.
Really there's not much to a baby monitor. It needs a camera and microphone and some way to broadcast wirelessly, and a receiver that can pick up the signal and present it.
There are off-the-shelf components that can do this job and in a secure, digital manner. And finally, a company has put these together in an actual baby monitor product that doesn't suck: The Safety 1st 08280-High-Def Digital Color Video Monitor.
Check out some of the features:
Nice. The only problem? It's $319.
That's a lot for a baby monitor. And the part that gets me is that this monitor probably costs about the same, or less, to produce, than the one we already have. It's very small and light, not the big CRT that the previous one had, and is presumably using a lot of off-the-shelf parts for the complex parts like the H.264 video and wireless signal.
Actually, if you look at the parts in the receiver, a Nintendo DS would be more than capable to do the job it's doing.
The DS has a better screen, better sound, probably better battery life, and can be used for other things. It's got 802.11 networking built-in, and it sells for $139.
Once you've got the DS you'd need an 802.11 camera and some software. You can buy an 802.11 camera like this one for $89, and then it just comes down to software.
That's the hard part for a DIY project, but I wonder if there would be a market for a baby monitor application for the DS that would let you use it and a generic 802.11 camera as the world's best baby monitor?
In case you missed it, Adobe has released Photoshop Express. Express is basically a Flex based version of something like Flickr or SmugMug, and so far, looks promising.
It doesn't really have the feature set to compete with the existing sites yet, but it's only a first release and it'll be interesting to see where it goes.
One aspect of Flex that I don't like is that it really doesn't work well over Remote Desktop. If I connect to work over the VPN to work and then run a Flex application through Remote Desktop, it's slow. If I use the local browser to use the same app, it's fast. This is an artifact of the way the Flash player draws things.
But for Photoshop Express this doesn't seem like an issue, because I don't see a scenario where I wouldn't be running the app locally.
Here's a link to some Ottawa Winter 2007 / 2008 photos I took this year, in a Photoshop Express album.
This is an addendum to my Airport Extreme Mini Review that I posted a couple of days ago.
I've been using the Airport Extreme for the weekend, and I'm still happy with it.
Backing up the laptop to a USB drive plugged into the Airport Extreme was easy, and although it's not a documented feature, you don't have to do anything funny to get it to work. Plug the drive into the Airport Extreme, double-click on it on the Mac, and in Time Machine, select it as your backup drive. That's it.
The format that Time Machine uses for a remote backup is different than what it uses if the drive is locally mounted - it shows up as a sparse volume instead of files on the disk - so you can't take the same drive you've been using with Time Machine plugged into the laptop and just continue backing up over the network.
It's fast! My initial 80gb backup was done in about 12 hours, over 100mb/minute.
I did run into an interesting Airport Extreme firmware bug. The backups I had made before I plugged the drive into the Airport Extreme were still there, and I wanted to delete them since I had the new format backup. When I would try to delete those files (there were over a million files), the Airport signal would suddenly disappear and I'd have no more wireless until I rebooted the Airport Extreme. Apparently trying to delete that many files was crashing the firmware.
I plugged the drive into the laptop directly, deleted the files, and moved it back, and everything has been working since.
I picked up an Airport Extreme base station from Apple this week. I've had trouble with the wireless router I've been using on and off, and now that my laptop has N, I wanted an N base station. Plus, the Mac laptops can use Time Machine to back up to a drive hanging off the USB port plugged into the Airport Extreme, so it was a natural choice.
In general the hardware is great. Only 3 ports on the inside of the network (and one WAN port), which is one less than what most other similar devices have, but probably enough for most people. The wireless connection has been rock solid - 5 bars non stop, and fast.
But the Airport Utility and the options it gives you for configuring the router are bizarre, and lacking in some pretty basic areas.
Here are a few of the things I wanted to do, that I haven't been able to do with the Airport Extreme:
For most users these limitations won't be limitations at all, but considering that every other wireless router I'm aware of would handle all of these, I don't think I'm expecting too much of Apple to allow a little more configurability.
With Mac OS X, you've got unix under the hood, and you're only a Terminal window away from being able to configure anything yourself. I wonder if there's something similar for the Airport Extreme.