Christian's Blog

My CO2 footprinting app in its current state allows me to model the things I do everyday and annotate my “events” with emitted CO2.

So one could say I advanced from the development stage to a data curation stage. Because what I have to do now is mostly to look up the emission data of the everyday things I do, up to a point to which they can be resolved and cast them into a couple of numerical values that can be passed to the emission functions of my actions to calculate emission values. Examples are, the ingredients of meals I ate, those ingredients' amounts and their respective production emission, distances between places I drove, the emission of our car per km, power consumption of the devices I use, or emission per kWh of our electricity plan.

Some surprises

I made some surprising observations on the way that put some of the things I do into perspective. Before I continue describing them though, I have to put out a disclaimer, which I'm going to motivate in the paragraphs below: The data I have in my app is of course highly incomplete! Thus, conclusions drawn from it may be highly biased. I do however think, that some general trends can be seen.

First of all, I always thought my computers' power consumption was one of the major drivers of my emissions. However, putting in the numbers I can clearly see that those are significantly lower than the ones of the true main factors. And those are: food and transportation. Since food is something one really consumes regularly, many times a day, this accumulates to much. And some of the things I eat are causing a surprisingly high amount of emissions. I underestimated the amount of variation between the different foods, and was most of all shocked by how much emissions are caused by dairy products. Also was I shocked by the amount of emissions caused by car transportation, even if driving short distance and using a small car.

Computers and such

We have an Intel NUC, Synology NAS (including 4 disks), 1x raspberry pi2 and 1x pi3 running 24h a day. The emissions of these were the first things I calculated using my app, as I assumed they were the biggest factors. They amounted to about 220-370g co2e daily (and this is a range because this is as accurate an emission value I could find for power providers in Denmark). There are also other factors I neglected because of lack of time, such as electrical consumer devices running in standby. I did investigate one other device though, and that was my stereo which uses 30W when I just let it be turned on when I'm not actually using it. Doing this 24h a day, would cause 115.20-209.52g co2e. I started switching it into standby immediately, where it then uses less than 1W. Another thing I calculated were the LED lamps in our living room. We have them turned on in the evenings. Assuming that they are turned on for about 5h, this causes 20.00-36.38g co2e per day.


I use to eat a bowl of yogurt most evenings. That bowl causes an estimated 520g co2e daily. In comparison, that is more than my NUC, NAS (Including 4 disks), 1x raspberry pi3 and 1x pi3 produce together daily when running 24h (~220-370g)! This really shocked me. A similar story is the daily oat meal I eat in the morning. It's nothing fancy: oat flakes, raisins and milk. ~311g co2e. And I didn't stop here. Another finding that didn't actually surprise me too much but rather confirmed my bad expectations is the emissions caused by my coffee consumption. Since I couldn't find emission values for the exact coffee bean I use to buy, I had to calculate a rather rough estimate across all kinds of possible coffee beans and producers. Here, the caused emissions vary extremely. When putting in all these numbers, a liter of coffee, including bean production and power consumption of grinding and brewing causes emissions somewhere between 130-900g! So even if I assume that the fair trade ecological coffee bean I buy is somewhere in the average, it's still causing around ~500g/L. And these days I – unfortunately – drink about two liters a day. So that is also quite the sizable sum of 1kg co2e daily. Damn.


The most surprising – and at the same time shocking – insight though was, that transportation easily overshadowed all of the other things of my everyday life. Taking a comparably small Aygo 1.0i for a 5km ride to the grocery store and back causes between 515.27-567.32g co2. Averaging it out and assuming we do this tour three times a week, this would cause around 270g co2 daily. This feels like an insane amount for just 5km! Then I wanted to know how much a drive of about 140km to the family from Jydland to Odense and back causes: 28-31kg co2. Assuming we did this drive maybe once a month, it would still mean it caused about 1kg co2 per day when averaging it out. Lastly, I calculated how much it causes when we visit my family in Germany (with the Aygo 1.0i). One trip is around 900km, and driving there and back causes between 180-200kg co2. Before Covid19 we did this trip once every half year, leading to a daily average of around 1-1.5kg co2. Summing all these transportations up I was left baffled when seeing how few such drives already cause emissions to climb up rapidly.

How much is OK?

After calculating all those numbers I was quite puzzled, as to whether they would leave me in the low or high end of the range – and whether the number I got out would possibly even be unsustainable. I googled, and found a page that claimed, that 3t per person per year are sustainable. OK. Other than that page, I only found pages that said, that the exact limit was not known. Which I also believe to be the true answer here. But for the sake of my argument, I would assume that 3t are the correct value. If I sum up all the values I outlined above, I would end up at about 5kg per day (correct me if I'm wrong). That equates to ca. 1,8t per year. Wow. That is already quite a lot, considering that I wasn't even close to having put in all my data into the app. So I fear that it it actually ends up being a lot higher.

These things made several things quite clear to me that we (I and everyone) have to achieve if we want to solve this climate crisis:

  • all of us need to reconsider and rethink how and what we are eating. Obviously, dairy and meat are the biggest emitters foodwise so it can't possibly be sustainable if many of us eat these things on a daily basis in large quantities.
  • transportation needs to be minimized, at least as long as the co2e/km is as high as with today's cars (and I believe that to include electrical cars, as their production footprint is so much higher). This is something, that has to be tackled on the political level by governments: jobs and families have to be located close together. I don't see this working out, if people need to commute and drive long ways with their cars.

Ok. What are the challenges?

While using the app and filling it with life by putting in the emission values and functions, I stumbled over several challenges.

The biggest one is clearly, that emission data is only available up to a certain degree and resolution. The emission of our car for instance is only given as a single average emission value, but not as a function of the speed. Hence, assuming this value for a fast ride will underestimate the emitted co2.

Also, some data is simply not available at all. While I could find production emissions for the basic foods, for more complex composite foods such as Prinzenrolle there is simply no value available. My solution here is that I calculate the emission as the sum of the production emissions of the food's individual ingredients.

Another example is, that I couldn't find an emission value per kWh for our exact electricity provider and power plan, but only a general average one for whole Denmark. This completely neglects that some people intentionally pay more for a regenerative power plan.

The same lack of data resolution was present also for other things:

  • imported vs. local foods: the transportation chain seems to be mostly neglected by the sources/databases for emission values. Here it will make a huge difference whether a food is consumed locally or after export
  • same type of food but of different producers: most databases provide a general value per food production, completely independent of where it is being produced or by which company

So generally, there is only so much one can do in terms of tracking the own emissions, simply because for many things there is no emission data available. I would love to build this project up and provide producers of goods with an API that they can use to feed in their emission data directly. Right now they don't even have this kind of data themselves, and hence I do think that this is another aspect governments should put focus on. Being able to trace the caused emissions as far down these complex paths, would allow consumers to make more sustainable life decisions about what to eat, where to live, how often to drive, or where to look for a work place.

Apart from the data availability and quality problem, another problem is the usability of the app. It's simply not motivating, having to go through an unresponsive website to fill in complex data about what one eats, where one drivers or which device one uses. This process should be much simpler, for people to actually keep using it. I observed this with myself. Once I reached an OK level, I just stopped filling in data because it was too tedious.

Despite these challenges though, I would still claim that I gained valuable insights into my emission footprint caused by things I do everyday. I don't think this idea is a dead end, but of course its accuracy is bound by the resolution and accuracy of the data it curates. But if people only got as many insights into where their emissions are coming from as I did, that would already be a huge success for me.

What next?

There are many things one could do next. They basically follow from the challenges outlined above.

  1. Manual data curation: Filling in more data, and thereby making my own footprint more complete and accurate
  2. Mobile app: Using the website to fill in the things while I'm doing them is unacceptable and inaccessible. I would love to develop a mobile app to be able to connect to the website. Doing data curation on the fly, when only one hand is free would automatically boost step 1. (at least for me)
  3. Connecting this project with other emission data providers, providing query interfaces, maybe importers.
  4. Getting good producers on board, that could directly contribute emission data for their products.
  5. Making the project public and getting in touch with other developers that see a prospect in the project

As of now, I'm undecided what I will do next. I put the project on hold for about a month now, due to personal and professional stress levels. I'll have to see, when I'll have the energy to do some more work on it.

Streb' danach Wie sie auch damals schon alle taten In letzter und vorletzter Generation Nach der Erfüllung.

Tu' was dir jetzt wichtig ist. Denn in 50 Jahren wird dein Kind sitzen Und deine Taten hinterfragen bei leuchtenden Dias.

Was sie alle aus Überzeugung taten Ohne dass ich es sah und wusste. Was tu' ich, das meiner ebenso authentisch ist? Alsdass in 50 Jahren meine Kinder sitzen und finden, ja das macht Sinn.

Und so wird dein Kind nicht das selbe So wie du vor 50 Jahren tun. Doch das wichtige zur Erfüllung, und wird seinerseits ein Beispiel sein.

I have been looking for a photo management software for a long time, that allows me to manage our pictures, host and share them, provides a sleek UI, and has some cool features that make my life easier.

For quite some time (and still), I am using Nextcloud to do this, but I always disliked its inferior performance due to PHP. Recently, they also completely replaced their pictures app by a new one, which, apart from the fact that the app seems far from feature-complete and polished to me, made me realize (again) that photos are not a first class citizen in the Nextcloud universe. It's just one of many aspects, that Nextcloud wishes to provide.

I have been trying alternatives in the past as well, but Piwigo's development is too slow for my taste and they do make the impression on me that they feel rather cozy in the place they are in now and don't seem to be looking for cool ways to expand upon Piwigo's feature-set. The main thing that annoyed me with Piwigo was its lack of a proper Android mobile app, and its UI.

Up to recently, I exclusively looked for open-source solutions that could fill my photo org void. During the last days I played around with the Moments app of my Synology NAS, and was actually quite fixed by some of its features. It provides AI-supported auto-tagging and classification of pictures. It can detect faces. It provides a sleek timeline of pictures, which is nice to browse through. Generally, I felt its feature-set came pretty close to what I was looking for. Unfortunately, I very much dislike the fact that it is closed-source and that I am not entirely convinced of the quality of Synology's support. Also, performance on my NAS (which is intentionally chosen power-consumption friendly) is subpar.

Then, some days ago I stumbled over #photoprism, which is a relatively new project but it already now seems like a really promising candidate. It has AI-driven classification/tagging of pictures, has facial recognition as well as web-sharing on its roadmap. Most importantly, the project's main developer (lastzero) seems extremely motivated and has a clear perspective for the project that aligns very well with how I wish my picture org software to be. This is awesome and clearly something that the other projects I tried so far were lacking. The fact that then completely won me over as a fan was that he created a ticket to add ActivityPub support to the project. So obviously, this is a really cool project that I would love to continue evolving and succeeding in finishing its roadmaps.

I have it installed locally now, but it's not yet feature-complete enough to replace Nextcloud for us. Nevertheless, I want to give photoprism's development a boost and hope I can do so by sponsoring lastzero on GitHub sponsors.

Check the project out here and here and become a sponsor as well!

I've been coding on my #co2 #emission #tracker project for about a month now and there has been some (limited) progress, that my (limited) available time would allow.

First of all, I feel very positive about what level of insight and awareness the project could already give me despite the early stage it is in.

I've started by evaluating some web frameworks' facilities for quick prototyping and iterating. I looked at Spring Boot, Groovy on Grails, and #Django. I had worked with all of these before, not extensively though. I decided for Django in the end, as I knew it was pretty straight forward and quick to get a project started, so perfect for my purpose. Groovy on Grails seems okay in that regard as well, but I am hesitant to use it in any of my projects, as I've heard negatively about it's lead developer and the project's community generally seems to have trouble with breaking core changes in releases and keeping up with adapting their plugins without which grails is pretty bare-stripped. Lastly, I also looked at Spring boot and while it seems good for sophisticated projects, it is also A MONSTER in complexity and it felt not well suited to quickly get a project up and running and iterating on it's code.

Use cases

Then, I decided on some core use-cases I wanted the project to be able to handle and started fleshing out data structures to model these:

  • Driving car $c$ with average speed $s$ km/h over a distance of $d$ km. Car $c$ having an engine that produces $e$ g co2/km
  • eating $x$ kg of $f$, $f$ being produced with $e$ kg co2e.
  • using electrical device $d$ for $h$ hours which uses $p$ kW. Having an electricity provider which produces $e$ g co2e / kWh

Django Models

With these first use cases I started designing my Django app. However, I realized early that I didn't want to hardcode the available domains (e.g Car or Device), but that I wanted the user to be able to specify them via the UI. This prevented me from just defining all domains involved in my use cases as Django models. This would be the easiest solution by far, since I could then have leveraged the typing system of Django to describe properties of domains and such. But a tool where one needed to migrate changes to the database schema and restart the whole app each time the user wanted to add, delete or alter a domain, was a deal-breaker to me.

Hence, I came up with the following Django models, which would allow the user to define domains, actions, variables, values, events, all via the UI without needing to change the DB:

  • An action describes one particular or a class of emission-producing real world actions a user can perform.
  • actions have variables which allow them to describe multiple real world actions. For instance, the action “use electrical device (device:Device)” can describe both using a coffee machine, or a laptop.
  • variables are typed, i.e. are assigned one particular domain
  • an event takes an action and binds all its variables to values. This describes a user performing a specific real world action at a certain time, producing a computable amount of emissions.
  • a value is a concrete object from a domain, which can be bound to a variable of that domain. In fact, several values of the same type can be bound to one variable (if the variable is defined as such).
  • a value can have typed subvalues which can be interpreted as properties of the value itself. For instance, values of the domain Car must have a subvalue of domain Engine, which in turn must have a subvalue of domain Emission g/km.
  • an action has an emission function that describes how an amount of emission (in g) can be calculated from values assigned to its variables. This emission function is evaluated for each event of that action.

Using the app – filling the models with flesh

I started using the app and filling the DB with domains, values, actions, variables, events, and some other supplementing types of models, that would describe the things I had been doing, eating, or using these days. That this turned out to be more tricky than expected and what sort of things I could learn from it nevertheless I'll describe in the next post (cliffhanger). Da da bum! :–)

Nachdem wir hier in einem ländlicheren, stark landwirtschaftlich genutzten Vorstadtgebiet auf Jütland im Winter fast nur Krähen und Elstern zu Besuch hatten, sehe ich in letzter Zeit erfreulicherweise auch einige kleinere Vögel, zB. Bachstelzen.

I feel everyone should contribute to finding solutions to the climate crisis in the way that optimally uses their abilities. Honestly, I often think that I should go out and demonstrate on the streets as well. But somehow I feel, that this is not the best way for me to contribute to the solution. As educated computer scientist I believe, that the best way for me has to be through making software.

Writing software that enables people to help themselves and thereby everyone else on this planet and the planet itself is my dream. I am a person, that believes in the good of the people more than into restraint and punishment. But I also believe, that people, nay all organisms are notouriously lazy as they have to manage the energy they have available in the optimal way in order to survive.

So in a way I sincerely believe that the problem is not that (most) humans don't want to safe this planet, but that they are just lazy, caught up in their everyday, and slow in adapting to the changing system. I see this in my own everyday life every single day: The descrepancy between what I would like to do to protect the environment, and what I actually do is too large most of the days.

Recently though, I started working on a software project in my freetime that should help me and hopefully also others to #track #emission #footprints through daily routines. The project idea is broad, and I have yet only started working on a single aspect of it: A website with database backend that would allow to collect and curate emission data for various products and actions and connect this data with daily routines of the user to calculate an approximate carbon footprint. Not only that, but it should also provide the user with tools to investigate and understand the main sources of their emissions. Ideally, even make AI supported suggestions on how to improve upon them.

The core website should provide a RESTful API that can connect with mobile clients, allowing users to easily navigate their data and quickly enter data of the current day. Repetitive daily routines should be easily put into the system, without much hassle, as this makes up a large proportion of many of our activities. Typical examples could be: Commuting 25km to work daily, taking the car to do the groceries 5km away, ordering from that favorite pizza delivery place, heating those buns in the oven (model manufactured in 1998), or playing PS3 4hours a day.

The plan is to initially make a comparably simple prototype of the web app that is easy to try out in everyday life to see whether the core use-case is translatable as intended to software. For this I'd use a probably quite limited framework that allows for quick prototyping and iterating. This is to identify all my use cases important to be covered.

This probably means that the framework used in the beginning may be switched out for something more sophisticated later if the initial implementation looks promising.

I'll keep posting updates on my progress here.

A temporary workaround for building a maven project despite an unavailable remote repository is running the build in offline mode:

mvn -o/--offline

This prevents any remote repository communication and only locally cached artifacts will be used. Thus, this only works if all dependencies are actually locally available.

Only recommended, if you are sure that the locally cached artifacts are up-to-date.

Today I had it confirmed yet again that I am a heavy #pronator (not to be confused with donator), i.e. my angle “breaks in” towards the inside when putting the foot on the ground while #running.

Upon recommendation, I bought an #Asics Gel Kayano 25 shoe with stability.

Went on my first test run earlier, and it really feels like a huge difference to my previous shoe. My whole movement feels more stable, less “sluggish”, but it seems my body mechanics have to adapt to the change. For starters, I felt slightly uncomfy on the insides of my lower legs and for a short while also in my lower back. Anyone can confirm that this is normal?

Some time ago I decided to delete my Facebook account and to use the fediverse (short for the federation universe) as my main online social network as a replacement.

In my previous such attempts I tried out the diaspora network in the hope it could replace Facebook. However, back in the days the connections I made there were mostly to techies (like me), and hence gave me little inspiration beyond my own horizon. The opinions present there seemed to be very similar to my own, but what I like about social networks is not only to share my interests with others, but also read interesting, unknown, or creative stuff.

Due to these experiences, I was a bit skeptical whether I would find enough “non-tech” users in the fediverse:

So far it works out well and I'm very satisfied with the connections I have made. There are dedicated science and creative federation instances, to which I have initially connected to via some major “introducers”, people that know many others on the instance. Via those I was able to find more contacts, so far mostly artists posting there own creations. These are almost exclusively paintings, sketches, but I also got some posts about their latest craftsmanship projects.

This is amazing! This is exactly the kind of inspiration I like getting from a social network. And in fact, such direct contact to artists was or felt never possible on Facebook.

I'll continue to post about my worth-mentioning experiences in the fediverse in the future.

I'm now using a slightly modified version of the script at pedroetb/rsync-incremental-backup to keep incremental #backups of my external hard disks.

What else is there for incremental backups in the unix world apart from rsync-based solutions?