Recently in the "Tech" category...
I was just browsing Hacker News and was intrigued by the link to Grey Goo.
Nanotechnology has been a fascination of mine since 1986 when I first read K. Eric Drexler’s wonderful book Engines of Creation. If you haven’t read it, I highly recommend that you do. It’s a wild ride through our probable future.
Anyhow, I was particularly struck by one of the paragraphs in the wikipedia article that alludes to the class of bugs that all of us as programmers strive to avoid:
In a History Channel broadcast, grey goo is referred to in a futuristic doomsday scenario: “In a common practice, billions of nanobots are released to clean up an oil spill off the coast of Louisiana. However, due to a programming error, the nanobots devour all carbon based objects, instead of just the hydrocarbons of the oil. The nanobots destroy everything, all the while, replicating themselves. Within days, the planet is turned to dust.”
Indeed.
Let’s not do that.
I’m currently cruising at 35,000 feet on a Virgin America flight from San Francisco to Seattle. I’m surfing on my iPad whilst being served a Rum and Coke by a very nice flight attendant.
Being upgraded to first class didn’t hurt either.
Seriously, Virgin America is the best airline I have ever flown. Friendly; a little bit irreverent; spotlessly clean. Recommended.
Did I mention the WiFi?
Not only is Didi one of the smartest people it’s been my fortune to know (we went to college together), he now heads the “Greek Ministry of Finance General Secretariat of Information Systems”.
And he’s posting government tech issues out in the open.
Professor to Greece’s CIO. Wow, what a job change :-)
Right now I’m at Benaroya Hall for StackOverflow’s DevDays. So far it’s pretty good. Joel started off the day with a great talk, followed by Scott Hanselman.
Scott (a great speaker btw), was demoing ASP.Net MVC - very impressive. He also noted that beta 2 of Visual Studio 10 just went live for download.
After Scott finished his talk it was announced that Microsoft would upgrade everyone’s laptop memory to the maximum out in the lobby. They have boxes of RAM and a load of screwdrivers.
And not only for Windows laptops. They have memory for Macs too - a very nice gesture.
However, it did strike me as amusing that not minutes after announcing Visual Studio 10 beta 2, Microsoft was offering to upgrade the memory in everyones laptops…
Anyhow, up next is Rory Blyth on iPhone development…
Hot on the heals of the Xbox 360 support, Netflix watch instantly is now available on the Tivo.

This works just as well the Xbox 360 integration - some might say better as I don’t have to switch the 360 on to use it…
When I was in Boulder last week, a colleague mentioned that he had a Kindle, so I got a chance to play with one - it’s a lot smaller than I imagined and not as bad looking as I had expected from reading reviews.
Anyhow, I was so smitten that I ordered one there and then to be delivered on my return to Seattle the following day.
It has seriously changed how I read.
I have always have been a prolific reader, but every time I went anywhere I struggled with the decision about what books to take.
Now I just take everything.
I’ve loaded it up with a few new books that I’ve been meaning to read and a few creative commons books too, such as Little Brother by Cory Doctorow and Blood, Sweat & Tea by Tom Reynolds.
In addition to books, you can email your kindle PDF files (amongst other formats), so I’ve sent a bunch of papers to it, including the Larrabee paper.
Highly recommended.
A few months ago, I posted a link to an article deriding the current focus on Java in schools. Here’s a quote from that article:
…Computer Science (CS) education is neglecting basic skills, in particular in the areas of programming and formal methods. We consider that the general adoption of Java as a first programming language is in part responsible for this decline. We examine briefly the set of programming skills that should be part of every software professional’s repertoire.
An interesting read. What’s more interesting (at least to me) is that I used to agree whole heartedly with it’s sentiments. However, I’ve recently been writing a lot more code in Java than C++ and interestingly, I’m getting to like and appreciate it more - appreciate it’s power, expressiveness and yes, performance.
Anyhow, today along came another article in a similar vein.
In an interview with Robert Dewar from New York University, James Maguire writes:
In essence, he said that today’s Java-savvy college grad is tomorrow’s pizza delivery man. Their skills are so easily outsourced that they’re heading for near-term obsolescence.
Dewar stresses that he’s not against Java itself. But the fact that Java is taught as the core language in so many colleges is resulting in a weak field of computer science grads, he says.
Later on, we are told:
“Furthermore, Java is mainly used in Web applications that are mostly fairly trivial,” Dewar says, with his characteristic candor. “If all we do is train students to be able to do simple Web programming in Java, they won’t get jobs, since those are the jobs that can be easily outsourced. What we need are software engineers who understand how to build complex systems.”
Dewar obviously hasn’t been out in industry very much recently. I know of quite a few very complex systems implemented in Java…
A couple of posts ago, I talked about the need for a new A/V receiver. The basic problem is that I now have a fair few input devices and two of them have HDMI outputs, whereas my TV only has one HDMI input. It’d be nice to route the video and audio signals through the same place.
Problems solved:
- Mismatch of what’s being shown to what’s being heard. You know the problem - you hit ‘TiVo’ on the universal remote and you get the TiVo coming out of the speakers and the AppleTV on the display. The Logitech remote handles that nicely with it’s ‘help’ button, but it’s still a pain.
- If you don’t use the remote you’ve got to switch both the TV and the receiver.
- My TV only has one HDMI input which means that the TiVo is plugged into that so that I can watch HD content (HDCP being required). This means that I can’t watch HD content from the iTunes Movie store as it also requires HDCP - having the receiver route the video signal solves this problem.
- I wanted outside speakers and to have different things playing inside and outside. I.e. the kids can watch Dora on the TV while we’re listening to music outside courtesy of the AppleTV.
So I picked up the Denon AVR-3808CI and all my problems are solved. I also got a few bonuses into the bargain:
- TiVo and AppleTV hooked up via HDMI. Xbox360, Wii and DVD player hooked up via component and sundry audio connections.
- Outside speakers can play audio sources independently of what’s playing in the living room.
- Switching inputs is a breeze.
- The unit has an ethernet port and can stream internet radio. You can also manage it via a builtin webserver. I must say though, the design of the web content served leaves a lot to be desired.
- Nice GUI. As the unit is routing the video, it overlays it’s own GUI on top, such as audio levels and it’s setup/management interface.
The two spare HDMI inputs are also handy, as I suppose I’m going to have to get a Blu-ray player at some point…
Overall, pretty nice. It even met with spousal approval!
I did have one problem during setup though. The multi-zone support is nice and the idea was that I could be outside and listen to music from the AppleTV. Unfortunately it took me ages to get working.
The problem was that the Denon unit wouldn’t let me send audio sourced from an HDMI input (which the AppleTV is connected to) out to the second zone. I have no idea why.
To solve the problem I simply connected the units using an optical cable and had the receiver use that as the audio source for the AppleTV rather than the HDMI audio source. At that point, it would route the audio outside.
Anyhow, highly recommended.
And after setting it all up, I realised that every piece of A/V gear except for the DVD player in the living room is now on the internet - the Denon receiver, TiVo, AppleTV, Xbox360 and the Wii.
Wow.
On a related note, you might be thinking “Well, if the kids are watching the TiVo in the living room and you’re sat outside supping on an adult beverage, how do you control the AppleTV, sucker? The interface for it is on the TV which is being used by the kids!”
Well, I have my iPhone. On that iPhone I have the ‘Remote’ application which lets me browse the content and control the operation of the AppleTV over WiFi. And I can do it whilst sat outside supping on said adult beverage!
Sweet!
I love programming puzzles - you get to stretch your coder muscles :-) Anyhow I really liked the first question in the 2008 Google Treasure Hunt - the Robot puzzle. Writing code to solve it was an nice little challenge as there’s a couple of interesting real-world problems in there - especially if you write the code in C/C++…
I thought I’d done pretty well until a collegue of mine pointed out that there was a, ahem, tangential way of solving it…
I’m a huge audio geek, but just prior to the house move last June, I upgraded to Vista. I’ve been very happy with Vista - it’s worked well.
But with one exception.
I can’t get any of my audio gear to run with it.
This hasn’t been a problem up until now, as I’ve been way busy with other stuff. I’ve been letting my podcasts lapse and just noodling around with my guitar and other audio gear offline, not recording anything. But now, my esteemed amigo and I plan on collaborating long distance on some song writing.
This means I need to get it all running again.
The hub is the EMU 1820 which I use to get all audio into and out of the PC. First of all there weren’t any drivers, but now the drivers exist but bluescreen my Vista box during install. I’ve never managed to get drivers installed for the UAD-1 either. I haven’t even tried to get Cubase running.
Which leaves me with a conundrum.
Do I just downgrade to XP? I know it will all work, but I do love the UI in Vista. Do I actually use Vista though? Nope. Just a few games, Skype and Firefox. For everything else I use my MacBook Pro and my Linux box.
Downgrade I go… See you on the other side…
Now at 15Mbps down and up into the home.
Mmmmm, bandwidth…
I think this is it - the Canon Vixia HF10.

I’ve been looking for an HD camcorder to replace my trusty, and seven year old, Canon Elura 2 and this looks like the right one.
Any thoughts?
If you’ve been following along, you’ll know that I’ve just completed a rebuild of my home linux server which had a fatal hardware failure. You can find the posts here:
- Server Meltdown - A Tale Of An Upgrade
- Server Meltdown Part Two
- Server Meltdown Part Three - Where A Monitor Is Not Your Friend
- Server Meltdown Part Four - Where The NIC Hates You
- Server Meltdown Part Five - Where Spare Hardware Is Your Friend
- Server Meltdown Part Six - It’s Alive!
- Server Meltdown Part Seven - Where We Finish Up And Get Samba Installed
And what did I learn?
- Having good backups are a life saver.
- Never trust integrated components, neither graphics controllers nor network cards. I actually knew this, but had forgotten…
- Debian is easy to set up when you’ve done it a couple of times already :-)
- Sometimes, just starting from scratch and dealing with the pain is faster than trying to recover and reinstall configurations from backups.
Your mileage may vary.
In the spirit of spending as much free time as possible, I’ve moved this blog and my other sites to Media Temple.
Hopefully you didn’t notice a thing change except for a decrease in latency - the ping times have dropped from 80 milliseconds to 40 (at least from my house). The servers also appear to be a lot more speedy.
The other advantage (I hope) is an increase in availability. My old server was forever getting crushed by comment spammers - Media Temple’s grid stuff should be able to take the punishment.
Let me know if you see any issues.
So it was finally time to get Samba running on my home system.
The plan was to just copy over all the entire installation from backups and just run it. But, of course, things never go to plan.
First up, this is an x64 installation and of course the ppc binaries won’t run. No problems thought I. I’ll just apt-get install samba and all will be well.
No joy. The supported installation of samba in the latest version of debian is actually older than the version I was running on my old machine.
Ok, so we’re building from source again.
Build, build, run.
Nope. I could variously get my desktop joined to the domain, then the NAS. When I finally got them both joined, I ran into the dreaded NT_STATUS_NO_LOGON_SERVERS problem. Again.
So, thought I. Lets just create a fresh domain. This was actually the best solution. My only worry was losing access to data on the NAS due to permissions problems. Handily, the latest firmware upgrade to the Infrant NAS can give you (via an add-on) root shell access to the NAS, so I figured I could fix it up later.
I then brought up a fresh domain, joined all the machines and all was well. Pretty easy really. I fixed up all the permissions problems on the NAS by just ssh’ing in and running chown -R steve.”domain users” share/* on all the shares in /c. The only minor other thing I had to do on the NAS was move my home domain share from /c/home/OLD_DOMAIN/steve to /c/home/NEW_DOMAIN/steve and then chown -R steve.nogroup /c/home/NEW_DOMAIN/steve.
And then all was well in Casa Del Lacey…
Now that the shiny new linux system is up and running, it was actually relatively easy to bring it online as my home server, replacing all the functionality of my now dead system.
This post will deal with everything except the installation of Samba (which provides Windows Domain Controller services) - those details will be in an upcoming post.
First up, some basic stuff. I need to be able to log into the box from another system as it’s going to run headless and I want the monitor that it’s currently using back on my Vista box.
Basic Setup
While logged in as root on the console, add my user account (created during setup) to /etc/sudoers using visudo.
Next, edit /etc/apt/sources.list, removing the cdrom entries as all further package installs will be using the net and I don’t want apt-get complaining that it can’t access the cdrom drive.
Make sure the system is up to date:
apt-get update
apt-get dist-upgrade
apt-get upgrade
Now, I want to be able to perform the rest of the setup remotely, so install ssh and friends in order to ssh into the system.
apt-get install ssh
Joy, now I can login and perform the rest of the installation remotely rather than at the console.
Network services
The clock needs to be set right, so:
apt-get install ntpdate
ntpdate time.windows.com
Yes, I used Microsoft’s time server - it’s the only one I can remember off the top of my head!
Next, I need to get the network time service (NTP) running on the machine. It will be providing time services to all other machines on the network and periodically setting it’s own time against the root time servers.
apt-get install ntp ntp-doc
You’ll need to edit /etc/ntpd.conf and then /etc/init.d/ntpd restart to get it to notice the changes. Note that pretty much everything I talk about here has either a config file in /etc or it’s own directory of config files, also in /etc. They’re pretty self-explanatory - just take a look at the config files themselves and the related documentation. Everything also has a script located in /etc/init.d to control it’s operation.
For this reinstall, I just diff’d my backed up config files against the newly installed files to make sure there wasn’t anything new that I needed to be aware of and then just copied my old files over and restarted the service.
Next up, bind - the DNS server. I have a local DNS domain in my house that all the clients have an entry in, the linux box serves up that domain and caches domain requests so that the only nameserver the client machines need to know about is this linux box.
apt-get install bind9 bind9-doc
Bind is probably the hardest thing to configure. Handily I had all my backups (yay, me!). I’ll probably write up a post dedicated to that at some point, though one thing did bite me a little: if you’re restoring your configuration files from backup and get an auth error when trying to restart or reload the server, just killall named and start it up fresh as the authorization key in /etc/bind/rndc.key probably changed when you copied across the old data.
At this point, edit /etc/resolv.conf and point the nameserver line at the localhost, 127.0.0.1 so that client binaries on the system itself use your shiny new nameserver.
Next up DHCP. This is a little service that client machines use to get an IP address. In a home environment this is normally handled by your wireless or broadband router, but I prefer to have the server do it as other useful information, such as name and time server information is also passed to the client. Configuration is fairly simple - check out the documentation.
apt-get install dhcp3-server
Sweet! The base services are now all configured. At this point it’s probably a good idea to reboot the server to make sure all these services come up nice and cleanly.
A Few Other Things That I Do
I like to be able to mount drives from other machines on the linux box. For example, my Infrant NAS exports a “backup” share that the server backs itself up to. I use autofs for this.
apt-get install autofs
Edit /etc/auto.master and un-comment the line for auto.net. The backup share is now available at /net/blob/c/backup. FYI, ‘Blob’ is the name of my Infrant NAS box…
After that it was just a matter of reinstalling my crontabs from backup and then this blog and a few other things are automatically backed up to the NAS. Cool. Safety is back…
Another thing to mention is that I use Amazon S3 to backup my photos and videos. The scripts that do that are written in ruby, so that also needs to be installed.
apt-get install ruby rubygems
I need rubygems installed as it brings with it the openssl ruby package.
The last thing (modulo Samba), that I need is dynamic DNS updating. I use dyndns.org so that I can have a friendly DNS same to connect to the server when I’m not at home. The linux box handles updating the DynDns database with whatever IP address Verizon happens to be giving me at the time of update. I use inadyn to accomplish this.
apt-get install inadyn
Unfortunately, inadyn doesn’t come with any form of script to get it started, or any useful documentation whatsoever. So I just copied an existing script in /etc/init.d and got it going with a few minor modifications. Let me know if you’re interested in a copy.
All in all, the entire process took me about an hour to get everything setup once the base linux system was successfully installed.
Next up - Samba!
At the end of yesterday’s post I was planning to take a trip to Fry’s this morning to purchase a new ethernet card for my new machine. This morning’s realization is that the new machine actually has two spare standard PCI slots and I have a load of PCI ethernet cards sitting in boxes and dead machines. One of those spare cards happens to be old trustworthy Intel Pro 1000.
I disabled the motherboard integrated ethernet adapter, installed ye olde Intel card and rebooted.
Everything works.
Joy!
Now that I have a working network during install, package configuration during Debian setup is working. I just installed the base desktop package as I’ll manually install and configure everything else later and write up the process for my records and your reading pleasure.
Later, dear reader…
It appears from reading various threads over the net that the Linux sky2 driver in conjunction with the Marvell 88E8056 Gigabit ethernet controller results in a steamy pile of poo.
I can confirm that this is indeed the case.
Again following up from my previous posts, the next step in home linux server resurrection was to attempt to install Ubuntu 7.10 ×64 edition on my shiny new machine. This didn’t get very far. A boot from CD ended up in a wedged machine no matter how I tried to run the install.
Hmmm, I think I’ll go back to the trusty Debian distribution. I downloaded the latest stable (Etchy) net install disk. Boot. Joy! It all runs. Except the net card. Lots of kernel errors regarding the ethernet driver followed by a fatal crash.
Suck.
Maybe I’ll try Lenny, the “in test” release.
Same thing.
Tomorrow I think I’ll be buying a vanilla net card for this puppy. Something made by Intel. For now I think I’ll just install Etchy on the machine with the ethernet disabled and let the machine burn in.
Sigh - three days into this and it seems like the box isn’t going to be up and running before my next trip. I thought this was supposed to be easy?
More as it happens…




