Blog | Admin | Archives

Ten Years of Silverfir.net

More than ten years ago, I registered the silverfir.net domain name. From its humble beginnings as debian server at my parents house, to several stints at various friends’ houses, to the multi-state distributed network it is now (WA, CA, VA), it has served me and my friends well — and will continue to, long into the future.

In this time, silverfir has been the home of my blog and many friends’ blogs and personal website projects. Its various servers have served as file servers, a development platforms, web hosts, and learning devices. It has been hacked once, but there wasn’t much interesting to see, I’m glad to say.

From the whois records:

Domain Name: SILVERFIR.NET
Created On: 20-Mar-2003 00:01:37 UTC
Last Updated On: 25-Dec-2011 01:27:54 UTC
Expiration Date: 19-Mar-2015 23:01:37 UTC
Sponsoring Registrar: Vitalwerks Internet Solutions, LLC / No-IP.com
Registrant Name: McElroy, Ryan

Conurr: It’s alive!

Today, I played a game on Concurr for the first time in a long time.

I have learned so much through this process, and there’s still a lot more to build, but it’s good to have the basics back in place.

Stuff that works really well:

  • Chat
  • Move submission and cancellation
  • Clicking on map
  • Manual Tics

Short-term TODO list:

  • Lots of bugfixes
  • Get countdown clock setup again
  • Spawn tic daemon from main

Medium-term goals include:

  • Generalize the chat server long polling to send any type of game update
  • Following from above, more client-side rendering in general
  • Don’t assign home planets until game starts (instead of game join)
  • Stabilize colors by game join order (or selection process?)
  • List players in the game

Long-term goals:

  • Chat in lobby
  • Change all planets to have orbits instead of the current fixed map setup
  • Game fast-forward (if all players agree)
  • Game ending win condition

Given the limitations noted above, is anyone interested in a game? Let me know and we can set something up.

Reload screen config without restarting screen

This is one of the more useful linux-fu bits I’ve come across recently.

Arcanius Upgrades

I’m having trouble sleeping, and the server behind some of the websites I administer went down a few days ago, so I’ve been on an upgrade tear. I just moved this blog from the industrious-but-odd win7/vmware/ubuntu hybrid minimus to a amazon micro instance (free for a year!), presumably virtualized under something like Xen.

All the sites that I’ve moved to this EC2 instance are noticably faster, and Checksum Arcanius is no exception: page generation times seem to be about 10x faster (based on WordPress’s self-reported times at the bottom of the page), and the page load just feels much faster overall.

This is my first foray back into AWS since I played around with it during my Amazon internship in 2008. The experience has been incredibly positive. Amazon deserves tons of credit for what they’ve done with AWS.

The Hobbit & High Frame Rate

Today I went to the Metreon 16 Cinemas in Downtown San Francisco to watch the Hobbit with my CSE buddy Jonathan and another friend of his. We selected a show that boasted enhanced sound, a larger screen, high frame rate, and of course 3D.

First off, the movie was pretty bad. I would not recommend watching this for the movie itself. It dragged on with superfluous content that didn’t advance the stories or characters and seemed primarily designed to justify turning the book into three movies. The best part of the movie,  by far, you can see without even going the the theater — it was released as a trailer, below:

Save yourself the money and just watch that a few times unless you’re really interested in the latest movie technology.

Despite being a failure as a compelling telling of a story, the movie was a success in one way: it was a technological tour de force. What intrigued me the most about the billing was the high frame rate (HFR), a doubling of the normal 24 frames per second of traditional cinema to 48 frames per second. I was watching for it and the result is very good: the many big camera pans over lush landscapes appeared much smoother and much nicer visually. I’ve always been distracted by the jerkiness of 24 frame per second movies during panning. I hope this or an even higher frame rate becomes the new norm.

Again, the technology really shined in the sound arena as well. Apart from being considerably too loud — which I blame the theater for, not the movie — the sound system was still the best I’ve encountered. At one point, in a cave full of snoring dwarves, we all thought we heard someone directly to our right start snoring (Jonathan even turned to see if it was me!). Alas, it was just a better-than-average sound localization. Listening more carefully, I definitely could localize sounds to specific places in the theater much better than I recall being possible normally.

The 3D with the circularly polarized glasses was excellent as usual.

Too bad the movie sucked.

Where is the missing library supposed to live?

For about a month, I was living with a constant stream of warnings whenever I ran a common command at work. While it didn’t make me less productive, since it didn’t affect any functionality I needed, it annoyed me and it bothered me that I didn’t know how to fix it the right way. The error I was getting was a warning about a dynamic library not able to be loaded even though the library existed on the system. Furthermore, when I ran `ldd` on the binary, the dynamic library wasn’t listed.

A quick hack was to find the library and set LD_LIBRARY_PATH to override the normal include paths. However, this didn’t work for automated scripts run from cron without some wrapper to set up the environment, and it felt very hacky anyway. What I wanted to do is find where the system was looking for the library that it couldn’t find so I could put the library in the right place (or at least set up a symlink).

Today, I decided to figure it out, and through some searching I came across this treasure trove that exactly explained the problem and the solution.  Basically, the issue is that linux binaries (including libraries) have an rpath where they look for their shared objects. Setting LD_LIBRARY_PATH overrides this, but as I said, it’s a hack. To figure out the rpath, simply run:

readelf -d <path/to/binary> | grep RPATH

You can run this on any executable or library, so even if a library includes another library, you can just follow the path down until you find where the system is looking for the missing library and fix the problem.

Instantly Social

Facebook’s announcements at f8 earlier today have made socializing any website trivial — instantly. You don’t even need to know how to program. Just add an iframe — one line of html — and you can make your website have an instant social presence. I hacked in the widget just now on my site in a matter of minutes.

This is the one line I added to my blog’s template, in single.php:

<iframe src="http://www.facebook.com/widgets/like.php?show_faces=1&amp;href=<?php
the_permalink() ?>" frameborder="0" scrolling="no" height="61"></iframe>