Computing special functions — I might have mentioned this once or twice before, but computers are essentially very stupid, since all they can do is add, subtract, multiply, divide and make simple yes/no decisions. Everything else a computer can...
Numerically inverting a matrix — Suppose you have a square matrix, like the one below: $$ A = \begin{pmatrix} 0 & 5 & 5 \\ 2 & 9 & 0 \\ 6 & 8 & 8 \end{pmatrix}, $$ and that...
Rewriting legacy code — Legacy code is a general term used for software that was conceived and developed a long time ago, but that for some reason is still actively being used. Many sciences (astronomy is one of them)...
Resolving painful git merges — git is an amazing repository system that greatly facilitates the management of large, collaborative code projects. It can store a large number of source code files and their history, and allows separate developers to work...
Template programming — Nowadays, computers can be programmed using a large variety of computing languages, with very different degrees of complexity and sometimes with a very strong fan base of enthusiastic users. Fundamentally though, computers and their CPUs...
Signals and interrupts — When an operating system starts a software program, it will typically create a process for that program and hand that process control over some hardware resources. The process can then use those resources to run...
Tracking program execution — I am currently exploring the limits of my code CMacIonize on an HPC system with a number of fat nodes (nodes with a large amount of RAM memory). The idea is to see how big...
Tools I use for scientific code development — In my daily job as a scientific code developer, I use a lot of freely available tools that help me be more efficient and to produce more robust, reproducible science products. In a series of...