Publications
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…
Tandem
The Tandem / Monero project is a collaboration with Kudelski. It secures private keys in a privacy-preserving way.
`derive_builder`: usage and limitations
Basics The builder pattern is a well known coding pattern. It helps with object construction by having a dedicated structure to help build the other. It is usually used when many arguments are required to build one. The example codes are written in Rust, but the concepts behind these can…
How to read your bank-account on a public blockchain?
One of the ways public blockchains are touted is that they can replace your bank account. The idea is that you don’t need a central system anymore, but can open any number of accounts, as needed. However, as there is no central place, it is sometimes difficult to know how…
Fun with microcontrollers
Today it’s something about actual hardware, not just software. For Christmas I took a long LED-strip and hooked it up to an Arduino One to create some animations. But not having WiFi was a bit of a shame, because this meant you couldn’t control it from a smartphone. So I…
hyperfine, benchmarks for CLIs
Some years ago, I was thinking that by directly look at code difference, I could estimate how faster it would run. I would reflect about complexity or how a given loop will be waay faster by precomputing some values. And of course, it is never that simple. Cache locality, threads…
OmniLedger email signup and recovery
We’re currently using OmniLedger for logging in to our Matrix-chat and to the c4dt.org website as users. This is explained in more details here: CAS-login for OmniLedger Account management in OmniLedger C4DT partner login Matrix on Mobile There were two elements missing: Automatic signup — in the current signup process,…
Reusable CLI integration tests
On my path of moving lab’s code to more human friendly program, I usually write some CLIs, to ease configuration and deployment. When developing the client, I want to test it, and see how complex it is to use it. The best language to express that is a shell as…
Awesome Privacy — A curated list of privacy-preserving apps
Many popular cloud applications collect enormous amounts of information on their users. [...] Raising awareness of the issue, and providing ways to reduce it, is a worthy goal.
Functional shell scripting
I’m quite a huge fan of functional programming, since I learnt about it some years ago. I was doing imperative programming for years and was quite used to it. But learning a new way to conceptualize programs was a real pleasure. Now that I’m deep into it, I want to…
SASE or VPN?
Today I Learnt (TIL): SASE [sæsɪ]- so what is it, how does it compare to a VPN, and should I use Tor? I heard about it from Ria at C4DT, who told me SASE is the new VPN.It might be better than VPN and will solve all the world’s problems.…
Choosing a Web Framework
At the C4DT Factory, one of our tasks is to develop demonstrators for research projects. The goal is to provide a quick introduction to a project, and allow visitors to interact and get a feel for the technology.
cheat, examples for CLIs
CLIs are very powerful, from the tip of fingers, you can quickly make the computer do anything you want. No need to wave your mouse around, hoping to find the right sub-sub-sub-menu where the feature you want is implemented. But it comes at a cost: for each command, you need…
Vitalik’s answers to the big questions
I found this nice twitter thread from Vitalik Buterin, the inventor of the Ethereum blockchain: Doing a random twitter experiment just on this day. Only the 268 people I follow can reply to this tweet. Feel free to ask things and I'll talk about anything crypto or non-crypto related. —…
libsodium’ encrypted stream in Rust
NaCl is one of the most used cryptography library around, and it is understandable: it is easy to use (it hides the crypto-magic used), portable (via the libsodium fork), and available in many languages. It is used by one of the project we are helping, drop, written in Rust, which…
Why Blockchain is Not Yet Working – 2021
This Monday I presented the following article. It discusses blockchains shortcomings. Even if it has been written in 2018, it is still very up-to-date… What follows here is a very opinionated piece. As such it reflects the journey I did in blockchains over the past 6 years. And I’m sure…
immutable.js, concurrent-safe data structures
Concurrent programming is one the oldest and hardest issues in the Computer Science Book. For years, we have been using locks, big threads sharing the minimum, using optimistic reasoning for “how data will be updated”. And we are still stuck with the same issues of some part of the code…
Zoom it out
We’ve been looking at the very nice https://gather.town and played around with it. Instead of having a fixed view of all participants, you can walk around and ‘meet’ different persons in gather.town. You can edit the space your liking. It looks very much like a very old-school Zelda: What I…
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…