(Jan '17) Catcher's Mitt- A Simple Tool To Print Http Requests

The other day I released Mitt, a simple tool that listens for http connections on a specified port and prints out requests to stdout.

Read More


(Dec '16) Bulk Upload Mailgun Suppressions CSV

This is just another one of those posts summarizing some time I wasted so hopefully someone else won't waste theirs.

If you have a big list of suppressions (emails of users who unsubscribed, marked you as spam, etc) from another email provider (eg Sendgrid) and want to import them into Mailgun, there's no easy way to do it. The web UI doesn't seem to have a way and their SDKs don't support it yet.

Their API, however, does. Here's a little ruby script that will read a sendgrid csv and upload all the emails to mailgun as suppressions (in this case "complaints", which are the equivalent of sendgrid's "spam" list emails).

Read More


(Aug '16) How to use time

How much work should you do? If you manage a team, how much work should each of your direct reports do?

It's a simple question, but how you answer it can have a profound impact on your company and culture.

Read More


(May '16) Making Ruby Look Like Javascript

Yeah, yeah, but your scientists were so preoccupied with whether or not they could that they didn't stop to think if they should. - Dr. Ian Malcolm, Jurassic park

Inspired by this tweet, I was wondering tonight to what degree I could make ruby look like other languages. Please don't anyone ever actually do this.

Read More


(Jul '15) Down With Craftsmanship

The appeal to "craftsmanship" is a blight on software engineering decision-making.

Maybe you've been through a technical debate like this:

Read More


(May '15) Wallopics Is Dead

TLDR

Wallopics.com is broken. Imgur decided to start blocking it. It won't be coming back. If you still want to use it, you can download this html file and open it in a browser.

Read More


(Feb '15) I'd like To Hate on Sports Fans

I’d like to rag on sports fans for their ridiculous tribalism, but then I realize that half my clothing is just one organization or another that I’d like to associate with, and that I feel a sense of camaraderie with those who share those preferences.

Read More


(Sep '14) Load useful data in the rails console

The basics

I spend plenty of time in the rails console in my local dev environment, and I often find myself in need of dummy data or specific objects set up to mess around with. For example, the user I test most things with is KevinKuchta, so I might run kevin = User.find_by_username('KevinKuchta'). It's like 40 characters long, but I type it often enough that I'd love to optimize it (and similar bits of code).

Read More


(Aug '14) Fishy Code: In Which I Lose My Mind

An Unexpected Journey

Localhost? Why the hell is it accessing localhost?

Those words ran through my head while I peered at a pile of compressed javascript. It was in a js file being loaded from a remove server- someservice.com/api.js. It was part of a connection speed test api I was using on a weekend project.

Read More


(Jul '13) Why Startups

When you work for a large company, you work for yourself.

You work hard because you're incentivized to do so: you're given raises if you do and fired if you don't. You're motivated almost entirely by the incentives the company provides you with. Because a lot of people at the company are the same way, at least a few of them will follow those incentives to the letter, benefiting themselves to the detriment of the company.

Read More


(Jul '13) Why I'm Leaving

Last Friday I tendered my resignation at Expensify, the startup I've been working at for the last 2 years. The following Tuesday (by mutual decision) was my last day.

Before I made the decision to start looking at other companies, I wrote a short essay to myself outlining the reasons. Since several people have asked, here follows a cleaned-up version of that essay.

Read More


(May '13) Chrome is too smart for its own good

Run the following into the chrome console:

(function(){
    var foo = 3;
    (function(){
        debugger
    })();
})();

Read More


(Apr '13) Ember.js @each@each workaround

Background

This is just a simple workaround post for future references. For more in-depth reading, read up on Ember's object model.

Read More


(Jan '12) Basic Authentication With Jsonp

Note: I use github's api as an example here because, at the time of writing, it supported both jsonp and basic authentication. That is no longer the case, though, so these examples probably won't work as-is. As far as I'm aware, though, the technique is still sound.

Read More


(Aug '11) Mac shell script to toggle socks proxy

What

A simple script that'll toggle your System Preferences proxy settings on a Mac. It takes one argument- the name of the interface on which to toggle the proxy (eg, 'Airport' or 'Ethernet'). You can easily wrap this with an automator script using the "Get specified text" action to provide the argument and the 'Shell Script' action to run the script.

Read More


(Aug '11) Matching PHP and JS Encryption

Problem

You'd think that encryption is in encryption- AES is AES, DES is DES, etc. Encrypt with scheme X, decrypt with scheme X, and it comes out clean. Turns out, though, that it's not that easy. Or rather, it is, but the relevant libraries on different platforms like to do things different. Consider that to encrypt/decrypt something with AES you need:

Read More


(Apr '11) Converting state-plane coordinates in ruby

I got a pile of data with coordinates last night. The coordinates were in State Plane NY West format, which is a semi-state specific coordinate system that needs to be translated before you can use it like latitude/longitude. There are better references out there if you want a thorough treatise on the subject, but I thought I'd give the concrete solutions I came up with in case you, like me, just want to get lat/lon and could hardly care less about 80's era cartography.

Read More


(Feb '11) Facebook iFrame Authorization

So, it turns out that any facebook page, when loaded in an iframe, will explode. That is, it'll display the facebook logo and nothing else. It'd say it's an anti-clickjacking measure, if I had to guess.

Read More


(Feb '11) Seniot Project

What is it?

"Senior Project" is the capstone class in the RIT Software Engineering program. It's a 6-month project on a team of 4-5 SEs working for an external client on a real problem. In my case, I'm working with 4 other seniors (Chris Tosswill, Matt Olenik, Bernard Stern, and Pete Bergeron; our sponsor is Eastman Kodak.

Read More


(Dec '10) How to analyze global functions from a chrome content script

So, it turns out that the code run in chrome content scripts run in their own context. As such, I can't access global variables set by in-page code. However, chrome content scripts do use the same DOM. Further, when <script> elements are inserted into the DOM dynamically, they're run using the page's context, and can access those global variables/functions.

Read More


(Oct '10) Engineer'd

I'm sick of Facebook's liking system. I can see their idea, but it's become complete crap. 99% of "likes" that show up in my feed are either thoroughly inane our outright malicious (seriously, I never thought I'd see this much clickjacking in the wild).

Read More


(Jul '10) Wrttnin Quine

Because I got bored and my javascript is rusty, I put together what I'm calling a Wrttn.in quine.

Read More


(Jun '10) Cheap Tricks

I heard a fun statistic today: the average software development turnover rate is 20% annually. The Bureau of Labor Statistics says 33% for all departures in IT, and 15% for quits. Let's say it's 20%- that's a whole new company every 5 years (not really, of course, but it's still a significant chunk of your company gone in that period). How can any company achieve consistent results when more than half their company is swapped out every 3 years? Predictable budgets and schedules become hella-difficult, not even to mention the cost of training new employees and the lost production while that's happening.

Read More


(Apr '10) Fulstack, empty coffee cup

I recently undertook participation in RIT48 with my good friends Chris 'Cap' Tosswill (a fellow software engineer) and Meghan Manders (a designer). RIT48 is a competition to create a web business in 48 hours, with mixed emphasis on business plan and implementation. Our team got a working prototype of our product (FulStack.com) up and running, and we won second place (+ $400)! More details in the project page.

Read More


(Feb '10) No Comment

Much like throwing a kitten into a pit of rottweilers, there are a few questions you can throw into any group of developers that'll have them at each other's throats in moments. One fun one I discovered recently was:

Read More


(Feb '10) Autotune the Project

Hell is shiny objects

I don't know about you, but I often suffer from a lack of motivation on personal projects. Usually it goes something like this:

  1. Be sitting at my computer and thing "Hey, I've got a half hour; I could try to fix that bug in the FPA event model."

Read More


(Jan '10) Modern Font Embedding or How I learned to hate IE all over again

Note: This post is so out of date as to be useless. Ignore it!

Read More


(Jan '10) Why not roll my own?

Writing a blog engine is a right of passage for young developers.

Read More


(Dec '09) Kevin Kuchta's Blog

"A man's domain is his castle"

Read More