As a longtime Ruby programmer who has just recently begun to focus more on Clojure, I find myself continually surprised by all the little treasures that Clojure offers. One of those treasures is Clojure’s sophisticated support for destructuring - it’s even better here than in EcmaScript 6! To explain the beauty of Clojure’s support for destructuring function arguments, we need a good example. Let’s pretend that you are the lead Engineer for the Empire (yes, the one from Star Wars).…

Lately, I’ve been working on Satellite, an open-source monitoring solution for Mesos clusters. It has become clear that Satellite needs to be easier to install and configure, and that we may need to change the very nature of its configuration files. This has led me think about software configuration in general, and particularly about which about which styles work best in which situations. In a healthy software project, a line is drawn between the “Application” itself and its “Configuration”.…

As developers we’re tasked to take a problem specified in the fuzzy language of human interaction and translate it into a representation that can be understood by a machine. To do that we have to simulate the machine in our heads, and manually trace every possible path of execution. The number of execution paths grows at every branch point in the code, and there are often many different ways to branch an execution path.…

Who’s afraid of big bad technical debt? Every conscientious software engineer knows about technical debt. Lots of us learned the hard and painful way that deferred refactors and sloppy code can and will come back to bite you eventually. Since we don’t like being bitten, especially by our own code, we learn to hate that nasty technical debt. All manner of evil gets blamed on it, and we avoid it like the plague.…

As a developer you will always encounter situations where there are multiple ways to accomplish the same task. Evaluating your options can be done by acting as if you are reviewing the resulting code. The 4Cs are a useful tool for doing this and you’ll get better at each with pratice. Code clarity makes projects easier to work on for all levels of developers by being as close to self documenting as possible.…

Whenever you write code, you hold certain assumptions in your mind. You expect some conditions to be met, and you promise that, if those conditions are valid, you’ll do something in return. But sometimes your code fails to convey those assumptions. Consider this snippet: class Users def find_by_name(name) collection.find { |u| u.name == name } end private attr_reader :collection end users = Users.new user = users.find_by_name(name) With no context other than the code above, can you determine whether it is acceptable for the:…

On paper, MojoTech’s resume looks pretty impressive. Since its inception in 2008, MojoTech has launched more than 100 products by partnering with clients to deliver software that solves their most complex business problems. MojoTech was ranked the 42nd fastest growing software company in America by Inc. Magazine, and was listed as one of 2016’s Best Places to Work for the third year running, by Providence Business News, who also awarded co-founder Chris Shoemaker “CTO of the Year”.…

Load More