IT/Software Projects

Recent posts

What’s pass-reference-by-value?

August 14, 2020 - Categories: IT/Software Projects

6 minute read

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.

Read More

Linkets - A Zendesk App

October 29, 2017 - Categories: IT/Software Projects

2 minute read

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.”

Read More

DNSReRoute - A Full SaaS Platform

May 21, 2017 - Categories: IT/Software Projects

19 minute read

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?

Read More

BASH Hacks as First Class Commands

May 11, 2017 - Categories: How-to Guides,Utilities And Other Useful Things,IT/Software Projects

1 minute read

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:

Read More

Dennis Nedry Failed Login

March 11, 2017 - Categories: How-to Guides,Utilities And Other Useful Things,IT/Software Projects

less than 1 minute read

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.

Read More

The Move to Jekyll

March 4, 2017 - Categories: IT/Software Projects,How-to Guides

6 minute read

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.

Read More

YouPassButter Slack Bot, Part 2

February 4, 2017 - Categories: IT/Software Projects,How-to Guides

11 minute read

In part 2, we add dynamic meme generation, OAuth configuration, and re-structure our API to support more Slash commands.

Read More

YouPassButter Slack Bot, Part 1

January 7, 2017 - Categories: IT/Software Projects,How-to Guides

6 minute read

A dirt simple Slack bot primer, using Ruby, Sinatra, Heroku, and Slash commands

Read More

Share Your Salary App Part 3

February 23, 2015 - Categories: IT/Software Projects,How-to Guides

18 minute read

So in Part 1 we built the core classes for our app and we exposed those classes as a RESTful web service in Part 2. Now, we'll build a UI and wrap up the project.

Feel free to check out the application first or pull up the source in another window.

Read More

Share Your Salary App Part 2

January 29, 2015 - Categories: IT/Software Projects,How-to Guides

6 minute read

In Part 1, I covered the core classes for the Share Your Salary application. These classes covered my Model and Controllers in my quasi-MVC application. Now we're ready to expose those controller functions via a RESTful API.

Read More

Share Your Salary App Part 1

January 23, 2015 - Categories: IT/Software Projects,How-to Guides

7 minute read

In a previous project, I built "Who's that person in that thing?," a JavaScript web app that called The Movie DB's API to find common actors given two movies. That was fun, but I still wanted to build an API service myself and I wanted to experiment with some new tools. But first I needed a project idea as an excuse to use them.

Project Idea/Application Premise/The Excuse

People are funny about money, especially about their salary. With most people, it's a taboo to talk about it. But everyone's been curious at some point to know how they compare to their peers. Some people fear they are getting paid less to do the same work as others, and sometimes that fear is founded in fact. The "Share Your Salary" app is an anonymous salary survey tool to address these kinds of use cases.

Before we get into any of the tools or how-to, feel free to check out the application first or look over the source.

Read More

MongoDB and PHP Primer

January 8, 2015 - Categories: IT/Software Projects,How-to Guides

4 minute read

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.

Read More

Who’s that person in that thing? App

July 28, 2014 - Categories: IT/Software Projects

less than 1 minute read

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.

Read More

Bootstrap Scrollspy Workaround

June 16, 2014 - Categories: IT/Software Projects,How-to Guides

10 minute read

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.

Read More

Raspberry Pi Project 1: NAS and XBMC

January 4, 2014 - Categories: IT/Software Projects,How-to Guides

9 minute read

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.

Read More

HTML5 Canvas and a Horace Dediu-esque Chart

May 13, 2013 - Categories: IT/Software Projects,Utilities And Other Useful Things

9 minute read

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.

Read More

Web Scraping, PHP, and Wheel of Fortune

April 17, 2013 - Categories: IT/Software Projects

4 minute read

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).

Read More

To Do List App

April 3, 2013 - Categories: Utilities And Other Useful Things,IT/Software Projects

2 minute read

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

Read More

Arduino Project 5: Internet Control without Ethernet Shield

February 18, 2013 - Categories: IT/Software Projects,How-to Guides,Utilities And Other Useful Things

3 minute read

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.

Read More

WordPress: Twenty Eleven Child Theme with Galleria Slider

January 28, 2013 - Categories: IT/Software Projects,Utilities And Other Useful Things

less than 1 minute read

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:

Read More

Arduino Project 3: Accelerometer Primer

January 21, 2013 - Categories: Electronics Projects,IT/Software Projects,How-to Guides

2 minute read

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.

Read More

Read More

Konami Code

November 16, 2012 - Categories: IT/Software Projects,How-to Guides

2 minute read

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.

Read More

Google Hacking

November 14, 2012 - Categories: IT/Software Projects,How-to Guides

2 minute read

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.

Read More

Arduino Project 1: Heat Seeking Robot (Part 1.5)

August 23, 2012 - Categories: IT/Software Projects,How-to Guides

10 minute read

Be advised This post is quite old (23 Aug 2012) and any code may be out of date. Proceed with caution.

Read More

Arduino Project 1: Heat Seeking Robot (Part 1)

July 21, 2012 - Categories: IT/Software Projects

3 minute read

Be advised This post is quite old (21 Jul 2012) and any code may be out of date. Proceed with caution.

Read More