To view or more or less information, use the slider above.
I'm a software developer in Cambridge, Massachusetts. I've been a software developer since the year 2000. You can reach me at email@example.com.
My current strengths are making full stack web apps and finding ways to iterate quickly.
This is an overview of my work. If you just want to go straight to my publicly available code, see github.com/jimkang.
This may mean:
A few highlights:
An interactive explanation of quadtrees. I built this because I was using a quadtree for another app and realized I didn't really understand quadtrees.
It was well-received! Non-programmer-, non-mathematics-types have told me they understood quadtrees after trying it.
@godtributes is my most popular bot. It had 27,000 followers on Twitter. It is a merciless generalization of the "BLOOD FOR THE BLOOD GOD!" meme.
It was an interactive Twitter bot that, despite its limited modes of expression, inspired a lot of followers to fill in the blanks with their imaginations. Here's a nice review on I Love E-Poetry that discusses its poetic appeal.
Due to Twitter's API policy changes and, later, serious ethical problems with Twitter as a whole, I had to take it off of there. It now posts to the web instead.
annoy-node is Node bindings for Annoy, a popular Approximate Nearest Neighbors implementation in C++.
There are a lot of machine learning models that figure out what is similar to what else. The way they express what they've figured out is in n-dimensional vectors representing things like words or songs.
If you want a complete view of my projects, look at Observatory. It organizes 300+ projects from a variety of perspectives.
Other things I've worked on at Spotify:
My work involved full-stack web engineering, navigating a unique internal infrastructure. It also involved investigating both user needs and technical possibilities.
We often built purely to see how users will react (in in-person user tests and A/B tests). I've learned much about the value and costs of gathering information before you commit to something.
Things I needed to know to do my job:
The Shop site served coupons from various PayPal partners to hundreds of thousands of people per day. The front end was a single-page app built in AngularJS. The back end was a cluster of NodeJS servers that talked to PayPal services to manage the coupon and user information.
We used TDD, pair programming, and GitFlow heavily. We prioritized the mobile web experience, which I've taken to heart ever since. And, perhaps less effectively, Scrum.
I added this app's first automated tests (in order to safely do a big refactor to add OAuth to the API) and learned quite a bit about TDD as a result. Our team used a Kanban process and an unusually high level of design-development integration.
The company built mobile apps for big institutions, mostly universities. It also wrapped up customers' existing data sources to make them easily mobile-consumable.I worked on various universities' iOS apps here.
Their business was centered around a massive data warehousing web application.I worked on their ASP .NET and iOS apps.
Indiana went blue, which it had not done since 1964.
We automated manual tasks and wrote programs to look through voter contact history to find good targets for calls. I met fantastic people, and I saw how the relatively simple application of technology can make a big impact when applied to the right context.
GN Resound is a hearing aid company. Hearing aids are small digital sound processors. Audiologists can calibrate and gather data from them by connecting them to a computer.
I worked on their hearing device adjustment software, which at the time, was a C++ COM/ATL-based Windows desktop application.
This is where I learned to write code that worked in real-world situations when run by thousands (millions in a few cases) of real users.
I worked on IDEs that let developers author "setups," programs that installed software onto computers. The IDEs were Windows applications written in C++.