05
Nov 08

Victory

I really don’t know what to say. Thank you to everyone who worked so hard to make this amazing turn of events (that I never thought would actually happen) possible. I know that the words “hope” and “change” have been thrown around pretty liberally by both sides in the past few weeks, but I really hope that this is a sign that the insanity of the past few years is slowly coming to an end.

Proposition 8 and its sister propositions in several other states passed, and I think that’s unfortunate, but expected. It shows, I think, that Americans cannot cleanly separate their politics from their religion. I’m sure there will be counter-propositions and counter-counter-propositions ad infinitum until someone decides to amend the Constitution. We’ll just have to wait and see.

I congratulate President-Elect Obama (that’s still sort of surprising to be able to say, isn’t it?) on his well-earned and decisive victory. Now comes the time when you make good on the promises that got you elected. Please don’t let us down.

Update: I don’t want that “cleanly separate politics from religion” bit to be construed as a slight to religion or the religious. I totally understand how deeply religious people must have been of two minds about this issue, and what I meant by that statement was that people can’t vote on something like gay marriage without being influenced by factors like their religious convictions and that this is exactly why this issue will continue to oscillate forever until some decision is made at the national level.

Attacking religious people because you’re against Prop. 8 is just as bad, in my opinion, as attacking non-religious people because you’re for Prop. 8, and I apologize if my remarks were in any way misconstrued.


01
Nov 08

My Digital Transition

After coming back from Microsoft with another bundle of printed research papers in hand I found that, in the course of a year, I’d amassed a stack of read (and needing-to-be-read) research papers that filled a set of binders almost a foot thick. This would be fine if I had categorized them and knew exactly what went where, but I hadn’t and I didn’t. In fact, I had no idea what was in those binders. Furthermore, on several occasions I’ve found myself saying, “Damn, I know there’s a paper about this that I’ve got in these binders …” and not finding anything after flipping through them for about 10 minutes. “Self,” I said to myself, “there’s got to be a better way!”

I identified three problems that needed to be solved:

  • A foot of paper a year, if it continued growing at that rate, would be as tall as me before I graduated. That just isn’t sustainable.
  • Even if I kept all six feet of paper, it would be impossible to find any one of them in that stack.
  • Often, I’m looking for a particular topic or a group of related papers rather than a single paper.
  • I write notes in my papers, and I’d like to retain the annotating flexibility of scribbling on a paper with a pencil when transitioning to a digital system.

At this point, I think I’ve got all but the last one figured out.

I had considered just getting a Fujitsu ScanSnap document scanner, as it translates paper directly into PDFs, but $500 for a document scanner was way too pricey. One of the things I had going for me was that all of the research papers I’d printed started out as PDFs. The easiest and cheapest solution was to find the original PDFs, index them, add any annotations I’d put on the papers beforehand, and recycle the originals. In the end I chose to not transfer the annotations; frankly, I couldn’t decipher most of them and it would have taken too much time. Armed with Google Scholar I was able to find PDFs (and bibliographic information) for my entire paper stack in about 90 minutes.

Now that all the PDFs were downloaded, I inserted them all into Referencer. Two nice things about Referencer are its ability to store bibliographic data (in the form of BibTeX citations) along with papers and its ability to associate papers with tags, descriptive words or phrases (similar to how del.icio.us does bookmarks). This really helps when searching for papers that fit a given topic and is a lot more flexible than any fixed filing system. It also allows you to give each paper a text “note”; I find that, if I take notes on a paper, this forces me to be more concise and structured in writing my thoughts about it than scribbling on a page’s margins would be.

Now that the papers were digitized and tagged, they needed to be searchable. If it’s one thing that Google and Spotlight have taught me, it’s that if it’s not searchable, I won’t find it. Beagle does an admirable job of indexing the text of all my PDFs automatically.

The last step in the process was to make sure that when(!) my hard drive died I wouldn’t lose all my paper data. This was relatively easy, since UCSD just got a shiny new NetApp file server with a boatload of redundant storage. I’ve set up a cron job to synchronize my home folder to that server every night at midnight.

Now I’ve got a much more accessible paper library that’s really easy to maintain. The march toward paperlessness doesn’t stop there, however; just a couple weeks ago I recycled several pounds of software manuals that, if I ever needed them again, I could find online. As a result I’ve got one less storage box in my closet which is a big help given that I live in a pretty small space. I have a feeling my “important documents filing box” is next.


21
Aug 08

Automatic Everything

This was going to be an extended rant on how people use databases where people shouldn’t use databases, but the more I wrote the more I realized that this had been analyzed quite a bit by many in the systems research community and blogosphere at large, many members of which are far more knowledgeable than I. So I’ll summarize my rant in a paragraph and then move onto more philosophical, “meta”-type comments.

Twitter’s architecture (as much as they’ve shown us) is a Ruby on Rails app backed by a MySQL database. This combination is the Golden Hammer of Web 2.0. A frighteningly large number of web application developers seem to follow the mantra, “If I need to store data, use SQL as a Big-Ass Table (no, not that Big-Ass Table). Who needs high-speed middleware? I’ll write everything in Ruby!” The problem is that schema design is as close to alchemy as CS gets and tuning databases is tedious and hard to do right. If you are writing something that must process tens of thousands of messages a day, do not think you can write it in an interpreted language and have it frequently converse with a database. If you think this will work, you are living in a magical dream world. I’m talking directly to you, Twitter, you poor sad whipping boy of the Web 2.0 universe. Please, for your own sake, rewrite Starling in C or C++ and use a more suitable back-end.

That concludes the synopsis of my multi-page rant of doom. Now, for the meta: if I were to write an essay for NPR’s This I Believe, the following would be that essay.

I believe in telling systems what I want, not how to get it, and having them give it to me as quickly as possible. I believe that programmers are lazy, and that middleware should give them the ability to do the right thing the easy way. I believe in intrinsic scalability and building on sound principles. I believe that the disk is evil and writing to it should be avoided until you have no other choice. I believe in most of what databases do and in the potential of what their descendant systems can and will do.

I believe in the awesome potential of automatic everything.


14
Aug 08

CD Recommendation of the Epoch

20 Minute Loop uses harmony as a weapon of mass catchiness. I approve. Here’s a taste:

20 Minute Loop – Our William Tell


25
Jul 08

Messing with Thom Yorke’s head

Radiohead’s latest music video was shot without cameras. Instead, they used a combination of reflected light and lasers to generate clouds of points in 3D. Google was nice enough to provide the rest of the world with some of the 3D point cloud data collected for that music video. A big piece of that data is about 2100 frames of lead singer Thom Yorke’s head. A frame of the original data (when output via Processing) looks like this:

If you look closely, you’ll notice that the point cloud is really noisy around the edges. A simple high-pass filter later and that same frame looks like this:

That’s a little more manageable. I figured, why stop at point when you can have 3D surfaces? One of the more straightforward ways to make a 3D surface out of a bunch of points is to stick a bunch of triangles in between the points, creating what’s called a Delaunay triangulation. This is a really compute-intensive calculation and I don’t exactly have a supercomputer on hand, so I did a lot of fudging and approximation. Even with all that fudging, each of these frames took as much as 5 minutes to render. This process has been running for most of last week while I’ve been at work. That same frame above looks like this when Delaunay-triangulated:

Notice that it’s a little noisy, which is mainly due to some approximation on my part as well as some leftover noise in the point cloud. The video below shows what happens when you sequence all 2100 frames together. Enjoy!


15
Jul 08

I own alexrasmussen.com

Booyah! My continued dominance of the ‘alex rasmussen’ Google search is assured!


12
Jul 08

This is the future – why are my updates still failing?

Software Updates are BrokenSo anyone who has an iPhone or iPod Touch will be pretty aware that Apple’s update servers basically fell over in response to all the demand today due to the new iPhone firmware. Recently, Firefox’s update servers suffered exactly the same problem. Now I’m sure that these guys have a really expensive load balancer in front of their update server cluster, but why in the world are so many major companies still having all their users go to a single place for updates?

If I want to download an update from Software Update today on my home computers, I have to do it three times - once for my Mac Mini (file server/backup server/media center), once for my laptop and once for my tower. The actual update binary is, in most cases, identical. If I wanted to only download the update once, I’d have to find where Software Update keeps the update’s installer file, copy it to the other machines and run it there. In some cases I have to download tens or hundreds of megabytes of file that could easily be transferred over my home network, saving both my time and the update provider’s money.

The thing that’s the most irritating about this is that it’s a completely solved problem. Blizzard, for example, distributes updates to World of Warcraft over Bittorrent. My roommate just started playing WoW again and had to install a patch (~2 GB) on two of his computers. He downloaded and installed the patch on the first computer, which took about an hour and a half. The download-and-install process for the second computer took all of about five minutes because the computer automatically recognized that a source for the update existed on its local network and downloaded the file peer-to-peer from the other machine.

Imagine if everyone interested in downloading the iPhone patch could download it not only from Apple but from each other. After the first few hundred downloads (which would have to pull directly from Apple) most of the remaining transfer would be peer-to-peer. If iTunes needs to authenticate the phone with Apple before installing, that’s fine; the load on the servers from authorization would be far lower and of a much shorter duration than the load from patch downloading. Security, of course, is an issue with Bittorrent-esque downloads, but there are relatively straightforward ways to deal with that.

I’m just saying it’s about time that someone did something about this, because it’s getting a little ridiculous.


01
May 08

Sonic 2 HD looks amazing

Apparently there’s a fan-made project that aims to redo all of Sonic 2′s sprites in HD while keeping the gameplay physics intact. Apparently Capcom’s doing this with Street Fighter 2 for some reason (don’t get me wrong, it looks amazing).

It’s a shame that, since Sega is incapable of making a good business move where Sonic is concerned these days, this will never be allowed to happen. Still, a guy can dream.


29
Apr 08

I’m not dead – eDeep is, though

So I received a cease-and-desist order from Jack Handey’s lawyer about a week and a half ago asking me to stop making Mr. Handey’s Deep Thoughts available for free. Not wanting to get sued, I immediately complied, and so eDeep is no more.

What impact has this had on alexras.info’s traffic? Let me show you my hits-per-day over time, courtesy of Google Analytics:

I think that sort of speaks for itself, don’t you?


25
Mar 08

Switching hosts

“Hey, everything’s all loopy!” I hear the two of you who still read this saying.

I decided that I was sick of Dreamhost’s crap (more on that later) so I’m transferring to Hostgator. As such, things are likely to be somewhat … turbulent … for a while.

Update: Most of the blog should be working now. Looks like I picked the right time, because my Dreamhost server’s filer is dead … again