First Soundbridge Widgets

In the previous post I described how to use Netpbm images to display icons on the display of a Roku Soundbridge.

Today I made some progress writing some display ‘scriptlets’. I now have various screens that display network traffic statistics, for example:

And also weather, without icons for now…

The scripts that produces these screens are all in a directory on my main Linux box. A daemon process iterates over all scripts and executes each of them to produce a screen. The output of the scripts is piped to netcat, like described in the previous post, to send each screen to the Roku.

Roku Soundbridge

Last week I stumbled upon a second-hand Roku Soundbridge M1001 network music player, with a nice 280x16 pixel VFD (vacuum fluorescent display.)

I don’t necessarily need another music payer, but I might still patch a long S/PDIF coax to the amplifier on the other side of the room later on. It seems to work pretty well as a music player, indeed.

I was mainly interested in using the VFD to display things like the weather forecasts, syslog warnings, etc.

The great thing about the Soundbridge is that the people that designed it have spent quite some time implementing a nice command set to draw on the display. There are commands for drawing points, rectangles, text in various fonts, etc. Actually everything that you need to use the Roku as a universal display for just about any kind of information that you can think of.

Even though it is not finished yet, as you can see from the image, the Roku already found a prominent place on the wall in my living room.

A bit of pencil and paper design, ugly text files and abuse of netcat later and I ended up with this:

Updated Mac2vendor

I have just updated mac2vendor to a new version. The previous version used Google Fusion Tables for data storage, but I found this easy to maintain. I have now changed it to static data on my webserver, that can easily be updated through a cron job.

Also this version fixes a nasty bug that could make the page reload on entering data, deleting your input in the proces.

Autonomous Robot

Christmas holiday! So time to spend on projects again. One of the projects that have been in the fridge for far too long is an autonomous mobile robot that I’m working on.

Eventually, it will use stereo vision to navigate, but for now I’m still in the early steps of making it move at all.

Gsmtool Is Online

After mac2vendor another old tool that I made is back online on the new site. Gsmtool is back new and improved. This tool lets you lookup which operator a GSM IMSI number belongs to or list all the Mobile Network Codes for a certain Mobile Country Code.

Bash Lambda Expressions

While strictly not a true lambda expression, the Bash function:

# lambda 'anonymous function' arg1 ... argn
function lambda() {
  _f=${1}; shift;
  function _l {
      eval "${_f}";
  }; _l ${*} ; unset _l;

lets you use something that works similar to lambda expressions in your Bash scripts.

As you can see, it is a bit like an eval on steroids, because of the function wrapper, it lets you use positional parameters which aren’t available in a plain eval and all the Bash power that stems from those.

Mandelbrot Set in Awk

This week I travelled by train, which meant I had some time to kill. And what better way to do it than playing with pretty colors in the shell. One thing led to another and finally to:

Awkbrot! Mandelbrot sets generated by awk, with pretty terminal colors. ;-)

Mac2vendor Reborn

Mac2vendor is one of the first tools based on dynamic content to return to the new website.

The new version uses Google’s Fusion Tables as its data source. Both jQuery and Fusion Tables gave me some headaches, so it is probably not too solid yet, but it will probably improve over time.

Also, the parsing of MAC address formats is very, very dirty still. Need to think of an elegant way to do that in Javascript.

Isquared 2005-2012

After some glitches getting nginx to work with IPv6 the new Octopress based is online!

For the occasion I did some digital archeology and found the 2005 version of this website back on, first archived at 2007, it seems. That page was an attempt to have a uinique visual design, but it was a pain to maintain and it had terrible rendering inconsistencies between browsers. Also it was a pain to fit content in the layout.

Enter early 2008, the previous design. The first version was based on thttpd and, I believe, Perl CGI on a Cobalt Qube. That did not perform very well due to lack of caching. The second revision was based on HTML::Mason and Apache with mod_perl, using the same layout. And it lasted until yesterday. ;)

So now we’re running with static pages generated by octopress on nginx. The only thing that is open for now is how I’ll reimplement the tools that require dynamic content. Probably I will rewrite them using an API server that I made a start with in the past.

New Webpage

This webpage hasn’t seen much activity in the past year. One of the reasons is that the homebrew content management system that I’ve been using was hindering me more than it should.

Another reason is Twitter, it’s much more convenient to send a quick tweet than to update my own page. Still, some things just beg for more than 140 characters. And that is the reason that I’m keeping this page as a blog.

To make it easier to update the blog, I’m switching to Octopress to manage its content. The good thing about this is that Octopress is generating static content, which makes it a lot easier to host its pages. My homegrown CMS was based on HTML::Mason and SQLite as its database engine. It worked, but it lacked important features like previewing new content before publishing, Octopress fixes that for me.

The only problem that the switch creates is that tools like mac2vendor require server side scripting and these still need to be migrated.

And then there is a little issue of breaking the old links. Probably this is fixable with an nginx config to send 301’s for the old URL’s.