If you’re not subscribed to the text blog…

Posted in News, General (July 27, 2007 at 1:15 am)

You oughta be!

What you get:
* Exclusive interviews and bonus audio from shows.
* A heads up on things worth knowing about from comedy to music to everything else.
* A delightful sense of…



[[ This is a content summary only. Visit www.maximumfun.org for full links, other content, and more! ]]

We Feel Fine in Virtual Reality

Posted in News, General, blogging (May 9, 2007 at 1:14 am)

When was the last time you used a phone book? How do you find where some place is in a new city? How do you check a fact quickly? Where is your dictionary? I spend a lot of time online doing things. I have for years. That’s so 1990s.

This week I talked to a man in Nairobi. He’s working to save the last 700 mountain gorillas. I spoke to a young man in New Jersey who made his first business cards about his is first ebook cover. I helped a woman in Singapore who’s becoming a healthcare professional.

I’ve realized something.

We starting to live online. We don’t just leave comments. We don’t just pass disjointed sentences in chat rooms. We talk about dreams for the future. We talk about how to make the world better. We tell stories. We commiserate over our faults and share our glories. We give support in emergencies. Sometimes we even tell our deepest feelings.

We feel fine.

Jonathan Harris and Sep Kamvar saw it long before I did.

They captured real people talking, thinking, sharing feelings in real time on the Internet. How much closer to reality can you get than that?

open-we-feel-fine.Jpg

Real people answering back.

Every day I see my friends. We talk. We think. We share our feelings.

I say I live inside their computers.

We are in virtual reality.

Liz Strauss, writes her thoughts and dreams, and tells stories on Successful-Blog.

Work arounds for licensing pain

Posted in News, General (May 2, 2007 at 1:18 am)

I got a question from a reader about a licensing issue, I have no idea on, so I thought I'd throw it out here to see what people think and what ideas they have. Here's the lay of the land:

William bought a PC a while back that included an OEM license for […]

Silly Perl thoughts…

Posted in General (April 27, 2007 at 1:13 am)

A simple script to show a table of contents like view of a latex file. I could make a couple of assumptions about the input based on my setup. My first attempt which is probably somewhere on my blog looked like this:

Perl:
  1. if($#ARGV > 0) { $in_file_name = shift; }
  2. else { $in_file_name = “thesis.tex”; }
  3.  
  4. sub read_file
  5. {       
  6.     my $file_name = shift;
  7.     local *IN;
  8.     open IN, “<$file_name”;
  9.  
  10.     while(<IN>) {
  11.         if(/^\\chapter.?{(.+?)}/) {print “——————–\n$1\n;}
  12.         elsif(/^\\section.?{(.+?)}/) {print ” . . $1\n;}
  13.         elsif(/^\\subsection.?{(.+?)}/) {print ” . . . . $1\n;}
  14.         elsif(/^\\subsubsection.?{(.+?)}/) {print ” . . . . . . $1\n;}
  15.         elsif(/^\\paragraph.?{(.+?)}/) {print ” . . . . . . . . $1\n;}
  16.         elsif(/^\\input{(.+?)}/) {read_file($1);}
  17.     }
  18.  
  19.     close IN;
  20. }   
  21.  
  22. read_file($in_file_name);

A classic recursive solution using a function. I had a quick play today and produced this:

Perl:
  1. #!perl -n
  2.  
  3. /^\\chapter.?{(.+?)}/       and print “-” x20 . \n$1\n or
  4. /^\\section.?{(.+?)}/       and print ” .” x2 . ” $1\n or
  5. /^\\subsection.?{(.+?)}/    and print ” .” x4 . ” $1\n or
  6. /^\\subsubsection.?{(.+?)}/ and print ” .” x6 . ” $1\n or
  7. /^\\paragraph.?{(.+?)}/     and print ” .” x8 . ” $1\n or
  8. /^\\input{(.+?)}/           and system “perl list_sections2.pl $1″;

Which is a lot more compact. It’s almost inefficient, but this doesn’t really matter for this problem (or at least the input I have).

Which one feels more Perl-y?

Or should I just give up on Perl and go back to my Pythonic ways?

Silly Perl thoughts…

Posted in General (April 26, 2007 at 1:13 am)

A simple script to show a table of contents like view of a latex file. I could make a couple of assumptions about the input based on my setup. My first attempt which is probably somewhere on my blog looked like this:

Perl:
  1. if($#ARGV > 0) { $in_file_name = shift; }
  2. else { $in_file_name = “thesis.tex”; }
  3.  
  4. sub read_file
  5. {       
  6.     my $file_name = shift;
  7.     local *IN;
  8.     open IN, “<$file_name”;
  9.  
  10.     while(<IN>) {
  11.         if(/^\\chapter.?{(.+?)}/) {print “——————–\n$1\n;}
  12.         elsif(/^\\section.?{(.+?)}/) {print ” . . $1\n;}
  13.         elsif(/^\\subsection.?{(.+?)}/) {print ” . . . . $1\n;}
  14.         elsif(/^\\subsubsection.?{(.+?)}/) {print ” . . . . . . $1\n;}
  15.         elsif(/^\\paragraph.?{(.+?)}/) {print ” . . . . . . . . $1\n;}
  16.         elsif(/^\\input{(.+?)}/) {read_file($1);}
  17.     }
  18.  
  19.     close IN;
  20. }   
  21.  
  22. read_file($in_file_name);

A classic recursive solution using a function. I had a quick play today and produced this:

Perl:
  1. #!perl -n
  2.  
  3. /^\\chapter.?{(.+?)}/       and print “-” x20 . \n$1\n or
  4. /^\\section.?{(.+?)}/       and print ” .” x2 . ” $1\n or
  5. /^\\subsection.?{(.+?)}/    and print ” .” x4 . ” $1\n or
  6. /^\\subsubsection.?{(.+?)}/ and print ” .” x6 . ” $1\n or
  7. /^\\paragraph.?{(.+?)}/     and print ” .” x8 . ” $1\n or
  8. /^\\input{(.+?)}/           and system “perl list_sections2.pl $1″;

Which is a lot more compact. It’s almost inefficient, but this doesn’t really matter for this problem (or at least the input I have).

Which one feels more Perl-y?

Or should I just give up on Perl and go back to my Pythonic ways?

Debian Etch and apt-proxy issues

Posted in News, General, WLUG, NSP (April 17, 2007 at 1:14 am)

Debian Etch (4.0) was released on Monday, and I have to say I wasn’t at all prepared. I’ve got about 70 machines that will probably need to be upgraded to Etch at some point in the near future. I could leave some of them running sarge, but I’ll definitely have to upgrade most of these servers.

We use an apt-proxy internally, to improve apt performance. It works well, aside from a couple of bugs that cause it to lock up every now and then. While running some upgrades on out of the way servers today, I discovered that the version of apt in sarge really doesn’t play very nicely with an etch repository served by apt-proxy running on an etch server. It seems that Ubuntu is fine, and trying to update a sarge server via an apt-proxy running on an etch server is ok too.

Once the etch client has been upgraded, the etch apt-proxy works fine. So, looks like a key issue. The version of apt in sarge doesn’t have the archive security stuff in it, and has no way of checking whether the keys are intact - BUT, it still seems to care, and will timeout and eventually fail.

It turns out that installing a copy of apt from the sarge backports solves this. You’ll also need the gnupg package, but the one from sarge is OK

wget http://backports.org/debian/pool/main/a/apt/apt_0.6.46.4-0.1~bpo.1_i386.deb
wget http://backports.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2006.11.22~bpo.2_all.deb
dpkg -i *.deb
apt-get update

Travelling

Posted in News, General, WLUG / LinuxNZ (April 1, 2007 at 5:54 am)

In just a few hours, I’m hopping on Emirates flight EK433 from Auckland to Singpore, to start the first leg of my trip to Dublin. I’ll be travelling for pretty much the next month, so if you’re trying to get hold of me please don’t be offended if I take several days to reply.

Kat and I have setup another blog to detail our travels, and I’ll try and keep this blog free of too much personal stuff so as to not clutter the various planets that it is syndicated to. If you’re interested in our travels and what we are up to then head over to http://www.mattandkatbrown.com.

There is also a calendar at mattandkatbrown.com if you’re wanting to try and meet up with me for keysigning, etc.

Fragmenting IP

Posted in News, General, Networking (March 22, 2007 at 1:23 am)

When fragmenting IP packets, you usually split the packets up into "n-1" pMTU sized packets, and 1 packet of the remainder.  Now with wireless networks the larger the packet is the more likely it is to be lost/corrupted.  I suspect it would make more sense to fragment packets into equal sized pieces, so totlen/n bytes each.  Most routing overhead is per packet, and the total number of packets hasn't been changed.  Also this would tend to avoid so many pMTU issues as your packets are probably going to less than pMTU sized.

The Windows console

Posted in News, General (March 21, 2007 at 11:40 pm)

So Windows (XP and 2k and any reasonable version, anyway) has cmd.exe. cmd.exe mostly does the trick: you can do basic shell-like stuff like use pipes, you can select, copy, and paste text, you can change the font, change buffer length, and search through your command history for a previous command (try F8).

But pretty much every feature I’ve mentioned above is sub-par; some of them are worse than others. For example:

You can’t resize the terminal horizontally by dragging the border of the window — you need to set terminal width in the options, then the terminal width is a fixed size and the window size can be changed around it (you end up with a horizontal scroll bar).
The command interpreter is pretty basic compared to an alternative like bash.
Copy and paste is crap. It is annoying to select stuff in the window - for some reason the only selection model is with a rectangle, which is not inline with any other application on the planet. I don’t believe there is any keyboard shortcut to paste.
The fonts you can use are very limited.
While there is F8 to search the command history, basic editing of the command-line is nowhere near as powerful as readline-based applications (like you are used to on Linux).

I guess there are actually 2 parts to the problem: the window which does the display, and the console application which runs the actual command interpreter. I’m a little unsure how this is actually broken down in Windows, in Linux it might be xterm+bash.

There are quite a few replacements around:

terminator
Console version 2 beta
Poderosa
Cygwin + rxvt

But none of them quite do what one might want. A simple replacement that doesn’t change things too much, just makes general cmd.exe use nicer is required. So selection needs to be fixed, window resizing could be helped, and with an option for readline-supported command-line editing.

Is that too much to ask?

Backspace in Firefox 2

Posted in News, General, WLUG ( at 11:33 pm)

As part of my upgrade to Edgy the other day, Firefox was upgraded to 2.0. It’s been upgraded every day since then, and is I think finally running a real 2.0 build
$ apt-cache show firefox | grep Version
Version: 2.0+0dfsg-0ubuntu3
The biggest interface changes I’ve noticed to Firefox 2 so far include some cosmetic changes to the tab panel layout, which I’m mostly used to, and the ‘backspace’ button now no longer steps backwards in your history.
This behaviour is controllable via about:config however. Setting the following will revert to the old behaviour.
browser.backspace_action = 0

Operating Systems

Posted in News, General ( at 4:35 pm)

Recently I've been looking at Inferno and reading a bit about Plan 9 (there seems to be a lot written about Plan 9, and barely anything written about Inferno).  Some of their ideas just really blew me away.  I understood that everything was a file, and I understood that you could export things over 9P/Styx, and I knew that you could build up your own namespace.  What I didn't realise was just how cool this is!

Want to use the CDROM drive in that machine over there?  Go mount it's device locally
Your window manager provides windows as files.  If you move them over the network, then you have remote display
Your text editor provides it's world as a file, you can control it like that.
Want to debug a process remotely?  Just mount /proc over the network and attach a debugger to it.
Networking is done via files, so want to use someone elses networing?  Go mount their stuff locally!
You can mount arbitary shell commands! neat!  This is how ftpfs and friends work.  Why oh why don't other OS's have FTPFSes?

I can't help but think tho, that there is something missing.  I can move files around a network, but I can't move processes.  Inferno has a virtual machine to abstract the hardware away, it's filesystem can abstract everything else away, but I can't move processes?
I want it so you don't ever "quit" an application, you can "close" it, but all that ever does is serialise the process to disk.  When you run it again you just thaw the process and start up where it left off.
I want processes to be "checkpointed" like you would "autosave" today. Power outage? Thats ok, when the machine comes up again, you can revive your last checkpoint and continue from where you left off.   If a process crashes you can restore it back to any previous checkpoint.
I want processes to migrate!  I want to goto work and be able to pull my webbrowser to my machine at work and continue running it.  Sure networking will have to round trip via my machine at home, but that's doable already with plan9 (see above).
When I shutdown my laptop, I want all my running programs to migrate onto my fileserver at home.  There they might be serialised to disk, or they might continue running while I'm away.  My IM client might be designed with two halves, a UI part which migrates onto my phone (via bluetooth) and the actual program which migrates to my file server (or desktop) and continues to communicate with it's UI thread over GPRS.
I want this to use my "Internet Drive" for disk storage.  I want to write programs for this in a programming language like I described two posts ago.   I want a pony.

Edgy Eft RC1 announced

Posted in News, General, WLUG ( at 3:54 pm)

After seeing this announcement for the Edgy Eft RC1 release, I decided to upgrade my Dapper laptop to Edgy. Thanks to the NZ mirror already being up to date, it didn’t take long to download the 700MB of packages that I needed.
I’d like to say the upgrade went smoothly, but it didn’t. Part of that is my own fault - I accidentally used apt-get instead of aptitude to handle the upgrade, and so a lot of packages were missed, and some dependency resolution was fumbled which meant the upgrade process broke hard along the way.
After manually removing a bunch of packages then getting the upgrade to restart, then repeating “aptitude dist-upgrade” about 6 times after it thought it’d finished, each time installing a couple of new packages, and then finally rebooting one more time because I couldn’t get X to start again, it all looked good.
Except that when I logged in, GNOME didn’t appear to start. I killed X and added a new user, then logged in as them - worked fine. Tried my user - no go. I spent a long time trying to move various GNOME configs out of the way, and eventually resorted to creating a new blank homedir for myself - still wouldn’t work. So I rebooted one more time and it started working after that. Very strange.
I’d suggest waiting for the final release to upgrade, but if you do go ahead, make absolutely sure you use aptitude and not apt-get. It may also work better if you use the CD and boot into an upgrade mode, I can’t comment.
I would file a bug, but I’m not sure it’ll help. I can’t pin down what was wrong because I used the wrong tool to upgrade. I have a Dapper install on my desktop at home, and I’ll try upgrading that next week when I get some free time, however it’ll probably “just work” by then anyway.
New things noticed in Edgy Eft so far:

Firefox 2
Network-manager-applet has a dialup account plugin.

Yeah. It looks the same. Edgy does have new features under the hood, but I haven’t looked into those yet.
Update: Yeah, it’s called Edgy Eft, not Efty Edge.

Its Alive again

Posted in News, General ( at 12:21 pm)

Ok so I’ve finally got round to fixing wordpress after apt upgraded it but didnt tell me I needed to run the upgrade scripts.

Unappreciative People

Posted in News, General ( at 11:19 am)

What is it about people on the internet?

You setup a free service, using your own time and resources, maintain it, and all they can do is whinge and moan about some imagined slight or issue.

Very little thanks, its as if because they are on the internet it is your “Job” to provide them with a […]

Puppet - a system configuration tool

Posted in News, General, advocacy, WLUG, NSP ( at 9:58 am)

I saw a couple of blog posts about puppet recently. I’ve been meaning to investigate cfengine for a while now, and puppet was a new angle on the same problem. From the intro:
Puppet is a system configuration tool. It has a library for managing the system, a language for specifying the configuration you want, and a set of clients and servers for communicating the configuration and other information.
The library is entirely responsible for all action, and the language is entirely responsible for expressing configuration choices. Everything is developed so that the language operations can take place centrally on a single server (or bank of servers), and all library operations will take place on each individual client. Thus, there is a clear demarcation between language operations and library operations, as this document will mention.
It’s very new still, and is under active development. It seems to have been designed with fixing some of the hassles of cfengine in mind. It is written in ruby and has a reasonably powerful config language, and you can use embedded ruby templates for dynamically building up content to deploy. I have no particular preference for ruby - in fact, this is the first time I’ve used the language. Configuration is stored in a manifest on the puppetmaster server, and is based on the notions of classes and nodes. A node can inherit from multiple classes, or can merely include a specific class if certain criteria are met. Subclasses can override specific details of a parent class.
It makes use of a library called facter (also written by reductive labs), to pull information ‘facts’ from the client hosts, and these can be used in the manifests to control configuration. For example, it will work out the linux distribution you are running and store this in a variable, and you can use this to determine which classes to run.  It is fairly easy to extend facter to support additional facts - so I added support for working out the Debian and Ubuntu release number and codename - eg, 3.1 and sarge, or 6.10 and edgy.
There is a dependancy system in place, so that you can specify a rule to ensure that a service is running, which depends on the package being installed. If you use puppet to manage the config file for the service, you can set a subscription on the file for the service, so that if a change to that file is pushed out via puppet, it will restart the server for you as well.
Installing packages is handled well, with the option for seeding debconf if appropriate. Puppet understands several package management formats, including apt, rpm and yum.
I’m by no means an expert with cfengine, but this feels a lot nicer to use. After my initial testing, I see no reason so far to not deploy this at work. I’ll test try a test deployment on some systems, and if that works out I’ll push it the whole way out.

Xensource Xen Enterprise

Posted in News, General, WLUG, NSP ( at 8:31 am)

I’ve been following the Xensource Xen Enterprise product for a couple of months at work. The current release ships with an install CD which preps a barebones server. It installs linux with a Xen kernel and the Xen toolset, but doesn’t ask you many questions - the dom0 is really only there to support the hypervisor after all. There are no options for software raid in the installer, but that might be because software raid isn’t considered an “enterprise” tool by some people.
Once it’s installed, you can run a JAVA based console from your desktop. This will connect to the XenEnterprise server and let you run some of the hypervisor commands as well as provision and configure domU.  XE ships with support for installing a debian server from a template, and for installing RHEL from a network install server. Apparently  it’s fairly straight forward to modify the templates or to create your own, I haven’t looked into that yet.
The console provides some monitoring of the dom0 and the domUs - network, cpu, disk and memory utilisation. The
console will connect to multiple XE hosts, letting you monitor and configure your domUs across your entire network.
One other neat tool that ships with XE is a P2V migration tool. That’s Physical to Virtual migration - you run a program on your existing physical machine, and XE will create a domU suitable for it and migrate the filesystem into the new host. However, I’ve yet to use this to see how well it works.
The kicker is, of course, the pricing. XE’s pricing is available online, and it starts at $750 + $150 annual maintainance for a 2 cpu server. The big benefits of XE come in when you have multiple servers in use, so start to scale that price up accordingly.   XE is also a bit limited in that you can’t do anything outside of the box yet. Which means that if you want, for example, pass a PCI device (eg, network card or SCSI controller) through to a specific domU, you are out of luck. This may not happen very often or at all, but it does make it somewhat less useful.
Overall, it’s a nice enough tool. If you are looking at managing a large number of densely packed Xen servers and want to be able to quickly provision new servers, clone existing servers, and migrate guests easily between hosts, it’s probably spot on.

Hostnames, Domain names, and “Official” host names

Posted in News, General ( at 8:16 am)

Due to regular arguments I’ve had with people about this I thought I should document this somewhere for people to see:
Host names
The syntax for a hostname was defined waay back in RFC 952. it’s defined as:

<hname> ::= <name>*[”.”<name>]
<name> ::= <let>[*[<let-or-digit-or-hyphen>]<let-or-digit>]

(if you prefer as a regex /[a-z]([a-z0-9-]*[a-z0-9])?(\.[a-z]([a-z0-9-]*[a-z0-9])?)*/.)
RFC 952 also says a computer has an “official” hostname and zero or more “nicknames” or aliases, but are discouraged.
Domain names
A domain name is something that’s in DNS. A Domain name is much less strict on what it allows. This is used in RFC 2782 to avoid collisions with hostnames by requiring that SRV records have a “_” prepended to them since no valid hostname can have a _.
Implications
Other premsises:

RFC 821 says in section 3.7:

Whenever domain names are used in SMTP only the official names are
used, the use of nicknames or aliases is not allowed.

RFC 1123 says:

5.2.5 HELO Command:

The sender-SMTP MUST ensure that the <domain> parameter in a
HELO command is a valid principal host domain name for the
client host.

RFC 2181 Section 10.3:

[…] Thus, if an alias is used as the value
of an NS or MX record, no address will be returned with the NS or MX
value. This can cause extra queries, and extra network burden, on
every query. It is trivial for the DNS administrator to avoid this
by resolving the alias and placing the canonical name directly in the
affected record just once when it is updated or installed.

RFC 2821 Section 4.3.1

Note: all the greeting-type replies have the official name (the
fully-qualified primary domain name) of the server host as the first
word following the reply code.

Therefore:

You cannot have a “_” in your HELO/EHLO. Even tho microsoft windows machines love to do this. Expect your mail to be dropped.

MX’s should point to the “official” (canonical) name of the mail server, which should in theory be the same as the name produced in the 220 banner.

Updated: With Aristotles fixed regex. Ooops! My bad.

New Version

Posted in News, General ( at 8:06 am)

Hmmmmm so theres a new version of wordpress in Debian Sid, and this one supports xmlrpc for posting Articles

This Article is coming to you via a lovely little App called gnome-blog (although I don’t actually run the full gnome desktop)

It makes it much easier to post things to your blog, although I can’t see anywhere […]

I told you so

Posted in News, General ( at 7:01 am)

See I fortold that something would break.
The AARNET tunnel is now not authenticating, so I’ve decided to drop it and just stick with the HE tunnel. which is working swimmingly
Now on to my next project (which I havnt decided on yet, other than maybe integrating Google Ads into my wordpress

About Time

Posted in News, General ( at 6:12 am)

So I think its about time I get back to writing another blog entry (first one for 2005 even)
What have I been up to.
Well I now have a nice little active bittorrent tracker that I help to maintain. Its ticking along nicely.
Our house sells next friday which means I’ll be buying a new Laptop […]

Cursed Murphy

Posted in News, General ( at 4:13 am)

So I go on holiday for 3 days (first actual holiday in about 5 years), and as would be expected Murphy strikes on the first working day, and then again on the second day.

“Or” considered harmful.

Posted in News, General ( at 1:33 am)

On the weekend we decided that "or" (as used in the english language) is ambiguous and leads to confusion. We decided that instead we should use three terms:

"andor" (to mean "are any of these true?")
"xor" or "either-or" or "exclusive-or" (to mean "are only one of these true?")
"ewok" (to mean "which of these are true?")

Some examples:

Is it wet outside ewok is it fine? ("it's wet outside"), Is it wet outside andor is it fine ("yes"), Is it wet outside xor is it fine ("yes").
Am I mad ewok have small furry animals invaded this conversation? ("You are both mad, and small furry animals have invaded this conversation"), Am I mad andor have small furry animals invaded this conversation? ("Yes"), Am I mad xor have small furry animals invaded this conversation? ("No" both are true).
Would you like green eggs and ham on a plane ewok on a train? ("Mu" — I don't want green eggs on either). Would you like green eggs and ham on a plane andor on a train? ("No"), Would you like green eggs and ham on a plain xor on a train? ("No").
Should this be blue ewok green ewok red? ("Green"), Should this be blue andor green andor red ("yes"), Should this be blue xor green xor red ("Yes").

so, in closing, I Think we should stop using "or" in every day conversation and instead use "andor", "xor" and "ewok" instead to be more precise about what question we're asking.