Reflections similarities and differences in thinking behind Domain Driven Design (DDD), version control systems like Git and crypto currency systems.

Image for post
Image for post

Recently I have been doing a course on Domain Driven Design (DDD). This made me make some reflections on how DDD related to other technologies that I know.

DDD is not like say object-oriented design or functional programming. Rather it is more about a way of dealing with data which needs to be made persistent. It is a natural companion to object-oriented programming, but exist at a higher level.


Languages running on virtual machines were developed to make deployment on any platform easy. But this ability no longer matters when your software runs in a container.

Image for post
Image for post

Yes, I know this sounds like a click bait title. How dare I come with such a controversial and radical claim that Java and C# is obsolete?

Before jumping to the comment field and calling me a clueless idiot, let me clarify what I mean by “obsolete” in this case. Something being obsolete doesn’t necessarily mean it isn’t used or important anymore. I think it is fair to call COBOL obsolete as a programming language. It is no longer needed to solve specific problems we have. However that does not mean we can shut down every system running COBOL or…


A Julia developer returns to Golang. Impressed by the simplicty and speed of the Go toolchain.

Image for post
Image for post

I did a bunch of Go programming the past and even held conference talks on Go. But I have been away from Go for a while and did both Swift and Julia programming in the meantime.

Fortunately Go has stayed remarkably stable as a language since I first picked it up, so I don’t have to learn a lot of new things. Rather it is more about a fresh up. The key new thing for me to learn are Go modules as well as familiarizing myself with the tooling around the language. …


People always say it is good if company X does better, because it brings more competition. And competition is good right?

One of the most annoying truthism I hear people pander, is this idea that competition is always good. Specifically this comes up often when a dominant company which has held back the market for years slips and the little guy gets some time in the sunlight. This could be AMD beating Intel for a change. It could be ARM beating x86.

It could be Tesla beating General Motors. Or it could be SpaceX beating United Launch Alliance. …


With automatic garbage collection, is Go really suitable as a systems programming language?

Image for post
Image for post

A topic that arise from time to time is whether Go is a systems programming language. The creators of Go has characterized it as such but many object to that label.

With automatic garbage collection it does not seem to fit the bill. You would not want to write an operating system kernel e.g. with a language using a garbage collector.

However it helps to clarify by looking at wikipedia definition of systems programming:

Systems programming, or system programming, is the activity of programming computer system software.

The primary distinguishing characteristic of systems programming when compared to application programming is…


Few things are linear. Double compile times does not necessarily mean you double the amount of useful stuff done. Usually there is a case of diminishing returns.

Rust seems to have gone to extremes to squeeze tiny amounts of performance in exchange for massive increases in build times.

I don't know the current state, but for years Rust build times was significantly worse than C++. In my humble opinion, that is simply an epic failure.

People talk about the million dollar mistake of having null pointers. Well having C++ style compilation times is in my humble opinion a million dollar…


Writing graphical user interfaces that work across multiple platforms is notoriously hard or complex. What can we do?

Image for post
Image for post

Lots of ways exist today for writing cross platform GUI software. You could use web technologies, Qt, Godot and many other technologies.

Yet none of the solution are all that great. I have used Qt for many years which is quite well made for C++ GUI development. Yet it is a large installation and creating bindings for other languages is less than ideal thanks to it being made in C++ which has no stable well defined binary interface.

Nor does it ever really look good on all platforms. E.g. Qt will use native drawing function to draw things like buttons…


Some reflections on how a game engine made for beginners should look.

Image for post
Image for post
Visual coding of a game in Scratch. A beginner friendly tool, but which is hard to advance coding skills with.

The desire to program games was what got me into programming in the first place. I have probably been programming for some 30 years at this point and having children on my own. Today this makes me reflect upon how to teach programming to the next generation.

The Challenge of Learning Programming Today

While we have more amazing tools, hardware and resources available than ever before, it does present new and unique challenges.

Computer hardware today is exceptionally complicated compared to Commodore 64, Amiga and PCs with DOS that I grew up with. …


Comparing how Julia and Go deal with dependencies to other code

Image for post
Image for post
Gopher image by Ashley McNamara CC BY-NC-SA 4.0

Julia and Go are a fun exercise in how terminology can get really confusing. In Julia and Go, the package and module concepts have basically been swapped.

The Go documentation defines a module as:

A module is a collection of packages that are released, versioned, and distributed together. Modules may be downloaded directly from version control repositories or from module proxy servers.

This is pretty much the reverse of Julia. In Julia a package is what get distributed and version controlled. A package however may contain multiple modules.

In Julia modules exist at the language level providing a namespace for…


A friendly explanation of how Kakoune is configured.

Image for post
Image for post

Most likely you read this because you have some idea of what the Kakoune editor already is. If you don’t you can think of Kakoune as Vim for dummies. Yes, I include myself in that category. I have what amounts to goldfish memory when it comes to remembering tons of commands in advance coding editors.

Read more: Kakoune, the Text Editor I Didn’t Know I Needed.

I quite like the whole concept of Vim, but I can never quite get used to it. Instead I prefer to use more GUI oriented editors such as TextMate and VSCode. However there are…

Erik Engheim

Geek dad, living in Oslo, Norway with passion for UX, Julia programming, science, teaching, reading and writing.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store