Command Prompt Envy

Command Prompt Envy

I'm spending my time between Mac OS and Windows, and when I go back to my Windows machine I always feel the lack of my Mac command prompt. Almost a year ago Amir posted how you can get a nice command prompt on a Mac....


Coupling in distributed systems

Coupling in distributed systems

Coupling and cohesion are key quality indicators. We strive for systems highly cohesive and loosely coupled, but high doesn't mean pure. The same goes with functional programming, we aim for isolating and reducing side effects, but we need them unless we want a useless system....


Isolating integration tests and mocking dependencies with Spring Boot

Isolating integration tests and mocking dependencies with Spring Boot

Integration tests can be slow and unreliable because they depend on too many components in the system. Up to a certain point, this is unavoidable: integration tests are here to validate how each part of your system plays with other internal or external components. We...


Premature Microservices

Premature Microservices

Building your app from the very start as microservices is not a great idea! Their deployment is complex - regardless of how good your microservices infra is. They create boundaries in your application that resist change. Software applications are complex systems and complex systems are...


GitHubAnimator

GitHubAnimator

The Beginning Inspired by my friend @SamirTalwar and the initiative he set upon himself to automate the world I picked up on an idea I had many months ago. Automating the generation of presentations using GitHub commits. What Problem am I Trying to Solve? Often...


Clojure VIM Environment

Clojure VIM Environment

The Cursive plugin for Clojure is now out of its beta testing phase. I have been using it throughout its beta program and, I must say, it is pretty good. Sure, the refactoring capabilities are not quite on a par with those of IntelliJ for...


Testing multithreaded code in Java

Testing multithreaded code in Java

Testing multithreaded code is a tough challenge. The first advice that you get when trying to test concurrency is to isolate your concurrent concerns in the code as much as possible. This a general design advice but in this case it's even more important. Make...


Mouseless Programming

To be honest, I used to be quite a power mouse user. Looking back and trying to figure out why I got addicted, it probably happened when Microsoft released Word 6.0 with its twenty-some toolbars with thirty-some buttons in each toolbar. I didn't remember many...


Mouseless programming part II

Mouseless programming part II

Screencast - Mouseless Programming, Part II This is the second video of the Mouseless Programming screencast. A simple leap year kata is performed, using TDD process, File and Live templates, and some automatic refactoring tools. Only keyboard was used for programming in this video. This...


Property based testing

Background Craftsmanship in software strives for high, predictable, repeatable and affordable quality. This is the reason why we care about design, code reviews and of course testing. Test Driven Development helps us create a flexible implementation that meets the expectations of our clients in terms...


Latest Tweets