Articles
Let’s Make it Generic [Host: The Vertical Slice]
Talented programmers have the ability to redefine problems - in more general terms and in particular, in simpler terms. There is always a better and more generic solution which is almost always more interesting to create and possibly a good investment as well. Making a piece of software more generic is tempting to programmers. But it isn’t free.
The Transition to Concurrency [Host: Gamasutra.com]
Concurrency is going to be part of most developers’ lives in the future. C++ and languages like it are poorly suited for concurrency as it is today.
Semaphores are common and well-known, but using them correctly is difficult. If you want to prepare for concurrency, you could start the transition by becoming familiar with immutability, persistent data structures and active objects.
Top Ten of Programming Advice NOT to follow
There are lots and lots of programming advice on the web. Some of it good, some of it less so. But most of it is simply plain obvious or just too general to be interesting.
Then I thought well, since I feel that I do have something to say in that area, why not try and address some of the most common things people are being told with which I disagree?
Run-time Code Generation [In Danish, PDF]
My bachelor’s project that describes a framework for run-time code generation in c++. It allows you to write x86 assembly code and, to some degree, a pseudo-c like language which is compiled at run-time. This presents a binding-time that is even more just-in-time than most just-in-time compiling vm’s. Functions can be abstracted into functors, allowing for seamless integration into regular c++ code.
Though the report is in Danish, the source code (which is freely available, though quite alpha-stage’ish) is in English. Download here: rtcg.zip. Currently compiles with Microsoft Visual Studio.
Lock Free Programming [In Danish]
If you’ve written concurrent software, you’re bound to be familiar with semaphores and locks. Locks are a well known and popular way of engineering software that is meant to run in parallell. And they work. Only there are some pitfalls which are equally known though not very popular - namely dead locks, priority inversion and other debugging horrors. Well, less known is lock free programming. A programming paradigm that presents some interesting solutions to the problems that locks cause and can teach you some good coding habits at the same time.
Agile Knowledge Management
Have you ever found yourself thinking damn, I did this just a few days ago. What was it now?
Do you have a bookmarks menu that doesn’t fit on the screen? Do you use post-it notes, real or virtual of some sort? I know I did. And I didn’t like it. I’ve been spending a lot of time trying out different strategies of knowledge management.
Value Feedback in XP [In Danish]
A central part of eXtreme Programming is feedback. Feedback is provided through tests, on-site customers, short iterations etc. etc. One area that doesn’t provide feedback though, is value determination. The customer should prioritize features from their value but there is no official way to evaluate your priorities and thus improve your ability to estimate such value. At least, I know of none.
Motion Blur
Motion blur is the effect that arises when a camera captures an image of an object or scenery in motion. It is the reason why movies look great even though they are recorded at the relatively low frame rate of 24 frames per second.