Fosdem 2021 notes

:fosdem: :konferencija:

Fosdem 2021 was the first virtual/on-line conference I’ve participated. I (thought) do not really like watching videos and participate in such virtual events. But I must admit I really enjoyed the Fosdem this year. Yeah, there were multiple technical issues, like low video quality (very few times), speakers did not hear hearing questions from the moderators, speakers and moderators were cut in the middle of sentence when answering questions (because time management was automated), etc. But despite that it was great to watch pre-recorded presentation and chat with the speaker or other participants in parallel in the chatroom. Ask questions, comment, up-vote other questions, etc. It was nice experience and much better than I’ve expected initially!

Below are my personal notes of Fosdem 2021 talks I’ve watched. This page might be updated with additional insights after I’ll watch recordings. I’ve put personal interest score for every talk which represents my subjective experience but not necessary the quality of talk.

Emulation 101: How anyone can do it

Personal score: 4/5.

Interesting intro talk on writing emulators. Not many technical details, quite abstract but nice to listen for. Good if you haven’t wrote an emulator yet. Few tips if you already wrote one.

  • Each chip is a separate component on emulator (RAM, COM, Display, CPU).
  • Treat your timers (framerate, CPU).
  • Write Chip8 as first emulator. There are more CHIP8 emulators in the world than software written for CHIP8.
  • Emulator dev should write a good display module. Not necessary to emulate it.
  • Implement reusable memory modes (with features such as can write, read, enabled).
  • Cycles correction (how many cycles operation should take on CPU).

An emulator for my old system today and tomorrow

Personal score: 4/5.

  • Emulators used to preserve retro computing (e.g. in museums)
  • Since technologies change emulators also needs to be adopted to new architectures. E.g. Apple migrated from Power PC to Intel, then to ARM after 15 years. To solve this problem multiple stacked emulators can be used: run emulator to run other emulator to run the software. Each emulators can be developed separately. Another approach - run emulator in VM (e.g. Java). VM will be adopted to new architecture so emulator can remain the same.
  • Useful resource: https://emulation.gametechwiki.com/index.php/Main_Page

The Ides of RISC V

Personal score: 3/5.

Nothing deep actually but nice to listen.

  • Short intro into vector operations in CISC vs RISC-V CPUs. Nice feature in RISC-V that it is possible to configure vector size while in CISC it is pre-defined.
  • Launched program in RISC-V emulator (because there are no available boards yet so everybody is coding in emulators?). See Spike.
  • Demonstrated very basics interactive debugging in the emulator. The breakpoints can be added at memory addresses but not at symbols.

Embedded Linux “from scratch” in 45 minutes on Risc V

Personal score: 2/5.

Good pre-recorded demo with multiple tools. Would be a valuable resource if I’d need to put Linux in some embedded device. But I’ve joined this talk out of curiosity only so honestly it was a bit boring to watch.

Drones, Virtual Reality and Multiplayer NES Games The fun you can have with Pion WebRTC!

Personal score: 2/5.

Pion is WebRTC implementation in Golang. Presentation mostly contains a list of example projects built with Pion. It reveals capabilities of WebRTC but still talk was just a bunch of examples. And ended in 15 mins (that probably was a good part).

Calling Python from Go In Memory

Personal score: 3/5.

There be dragons. Use cgo to import cpython. Then do some magic and execute Python code from Golang application. Crazy!

Building cross platform Go GUIs fast using Fyne

Personal score: 3/5.

Presentation about Fyne Golang library which is used to build GUI interfaces. I would not call this talk very entertaining since part of the talk was about new features added. But the library looks promising with lean API and definitely going to play with it.

The State of Go

Personal score: 4/5.

  • Reviewing new features of Go 1.15 and 1.16 since 1.14.
  • mod enables excluding particular versions (e.g. due security flaws).
  • More vet warnings.
  • embed.FS for embedding static things into binary (really nice!) URL].
  • RISC-V, Apple Silicon support. Everything is faster on M1 except crypto mining.
  • Generics in the future.

Desktop Linux management at Facebook

Personal score: 3/5.

  • Official support was for Windows and Mac. Linux was used by fans.
  • Images can be personalized for different teams. E.g. for engineers and non-engineers different images can be prepared.
  • Facebook picked Fedora for desktop Linux (though Ubuntu was more popular).
  • PXE Network install. Though with working from home started to raise issues.
  • Chef bootstrap. Using go2chef for bootstraping. Chef is idempotent. Engineers are able to overwrite Chef playbooks by themselves.
  • Packages are rolled out gradually in case of faulty packages.
  • Btrfs.

The Fuzion Language

Personal score: 2/5.

Intro in the language. I’ve joined a bit late so haven’t got too much excitement from the talk. The author is seeking for help to work on the language/website.

Designing OpenWifi chip

Personal score: 4/5.

Folks are designing open source WiFi chip. As I understand the main purpose of such chip is to provide hardware to scientists and those who wants to tinker with and reduce the cost. The cost reduced from 3600 USD to 900. Could be 200 USD. This is not a chip for your laptop :-)

ZX Adventure: Writing a new game, for a 40 year old machine

Personal score: 5/5.

Game URL.

  • Author took a game for a book which wanted to implement.
  • Looked for a sample code.
  • Required tools: cross-assembler. Emulator (debugger is a must). Data converters. Assembler (Pasmo).
  • Emulator enabled print every register and other values to be printed during execution for every program counter value. Helped a lot.
  • Game needed three routines:
    • Draw dot in X,Y.
    • Read the input (from keyboard or joystick).
    • Play sound at f Hz for t seconds.
  • Optimization is not necessary only unless it is necessary.

Compiling to WebAssembly

Personal score: 3/5.

Live coding session to compile Scheme into WebAssembly. And then write compiler to compile scheme into WebAssembly. Sadly I’m not much into scheme.

25 languages in 25 days

Personal score: 3/5.

  • Intro into Advend of Code. Since it was a lightning talk so the half of time was spent on intro.
  • Speaker picked 25 languages and shuffled randomly.
  • Was familiar with functional paradigm so no big challenges there. But that would be a challenge in other case.
  • Rust was the language he’d like to work more with.

Why your PC only has sixteen colors

Personal score: 5/5.

Nice explanation why there are 16 colors in PC.

  • RGB gives 8 colors (three colors and their intersections). In this way RGB can be encoded in 3 bits. Adding an extra bit would double the colors to 16.
  • Black 0000 and bright-black 1000 are the same colors.
  • All rainbow colors are not available between these 16 colors. Orange was missing. Brown is Orange.
  • Bbbbffff where b is background, g is foreground and B is Blink.

Challenges running Jitsi Meet at scale during the pandemic

Personal score: 4/5.

  • Running on AWS. ALB redirects to HAProxy. HAProxy forwards requests to different shards. Multiple regions.
  • Tried to over provision during COVID but did not work.
  • Incorrect file descriptor limits. Needed to increase (affected Nginx, Prosody - the Jabber/XMPP server). Then multiple other issues explained.
  • When pandemic hit the load came from two countries: Italy and Spain.
  • Community stepped up to help. Creating guides, infographics, etc.
  • Every participant is sending video in three different resolutions. Video bridge decides which resolution to use. E.g. for viewing videos in tiled way - only medium/low resolution is received.

Advent of Code Behind the Scenes

Personal score: 5/5.

  • The very first AoC was planned for 70 users capacity. It hit over few thousands immediately.
  • Currently running on AWS. Elastic scaling does not help much since the traffic does not increase gradually but hits at 00:00 and then disappears. Worked directly with AWS to solve this problem.
  • Author starts preparing AoC problems ~April. ~4 months are spent on problems.
  • Generate problem, write solver, write input generator, test, write prose in the end.

TODO