How to improve your open source code (7) - Contributor experience

This post was written during my trip through Iceland and published much latern than it was written. This is the last post which does not deal with code directly, I promise. When it comes to open source hobby projects, contributions from others are often happily taken. But making the contribution process smooth for everyone does involve some precautions. In this article I want to summarize how to make a contribution to a project as smooth as possible for all persons involved.

Writing a git-dit web frontend with gotham, libgitdit and love

I love the Rust language. And I love the library ecosystem the Rust community provides. But let me start at the beginning. libgitdit In 2016, I and a friend of mine developed a library for distributed issue tracking with git and a commandline frontend for that library. The project, git-dit got a rather good portion of attention on hackernews, reddit and of course on github. Ranking at about 350 stars on github, this is the most successfull piece of software I (co-)authored so far.

Blueprint of a distributed social network on IPFS - and its problems (2)

After thinking a while about the points I layed out in my previous post I’d like to update my ideas here. It is not necessary to read the first post to understand what I am talking about in this second one, but it also does not do any harm. Matrix and Mastodon are nice - but federation is only the first step - we have to go towards fully distributed applications!

Preparing the journey

This is an article of the travel report 'North-America'

Everything starts with an idea. We had one: Traveling north america for one year. Canada, Unites States, Mexico. But having an idea is not everything, one has to lay out some plans (despite we are not the “plan every bit beforehand” kind of guys when it comes to traveling) at least. But, of course, first things first. VISA? Well, for traveling to the US, one has to get VISA. We needed a travelors-VISA.

Why can't we map tuples on arguments in Rust?

Why can’t we do fn foo(i: i32, j: i32) -> i32 { i + j } fn main() { println!("{}", foo((1, 2))); } in Rust? The idea First of all: I don’t know much about what is going on in rust-compiler-land, hence I don’t know whether this is technically possible or even in progress already. I’m simply writing down some thoughts here. The idea, or rather the question, is: Why can’t we map tuples on arguments in Rust?

TIL: Don't use C++ for new projects

Today I learned that the new C++ standard (C++17) has std::variant - but no pattern matching. Variants and how they work Variants or “tagged unions” are a special form of data type. They describe an abstract thing which could be one concrete thing or another concrete thing. Variants are available in a lot of languages, including and not limited to ML, Haskell, Algol 68, Pascal, Ada, Rust and even C.

Developing a Query-API for toml-query

For one of my other projects (yes, imag), I developed a query library for TOML. I currently am planning a new feature for it: A query API which can be used to execute prepared queries on a given TOML document. But let me start with the basics! What is TOML? “TOML” stands for “Tom’s Obvious, Minimal Language” and is somewhat similar to JSON, though is highly readable and easy to understand.

How to improve your open source code (6) - Version control

This post was written during my trip through Iceland and published much later than it was written. Version Control is one important aspect when developing software as a whole, and especially when developing open source software. Here are some thoughts about it. Technology First of all, technology wise it doesn’t matter which version control system one uses. For the sake I’m using git here as an example VCS, though others might do as well.

Extending an Iterator in Rust

A common thing one has to do in Rust to leverage zero-cost abstractions and convenience is to extend types. By “extending” them I mean adding functionality (functions) to the type which make it more convenient to use and “improve” it for the domain at hand. From time to time, one needs to extend generic types, which is a difficult thing to do. Especially when it comes to iterators, where extending is often tricky.

musicmatzes veggie chilli

Because I get asked a lot about the recipe of my veggi chili, I decided to write an blog article about it so I can link to this instead of explaining it again and again. This chilli is veggie (or even vegan, I’m not sure). I call it “Chilli” but I guess it is nowhere a real Chilli. Either way, it is delicious. Ingredients What you need: Red beans (I use canned beans, 400g/Can) Corn (half or a bit less than half the number of cans of beans, 400g/can) Carrots (if you like them a lot, but in 200-300g for each can of corn) Onions (one small one for each can of corn, maybe a bit less) Chilli (depending on how spicy you like it one or more) Cooking Oil Tomato paste (up to one tube) Red and/or yellow Paprika (optional) And, of course, water, a stove, a bit pot and knifes and so on.