Publications

Empowering Digital Identities: The SSI Protocol Landscape

In this fourth part of the blog series “Swiss e-ID journey”, we give an overview of the Self-Sovereign Identity (SSI) [10] landscape in CH, EU, and beyond. This allows the reader to put the current effort of the e-ID in context with international efforts in references and implementations regarding e-ID…

The Swiss Confederation E-ID Public Sandbox Trust Infrastructure – Part 3

C4DT Demonstrator using the Swiss Public Sandbox Trust Infrastructure This is our third article about the Swiss e-ID Journey. An overview of the system can be found in our first article, Switzerland’s e-ID journey so far [1a], and an introduction to the first steps of using the sandbox [8] in…

Secure, Transparent, and Verifiable Elections: The D-Voting Project

The d-voting project from the DEDIS lab at EPFL is a decentralized voting system that leverages blockchain technology and cryptographic algorithms to ensure secure, transparent, and verifiable elections. By using a blockchain as the storage medium, the system allows multiple entities to oversee the election process and enables easy access…

The Swiss Confederation E-ID Public Sandbox Trust Infrastructure – Part 2

The Swiss E-ID Journey This article is the second in a series of three articles which discusses C4DT’s experiences and takeaways testing the Swiss Confederation Public Sandbox Trust Infrastructure, hereafter abbreviated as “sandbox”. In the first article, we looked over all the components of the sandbox, and its setup. In…

Introducing D-Voting

  Six years ago, EPFL rolled out an e-voting platform developed by Bryan Ford’s DEDIS lab for its internal elections [2]. The then newly-formed Center for Digital Trust (C4DT) brought this project as one of the first under the umbrella of its Digital-Trust Open Platform, the precursor to what is…

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…