Epic Fail

Epic Fail.jpg

My new HTPC will have to wait until at least Thursday for a more modern power supply to arrive… I guess my desktop has a few more days as my highest-performing machine.

Thaw

It’s time… if we don’t thaw this ice out now in a somewhat controlled manner, it will thaw itself in a potentially dangerous manner. Did I mention we made hundreds of pounds of ice?

Chris re-aligning our melting hose:
Chris Re-aiming the Hose

Thawing in progress:
Melting The Ice

HowTo: Merge Google Calendars Together

Here’s a quick How-To on merging two Google Calendars together, since Googling with the obvious phrases did not get me very useful results.

The Problem: Merge Two (or more) Google Calendars Into One

Let’s suppose that you, like me, have more than one calendar in your Google Calendar, and decide at some point that you want to condense those into one. I was struggling to find a single click solution for this, and then just to find any solution, for quite a while. Then I stumbled on the “Import” feature, and realized that it actually solves all my problems. Here’s how it works.

The Solution: Import one Calendar into the other

Once you see how to do it, it’s a quick task to merge two calendars together. In fact, you can even use this to merge a Google calendar from one account into another.

  1. Log in to your Google Calendar account, and click on the drop-down menu next to your Source calendar. Pick “Calendar Settings” from the list:
    Calendar Settings
  2. Now, scroll down to the bottom and find the Private ICAL address link. Right click on this link and save the file to your Desktop (or other handy temporary location):
    Private ICAL Link
  3. Next, return to your calendar and click on the “Add” dropdown menu at the top of your calendar list, then click Import Calendar:
    Import Calendar
  4. Select the file you just saved from your Source calendar, and choose the Destination calendar you want to import into:
    Import Form
    Then click Import, and you will soon be greeted with the cheery success message:
    Successful Import
  5. And that’s it! Here’s a before-and-after of me combining two calendars to show that it works. (Take a look at Tues, February 12, for example.):
    BeforeAfter

Enjoying Free Books

In the past three weeks, instead of doing all the studying / schoolwork I am supposed to have been doing, I have, among other things, also read three really great new books. Too great, in fact, in that I read the latest today in one 8-hour sitting. (Well, technically I did move from the couch to the chair, and paused to bake some chicken for supper… but I read the thing straight through, nonetheless.)

The books were, in the order they arrived for free:

I thought about putting mini-reviews up here, but I don’t think I have anything amazing to add to the descriptions you can find elsewhere, other than to say that all three are very different books, but I enjoyed all three greatly. Of them, Spin had me hooked the most, seeing as I was compelled to read it straight through. If you like Science Fiction, I highly recommend it; very cool futurist technology ideas (and scary to think about those that are feasible…), and also very neat ideas about how a society might react in the face of a looming yet not immediate apocalypse (in this case, known with certainty to be some 40 years distant).

The most important part:

How you, fellow science fiction / fantasy lover, too, can get free digital books like these to read, on a weekly basis. Check out the publisher Tor‘s new program, called “Watch the Skies.” They’ll send out free digital books once a week, and also enter you in a drawing for something or other.

xkcd

If you don’t read xkcd every Monday, Wednesday, and Friday, you’re ruining your life.

I don’t get to drum anymore, but this is still hilarious…

You can identify them ahead of time — they lead with their left foot when the music starts.

Latest Programming Accomplishment: Picture Processor

I just wanted a brief, self-congratulatory post since I finished my CS 559 graphics program that I mentioned a night or two ago. It works pretty dang sweet, and despite the fact that a “couple” other programs out there already do this stuff and a heck of a lot more (like, oh, Photoshop, The GIMP, etc), I’m still pretty proud to say that 100% of the code that made these pictures was written by me 🙂

Definitely look at these at their full size (click on them), they’re not very impressive as thumbnails. (And that spin one is not impressive ever, but that’s ok. It serves a different purpose.)

Pictures Created By Me

  1. Assignment: Create an image of yourself in a place you’ve never been. Of course, I am a nerd, and a huge fan of a particular movie. So the logical conclusion:
    A Place I've Never Been: In the Matrix
  2. Demonstrate Sharpening and Blurring. I turn to everyone’s favorite College of Engineering icon, incidentally covered in a light bit of ice, courtesy of Enlight:
    Sharpening & Blurring
  3. Demonstrate Image Rotation and Composition. I took a red checkerboard background, created an image of a single line, and then made lots of rotated copies of it:
    Spin
  4. Demonstrate Nonphotorealistic / “Painterly” Rendering. Once again, our favorite College of Engineering icon jumps in as a model. The top picture is the original, the bottom left is the painting type we were required to do (circle brushes), and the bottom right is an extra painting type that I created (custom brush, in this case, an X shape).
    Painterly Rendering

Saturday Leisure Activity: Parallel Kingdom Beta Testing

In between fits of graphics programming today, I had a pretty neat opportunity to beta test a game that some friends of mine are developing for Google’s Android software platform. The game is called Parallel Kingdom, and is based on the idea of using the GPS in the Android phones to play a medieval MMORPG in a virtual world that mirrors the real world.

What does that mean? Well, for example, in one round of beta testing, Jason built a castle on Capitol Square, while Jon set up shop at Camp Randall. I got too close, and got killed 😛 In the virtual world, we got to craft weapons, build buildings, and run around attacking eachother, which will ultimately happen out in real life. Check out their first video, for a sweet example!

I’m looking forward to seeing this progress; they’ve got a lot of really great ideas!

A Gallery of Ways Not to Resize Images

So for CS 559: Computer Graphics, our first project is to implement a program that can do various things to images. For instance, we need to turn color images to gray scale (or part way there), resize them, rotate them, etc.

As it turns out, the mathematics behind some of these things that we take for granted in Photoshop or the GIMP are actually fairly complex, though I don’t want to get into them now. What I do want to show you are several ways that one (say, me) could try to implement a simple “resize” operation and fail, due to tiny little bugs:

How to Screw Up the “Resize” Function, in Pictures

  1. (First off, here’s the original, full size image. Click for a larger view. Each attempt below was to make it 2/3 size.)
    Original image
  2. Use < where you meant <= to define your resampling filter. (Causes the filter not to include certain values that are exactly on the edge, like, say, all the exact integer multiples):
    Less-than vs Less-than-or-equal
  3. Use an unsigned char instead of an int to store your y coordinate index. (unsigned char‘s can only hold the numbers 0 to 255, whereas ints can hold +/- 2 billion):
    Use char instead of int
  4. Cast float to unsigned char after using a filter not guaranteed not to amplify values. This one is pretty subtle, but you can see red & yellow splotches appear on the shirt (e.g., dots on my left shoulder), and my right ear has holes in it. Very annoying. (If the filter amplifies values, then it can output, say “257” from inputs ranging 0-255. When you try to fit “257” in an unsigned char, you get overflow and the output becomes “2”.)
    Amplifying Filter + direct cast to char

Electric Sheep

I just found this awesome screensaver / distributed computing project today called Electric Sheep. In short, it’s a screensaver that shows you awesome animations while using your idle CPU to create new ones in the background.

Here’s a couple sample images:

sheep2.jpg
sheep1.jpg
sheep3.jpg

(Images by Scott Draves and the Electric Sheep)

Why “Electric Sheep”?

An homage, it turns out:

The result is a collective “android dream”, an homage to Philip K. Dick’s novel Do Androids Dream of Electric Sheep?

More Background

They have screensavers written for Windows, Linux, and Mac platforms, where the idea is to create some pretty awesome art while your computer is in screensaver mode. When the screensaver is active, it downloads recently completed “sheep” (high-quality MPEGs) from the sheep server, and displays them for your viewing pleasure. Meanwhile, in the background, it also downloads some XML data sets to run through an algorithm which creates frames for these “sheep”. When the frames are done, it sends them to the sheep server. Ultimately, your computer contributes to creating new art while showing you the current stuff!

Behind the scenes, the screensaver is running code called Flam3, to create “Cosmic Recursive Fractal Flames”, and smooth animations between them. A human designer, using one of the tools available at that site, describes the fractal they want. Then, the Electric Sheep in the distributed computing network crunch the numbers to generate intermediate animation frames.

Very Cool.