In 2018 I recreated this blog with an SSG (Static Site Generator) in Python based on pandoc (asciidoctor for older pages), git timestamps and Jinja2 templates. Even though it cached pandoc invocations, building…
What Is Imagewmark? How do you embed a secret message into an image that survives cropping, scaling, and compression without needing the original source to decode it? Imagewmark is a Free Software tool that…
What Is jj-fzf? The Jujutsu VCS has flexible expressions for specifying revision sets and allows non-linear editing of (ancestry) commits. jj-fzf is an interactive TUI that turns the jj log output into a fast…
Introduction Built on jj and fzf, jj-fzf offers a text-based user interface (TUI) that simplifies complex versioning control operations like rebasing, squashing, and merging commits. This post will guide you…
The jj-fzf project has just seen a new release with version 0.25.0. This brings some new features, several smaller improvements, and some important changes to be aware of. For the uninitiated, jj-fzf is a…
JJ-FZF is a TUI (Terminal-based User Interface) for Jujutsu, built on top of fzf. It centers around the jj log view, providing key bindings for common operations on JJ/Git repositories. About six months ago, I…
I recently worked on some hashtable lookup code that could benefit from SIMD optimizations and microbenchmarking of modulus and hash functions to improve the code quality. However, modern CPUs are complex and…
Earlier this year I had to investigate perception of colour attributes for some of my projects. There exists a long history of colour models that try to approximate perception, each with its own shortcomings…
The first pre-release of Anklang was uploaded to Github a couple days ago. The Anklang project is a digital audio synthesis application for live creation and composition of music or other audio material. It…
In some of my projects, I’ve recently had the need to utilize FMA (fused-multiply-add) or AVX instructions. Compiling C/C++ on X86_64 will by default only activate MXX and a few of the early SSE extensions. The…
Last Tuesday Beast 0.15.0 was released. This is most probably the last release that supports the Gtk+ Beast UI. We have most of the bits and pieces together to move towards the new EBeast UI and a new synthesis…
Yesterday, I sat down to upgrade the Font Awesome package used by Beast’s new UI from 4.7.0 to 5.9.0. In the end, I found that the icons look way more crispy and professional in the 4.7.0 version. Here is an…
The paper Mesh: Compacting Memory Management for C/C++ Applications is about moving memory allocations for compaction, even though the memory pointers are exposed. The idea is to merge allocation blocks from…
Every once in a while I start pondering ways to get rid of the slowness and overwhelming complexity of the autotools machinery, in particular autoconf and libtool. GNU Make has been a great companion for…
Long time no see. It’s been a while since the last Beast release, mainly because we have a lot of code migrations going on, some of which caused severe regressions. Here are the tarball and Debian package…
This is the first post that is published through Iris, the static website generator used by Testbit. Over the years I fine tuned and tweaked my editing and revisioning tools like probably all…
We have just released Beast version 0.11.0: Beast 0.11.0 Announcement The announcement gives a high level overview of the changes (Soundfont support, multi threaded signal processing, new packaging, etc) and…
The last update has been a while, so with the new year around the corner and sitting in c-base @ 33c3, I’ll do my best to sum up what’s been going on in Rapicorn and Beast development since the last releases…
I’ve spent the last week setting up Rapicorn and Beast with travis-ci.org, a free continuous integration service for Github. Since travis is only available for Github, this means the Beast Git repository…
Trying to keep it up, here’s an update on recent developments in Rapicorn and Beast. Git Branches For now, Rapicorn and Beast are using Git branches the following way: Topic branches are created for each…
Yesterday I spent some 14+ hours on getting a templated undo method wrapper going. Just to throw it all away this morning. Here’s what I was trying to achieve, the C version of BEAST implements undo as follows…
A good while ago at a conference, I got into a debate over the usefulness of TLS (thread-local storage of variables) in performance critical code. Allegedly TLS should be too slow for practical uses, especially…
Giving in to persistent nagging from Stephen and Stefan about progress updates (thanks guys), I’ll cherry pick some of the branches recently merged into Rapicorn devel for this post. We’ll see if I can keep…
In the true tradition of previous years, this years 31c3 in Hamburg revealed another bummer about surveillance capacities: 29c3: 2012: exit(0) 30c3: Glenn Greenwald’s keynote starts 31c3: Reconstructing…
In the last months I finally completed and merged a long standing debt into Rapicorn. Ever since the Rapicorn GUI layout & rendering thread got separated from the main application (user) thread, referencing…
Image: Poodle by Heather Hales In my previous post Forward Secrecy Encryption for Apache, I’ve described an Apache SSLCipherSuite setup to support forward secrecy which allowed TLS 1.0 and up, avoided SSLv2 but…
In a time critical section of a recent project, I came across having to optimize the conversion of three digit US month abbreviations (as commonly found in log files) to integers in C++. That is, for "Jan…
The basic need to encrypt digital communication seems to be becoming common sense lately. It probably results from increased public awareness about the number of parties involved in providing the systems…
Tobin Daily Visits Screenshot During recent weeks, I’ve started to create a new tool "Tobin" to generate website statistics for a number of sites I’m administrating or helping with. I’ve used programs like…
Next Friday I’ll be giving a talk on Open Source In Business at the Campus Party Europe conference in the O2 arena, London. The talk is part of the Free Software Track at 14:00 on the Archimedes stage. I’m…
Would you want to invest hours or days into automake logic without a use case? For two of the last software releases I did, I was facing this question. Let me give a bit of background. Recently the…
During a conference some while ago, Jacob Appelbaum gave a talk on the usefulness of the Tor project, allowing you to browse anonymously, liberating speech online, enabling web access in censored countries…
Image: Fernando de Sousa In the last few days I finished reading the "Black Swan" by Nassim Nicholas Taleb. Around last January I saw Günther Palfinger mentioning it in my G+ stream, looked it up and bought it…
Image by Daniel Mitchell About Determine candidates and delete from a set of directories containing aging backups. As a follow up to the release of sayebackup.sh last December, here’s a complimentary tool we’re…
First, a quick intro for for the uninitiated, signals in this context are structures that maintain a lists of callback functions with arbitrary arguments and assorted reentrant machinery to modify the callback…
Image by Daniel Mitchell About Due to popular request, I’m putting up a polished version of the backup script that we’ve been using over the years at Lanedo to backup our systems remotely. This script uses a…
For a while now, I’ve been maintaining my todo lists as backlogs in a Mediawiki repository. I’m regularly deriving sprints from these backlogs for my current task lists. This means identifying important or…
Like every year, I am driving to Berlin this week to attend LinuxTag 2012 to attend the excellent program. If you want to meet up and chat about projects, technologies, Free Software or other things, send me an…
Image: Mag3737 And here’s another muffin from the code cake factory… About Testbit Tools The 'Testbit Tools' package contains tools proven to be useful during the development of several Testbit and Lanedo…
What’s this? Wikihtml2man is an easy to use converter that parses HTML sources, normally originating from a Mediawiki page, and generates Unix Manual Page sources based on it (also referred to as html2man or…
Like every year, I am driving to Berlin this week to attend LinuxTag 2011 to attend the excellent program. If you want to meet up and chat about projects, technologies, Free Software or other things, send me an…
BEAST/BSE version 0.7.4 is available for download at: beast.testbit.eu/… This release integrates the bse-alsa driver for which no seperate package is now needed. BEAST is a music composition and modular…
Image: Salvatore Vuono The self deceiving assumption of effective human multitasking. People are often telling me they are good at multitasking, i.e. handling multiple things at once and performing well at…
This week, our people are running the Lanedo booth at CeBIT in Hannover. Everybody is invited to come and visit us in hall 2, booth D44/124, in the open source park. We will give introductions to our services…
Photo: LifeSupercharger MediaWiki is a pretty fast piece of software out of the box. It’s written in PHP and covers a lot of features, so it can’t serve pages in 0 time, but it’s reasonably well written and…
Last week the Beast project went live with a new website that has been in the making since December: beast.testbit.eu The old website was several years old, adding or changing content was very cumbersome and…
BEAST/BSE and BSE-ALSA version 0.7.2 are available for download: http://beast.testbit.org/beast-ftp/v0.7/beast-0.7.2.tar.bz2 http://beast.testbit.org/beast-ftp/v0.7/bse-alsa-0.7.2.tar.bz2 BEAST is a music…
These days I often have a hard time to keep up with the tasks on my TODO lists, but I do manage to sneak in a spare hour here or there to look into code I authored sometime ago and that’s waiting for…
Rapicorn 10.08.0 is available for download: http://rapicorn.testbit.eu/dist/rapicorn/rapicorn-10.08.0.tar.bz2 Rapicorn is an Experimental UI Toolkit. Most things in a toolkit implementation will benefit from…
Like every year, the entire Lanedo Crowd is currently attending Guadec. If you’re around as well, we can strongly recommend attending one of the talks we’re giving on: Multitouching your apps Best Practices in…
Waiting for unit compilations to finish during development, particularly with G++ and heavy optimizations can be quite time consuming. A run of make distcheck escalates the problem, because all files during a…
Doxer 10.04.0 is available for download: http://rapicorn.testbit.eu/dist/doxer/doxer-10.04.0.tar.bz2 Doxer is a documentation tool initiated originally for generating source code documentation. This is the…
Together with Martyn Russell, Carlos Garnacho and Kristian Rietveld, I’m attending OSiM this week. None of us has been here before, so we’re quite curious about the conference and will keep our eyes open. My…
Lots and lots of things have been going on around me lately, but that’s best left for other posts if I ever get around to do them. ;) A few months ago, I’ve sat down with quite some help by others and collected…
Managing bug lists has become an ubiquitous task when dealing with the GNOME or Nokia bugzillas. At some point I became fed up with the involved cut and pasting, searching and sorting, so I cooked up a small…
Two weeks ago, Bruce Byfield did an interview with me about Manju. The article is now up at linux.com and gives a general overview of the project scope: Manju Project Article. There’s also been a German…
Andreas Nilsson and I recently started the Manju project which aims at creating graphical widget toolkit themes from SVG files in a toolkit independent fashion. It combines the idea of a pixmap theme engine…
Guadec has been in interesting conference, particularly because it took place in Istanbul this year. I tried to keep a few notes throughout the days to wrap up the experience and discussions here. Sunday Headed…
Every other week, someone asks how to use the new unit testing framework in GLib (released with GLib-2.16.0) and Gtk+ (to be released with the next stable). First, here is a write-up from last December that…
The XML GUI definition files used in Rapicorn and also in Beast (described briefly in an earlier blog post) supported a simple $(function,arguments…) evaluation syntax, similar to GNU Make. I’ve never been…
Just like LinuxTag last year, I went to Berlin the past week to help running the Gnome booth for LinuxTag 2008. Due to a sports accident, our booth bunny Sven Herzberg unfortunately couldn’t make it, so on…
Amongst many other things during the Gtk+ Hackfest 2008, it was brought to my attention that Gtk+ maintainership is sometimes perceived as some kind of leet circle, hard to join for newcomers. I can’t really…
Rapicorn 8.4.0 has just been released to the world: Rapicorn v8.4.0 Announcement Lots of things have happened since the last snapshot over a year ago, some of which kept me from making releases or snapshots…
There have been several requests about hosting Gtk+ (and GLib) as a Git repository recently and since that topic has come up more and more often, I meant to write about this for quite some time. Let’s first…
I finally got around to fix a long-standing and tricky bug report: Bug 64764 - Class initialization isn’t thread safe. Thread safety problems in class initializers and _get_type() functions caused nasty…
A couple people have reported minor and major bugs in the last yyhelp version, particularly after yycommit got reimplemented to operate on top of git-commit(1) instead of cg-commit(1). Besides some others, this…
Here is a new release of YummyYummySourceControl, a shallow porcelain script around common git(7) command variants: yyhelp (v0.8) This version supports a new command to grep and match an extended regular…
We’ve been fairly busy recently with resolving the milestone bugs of the next Beast release. The good news is that pretty much all of the hard issues are sorted out by now, the bad news is that according to the…
I’ve had to add another bit to yyhelp to make my everyday coding more convenient, so it got support for git-svn(1). The yypull and yypushpull commands will now detect a git(7) repository set up with git-svn…
The YummyYummySourceControl script got a few buglet fixups during the last days, so I’ve put up version 0.5b: yyhelp. Here’s the obligatory list of changes since the last version: Overview of Changes in…
I’ve put up a new release of the slightly renamed YummyYummySourceControl script here: yyhelp (0.5). The script still depends on cogito(7) for the implementation of yycommit, but other such dependencies have…
Or: Who in the world is actually linking against GLib without Gtk+? I’m currently in the process of building some general purpose infrastructure for Rapicorn and because a good portion of the C++ utilities used…
The idea of using OpenGL as a future core rendering architecture for Gtk+ has been brought up a couple times at GUADEC (and then some variations thereof). However there are good reasons to avoid that and major…
For Rapicorn i need a simple and nicely readable way to special case code on various strings, which isn’t a problem in most scripting languages but is not provided by C/C++. Switching on strings turns out to be…
Starting with the discontinuation of cogito, i began to wonder about my future git usage patterns. On the one hand, i have become quite used to the convenience of some of the cogito commands, on the other hand…
Newly built GLib & Gtk+ API docs are online now. In the process, i fixed a long standing documentation feature request: searchable API docs. This turned out to be the most requested documentation feature at the…
I just got back online after a full week of DSL-outage due to the Deutsche Telekom Strike. If you are awaiting response via email or bugzilla from me, please be patient, I’m doing my best to catch up. Feel free…
As announced by Hallski, Sven, Mitch and me went to LinuxTag 2007 and operated the Imendio and GNOME booths. As usual, Sven did a great job nurturing random users approaching the booth, together with Mathias…
Gtk+ Patch Testing & Committing: Recently i was caught on IRC and asked to look into a few outstanding Gtk+ bug reports. Some of them easy, some of them not so easy, e.g. one required a lengthy in-depth…
The Gtk+ project finally gets a structured way to absorb voluntary efforts. Here is my proposal for a Volunteer Task List on gtk-devel-list. The task list is currently being constructed in the Gnome Wiki: GTK…
The generation rules for the Rapicorn website are now finally in place: → rapicorn.org ← This should help to clear up some of the motivations behind the Rapicorn project, in particular how it relates to Gtk…
I will quickly roll up some of the interesting bits that happened around Beast in the last couple of weeks. Stefan Westerfeld sat down and put up a collection of the various instruments and loops he is…
The last Rapicorn snapshot had a couple build and compiler issues which could be fixed meanwhile, so here is the "real" 0.1.2 release: rapicorn-0.1.2.tar.gz It’s still a technology preview release with known…
One of the typical problems with implementing an allocator is that all sorts of memory failures in programs get attributed to the allocator. That’s because messing up heap memory somewhere in a program or…
The other day, Tommi Komulainen pointed out to me that GSlice is using more memory than memchunks for him after bootup of the N770. Now, GSlice is supposed to be faster than memchunks, yes. And its supposed to…