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 programmers…
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 change…
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, etc…
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…