Home » Software Development

Software Development

Custom Git subcommands

Heavy users of Git often find themselves writing their own Git shortcuts or scripts which combine multiple Git commands for frequently used features. The possibilities to shortcut your way around Git include Git aliases, shell aliases, or custom scripts that reside in your $PATH. For the latter, there is an interesting feature in the Git command line that I just ...

Read More »

Refactoring for the Tell Don’t Ask Pattern

Design patterns provide us with guidelines to help us implement clear and concise maintainable code. When implementing object-oriented design, both duck typing and the Tell Don’t Ask pattern go hand in hand to produce easily composable and maintainable code. Also functional programming and common interface techniques such as Monads by design implement Tell Don’t Ask. Here we’ll focus on implementing ...

Read More »

How to Be Lazy and Stay Calm

What frustrates me most in my profession of software development is the regular necessity to understand large problem scopes before fixing small bugs, especially if the code is legacy and not mine. Actually, it’s even more frustrating when the code is mine. The “deep thinking,” as they call it, which is always required before even a small issue can be ...

Read More »

Dolls and Maquettes

I’ve already written quite a few posts about why I don’t consider JavaBeans real objects. For instance, I think we agreed here and here that model objects are mere syntax sugar and we might as well not have them at all, they are useless abstractions that do not offer any functionality. Nevertheless, let’s try one more time, this time through ...

Read More »

Importance of Programming in Focused Time Blocks

In this day and age, there are a seemingly infinite number of things that are pulling your attention to various places. With the invention of the computer and the internet, people are always trying to take your focus through texting, calling, social media, forums, and email. You name it, there are tons of ways you can get distracted. It has ...

Read More »

Working with Glide – Vendor Package Management for Go

In this post, we will use Glide to manage the dependencies of a Go project. Before starting, let me give you a brief introduction about Glide. What is Glide? Glide is a package manager for Go that is conceptually similar to package managers for other languages such as NPM for Node.js, Pip for Python, and so forth which records dependency ...

Read More »

Nine Steps of Learning by Refactoring

I was asked on Twitter recently how is it possible to refactor if one doesn’t understand how the code works. I replied that it is “learning by refactoring.” Then I tried to Google it and found nothing. I was surprised. To me refactoring seems to be the most effective and obvious way to study the source code. Here is how ...

Read More »