Hi, I’m Keegan.

I’m an experienced software engineer, with experience that spans the entire web technology stack.

I love to develop engaging, interactive web applications that push the limits of web technology. I’ve developed software that lives outside the web too -- like embedded applications for the Raspberry Pi. In short: I’m in this to build amazing stuff, and make a real impact on the businesses I work with.

I love challenges.

I get the most out of my work when I’m learning something new. I’m known for tackling projects just because they sound hard, interesting, or unique.

Here’s a few examples of the technologies I’ve picked up for the challenge of it:

Client side development
is my bread and butter.

Don’t get me wrong – I like manipulating, traversing, and transforming data and developing REST API endpoints as much as the next guy. But I take a special satisfaction in creating math-based algorimic animations and interactive components. I've hit a few high points in this area:

  • You want an HTML5 Canvas particle engine? Let’s do it.
  • CSS3 3d effects? Easy.
  • How about game logic? Sounds great.
  • This image needs to follow the mouse around like a lost puppy? Consider it done.
  • You'd like your whole website to react to the user's scroll? Not a problem.

I’ve never met a backend stack
that I couldn’t get along with.

These days I like to build in JavaScript or TypeScript if I have the choice. I find JavaScript and TypeScript to be the perfect balance of flexibilty and features -- and if I don't find something I need, I can almost always find a community package that does.

Real world programming comes down to efficency for the programming team, and I find working in JavaScript and TypeScript to be some of the most efficient developer experiences out there. Node.JS is my go-to backend for apps where I can pick and choose my application stack, but I’m definitely not limited to it.

I’ve worked in a host of different environments, from NodeJS, PHP, Ruby (on Rails), C#/.NET, Java, and more. I’ve also used and configured Apache, NGINX, and IIS. I’ve even spent time optimizing site performance on both Linux and Windows Server Platforms.

I've learned a few things along the way

But I'm always open to learning more.

  • Code is for humans, not computers. Write code that is readable, scannable, and easily understandable, as much as possible.
  • It's important to break code down into small-bite size functions. Writing a simple function to do a single thing is one of the easiest way to simplify a convoluted programming routine.
  • Writing smarter code is better than writing code faster. Take the time to think code through.
  • Functional programming is generally a superior programming paradigm than procedural programming. But like many others before me, I tend to blend the two as needed.
  • Composition is always better than inheritance.
  • Writing descriptive function and variable names before writing code comments.
  • A function or method should always only do one thing.
  • If code looks repetitive, then there is a better way to write it.