Blog
Mix in Rust with Python: PyO3
Current zlib-rs performance
zlib-rs
project implements a drop-in replacement for libz.so
, a dynamic library that is widely used to perform gzip (de)compression.Mix in C with Rust: A taste of C in your Rust
Statime vs Linux PTP: Comparison of precision
As part of the development of our Precision Time Protocol implementation, Statime, we want to know how it performs compared to other implementations of PTP.
To figure this out, last April we visited VSL, the Dutch National Metrology Institute. There, we performed comparitive precision tests between Statime and Linux PTP.
Will Rust be alive in 10 years?
Want more Rust? Break the cycle!
Tock binary size
Authentication for PTP
Mix in Rust with C
Mix in Rust
A safe Internet requires secure time
Hacking time: how you can control anyone's clock
Save the planet, code in Rust
Sudo-rs dependencies: when less is better
“Software must become safer”, but how?
Teach-rs: Rust 101 evolved
Rust in Production at Tweede golf (podcast)
Sequential-storage: efficiently store data in flash
While using a full-blown filesystem for storing your data in non-volatile memory is common practice, those filesystems are often too big, not to mention annoying to use, for the things I want to do. My solution?
I've been hard at work creating the sequential-storage crate. In this blog post I'd like to go over what it is, why I created it and what it does.
Building an Async Runtime with mio
Rust for hardware vendors
At Tweede golf we're big fans of creating applications on embedded devices with Rust and we've written a lot about it.
But if you're a hardware vendor (be it chips or full devices/systems), should you give your users Rust support in addition to your C support?
In this blog I argue that the answer to the question is yes.
Introducing ntpd-rs metrics
An unusual tool for unused code
Implementing NTPv5 in ntpd-rs
Pendulum long-term goals: usability and security (video)
ntpd-rs: Folkert explains the project (video)
Statime continues: Boundary Clocks and Master Ports
sudo-rs' first security audit
Why we sponsor memory safety event Tectonics
Dealing with Dependencies in Rust
At Tweede golf we are convinced that if software is written in Rust, it will be more robust (compared to legacy languages such as C, C++ or Java), and more efficient (compared to code written in PHP or Python and again, Java).
In order to get more robust software out there, we have to get Rust code running on computers of people who are not themselves Rust developers.
First stable release of ntpd-rs
Our pixel-rendered planner with a Rust backend
Are we embedded yet?
Rust 101's first run at STU Bratislava
Sovereign Tech Fund invests in Pendulum
Our talk at CYSAT 2023
Report: NTP security audit
Threat Modelling
ntpd-rs: NTP for the modern era (video)
This article is an adaptation of the original, published by Prossimo.
We're happy to announce that the Internet Security Research Group has officially made us the maintainers of the open-source memory-safe implementation of NTP, ntpd-rs
. As such, we are now also looking for early adopters.
The implementation includes a server and client, as well as full support for Network Time Security (NTS), which brings encryption and greater integrity to time synchronization. Timing is precise and stable, as reflected by excellent performance in the NTP pool.
Rust at Royal Netherlands Aerospace Centre
While working on the Roc compiler, we regularly dive deep on computer science topics. A recurring theme is speed, both the runtime performance of the code that we generate, as well as the performance of our compiler itself.
One extremely useful technique that we have been playing with is data-oriented design: the idea that the actual data you have should guide how code is structured.
Introducing MailCrab!
TrustZone, trials and tribulations
TrustZone-m is a technology by ARM that allows you to create a Trusted Execution Environment (TEE) in your software. You can use it for example to keep your encryption keys secret or to separate a big vulnerable networking stack from your own code.
Over the last three months I've been working on a set of crates (Rust libraries) with the aim of making the usage of TrustZone-m a lot easier.
Mindsort: Building a research tool for the Donders Institute
Crash! And now what?
Imagine you've just deployed an embedded device in the world and of course, you have tested it thoroughly and it works. To monitor the device, you've set up some logging.
Low power & low frustration (video)
Rust 101: an open-source university course
Our year in Rust
Our year in Rust
A company-changing year in a short story,
begins with a thank you, for this new-found glory.
We want to be clear in this prelude,
It is to Rust we owe our gratitude.
Meetup: Rust in open-source critical infrastructure
Sorting with SIMD
Google recently published a blog article and paper introducing their SIMD-accelerated sorting algorithm.
SIMD stands for single instruction, multiple data. A single instruction is used to apply the same operation to multiple pieces of data. The prototypical example is addition, where one instruction can do e.g. 4 32-bit additions. A single SIMD addition should be roughly 4 times faster than performing 4 individual additions.
This kind of instruction-level parallelism has many applications in areas with a lot of number crunching, e.g. machine learning, physics simulations, and game engines. But how can this be used for sorting? Sorting does not involve arithmetic, and the whole idea of sorting is that each element moves to its unique correct place in the output. In other words, we don't want to perform the same work for each element, so at first sight it's hard to see where SIMD can help.
To understand the basic concepts, I played around with the ideas from the paper Fast Quicksort Implementation Using AVX Instructions by Shay Gueron and Vlad Krasnov. They provide an implementation in (surprisingly readable) assembly on their github. Let's see how we can make SIMD sort.
Pioneering Rust in High Tech
Pioneering Rust in the high-tech industry!
Together with High Tech Software Cluster, we organized an event to showcase Rust’s strengths and safety features to tech companies in the Brainport region in the Netherlands.
Implementing the Network Time Protocol (NTP) in Rust
For the last couple of months we at Tweede golf have been working on implementing a Network Time Protocol (NTP) client and server in Rust.
The project is a Prossimo initiative and is supported by their sponsors, Cisco and AWS. Our first short-term goal is to deploy our implementation at Let's Encrypt. The long-term goal is to develop an alternative fully-featured NTP implementation that can be widely used.