Unit testing, integration testing, acceptance testing, exploratory testing—all are important methods that contribute to delivering quality software. But there’s another important kind of testing that is often overlooked, and that’s testing the production environment. For example, has the production environment been configured correctly so the system can successfully send email? Can the system access a […]
Most software projects have an established visual design: colors, layout, typography, etc. It’s typically one of the first things to be set up. But the product is going to change and evolve. Maybe a new button needs to be added. Or a link, or a metric, or some other widget. While a designer often leads […]
PHP makes it very easy to include everything from interpreting form submissions to calls to the database to rendering HTML in one file. As a project grows, this can make code difficult to test and update. In this post, I’ll discuss an approach to separating application logic from template files using output buffering, and how […]
Out of all the tests I write on a day-to-day basis, acceptance tests are the hardest. In my experience, writing them for web applications is complex. There are many asynchronous actions going on: web requests firing off, responses being processed, UI elements popping on and off the screen, etc. To manage this complexity, I’ve been […]
As we decide where to focus, figure out the best way to implement things, or evaluate costs on any project, we hear the same questions: “How much will this cost?” Or “When will it be done?” Or even technical questions like, “How many records can this process per second?” We need to make decisions and […]
Releasing a new version of a mobile app can be a stressful process. The first few times you do it, your customer base is probably pretty small, so it doesn’t feel like a very big deal. However, after your user base grows into the thousands, the pressure really starts to build. The fear of releasing […]
Picking the right libraries for your project is important. The wrong ones can create long-term headaches and introduce technical debt that will eventually be very expensive to correct. When making your choice, there are a few important things to think about, and a few common things to avoid.
Containerizing can be a useful approach to developing applications. While it has many benefits, there are also situations where you might not want to use it. In this post, I’ll cover both the pros and cons. What Are Containers? Containers are the result of a packing mechanism that decouples applications from the environment where they […]
The package.json file is the heart of any Node.js project, but it often goes entirely undocumented. In this post, I’ll review a few areas that are worth documenting, and how I like to do it.
Okay, that’s a bit grandiose, I admit. But I often see tweets or posts about how people don’t “get” capital-A Agile. Tweets like this and this point out common faults. Everything they say is technically correct but not especially useful. Pointing out all of the not-get-its in the wild won’t make people “get it” better, […]