First responder: CPR alert at work

Within Netherlands each company is by law required to have first responders. These handle various situations until the professionals arrive. It’s usually one of (possible) fire, medical or an evacuation. Normally I’d post this at Google+ but as that’s going away I’ll put it on this blog. I prefer writing it down so later on I still can read the details.

While in a meeting I get a notification from my P2000 monitoring app (screenshot below), then a notification from the Dutch CPR app that there’s a need to perform CPR at work. The CPR app gives the exact address. I realize that I forgot my walkie talkie, plus my pager didn’t go off. I run out, I hear my colleagues explaining to others why I suddenly run out.

I’m wondering if to call security or to get my walkie talkie. I decide on the latter, security is usually busy enough during incidents. I make a mistake going to my floor, then to the correct one. I get my walkie talkie and ask for instructions. Incident is on 3rd, but I need to go to reception. I fetch an AED. A fellow colleague and first responder notices that and joins me. We go to reception (ground floor) but that was a miscommunication; we needed to go to reception 3rd floor. I’m not entirely happy with my mistakes.

While going back to 3rd floor we get an update, person is conscious. We arrive to 3rd floor and are directed towards the person. There’s loads of people around, actually too many. I stay at a distance, my colleague gets closer. A more experienced first responder is closer and asks my colleague to stand a bit away. I’m very happy that despite the mistakes everything is under control.

Me and my colleague decide to assist with waiting for an ambulance. This despite not having a bright jacket, nor my jacket (it’s cold outside). I might at least get a bright jacket from security, having this on is pretty critical. At the same time we overhear that the ambulance arrived. Using what security taught me in a previous incident we reserve an elevator to make it respond only to the buttons on the inside, not to anything else.

We further overhear that the ambulance arrived to the wrong part of the building, this means that we will have difficulty getting the stretcher up to the incident. We guide the ambulance personnel inside the building without the stretcher. While passing the reception I notice ground floor reception is talking to someone who is a relative/loved one/etc. We ask all of them to follow us inside the reserved elevator. The ambulance personnel is relaxed (as always!), they casually ask us to bring us the stretcher after. We were already planning to do this.

Together with my colleague we go down to ground floor to fetch the stretcher from floor -1 somehow. The stretcher needs go up one floor. At this point I’m not entirely sure how to do that, we need more people actually. We discussed this various times but the idea was to have 5 people, not 2. While walking to the stretcher we see 3 people actually carrying the stretcher up a staircase (from -1 to ground level).

The goods elevator meanwhile is reserved but standing at -1. I ask it to be redirected to ground level. No response. We arrive with the stretcher to goods elevator, it’s still at -1. We ask again, seems the new goods elevator system is annoying to use. Goods elevator arrives, there’s some people inside which we get rid of. Later I hear that those people were a bit overwhelmed. Using the goods elevator we take the stretcher to 3rd floor near the incident and then wait at 3rd floor reception. Reception has a few people, at least one person was shaking a bit due to emotions, we try and calm the person down. After that my colleague goes back to work.

Eventually I guide the ambulance personnel without a patient back out of the building . Fortunately no CPR and I’m quite happy they didn’t need to take anyone with them. While closing the doors of the good elevator a big wooden pallet almost falls upon me. Entirely dangerous! I later notice that this took the walkie talkie off my belt… so for a while I’m searching for my walkie talkie. After this I go to my colleague to talk everything over for a bit, followed by discussions with others as well. Various good things and also various improvement points.

First responder: broken ankle

Within Netherlands each company is by law required to have first responders. These handle various situations until the professionals arrive. It’s usually one of (possible) fire, medical or an evacuation. Normally I’d post this at Google+ but as that’s going away I’ll put it on this blog. I prefer writing it down so later on I still can see the details.

While standing a bit away from my desk it seems security (via the walkie talkie) asks for either me or Tim. I didn’t hear my name properly, but I’m pretty sure I heard them call out for Tim. After asking to repeat I get sent to 10th floor and informed that another person is also underway. There’s an ambulance underway and that’s basically all the information available.

I take a bright jacket, AED and run to 10th floor. I arrive at the same time as another first responder. Strangely nobody seems stressed. No group of people anywhere, etc. Though the floors are huge it usually only takes seconds to figure out the location of an incident. We ask around and nobody seems to be aware of any incident. We advice security and get sent to investigate on 9th floor. Apparently the floor number was unknown and this company is located on two floors with the majority on 10th floor. On 9th floor we notice the issue quickly and advise security. Just after we overhear (walkie talkie) the arrival of a rapid responder. The incident is quite easy, the person is lying on the floor with a coolpack, conscious, did not lose consciousness and just tripped because of a slippery floor.

Such an incident could be more serious, it’s quite possible that some kind of problem in their brain caused them to lose consciousness and that resulted in a broken ankle. During the last first aid refresher course they taught us to be aware that the real cause might be a bit different.

As the rapid responder is already within the building I decide not to treat the ankle. The ankle was already being cooled and it seems better to leave it to the professionals. Someone asks for a update to relay to the rapid responder, I respond and keep it brief.

Meanwhile more first responders arrive as well as interested colleagues. As per a tip from another first responder I give all kinds of tasks to the newly arrived first responders. One I ask (tell) to get all other colleagues away. Another is sent to get the persons jacket. Yet another is sent to the elevators to guide the rapid responder towards the incident.

Once the professional arrive we stand at a distance. We discussed if we should ask the rapid responder if he requested an ambulance but it was decided to better not to ask questions unless you really need to. This especially as the rapid respond is on his own. We prepare for a possible ambulance to arrive. This as a rapid responder (either motorcycle or a smaller car) cannot move people. It’s a bit overkill to use an ambulance for a broken ankle, but oh well. I volunteer to wait for the ambulance in the cold. Apparently there’s a reserved elevator which I can use (one which only responds to buttons within the elevator). Outside I see that the rapid responder parked in an interesting location and it might make things difficult. I check for any ambulance calls on my app, plus change the app to show me non-priority calls as well. If an ambulance comes I’ll need to ask for a lot of assistance. We had enough which responded.

After standing outside for a while I hear that the plan changed. The reserved elevator needs to go back to 9th and they’ll use a chair to move the person. On 9th floor I had to wait a while so to kill the time I ask how to reserve an elevator. I only know how to takeover the emergency elevator. Taking over a random one? I thought only security could do this. Tim explains it to me after which a bunch of people arrive, including someone in a chair. We guide the person downstairs. Person is then brought to the hospital by a colleague. We aren’t sure why the rapid responder didn’t bring the person. After the incident security ensures I can also reserve elevators.

During the whole incident we only used walkie talkies. Another way is pagers, worn by more people than the usual first responders. The pagers have as drawback that you might get an overkill of first responders. We recently changed procedures to optimize this a bit. It’s still nice to see how many responded just based upon walkie talkie usage.

First responder: fire alarm

Within Netherlands each company is by law required to have first responders. These handle various situations until the professionals arrive. It’s usually one of (possible) fire, medical or an evacuation. Normally I’d post this at Google+ but as that’s going away I’ll put it on this blog. I prefer writing it down so later on I still can see the details.

While having lunch I noticed a notification about the fire department going to my (huge) office building. As this was during lunch time and there might be way less first responders available I headed back. The message says “Handmelder” which is Dutch for those manually operated red boxes. As these are manual the fire department assumes someone verified that there’s a fire.

Screenshot of an P2000 app

According to Google Maps the fire department is a 7 minute drive away, so a maximum of 5 minutes for them. I saw them using a road which was partly closed for construction. A bit strange as they’ve been informed & there are signs. Anyway, I went inside. At this point I don’t know much. You hear people asking what is going on. I can guess but better not to assume too much. I do see that one of the fire doors closed itself. I notice the lack of an evacuation alarm though the pager indicated it’s either cellar, parking level or ground floor.

To help out I need a bright vest and a walkie talkie. The bright vest is very important a) for fire department to recognize whom to approach b) force people to listen to me. A walkie talkie I have at my desk, that’s useless as the elevators won’t work, I have no idea what is going on and it’ll take forever using the stairs. To start I take a bright jacket as well as ask and get for a spare walkie talkie from security. It takes a bit until I notice the walkie talkie battery is dead. I want to find another but there’s 2 unneeded people in the security room standing in the way so quickest is to ask again. Normally security is a hell during these things so I really don’t want to distract security. Fortunately there’s another working walkie talkie.

I announce myself and ask for instructions. I get told to check parking level 4 east side. Normally I easily know east vs west but at the moment not so much, I’m more thinking on how to approach safely but quickly. Last week security mentioned that the new fire detection cables have east and west mixed up. It seems easier and safer to check the entire parking level.

On parking level 4 I initially see nothing strange plus I’m the only one. This is strange as I was late to arrive to the incident. I missed all of the previous conversations. It’s a waste of time to ask about this so I skip it. I don’t see any fire at all, though there is a hell of a noise. I first check if it’s one of the cars (super easy). Nothing. There’s also various doors for building related things. Normally I’d have keys for that but alas, not now. I relay that first impression is no fire. I get told to check everything as per request fire department. I don’t get why they don’t come up but pointless to wonder. It takes me a few minutes to check the various doors. I check for fire indicator lights (fire behind a door) as well as a door check (heat, smoke). Nothing to be seen. Meanwhile a car enters the parking level. That should not be possible and usually cannot be done (parking gates close). Something to tell security. I communicate that nothing found except a really loud running airco.

As of a month ago the building has a fire detection cable on all parking levels. It is very sensitive to temperature changes. It’s also installed above the parking places close to two airco outlets. They thought ahead of the potential problem and they said they addressed it (made it less sensitive). My guess is that it’s still too sensitive.

One incident leads too loads of questions. Some answered during the incident, some just after, some take a while. There’s been enough learnings in this one.

GUADEC 2017 on the cheap

I’ve just booked flight and hotel for GUADEC 2017, which will be held in Manchester. André suggested that I should decide this time. We’ll be staying a wheelchair accessible (the room is slightly bigger :P) room with Easyhotel. It’s 184 GBP for 5 nights and NOT close to the venue (but not bad via public transport). Easyhotel works like a budget airline. You’ll have to pay more for WiFi, cleaning, breakfast, a remote, etc. I ignored all of these essential things which means André has to do without that as well. The paid WiFi might even be iffy, so rather use my mobile data, plus per half June that shouldn’t cost anything extra thanks to new EU regulations. Before GUADEC I might switch to another mobile phone company to get 4-5GB/month for 18 EUR/month. André will probably want to work remotely. Let’s see closer to the date what’s a good solution (share my data?).

Flight wise for me Easyjet is cheapest (70 EUR) and it’s the fastest method. Funny to combine Easyjet with Easyhotel. I usually use a combination of Google flights and Skyscanner to see the cheapest options. However, rome2rio works as well. The latter will also check alternative methods to get to Manchester, e.g. via Liverpool and so on. For Skyscanner, somehow the Dutch version often gives me cheaper options than Skyscanner in other languages. Google flights usually is much more expensive. I only use Google flights to determine the cheapest days, then switch to Skyscanner to get the lowest price.

 

Window Managers under Wayland: libweston

One of the criticisms towards Wayland is the lack of a Window Manager concept. This to have an option of a different window manager behaviour/experience without needing to write a whole compositor as well. On LWN, daniels confirmed that it’ll become easier with time thanks to libweston.

Quoting daniels (first line/paragraph he’s quoting me):

> Not exactly sure what this allows, but I assume that most of the compositor logic is in this libweston, thereby reducing the complexity creating a different Wayland compositor.

Correct. The idea is to let people write window managers and desktop environments without having to worry about the details of DRM/KMS/GBM, EGL, dmabuf, the Wayland protocol itself, and whatever other plumbing. It’s not there yet, but hopefully in the next year or so it’ll become a really solid viable alternative.

Secret santa: GNOME

With a group of colleagues we held a secret santa. One of the rules specified to only list hobbies and likes; specific gift requests weren’t allowed. I wrote down: GNOME, Salsa, purple and travel. I assumed this list would be entirely useless and I’d rather have santa use their imagination. The picture explains all:

A pink GNOMEThe secret santa even included a poem with the request to send pictures of me and the gnome during my travels. Anyone remember the traveling gnome that we used to see on Planet GNOME?

Apparently Googling ‘GNOME’ doesn’t really explain what is meant with ‘GNOME’ :-P Aside from above gnome I also got a ‘The best places to be today’ from Lonely Planet!! Also, look carefully at the picture.

GUADEC 2016

I’m going to GUADEC 2016 Karlsruhe, Germany

I’ve arranged pretty much everything for Karlsruhe. Meaning: transportation (train) and the hotel. According to the feedback I received, the public transport will be pretty terrible during the conference. So make sure to get a hotel nearby. The one I chose (Leonardo Hotel) is about 20 minutes walking. Make sure to read the reviews of this hotel. The closest hotel will be Achat and the GUADEC website should soon have a discount code for that. Achat with discount is still more expensive than Leonardo; though Achat should be worth it.

Aside from the likely non-working (UPDATE/correction: mostly working except maybe 1 tram line) public transport, they’ll also have bikes for around 1 EUR/30 minutes. So that’s probably what I’ll use to get around. The bikes likely require a data connection to rent.

To get there I’ll go by train; seemed like the best option (100 EUR round trip for about 6 hours one way). Coach would take 8+ hours and cost at least 100 EUR. Anyone looking into doing the same I recommend booking asap, trains are getting more expensive. I gambled on not paying the additional 8 EUR to reserve a seat on the high speed train part. Let’s see if that was a wise choice :P Still remember the time I reserved and the train was pretty much empty, as well as the time I did not and I had to change seats multiple times!

User conference

In case you use GNOME, the GUADEC conference is also for users. In case you’re wondering if you’ll fit in: Everyone is usually super friendly. First year you go you go to see talks and maybe a few drinks (alcohol is optional). Second year you talk more with the people you met from last year. Third year onward the talks are an excuse to go and the only talks you see are the ones where the speakers asked you to please attend :P

Post-FOSDEM+DevConf.cz plans I’ll never get to

Attending conferences is a good way to get some excitement into helping out. Lots of people trying to improve and make things better. I attended FOSDEM (6000 people) and DevConf.cz (1600 people). As usual, I’ve had various ideas:

  1. Create an imperfect way to automatically create tarballs:
    Over the various years people often asked “why do we still use tarballs”? But moving away from tarballs is not easy so I don’t want to handle that. Instead, I want to take a small part of the idea and get that working. This to save time for maintainers as well as shortening the time needed to make a GNOME release.

    • Make use of build.gnome.org
      Actually have no idea how build.gnome.org works
    • Perform various sanity checks and bail out if something is wrong or not as expected (“make distcheck”)
    • Do NOT try to handle everything
      Not everything is on build.gnome.org; not every branch might be on there. Too bad!
    • Do try to encourage rewarding a proper module (e.g. be a bit strict in the requirements so that those modules get benefits such as automated releases)
    • Find a way to handle NEWS
      We’ll probably want to generate those from commit messages. E.g. NEWS: bla bla bla
    • Probably need to define an expected workflow
  2. Create an extension for having points on Bugzilla
    We used to have this ages ago. Each time I work on Bugzilla I find various gaps. Either bugs, lack of API, etc. I think this might require an major version upgrade of GNOME Bugzilla else I’d need to apply too many workarounds. Still, points have often been requested and it would really help not only GNOME but also Mageia.
  3. Do minimal amount of work to speed up downstream development
    Example: help out Tails and maybe promote them a bit. They requested a keyword on Bugzilla. Super easy to add. Asked them if anything else might be nice but apparently there’s not much.
    Related: for many years I was planning to see how GNOME would be easier to work with. Find the things which might be easy to change and really help someone else.

Very likely I’ll not get to actually doing any of above. It would be nice though!

Perfect storm: GTK+3.x behaviour under KDE and Firefox’s move to GTK+3.x

Introduction

At Mageia, various people suddenly started complaining about the scrollbar behaviour of GTK+3.x. Not always in the most constructive manner. One example:

“GTK+3 is the way of the future and all you luddites had better fall in line sooner if not later”

The reason was two fold. For one, Mageia could not use oxygen-gtk anymore. Oxygen-gtk played an important part in ensuring GTK+ not only looked but also behaved like Qt. The second big reason was the Firefox package being compiled with GTK+3.x support instead of GTK+2.x.

Loads of people use Firefox. These people don’t like their Firefox behaving different from what they’re used to and expect.

Already lots of moons ago people complained about the different behaviour of toolkits. One of the solutions is xsettings; a way to inform a toolkit at runtime regarding about settings such as (quoting): “double click timeout, drag-and-drop threshold, and default foreground and background colors for all applications running within a desktop”. Checking the xsettings spec git log this standard was created around 2001!

The solution seems obvious: Ensure the right xsetting is set. In practice there were some difficulties:

  1. The KDE xsettings manager was unmaintained for ~3 years
  2. There wasn’t any xsetting for this in gtk+
  3. GNOME bug 688524: Expose gtk-primary-button-warps-slider as an X setting was marked as WONTFIX

Road towards fixing the behaviour

First up was getting commit access to xsettings-kde. This was initially written by various Mageia people using the example code included in the xsettings spec. Unfortunately it seems the maintenance more or less died as soon as it was moved to KDE. One of the listed maintainers is Colin Guthrie; the same Mageia person whom I always pester for getting fixes for things I don’t understand. Furthermore, I recently helped out Ben Cooksley (KDE sysadmin) by fixing a GNOME mailserver misconfiguration which caused problems for KDE. Surely us finally (configuration was there for years) not causing problems for KDE anymore was worth KDE commit access right?
A few days after requesting access it was the same Ben Cooksley who setup the account! Though probably not a good idea to follow the same path if you want KDE commit access. :-P

Next up: the gtk+ xsetting. At the time of requesting xsettings-kde access, I didn’t know that gtk+ lacked the xsetting to control the scrollbar behaviour. Reading the related bug it was pretty clear the WONTFIX was not so much about the xsetting itself: The bug wanted an xsetting which was controlled by gsettings. Having an xsetting in gsettings is pretty much over the top. We already have an ini file (applies to everything), xsetting manager/client, xsetting overrides key in gnome-settings-daemon, etc. A gsetting changing an xsetting? This resulted in the WONTFIX. Matthias Clasen was worried if KDE would actually use the xsetting. Quite nice to explain that I got KDE commit access specifically to improve xsettings-kde (+ok from Colin Guthrie). This resulted in an “ok to reopen”. The xsettings patch was outdated plus I didn’t like the chosen xsettings name, so I spend 5 minutes writing a new one. Most of those 5 minutes I spent on aligning my commit message with previous ones as well as figuring out the nicest place to put the one liner change.

Lastly: Patching it back into the existing Mageia packages. I then discovered I made a typo in the xsettings-kde patch. Ugh.

Response from users

<R> is the firefox misbehaviour under gtk3 on cauldron fixed now?
<M> yes, the scrollbar works fine, now

Also seems quite telling people are trying this out within 1 hour of me updating the packages!

The patches

For any distribution wanting these fixes as well. The easily backportable patches:

I’m going to send above information to the GNOME distributor mailing list with the request to forward it. Any GNOME packager should subscribe themselves to this mailing list!

Other desktops

Other desktop environments should determine for themselves if they want to change GTK+ behaviour. Any Qt using distribution should make use of xsettings-kde. If a desktop environment (e.g. MATE) is maintaining a gnome-settings-daemon fork, one way would be to change the ‘fixed_entries’ variable in plugins/xsettings/gsd-xsettings-manager.c. If the desktop uses a custom GTK+ theme, another solution would be to store a settings.ini in the theme directory next to the gtk.css file. I’ve suggested to the Mageia MATE packager to reach out to MATE.

Future

Various other xsettings which might make sense to set under KDE. There’s some backlog in the xsettings-kde maintenance which needs to be done. For the backlog I probably need to find some assistance (I’m not a C developer). I need to check if there are outstanding bugs and where they are.

My intention is that GTK+ under other desktop environments at most is considered different. GTK+ should not be out of place (or worse).

Hardware accelerated video playing with Totem

Introduction

Various months ago I had hardware problems. To debug this and because I wanted a small server I bought an Intel NUC5PPYH. It’s a really small low power PC. Using this I discovered that my hardware troubles weren’t related to my SSD. Since that time I’ve been using the NUC as my main machine. My previous machine had upgraded parts, but GPU/motherboard and memory all were from around 2007. A slow low power 2015 NUC is somewhat in the same performance range as that 2007 machine (50% slower in some things, faster in others) while using way less power. My previous machine had 2 cores, the new one has 4.

My previous machine already had difficulty with some of the super high quality videos. Depending on the settings, some videos can use a very high amount of CPU. The CPU of the NUC is slightly slower to play videos.

Initially the various GNOME video playing bits crashed when trying to play video. Those crasher bugs got fixed, but Totem never properly played anything. I quickly discovered that mpv didn’t have any problem with hardware accelerated video playing, so used that and stopped filing bugs.

It helped me to improve the Mageia mpv package. Ensuring it had an OSD, was compiled with vaapi support, etc. Then recently gstreamer-vaapi 0.7.0 was released and gave me the idea to try Totem again. I’m guessing that change made things work, though not exactly sure.

Hardware accelerated video playing

Two frames from Tears of Steel showing Koen Martens, GUADEC 2010 organizer (together with Vincent and Reinout). First screenshot shows Totem with 6-7% CPU usage. The second shows MPV with 3-4% CPU usage. System Monitor itself uses around 20% CPU. Now that it works nicely, I’m working on having Mageia 6 automatically install VAAPI for you if your system has a similar GPU as mine.

Playing 1080p movie using Totem with 6-7% CPU usage
Tears of Steel using Totem – 6-7% CPU
Playing 1080p movie using mpv with 3-4% CPU
Tears of Steel using MPV – 3-4% CPU

Secret bonus: Polari

If you look at the CPU usage, you’ll not spot something. I’m also running Polari on a different workspace. It previously used 10-20% even when idle. I filed a bug but the developer couldn’t reproduce. Now I cannot reproduce as well — 0% CPU!! :-D