a brief diatribe about Java’s SSL implementation

Getting back to more tactical things, I’ve been hacking on some Java code recently for the first time in a long while. I’m trying to grab some data from a vendor’s SOAP interface for trending in Cacti, and having had problems with Perl’s SOAP::Lite library, I switched to using Apache Axis in Java. However, this post isn’t really about my web service client: it’s about how much SSL in Java stinks. Continue reading

it’s a strange and exciting time to be in the media

I was going to start this entry with the headline “It’s a bad time to be in the media”, but I decided to stop short of that doom-and-gloom prognostication. I won’t deny that many media organizations are suffering; some venerable institutions are closing and others are threatening to. However, I believe that those which are positioned and prepared to reinvent themselves as content factories and not as platform companies will be the winners in the long run. Doing so also involves embracing technological change and making technology a core underpinning of their workflow — something that’s going to be very difficult to digest for some. Continue reading

agile development and what it’s not

It seems like Agile software development methodologies (XP, Scrum) and their associated techniques like pair programming are all the rage these days. I’ve never worked for a truly successful Agile shop, nor am I actually a developer (any more) but I do want to address the delusions that some people, particularly managers, have around Agile. While I do believe Agile methodologies have their time and place, implementing these tactics do not guarantee that your project will deliver on time, on budget, or with happy developers. Here are a few of my observations about Agile and how it is misused. Continue reading

building a custom serial cable with no soldering

This isn’t the most intellectually stimulating post, but I recently needed to build a custom serial cable to hack into an APC AP9606 Web/SNMP Management Card. (I bought one off eBay for $35.00 installed in a MasterSwitch Plus remote power strip, and the default password had been changed.

Now, I hate soldering. The last time I had to solder a serial cable was to build an RS-422 so a friend and I could get onto the console of a salvaged Challenge L, but that was a real pain. This time, I just needed a one-off to emulate an APC 940-0024 UPS communications cable.

I ended up just going to Above All Electronics and picking up a pair of RJ45-to-DB9 adapter kits — one female, and one male — and wiring the correct pins together. For the purposes of serial communications with the MasterSwitch, you really only need the following connections:

  • Pin #2 Female to Pin #2 Male
  • Pin #3 Female to Pin #1 Male
  • Pin #5 Female to Pin #9 Male

Everything else I just wired randomly to make it neat and clean.

Then, just take a regular Cat5e network cable and connect the two adapters you built and presto, a custom serial cable!

Thanks to the folks on tek-tips.com that provided instructions for how to reset the admin password on the card.

Amazon S3 backups: a proof-of-concept

Recently, I decided to experiment with Amazon Web Services‘ Simple Storage Service (S3) for online backups. This was predicated by my DLT7000 tape drive dying; when I discovered the repair cost is nearly $400, I decided to do a cost-benefit analysis using the S3 platform as a proof-of-concept before sending it off to the shop. Today’s post will review the results of that analysis. Continue reading

all I want for Christmas are some custom Apache modules

Operating an Apache httpd-based origin in conjunction with a CDN presents some interesting challenges and opportunities. For example, one can actually eliminate a lot of sophisticated cache control directives by trusting that the CDN will Do The Right Thing ™ when communicating with client browsers. Furthermore, implementation of a few judicious Apache modules and mod_expires directives can go a long way towards reducing origin bandwidth and load on the webservers.

However, dynamically-generated web pages (including those generated via SSI) can result in unnecessary cache evictions due to the inability to determine last modification time. In this article I’ll explore exactly why SSIs are so irritating from a CDN-interaction perspective and why all I want for Christmas is a CDN-aware mod_include and/or mod_expires, as per the title of this post. Continue reading

performance improvements of changing Apache MPM from prefork to worker

We at CBC.ca have made major improvements in our web platform over the last two years. When I first returned to CBC in September 2006, we were still running Apache 1.3.29 on SuSE Linux Enterprise Server. Since then, we’ve upgraded first to Apache 2.0.59 (still on SuSE) and, with the migration to Red Hat Enterprise Linux in July of this year, to Apache 2.2.8. (You can see the evolution of our web platform over at Netcraft.)

Two days after the Canadian Federal Election, we implemented the next major upgrade of that platform and that was to convert from the prefork MPM to the worker MPM. Since we monitor the performance of all our Apache servers using Cacti, I can share some detailed information about the performance improvement that has resulted from this change. Continue reading

/usr/bin/vmware-config.pl gone!

I upgraded to VMWare Workstation 6.5 recently and now /usr/bin/vmware-config.pl is gone. I only discovered this recently when I updated my kernel for a security fix, and lo and behold, the old method of making vmnet, vmmon, etc. modules for the new kernel no longer applies!

It seems like others are having the same problem and I can’t find a sensible solution other than uninstalling and reinstalling VMWare. It seems the geniuses over at the Evil Machine Corporation have decided to replace vmware-config.pl with some sort of GUI called vmware-modconfig that doesn’t seem to work right.

Why can’t people just leave working tools alone — or at least preserve the familiar API for people that don’t want to wade through 300 pages of PDFs to figure out how to fix the breakage?

Varnish HTTP accelerator nears 2.0 release

I’ve long been an advocate of origin HTTP caching and acceleration for large websites, something I alluded to in the post Performance Tuning and Optimization of High-Traffic Websites, which I wrote almost eleven months ago. In the early, heady days of the World Wide Web, many vendors like CacheFlow (later BlueCoat) and Nortel made HTTP caching appliances, but there are almost no such vendors in the marketplace now. I still believe there is a sound technical reason for an origin website architecture with HTTP accelerators deployed in front of it, and I’m happy to see that one recent entrant into this space, the Varnish HTTP Accelerator, is nearing a stable 2.0 release. In this post, I’ll elaborate on why I think HTTP caching solutions went the way of the dodo, why I think they should come back, and use the feature set and stated goals of the Varnish project as evidence. Continue reading