programming

Performance analysis of Java loop variants

What is the fastest loop variant? Does it even matter?

5 minute read

From time to time I profile Gaia Sky to find CPU hot-spots that are hopefully easy to iron out. To do so, I launch my profiler of choice and look at the CPU times for the top offender methods. Today I went through such a process and was surprised to find a forEach() method of the Java streams API among the worst offenders. Was the forEach() slowing things down or was it simply that what’s inside the loop took too long to process? I found conflicting and inconsistent reports in the interwebs, so I set on a quest to provide my own answers.

Procedural generation of planetary surfaces

Generating realistic planet surfaces and moons

12 minute read

I have recently implemented a procedural generation system for planetary surfaces into Gaia Sky. In this post, I ponder about different methods and techniques for procedurally generating planets that look just right and explain the process behind it in somewhat detail. This is a rather technical post, so be warned. As a teaser, the following image shows a planet generated using the processes described in this article.

Left: a wide view of a procedurally generated planet. Right: the same planet viewed from the surface.

Git bisect

Go bug hunting armed with a binary search tree

2 minute read

When I started using git as my VCS I skimmed the docs and git-bisect caught my eye. I got acquainted with it rather quickly and have been using it regularly ever since. git-bisect is a little handy git sub-command typically used to quickly narrow down the commit where a bug was introduced in a code base. It uses a simple binary search tree algorithm (BST) to test out different revisions by parting the remaining search space in half.

Semantic commit messages

Use your git history like a pro and reap the benefits (almost) instantly

3 minute read

Do you often find yourself using “New feature”, “More” or similar short, useless and generic strings as your git commit messages? I know I did. Until I learned about semantic commit messages, that is. What are they and how can they exponentially improve your commit history and make it actually useful? I’m discussing it in this post.

Create your static photo gallery with thumbsup

Do not post your photos in online services that do not respect your rights, create your own static HTML photo gallery for your website with thumbsup

4 minute read

It is nowadays commonplace to upload your valued photos to online services that don’t respect your rights like Flickr, Google Photos or Instagram. While these sites have a social component that may help you build an audience and have a wider reach, usually their terms and conditions are abusive to end users. In this post I’ll be discussing how to create your own static HTML photo gallery that you can host on your website using thumbsup, a static gallery generator written in Python that produces totally customizable photo galleries. You can host your high resolution photos in your private server and have the gallery link to them. The photo gallery on this very site is generated using this method.

My Linux setup (as of 11/2021)

Description of my daily Linux setup as of November 2021

7 minute read

A couple of years ago I wrote a blog post about my Linux setup at the time. Well, understandably a lot of things have changed since then, and instead of updating a two year old post, I think writing a new one from scratch with the same principle and using the same template makes more sense. It is always fun to go back and read these old posts, and I fully expect that this one post will be as enjoyable for me in a few years time.

Website design by myself. See the privacy policy.
All content on this site is licensed under CC-BY-NC-SA 4.0.