You’ve probably seen programmers calmly writing code at 200 keystrokes per minute to solve hideously complex problems under strict deadlines, and the programs they wrote run perfectly on the first try, often only a few seconds before something blows up real good…

Continue reading

There are many ways to write automated tests for testing code, and you may have heard about test doubles for making testing easier. Some of the code we write is hard to test, so we replace those parts with fake test doubles that are easier to test…

Continue reading

B2B (Business-to-Business) software is different from B2C (Business-to-Consumer) software for several reasons, but the most important one is this: In B2B, each customer isn’t an individual but a company with its own unique needs and workflows. If your software isn’t compatible with the way a company operates and there are no convenient workarounds, you are out…

Continue reading

If you are a cash-strapped startup, you can usually get away with a team of just one or two developers and hope for the best. There’s absolutely nothing wrong with that. But if you have the funds to add new members to your team, don’t just go with more developers. Developers aren’t generally very good at designing products people want to use – they are good at implementing well-specced features…

Continue reading

Three Power Amp Fan Mods

I use pro audio power amps in my home theater. They provide tons of power for little money. There is one major downside though. Most models feature noisy fans, and for a good reason – pro audio power amps are often run at their limits, and many manufacturers prefer to err on the side of caution. For home use though, you can usually get away with replacing the built-in fans with quieter ones…

Continue reading

A few months ago, I bought an entry-level CNC router from a local supplier, knowing full well that I would probably need to modify it extensively. The price of the machine was right, and in case I decide to build a better one on my own, this machine would be a good starting point to learn how all the parts are connected together…

Continue reading

We live in an era of fast-changing and often ill defined user requirements. The conventional software development model of plan > code > test can more often than not fail to produce software that meets user requirements in a reasonable amount of time. One alternative is a three-stage process that allows us to iteratively learn what the users really want, and if all goes well develop better software faster…

Continue reading

Aycan Gulez