Publications

Ansible: powerful automation made easy

The management of IT infrastructure is a constantly evolving topic. A very interesting concept that emerged in the last decades is the idea of infrastructure as code: instead of configuring servers in an artisanal fashion, the process is formalized into definition files, which are then automatically “executed”. There are multiple…

Prettier, a uncompromising code formatter

Code formatting is the most known instance of bikeshedding: everyone has a different opinion on it and nobody is willing to compromise. Do you remember the hours-long discussions on using tabs versus spaces? Where to add empty lines? Alignment of fields? For some years now, many languages provide their own…

Go compiler optimizations for structs

This article looks into the optimizations of the golang compiler with regard to different usage of structs. It answers the following questions: Does it avoid unnecessary structure copies? Does it inline where necessary? To answer theses questions, I wrote a small example and decompiled it to see how well it…

Failing OmniLedger login

Connection Failures There are some common reasons why the OmniLedger login can fail. So far we have seen the following ones: Corporate firewalls Private browser settings If you have a corporate firewall that blocks access to non-standard ports, the only thing you can do is to remove the VPN. This…

Maturity Evaluations

The C4DT/Factory works to bring EPFL’s great ideas to our partners. We do so by working on the existing code created in the labs. Because most of the code written in the labs has the goal to create graphs in a paper, it is not directly usable in another project.…

TLDR for “Managing Technical Quality”

Some notes from https://lethain.com/managing-technical-quality/ – most of the comments are copy/pasted, so ‘I’ is the author… In italic some more C4DT-specific notes. Technical quality is a long-term game. There’s no such thing as winning, only learning and earning the chance to keep playing. Do the quick stuff first! Hot Spots…

Recover data on ByzCoin

How to get data back on ByzCoin OK, now it happened – I lost my addressbook on ByzCoin. As we’re using the Partner-login internally, I have a list of all accounts I created on the blockchain. Currently it’s not encrypted using Calypso yet, work in progress. So my account on…

Coding Guidelines @ EPFL

There are a variety of coding guidelines at EPFL. Some focus on a lab’s preferred language and their specific tools, some are more on project handling and general git usage. Most are a mix of the above. Sadly, theses guidelines aren’t scrupulously followed, aren’t usually automatically checked and some are…

Matrix on Mobile with OmniLedger login

For some time it was impossible to use the c4dt matrix chat on the mobile phones, as RiotX didn’t work correctly with the OmniLedger login. Now you can use the Element app together with our login to have matrix chat on your phone. TL;DR Of course you just want to…

Exploring golang with a REPL

It is customary for users familiar with a command-line shell or dynamic languages such as Python to work with a REPL, or Read-Eval-Print-Loop. This kind of interface is very powerful for common exploratory tasks: quickly interact with some data or object, prototype an idea, or learn a particular functionality or…

golang code analysis

To ensure good code quality, we are looking this week at some golang (one of the language used for many of our project at C4DT) helping us to do so. Some idea where taken from the Awesome Go List, a good reference for everything related to golang. First, we show…

Crypto in Angular and Nativescript

Using typescript and npm has two big advantages: there are many modules available, and it runs in many environments. Unfortunately this is also one of the biggest challenges. Because you can configure every aspect of the system, you can break it very easily. At C4DT we often use the crypto…

traefik: a powerful reverse proxy

In a systems infrastructure, it is common that a single physical hosts presents many different services to the world. For example, one can have https://app1.my.domain/ and https://app2.my.domain/ point to the same host, whereas the actual services inside the organization reside on different physical or virtual machines. A typical way to…

On the road to general quantum computers

From an engineering point of view, quantum computers are very interesting beasts. It’s something new, shiny, you don’t understand it, but it seems to be the future. So you must go there! This is a collection of links that I found very helpful in understanding how quantum computers work and…

Monday Meeting Sharings

Every Monday the C4DT Factory team comes together for a meet’n share. Somebody from the team presents something he saw on the internet that is somewhat related to the work we’re doing. This can be technical, organisational, recreational (we didn’t have the “best cat pics” yet). Here is a list…

Calypso

Calypso is an auditable data-management framework that allows decentralize sharing and life-cycle management of private data. It is describe in this paper: https://eprint.iacr.org/2018/209.pdf. We use Calypso to store private data on the blockchain. DARCs describe the access to this private data. We use it in an example game of rock-paper-scissors…

C4DT partner login through OmniLedger

C4DT is working on bringing software from the labs to the real world. As part of this effort, we’re working on implementing use-cases for OmniLedger. OmniLedger is a novel blockchain that offers several new features. For example it works as a decentralised login service. This means that there is no…

Decentralized Access Rights Control – DARC

Current access rights management systems always depend on a centralized authority that all members must trust. However, for blockchains, this is not a good solution. Blockchains are decentralized and cannot easily use centralized trust systems. We built DARCs, a group-management on steroids that allows decentralized administration and delegation of identities.…

The Mind for 2020

Every week at our engineers-meeting we have a short presentation of _anything_ we found on the internet that is somewhat work-related and that we would like to share with our fellow engineers. As the team-lead, I wanted to do some short team-building exercise, and I thought about the game “The…

Account Management in OmniLedger

The C4DT Factory works using software produced by the EPFL IC labs. Our focus is on software that increases digital trust in the era of the internet. One area where we see a lack of trust is account management, which includes the following elements: self-sovereign management of the account using…

OmniLedger

The DEDIS lab at EPFL worked on a novel blockchain system called OmniLedger. It uses Calypso to provide decentralized access control including secure storage of data on a blockchain. This combination has the following characteristics: OmniLedger builds on byzcoin, a permissioned, public blockchain which uses little energy. Contrary to other…

Mobile OmniLedger App

For a bit more than three years, DEDIS has been working on a blockchain based on the byzcoin paper. The groundwork has been laid to add client interactions, first as a number of command line interfaces, then a first web-interface, a second interface added by C4DT as a demonstrator, and…

pv: The Pipe Viewer

When working on the command line, it is common to build complex commands that connect sub-tasks through the pipe. In those situations, it can be useful to have an idea of the data transferred between two connected processes. For example, what is the throughput? What about the volume of data…

devtodo: todo list for developers

Most projects need organization. There exists a bunch out there, from the post-its laying on the desk to a huge kanban spanning the whole chain of supply. With code¸I find using the same layout as the project is pretty practical: when digging deeper inside it, you get more relevant information,…