1. How to survive FOSDEM

    FOSDEM. Free Open Source Developers European Meeting. Every first weekend of February. In Brussels. At Université libre de Bruxelles.

    I used to say that FOSDEM is a week long conference in two days. I don’t think it is valid anymore. Should say two weeks now as last time it was something about 700 prelections. Still during two days.

    I also used to say that I can not afford not being at FOSDEM. It is probably the easiest way to meet developers from all those projects I worked with or was interested in.

    But it is not just Saturday and Sunday. On Friday evening there is a beer event which nowadays takes place at street leading to Delirium Café. Can be hard to get there due to amount of people but it is worth it. Easy way to meet far too many familiar faces. And get beer (once you managed to reach bar).

    But how to survive FOSDEM? Food. Logistics. Clothes. Logistics. Mobile app.


    Yes, logistics is one of key factors when it comes to this conference.

    Lectures take place in several buildings (AW, H, J, K, U). At same time. Getting from one to another takes time. You can meet people on a way and decide to discuss something rather than go for talk.

    Since few years ago there is even online navigation tool to show you which way to go from one place to another. Very handy especially if you have some mobility issues.

    FOSDEM map

    Sometimes it is worth to be in some room session before just to have a seat. Limits are taken seriously and when info on door says “room full” then do not even try to sneak in. You may find some spot and watch live streaming — just remember about good headphones to not interrupt people around you.

    If you need a quiet place to sit for a bit with your laptop then you can go to cafeteria in F building (crowdy, noisy) or sit in hacking room (quiet) in the middle of H building.


    Get place to sleep in city centre. “Crawling distance from Delirium Café” is perfect as this is where lot of people spend Friday’s and Saturday’s evening/night. Also several places to get various food, some grocery stores (just check opening times), pharmacies, GSM shops etc.

    Public transport

    Use whatever you normaly use (Google Maps or so) to check for it. If possible avoid bus 71 if you go on popular time and not from first stop. It gets full right on start and keeps that way until FOSDEM stop.

    On Sunday afternoon (15:30 - 19:30) there are free buses from ULB to Brussels South (Midi) railway station. Easy way to get to BRU airport. Full of people so it is good to have some alternative routes in mind.

    When it comes to tickets I usually went for 72h ticket but STIB ticket information does not list them anymore.

    Mobile application

    As long as your phone is able to run applications check Mobile schedule apps list at conference website and choose one. I use ‘FOSDEM Companion’ on my Android phone.

    Install application at least week before the event. Sync schedule and start checking which sessions to attend. Ignore fact that some will overlap. It is always better to have more listed than less — sometimes you sacrifice one due to being in wrong building or room will be full so you can take a quick look at list and go somewhere else.

    Internet access

    Once you reach FOSDEM there is no problem — conference area provides you fast wireless network access.

    If you are from one of EU countries then your GSM operator probably provides you with some data limit for “Roaming Like At Home” functionality.

    If you are from outside of EU then I suggest reading prepaid with data wiki page. GSM operators stores are in several places in city centre. Or you may even manage to find some at airport but easier to just grab one once you reach centre.


    Eat proper breakfast. Not “just a fruit and coffee” but some proper one. You may not have a time to stand in a queue for some FOSDEM food. It is not worth your time.

    If you really have to then go to bar under J, have exact change and buy a sandwich. Not best food but you may get it quick.

    Better option is to just have something with you. Get fruits, nuts, energy bars, chocolate. Some kind of quick calories.

    Or spend half an hour (or more) waiting for fast food. Still good opportunity to chat with people.


    FOSDEM is in February. Which means winter. So it may mean snow but it is Brussels so usually it is either nice or rainy. And you will go into building and out of building several times per day. Be prepared for it.

    Proper shoes to walk on concrete, steps but also snow, mud and grass. Winter cap, scarf, maybe even gloves. Do not have to be thick ones like for some Arctic winter. Assume few degrees above 0°C.

    Small backpack and bottle of water. Do not throw away once get empty. You are at university. You can refill your bottle at several places. Tap water is drinkable.


    Do not put your trash in random places. Use trashcans, inform organizers and volunteers if you see full ones. Put bottles into places for bottles.

    If you can then stay after ending session and help to clean up. It is free event so help those who organized it for you.


    FOSDEM is free event. But there is swag. You can go to organizers’ desk and donate money to keep event going. For 25€ you can get the official t-shirt.

    Several projects have own stands — mostly in K building but there are also other ones in AW (mostly related to embedded space).

    If you are stickers fan (or your new laptop still have some space on case) then go on a tour, discuss with developers, see what they present. Grab leaflets, stickers, donate some money (usually in exchange to more premium swag) etc.

    Or some funny one like this license for VLC I got in 2019:

    Physical VLC license

    Fiance(e) or family

    If your companion is not interested in FOSDEM you may sign them to free tour(s). My wife came with me to conference once, went for tour each day and enjoyed them.

    Other events

    There are several meetings taking place right before and/or after FOSDEM.

    CentOS Dojo on Friday is a nice opportunity to meet developers working on this distribution. Buildroot developers usually gather after FOSDEM.

    Several other projects are having own meetings, developer days etc. You can check list at FOSDEM Fringe page.

    Written by Marcin Juszkiewicz on
  2. My first 8K intro

    I am on demoscene since 1997 when I attended “Intel Outside 4” party in Włocławek, Poland. But I have never released anything. Until Xenium 2019 party where I presented my first 8K intro. Written for Atari 2600 game console. In some kind of BASIC language…

    The idea

    The idea for it came about year ago during Riverwash demoscene party. Most of PC 64KB intros started with some kind of progress bar as code was generating textures, instruments and other stuff requiring calculations. I joked that it would be great to make something similar for Atari 2600 VCS.

    The fun is that Atari 2600 lacks any usable memory. It has 128 bytes (bytes, not kilobytes) of RAM. The only storage is cartridge with 4KB of ROM space (expandable by bankswitching to 32KB). So there is no point in any generating at other phase than development.

    batari Basic

    During July I took a look at available options and found ‘batari Basic’. It is BASIC-like language developed in 2005-2007 by Fred X. Quimby.

    My main source of help was a forum on Atari Age. Detailed language info came from useful page called ‘Random Terrain’. There is also “Visual BB which is IDE with some tools speeding up development.


    Thanks to Xenium organizers I have my intro recorded as video:

    thumbnail for LChMOMF8GPw video

    As you can see it has two parts. First one is playfield with one line changing every 30 frames (first version was for NTSC). Result is simple progress bar.

    Second part uses “titlescreen kernel” to display dino graphics. I used one provided by Xenium organizers (rescaled to 96x91 pixels). I used rainbow colours to have some colours on screen.

    At party

    At start of “oldchool intro” competition I told to friend sitting next to me that I hope for at least four entries. He asked “why?” so I pointed him to the screen saying “because of it”:

    My first 8K intro announcement screen

    There were six entries so I though that I am safe and will have 5th entry maximum.


    Imagine my surprise during voting results announcement next day. My intro took 3rd place!

    Award for 3rd place

    Amazing for production without any effects, without any audio. And written in BASIC-like language without using any knowledge of 6502 assembly.

    Source code

    If someone wants to see how simple it was then source code is in “my first 8k” git repo on github. Enjoy!

    What next?

    During Xenium I got lot of technical information for VCS programming. And there were questions about my next production.

    Nothing to promise here. And not for Atari VCS. It is sick platform to program due to lack of any framebuffer memory so ‘race the beam’ is in use…

    I have some ideas for Atari XL/XE

    Written by Marcin Juszkiewicz on
  3. Kolla ‘stein’ released

    On last Monday we finally released Kolla and Kolla Ansible 8.0.0 ‘stein’. Took us longer than we planned but now it is done and ready for users.


    What got changed? Many things — details can be found in Kolla release notes and Kolla Ansible release notes.

    My work in this cycle was more reviews, less code. And lot of planning how to handle Python 3 migration for Debian/Ubuntu based images. At some point we decided that this stuff will be postponed to ‘train’ cycle. You can read more about it my previous post: Moving Kolla images to Python 3.

    Why so late

    Usually we release Kolla ‘two weeks’ after official OpenStack release. This allows us to switch to final release code of other projects, do some testing etc. This time it took us far more time :(

    Due to several issues (some core developers got more occupied with work, distributions changed dependencies in packages) it took us longer than ‘two weeks’ after official OpenStack ‘stein’ release. We added more tests for CI, handled partial Python 3 migration in Ubuntu Cloud Archive and more.Several fixes were made in ‘train’ and backported to ‘stein’.

    Now it is your turn — build, deploy, test, report ;D

    Written by Marcin Juszkiewicz on
  4. Upgraded my desktop a bit

    I have built my current desktop 7.5 years ago. Since then I did not had a need for a big hardware changes.


    Machine (called ‘puchatek‘ (Winnie the Pooh in Polish)) had several upgrades in meantime:

    • got maxxed at 32GB of memory
    • 60GB Corsair SSD for / was installed 8 years ago
    • 250GB Samsung Evo for /home was added 3 years ago
    • graphic cards were changed from Radeon HD5450 via Radeon R7 240 to Nvidia GTX 1050 Ti


    Size of system drive became an issue when I needed to build hundreds of container images. All that Kolla stuff…

    One of solutions was replacing system drive with bigger one. So I tried to use PCI Express to m.2 adapter card and realised that x8 slot stopped working.

    New mainboard

    It was a time to replace motherboard. And it is impossible to find a brand new one with 1155 socket. So I went through used ones and found nice replacement — Asrock Z68 Extreme4.

    What’s nice in it? PLX chip. It is PCI Express switch. So mainboard can have x16/x8+x8 slots, x4 slot, some x1 slots and several onboard components despite of only 24 pcie lanes available (16 from cpu, 8 from chipset).

    This way I can have graphics card working in x16 slot (it goes with x8 anyway) and NVME drive in x4 slot. If I decide to go into SLI (two graphics cards) or 10GbE I have a slot for it.

    PCI tree

    PCI tree looks a bit different now:

    • cpu

      • x16 slot with graphics card
      • x8 slot (empty)
    • chipset

      • x4 slot with nvme
      • x1 link to Marvell SATA controller (disabled in firmware setup)
      • x1 link to Etron USB 3.0 host controller
      • x1 link to Etron USB 3.0 host controller
      • x1 link to PLX switch
    • PLX switch

      • x1 slot with Renesas USB 3.0 host controller
      • x1 link to FireWire controller (disabled in firmware setup)
      • x1 link to Broadcom 1GbE controller
      • x1 slot (empty, covered by graphics card)
      • x1 link to PCIe to pci bridge

    Hacking firmware

    Latest available firmware was from 2012 and lacked any support for NVME boot. Thanks to other hackers it was not an issue. Only had to follow “how to add NVME booting into BIOS” instruction. After flashing modified firmware I could boot directly from NVME drive.

    Final result

    System boots from NVME now. 256GB of fast storage available for / and my container images. Spare PCIe x8 slot for future upgrades.

    Written by Marcin Juszkiewicz on
  5. Not enough bandwidth for new device state

    USB. Protocol which replaced random keyboard connectors, PS/2, ADB, gameport, serial and parallel ports (and many more). Sometimes expanded to “USB Sucks Badly“.

    Five years ago buying USB 3.0 hub was a task as it was not so popular thing. Nowadays I have three SuperSpeed ones. One in LG monitor (webcam, phone, Bluetooth dongle), one on desk (watch charging/adb, Yubikey, card reader, pendrives etc) and that 7 port one from five years ago with random dongles in it.

    Yesterday I replaced Gigabyte P67X-UD3-B3 mainboard with AsRock Z68 Extreme4 one. This gave me extra PCIe x4 slot where I can plug NVME storage. Built system, booted into Fedora and started using.

    At some moment I had to login into one of systems with two factor authorization. I use Yubikey for it. Pressed the button and nothing was outputed…

    Then I realized why previous configuration had that extra USB 3 controller:

    usb 3-2.2: new full-speed USB device number 12 using xhci_hcd
    usb 3-2.2: New USB device found, idVendor=1050, idProduct=0110, bcdDevice= 3.33
    usb 3-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    usb 3-2.2: Product: Yubikey NEO OTP
    usb 3-2.2: Manufacturer: Yubico
    usb 3-2.2: Not enough bandwidth for new device state.
    usb 3-2.2: can't set config #1, error -28

    Yay, USB!

    Plugged Renesas uPD720201 PCIe USB 3.0 host controller, moved all hubs to it and it works just fine:

    usb 7-3.2: new full-speed USB device number 11 using xhci_hcd
    usb 7-3.2: New USB device found, idVendor=1050, idProduct=0110, bcdDevice= 3.33
    usb 7-3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    usb 7-3.2: Product: Yubikey NEO OTP
    usb 7-3.2: Manufacturer: Yubico
    input: Yubico Yubikey NEO OTP as /devices/pci0000:00/0000:00:1c.7/0000:05:00.0/0000:06:01.0/0000:07:00.0/usb7/7-3/7-3.2/7-3.2:1.0/0003:1050:0110.0008/input/input30
    hid-generic 0003:1050:0110.0008: input,hidraw6: USB HID v1.10 Keyboard [Yubico Yubikey NEO OTP] on usb-0000:07:00.0-3.2/input0

    Then checked which USB 3.0 host controller is on mainboard:

    11:29 (0s) hrw@puchatek:~$ lspci |grep -i usb
    00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
    00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)
    03:00.0 USB controller: Etron Technology, Inc. EJ168 USB 3.0 Host Controller (rev 01)
    04:00.0 USB controller: Etron Technology, Inc. EJ168 USB 3.0 Host Controller (rev 01)
    07:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03)

    Argh, Etron EJ168 again…

    So if your mainboard has Etron EJ168 then consider adding Renesas card. Works just fine. Nevermind how slow/fast your USB devices are.

    Written by Marcin Juszkiewicz on
  6. Nine years of Linaro

    Nine years ago at 11:00 a group of developers gathered in a small room. I was one of them and did not knew anyone from a group before entering the room.

    The meeting took place in Dolce La Hulpe Hotel and Resort in a village close to Brussels, Belgium. It was on first day of UDS-M.

    This was the first meeting of NewCo developers. The organization now known as Linaro.

    I do not remember who exactly was at that meeting so will not provide a list. We introduced ourselves, got some knowledge of who is who’s boss and what we will do from now. I just told “I’ll do what my boss (pointing to Steve Langasek) orders me to” as I was tired after whole night train trip.

    For me this was the real beginning of Linaro. Not June 2010 when (at Computex) it was announced to the world. Neither 26th April 2010 — a day when I started working for Canonical as NewCo engineer.

    Written by Marcin Juszkiewicz on
  7. Good bye WordPress

    I had some kind of personal website since started using Internet in 1996. First it was set of hand edited Lynx bookmarks, then were experiments with wikis. Finally in 2005 I started using WordPress. And it was in use for those 14 years. Until now…

    WordPress is nice platform but I got tired of it. More and more plugins and themes became demo versions of commercial products. Also amount of JavaScript and CSS added to website made it harder and harder to maintain. At some point I said myself that it is enough. And started looking for alternatives.


    Here came Pelican — static site generator written in Python. I had few attempts to switch to it and finally managed to find some time and sorted out all issues.

    Someone my ask why Pelican? Why not Jekkyl, Gatsby, Hexo, Wintersmith or other. For me reason is simple — it is Python. Language which I already know. So in case of need I can read source code and know how to change it (already sent one change and it got merged).


    The good side is import from WordPress went nice. As I used Markdown most of posts required changes. Implementation in Pelican differs from old Markdown Extra + SmartyPants I had in my blog.


    Then came images. Copied whatever I had on previous website and removed all thumbnails. Then decided to go with 700px wide ones and to not link to original photos. Boring work as almost every image in every post needed change. Some entries got pictures removed (most of time due to their low resolution).

    This also shown how my blog was changing through all those years. Over 10 years ago adding 300x300px picture into blog post was normal thing. Now such graphics got either removed or replaced with 700px wide one.

    Some posts had galleries inserted instead of pictures. This took a bit more time as I was grabbing filenames from database to replace gallery with set of photos. And removed some of them during.

    Look and feel

    When I was collecting ideas for a new platform I had few ideas:

    • static generator
    • no JavaScript
    • minimal CSS
    • similar look to WordPress version

    Pelican solved first point. Handling rest was harder.

    I took a look at existing Pelican themes and tried several ones. Finally decided to make own one — like WordPress “Spacious” one.

    As a base I used “Simple” theme. Typical template with header, content, sidebar and footer. Elements put in CSS grid for most of screens and once screen width goes under 70em layout switches to “flex”. This allowed for simple responsive web design. All in ~2.5KB of CSS (plus some code for webfonts).


    One of big changes (compared to WordPress) is a way of presenting archive posts. You can go into archives to see the list of all my blog posts like it was before. But if you go for a list of posts in a tag (like AArch64, Red Hat, Zaurus) then instead of posts with pagination you get list of posts presented in archive form.

    This should make old content easier to find.


    As you may notice there is no way to comment posts anymore. Amount of comments was lower every year so I decided to not bother with them in new website. I could add Disqus for example but is it worth for just a few entries per year?

    To Do

    There are some things I need to take care of still. Page about my fridge magnets collection is missing, some entries may get some formatting changes or small contents edit. No big edits of old posts as they show how awful my English was in past (not that it got any better).

    Written by Marcin Juszkiewicz on
  8. The end of “Mali question”?

    For several Linaro Connect events we had sessions about state of graphics drivers on ARM platforms. I attended most of them and got a reputation of person asking problematic questions.

    But situation has changed. With Panfrost project happening. It is a Foss driver for Arm Mali Midgard graphics chipset (Bifrost support on a way). It went from “wow, a triangle” to “we can play some games or run a desktop” in quite short time.

    At BKK19 Linaro Connect we had “State of opensource drivers for mobile GPU chips” session. Freedreno, Etnaviv, vc4, v3d, Panfrost, Lima etc. What they target, what was already achieved, what are plans. Great progress across whole ARM world. And several questions from the audience. And interesting answers as well.

    thumbnail for VTgDP3yNXI0 video

    Mali then. Grant Likely from Arm told that they are looking how Panfrost is going. From company perspective both Midgard and Bifrost chips are “done, in a field” product which will not get changes. Still — engineering support goes entirely into their binary drivers as this is what their customers are using. Situation may change if those customers start asking for open drivers.

    I do not use any Arm hardware with Mali GPU anymore. But hope that at next Linaro Connect instead of asking famous “Mali question” we will rather discuss how it runs on our devices.

    Written by Marcin Juszkiewicz on
  9. How did I hacked Linaro Connect BKK19 puzzle

    One of Linaro Connect traditions is a puzzle to solve. Created by Dave Pigott. And recent BKK19 event was not any different. There was puzzle announcement on the first day — right before first keynote. But no one could be first to answer at that time…


    As usual before Connect I looked at a map and marked several locations in Bangkok as places to visit. Then took a look at the official BKK19 application. Installed it on my phone and started.

    First screen had few paragraphs of text. Some information about the event and schedule. But there was also paragraph with information about the puzzle. WITH the link to it!

    I clicked to get some redirection to Google Forms website. With information that this form is not available for users outside of organization. As I do not have work accounts on my phone I checked for redirection link and loaded it on my desktop. And landed into the puzzle.

    Puzzle form

    It was a bit different than version provided during Linaro Connect. There was a graphics with seven (official one had eight ones) columns of text. Under it was graphics with chess figures:

    H1 G3 F1 H2 G4 E3 D1
    A4 C3 B1 A3 C4 B6 A8
    B5 A7 C8 D6 E8 F6 D5
    G8 H6 F5 G7 H5 F4 E2
    C6 A5 B7 C5 A6 B8 D7
    F3 G1 H3 G5 H7 F8 E6
    F7 H8 G6 H4 G2 E1 D3
    A2 B4 C2 A1 B3 D2 E4

    Graphical hint

    Dave later said that knight was not present in it but I did not noticed that. There was a plan to add that graphics into official puzzle if no one provides proper answer until Wednesday.

    From text I noticed that it is chess related. Took a sheet of paper, draw 8x8 grid on it and started following each row on it with different markings each time. Hm… nothing came to my mind. Noted missing entries.

    Help me Google, you are my only hope

    Then started googling “knight chess puzzle” and got “knight’s tour” links on first page. Started reading what it is about. Then restarted tracking knight’s moves from the puzzle with adding missing ones. Turned out that this was it.

    Let me mail Dave

    I submitted “knight’s tour problem” as the answer and wrote to Dave:

    I see that they are online already.

    Are the ones there official ones or testing one?

    Turned out that I found testing version. Which did not even collected emails when someone provided an answer. But there was one such sent so Dave marked it as my submission. And the link got removed from BKK19 application.

    At pool bar

    I arrived in Bangkok on Saturday. Met Dave at pool bar and we had a chat about the puzzle. Was fun to see how surprised people around were that first answer was already provided. I asked Dave to not give me the proper answer nor info was my answer good so I would not spoil other people.

    During Connect few attendees asked me about the puzzle, how it went. Kept away from spoiling them.

    And the winner is…

    Then Friday happened with closing remarks session. Only a few people provided two words answer (“knight’s tour”) and few three word one (“closed knight’s tour”). My name was in “special mention” section.

    Puzzle winners slide

    Turned out that there is separate award for hacking a puzzle. It was 3rd time when it happened. I got a waterproof action camera (EZVIV S1C model) — will find some use for it sooner or later ;D

    Whole puzzle was fun. Thanks go to Dave for creating it and providing me with a copy of both results slide and graphical hint so I could use it in blog post.

    Written by Marcin Juszkiewicz on
  10. Moving Kolla images to Python 3

    Python… To use 2.7 or to go for 3.x? To “be compatible” or to “use fancy new features”. Next year Python 2 gets finally unsupported upstream.

    Kolla state

    Kolla can run under Python 2.7 or 3.x and results will be the same. All those container images containing OpenStack components and whatever needed to get them running. But so far all of those images will use Python 2.7 inside…

    I proposed to take care of it during Train cycle (we are at Stein now). Then we had a meeting and decided — let us do that in Stein! If I only knew how many issues it will bring…


    First some cleaning and refactoring:

    Distribution handling

    Then created new variable to keep which exactly version of Python 3: distro_python_version. And then used wherever needed.

    In meantime we got support for Red Hat Enterprise Linux 8 distribution. Where Python 3 is the only version available.

    Finally we moved Ubuntu to use Stein UCA which also switched us to Python 3 in several images.

    CI failures

    And then hell gates opened…

    We moved our CI jobs from Ubuntu 16.04 ‘xenial’ to Ubuntu 18.04 ‘bionic’. OMG. So many failures. When Mark Goddard found out why (too old ‘setuptools’) we had to pile up fixes to get CI back into working state.

    Nova images were failing. Turned out that Debian/Ubuntu ‘qemu’ package is no longer metapackage but useless dummy. And then it brought ‘armv6l’ architecture to Nova so it started failing. There were three different patches to handle it and problem got solved.

    OracleLinux image got repository information files renamed. And as we edit them we had to adapt.

    Python 3 got enabled in another set of images.

    Changing other projects

    Kolla uses other projects, right? Are they Python 3 ready?

    Had to patch several ones:

    Some of those changes were requirements updates to mark “Python 2 only” components (enum34, functools32, UcsSdk) or getting rid of Unicode characters from files which should be be US-ASCII.

    Bifrost one cleaned situation as we are using it within virtualenv so Python packages were going crazy. Now they handle it ;D

    Current status

    The most important patch switching all image to Python 3 for Debian/Ubuntu is still in review. Waiting for karbor fix getting merged and CentOS 7/OracleLinux 7 builds getting working again.

    We also moved to Debian ‘buster’ release. It is now in ‘freeze’ state so no big changes allowed and provides us with many updates making Debian/Ubuntu blocks easy.

    Python 2 stays :(

    There are few images where we still have Python 2. Anything related to Ceph has it because Debian/Ubuntu ‘ceph-common’ package depends on Py2 packages. We install Py3 ones there.

    Written by Marcin Juszkiewicz on
Page 1 / 77
Older posts »