Skip to content

Instantly share code, notes, and snippets.

@TeXitoi
TeXitoi / prev.txt
Created November 25, 2020 22:07
elf headers
$ cargo +1.47.0 objdump --release -- -x
keyberon-f4: file format elf32-littlearm
architecture: arm
start address: 0x08000195
Program Header:
LOAD off 0x00010000 vaddr 0x08000000 paddr 0x08000000 align 2**16
filesz 0x00000194 memsz 0x00000194 flags r--

Announcing KeySeeBee and Keyberon v0.1.0

KeySeeBee is a split ergo keyboard. It is only 2 PCB (so the name) with (almost) only SMD components on it. It's only a keyboard, no LED, no display, nothing more than keys and USB.

Features

  • Fully opensource, under the MIT license;
  • 44 keys, using Cherry MX or Kailh choc switches, only 1U keycaps;
  • USB-C connector on the 2 sides;
  • TRRS cable for connecting the 2 halves (for power and UART communication between the 2 halves);
  • 2 STM32F072 MCU, with hardware USB DFU bootloader and crystal less USB;

Oxidize Berlin Conference

High Level Programming in Embedded Rust

A concise, engaging description for the public program. Limited to 1000 characters.

Embedded development is generally linked to low level programming. But, even on the most deeply embedded project, a part of it would benefit from high level patterns. Rust helps a lot in this land: while letting you do the raw low level things, you still have a safe, modern and high level language for the parts that need it, even without any runtime.

To illustrate these possibilities Rust offer, we will explore the development of an alarm clock. Based on the RTFM framework, it implements the Elm architecture (a pure functional architecture for web development). Messages and events are managed thanks to Rust enums, and the stateless design allows easy testing.

#!/bin/sh
for id in $(xinput list | egrep 'TypeMatrix|Keyberon' | sed -r 's/.*id=([0-9]*).*/\1/'); do
setxkbmap -device $id fr bepo
done

Langages managés (go, java...)

Un consensus ressort sur le fait que les langages managés ne sont pas une bonne idée, pour des raisons d'utilisation de RAM plus importante, de latence et de difficulté à écrire du code minimisant les allocations. C++ et Rust sont les seuls choix possibles retenus. Go est mis à titre indicatif.

Avantages de Go

Using Rust in production: the Mimirsbrunn case

Abstract

Kisio Digital is a SaaS company that makes navitia, an open-source REST API providing all the needed tools for traveler information. When the need of rewriting the autocomplete service arose, Rust was chosen. Thus, Mimirsbrunn was the first Rust project of the company.

This talk will present the journey of this rewrite, since the very first POC back in 2014. The different aspects will be exposed without any taboo.

For Review Committee

BANO + OSM + Navitia = un nouveau géocodeur pour les transports

Introduction

Mimir!

Pourquoi ?

présentation navitia

@TeXitoi
TeXitoi / valhalla.md
Last active November 30, 2016 08:48

Using Valhalla for the street network part of navitia

Hi.

We are the navitia developers. navitia is "the open source software to build cool stuff with locomotion". We work at Kisio Digital. We provide traveler information, mainly about public transport. Our clients are mainly transporters and transport organisation authority. We also provide an open service at navitia.io.

Mainly to support realistic car journeys (in direct path or combined with public transport), we plan to change the street network part of navitia. The features must be:

  • independent service (actually, street network and public transport are managed by kraken, our computational engine)
  • fast 1 * N (with 200 < N < 20,000) request (from departure point to every public transport stop point accessible at a given duration)
  • realistic car journeys (currently, our system goes at a fix
@TeXitoi
TeXitoi / cir.md
Last active June 17, 2016 14:29
CIR

Amérioration de la recherche d'alternatives d'itinéraires

Depuis plusieurs années, nous utilisons RAPTOR pour calculer nos itinéraires en transport en commun. RAPTOR permet de trouver l'arrivé au plus tôt pour chaque point d'arrêt du réseau en fonction du nombre de correspondances. Les alternatives proposés n'étaient pas suffisament diversifiées. Certaines correspondances étaient également mal choisi. C'est pourquoi nous avons développé un algorithme permettant de choisir les solutions intéressantes parmis tous les itinéraires implicites fournis par RAPTOR.

Situation initiale

Résolution par RAPTOR

Les entrées de l'arlgorithme de calcul sont deux ensembles de points d'arrêts avec leur durée d'accès : un ensemble pour le départ, et un ensemble pour l'arrivé. Par exemple, supposons que nous souhaitons partir du point A pour aller au point B. Les numéros sont des points d'arrêts.