Noise Textures


When I was in college, I wrote a program just for fun to generate Perlin noise textures. Perlin noise is technique used to create natural-looking textures — clouds, for example.

Later, for a technical writing course, I created a more user-friendly interface for that program and a web page where people could download the program, along with the source code. That page was the most popular part of my website — it was the first Google result for "perlin noise generator" at the time.

I also posted the source code for my program on that page. I eventually learned that my implementation of Perlin noise wasn't truly Perlin noise after all, but rather a simplified version. I hadn't realized that at the time because I hadn't taken enough math courses yet to fully understand Ken Perlin's original papers. I took down that site long ago, partly because I was embarrassed about having propagated that mistake. But strangely enough, you can still find copies of that source code on the web by searching for some of the variable names.

Anyway, true Perlin noise or not, I thought it might be fun to re-write that UI in XAML and submit it to the Windows app store. The version I submitted is about the same as my original version, except with a prettier, touch-friendly UI. Someday, I'd like to add more features and make it more of an educational tool to let people see visually how the noise is generated. But for now, it's fun to play with and can generate some pretty cool images.

Download the Noise Textures app

Adding Disqus Comments


I'm adding Disqus comments to this blog. It was really easy to set up. When I was using WordPress and its comment system, I got tons of spam despite having basically no audience. I only ever saw one legitimate comment, which was buried in thousands of spam messages. Hopefully this will go better.

My Robot


I've posted about robotics stuff before, but I never actually talked about the robot I was building. I haven't done robotics stuff lately, so I won't go into much detail, but I thought I should at least share this video of my robot that my dad took.

As you can see, it's basically just a slow remote-controlled car. Nothing fancy. Still, I'm kinda proud of it because I designed it myself, picked out all the parts, wrote the software, and even built the chassis out of wood.

One interesting part of the project was that I built the motor controller circuit myself. It was fun for me because I got to do a lot of soldering, which I haven't done much before (as you might be able to tell from the picture below).

Most of the code I wrote is just the "driver" for the Xbox 360 controller using the GHI USB library. Here are some links I found useful for interfacing with the controller:

It's not shown in the video, but I also added a small video camera and LCD screen. Being able to see from the perspective of the robot is pretty cool, but that's as far as I've taken it for now. I'd like to use the camera for some autonomous behavior, but I'm guessing my mainboard wouldn't really be powerful enough to do any real-time video processing.

Anyway, that's all I have to say about the robot for now. But here are a few more photos of the construction:

Git Merge Options


I recently learned about the -X option for git merge, which allows you to specify options for the merge strategy. I was trying to merge a branch which had changes in whitespace throughout several files. With just the default options, git did a pretty bad job and there were a lot of large conflicts with no obvious difference besides whitespace. But then a coworker told me about "-X ignore-space-change". With that option, there was only a single small conflict, which was easy to resolve.

Writing a CMS


I'm writing a CMS (Content Management System) from scratch to run this blog. You're looking at it right now. It's probably a dumb idea, but it sounds like a fun project to me right now. My old blog was a WordPress blog, which is currently at