Posts by Kip
Kip Twenty Twelve

There exist two traditions here at Ye Olde Vacant Nebula: a long, introspective blog post on my birthday, and a long, retrospective blog post at the beginning of the new year. What you are reading is the latter. As I noted at the begenning of twenty-leven, my blogging frequency has dropped precipitously. (I only wrote twenty posts this year.) As such, this long, retrospective blog post may be merely a retrospective blog post.

My blogging has tended more toward the technical and geeky this year. I detailed the code I wrote to generate gradient images, shared my thoughts on how to write SQL queries, wrote not
once but twice on HTML5 video, provided password tips for non-geeks, compared online backup services, and closed the year by sharing my process to creat photo mosaics.

For the more family-oriented content on this blog, I posted pictures from our trip to Disney World, Emma’s third birthday, a trip to the beach, Grayson’s first birthday, Emma’s first day of preschool, our trip to Dollywood, and Halloween. I also posted a ton of videos all at once.

Some other odds and ends: my thoughts on Donkey Kong Country Returns, some comments on what it’s like living near a race track, the obligitory birthday blog post, and a follow-up review of Anathem.

All in all a pretty good year. Too bad a Mayan version of the Y2K bug is going to somehow tear the world apart in twenty-twelve. Or so they say. Happy New Year!

No Comments
Kip Photo Mosaics

Over the holidays, Stephanie’s family was working on a jigsaw puzzle which featured an image from Winnie The Pooh, which was made up of hundreds of tiny animation cells from Winnie The Pooh cartoons. The puzzle was super tedious, but it did inspire me. I realized it would be a fun programming exercise to try to write a program to generate one of these mosaic images. So that’s what I did that evening, staying up till about four in the morning.

In this post, I’ll be talking about some of the challenges I faced in writing the code. If this doesn’t sound at all interesting to you, but you’d like to see the images I created, you can just view my mosaics photo album that I just posted.

Here is the original image I’ll be working with in this example:

To start with, I take a library of images and reduce them all to 12×9 pixels. This takes a while, so this library is cached. I then use these simplified images to determine which image to use for each tile in the mosaic.

In my first try, I picked the best match possible for each tile. Unfortunately, this results in a lot of duplication, which doesn’t actually look that great.

So, my next attempt was to prevent any image from being used twice. Unfortunately, you need lots of suitable images for this to work; my library of photos wasn’t sufficient. Additionally, because I was processing tiles column-by-column, from left to right, the mosaic generally was truest to the original image on the left, and furthest from the image on the right.

My next idea was to allow an image to be reused, but to limit reuse. So I implemented a system where an image receives a “penalty” each time it is used. The next time I check to see how suitable that image is for a given tile, I add the penalty to that tile’s score. This has the effect of allowing other similar images to be substituted. But after other similar images also have the same penalty, the original image will be selected again. And it will get another penalty. This produces a better image, but it still has the problem of the image getting worse as you go from left to right.

So, I next decided I would fill in the tiles in a random order. This gives better results:

Next, I had the idea that instead of filling them in randomly, I should fill in the tiles with the most detail first. (For those curious, I calculate the level of detail in a tile by computing the average RGB color of each pixel in the tile. Then I take the standard deviation of the “distance” of each pixel’s color from the mean color in the RGB color space. So the most detailed image would be one that is half black and half white. And the least detailed would be one that is one solid color. This isn’t perfect: a tile that is a black and white checkerboard pattern is more detailed than one that is half white and half black, split evenly down the middle. I suppose a better approach would be to do a frequency analysis, and find the areas of highest frequency changes. Similar to the way JPEG compression works. But I thought that was too much work for what I was trying to do.)

So now we have something that I’m pretty pleased with. The next step was just to up the resolution. The image below has 4560 individual tiles:

I’m not releasing the program right now because the code is way too bad. It is very sloppy, nothing is parameterized. (I adjust the parameters right now by editing the code and running from within Eclipse.) Plus, I’m sure there are programs out there already that do the same thing better. If you’re really interested, you can email me. If there’s enough interest, I can try to make the code presentable. But I don’t have any plans for that now.

No Comments
Kip Anathem review part II

Vacant Nebula superfans may recall that I wrote a brief review of Anathem by Neal Stephenson on this blog about two years ago. I have recently recommended the book to at least two people, and started to worry that maybe it wasn’t as good as I remembered it being. I’ve had a similar situation with movies before, where I think a movie is really good the first time I watch it, then I watch it a second time and think it is pretty awful. (The most egregious example that comes to mind is Phone Booth.)

So I recently embarked upon the task of rereading Anathem. I believe this is actually the first time I have re-read a novel in over a decade. And I’m happy to stay that I stand by my original review. In fact, I liked it a little better the second time because I remembered a lot of the Orth and Fluccish vocabulary, so I didn’t have to consult the glossary all the time. And I believe the previous sentence tells you enough about the book to determine if it would be interesting to you.

No Comments
Kip Three decades

For a week last summer my wife was in New Scotland and my kids were in Scotland County, and I was home alone. This provided me the opportunity to be rather bored. It was during this boredom that it occurred to me that I couldn’t remember the last time I actually felt really bored. As I complete my third decade of life, I recognize this has been a pretty significant change in my life, and I didn’t even realize it had happened. Sure, I noticed other big changes, like those that came when I became an employee, a husband, a father, a homeowner. But I had overlooked the fact that I’m not bored very much anymore.

I can distinctly remember, in school and college, being bored a lot. I identified strongly with song lyrics like “my boredom has outshined the sun.” Not that I was necessarily unhappy or that I didn’t have any fun or enjoy the time. There was just a lot more time than there was stuff to do, or stuff I wanted to do. I often thought of my life as a series periods of waiting. Wait for the bus to class. Wait in line for lunch. Wait until I’m old enough to drive. Wait to get into a concert. Wait to get into a movie. Wait until I go off to college. Wait for grades to be posted. Wait until class is over. So much time, bored. Idle. But at some point it went away, and I didn’t even notice. I guess I was waiting for the life I have now.

No Comments
Kip Two approaches to Zelda cloning

I recently had two heavily Zelda-inspired games come up on my Goozex queue back-to-back, and here are my brief thoughts on the two.1

3D Dot Game Heroes

3D Dot Game Heroes is very much a new take on The Legend Of Zelda. As in, Zelda One. It has some Link To The Past elements, like a somewhat three-dimensional overworld, but it’s basically Zelda One. The game looks really pretty, which you can see in the YouTube video below. It was neat at first, but I had only played about two or three hours before I just got tired of playing it. It didn’t help that I wasn’t saving frequently and lost about an hour’s worth of progress due to a game-crashing bug. After that, I just decided I had better things to do with my time and stopped playing. My advice: if your really looking for a new take on a retro, 8-bit style game, then check out the 3D Dot Game Heroes; otherwise, just watch the video below to satisfy you’re curiosity about the art style, and pass on actually playing the game.

Darksiders

In contrast to 3D Dot Game Heroes, Darksiders is more inspired by the 3D Zelda games. There are dungeons and an inventory system and an overworld that is gradually opened up as you get items that allow you get to new areas. You even have a horse! However, the story, the combat, and the art style is much more influenced by God Of War and Devil May Cry. It was a very nice mix, and a very well done game. I enjoyed it a lot and completed it. (Well, I didn’t go back and beat it on hard, but I got all the items and maxed out all my weapons.) Suffice it to say, I recommend the game to anyone who likes the 3D Zelda games and would like to see a more violent, adult take on the formula. You can see a gameplay clip in the YouTube video below.

1 I realize I’ve never talked about Goozex here. I’ll right that in a future post.
No Comments
Kip Don’t copy that floppy

During a meeting today, I got to wondering: do today’s kids even know what the commonly-used save icon represents?

Screenshot of Microsoft Word with floppy-disk save icon

Is this confusing to kids? Or do they just learn that this thing, whatever it is, generally represents saving? Surely the percentage of people under the age of fifteen who have ever used a floppy disk must be less than five percent, but I wonder what percentage even knows what one is.

No Comments
Kip Comparing online backup services

I recently did some evaluating of a few online cloud backup solutions, and thought I would share what I found here. I evaluated Dropbox, Carbonite, and CrashPlan. I ultimately went with CrashPlan, for reasons I’ll describe below.

Dropbox

I’ve been using the free offering from Dropbox for about a year and a half now. It’s great. At least, for what it does it’s great. The integration with the shell is perfect: the moment a file in your dropbox is modified, Dropbox starts uploading it to dropbox. It puts an icon of the file letting you know if the file has been backed up or not. And I’ve never gotten an error that I couldn’t modify a file because it was in use by Dropbox. Plus, it gives you a public folder which others can access via HTTP. You get 2GB for free, and I have no complaints about the free service.

However, I have about 80 GB of stuff I want to back up, and that number will only grow in the years to come as I record 720p videos of the kids growing. Dropbox’s prices are pretty steep if you want to buy more storage: $99/year for 50GB, or $199/year for 100GB. I guess if you pay for extra storage, you are really paying for all the people who are using Dropbox for free. Maybe they’re hoping to win you over with the awesome free service, and then maybe you won’t shop around before considering upgrading. But if you shop around you’ll find those rates are pretty unreasonable. There is also the issue that Dropbox wants part of your computer to be your Dropbox. Meaning, you would have to move all the folders you want to back up into your Dropbox folder. That’s kind of a big deal too.

Bottom line: Dropbox upgrades are a bad idea. Don’t do it unless you feel it is The Right Thing To Do, as a way to thank them for their awesome free service and to try to ensure that the free service stays around a bit longer.

Carbonite

Next up was Carbonite. I heard about Carbonite through an ad on a podcast (the Adam Carolla show I believe). They offer unlimited gigabytes for $59/year. Some web searching revealed that they seem to have a way of nudging some users away if they use too many of the “unlimited” bytes. But most of the complaints I found were from about two years ago. You can do your own research.

I tried the 15-day free trial. It has useful shell integration like Dropbox, which was nice. You tell it which folders to back up (rather than having to put everything in a “Carbonite” folder or something). However, the biggest turn-off for me was the file extension blacklist. Certain types of files are not backed up automatically by Carbonite. In particular, video files are not backed up. (As I said above, one of the main reasons I want cloud backup was to protect our photos and videos.) You cannot directly edit this blacklist, or tell Carbonite “hey just go ahead and back up anything”. Instead, you have to find a file that is not being backed up, and right-click on it and go into the Carbonite options and tell it to always back up that type of file. So you have to go searching for files that Carbonite might have missed. Throughout the 15-day trial I kept finding different types of files that Carbonite was skipping—exe, ini, all hidden files, and a few other extensions.1 This was enough to turn me away from Carbonite. I need to be confident that it is backing up everything!

CrashPlan

Last in my search, I arrived at CrashPlan. Like Carbonite, CrashPlan offers an unlimited plan. Theirs is only $50/year. They don’t have the nice shell integration like the other two. The only thing you have is a tray icon, which seems to be out of sync with the actual application every now and then. Another problem I have with it is that it locks the files while it is uploading them, so while I was uploading files I occasionally got a “this file is in use by CrashPlan” error message. Which is annoying, but I can live around it. Their approach to this seems to be “watch the file system for changes, but only actually upload new/changed files every 15 minutes”. I have changed that back to just once every hour to mitigate this risk.

I think some of the strange design decisions stem from the fact that (I think) it was originally a tool used to back up files from one computer to another (most likely on the same LAN), or from one hard drive to another on the same system. (In fact, you can still use it for that purpose for free.) It is definitely the least user-friendly of the three services I looked at, but it’s not crazy or anything.

In spite of these flaws, I still went with CrashPlan because the service works great, it is a better value than Carbonite, and doesn’t have the file type blacklist. I also got a code from CrashPlan about a week before my 30-day trial ended, with a code to get a year for only $42 (saving $8). I don’t know if this is normal, or if I just happened to be evaluating the service at the right time. I’ve been using the service for about two months now (counting the trial month), and I’m pretty happy with it.

I guess I should mention that there are others out there that I didn’t really look into much, like Mozy. And Microsoft and Apple each have their own proprietary cloud backup solutions too. I’m just reporting on the things that I looked into.

1 In fact, it may actually only be a whitelist of file types allowed, rather than a blacklist of excluded types. And, to be fair, this is pretty clearly explained up front on their website.
Kip How I respond to liars

I recently came across what I think is the most polite way I’ve seen of letting someone know that they are a liar. (I’ve taken the liberty of changing the names and faces.)

This is certainly more polite than what I usually do, which is click the “report spam” button on Facebook. I don’t think that actually does anything, although I’d like to think eventually you would get kicked off Facebook if that’s all you did on there. In a perfect world they’d at least train a bayesian filter to hide that kind of stuff from me.

With email forwards, I’m even worse. When I get something particularly egregious, I take the time (generally very little is required) to see if it’s true (it usually isn’t). Then I hit reply-to-all and call them out for being a liar. Well, I usually don’t use the word “liar”, although maybe I should start my messages with “You lie!” in a large, bold font from now on. Instead I just state the facts with links to my references.

In my heart of hearts, I had the best of intentions with this approach. I envisioned a world where people are simply unaware that they are lying, and that, once they are made aware that they are lying, they would stop lying because lying is bad. I honestly did. Well I guess to some extent I was being a jerk, otherwise I wouldn’t reply to all. But still—if I was disseminating false information, I would want someone to tell me so that I would know better. I was (almost) doing unto others as I would have them do unto me!

And at first I thought I was succeeding. Most of these ridiculous email forwards stopped coming to me. Then I found out Stephanie was still getting them from the same people. The people sending this garbage had said to themselves something like, “Kip doesn’t like it when I lie to him. He’s a jerk and tells everyone I’m a liar. I’ll just stop sending my lies to him, but I’ll still send them to everyone else.”

Oh well.

No Comments
Kip More on HTML5 video

Four months ago I blogged about the frustrations of using HTML5 video. I said at the time that I have to transcode the video into 4.1 different formats (mp4, ogv, webm, flv, and jpg). However, I was reminded today (at NC Dev Con) that Flash supports h.264, which is to say, MP4. So I don’t need to transcode to FLV for the Flash player fallback; I can just send the MP4 file to the flash player.  So I’ve updated the player on my site to drop the need for FLV. I’ve also switched my flash player from OSFLV to the nicer Flowplayer. Not that you would notice any of this, unless you’re using IE 6/7/8.

No Comments
Kip Fall 2011 TV premiere schedule

If anyone wants it, I made a compact Fall 2011 TV premiere schedule. It contains the air time for all the shows, as well as the date of their season/series premieres. It only covers the four major networks because the cable channels are much more sporadic.

Edit: If you’re wondering why some channels are missing on some nights, it’s because I removed some rows that had nothing that looked like anything Stephanie or I would be interested in, in order to make it fit on one page. I only decided to put it up on the internet as an afterthought. This link is basically what I started with, except it is missing the premiere dates which can be found here.

No Comments
RSS feeds: Kip's - Stephanie's - Both