Need some local Linux help

If anyone is local to the Chicago area (or willing to drive over for the weekend *cough*detroit guys*cough*) send me an email or hit me on IRC. I need to get someone the weekend of August 27th to help configure servers, and the weekend of September 3rd to go to the data center, install, and test in a real environment.

I need someone comfortable installing Linux (Ubuntu) and configuring some services (Apache2, Postgresql, etc). I’m super busy so I could use an extra pair of hands to hang out with me and get six servers installed. Food, housing (if needed) and money will be provided 🙂

At the data center, we’ll be bringing in these servers, installing them in the rack hooking them into the switch and testing everything. It’ll be a fun, geeky time.

Benchmarking Apache

I’m writing a new web application using mod_perl 2.0. It’s heavy on network I/O so I’m doing some benchmarking and testing with simulated I/O to see just how many requests/second I can expect a single server to handle. While reading through Practical mod_perl I discovered one of the greatest tools ever: ab.

stone@moradin:~ $ ab -n 5000 -c 10 http://localhost/echo
This is ApacheBench, Version 2.0.41-dev < $Revision: 1.141 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Finished 5000 requests

Server Software: Apache/2.0.54
Server Hostname: localhost
Server Port: 80

Document Path: /echo
Document Length: 33 bytes

Concurrency Level: 10
Time taken for tests: 2.326156 seconds
Complete requests: 5000
Failed requests: 0
Write errors: 0
Total transferred: 1145916 bytes
HTML transferred: 165132 bytes
Requests per second: 2149.47 [#/sec] (mean)
Time per request: 4.652 [ms] (mean)
Time per request: 0.465 [ms] (mean, across all concurrent requests)
Transfer rate: 481.05 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.7 1 8
Processing: 2 2 1.2 3 10
Waiting: 0 1 0.9 2 8
Total: 3 3 1.2 4 11
WARNING: The median and mean for the waiting time are not within a normal deviation
These results are probably not that reliable.

Percentage of the requests served within a certain time (ms)
50% 4
66% 4
75% 4
80% 4
90% 4
95% 5
98% 7
99% 7
100% 11 (longest request)

This is awesome. Not only does it rock, but it’s included by default with Apache.

Konami.com launches new Game Site

Why is this blogworthy, you ask? Because I wrote it. I can’t claim for the design or graphics. I’m not talented in that area. I did, however, build the custom content management system that allows them to manage their catalog of games as well as integrate that with the HTML from the designer to turn it into a full-fledged dynamic site.

Last February I quit my job to pursue other ventures, this being one of them. There were some nervous moments but overall things have gone well. We’re not out of the woods by any means but at least we can see the path widening before us.

I still have a month or so of work left on the contract and by then yet another venture should be doing well enough to keep a roof over my head for a while. For now though, it’s time to catch up on my sleep. It’s been a long three weeks pre-launch.

Quickie: Browser Detection

I haven’t had much time to do anything but sleep or work the last few weeks but I had to take a quick break to share something very, very cool.

I needed to add some browser detection code to my current project. This is such a standard thing I knew someone had to have written a version that I could use and lo and behold, Mozilla has done it: The Ultimate JavaScript Client Sniffer.

The page is marked as obsolete and a historical reference but that’s okay with me. I’m trying to detect obsolete browsers, so I figure it’s appropriate.

Detroit Hackfest Redux

I’m back home and more or less caught up on sleep after this weekend’s Ubuntu Detroit Hackfest. It’s a nearly six-hour drive each way but it’s worth it to hang out with everyone occasionally. We ate good food (thanks to Kattni’s wicked cooking skills) and even did a little keysigning. Thanks again to Kattni for letting everyone crash at her place. Saves money on a hotel, which makes it much more likely I can attend in the future.

In the end, I finally decided to start hacking on Tomboy. Step one is to make it easy to find and connect to other Tomboys on the network.

Thanks to Charlie, who told me about the GnomeVFS bindings for Zeroconf aka Rendezvous aka Bonjour. If you don’t know what that is, in a nutshell, it lets you publish what services are available on a machine. You could, on your mail server, use Zeroconf to announce that you have smtp, imap, and pop3 available. It’s a way to make shit easy when connecting people together.

I’ve started working on Mono bindings for the Zeroconf stuff. I have some of the calls working. Others I’m having some difficulties with and I may need to turn to the gtk-sharp-list group for some advice. One particular struct is giving me headaches

I’ll get the code posted up here soon and hopefully get some working bindings released in the near future. Once the binding is done I can start to do the actual integration work in Tomboy, which will be exciting.

After a while the code began to blur and progress grinded to a halt. Still, I made lots of headway and got to meet some cool new hackers. Hopefully I’ll be able to make it again in the future. After I got home I realized that I never did leave Andrew any money for the food we consumed. Sorry dude! I’ll make it up to ya when you’re in Chicago next month.

Detroit Hackfest

I’m heading to Detroit tomorrow to hang out with Jorge and the rest of the Detroit crew. A weekend of hacking on code and eating unhealthy food. Just my idea of relaxation.My only dilemna is what to hack on. Here are the current candidates:

tomboy – Adding network support so that you can access and search notes across multiple machines. Ideally advertised with rendezvous. No more wondering which machine you left a note on.

libnautilus-pr0n – Add some new functionality to my nautilus media-sorting extension, like exif tags and perhaps video support.

gnome-launch-box, a very cool launcher. I’ve patched it to work with Ubuntu Breezy. There’s still work to be done to improve the performance. I still don’t know if this is actively being maintained. I haven’t been able to get an answer from the projects maintainers.

Porting Expresso to Linux/Mono. Expresso was originally released on the Code Project. I’ve talked to the author, Jim, and he confirmed that I’m free to port the original code to whatever I need. This would be a very useful tool to have in Linux.

I know Jorge and n0p are interested in gnome-launch-box. Andy is excited about porting Expresso. I want to do them all but I know that’s not logistically possible. I guess I’ll let peer pressure decide for me.

Touring Wisconsin

5 days
1,619 miles traveled
78.6 max speed
41.6 average moving speed
38h 57m moving

Sights seen:

  • Amish Ambulance
  • Geographic center of western portion of the northern hemisphere
  • Found our first geocache

  • Amnicon Falls


  • What looked like an old fort or trading post in Ashland, WI

  • Deluth, Mn
  • Lake Superior
  • Two bald eagles
  • A group of lost conselors-in-training 15+ miles from camp

A long but fun weekend. It’s always good to get up north and see the family. We had a nice little camper we stayed in, with easy access to shower facilities.

Reviving dead hardware: IBM Thinkpad 600

I had an old IBM Thinkpad that I bought used at a local computer show for Dena. A Pentium II 233Mhz with a 5G hard drive and 192M of PC100 RAM. Not exactly high end but hey, it’s a Thinkpad and it was fairly cheap.

After she got her Powerbook I installed Debian on it and used it as a backup laptop. A buddy of mine needed a machine for a while so I lent him the Thinkpad. I eventually got it back a year or so later but it wouldn’t boot. Instead it greeted me with the BIOS error code “161, 192, 163”, which is computer speak for “What the fuck, I can’t remember who or what I am.” I did a little googling and found that this Thinkpad uses a very standard battery for CMOS, the CR2025, which can be bought damn near anywhere. I picked one up at Radio Shack for under $3.50 with tax.

Inside the Thinkpad 600

Getting to the BIOS battery is painfully easy. Remove the cover housing the memory and pull the top piece of memory. You might be able to work around it but why bother. From there, you can disconnect the battery lead and pull it free. It’s just sitting there waiting for attention.

Liberating the CMOS battery

The guy at Radio Shack was in awe of the yellowness of the battery. Apparently he’s unfamiliar with modern marvels such as “shrink-wrapped plastic”. In any case, we’ll be cutting off the plastic coating shortly.

Assemble the new battery

Cut away the plastic coating. The negative and positive leads are stamped into the surface of the battery so you have to pry them off carefully. I used the flat blade of a screwdriver to work the lead away from the battery.

Putting it all together

Putting it back together is a bit of a cheap hack but it seems to work well enough. I cut small strips of electrical tape to secure the leads to the battery. I made sure to wrap the exposed leads to the wire so that there is no chance of them coming into contact with each other or anything else metallic in the case. Then I wrapped the entire thing for safe measure. Putting the battery back in place is easy, just reverse the process. Tighten it up and you’re ready to go.

If you have other queries about hardware and software, or if you want to find A good comparison of HDD vs. SSD, then proceed to the site of Backblaze and enligten yourself.

The first time you power it up you’ll get another BIOS error code, this one telling you that you need to set the date/time. It’s an ugly screen but it works.

This quick and simple hack has given this old Thinkpad a new life. Armed with a fresh install of Ubuntu and a wireless card, I’ll be rigging this up as a semi-permanent member of my wardriving setup.