IT/Software Projects
Recent posts
What’s pass-reference-by-value?
August 14, 2020 - Categories: IT/Software Projects
I’m not an authority on this - take my explanation with a grain of skepticism and do your own research.
I’ve been working on going over some of the fundamentals of computer science recently since I don’t have a traditional computer science education. Pass-by-value recently came up, and I thought it would be a quick foray to properly learn the difference between pass-by-value and pass-by-reference. Surely something so fundamental must have clear answers, right?
And then it turned into a huge fucking rabbit hole, with lots of dissenting views, and very confusing discussions. Just Google it, check out some of the StackOverflow articles. There’s a lot of content, but it’s not very clear. In the abstract, the concepts are simple. In the context of Python and Ruby, it’s a confusing mess.
So that’s what this post is about - trying to clarify the differences between the two and define what “pass-reference-by-value” actually means.
Linkets - A Zendesk App

October 29, 2017 - Categories: IT/Software Projects
It’s official! Linkets has been formally published on the Zendesk App marketplace - go check it out!
One of the coolest things about Zendesk (both the company and the software itself) is how developer-friendly it is. The API is well documented and powerful, and they even provide an App Framework that allows you to develop “widgets” that are displayed in the standard Zendesk UIs. Full disclosure, I currently work at Zendesk.
Zendesk Support has a ton of features, but doesn’t have the ability to link related tickets. There is a Linked Ticket app you can install for free, but this only allows you to create new tickets, and only as a child ticket. Want to link to an existing ticket? Too bad. Need to support relationships other than parent/child? Too bad. I want people to use and love Zendesk, so I decided to take a crack at my own version of the linked ticket app. I titled my app “Linkets.”
DNSReRoute - A Full SaaS Platform

May 21, 2017 - Categories: IT/Software Projects
Dec 28 2017 Update OpenShift deprecated their original offering, so the API backend is completely dead. All functionality in the single page app (besides the Auth0 integration) is now broken.
About a year ago, I had a use case for a simple redirect. I just needed to redirect developers from an old Jenkins DNS record (that pointed to an instance that was destroyed) to a new DNS record (pointing to the new, running Jenkins instance). Now this is a trivial task if you want to run NGINX or Apache, but becomes more challenging if you want to avoid that overhead. I tried hosting a simple JavaScript redirect using S3, but the bucket obviously didn’t match my DNS name, so that didn’t work. Route53 doesn’t support HTTP redirects. I was at a loss - how could something so trivial require a whole web server to accomplish?
BASH Hacks as First Class Commands
May 11, 2017 - Categories: How-to Guides,Utilities And Other Useful Things,IT/Software Projects
In my new job at Zendesk, I deal with a lot of Ruby projects that leverage bundler for dependency management. Specifically, right now I’m working with SparkleFormation, stack_master, and aws-vault. With that toolset, each command starts with a staggering 43 static characters that don’t change between commands, like this:
Dennis Nedry Failed Login

March 11, 2017 - Categories: How-to Guides,Utilities And Other Useful Things,IT/Software Projects
This one’s a short read, as most of the code and the concept was adopted from the jQuery Raptorize plugin. Basically, I was admiring the Raptorize plug-in and thought how funny it would be to have Dennis Nedry pop up and deliver his famous line, “Ah ah ah, you didn’t say the magic word!” whenever you had a failed login. Thanks to the jQuery Raptorize plugin, the majority of the work was done. I just needed a picture of Dennis Nedry, an mp3 file for the audio, and tweak the code slightly. Then I put together a fake login page to demo the whole thing.
The Move to Jekyll

March 4, 2017 - Categories: IT/Software Projects,How-to Guides
WordPress has served me well over the years, but it’s time for me to move on. My blog first started with Wordpress.com hosting, but I didn’t like that I was hosting WP’s ads, a custom domain was an up-charge, and they limit which themes and plugins I could use. So I migrated to a self-hosted WordPress instance, allowing me to serve Google ads, add membership functionality, and allow people to subscribe to my site by email.
YouPassButter Slack Bot, Part 2

February 4, 2017 - Categories: IT/Software Projects,How-to Guides
In part 2, we add dynamic meme generation, OAuth configuration, and re-structure our API to support more Slash commands.
YouPassButter Slack Bot, Part 1

January 7, 2017 - Categories: IT/Software Projects,How-to Guides
A dirt simple Slack bot primer, using Ruby, Sinatra, Heroku, and Slash commands
MongoDB and PHP Primer
January 8, 2015 - Categories: IT/Software Projects,How-to Guides
I recently used MongoDB in the Share Your Salary app and had a few hiccups as I tried to blunder my way through learning how to use it. MongoDB, like many NoSQL document databases, uses JavaScript Object Notation or JSON to represent the objects/documents. JSON is great, especially when you're using JavaScript in conjunction. PHP, however, doesn't 'speak' JSON natively; it uses arrays instead, and this makes for some less than intuitive interactions. This post will go over some of the basic CRUD operations using PHP against a MongoDB.
Who’s that person in that thing? App

July 28, 2014 - Categories: IT/Software Projects
I've been looking for an API project for awhile now, either to write an API service or a client/app that consumes one. Then I finally thought of a use case - an app that would allow you to find an actor based on two movies they've been in, using only JavaScript and APIs. It took me awhile to find a movie API service that was free and suited my purposes, then I found TheMovieDB (which has a pretty sweet API actually and is free to use). Check out the demo and grab the source from GitHub if you want to do something similar.
Bootstrap Scrollspy Workaround
June 16, 2014 - Categories: IT/Software Projects,How-to Guides
I was recently working on a new HTML project when I came across the Scrollspy feature in Bootstrap's framework (v2.3). The feature looks really good on Bootstrap's pages, I figured I'd use it in my project as well. I immediately had issues with the links aligning the content to the viewport and issues with the scrollspy highlighting the right link based on what content was in the viewport. This was all supposed to be out of the box functionality... After doing some research (read: Googling), I came across a few bug tickets and workarounds, but no wholistic solutions to reproducing the functionality on Bootstrap's site. So I decided to build it manually.
Raspberry Pi Project 1: NAS and XBMC
January 4, 2014 - Categories: IT/Software Projects,How-to Guides
The Raspberry Pi makes a great HTPC or media PC, whatever you want to call it, because of its low cost, low power consumption, quiet, and small form factor. As I was getting ready to start my Raspberry Pi build, I realized that the Pi could take over a few other functions that my desktop does, including NAS, at a fraction of the cost (see my previous post about Powering a Pi and related utility savings). But could I modify a RaspXBMC build to also run Samba or some other network file sharing? Could XBMC be installed on Raspbian with less than a thousand calls to aptitude? Could XBMC and Samba run simultaneously on a Pi without making video playback unwatchable? That's what I hoped to find out.
HTML5 Canvas and a Horace Dediu-esque Chart

May 13, 2013 - Categories: IT/Software Projects,Utilities And Other Useful Things
A few months back, I came across this chart illustrating Apple's segment revenues on Reddit:
This is a great chart because it has impact with just a glance, and yet yields more solid data the longer you examine it. Ever since I saw this chart I wanted to build my own for my department, for startups, and offer it up to anyone else who might want to build a similar chart.
Horace Dediu of Asymco.com put this together using a chart-building iPad app called Perspective. Now, I should have just downloaded the damn app and made some similar charts and been happy. Instead I built my own from scratch using HTML5's canvas tag. Check out the demo.
Web Scraping, PHP, and Wheel of Fortune
April 17, 2013 - Categories: IT/Software Projects
Be advised This post is quite old (17 Apr 2013) and any code may be out of date. Proceed with caution.
My fiancee loves Wheel of Fortune and watches whenever she can. The clever folks over at Sony (producers of Wheel of Fortune) introduced a loyalty program called "Wheel Watchers." People who sign up get a "Spin ID," and if your Spin ID is chosen for a given episode, you win one of the prizes they gave away on the show. Only catch is you have to watch every night.
This is a lot of random background information, but there's a reason. My fiancee asked me to write an application that would check the Spin ID every day and notify us if we won. This seemed like a great reason to learn some web scraping with PHP (although you could probably do this in just about any language).
To Do List App

April 3, 2013 - Categories: Utilities And Other Useful Things,IT/Software Projects
Be advised This post is quite old (03 Apr 2013) and any code may be out of date. Proceed with caution.
Update Feb 2017 I’ve happily used this TODO app for the past ~4 years, but I’m taking it down with the rest of my old PHP hosting. In conjunction, I’ve removed the demo-related content from this post. For anyone interested, I’m now using Wunderlist
Arduino Project 5: Internet Control without Ethernet Shield
February 18, 2013 - Categories: IT/Software Projects,How-to Guides,Utilities And Other Useful Things
I'm getting ready to start an Arduino home automation project, so I started looking at ways to interface with an Arduino across the internet. That way I'll be able to control all of the lights, locks, etc. anywhere I have internet access.
Now, the obvious answer was to buy an Ethernet shield, but I already run a home web server so that seemed unnecessary. I saw a few solutions using Processing or Python scripts, but that seemed unnecessarily complicated. It took a fair amount of digging and brainstorming, but I've found an ultra-easy, ultra-flexible, and ultra-fast solution. Ultra.
WordPress: Twenty Eleven Child Theme with Galleria Slider

January 28, 2013 - Categories: IT/Software Projects,Utilities And Other Useful Things
OK - I've been spending the last few hours getting acquainted with the WordPress backend (that sounds more risque than I had intended) and making my first custom 'child' theme.
If you have an interest in making custom themes and you're just getting started, I've got a few very generic tips:
Arduino Project 3: Accelerometer Primer

January 21, 2013 - Categories: Electronics Projects,IT/Software Projects,How-to Guides
This project is more of a warm-up than a full-blown project. I wanted to get a feel for the basic workings of an accelerometer in preparation for a larger undertaking (no spoilers!). I borrowed this project idea from a forum about Arduino and accelerometers but can't remember which forum, so I can't credit back to the original poster - sorry about that.
Before we get to the how, let's take a look at the what. Basically we have an accelerometer and 5 LEDs mounted on a breadboard. Four of the LEDs are mounted to correspond with the X and Y accelerometer axes and one LED is in the middle. When the accelerometer is level, only the middle LED is illuminated. If you tilt the accelerometer to the side, the LED on that side is illuminated.
Easy Modal Overlays

November 21, 2012 - Categories: IT/Software Projects,How-to Guides
Be advised This post is quite old (21 Nov 2012) and any code may be out of date. Proceed with caution.
Konami Code
November 16, 2012 - Categories: IT/Software Projects,How-to Guides
The Konami code... if you were born in 1990 or earlier, and play (or played) video games, you probably already know what I'm talking about.
The history of the Konami code is awesome in it's own rite. Here's the short version: the Konami code is a famous cheat code (up, up, down, down, left, right, left, right, B, A) that first appeared in NES games like Contra. Many times the code was added to video games as a tribute to the classic games or as a tribute to Kazuhisa Hashimoto, the developer who accidentally left the cheat code in the game when it was sold to the public.
Google Hacking
November 14, 2012 - Categories: IT/Software Projects,How-to Guides
When I was still working at the University of Wisconsin, a co-worker of mine showed me a way to find unprotected directories indexed by Apache and web cameras. Not those kind of web cam feeds - these are usually security cameras in innocuous places, like restaurants, streets, tops of buildings... etc., that are so benign (usually) that whoever set them up decided they didn't need to be secured (or didn't know how to secure them).
Anyway, the way he found these was the interesting part. At the time, it was termed "Google Hacking" although now it is sometimes called "Google dorking." It is simply using Google to find unsecured web content with targeted search terms.
Arduino Project 1: Heat Seeking Robot (Part 1.5)

August 23, 2012 - Categories: IT/Software Projects,How-to Guides
Be advised This post is quite old (23 Aug 2012) and any code may be out of date. Proceed with caution.
Arduino Project 1: Heat Seeking Robot (Part 1)

July 21, 2012 - Categories: IT/Software Projects
Be advised This post is quite old (21 Jul 2012) and any code may be out of date. Proceed with caution.