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

Favorite Exercise

I don’t like to exercise. I mostly think of it as a distraction, but what bothers me the most is the amount of time spent for exercise could have been dedicated to other, you know, more fun activities. We all need to exercise regularly to stay in shape and be healthy. I don’t think anyone would disagree with that, but if exercise takes too much time, I know I wouldn’t do it. So, I needed a compromise…

Continue reading

I still remember a quote from a computer magazine I read when I was 12. In an article comparing the programming languages of the time, a C developer described the Pascal programming language as “having a mother hen hovering over you, watching your every move, making sure you don’t screw up.” I didn’t fully understand it at the time, but he was most likely referring to the strong type checking in Pascal, which could lead to compiler and runtime errors…

Continue reading

I write because I want to share what I know with others. Yet the software developer in me makes writing hard for me. See, in coding the internal structure needs to be consistent. The code we write is like a house of cards. If we make even one tiny mistake, the whole thing may come falling down. So, when I write, I try to be consistent, which is not a bad thing in itself of course, but the desire for consistency makes writing a lot more difficult for me than it should be…

Continue reading

Aycan Gulez