Chris Martin

Programming

Scala

I began using Scala in 2012 for a 3D animation project, and it quickly became my favorite and most productive language. Having a lot of fun with Project Euler. Current projects: an Akka-based service to manage OCR processes, an open database of Georgia salary data using the Play framework.

Java

I started with Java in 2005 and since have worked extensively with Servlet-based web applications at GTRI. Since adopting Scala, I have lost patience with Java's inadequacies. One of my projects in grad school was adding row-level mandatory access control to H2. Graphics projects: 3D sculpting, circle-packing, spring physics simulation.

JavaScript

My JavaScript knowledge comes from working with rich webapps at GTRI since 2007 and various hobby web projects. Some silly experiments with canvas and SVG animation.

Python

I've dabbled with Python in small projects: an audio synthesizer, a presence notification system using an IR temperature sensor, web scraping tools for Georgia Tech services Oscar and T-Square.

C/C++

I am mildly capable with C/C++, mostly from school work: LLVM extensions, a Linux kernel module,

PHP

I used PHP for my first web application in 2003 and have revisited it for small projects since then. I have no fondness for it. Web service for scraped T-Square data, trivial intro databases class project.

Timeline

  • Card For Coin 2014—Present
    • Co-founder
  • GTRI Cyber Tech and Info Security Lab 2010—2014
    • Research scientist
  • Computer Science MS, Georgia Tech 2010—2013
    • Specialization in information security
  • GTRI Cyber Tech and Info Security Lab 2007—2010
    • Software co-op
  • Computer Science BS, Georgia Tech 2005—2010
    • Specialization in theory and computing platforms

Tools

Some of the tools and software I most adore:

Various other things I've worked with significantly:

Philosophy

  • Compose. Avoid class extension. Be wary of frameworks that limit composition.
  • Test when testing helps. Test to shorten the feedback loop and to relieve anxiety.
  • Favor immutable types and pure functions. Mix functional and imperative styles.
  • Simplicity in everything awaits discovery. Time producing less code is well spent.
  • Commit quality is as important as code quality. Write short diffs and long messages.
  • Never wear shoes without a compelling reason.