Have you heard about literate programming? It's a technique that lets you write a computer program the same way as if you were writing a piece of literature. And while it may seem exotic and unnecessary, there are some cases when it's quite useful. I believe I have found one of them. In this post, I will describe a solution for writing a tutorial in the spirit of literate programming by using nodejs-based, language-agnostic, literate programming tool.
These days, unit testing became a major part of software engineer's work. We familiarized ourselves with unit testing frameworks based on xUnit architecture (e.g. JUnit, SUnit) where tests are executed during run time of the test program. As of time of this writing, it's the most popular way of testing in an object-oriented environment. Few years ago, I started using compile-time unit testing in my C++ experiments. As it turned out quite well, I will try to share my experience in here. This article describes reasons for using compile-time unit testing, provides examples of code that can be tested this way, and shows how to debug such tests.
Self-education can be as painful as it can be gratifying. The trick is to know when to expect what. Contents of this article are aimed at establishing a correct (IMHO) mindset in the topic of learning programming languages. I will try to convince you that knowing multiple languages well is the way to excell as a software developer. You'll get to know the benefits of polyglot programming, reasons for not liking it, what programming gurus have to say in this matter, and how to choose the next language to learn.
Recently, I had few email conversations with past job coleague of mine. The most challenging one was on the topic of distributed transactions. It turns out we both had some experience with them, but our opinions were rather different. As this topic is pretty hot these days, I decided to write down our insights in this article. The goal is to list disadvantages of distributed transactions, show how they are overused, provide an alternative approach, and specify conditions under which each technique may be applied.
Single Page Application (SPA) is an old, yet only lately popular way of creating programs for the web. The idea is to fetch most of the resources from the server when user loads a website and then, as the user interacts with the site, fetch and store data via calls to an API endpoint (typically REST). In effect, page is never reloaded, wich makes the expecience more smooth than with traditional webpage. This article highlights main characteristics of SPA and specifies conditions under which the concept is preferably applicable.
During the last few months, I spent a lot of time experimenting with a fairly new concurrent programming language—Go. I definitely fell in love with it, but I came across something very disturbing. In my opinion, Go's documentation contains guidelines regarding errors which are just wrong. In this post, I will try to share my thougths on two very important programming techniques—Offensive Programming and Defensive Programming.
I recently watched Is TDD Dead hangout, where Kent Beck expressed his opinion about theory of Test-Induced Design Damage. He spoke about poor design decisions and how reaching good design takes time. I believe, that word "overdesign" was not used in the conversation, but it was ringing in my head all the time when I watched it. I also cought myself using word overdesign when speaking about some enterprise framework (version 3.2). I've spent some time thinking about it and it came to me, that this word is used in multiple meanings and may even contradict itself.