It’s been two years since the last post, so …, what held me back? Primarily, a wonderful daughter found her way into my life, grounding me and giving a lot of purpose to life. Who would have thought, right? But that did not mean I have been slacking. wastebin has been chugging along, binge my binary installer and weave my final zk web frontend have seen the light of day, I finished the meater…
This is a personal note on how to inspect async streams in order to hash the contents without storing and reading the stream once more. This might become the start of a a series of little code snippets that might be interesting to others as well. Code As an example fetch a URL and compute the SHA256 hash on it: use anyhow :: anyhow ; use futures :: StreamExt ; use sha2 :: Digest ; use std :: path…
OpenCL has been with me for more than a decade, back when we decided to use it in our research project to make it the foundation for accelerating synchrotron imaging. Now, as history has shown, OpenCL never really took off, partially because Apple (the initial sponsor) dropped it but more importantly NVIDIA being very successful in locking in people with their proprietary CUDA solution.…
It has been almost a month already since I released the first major breaking release of my minimalist pastebin . The main reason to bump the major version was due to streamlining routes especially dropping the /api ones and adding query parameters where it made sense. In between my last post and version two, there have been many other non-breaking changes like correct caching (of course …),…
Pastebins are the next step in the evolution of a software developer, right after finishing hello worlds and static site generators. They are limited terms of features (or not … ahem) but require some form of dynamisms in order to receive and store user input and make it available upon request. Of course, everyone has different ideas what a pastebin should do and in what language it should be…
One of Rust’s nice properties is producing statically linked binaries making deployment simple and straightforward. In some cases this is not enough and additional data is required for proper function, for example static data for web servers. With dependencies such as include_dir and mime_guess this is a piece of cake to integrate into axum though. Using include_dir we first declare variable that…
Eight years ago (ouch …) I published a little tool to interactively cherry-pick commits from a branch. It’s still useful to me but ever so often I forget about the urwid dependency when re-installing it. Yada yada, so of course team Rewrite-in-Rust strikes again which means I can simply drop the statically linked binary into $PATH and not have to worry about Python and ncurses dependencies…
A friend of mine asked me to join him in a small side project that combines both art, programming and hardware. The latter is still in the design phase, so let me tell you about the art and programming part first. The principal idea is to generate art (random, really generative or from existing data) and let it being drawn in real life by a machine . We wanted to start simple and just process…
Stoneshard is a turn-based RPG with nice 2D pixel art and an elaborate role-playing system. Unfortunately, the Linux support is a bit messy and if you happen to play it on Ubuntu 20.04, it will tell you it cannot find libcrypto.so.1.0.0 . Common advice is to symlink libcrypto.so.1.1.0 however that is neither a good idea nor even necessary because the game does not even depend on it. Hence, the…
As we all know public services are often underfunded or public websites more often than not of questionable usability. The waste calendar for the municipality of Karlsruhe is somewhere in between. It is not bad but not of much help for your fellow scavengers who like to re-use thrown away goods. For the past three years, I scraped that site with a small Python script and dumped a CSV file that…
As easily witnessed, content frequency of the blog is at an all-time low. So what’s better than increasing it by writing about switching from Jekyll to Zola ? Why, you ask? First, Jekyll is the only reason I have Ruby and gazillion of Jekyll dependencies installed even though I don’t understand a lick of the language. Second, every time there is a Jekyll update, I have to do something about some…
Static site generators for blogs and similar ad-ladden static “content” is the hot shit for years now. Probably because it’s a simple enough task to tackle with even superficial knowledge of the language du jour. Because of that and the number of people hosting their own photos being in the low single digits, static site generators for photo galleries are not a hot topic. For years, I have used…
C and C++ is known for its abysmal dependency and build system situation. For historic reasons a build system has not been standardized thus low level build tools such as make and ninja as well high-level build tool generators such as Autotools, CMake, meson and entire build frameworks like bazel have come and gone throughout the years. A lesser known build generator is coremake . And lets be…
Canon shipped their newest and cheapest full frame camera, the Canon EOS RP, end of February. In their infinite wisdom, they decided that they had to to develop a new CR3 format for this as well as the previously released EOS R and M50 cameras. And of course, so far no one was able to reverse-engineer the raw format entirely, so it will take a good while until those cameras will be supported by…
Whoever is reading this blog knows that I use Ledger-likes to track my finances. Some of you may also know that the currency is just some arbitrary name for any kind of unit. And a minority of you may also know there is special support for tracking time in the original Ledger program. This post explains how I use Ledger and a few Bash aliases to track different activities during a normal work day.…
I wrote about meson the awesome build system before. For C-based projects with many test executables there is nice infrastructure, however many C++ projects probably use Google Test or Catch and a single binary which runs the entire test suite. This is all nice and dandy with Google Test if you compile and link the test executable straight from the unit test source files. If however you build…
For the past three years I have been recording my finances with tools from the ledger family . While I had no major issues with them, there were a few minor annoyances, most notably recording capital gains in hledger without a virtual posting and a lack of a nice visual representation of my finances. I knew about beancount but was always a bit sceptical about its data format which is not really…
Developing C and C++ projects in a cross-platform manner is not only difficult because of different system APIs but also because dependencies have to be tracked, installed and integrated into the build system du jour . While it is largely a solved problem on Linux thanks to system package managers and de facto standards such as pkg-config , the situation on Windows is tricky because both are…
Focusrite’s Scarlett USB audio interfaces are cost-effective units with a wide range of input and output options. Out of the box they can be used by most digital audio workstations on Linux because they are USB class-compliant. However, besides the entry-level models (Solo, 2i2 and 2i4), you will certainly miss a few features for recording that just cannot be accessed due to a lack hardware…
I wrote about the woes I had with the abysmal OpenCL implementations by both AMD and NVIDIA. Now, it’s not always the fault of others and I recently had to debug a GPU memory leak originating from our own software. The first thing I needed to indentify was if all OpenCL resources were referenced and dereferenced equally. However, the entire system is (as usual I suppose) a dynamic pile of layers…
I decided to move all music and bass related content to its own platform over at music.bloerg.net because it does not really fit the technical stuff here. No redirects were set up, so if you happened to have linked there … update your links accordingly.
I am always amazed how far one can get by chaining the output of simple programs to create something bigger. This time, I had to convert the pages of a PDF file to a single PNG thumbnail image. As I learned in five minutes this is super simple with pdftoppm , Imagemagick’s convert tool and a Makefile to hook it up together: % .png : % .pdf pdftoppm - png $< tmp convert +append tmp- * - resize x320…
tl;dr: On a stock Ubuntu 16.04. system build your presentation with pdfLaTeX or LuaTeX and use Okular to display it. TikZ animations are a great way to illustrate dynamic processes in your Beamer presentations but are not suited for movies. So far, presenting movies on Linux has been pretty dull but eventually I figured out what works (and what not). First of all you, need to include \ usepackage…
You might have noticed a slight visual change of this site. Well, I just pulled the trigger and re-wrote this site’s CSS based on milligram in about an hour. The sole reason for that was that the old CSS was an unmaintable, barely responsive mess. I am not a CSS expert, so why not leverage one of the countless minimal CSS frameworks and add a few customizations to get away from that hip and modern…
For the first time in a long time I felt happy about a piece of software: it’s meson the build system. I wrote about my adventures with CMake but in the end I was never really happy with it. Be it its arcane syntax, intransparent build process or lack of following standards common in the nix world. I used it but grudgingly because I could not let my colleagues be burdened with Autotools. I read…
As seen previously, installing a Flatpak is a relatively simple matter – and with Flatpak bundles even a one-click story. Now, building a Flatpak and the corresponding repository is a slightly different story that I want to tell you with my adventure making a Flatpak for the latest 0.92 version of Inkscape. I won’t go into detail about the build process itself which is described just alright in…
This is a follow-up to Simos post on how to install LibreOffice but using Flatpak instead of Snap. If you haven’t have the flatpak system installed yet you must install it first from Alex Larsson’s PPA sudo add-apt-repository ppa:alexlarsson/flatpakrepo sudo apt update sudo apt install flatpak As per the instructions you can then add the GNOME runtime repository flatpak remote-add…
Yeah, I should have read that f’n manual of GNOME’s standard terminal and I would not have to get creative to select a block of text from some program’s output 1 . Now, I feel embarrassed for not having pressed Ctrl while dragging the mouse all these years. 1 My go-to solution usually was to pipe the output into a text file and use Vi’s Ctrl + V command.
I just finished upgrading this machine from Ubuntu 14.04.5 to 16.04.1. I always have a slight uneasy feeling upgrading a machine remotely but – knock on wood – it has been a pretty straightforward process even though I had a minor boot issue which I did not had when going from 12.04 to 14.04. Besides the nginx web server and postfix mail server, I run Gogs , Syncthing and my commenting system. To…
Before you wonder: yes, I am still alive and I just reviewed all pending comments. Sorry, for letting you wait so long but in this part of the world, it was summer. Anyway, I will resume blogging but will shift topics slightly. For once, I started investigating Rust . I implemented netcat for fun, which took half an hour to implement and two hours to make alright, i.e. replace all those .unwrap()…
Disclaimer: The main idea of this post might only be interesting for ten other people in the entire world but the general notion of keeping a double-entry booking journal might also appeal to you. Note though that I am not a finance expert, so your mileage may vary. Double-entry bookkeeping with ledger For a very long time, I have not taken particular interest in my finances and my main strategy…
According to the stars and forks 1 , the Beamer theme that I [introduced][] a year ago has filled a longstanding desire for a theme that has a simple and clean default look. It started as a one man effort but over the year I received a lot of contributions from many people, first and foremost from [Benjamin Weiss][] – author of the [HSRM theme][] that was a huge inspiration for this theme – and…
It’s time for the forth installment of updates concerning my Vim configuration. Unlike previous years, I made a lot less changes to my .vimrc over the year. Although, my Vim configuration converges towards a stable setup, I am still not one hundred percent satisfied with. My biggest gripe is a change in NeoComplete that sometimes completes gibberish at inappropriate times, for example when I hit…
Even though I could reduce the pain of using git-annex on the command line with a Ranger plugin, the weird concept and the workflow concerning files which are not read-only let me use it less and less. Moreover, when collaborating with others, I could feel that Dropbox does something right with their system which was not possible to with git-annex in any way. However, since Dropbox is a US-based,…
Craft beer and home brewing is a hip topic for quite some time already. For almost three years now, two friends of mine and I have been brewing various top-fermented beers. We started with small batches made entirely by hand and went up to semi-automatic mashing and better controlled equipment 1 . Although we tried to document the entire brewing and fermenting process from the get-go, we were…
Thanks to the generous offerings from the Let’s Encrypt initiative and certificate authority, you can now find all content securely hosted . Because I am still somewhat suspicious of the automatic certification process provided by the official client and I serve this site with Nginx, I followed along the description of letsencrypt-nosudo for a semi-automatic process. All in all, it took about 15…
Pushing data from a PCIe device to a GPU or letting a GPU write into a PCIe device directly is necessary to optimize for latencies by avoiding an intermediate hop through the system memory. For this purpose NVIDIA provides the GPUDirect technology which is CUDA only. Your only bet to achieve the same on OpenCL is to buy AMD cards and use the open DirectGMA (marketing speak) or bus-addressable…
Although I am a Vim user for almost ten years now, I still learn something new every once in a while that will improve my editing to be more efficient or comfortable. This time – and I have to admit that it’s almost embarrassing – I quickly grew accustomed to the f and t motions. In essence you type f or t followed by a character to which the cursor will jump on or right before. Typing ; and ,…
Lately, a post on writing good Git commit messages and the subsequent Reddit discussion caught my attention. I fully agree with each and every point made and in fact alway try to convince colleagues and friends to follow this model. However, what to do if you are happily coding away, churning out commit after commit and then end up with a larger number of commits with summaries such as “Fixes…
To fetch a pull requests by its ID, I probably googled “github checkout pull request” a hundred times by now. Here is a simple Git alias which goes into the .gitconfig to make that a bit easier: [alias] checkout-pr = "!f() { git fetch origin pull/$1/head:pr-$1 && git checkout pr-$1; }; f" Now it’s just a matter of git checkout-pr 42 to check the changes of pull request #42 on my local…
Quick reminder how to use the alternatives system to call Neovim : sudo update-alternatives --install /usr/bin/vi vi /usr/local/bin/nvim sudo update-alternatives --install /usr/bin/vim vim /usr/local/bin/nvim sudo update-alternatives --install /usr/bin/editor editor /usr/local/bin/nvim … and to…
pkg-config is a freedesktop standard and implementation that helps developers finding correct compile and link flags of dependencies. Despite its very low version number, it is the de facto method for determining said flags on the Linux desktop. An oft-forgotten feature of pkg-config is the ability of a package to expose arbitrary key-value meta data. This allows dependent applications to find…
I found the time to update my static comment script and will have the time to review comments again for the foreseeable future. Thus spam bots: ready, steady, go!
In this day and age, cloud storage is a convenient way to access data from any location. However for privacy and data theft reasons, using third party products always leaves a sour taste in my opinion. To host my own centralized and encrypted data storage for small, highly confidential data, I set up a system combining SSHFS and EncFS . SSHFS is a FUSE file system to mount a remote file system…
Compiling a LaTeX/BibTeX document is a tedious process does not integrate very well with the make idiom. Until now, I used [rubber][] to compile my documents. However, there are several shortcomings that make rubber only a good rather than a perfect solution. Most notably, it is basically unmaintained for years now with the current release dating back to 2006. This wouldn’t be a big issue if…
When a friend found out that I am “blogging”, she assumed I would be posting personal details and share my views about this and that. Aside from my very personal configurations however, that is obviously not the case. I’d like to change that a tiny little bit by linking to a page with a list of books – see also the header bar – that I read in the past. This will not only give you a limited idea…
Another year has passed thus it’s time for the third installment of the series on my Vim configuration. The main motto of this year has been “reduction and time saving”. NeoBundle becomes Plug and Airline becomes Lightline I know, I know, yet another plugin manager. This time it’s vim-plug , which has all the features of NeoBundle has but additionally can install plugins in parallel . This a huge…
Beamer is an awesome way to make slides with LaTeX. But I always felt that the stock themes do not necessarily look particularly nice and the custom themes often scream “Beamer” at first sight. So, I sat down and made the mtheme … In the spirit of Jan Tschichold and Matthew Butterick , the theme tries to minimize visual noise and maximize space for content. Thus an ordinary slide is free of…
There haven’t been in any posts for a while and I sincerely have to apologize that this will continue for at least two months. This will also affect the comment section, which I will deactivate to reduce the amount of moderation.
I knew, Google was scanning my mail to present personalized ads to me but I never saw them though because of AdblockPlus. I got back to reality, when Gmail offered me to track the delivery of an Amazon order …