Publications

The Swiss Confederation E-ID Public Sandbox Trust Infrastructure

Switzerland’s E-ID journey so far In 2021, the Swiss E-ID law proposition was rejected by a public referendum. The reason for the refusal was due to privacy concerns in the implementation and management of that system. In a nutshell, the idea that a private entity would be in control of…

Archiving of Demos 2023

Part of the work of the C4DT Factory is the creation of demonstrators (proof of concepts) of technology coming out of the EPFL/IC labs. After two years we archive them and provide you with the means to easily run the demo on your computer instead. That way the demo remains…

Trace(r)s on the web

Julia Rebstein, a student from the GymInf program, just finished and presented her project “Trace(r)s on the web – Julia Rebstein“. In it, she explains how different types of cookies work, and looks at a 1-week sample of browsing sessions from 10 persons. Under the supervision of Linus Gasser and…

Docker in research development

Development in research is very different from development in an industrial context. Many popular DevOps tools can nonetheless be effectively used in research development as well. Docker, an open-source containerization platform, is one such a tool. This blog post shows how Docker can help you develop the software needed for…

`cargo-tarpaulin`: code coverage for Rust

Coverage? Testing is one of the most important step of code validation. One would argue that an untested code is akin to a rogue program destroying what it can in its way. But what tests the testing? How do you know that your testing infrastructure is indeed simulating most behaviors…

Discovering Nix

What is Nix? I recently had the opportunity to play with Nix, which is a package manager and an OS based on this package manager. Nix is special in the sense that it claims to only make reproducible builds that can’t break the system. But how? The package manager is…

Rust vs. Haskell

  vs. Today we looked at the following article, which compares Rust and Haskell: https://serokell.io/blog/rust-vs-haskell Even though I did some dabbling in Haskell, I never understood how close the two are. Currently I think I’m quite proficient in Rust, so I can follow the article quite well on that side.…

Mob programming – Adventofcode Day 12

During the month of December, Advent of Code passes out a new puzzle every day. The daily challenges are a fun way to learn new algorithms and getting to know new ways of programming. In our software engineering team we followed along at least the first half of the programming challenges…

eBPF: fast bytecode for the kernel

Why? Nowadays, Linux is deployed in many component of the network fabric. Your home NAT probably runs it, your datacenter’s router also. As it needs to handle incoming packet on gigabits links, the speed at which the system handles the packets becomes important. If you run your router in user-space,…

Revisiting Kademlia

For a side-project of mine I’m looking at Kademlia (Wikipedia), which is used in peer-to-peer (P2P) systems. One problem of P2P systems is that nodes come and go randomly. So it’s not easy to retrieve stored data. Where to store data? And then how to find it again? What happens…

What is DevOps?

DevOps is rather a confusing term. Everyone uses it a lot and not everyone is able to define what it really means. Here are some thoughts of what our team think when we hear DevOps: CI/CD. Source-code, compilation. Kubernetes, Ops responsabilities. Automated tests. These are some good talking point, as…

Developer skill matrix

Some time ago I read the developer skill matrix and thought it was very interesting. I put it in the infamous “Read later” bookmark folder, and actually came back to it! So last Monday, during our regular group catchup time, I presented this page. In fact every week one of…

Having fun with stackoverflow stats

For our weekly meeting-presentation I took the stackoverflow-stats from 2022. Then with the team we went through it and discussed the different statistics. First I thought we’ll get bored quickly, but after 1h30 I had to push the meeting to other subjects. So here are some things we found: Developer…

asdf: a great way to manage all developers CLI tools

Do you ever code in modern Javascript? Then if you have multiple projects you are probably happy that nvm exists. Or maybe you’re more of a Python person? Then you must know about pyenv. Java? jenv or sdkman! Thing is, you often need to have multiple versions of a tool…

mosh: the mobile shell

Have you ever tried using ssh on a train? Or closed your laptop and found that all of your remote session are now frozen? Or using it via a crowded antenna tower? In all theses cases, ssh fails to work as expected. This is due to the fact that common…

Tauri for cross-platform apps

One of the most well-known framework to create cross-platform apps is Electron. In it you write your app in Javascript or Typescript. This code runs in a node environment and the GUI is displayed in a browser. Like this, the app can be ported easily to different operating systems. Even…

Omniledger

A fast and efficient blockchain created by the lab of prof. Bryan Ford.

test.vim: running tests the easy way

As we all know, writing tests when developing software is very important¹. Indeed, most modern programming environments have frameworks to write and run tests, sometimes even in the standard tooling: pytest for Python, cargo test for Rust, go test for Go, etc. Let’s set aside the actual writing of the…

The SwissCovid App

In response to the COVID-19 disease that has stormed the world since early 2020, many countries launched initiatives seeking to help contact tracing by leveraging the mobile devices people carry with them. The Federal Office of Public Health (FOPH) commissioned the effort for Switzerland, which resulted in the official SwissCovid…

Cross-platform network programming in wasm/libc

I’m still working on my fledger project. It’s goal is to create a node for a decentralized system directly in the browser. For this I want the following: Works in the browser or with a CLI: have a common codebase but use different network implementations Direct browser to browser communication:…

Shoup on Proof of History

For a long time I tried to understand what Proof-of-History brings to the table. What is it useful for? What problem does it solve? At the beginning of may 2022, Victor Shoup, who is a renowned cryptographer and currently working at DFinity, took a deep dive into Proof of History.…

Lightarti – a lightweight Tor library

Lightarti is a mobile library developed in Rust, in collaboration with the SPRING lab at EPFL, the Tor team, and the original Arti library team.

Disco

Disco is a framework to implement machine learning algorithms that run in a browser. This allows testing new privacy-preserving decentralized ML algorithms.

Magic-Wormhole: communicate a secret easily

The problem Here is a common scenario we have all run into: you need to communicate some piece of secret information, say a password, to another person. Perhaps it’s on-boarding a new colleague, or to allow access for a partner. But you don’t want to compromise this secret by transmitting…