The Tradeoff of Multiple Repositories

More often than I expect, I come across software projects that consist of multiple source control repositories. The reasons vary. Perhaps it’s thought that the web frontend and backend aren’t tightly coupled and don’t need to be in the same repository. Perhaps there’s code that’s meant to be used throughout an entire organization. Regardless, there are real costs involved in the decision to have a development team work in distinct, yet related, repositories. I believe these costs are always overlooked.
Read more on The Tradeoff of Multiple Repositories…

IoT Made Easy by Particle

I love the Internet of Things (IoT) uprising that is happening right now. I mostly spend my days writing software, but my degree is in electrical/computer engineering, so IoT technologies combine a lot of things that I am interested in.

When the Raspberry Pi first came out, I got very excited and immediately began building my first IoT device. It was a lot of fun, but I quickly discovered that making an IoT product is really hard and requires a lot more work that I had initially thought.

A few years later, I was delighted to find that a company called Particle is trying to make the lives of people like me much easier. Particle is revolutionizing the world of IoT by building infrastructure that supports taking a product from prototype to mass production with minimal time and effort.
Read more on IoT Made Easy by Particle…

Capability Feature Flags for Backward Compatibility

Earlier this year, Ryan Abel wrote about Managing Multiple Releases in a Production Application. One of the strategies he discussed was using “feature flags” to manage when sets of features are released in production. I’ve found that feature flags work well when there’s a need to maintain backward compatibility with multiple versions of an external integration. In my case, it’s with a Bluetooth Low Energy (BLE) device, but the same would hold true for a remote web service API, etc.

Read more on Capability Feature Flags for Backward Compatibility…

Four Tips To Keep Refactoring Efficient

We all write elegant code the first time that never needs to be changed, right? Me neither.

Refactoring is just another tool in the developer’s belt. It wasn’t until recently that I realized how important a tool it is. I started a small refactor that turned into a big refactor that turned into an enormous refactor. In the end, I felt great about the new architecture, but it ended up being a lot more work than I anticipated. Coming out of that experience, I have four tips for keeping your refactors efficient and manageable.
Read more on Four Tips To Keep Refactoring Efficient…

Test-Driven Development for the Uninitiated

Like many software developers fresh out of college, I felt I had a firm grasp of computer science but a less-than-strong knowledge of industry practices. One of my biggest weaknesses was test-driven development (TDD).

I’d heard of it. I knew it was important. I’d attended Computer Science club meetings on it. I’d even written a few tests for personal projects. But it wasn’t really part of how I thought about the development process. Read more on Test-Driven Development for the Uninitiated…

Learning from Pokémon GO: The Importance of Testing

Automated testing is one of the most powerful tools available to a software developer, but some people are reluctant to embrace it. With the release of Pokémon GO and its bugs seen in the first several weeks, this is a good time to discuss the importance of releasing quality code into production.
Read more on Learning from Pokémon GO: The Importance of Testing…

[Video] Command Injection: How the Shell Makes You Vulnerable

Most web developers are familiar with SQL injection, an all-too-common web vulnerability. The problem typically arises from assembling SQL queries by concatenating strings, without considering they’re allowing whoever supplies the parameters (typically, a consumer of a web API) to write their own SQL code. But SQL isn’t the only place you can get code injected. SQL injection has a close cousin that’s not nearly as well-known, but it’s just as—if not more—deadly: command injection.
Read more on [Video] Command Injection: How the Shell Makes You Vulnerable…

Need to Understand Some Legacy Code? Start with a Test!

Debugging legacy applications is, in general, no fun. In this post, I’ll describe a helpful tactic: wrapping a unit test around the questionable code.

Legacy code often feels like it never works. Image credit : unknown. Thanks to whoever produced this!

Read more on Need to Understand Some Legacy Code? Start with a Test!…