Blog

Part 1: Against Primitivism

This is the first of two blog posts that will be slightly more philosophical than other texts on my blog.

For some of my regular readers this thesis might not be particularly radical, but I still feel like it warrants being said.

What is primitivism?

I think this is the most important question to ask and one that has many answers. Depending on who you ask, and what their political background is, the answer might be "a joke", or even "a slur".

In simple terms, primitivism yearns to return to a simpler time, removing technology from human lives as much as possible. This is meant to address one of the largest sources of anguish and anxiety in our modern society …

Rust 2020: the RFC process and distributions

I must have missed an e-mail in my inbox, because recently I started seeing people publish Rust 2020 blogposts so I thought, why not. I haven't been incredibly involved in the development of Rust in the last few months, (navigating the delicate balance of being self employed, working on free software and not burning out) but I feel like that might change again. And also, I still have feelings about software.

This post was also largely inspired by my friend XAMPPRocky's post, as well as attending NixCon a few weeks ago, and generally interacting with the NixOS RFC process.

What even is an RFC?

An RFC, or "request for comments" is a mechanism by which a group of people can …

Labels are language

A phrase that I've heard way too fucking often recently (this edition will contain swearing and might not be suitable for children of ages below NaN) is "I don't care about labels, I want to do politics!"

As one might expect, this sentiment often comes from centrists. But more often than not, it comes from fellow leftists. People who are otherwise somewhat radical in their approach of the world, people who think capitalism's gotta go and (sometimes) that states and borders are bad. And it's a stance that has confused me, and keeps confusing me and which is why I'm now writing a blog post about it because apparently that's what I do.

The problem I have with "I don't …

ociTools in NixOS

With the release of NixOS 19.09 any second now, I thought I wanted to blog about something that I've been working on, that recently made it into master, and thus the new stable channel.

What are OCI tools?

Open Container Initiative (or OCI) produced a spec that standardised what format containers should use. It is implemented by a bunch of runners, such as runc (the Docker/ standard Kubernetes backend) and railcar (more to that later) and outlines in exactly what format a containers metadata and filesystem are to be stored, so to achieve the largest possible reusability.

The spec is pretty long and in some places not very great. There's even a blog post from Oracle, talking about how …

Starting a public inbox

I've been a lot more active on this blog in the last year than I have previously, and that makes me pretty happy. I'm trying to become less obsessed about publishing only perfect diamonds made of words, but instead also publishing articles that might still have some flaws or that I haven't rewritten twelve times yet ;)

As a result of this I have actually gotten more and more e-mails by people saying that they read my blog, giving me feedback and sometimes submitting patches to my website repository to fix typos or bad formatting. And that's pretty cool.

Recently I started thinking if the format of e-mail might not be well suited for comments as well. Not just to me …

Bikeshedding disk partitioning

I recently got a new Thinkpad. Well...new is a stretch. It's an X230, featuring an i5 and 16GB of RAM.

One of the first things I did with this laptop was to flash coreboot on it. This is something I've always wanted to be able to do, but so far lacked hardware that was supported. And generally, it felt like finally maybe I could have a laptop to tinker around with.

And that's where this post begins...

Encrypted disk

So from the start I knew I wanted to have a fully encrypted disk.

What that means is that your /boot partition (whether it is it's own partition or not), is also encrypted.

Secondly, I don't like (U)EFI... What …

Usable GPG with WKD

With the recent SKS keyserver vulnerability, people have been arguing reasonably talking on the GnuPG mailing list about how to proceed with keyservers, public key exchanges and the GPG ecosystem as a whole.

As part of this WKD was mentioned. It stands for "Web Key Directory" and is a standard for making a users public key available via their e-mail provider or server with the domain that corresponds to their e-mail address. There's several clients (such as Enigmail in Thunderbird) that will use this standard to automatically fetch a user's public key, when writing an e-mail to them.

As an example: my e-mails are hosted with mailbox.org, but I use my own website as an e-mail alias. This means …

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.

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

`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 …

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.

Problems

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 …

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 is...in 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 …

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 …

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 …

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 …

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 …

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 …

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 …

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.

The TLDR

My main contributions are all available here (spacekookie/qaul.net 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 …

First steps...baby 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 qaul.net 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 qaul.net).

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 …

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 …

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 …

[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 …

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 …

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 …

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 …