Programming and best practices

Aside from being awesome, Jacob does have a real career. Starting with basic HTML and CSS, he has slowly added more languages and methods and is now a well-rounded web developer. Whether you're looking at advanced server-side optimization, semantic structure, or project team management, Jacob has some good experiences to share.

A Year of Commits and Pushes

Over a year ago I made the decision to publish the custom framework behind my personal website. There were a few reasons why I wanted to share the code, though the main driver was that I wanted to actively modernize my code base. And it worked. Since pushing my custom framework I've updated huge…

  • Category Web Development
  • Posted December 8, 2016
  • read more

A Middleware for Swagger Resolution

A few months ago I started building a Swagger resolver library, with the intention of having a parser that understood different inheritance properties of the spec. About halfway through I realized that this library was going to be huge, with dozens of objects, and that it wasn't going to work the…

  • Category Web Development
  • Posted November 29, 2016
  • read more

Using peel for HTTP Exceptions

Middleware is a powerful concept that modern frameworks use to bridge between separate parts of a stack - namely, a HTTP layer and application. A request comes in, is validated/manipulated by middleware, triggers behavior in the application, and then the response goes back out through the same…

  • Category Web Development
  • Posted November 15, 2016
  • read more

Swagger Inheritance

Swagger spec is an awesome tool for describing APIs in a standardized way, allowing programs to understand and interpret them. It is a set of files (often just one) written in JSON or yaml that defines the routes, parameters, responses, and metadata of an API. After a spec has been written it can be…

  • Category Web Development
  • Posted September 12, 2016
  • read more

Using Mocks with PHPUnit

Creating test doubles, or mocks, is a feature of PHPUnit that I recently discovered and am quickly falling in love with. Previously I would find other ways to mock my system, like creating SQLite connections instead of a persistent database, or even duplicating an entire mock class for injection.…

  • Category Web Development
  • Posted August 25, 2016
  • read more

Continuous Deployment with Travis CI and Digital Ocean

Continuous integration and deployment is one of my favorite parts about working at Shutterstock. The team can push, run automated tests, and deploy many times in a single day. I've been wanting to try to build up something like this for my own projects and, by using a combination of Digital Ocean,…

  • Category Web Development
  • Posted August 2, 2016
  • read more

Using Domain Repositories for Services

Last year I started building out domain repositories in order to encapsulate the data retrieval for my website. They were easy to build, straightforward to implement, and simple to test. At the time all of the data retrieval was through a standard sql database, so all I had to do was pass in a…

  • Category Web Development
  • Posted July 22, 2016
  • read more

A Project Death March

For the last month or so my team at Shutterstock has been going through a death march. It has negatively impacted my blogging, personal life, and open source contributions. Also, it has only increased my commitment to the company and strengthened our team's dynamic.

So, what is a death march in this…

  • Category Web Development
  • Posted June 30, 2016
  • read more

Mocking Internal PHP Functions

A problem that I've run into during the unending quest for complete test coverage is mocking of internal PHP functions. Unit tests are easy to write as long as a class method returns everything it does, but when a method starts to call out to certain internal PHP functions things get difficult. It's…

  • Category Web Development
  • Posted May 31, 2016
  • read more

An Arduino Pomodoro Timer

Pomodoro Timer on the Arduino Uno

A cool event that happens every quarter at Shutterstock is Coderage, a 24-hour period of time where all of the developers can work on whatever they want. The project doesn't have to be related to work, though we often leverage tools that we use everyday to bootstrap something together quickly. Some…

  • Category Web Development
  • Posted May 24, 2016
  • read more

Activity Stream

  • Read The Fifth Season (The Broken Earth, #1) by N.K. Jemisin.
  • Blogged about hiking | Across the Mazatzals: Over Sandy Saddle.
  • Pushed some code at jacobemerick/lifestream-service.
  • Blogged about hiking | Shaw Butte.
  • Pushed some code at jacobemerick/lifestream-service.
View more activities…