About Me
I love software engineering and building things that people love.I've built multiple large apps in the following technologies:
AI / Chat Bots
Facebook Messenger Bot
This Facebook Messenger bot asks for ingredients and makes recipe suggestions based on the users responses. Responses do not need to be structured. As long as the user mentions an ingredient and a positive or negative sentiment, it will return recipes that include or exclude those ingredients. "I really love artichoke" will look for recipes with artichoke. "I'm allergic to peanuts" will return recipes without peanuts.
Slack Bot
A Slack chat bot I built using Go. Domain is workplace acknowledgment. Can handle many different tasks, including asking surveys, pulses and propping getting team members talking positively about each other. Functionality also includes mentioning team members, communicating results to an API, and handling edge cases like preventing a user from mentioning a channel when they didn't intend to.
Machine Learning
At ZipBooks, I build a machine learning system to offer suggestions for transaction categorization. I used fasttext to quickly train a general and account model daily. When a user first creates their account, it uses a general model, trained from previously categorized transactions accross the whole system. After they start using the software for a few days and categorize their own transactions how they like, the suggestions become more personalized to that account.
Resume
Jump
I'm the technical co-founder of Jump, a service that offers conversation automation to wealth managers.PDQ
I was Principle Architect and led the architecture of Connect, PDQs web based device management product. We built and launched a fully featured web based version of the desktop app, from scratch, in 1.5 years.ZipBooks
I led the engineering on ZipBooks. ZipBooks is the best online accounting software. We've been able to build new features fast, easily write tests for everything along the way, and our load/response times are very very fast.Calvetica
Calvetica was the first 3rd party calendar app on the App Store. I built the first version as a personal project with a friend in 2010. Over the years it has done $550,000 in sales. At one point it ranked #50 in top paid apps. We invented infinite scrolling month view that you now see in the default Calendar app.Day One
I worked as an employee on Day One, the iOS and Mac App. Day One is massively successful and the Mac App won an Apple Design Award.Teem (EventBoard)
You'll find EventBoard on iPad displays outside the conference rooms of tens of thousand of companies including Uber, Dropbox, Twitter, Stripe, Slack, Yelp and Airbnb. I did the "Find a Room" feature on the displays and later co-led the overhaul of the authenticated front-end in Ember.js. I emphasized testing and set up a deploy pipeline that never pushed broken code.FamilySearch
At FamilySearch I did three significant things. First, I worked on a team where we built a prototype of a user-friendly web interface for people to collect family memories in a skuemorphic book. I was in charge of the front-end dev to make it work. Second, I built an iOS prototype (and an open source client) so that people with iPhones could browse their family tree and attach media to their ancestors, like being able to record interviews with family members using the app. Third, I used d3.js to build an interactive fan chart so people can browser their tree in a delightful way. Check out those animations…FamilySearch Fan Chart from Adam Kirk on Vimeo.
Open Source
Objective-C / Swift
Option | Stars | Description |
---|---|---|
Touch Forms | The forms framework that should come with UIKit | |
Fake Events | Allows you to add lots of test event data to an iOS simulator or device using EKEventKit framework | |
ATKColor | Color categories | |
Xcode Plugin | An Xcode plugin for aligning code so it's more readable. | |
FamilySearchCocoa | An easy to use library for interacting with the FamilySearch.org API on iOS or OS X | |
AutoKhan | Auto plays Khan Academy videos one after another. | |
Big Splash tvOS | Unsplash Client For Apple tvOS | |
MTAnimation | Animate UIView with 25+ timing functions. (Bounce, elastic, exponential, etc.) | |
MTPDF | Objective-C PDF objects. Doing my part to help us stay out of the headache that is Core Foundation. | |
MTPocket | Cocoa Web Requests | |
Jumper | Time and date library in Swift. | |
MTGeometry | An extension to Core Graphics Geometry. Intersections, scaling, etc. | |
MTDates | A thread safe date calculation library with all the date functions you'll ever need. | |
MYSForms | Easy forms for iOS | |
MYSRuntime | Obj-C Library that makes runtime self-inspection and class modification dead easy. | |
MTStringAttributes | Easier way to create an attributes dictionary for NSAttributedString | |
MTQueue | Add blocks to queues in a super terse and readable way! | |
MTPencil | Draw animated lines (like an invisible pencil) with Core Graphics. (Prototype, will get much better). | |
MYSCoreText | An Objective-C wrapper around Apple's Core Text framework. | |
MTTimer | An Objective-C timer that restricts firing to a time range. If it's called BEFORE min, it waits for min. If it's called AFTER max, it's called at max. | |
MTFittedScrollView | A UIScrollView subclass that resizes itself to fit around its content. | |
EKEventToiCal | Returns a string in iCal format for an EKEvent object. | |
Ruby |
||
Flunk | A gem for testing Ruby on Rails web APIs by simulating a client. |
Interests
Teams
I love to work in a team and the strategies that help a team work efficiently. As we see in large corporations, 2 heads aren't always better than 1. When done correctly though, 2 heads can be as good as 3.Testing
When I first got started programming, I remember the anxiety of pushing code to production. Since then, I've learned to love testing and the safety and peace of mind it provides. There's no greater feeling than seeing all green with 100% test coverage. Pushing to production with confidence is very satisfying. I also really enjoy the challenge of finding ways to test things that are particularly hard to test.Business
I love to study business and, in particular, startups.Solution: To be a successful business, there has to be a real problem that people want a solution for. Even if they don't realize they have the problem until they see the solution.
Execution Provide a solution for which the experience of using is better than experiencing the problem. Hopefully, much better.
Distribution Spend less money finding, converting and fulfilling a buyer than you make from that single buyer.
Obviously, I love to help the businesses I work for execute an amazing experience that makes customers not only keep coming back, but love the product emotionally.
AI / Machine Learning
Every evening, I spend some time studying Machine Learning. I find it extremely exciting and think it opens up crazy possibilities for making the world a better place. With AI, I think computers can free up time for people to spend with their families and be much more effective and creative at work.Links
Link | WTF | |
---|---|---|
Campus All-Star | I was a University of Utah campus all-star. Whatever that means. | |
One More Thing | I spoke at a conference in Australia back in 2012 about Calvetica. | |
Github Gists | I've collected things I've learned and interesting code I've written here. |