Next Semester Projects

Seeing as I’m going to have no homework for the next semester (!!) I’m hoping to get some more projects underway in my down time. I’m going to use this post as a dump of my current interests and as a road-map for where I want to go in the next few months. I’m sure this will change as time goes on, but I need to start somewhere!

Projects in progress:

  • FANG – I’d like to polish the multi-processing system, add namespaces, and tie it into the Erlang stdlib. Also add macros (real macros!) to FANG.
  • OSP – I’m going to be using OSP as a basis for LadieBug (mentioned below). This will hopefully give me perspective into what I should work on in OSP to make it more friendly for development.

New projects:

  • I’d like to take advantage of LaunchPad’s ‘Personal Package Archive’ system to host a few of my own Ubuntu packages, namely a more up-to-date version of Erlang’s OTP system.
  • LadieBug – To take advantage of OSP’s distributed data store, I’d like to implement my own caching, recursive DNS server that would be both DNSSEC and DNSCurve compliant and would share the cache over the entire cluster, making it more scalable and reduce the number of needless queries.

That’s about all I can think of at the moment, if anyone would like to help me on any of these, feel free to comment below and we can get in touch.

Peace and chow,


Happy Holidays

Just taking a quick break from my holiday festivity preparations to wish everyone a happy holiday season, regardless of what that is, or what that means to you. I will hopefully will be posting some news about my projects, and other exciting technical ventures soon, so hang tight.

Peace and chow,


Dying Gracefully

Dear Software Industry,

In this world, there is only a few hard and fast rules, of those, I’m going to talk about the impermanence and flux inherent of life and death. Sometimes it’s time for things to be laid to rest, and move on to bigger and better things, still keeping memories of that which came before. When I finally have reach my end-of-life period, and am no longer supported, I’d like to think that I’ll be able to accept it, and move on peacefully, hopefully leaving the world a better place than I found it. I would also like to think that everyone out there has a similar goal: to live for what they believe in, and move on when the time comes, leaving a good mark on the world.

Alas, there are a number of things that don’t follow this benevolent rule that I call ‘Dying Gracefully’: software and DRM restriction systems. While I’m not going to delve into the legally convoluted cesspit of DRM, I think it should be mentioned as the internet and the digital platform for content delivery starts on the next generation, that we respect our forebears and let them rest in peace, free to be shared by all. There are more and more stories in the news about subscription media services shutting down and leaving their customers with unusable music, force to buy the music over again, or resort to illegal DRM removal techniques. The same goes for software that is still perfectly functional, but unattainable because it’s been killed by its parent company, or the company no longer exists.

Should we not give our software the same honor of leaving a good impact on the world by releasing it as open-source when its developers no longer care to support it, giving it both a second chance at life after death, and a chance to be used by anyone and everyone. It leaves a sour taste in my mouth when I think of the consumers who got cheated out of their music because a corporation decided not to support the DRM system any longer. Would it be the end of the world to release the DRM keys to unlock the songs entombed forever by the shackles of DRM when you have no intention of using those keys to profit?

As a member of this capitalist society, I understand that open-source isn’t always the answer (though I wish it were), but I fail to see the logic in burying your old creations, never to be used, but ensuring no one else can either. This idea of “I don’t want this, but I don’t want you to have it either” reminds me of the petty arguments that toddlers have with toys; is this what our software industry has reduced itself to, a bunch of squabbling three year-olds?

Perhaps being a young lad, I fail to see the reasoning of burying your dead in a locked cemetery, where no one can see the tombstone, and remember what they gave to the world. Call me an ignorant philistine if you disagree, but I fail to see the logic (which is what software is) in this silly and petty act.


Jacob Torrey

My Minimalist Firefox Configuration

After installing the new beta of Firefox 3.1, I spent some time tinkering with it to get as much screen real estate as possible, using keyboard shortcuts instead of buttons. Here is a screen shot of my browser in full-screen mode (hit F11 to access). I also wrote a script to automatically update the install.rdf files in extensions so they’ll work in the new beta. As you can see, I was able to:

  • Remove the scroll-bars
  • Remove the menu bar
  • Remove the address bar and all the buttons

Which left just the button status bar (which is easy to remove from the view menu) and the tab bar which auto hides unless you mouse over it. To remove these unneeded UI elements, I followed the following steps:

  1. To remove the scroll-bars, open %FIREFOXHOME%/chrome/classic.jar and navigate to /skin/classic/global/, then edit the file scrollbars.css, replacing:
    scrollbar {
    -moz-appearance: scrollbartrack-horizontal;
    -moz-binding: url("chrome://global/content/bindings/scrollbar.xml#scrollbar");
    cursor: default;
    background: url("chrome://global/skin/scrollbar/slider.gif") scrollbar;
    -moz-appearance: scrollbartrack-vertical;

    scrollbar {
    display: none;
    -moz-appearance: none;
    Then save those changes and re-jar the file.
  2. To remove the bars at the top, simply right click on the blank space on the menu bar and uncheck all the options.
  3. To remove the menu bar, you’ll need to install this extension which will make the menu bar hide (which you can toggle with the alt key)

Now you should have a minimalist Firefox setup for maximum viewing pleasure. Some important keyboard shortcuts are listed below:

  • <CTRL>-T – Open a new tab
  • <CTRL>-L – Navigate to a URL
  • <CTRL>-<TAB> – Switch between tabs
  • <CTRL>-W – Close a tab
  • <CTRL>-<SHIFT>-T – Open a recently closed tab
  • <ALT>-<HOME> – Go home
  • <ALT>-<RIGHTARROW> – Go forward
  • <ALT>-<LEFTARROW> – Go back
  • <ESC> – Stop a page from reloading
  • F5 or <CTRL>-R – Reload a page

Hope you find this useful, if you have comments or other setups you like, feel free to comment below.

Peace and chow,


FANG Version 0.1 Released!

I spent my birthday yesterday polishing up FANG for it’s initial release to the public, after adding some error handling so it would fail more gracefully and adding the ability to parse in files and save the current state of the system to a file for later retrieval. I also did away with the rather hideous use of the process dictionary and moved to an auto balanced tree structure for storing the data.

Over break, I’m hoping to add enough other features to warrant a 0.2 release, which I’d like to have support for soft-processes (ala Erlang), multi-node support and transactional shared memory (using Mnesia). I would also like to add permissions and process jailing for the soft-processes to allow for running untrusted code in a sandbox of sorts.

I’ve started a very simple (and ugly) site to put my progress and releases. You can check it out here and please comment with suggestions or other features you’d think would be a valuable addition. Good luck on everyone’s finals and projects! Have a wonderful break!

Peace and chow,