If you're even a small-time sysadmin, chances are that you've had to create SSL certificates more than once. Creating a certificate signing request is generally easy enough--you create the .key and the .csr files, and send the .csr file off to your Certificate Authority (CA), pay them a ton of money, and they send you back your signed public key (usually a file ending in .crt).
But what if you don't want to go through all of that trouble? What if you just want to have a self-signed SSL certificate for a small project? Or for submitting to Amazon Web Services (AWS) so that you can access their API?
I wrote a script to help automate that:
#!/bin/sh
#
# This is a wrapper script for making self-signed certificates
#
#
# Make errors be fatal.
#
set -e
if test ! "$1"
then
echo "Syntax: $0 basename"
exit 1
fi
BASENAME=$1
#
# Our secret key
#
KEY="${BASENAME}.key"
#
Howdy!
The PA-Furry mailing list was originally started by me back in February, 2000. For the better part of a decade, it was a place for furries who lived in and near Pennsylvania to chat with each other.
Sometime in 2010, traffic on the mailing list started to drop off, due in part to the popularity of Facebook, Twitter, and other online venues, and due partly to the Pennsylvania Furries website picking up steam. By 2012, the list was fairly inactive, except for the occasional spam. Between the decline in mailing list activity, and an unrelated server move, I felt it was time to shut down the mail server and retire the mailing list. I intend to keep the archives online indefinitely.
Here are some related links:
For the curious, here is a graph of mailing list activity, by month:

As you can see, activity picks up in the middle of the decade, then drops off by the end of the decade. By 2011, the list is virtually dead, with only the occasional post here and there.
For the UNIX-heads out there, I generated the data for that list by running this command under the mail archive directory:
find . -type f \
|grep -v attachments \
|egrep "[0-9]{6}" \
|sort \
|sed -e s/'\/[0-9]\{6\}.html'// \
|cut -c3- \
|uniq -c
If there are any questions or comments, feel free to reach out to me. My contact info is over here.
As far as I can tell, the answer to that question is a surprising yes.
Here's a brief history of the page:
"Were there other Transformers webpages before this one?"
Oh, you bet there were. I know of pages that went back to at least 1993. Two of the names I remember were Iggy Drougge and J.J Hoxey, both of whom had very popular Transformers pages of their own. Sadly, their pages (and many others) have since gone 404.
I do not know of any other Transformers webpages on the net older than 1996, so it seems that I have the dubious honor of running the World's Oldest Transformers Webpage. Not exactly something I planned, I'll deal with it. 
Impatient? You can view all of the photos over here!
I attended FurFright a few weekends ago and just now got to upload my pictures and make a blog post about it.
As I mentioned previously, I worked some pretty odd shifts in security, so I was often sleeping during the day, and didn't get to take all of the photos that I wanted to. That said, I did get some great photos taken during the Fursuit Parade, due to the fact that I was outdoors and had natural light to work with.
Hurricane Sandy put a damper on things and I was forced to return home early, which was Not Fun. Since I was concerned about traffic in NYC, I instead used Scranton as a waypoint of sorts. I set Scranton as the destination on my GPS, and when I was 50 miles away, changed the destination to my home. This turned a 4 hour trip into a 5 hour trip, but it was a very nice drive. I got to drive on US-209 to PA-33, and drive by my old stomping grounds in the Lehigh Valley. Along the way, I passed several dozen utility trucks heading south, towards the expected disaster area. The drive was cool enough that I think I'll do it on future trips back from FurFright.
Enough of that, here are some pictures:
That's about all of the pictures that I care to post here. I have the entire archive at Flickr:
http://www.flickr.com/photos/dmuth/sets/72157631984367189/
Share and enjoy!
The next convention I'll be at is Midwest FurFest. I hope to see you there!
Once again, I will be working security at FurFright this year with the Dorsai Irregulars. I will be serving as a "sergeant" in this contract, which basically means I get to work longer shifts, and have less time off between shifts.
Here is my duty schedule:
Outside of those this, I'm available to hang out, socialize, and generally have fun. I hope I'll see many of my friends there!
In years past, software engineers who performed rose up the corporate ladder would eventually find themselves in management. This usually ends poorly, since us nerds tend to talk to computers better than we talk to people. This means that while we're great at managing technology, we're not so great at managing fellow humans.
When I worked for Symantec some years ago, they had a career path for technical people (software engineer, sysadmins, etc.) that I thought was a great idea. It went something like this:
| 0-2 years experience | Associate Software Engineer |
| 0-8 years experience | Software Engineer |
| 6-14 years experience | Senior Software Engineer |
| 12-20 years experience | Principal Software Engineer |
| 15+ years experience | Senior Principal Software Engineer |
| 20+ years experience | Distinguished Software Engineer |
| 25+ years experience | Senior Distinguished Software Engineer |

"I eat, sleep, and breathe PHP (or C++). How is flow control different in node.js?
The if/then/else constructs that you're used to aren't any different in node.js, but function calls are much much different. Take this code, for example:
var results = db.query(query); console.log(results);
This won't do what you'd expect. The results variable will very likely be null. This is because nearly every function call in node.js that involves I/O, whether it's to the network or the filesystem takes a callback function as an argument, a function which will be executed only upon completion of the request. This is due to node.js's asynchronous nature.
Taking the above example, you'd write something like this, instead:
db.query(query, function(error, results) {
if (!error) {
console.log(results);
}
});
console.log("Sent our query!");

"Why handle errors?"
Because as a programmer, catching errors is part of your job. You need to know when a disk write fails, a database query times out, or a web service returns zero bytes. You need to be able to react to exceptional (and not-so-exceptional) conditions, and do The Right Thing, even if The Right Thing is merely to print out that error and exit.
"I can just throw an exception, right?"
In some languages, this might work. In Node.js, not so much. Remember, each time a callback is executed, it gets its own stack. Take this code, for example:
function f2() {
setTimeout(function() {
throw new Error("I AM ERROR.");
}, 100);
}
function f1() {
f2();
}
f1();
Execute that, and here's the stack trace you'll get:
timers.js:96
if (!process.listeners('uncaughtException').length) throw e;
^
Error: I AM ERROR
at Object._onTimeout (/Users/doug/tmp/node.js/stack.js:6:9)
at Timer.ontimeout (timers.js:94:19)

There's an article making the rounds called Microsoft's Lost Decade. It's a good read. I wanted to share a few of my own thoughts on it, based on my time in the software industry.
At the center of the cultural problems was a management system called “stack ranking.” Every current and former Microsoft employee I interviewed—every one—cited stack ranking as the most destructive process inside of Microsoft, something that drove out untold numbers of employees. The system—also referred to as “the performance model,” “the bell curve,” or just “the employee review”—has, with certain variations over the years, worked like this: every unit was forced to declare a certain percentage of employees as top performers, then good performers, then average, then below average, then poor.
From my perspective, this is a really bad idea. Using Microsoft's ranking system, if you're a rockstar programmer who is working in a department with other rockstar programmers, if you find yourself lacking in skills or productivity by even the slightest bit compared to your peers--but well above that of an "average" programmer--your performance would be classified as "below average" or "poor" under the system, you would lose your job, and Microsoft would be out one rockstar programmer. (If you're been paying attention, Intel has/had this problem, too!)
Contrast this model of employee ranking with the system used at Symantec when I worked there. Each employee was evaluated in a number of areas and received a rating from 1 (poor) to 5 (excellent). To the best of my knowledge, there were no forced percentages or anything like that. Each employee was honestly evaluated based on their performance and received feedback on how to do their job better. I consider this method much saner than being rated as "poor" simply because one weren't quite as good as their peers.
Microsoft's ranking system led to some pretty horrific things:
Anthrocon 2012 has come and gone, and I've only recovered enough just now to actually write about it and share my pictures!
First, how about some numbers:
All of these numbers are records, way above and beyond anything we've had in previous years. It was epic!
As usual, we had our share of of outside media coverage [1] [2] [3] That's perfectly fine however. We were in the middle of downtown Pittsburgh, after all.
From an Operations standpoint, the con went pretty darn good this year! Ops went well, and onsite registration went well. Even the badge printers behaved themselves this year! The only noteworthy issue we had to deal with was our Nexttels. Seems that our vendor didn't bother to tell us that they wouldn't actually work in Pittsburgh. This caused us some issues with communication, but wasn't insurmountable, just annoying.
Other than that, the con was pretty much a blur for me this year. Things went as they should have, and I mostly stayed out of the way of my hard working Ops Staff and let them do their thing. With this growth in attendance, however, I have started making plans for staff positions and such to handle even more growth next year.
Oh, I got to see Sardyuon's Encore Performance. The man is amazing:
And this is what 1,044 fursuiters look like:
Actually, that's not entirely accurate. There is a huge group shot over here.
Say... did you know that not everybody at Anthrocon wears a fursuit? I have proof!
Do you want to see my full archive of pictures from Anthrocon? You can find them over over here.
Next year's Anthrocon will again be held in Pittsburgh from July 4th to 7th, 2013, and the theme will be "The Fast And The Furrious". We'll see you there!