Participating in Season 3 of Ready Steady Pan

I participated in a competitive Team Fortress 2 tournament, aka an e-sports competitive video games tournament. My journey took place over eight weeks with a scramble weekend to sign up plus seven weeks of the regular season. We did not make the post season. It was a journey in pan play beyond even what the great degroot_keep offers. With over 10,000 kills on my Golden Frying Pan this tournament meant I got to test my mantle of pan with champions.

The journey nearly was halted before I could even begin. My awareness of this tournament was brought forth around the 20th of October when an update came through saying, “Added Ready Stead Pan Season 3 tournament medals”.

TF2 Update Released


I was intrigued and googled the first image I saw was:


Oh no! Panicked, I read more and instantly was relieved!


After some hesitation of entering such a tournament I jumped into the forums and laid it all out to find a team. With my Golden Frying Pan there was no way I was missing out. The tournament was calling.



With just over 24 hours until the deadline and no one replying to my post, I hit the Discord chat and found my team. We were formed in the last seconds. A ragtag bunch looking for glory in the Fortress world.

The team was named “we exist guys“, team number 648. Literally the last team made. We existed only in the last moments before sign ups finished. Our team was completely formed in the extension of the signups.


Only time would tell how my newly found comrades and I would fare. Our roster was a colorful bunch: Team Captains: Diamond and “Carl, Good to see you” followed by spacy, Axie, Dell Conaghr RSP???, red box, joekiller (myself), – VH – SnakeFawdz, and Burnt Venom.

The first week was tense and fun. King of the Hill was the game mode. Matches were played until a side reached three wins. To win a team needed to hold the capture point, the hill, for three minutes. Lacking any offensive projectile weapons, the game played out curiously compared to other first person shooter environments. With five player classes allowed there was a variance on speed and health. Players took anywhere from three to six hits to take down and all combat was melee frying pans only. There were no lucky critical hits; only loud frying pan clanging engagements. Here you could stare down an opponent for seconds beckoning each other in awkward strafing dances trying to just bring the other’s hit box within one’s own range. Overwhelming numbers were the name of the game. With a frenzied start the game quickly gave way to one side but with health slow to get to people had to leave the point leaving opportunity for lesser numbered engagements, 1 on 1, 2 on 2, etc.


In the end our team was outmatched once however all the others, despite the final scores, were closely contested. We played 5 of the 7 matches ending up with a record of 3 – 4, 2 – 3 in matches plus one win and loss from forfeit, but it felt closer to 5-2. We vanquished what turned out to be the bottom two teams and were squashed by The Knights of Nye in a shocking 6 minutes and 6 seconds. Other matches took between 18 to 30 minutes. We held our own against the mid tier teams, even the Knights of Nye whom made the playoffs. The team improved over time and had fun.


But of course this was journey for championing the Golden Pan. How was it? For three of five matches I was in the top. Ending the season I had 155 kills, 43 assists,106 deaths, and put out a total of 35,189 damage (about 281 scouts). The road was hard but the Golden Pan usually rang more than any other each match. With a solid 2.06 Kill and Assists per death ratio the pan performed well. It was a great journey and in the end everyone will get a Tournament Medal. GG’s everyone.


Kills Assists Deaths Damage Damage/Minute Kill and Assists / Death Kills / Death Damage Taken Damage taken / Minute HP* Capture Point Captures

Week 1 20 10 25 6191 287 1.2 0.8 6061 281 28 3
Week 3 36 10 10 7227 385 4.6 3.6 4985 266 55 4
Week 4 45 13 40 9649 364 1.4 1.1 9084 342 63 9
Week 5 2 2 8 1170 190 0.5 0.3 1952 317 7 0
Week 7 52 8 23 10952 371 2.6 2.3 8169 277 76 9
Totals or Average 155 43 106 35189 30251 229 25
Averages 31 8.6 21.2 7037.8 319.4 2.06 1.62 6050.2 296.6 5

HP is “Health pickup rating: Small 1p, Medium 2p, Large 4p”


Week 1

Week 3

Week 4

Week 5
B4nny Merc for Top Team Note: Not related to our team but b4nny is a popular player and the top team is playing.

Week 7

Anti-Immigration or Anti-Refugee Bills are immoral and not in Virginia’s interest

In sync with President Trumps push to persecute refugees and immigrants, the Virginia General Assembly has had a number of bills introduced that do not represent what America stands for nor are they in the best interest of the citizens of Virginia. The majority of these bills increase the burden of running day to day services for the state. The burden of work is increased for entities providing immigration or refugee services, education, and just general contracting with government entities.

I urge you to find out who your legislatures are ( and get in touch telling them that these laws are not in the interest of Virginia.

Below are my letters outlining my objections to HB 1468, HB 1723, HB 2000, HB 2001, HB 2002, HB 2236, and SB 1262.

America’s morals and responsibility to take in those who are escaping war or are trying to make a better life are parts of what I believe make America great. I feel that discrimination and additional laws against refugees or immigrants, illegal or not, are unnecessary and our existing laws are well in place to punish those who intend to harm our citizens, community or country.

I urge you to not support HB 1468 as it applies a double standard of justice which America cannot stand for. Justice is a right of all people and if a person is within our borders they will experience the same justice everyone else does. HB 1468 introduces a broad stroke burden and strain upon the families and law enforcement who face incarceration. If a person is not an immediate threat to our safety they shouldn’t burden our justice system any more than anyone else.

I urge you to not support HB 1723 as it is unnecessary to track individuals movement outside of the current systems that exist. If an entity within the state enters an agreement to settle some refugees, Virginia doesn’t need to have a “refugee list” that is updated prior to settlement agreements being executed. This increases the burden of the government and those most affected by the refugee status. This slows down organizations ability to help these people who are most vulnerable.

I urge you to not support HB 2000 as it increases the burden to do work within the state with the state and is ridiculous to write a law that chains our state’s freedom and self governance to a minimum standard held by the federal government. Virginia doesn’t need laws that remind us what the federal law is. What a waste of time.

I urge you to not support HB 2001. The law places unnecessary burden on the education system to perform law enforcement. Furthermore the law casts a cloud of suspicion where none is needed. The education of those seeking to better themselves is in the interest of America and our institutions are not a place for a dark cloud of suspicion but enlightenment and promise.

I urge you to not support HB 2002. The law places an unnecessary burden on the entities who are trying their best to help immigrants and refugees find a better life. The immigrants and refugees are already cleared by the federal government. The law is made to create red tape and excessive state mechanism to disrupt these important services. I urge you not to support systems requiring the registry of individuals age, gender, and national origin of each individual. They are not in the interest of America.

I urge you to not support HB 2236. In this time of change, it is important to not to bludgeon localities found to violate the law nor is it necessary to chain our law to that of the federal system. First the language of the law is despicable to take away funding to a locality just because they are found to violate the law. Note that it doesn’t include willful or not just found in violation. The law is designed to hurt localities that fail to enforce immigration laws which of course will be localities with immigrants. The law is designed to reduce services which will cause unnecessary stress and harm to the members of the locality and is sinister in its attempt to drive people away. It is an awful law that is in no way representative of American values.

I urge you to not support any of the following: HB 1468, HB 1723, HB 2000, HB 2001, HB 2002, and HB 2236.

Re: SB 1262

I live in Charlottesville VA and am alarmed at the rate of anti-immigration bills being introduced into the Virginia state legislature. Having a locality be libel for an illegal immigrant’s actions via VA SB1262 is just disguised discrimination and intimidation. There are already plenty of laws in place to address illegal activity regardless of a persons immigration status. I urge you to vote, debate and take a stand against VA SB1262 and other proposals in its vein.


What the heck have I been doing?

I haven’t made much effort to blog recently so I figured I would do a catchup article on some of the projects I’ve worked on recently.

gor is a http traffic replay tool written in go. When I first found Gor, it was a great tool but there were several bugs that made it unstable or unreliable. When I had a little time, I submitted several enhancements.
  • added dynamic http worker scaling which was key for throughput.  I also provided documentation updates to help others discover and identify bottlenecks in their testing systems.
  • sorted the TCP packets properly which was pretty crucial for replaying connections that had out of sequence packet arrival. Alejandro Martinez of Vivid Cortex helped me in spotting the problem.

moto is a mock AWS endpoint written in Python. We use AWS a ton at Room Key and needed to better test our internal Python tools. Moto had a good feature set but didn’t quite implement the more advanced things we were using so I added to the library over 11 different PRs.  Here are a few of the biggest features I added:

logstash-kafka and jruby-kafka are my Ruby projects that I created to make the Kafka plugin for Logstash. The following link is where the Elasticsearch blog announces support for Kafka in Logstash and they credit my project as being the origin of the support, Because 1.5 isn’t out yet, I still maintain support for my independent plugin and provide input and support otherwise for the official plugins logstash-output-kafka and logstash-input-kafka.

 Sometimes other projects just aren’t getting enough attention for their PRs from their primary owner and I occasionally will volunteer to be a maintainer (as I want my PR’s merged). They are generally low volume projects that don’t need much love beyond a merge here and there combined with a release. These include:
  •  s3_file, a Chef resource for downloading files from S3 for Chef recipes
  • grunt-aws-sdk, a wrapper for AWS’s Javascript SDK for Grunt tasks.

I’ve touched quite a few different projects over the last year or so. In many cases I consider these projects to be an act of standing on the shoulder of giants and adding a little extra to each. That being said, even as I contribute to these external projects, most of my work happens internally at Room Key. You can see the difference between my public activity graph versus my private graph:
Screen Shot 2015-05-07 at 11.02.16 PM Screen Shot 2015-05-07 at 11.02.33 PM
So there you have it.  A small snapshot into what’s been happening over the last year.

Ubuntu 12.10 and 12.04.1 LTS release note snippets

With the release of Ubuntu 12.10 and 12.04.1 LTS to the world, Ubuntu is showing their preference for Tomcat 7, Java 7 and Python 3.  Check out some highlights of the release below.

12.04.1 PrecisePangolin

12.10 QuantalQuetzal

12.04.1 Highlights:
Please note that Tomcat 7 will replace Tomcat 6 as the supported version of Apache Tomcat in Ubuntu 12.10.
Please note that OpenJDK 7 will become the default Java implementation in Ubuntu 12.10.
Chef 0.8.16 (948437) and corresponding Ohai packages (948438) removed from precise at the request of OpsCode.
12.10 Highlights:
Chef 10.12.0 has been re-introduced to Ubuntu in-conjunction with OpsCode.
canonical urges people to migrate to python 3: If you have your own programs based on Python 2, fear not! Python 2 will continue to be available (as the python package) for the foreseeable future. However, to best support future versions of Ubuntu you should consider porting your code to Python 3. Python/3 has some advice and resources on this.

Ubuntu 12.10 ships OpenJDK7 as the default Java implementation. This brings improved performance, new features and better compatibility with other Java 7 implementations.

Use of the OpenJDK6 is now deprecated and the openjdk-6-* packages in universe for Ubuntu 12.10 will not be provided in future releases of Ubuntu.

Install Firefox on Amazon Linux x86_64 Compiling GTK+

Amazon Linux doesn’t offer the Gimp Tool Kit (GTK+) so if you want to run Firefox on an Amazon Linux system, say for Selenium testing, you are left having to compile the system yourself.  Luckily you have found this post.  Create the script below, run it as root and it will build all the components needed for GTK+ and its dependencies for Firefox to run just fine on the system.

vi ./gtk-firefox
chmod 755 ./gtk-firefox
sudo ./gtk-firefox

After you have built the packages, add the /usr/local/bin to your path by updating your .bashrc file.

cat << EOF >> ~/.bashrc
export PATH

Here is the gtk-firefox file for your pleasure.

# GTK+ and Firefox for Amazon Linux
# Written by Joseph Lawson 2012-06-03
# chmod 755 ./
# sudo ./
function init()
export installroot=$TARGET/src
export workpath=$TARGET
yum –assumeyes install make libjpeg-devel libpng-devel \
libtiff-devel gcc libffi-devel gettext-devel libmpc-devel \
libstdc++46-devel xauth gcc-c++ libtool libX11-devel \
libXext-devel libXinerama-devel libXi-devel libxml2-devel \
libXrender-devel libXrandr-devel libXt dbus-glib \
libXdamage libXcomposite
mkdir -p $workpath
mkdir -p $installroot
cd $installroot
bash -c "
cat << EOF > /etc/
function finish()
cd $workpath
wget -r –no-parent –reject "index.html*" -nH –cut-dirs=7
tar xvf firefox*
cd bin
ln -s ../firefox/firefox
function install()
wget $1
FILE=`basename $1`
if [ ${FILE: -3} == ".xz" ]
then tar xvfJ $FILE
else tar xvf $FILE
./configure –prefix=$workpath
make install
cd ..
# adds the /usr/local/bin to your path by updating your .bashrc file.
cat << EOF >> ~/.bashrc
export PATH

view raw

hosted with ❤ by GitHub

If you are running OSX Mountain Lion or above and cannot get Firefox to run via the SSH -X command, make sure you have XQuartz installed as Apple removed X11 by default.

Edited to make Firefox latest release more reliable. Updated with Gist.

Edit 11/21/2012: Added dbus-glib dependency to gist. Added notes about running on OSX

Creating a X.509 or Signing Certificate for AWS EC2 using Powershell and Windows SDK

Currently Amazon AWS only allows Base-64 encoded certificates to be used as an EC2 credential.  Further when creating a user in IAM, Amazon doesn’t provide a convenient certificate generator which it does allow for the root user.  If you want to create these type of certificates on Windows you will find that it is not easy to get the certificate out of a binary (DER) format.  Many will point you to OpenSSL to do the conversion and that is fantastic however some may not be able to use OpenSSL.

I am going to lay out some steps that will help you quickly create an X.509 certificate and private key using the Windows SDK makecert.exe utility and Powershell.

First download the Windows SDK.  When installing, only the Tools option is necessary.  Usually the SDK installs to C:\Program Files\Windows SDK\version\bin.  I would suggest that you modify your path to include the SDK bin directory if you are going to make a lot of these certificates.  These instructions assume that makecert is in your path.

Makecert has a number of functions, but the feature we are interested in is its ability to generate self signed certificates with a straightforward command.  All certificates output are in a DER binary format so they are currently unsuitable for AWS consumption.  We will use powershell to convert from a binary object to a Base-64 string.  Note that makecert normally creates a single file containing both the private key and the public key.  Since we want these elements in separate files, we use the -sv toggle which saves the private key to a .pvk file.  One last gotcha to note is that the tool seems to want you to specify the resulting files with the extensions as show in the help and examples.  If you don’t use the .pvk and .cer extensions it might not output the file.

Assuming that you have the SDK install and can run makecert, here are the steps to get your certificate AWS ready.

Create the self signed certificate and corresponding private key file using makecert:

makecert -sv privatekey.pvk certificate.cer

Next we are going to use powershell and some .NET magic to process the binary files into a text friendly BASE-64 format (PEM).

Process the certificate first:

[byte[]] $x = get-content -encoding byte -path .\certificate.cer

[System.Convert]::ToBase64String($x) > .\cer-ec2creds.PEM

Next Process the private key:

[byte[]] $x = get-content -encoding byte -path .\privatekey.pvk

[System.Convert]::ToBase64String($x) > .\pk-ec2creds.PEM

You can now examine the resulting files in notepad to confirm that they are indeed in a BASE-64 format.

notepad .\cer-ec2creds.PEM

notepad .\pk-ec2creds.PEM

The files should work fine even if they are missing the proper headers and footers.  If you want to include them, they should be as follows.  Remember to add an end line character to the file as well.

For the certificate PEM file:



For the private key PEM file:



I hope this is useful.  Please feel free to comment and share other methods.

Here are some references:


Financial Planning Shortcuts and Freedom from Stress

I have created a simple spreadsheet to reduce the stress of planning and keeping on track with a budget.  I have found that I cannot stick to a rigid budget, but if most of my financial moves are automatic I am much more likely to keep on the budget.  The purpose of this sheet is to allow me to see a number of details of my financial life.  I used to self calculate these values each year or so after a pay adjustment to make sure the numbers were right.  Finally, I just built a Google doc out of it.

The sheet is useful to me in a number of ways such as:

  • making sure that my spending is in balance with the 50-20-30 net income budgeting principal,
  • being able to quantify what amount of money I can spend at my discretion each day,
  • allowing me to calculate recurring costs to allocate for automatic bill pay,
  • proving visibility into how much I am paying for services daily, monthly and yearly,
  • set magic totals which give savings goals and ideas as to where I want my reserve funds to be,
  • and of course play around with salary changes to see how it affects the end game.

The 50-20-30 budget has been around for some time and basically says I want to spend 50% on needs, 20% on savings, and my 30% on wants.  I turn this rule on its head slightly because I find pinpointing every percentage of my spending impossible.  Instead of apply the percentages against all recurring points of the budget. It helps me live within my means and still have some discretion as to how I’m going to live and spend money day to day.  Basically this is structure to allow me to be as free as possible from financial angst.  If you want your life to be a little more stress free, automating your budget with these principals can go a long way.

I spend a maximum of 50% of my net income on absolute needs such as power, rent, water, car insurance, gasoline and taxes.   Having a place to live with running water and electricity are needs.  A car can be considered a need or a want depending on the circumstance of your income.  Is a car your only means to get to work every day?  You should chalk the car, maintenance, gasoline and insurance up as a need for the time being.

Next, 20% of the net income Savings should be on a well diversified split between long term retirement vehicles, stock and mutual fund investments and more liquid options such as a savings account or bank CDs.  Keep in mind that with 401k contributions you make pretax but should count it in with the savings percentage.  How you split up savings should reflect your risk style.   Since I am a younger investor, I am trying to max out my Roth IRA prior to maxing out the 401k as my salary will most likely increase over the years thus, theoretically, maximizing the tax savings as Roth IRA withdrawals are tax free.  I find stocks to be the last thing I am investing in and see them more as hobby but you can get a good return.  Remember the day you want to buy is the day everyone else sold because it hit rock bottom.  If you believe the company will be around after the bad days, take the investment and run with it.  Keeping your savings automatic is the key to maintaining the percentage.

Finally there is the 30% wants budget.  Some people like to list the everything as the 50-30-20 budget, but needs and savings come first.  Wants are the discretionary.  They are the creature comforts and services you choose to use.  You must be serious about identifying something as it really is.  Cable, Internet or cigarettes are not needs, no matter how much you want them.  Note that these are all recurring wants.  The key to the spreadsheet is to list as many things that you pay for over and over as possible that you see as something you want but are not planning to cut off.  You could include things like cellular phone, magazines, donations to organizations, Internet services, recurring software upgrades, credit card fees, travel budget and really anything you wish to plan for and use.  Wants are what you want right?

The goal of the budget by percentages is to identify as many consistent, recurring costs as possible and quantify them against a yearly plan.  If your income is unknown month in in and month out, the sheet can still help you plan your recurring needs and wants.  Try your best to estimate your income.  If you have a salary or somewhat constant income the sheet is even more powerful for giving you freedom.

Luckily or unluckily we have many recurring costs within our lives.  By mastering our recurring costs, we are able to be more conscience in our ability to tackle unknown costs.  By listing all recurring costs into the sheet, you can finally come down to your Left Over Number.  The Left Over is the money left over after you have saved a percentage of your income, you have accounted for all your recurring needs and you have indulged in a number of recurring wants or services.  This should be your money in the pocket number.  It is a special number as it cuts down to give you a Cash Per Day number.  If you budget is out of whack, it could be a depressing but in the end, this is the money in the pocket number.

Finally the key to all this savings and cash flow business is to make it as automatic as possible.  By identifying how much money you need to work through a month, you are releasing yourself from the stress of forgetting to pay bills.  Further, you are more conscience with you day to day expenses.  I setup two bank accounts where one is for the left over want money and another is for needs and recurring wants that I was planning to keep.  Each paycheck the Move To Bill Per Check amount in the spreadsheet is moved to a separate checking account.  Then I only have available a limited pool of spending money and my automatic bills are free of overdrafts.  In the end I had to go to a weekly cash allowance and when times get really bad, it is a daily cash allowance.  If I spend too much, I cut to daily allowances until I have a buffer for another week.  Buffers are your friend.  Build the cushion if you can and feel a little more free.

I hope you find this post useful.  Below is the link to the sample Google doc which you can use for your own planning.

View Joe’s Sample Financial Planning Google Doc

Testing iexplore with Selenium Server as a Jenkins/Hudson Slave via Seleniumhq Plugin

Selenium Server, the 2.0 blend of Selenium RC and Webdriver, is the latest in CI Testing goodness from the Selenium project and SeleniumHQ.  During my experimenting with trying to get Selenium to take scripts made in the Selenium IDE and run them with the new selenium-server-standalone-2.0.0.jar via the Jenkins Seleniumhq Plugin on a Jenkins/Hudson slave, I had a few different issues.  My primary problem was getting *iexplore tests to execute from a Jenkins/Hudson slave node.  The slave is running as a service started as a domain user instead of Local Service.  The slave has to run as a domain user because the Jenkins slave is also doubling as a Windows build server running off a Linux master.  The goal was to test with Firefox 5 and Internet Explorer 7 in a Windows Server 2003 R2 x64 environment.  In the end, I could only get *iexplore tests to run reliably by using Window’s automatic logon and then launch the Hudson/Jenkins slave as a startup shortcut which was just:

javaws http://hudsonhost.local:8080/hudson/computer/slave-agent.jnlp

I believe this will also work with nearly any other Windows distribution up to the latest 7/2008R2 series. It was undesirable to run the Slave service in this way however it may just be what is necessary to test older software with a Windows Server 2003 platform.  This approach locks you out of the console of the server, but you can leave the user with just user privileges and then remote in to administer if needed.

By the way, Firefox 5 ran flawlessly as a domain user after creating a Firefox profile for Selenium.

Welcome Nome! Re: Alaska Dot Experiment

My friends,

I announce a milestone for our experiment.  The Alaska post is a success!  Judging by the Clustrmap below, we have successfully lured 1 – 2 people to click on this site and see what the heck I am spouting about!   I’d like to thank everyone who contributed to this including Crazyredbeard who was here to inspire the post and especially that or those Alaskan(s) who went for the sweet sweet honeypot post.  Being that Alaska doesn’t have many cities it would appear the person resides near Nome, Alaska.  This wonderful city of approximately 3,500 was featured in the Simpsons Movie and is a port for the southern point of the middle Alaska peninsula.  Even though small, Nome also features two airports.  Nome was first formed during a gold rush around 1890 and had the notable citizen of Wyatt Earp during its boom days.  The city had a problem with claim jumping so the US Government setup Fort Davis on the outskirts with 100 soldiers to keep the boom manageable.

Thank you Nome and welcome.

music, tech, life in charlottesville