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. …
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. …
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…
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…
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.
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. …
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…
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.
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…
Few things gets software developers as passionate as discussions about best engineering practices. Should you do test-driven development, behavior driven development or even REPL driven development?
While I am quite opinionated on software development, I don’t want to claim there is one right true path. The style of development that will work best for you depends both on your traits, the language you use and the problem you are trying to solve.
Here I will try to make the case for REPL-driven development over TDD, based on my experiences. …
A computer program is a recipe of steps to perform. Together these steps should solve a problem or perform a task. This seems very different from making a painting where there is seemingly no rule that has to be followed. What is a compile error on a painting?
Yet to the pedantic who gets too hung up on the concrete, it is hard to see any relation: Painting is an art and programming is an engineering discipline.
Geek dad, living in Oslo, Norway with passion for UX, Julia programming, science, teaching, reading and writing.