Allocations are good, actually

Something that you can often hear in the Rust community, especially from people who were previously C or C++ developers, is the adage "allocations are slow".

The other day a friend asked me how to create a consecutive list of numbers. I pointed her at (0..).take(x).collect() which can be made into a Vec<_>, with a number of her choice. It did made me think however about how this could be done much nicer in a allocation-free manner.

It lead me to come up with the following code which creates a [_; _] slice, depending on which integer representation and length you choose.

  .fold([0; x], |mut acc, (step, i)| {
    acc[i] = step;

So with this in mind, I wanted to run some comparisons. I chose the numbers so that 32768 consecutive …

`home-manager`. Or: how not to yakhave

Don't expect the bait-and-switch titles to remain forever. I just thought it was fitting for this one too 😉.

Some background

Ever since I started venturing into computer programming and using more and more tools that used dotfiles, I've been frustrated at the lack of good tools when it came to synchronising these files.

And that's not for lack of options. Either I disagree fundamentally with what I want a sync tool to do or nobody had come at the problem from the same angle as me before. This is not to bash on other projects or solutions. I know many people who are very happy with either keeping their dotfiles in a large git repo, symlinking manually, making ~ a git repo or using various tools that automate the symlink process.

The problem I had was that not all my computers …

Rust 2019: how we make decisions

I'm late to the party, I know. But writing this post took a little longer. In fact, I wrote it three times, not really sure where I wanted it to go and what I wanted to say. In the end, I think most things have already been said. So this will be short.


There have been a great number of blog posts about the problems that the Rust community is facing. I recommend you read some of them because they're really good. For example boats who published an article early december about "Organisational Dept". Or killercup about how we count contributions (and other things). Or skade, who published a small collection of articles on organisational subjects.

There's many more under the #rust2019 hashtag on twitter.

My point is: you can read about what the issues are elsewhere, from more …

Hacking is political

I'm just coming back from the Chaos Communication Congress, a four day event just after Christmas. It was my fourth one in total, and now the third in a row (the first being 25C3 as a smol girl).

It's hard to describe the C3 (abreviation for the congress, opposed to the CCC, the club). Some call it a "hacker conference" which some ways accurate, but often doesn't manage to capture what it is. Not to mention relies on the external definition of a "hacker" to describe it. Other's call it a "tech event" or "tech conference" which really isn't accurate either. There are lots of artists and non-tech people represented and I feel these experiences shouldn't be ignored.

The C3 has been in Hamburg for quite a while but was forced to move last year due to the …

Failure. Or: why Rust is probably the best programming language ever created

This post is two stories. One is about accepting and recognising personal failure, reflecting and growing from it; the other is about an incredibly and seemingly endlessly powerful programming language, called Rust.

In the summer of 2014 I started a project which was kind of insane. I knew it was insane, yet I embarked on that journey regardless. I wanted to write a password manager. I chose Ruby as a language because I didn't know many others and was – in more than one way – still a programmer novice.

The details of development aren't too important. About 6-8 months into the project I had written something rather cool and functional. It wasn't very fast, the code base was a bit of a mess and I was having issues with packaging. But, at the core, I really liked what I had made …

Rebuilding my Website (again)

It's winter, rebuilding my website is a tradition...right? Happy new year everybody.

This has been a long time coming. I've not really been happy with the way my website looked for a while and have been playing around with new designs for the past few months. I also took that opportunity to throw out a few old articles, fix formatting on others and generally do house-keeping.

The whole thing is still using Pelican to generate pages but now with a completely new theme and new plugins 🎉

This re-design also decreases complexity. The old theme was massively too complicated and I've now taken it down to 3 (or 4?) templates. Working around the old theme and what Pelican expected was an interesting experience. Especially since it felt less like building a website and more like working with a game engine …

Dabbling with Moonscript

Lua means moon in portuguese

Recently I've started learning/ using Moonscript. It's a language that compiles to lua and as such can run in the LuaJIT, an alternative lua engine which allows very easy and fast ffi calls into native code. This makes lua code capable of writing very performant applications and games that use native rendering, window creation or general libraries.

But in my opinion lua has always felt a bit cumbersome. I use awesomewm so I had to write it occasionally to customise my UI layout. And this is where Moonscript comes in. It's a lot of syntactic sugar on top of lua as well as some other concepts such as object orientation which lua just plain out doesn't have. And while yes, you can write good code without OO (cough C cough) it is a nice tool to have in your pocket …

LibGDX interface containers

Let me tell you a factual statement: UI programming is terrible

Let me tell you an even more factual statement: UI programming in LibGDX is even more terrible

I am a big fan of LibGDX. It's a really nifty library/ framework to get started with game development if you're more comfortable inside a code editor than a full blown game engine that is more targeted towards designers and artists. And I put my money where my mouth is: I have a series about LibGDX development for beginners on this blog and work almost exclusively with it when it comes to my own projects.

Yet, there is something that bothers me and there didn't seem to be a great solution to fix it. UI code structure. In this post I want to highlight a utility I have written for LibGDX which …

Post 33C3, what next?

Howdy everybody,

I just came back from the annual hacker conference in Hamburg, Germany known as the "Chaos Communication Congress" (or CCC for short). It was the first time I was there for the entire venue and the first time I was able to go at all since 2008. So yay!

It was a lot of fun and I have a lot of nice memories to hold onto now. I talked to a lot of interesting people, learned new things, got inspired to do new things and continue on old things.

More importantly, I loved the chance to get in touch with some other women in the tech industry (via Haecksen & Queer Feminist Geeks), talk about problems, attempt to come up with solutions and just generally rant about things :)

I also found out that I am in no way, shape …

Winter update

Howdy everybody!

As the year is winding down and we're all getting ready for the jump to take us out of what has (in my opinion) been a very shitty year, I looked at my blog and could only shake my head.

I had moved this over from Wordpress to Pelican and basically replicated all of the layouts to the extent that some of Pelicans own functionality had to be abused to make it work. But as I kept publishing things on here I realised that most of the features I had implemented went unused.

And so, for the last few days I have tweaked the layout (and design - as some might notice) to be a bit more traditional again.

I was also considering to change theme but after not finding anything I liked I decided to hack the fuck …

What I have done in GSoC 2016

Google Summer of Code is coming to an end. And as the final bugs are getting squashed and more code is being prepared for the big merge, I am sitting here, trying to think of how to represent my work.

I thought I would write up a little blog post, explaining what I've done and what still remains to be done.


My main contributions are all available here (spacekookie/ on the qaul_crypto branch). I did a lot of small commits. Most of my code can be found in this sub-directory.

In addition to that I ported an existing project (from python) to C to be relevant for future front-end endevours of the client. It's called librobohash. I didn't end up finishing the port because there were more pressing issues in and the UI was …

First steps

So it's been almost two months, the community bonding period has passed, blog posts were written, talks held and slowly but surely I'm working myself into the codebase.

It's always weird joining a larger project and seeing established build setups, code conventions or generally things where your first thought is "I would have done that differently...". But it's really fun.

I'm currently working myself into mbed.tls which is the crypto library which was chosen to power the cryptographic backend for libqaul (which powers

That includes some code that will probably not make it into a later version of my branch: the debugger.

The De-bugger?!

Debugger Pro 2016

Well...debuger might be a bit of a strong word, it's basically a way to develop core functions of without having to start a GUI, going through NetworkManager dialup …

I got accepted to GSoC 2016

Acceptence Mail

The title should be self explanatory about that one 😊

But let me go back a little bit. A couple of weeks ago I sat in the basement of my local hackerspace talking to a friend about crypto when somebody joined the conversation, asking if I was a student and if I might be interested in Google Summer of Code.

After I looked up the project and familiarised myself with what had to be done, I thought it would be interesting to try to apply. And so I did. I wrote a long-ish proposal of what I wanted to do, how I would do it and when exactly I would acomplish my goals. (You can read my original proposal here)

In the meantime I actually had a sit-down with my mentor (the person joining the conversation in that basement) and made …

Open Plantbot – Rev A

Spring is coming in Berlin and thus my thoughts – as every year – are with plants and growing them. I live in an appartment with a tiny tiny balcony so I don't have much space but that has never stopped me from wanting to cram as many plants into the space as possible to the point of starting nuclear fusion.

In addition to that I have a few house-plants and very water-sensitive trees in my appartment. My current approach is to go around with a jug of water every couple of days and water them individually – making sure the soil has a certain moisture and doesn't exceed a certain limit – but I've always had the dream of being able to automate away as much as possible. That's where the idea of Plantb0t started. And I want to tell you a little …

[Update] Jolly Christmas Decoration

You might remember I played around with Kicad a few months ago and made this tacky little thing. Just about 2 1/2 weeks ago I went onto DirtyPCB to get them actually made. I wanted to have gone through the production process and get something built before I started doing more complicated projects.

Unfortunately I discovered a little mistake with the design in the layout that ended up at the manufacturer (Rev 3.1). I tried to fix them but Rev 3.2 didn't make it in time, which means my boards will be a bit more complicated to power. However not too complicated as the power-in are just throughholes so I can actually strap anything behind it to power it.

But without further a due, here is the result from DirtyPCB (which I am actually quite impressed with …

Recovering a destroyed LUKs container

So...funny thing happened to me the other day. And by funny I mean not funny. Actually I mean quite the oposite of funny. I booted my laptop after shutting it shut down for the first time after several weeks of activity and...nothing.

I stared at my plymouth boot screen while nothing prompted me to type in my passphrase to decrypt my harddrive and the first thought through my mind was:

Fuck...I don't have a backup.

How to debug

Now...not to worry, after some time I was dropped into a recovery console where I could ask very simple questions like what kernel modules were present and what Systemd had been up to. And at first I thought the problem was clear: Module failed to load: vboxdrv and other messages populated my screen – all about VirtualBox kernel modules …

Jolly Christmas Decoration

Christmas is getting closer (not really but let's just roll with it) and I wanted to learn KiCad a software that let's you create circuits and design PCB for manufacture.

I found a tutorial series online by a guy named Ashley Mills (with quite a legendary beard) who showed off a simple circuit using a 555-timer, a shift register and an XOR gate made from NPN transistors and resistors to display and repeat a pattern on several LED's.

The series focused on getting to know KiCad and all it's features. And while I did that in the first revision of my board, I've diverged from it since. I can however recommend his videos on KiCad to anyone who wants to dive into PCB design, has no clue about the software and could use a little chuckle while also learning some …

Chaos Communication Camp 2015

Hey everybody, long time no read.

As I returned from vacation on the Chaos Communication Camp 2015 (Not sure if I'll post more about that) and probably starting a new job next week (pssst not sure if I should talk about it 😉 ) the rest of my summer is still ahead of me and I'm booming with ideas and inspiration to do stuff.

I've started more intensively coding on the newdawn branch of Reedb, the C port of the database and planning some features for the old codebase via the backports branch. Because the new codebase will use a different crypto backend (from OpenSSL to gnu_crypt) a migration agent will be neccesary to migrate between 0.11.x to 0.12+ vaults. But as very few people currently use Reedb and most setups are for testing purposes only that isn't a …