Earlier this year, I gave a short talk at OSHUG about the BSD family of operating systems to a group of open hardware enthusiasts. I previously wrote about the event here
The videos from the event are now available on youtube
The Plan9 from Bell Labs paper discusses serving files and the central server used in their scenario:
“The central server in our installation has about 100 megabytes of memory buffer, 27 gigabytes of magnetic disks, and 350 gigabytes of bulk storage in a write-once-read-many (WORM) jukebox.”
The paper goes onto describe their use of this storage setup to demonstrate the ability to do dumps of file systems for backups & recovering or interacting with previous changes in Plan9, finishing with
“Our WORM has served a community of about 50 users for five years and has absorbed daily dumps, consuming a total of 65% of the storage in the jukebox. In that time, the manufacturer has improved the technology, doubling the capacity of the individual disks. If we were to upgrade to the new media, we would have more free space than in the original empty jukebox. Technology has created storage faster than we can use it”.
Mind blown today by the Plan9 tools as I got a chance to practice working in acme more today.
Browsing installed fonts exposed by
fontsrv(1) as a file system using
9p(1) (a taste of treating everything as a file), using
adict(1) which is a dictionary browser &
win(1) which connects a shell with a pane in acme so anything you type into that pane is sent to shell & any output from the shell is sent back to the pane. This allows you to do such things as build notes as you work through a problem at the same time, without having to have a collection step as a part of your work flow.
I love the simplicity & elegance of this environment, the points raised above is essentially what is covered in the tour of Acme Editor by Ross Cox in the 2nd third part.
I’ve been trying different fonts for my terminal, currently between Inconsolata & Adobe Source Code Pro
Screenshot below is taken from 2 instances of Acme, one the left running with Inconsolata 19pt antialiased font & one the right Adobe Source Code Pro 17pt antialiased.
Back in late October of last year The Setup published an interview with Rob Pikes, in this interview he discussed the acme editor from Plan9 which he described as a editor-shell-IDE-oddball with a link to a screen cast by Plan9 from User Space maintainer Ross Cox demonstrating some of acmes features.
I decided to give it a try & downloaded the source code to build on Mac OS X & I was running acme in without any build issues.
As you’ll hear mentioned in the video, acme was designed with a three button mouse in mind, I was on single button old MacBook Pro with a trackpad. I found it difficult to follow the video as I couldn’t work out how what was what, using the keyboard to modify a single click behavior.
I dug out a three button mouse & things went much better using that, but now I was in a situation where I had several pointing devices on my desk which I didn’t fancy switching between depending on the application I happen to be running.
So I gave up on acme on Mac OS & tried it on my ThinkPad, I was unable to compile
devel/plan9port on FreeBSD-CURRENT back then & revisiting last night it still appears to be broken in the release from the 5/1/2013, I switched to Windows & attempted to install inferno but didn’t have much luck with the build process there either, searching around I came across acme-sac which is a standalone bundle of the acme editor taken from inferno with pre-compiled binaries available. Only problem then was that as I do not work in windows normally I rarely got a chance to fire it up & eventually forgot about running it all together.
I’m currently in Moscow & enjoying the Russian new year holiday, as I have spare time I decided to revisit acme again & see if I could find out how to interact with acme using a single button mouse on an Apple pointing device.
On Mac OS, the button on your magic device or trackpad on your laptop = button 1, alt + click = a button 2, ctrl + click = button 3.
You can reproduce the display of labels shown in the video demo by declaring
It seems that it’s not currently possible to address the issue of a 2-1 cord, which allows you to pass arguments to commands. This is where you hold button 2 & press button 1, it’s not a show stopper as you can work around the issue but merging the text you want to connect together before executing on a scratch area.
Now that I am not trying to perform actions which cannot be done with a single button, I’m at a level where I can copy/cut/paste, search, pipe text in & out of commands & save edited text.
So for example I’m able to write a basic hello world program, write it out to a file, pass the file to a compiler, execute the produced executable & display it all within acme.
Note: Plan9 from userspace comes with its own version of some common tools which depending on how you search path is declared in your shell, may override your existing tools that you’re familiar with eg diff, man & ls.