dmuth's blog

Notes from February 2015 Philly DevOps Meetup: Security Practices for DevOps Teams

Sense. This picture makes none.

As a service to the Philly tech community (and because folks asked), I took notes at tonight's presentation, called "Security Practices for DevOps Teams". It was presented by Chris Merrick, VP of Engineering at RJMetrics.

Security is a “cursed role”

  • the sense that if you’re doing a really good job as a security engineer, no one knows you exist.
    • It isn’t sexy
    • It’s hard to quantify
    • It’s never done

As DevOps engineers, we are all de facto security engineers

Some tips to avoid ending up like this [Picture of a dismembered C3PO]

  • Security Principles
    • Obscurity is not Security
      • “A secret endpoint on your website is not security"
      • “Don’t rely on randomness to secure things"
    • Least Privilege
      • Do not give more privileges than are needed
    • Weakest Link
      • If you talk to an insecure system, you’re at risk
    • Inevitability
Average: 5 (3 votes)
Your rating: None

My MagFest 2015 Report

Last month I went to my first MagFest in several years. Once again, I worked security with The Dorsai Irregulars, and had a good time there, both while working security and at the event itself.

The event has grown quite a bit since I had been there last in 2009, and what used to be a reasonable sized video arcade was now a huge arcade, taking up an entire convention hall.

The concerts that were held every night were also great--I got to see a few bands such as Machinae Supremacy play. One thing that contributed to me getting much better pictures at this event compared to past events was my purchase of a 35 mm Prime Lens from Nikon. The downside was not being able to zoom nor take wide-angle photographs, but the upside was that I could get ridiculous amount of light with the F 1.8 aperture, and that made for some great shots in artificial as well as low light.

I was also pleased to see the amount of cosplay that went on. I counted at least 4 other White Mages present that weekend.

The only downside of this event was something completely out of their control--in order to get the weekend they wanted, they had to have the last date of the event on a Monday. As one might expect, many people did not stay through to Tuesday but instead departed that Monday morning, leaving the hotel with a bit of a "ghost town" feel for most of that day. The upside was that I got to be the last cosplayer standing on Monday night, so that was nice.

Average: 5 (1 vote)
Your rating: None

MidWest FurFest 2014 Con Report and Photos

I spent December 5th-7th at MidWest FurFest, held in the Hyatt Regency O'Hare in Rosemont, IL. It was another well-run convention that I had a good time attending (and staffing).


In addition to walking around the convention and seeing friends, I dropped in on Eosfoxx's "How To Draw Animals" panel. She went through detail on how to draw different kinds of animals, and how they differed from humans. Not having much of an art background myself, I actually found the panel rather informative. I came away from there better understanding the artistic process, at least when tablets are involved. Smiling

Midwest FurFest 2014 - 67 Midwest FurFest 2014 - 90 Midwest FurFest 2014 - 42


This was the big day with our Fursuit Parade. I got to help count the parade again, which is both fun and affords me an interesting view of the parade. The final count for number of fursuiters in the parade was 1,132.

The rest of the night involved hanging out with some friends until about 1 AM. Then the chlorine gas attack happened. I won't go into that here, seeing as I already wrote about that.

Midwest FurFest 2014 - 1 Midwest FurFest 2014 - 17 Midwest FurFest 2014 - 88 Midwest FurFest 2014 - 12

Average: 5 (1 vote)
Your rating: None

Eurofurence 2014 and my Trip to Berlin, Germany

I had quite a trip to Berlin, Germany last month! I was there for 11 days and got to see some of the sights as well as attend Eurofurence.

Let's start with the city…

The Holocaust Museum

Having never been to a holocaust museum before, I really wanted to visit the one in Berlin. It was in a prominent part of Berlin, near the Brandenburg Gate. The museum was underground, with the are above it containing these giant concrete slabs:

The Holocaust Museum in Berlin The Holocaust Museum in Berlin The Holocaust Museum in Berlin The Holocaust Museum in Berlin

The slabs were unmarked and people were encouraged to walk among them. The path itself went below street level while the top of the slabs stayed at the some level, creating a rather eerie quiet effect.

Inside the museum itself, each visitor was given an iPad with earphones and set to the language of their choice. This also created a very quiet atmosphere inside the museum itself as people walked through it and listened to the different descriptions.

Checkpoint Charlie

After the Holocaust Museum, I was a bit bummed out and walked around town with Joel and Yellowfur until we arrived at Checkpoint Charlie:

Checkpoint Charlie Checkpoint Charlie Checkpoint Charlie

Despite being a key location during the Cold Ware, the modern day site of Checkpoint Charlie was very upbeat. It was in the middle of a busy street with traffic going through, and was absolutely mobbed by tourists. There were some people dressed up as American soldiers who would let you have your picture taken with them.

Average: 5 (1 vote)
Your rating: None

BronyCon 2014 Wrapup

I attended BronyCon 2014 this year, and once again I worked in VIP Relations (VIPR). My role consisted of being the handler for one of the convention’s guests. This meant that I was responsible for meeting them in the morning and getting him where he needed to be on time. I was also the primary point of contact in case they had any questions or concerns regarding the convention itself.

DSC_8722 DSC_8747 DSC_8755

This was very much a “working” convention for me, and when I wasn’t working.. I was sleeping. Smiling As a result, I didn’t get to take nearly as many pictures as I would have liked. I did get this nice shot of Rainbow Dash on a drone:


The rest of my (admittedly small) collection of pictures can be found on Facebook and Flickr at:

My next convention will be Eurofurence, held across the pond in Berlin, Germany on August 20th-24th. I hope to see many of my European friends there!

Average: 5 (2 votes)
Your rating: None

My Anthrocon 2014 Con Report and Pictures

This year's Anthrocon was held in Pittsburgh, PA from July 3rd to 6th. The guests of honor were Lee Tockar and Jim Cummings. We had a total attendance of 5,861 and raised $32,372 for the National Aviary.

First, this is what 1,326 fursuiters look like:

Click on that picture if you'd like a 3000 pixel wide version. Or go here for a 17,000 pixel wide version.

DSC_8626 DSC_8653 DSC_8396 DSC_8399 DSC_8661 DSC_8365

Average: 4.7 (3 votes)
Your rating: None

Setting up custom short domains in

What is a URL shortener?

A URL shortener is a service which takes a long URL and creates a much shorter URL which then forwards you to the original URL when loaded. For example, the URL, if clicked on, will redirect your browser to instead.

Short URLs and the services that offer their creation have grown quite popular in recent years, as microblogging services such as Twitter limit you to 140 characters or less per message. In fact, some services such as Twitter offer their own URL shorteners built into the service for the benefit of their users.

The most popular of the URL shorteners is Bitly, so this post will be about setting up a custom short domain with Bitly.

Why use a custom domain

It's mostly about brand recognition and trust. If you have a domain name which you are trying to make popular, having the domain name short up on links that you post in Twitter and other places can only work to your benefit. It also serves to build trust--if users who read your blog, Twitter feed, or Facebook page know that links posted to a URL with your domain are useful, they trust more links posted with your domain. It really is an upward spiral!

Average: 4 (7 votes)
Your rating: None

Form Letter for Responding to Job Recruiters in the Software Industry

Hipster Cheetah on interacting with job recruiters

The Challenge

Having worked in the software industry for many years now, I get lots of job spam from recruiters. Sometimes it is relevant to the sort of work I do, but sadly many times it is not. The reasons range from recruiters not understanding technology (confusing Javascript and Java is a fair mistake if you've never worked with either), to having quotas to fill, to getting pressure by employers to fill positions. Be that as it may, taking out your frustration on a recruiter is not necessarily the most productive thing either. Since I got tired of typing replies by hand, I instead created a form letter that I can paste as a response to recruiters.

The Form Letter

This is what I send to recruiters:

Dear Sir or Madam:

Yes, this is a form letter. Smiling Please do not take this as a slight--I had to write it due to hearing from multiple recruiters a day, and I simply do not have the time to reply to everyone individually.

CURRENT JOB STATUS: At this time, I am NOT on the job market. Should you wish to forward the occasional job posting my way via email, that is okay.

For future reference (and my own sanity), I must ask that you kindly refrain from any of the following:

- Calling me on the phone unsolicited.

- Calling me on the phone unsolicited multiple times in a single day.

- Emailing me the same job posting multiple times in a single day.

- Sending me LinkedIn connection requests if we have never spoken before.

- Sending me job descriptions for technologies I do not use. (Hint: Javascript != Java)

Each of these things has happened before in substantial quantities so regrettably, I have no choice but to block repeat offenders--it is necessary to both maximize my sanity and minimize my bar tab. If in doubt as to if something is appropriate, feel free to ask via email.

If you have a question about my interest in a specific technology or employer, just ask. No need to forward a job description, a simple 1 or 2 line email is quicker.

If you have any questions not covered above, free free to ask.

All the best,

-- Doug

Average: 4.8 (5 votes)
Your rating: None

Introducing Nginxtop


Every once in awhile one of my websites gets hit by some poorly behaved web crawler or by some spambot. The symptoms are usually the same: either the same page gets loaded over and over, or non-sensical URLs based on valid URLs are hit. Either way, the effect on the web server is debilitating--the exact traffic causes the database to take a hit, and the network usage to be 5-10 times what is normal for the website. We can't have that.

My usual method for mitigating this is to make use of UNIX command line utilities such as tail, cut, and grep to weed out the offender and then block them with iptables. But I got tired of cobbling together the same commands every time this happened. Instead, I decided to write nginx top!


Here's how to install it:

npm install -g nginxtop

If instead you wanted the source code:
cd nginxtop
Average: 3 (2 votes)
Your rating: None

Quick and Dirty Script to Upgrade Drupal

I run several Drupal-powered websites, and I recently had to upgrade Drupal in order to fix a vulnerability that had been reported. I hate doing the same task over and over so I looked for a way to automate that from the command line. I came up with a solution that worked for me, and I wanted to share it.

First, head to /admin/reports/updates on your website and verify that your Drupal installation needs to be updated. Next, run these commands from the UNIX shell:

# Change accordingly based on the version of Drupal you are upgrading to

mkdir -p ~/tmp/drupal/OLD && cd ~/tmp/drupal/
wget${VERSION}.tar.gz \
   && tar xfvz ./drupal-${VERSION}.tar.gz

# Replace with whatever the root directory of your website is
cd webserver_root 

# Move each file to the "OLD" directory and move in the upgraded version
for FILE in `echo index.php includes misc modules profiles scripts themes update.php`
     echo "NEW: ${NEW} OLD: ${OLD}"
Average: 5 (1 vote)
Your rating: None