Component Scanning Library Code

April 18, 2017

Component scanning packages can be both your best friend and worst nightmare. In this post, I will cover several bad practices when it comes to component scanning. In detailing a few of these anti-patterns, I will also offer a few better patterns that are much cleaner to use.

Read More »

Spring Bean Method Invocation

April 01, 2017

In my day to day development, I spend a fair bit of time working with Spring since it offers a lot of scaffolding to get a project off the ground. At Indeed, I spent a fair bit of time upgrading us from Spring 3 to Spring 4 and came across many good uses of Spring and many bad ones too. In this Bad Practices series, I will talk about some of these bad practices, why they should be avoided, and what you can do instead.

Read More »

Gracefully Degrading Functionality Using Status

January 19, 2017

In a previous blog post, we described how to use our Status library to create a robust health check for your applications. In this follow-up, we show how you can check and degrade your application during an outage by:

  • short-circuiting code paths of your application
  • removing a single application instance from a data center load balancer
  • removing an entire data center from rotation at the DNS level

Read More »

Docker Machine DNS Resolution using Consul

May 08, 2016

Developers at Indeed have recently switched over to using docker for local development. Being one of the earlier adopters, I fell in love with the type of workflow that it enabled. It allowed me to create seamless environments between both my desktop and portable workstation. The tooling did this by allowing you to resolve container names as hosts in your web browser. For example, if I had a web application named indigo running on port 4000, I could go to http://indigo:4000 to access that application. After a few weeks of enjoying the simplicity of this development workflow, I craved a similar type of environment for some of the larger scale projects that I do at home. In this blog post, I will cover some of the basics that allowed me to enable this type of development.

Read More »

Introducing LAAS

December 05, 2015

LAAS is an abbreviation for LevelDB as a service. LevelDB is an implementation of a log structured merge tree (LSMTree) provided by Google. This data structure aimed at providing a high write throughput. When attempting to use LevelDB, I found it difficult to track down supported libraries in different languages. Additionally, the fact that it’s labeled as a database and doesn’t provide a service was troublesome. I wrote LAAS to make the adoption of LevelDB easy for any language. It does this by introducing a RESTful API to the underlying functionality. HTTP request libraries are a dime a dozen, which drove the choice for a RESTful implementation.

Read More »