Property-Based Testing for Serialized Data Structures

When I first heard about property-based testing, my instincts told me it was too academic to be of practical use. But, as is often the case in the art of software, my gut reaction failed to appreciate the value of something new.

I originally felt the same way about functional programming, so I guess I can’t trust my gut very much when it comes to new concepts. To quote Nick Hornby, “Between you and me, I have come to the conclusion that my guts have s— for brains.” I’ve recently stumbled into some great ways to get real-world value out of property-based testing.
Read more on Property-Based Testing for Serialized Data Structures…

Evaluating Property-Based Testing Through a Random Walk

Lately, I’ve been interested in property-based testing. It’s a sort of “Monte Carlo”-esque approach where you execute your application randomly (rather than according to strict scripts) and test that it never reaches an invalid state.

It has proven usefulness in lower-level software (such as implementations of data structures), but I’ve been wondering if it could be applied at a higher level. I’ve been wanting to apply it to a web app to test its domain objects and possibly also run it at a higher level, such as through a REST API.
Read more on Evaluating Property-Based Testing Through a Random Walk…

42 Visual Studio Shortcuts & Commands

I’ve been using Visual Studio as my primary code editor since 2008, and I put together a list of the top commands I use in VS 2015. I use most of these daily, but the less common ones are nice to fall back on in specific situations. I included the default keyboard bindings from the General profile where appropriate.
Read more on 42 Visual Studio Shortcuts & Commands…

Why System Testing Matters – And Why it’s Getting Easier

In the modern world of software development, any library or application of considerable size is incomplete and at significant long-term risk without a slew of automated tests. While unit and integration tests are used to ensure that all of the intricacies are covered in complex and stateful code, for the long-term health of your codebase, system testing should also be a crucial component of your test arsenal. Read more on Why System Testing Matters – And Why it’s Getting Easier…

Simulating Poor Network Connectivity on Mac OSX

I’ve often used Chrome dev tools’ device mode network throttling feature to test how a web app behaves with a poor network connection.

If you need this capability outside your browser, you can use Apple’s Network Link Conditioner to degrade your whole computer’s connectivity, individually controlling bandwidth, latency, and packet loss. This is particularly useful for other browsers, device simulators, and headless processes.

I recently wished to simulate degraded connectivity to a single host. A modern web app loads resources from a variety of sources. It’s good to know how your app will behave if your font server is on the fritz, or if your image CDN slows to a crawl. Read more on Simulating Poor Network Connectivity on Mac OSX…

Git Confident – Git Best Practices for Joining an Existing Project

Joining a team as a young developer on a large project is a fantastic way to lower your self-confidence—especially if you’re also new to the framework in which the project is written. It’s hard to make meaningful contributions until you’ve read through a substantial portion of the codebase and made a lot of mistakes trying to change it. Making those mistakes is embarrassing if they’re too public, and it can be downright costly to a client if you don’t keep them carefully isolated.

What’s a budding consultant to do? Use git, and regain your confidence. Read more on Git Confident – Git Best Practices for Joining an Existing Project…

IDE vs. Text Editor: Choosing the Right Tool at the Right Time

In the programming community, there are an overwhelming number of opinions about text editors, IDEs, and other related tools. There are so many options out there and so many strong opinions that it’s really difficult to find the best tool for the job.

However, finding the right editor is extremely important! After all, text is the basic element of programming, so choosing a tool to manipulate text is one of the most fundamental decisions a programmer can make. Read more on IDE vs. Text Editor: Choosing the Right Tool at the Right Time…

Exploring Logic Programming in Clojure’s core.logic – Finite Domain Constraints

In my last blog post, I went over a basic introduction to some of the concepts of logic programming. In this post, we’ll extend our last example to produce some real values (with meaning outside of the logic engine) using finite domain constraints. Read more on Exploring Logic Programming in Clojure’s core.logic – Finite Domain Constraints…