Tuesday, July 14, 2009

Need a new machine

I recently posted to 9fans that I think I would like to get a new dedicated plan 9 box.

Here's my wish list:

  • Small footprint
  • Low power consumption
  • Connection to a large amount of storage, perhaps a 1TB disk external if I can configure it as such.
  • Good Plan 9 support
  • Low cost
I'm finding people are migrating towards dual core Intel Atom boards. This seems like a reasonable start. SATA disks would be nice, and Solid State Disk (SSD) would be even better on the SATA interfaces. Sound support is really not needed, as I'm never in my office, and there's plenty of good USB sound devices out there it seems, like these Turtle Beach Audio Advantage Devices. So adding that later isn't going to be very difficult.

I was kind of disappointed recently to find my old trusty AMD box's CMOS battery was dead, and that I had to do a lot of interesting memory searching to remember some of the configuration I had in the BIOS to even get FreeBSD running again. Then when I tried to load a recent Plan 9 (new 9load based) it wouldn't even find anything to boot from but bios0 and fd0.

This machine's floppy drive is shot, and bios0 is the first hard disk in the machine, so that's not going to work when I'm trying to boot/install from a CD....

The key is I've got to get a low-cost machine... I just don't have a ton of money to throw around these days.

In the meantime I've been doing well with VMWare Fusion 2.x on Mac OS X to get a terminal server running. But I don't like using that for long term stuff.

One day, I might see what it would take to get Plan 9 ported to what seems like will be inevitable quad core ARM servers. Then perhaps I'll take a swing at a port. Plan 9 seems like a great OS for a platform such as that. Might be easier to get Inferno going though depending on the hardware.

Fun Distraction


As you can tell I like Plan 9. I recently have been trying to catch up with the latest developments in that OS. There's been a new USB driver, new 9load bootloader (which probably ought to be replaced with just the main kernel, and that is currently a summer of code project for google), and linuxemu.

That last one is really interesting. Apparently Russ Cox, and cinap_lenrek have each taken a swipe at making Plan 9 emulate Linux system calls. This is pretty cool in that we can now run a lot of linux programs directly on plan 9, and, in fact, are able to even run Debian complete with apt-get inside a little sandbox.

On top of that fgb actually ported an X11 server to APE (the POSIX compatibility layer for Plan 9) to use libdraw as a graphics backend. (it's called "equis"). Put that together with linuxemu and you can run Mozilla, Firefox, Opera etc, right in Plan 9.

I got some help getting it up and running from cinap, and after getting font files I was missing, I've got Mozilla up in Plan 9. I told him I was reasonably impressed with the speed, though he informed me that each Linux system call ends up being 4 on plan 9. I'm not sure what can really be done about that at the moment, but this instantly gives plan 9 users a capability they didn't have before - reasonable web browser access.

Now I wonder if when Google's Chrome OS comes out if we'll be able to use that and not need X at all....



Wednesday, July 8, 2009

Not quite dead

http://code.google.com/p/9ph/ is where I've stored what I've got so far for my 9p in Haskell implementation. It's incredibly larval, if not fetal at this point and doesn't do much.

In fact, I'm not even convinced I like what I've written at all so far, but it is true, that I can negotiate the TVersion/RVersion client-connect requests of a 9p2000 client to a 9p2000 server.

I've been having a very busy summer, full of family fun, and various work projects. I've been having to spend any of my extra time that does crop up on work related work as there's always more to do...

I'm still hopeful for this project, plus the new capabilities of cross compiling Haskell code from the JHC compiler to the iPhone (it can use a gcc backend that is the native iPhone compiler). If JHC would support more of GHC's capabiliteis, I'd be in business to do some interesting 9p related projects from the iPhone to varying Plan 9 or Inferno or any 9p2000 service.

It's rather exciting really. Especially when you consider how I'd really like to have a litghtweight IRC filesystem client (uses 9p2000) to my Inferno box, running on a Linksys router. Two lightweight systems running a distributed application with a sane protocol in between == beauty.

... I'll get there one day.

Wednesday, June 3, 2009

Success

Made progress on Tversion/Rversion comms. It works. It was a matter of using the correct decoder... big D'oh, on my part.

Next is the hard stuff.

And first I have business travel to contend with, for the first time in a while.

Monday, June 1, 2009

Progress

Sometimes I just need to RTFM closer.

I just discovered the problem in my 9P haskell lib is really just that the data portion of every 9p "s" message has it's own size header (16bit).

Tversion encode and send now works via Nine.hs as a client. I am able to get the Rversion reply back and verify that it is NOT Rerror, but only visually by inspecting a hex dump as my instance of "Binary" does not succeed in "get"ting the response appropriately.

Still, I consider this progress.

I've decided to call this little project 9ph for now, (9p in haskell)

Thursday, May 28, 2009

Progress

With much help from folks on haskell-cafe, I've got a basic utility Haskell module under development (Nine.hs) for trying to make unauthenticated connections to Styx servers from Haskell.

So far it's not quite right, but I can marshall a little-endian encoded stream of a Tversion message (I think... need to debug on the Inferno side a bit too.)

More later, hopefully.

Friday, May 22, 2009

What I'm up to at least dreaming about doing.

For the last year or so I've been following and writing some code in the Haskell programming language, specifically using the GHC compiler, on Mac OS X, Linux and Windows. I've been using it in simulations at work for a remote computer hardware management system we've been developing, and it's been quite fruitful.

Also, we've been developing a management software package at work that deals with namespaces of resources rather than a static class library Object Oriented Model, which can become very difficult to design appropriately or extend as the needs of the organization, and our customers, evolve over time. We aimed to make a project that uses a very simple interface to complex management systems, and I think we're succeeding quite well.

On top of all of this I've also been coding in Erlang for a bit of time now (about 2 years and 1.5 of those professionally) and I've found that designing systems as if they're distributed from the get go really helps one fit into the new trendy SOA models everyone wants you to think about in industry these days (It's just client server architecture with a lot of marketing as far as I can tell).

I've also been using systems based on a distributed design like Plan 9 and Inferno as much as I can work them into my life these days. Sadly that seems to have fallen back to *only* the use of an IRC file system for Inferno - a cool concept, think about how the popular UNIX "screen" program works with sessions you can detach and re-attach to, but do it over a system-wide ubiquitous file system protocol (9p).

I've worked with 9p client libraries written in C, Python, Java and other languages, but I've yet to see on for Haskell or Erlang for that matter. Perhaps someone should do something about that... (perhaps I will, time is not something I have an abundance of for this stuff these days).

One thing I would love to be able to do is fire up an iPhone application that had an embedded 9p client, and connect to the irc file system and use it. Another interesting approach would be to try to implement the Octopus client on the iPhone OS, and just use that to connect to running programs on a centralized server.

These days I wish I could just take a paid sabbatical from work and do these things, as spare time is hard to come by.