December 01, 2015

Ubuntu font 0.84

Lubuntu Blog

The guys from Design Canonical team have been busy these days, upgrading our desktop font to cover more alphabets, completing the Unicode sets for Hebrew, Arabic and Cyrillic. This change will arrive with Lubuntu 16.04, but we can get this updated font now, version 0.84, just downloading the package and uncompressing it in the ~/.fonts […]
on December 01, 2015 11:26 AM

My monthly report covers a large part of what I have been doing in the free software world. I write it for my donators (thanks to them!) but also for the wider Debian community because it can give ideas to newcomers and it’s one of the best ways to find volunteers to work with me on projects that matter to me.

Debian LTS

This month I have been paid to work 21.25 hours on Debian LTS. During this time I worked on the following things:

  • From November 2nd to November 8th, I was handling the LTS frontdesk, triaging new CVE, filing bugs, and ensuring timely answers on the mailing list. I pushed 26 commits to the security tracker. While investigating CVE-2015-7183 I discovered more embedded copies of nspr (which resulted in #804058). I also commented on the upstream fix for CVE-2015-5602 which looked like insufficient.
  • Prepared and released DLA-339-1 on libhtml-scrubber-perl fixing one CVE.
  • Prepared and released DLA-350-1 on eglibc with a non-trivial backport fixing one CVE.
  • Prepared and released DLA-353-1 on imagemagick fixing two security issues without CVE yet (and marking one as not-affecting squeeze).
  • Added a third patch after review by the upstream author on my still pending bouncycastle update. The upstream author asked me to further defer the update as they have some related fixes coming up.
  • I did preparatory work for DLA-352-1 by identifying the upstream commits that fixed the security issue.
  • I spent some time checking issues that have been assigned for a long time without any visible progress being made in the hope to unblock them (libvncserver, pound, quassel).

The Debian Administrator’s Handbook

Now that the English version has been finalized for Debian 8 Jessie (I uploaded the package to Debian Unstable), I concentrated my efforts on the French version. The book has been fully translated and we’re now finalizing the print version that Eyrolles will again edit.

Paris Open Source Summit

On November 18th and 19th, I was in Paris for the Paris Open Source Summit. I helped to hold a booth for Debian France during two days (with the help of François and several others).

François Vuillemin, Juliette Belin and Raphaël HertzogFrançois Vuillemin, Juliette Belin and Raphaël Hertzog

On the booth, we had the visit of Juliette Belin who created the theme and the artwork of Debian 8 Jessie. We lacked goodies but we organized a lottery to win 12 copies of my French book.

Debian packaging work

Django. After two weeks of preparation for revers dependencies, I uploaded Django 1.8 to unstable and raised the severity of remaining bugs. Later I uploaded a new upstream point release (1.8.6). I also handled a release critical bug first by opening a ticket upstream and then by writing a patch and submitting it upstream. I uploaded 1.8.7-2 to Debian with my patch.

I also submittted another small fix which has been rejected because the manual page is generated via Sphinx and I thus had to file a bug against Sphinx (which I did). A work-around has been found in the mean time.

apt-xapian-index NMU. A long time ago, I filed a release critical bug against that package (#793681) but the maintainer did not handle it. Fortunately Sven Joachim prepared an NMU and I just uploaded his work. This resulted in another problem due bash-completion changes that Sven promptly fixed and I uploaded a second NMU a few days later.

Gnome-shell-timer. I forwarded #805347 to gnome-shell-timer issue #29 but gnome-shell-timer is abandoned upstream. On a suggestion of Paul Wise, I tried to get this nice extension integrated into gnome-shell-extensions but the request has been turned down. Is there anyone with javascript skills who would like to adopt this project as an upstream developer? It’s a low maintenance project with a decent and loyal user base.

Misc. I fixed bug #804763 in zim which was the result of a bad Debian-specific patch.
I sponsored pylint-plugin-utils_0.2.3-2.dsc for Joseph Herlant to fix a release critical bug. I filed 806237 against lintian. I filed more tickets upstream, related to my Kali packaging work: one against sddm, one against john

Other Debian-related work

Distro-Tracker. I finally merged the work of Orestis Ioannou on bug #756766 which added the possibility to browse old news of each package.

Debian Installer. I implemented two small features that we wanted in Kali: I fixed #647405 to have a way to disable “deb-src” lines in generated sources.list files. I also filed #805291 to see how to allow kernel command line preseeding to override initrd preseeding… the fix is trivial and it works in Kali. I just have to commit it in Debian, I was hoping to get an ack from someone in charge before doing it.


See you next month for a new summary of my activities.

No comment | Liked this article? Click here. | My blog is Flattr-enabled.

on December 01, 2015 09:00 AM

According to the Solus developers, the operating system received more improvements to the Budgie Next desktop environment, among which we can mention the separation of the notifications and applets, as well as support for customizing the themes, the notification center (Raven), and several other aspects of the Budgie desktop.

“As you can see from the recent video by Ikey, implementation of the design is coming along and work on its functionality will begin soon,” says Josh Strobl. “This new daily features a lot of changes and improvements since Release Candidate 1 and we’d like to highlight some of them below.”

Submitted by: Arnfried Walbrecht

on December 01, 2015 08:59 AM
Big update for this GPS Navigation for Ubuntu Phone :)

uNav for Ubuntu Phone

First, thanks a lot to Joerg Berroth |o/ who deserve all the credits in this version for his improvements with hard and awesome work!


You'll find things like... 
  • History:
History on Search, Favorites and Nearby pages

  • Sort results by distance... and show that distance.
  • New popup for POIs/click on map:
Click on map or POI

  • Map attributions.
  • Show all POIs on map:
Show all POIs on your route
    • A lot of new POIs with a search included.
    • Click on arrive time will switch time to go:

    New improvements
    • Click on distance will show the speed.
    • Allow custom zoom.
    • Integrated headers.
    • No Cancel Route if there is not a route.
    • New Italian & Spanish voices by Silvia Bindelli & Fernando Lanero.
    • Show translators in About page.
    • Updated translations.
    • Another minor fixes.


    Just search uNav into the Ubuntu Store. A rate is preciated :)
    FYI, you'll new to update your phone to OTA8.

    Ubuntu Store


    Look in system updates.

    Enjoy it!

    It's libre, as our your Ubuntu Phone! |o/
    on December 01, 2015 08:34 AM

    November’s reading list

    Canonical Design Team

    Here are the best links shared by the design team in November:

    1. Interview with Darrin Henein
    2. Rapid Prototyping with Gulp, Framer.js and Sketch: Part One
    3. Visualizing Sketch 3.4 New Features
    4. UX Myths
    5. Pantone Smoothies
    6. Shia LaBeouf “Just Do It”
    7. How To Go To Space (with XKCD!)
    8. Astropy: A Community Python Library for Astronomy
    9. Typing “a long time ago in a galaxy far far away” into a Google search
    10. Museum of the World
    11. Big Data or Pokemon?
    12. Listen to Wikipedia
    13. Deja vu

    Thank you to Femma, Jamie, Joe, Karl, Luca, Matthieu, Richard and Stephanie for the links this month!

    on December 01, 2015 08:19 AM

    Recently I started running. I blame Jason Hibbets for this. While at the Community Leadership Summit earlier this year we got chatting about running and through some gentle persuasion he convinced me to give it a shot.

    So I did. Based on Jason’s recommendations I went and bought some running shoes and started using an app called Couch To 5K. The app basically provides a series of workouts that gradually increase in intensity. Each workout involves a mixture of warming up (walking), jogging, brisk walking, and cooling down (walking).

    Things were going well. Surprisingly to myself I was really quite enjoying it (more on this later) and I was sticking to the three workouts each week.

    Then I made a mistake. I decided I was impatient with the app’s growing intensity and I decided to notch it up a bit. I switched the app off and significantly increased my runs, clocking in some much better workouts.

    It felt great but my celebration was short-lived. Knee pain set in. After some research it became clear that the knee pain was because I pushed myself too hard. Many runners warned me of this but I ignored them. Well, I was wrong.

    Fortunately though, the experience of buggering up my knee helped me to learn a lot about running that I wish I knew when I started. Thus, I wanted to share five key learnings here.

    Now, to be clear: I am not a running expert. I am still very much a novice, so some experts may challenge these recommendations, but I welcome all feedback in the comments!

    1. Buy The Right Shoes

    Even in my first conversation with Jason the importance of getting good shoes was emphasized. I presumed though that this was mainly about getting “running shoes” as opposed to bog-standard shoes (sneakers/trainers etc).

    What I didn’t realize was that we all run in slightly different ways and the purpose of a good shoe is to support you to run in the most optimal way.

    As an example, it seems I tend to put a lot of press on the inside of my foot. As such, I need shoes that provide a lot of support on the inside to prevent my knee rotating as much (this was the cause of my knee pain).

    Interestingly, when I went to a running store to buy shoes after my knee injury the chap in there could tell a lot about how I run from the state of my first pair of shoes. They noticeably drooped on one side, showing the impact of my foot on the inside.

    So, don’t just get running shoes, but pay attention to the impact you have on your shoes and use that to make a decision about future shoes too.

    2. Take It Slow

    Again, one thing that was made clear to me when I started was to take it slow. Although I was using Couch to 5K, I didn’t feel like much of a couch potato, so I jacked up my pace to get my heart racing.

    As I mentioned above, this was a mistake.

    Running places quite a bit of stress on different parts of your body. It affects your feet, ankles, knee, quads, hams etc. Part of the reason why Couch To 5K and similar apps go so slowly is to ramp up your body gradually to get used to the impact running has on it.

    As my case demonstrates, if you push yourself too hard you get injured. So, don’t do what I did: take it a step at a time (pun intended).

    3. Stretch

    When I started running my wife told me to stretch when I finished my run. She showed me a few stretches and I did them for a few minutes when I got home.

    When the knee injury set in, I asked one of Erica’s friends, Tabitha, who is a runner, what she thought the problem may be. She asked me to do some simple stretches and it became obvious that my body was…well…not all that stretchy. Tabitha made it clear that I needed to stretch both before and after a run.

    Fortunately there are plenty of videos on YouTube that show you how. Again, I wished I had realized the importance of stretching when I got started.

    4. Strengthen Your Muscles

    On a related note to both taking it slowly and stretching, my interest in running helped to illustrate some basic anatomy and the importance of building strength.

    What became clear to me is that muscles throughout your body play a role on different elements of running. As an example, your quads play an important role in your knee working effectively. If you don’t have strong and stretched quads, it can result in some knee pain.

    As such, I discovered that the actual run is not the only important piece. Stretching before and after and taking time to build strength is important too. Again, there are plenty of videos online that can help with this.

    5. The Runners High

    For quite some time friends of mine who are runners have talked about the runners high. Now, it seems different people have a different idea of what this is, but it is basically a special sense of pleasure when running or afterwards.

    I have to admit, I was a bit cynical about this. I don’t enjoy exercise. I never have. It feels like a neccessary evil I need to do to stay in shape and healthy.

    That changed though. On my first few runs I noticed that I really enjoyed being out of the house and running. I enjoyed the feeling of the wind against my face as I ran. I felt a sense of decompression as the blood flowed and my mind detached from work. I found myself genuinely enjoying the 30 minutes or so that I was out getting started running.

    This sensation continued after the run too, particularly when I was out of the shower and dressed. I felt lighter, more nimble, and a real sense of accomplishment. I am not sure if this is the runners high others get, but it is a great feeling.

    What was really odd was that when I got my knee injury I really started missing getting out there to run. I would have never have imagined I would have felt this way but I love it.

    So, for those of you who have read this far and are not convinced that running might be both good for you and enjoyable, give it a shot. You never know, you might just enjoy it.

    Bonus: Shopping List

    Before I wrap up I thought it might also be handy to share a few handy things I have purchased that can enhance the overall running experience:

    • Compression Underwear – this is important for the gentlemen out there (in much the same way a sports bra is important for the ladies). You just don’t want things bouncing around down there, so get some good compression undies. I have some Asics and Adidas undies.
    • Socks – good sock choice is important. Poor socks can result in blisters so get some runners socks. I use Asics white socks.
    • Belt – I got myself a FlipBelt which is a handy tubular belt you can put your phone, credit card, and ID into. It saves you having to carry them separately or have bulky pockets.
    • Bluetooth Headphones – I tend to listen to music sometimes when I run and sometimes I listen to audio books. I tried wired headphones on my first run and they kept falling out of my ears. So, I picked up a MPow Cheetah headset which I love. It pairs with my phone easily and sounds great.
    • Water Bottle – I didn’t buy anything fancy – just a cheap plastic bottle I picked up at a conference. I shove a little ice in there on a hot day and it works fine.

    Anyway, I think that is about it. Be sure to share your additional running tips or questions in the comments!

    on December 01, 2015 07:04 AM

    Welcome to the Ubuntu Weekly Newsletter. This is issue #444 for the week November 23 – 29, 2015, and the full version is available here.

    In this issue we cover:

    The issue of The Ubuntu Weekly Newsletter is brought to you by:

    • Elizabeth K. Joseph
    • Paul White
    • Vishnu Narayanan
    • Simon Quigley (tsimonq2)
    • Jim Connett
    • And many others

    If you have a story idea for the Weekly Newsletter, join the Ubuntu News Team mailing list and submit it. Ideas can also be added to the wiki!

    Except where otherwise noted, content in this issue is licensed under a Creative Commons Attribution 3.0 License BY SA Creative Commons License

    on December 01, 2015 01:15 AM

    November 30, 2015

    The Tuesday following Cyber Monday has been designated Giving Tuesday. Whether you observe charitable giving on that day or any other day of the year, the following are organizations I’ve worked with and/or given to that promote one of my own passions: putting Free/Open Source Software into schools and others in need.


    I’ve been on the Board of Directors for Partimus for the past 5 years. In that time we’ve done projects in public charter schools, after school programs and a library. This year our focus has been work at a homeless shelter in San Francisco. See an interview with Elizabeth Pocock, our on site contact responsible for the oversight of the Partimus computer pilot project here.

    This is also the non-profit that gets a donation from Boutique Academia for sales of the Ubuntu necklaces and earrings. So purchase a shiny gift for someone this holiday and help out Partimus too!

    Partimus is based in the San Francisco Bay Area. We’re also always looking for volunteers, so if you’re familiar with Ubuntu (or Linux in general) and are looking for a way to give back, please contact me at We’re especially looking for technical talent to help us organize and deliver on some of our technical goals, like creating custom ISOs for our schools and developing solutions to make it easier to deploy them and keep them updated (PXE boot servers, local proxies, etc). You can also hop on our tech-partimus mailing list and browse our archives if you’re interested.

    Giving Tuesday post: On Giving Tuesday, help us give computers to low income shelters

    Donate here.

    Computer Reach

    Based in Pittsburgh, Pennsylvania, Computer Reach not only does work in their region, but has deployed Ubuntu-based computers all over the world. This is the organization I went to Ghana with in 2012. Their counts page details the Linux and Mac computers provided to organizations worldwide.

    Giving Tuesday post: #GivingTuesday

    Donate here.


    Based in Austin, Texas, I Reglue met founder Ken Starks several years ago at a conference and his work has always been an inspiration for Partimus. They recently completed a successful Indiegogo campaign to continue their work, but like all of our non-profits they can always use more funding to focus on their core efforts.

    See sidebar on the main site to donate, they also accept hardware donations.

    And Beyond

    This is just a sampling of organizations doing this work. If you want to donate or work locally, I strongly encourage looking in your area for computer recycling programs using Linux, for both donation and volunteer opportunities.

    on November 30, 2015 11:21 PM

    The Maker’s Guide to the Zombie Apocalypse is a fun book. It uses a (fictional?) story of preparation for a coming zombie invasion to weave a narrative that presents a use case for an interesting set of electronic projects. The projects are all centered on survival; specifically, the things you are likely to find most useful in a situation where the electrical grid has failed and you find yourself surrounded by hostile forces. The progression of chapter topics is logical and each build upon the previous.

    We start with a both fun and well-thought-out description of the problem, an overview of what a zombie apocalypse might look like. Here we learn what we are up against. Starting with chapter two, we work to mitigate against the various problems and threats to enhance our potential for survival.

    Included topics include generating and storing electricity, building alarms and surveillance monitors, remote access and open door detection, environmental monitoring, and then wiring it all together into a control center. Additional topics include ways to distract the attention of zombies and different forms of confusion with other survivors.

    This alone would make the book enjoyable and useful to anyone interested in these sorts of electronic projects. However, the book does not end here. Included are three useful appendices with information about acquiring and understanding electronic parts and tools, learning basic skills, and a primer on one of the two control modules used in projects in the book, the Arduino. The other, the Raspberry Pi, is less complicated and requires less instruction for the uses in this book.

    I thoroughly enjoyed this book and think that anyone with similar interest in electronics would, too.

    Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

    on November 30, 2015 03:20 PM

    Marco has come over to the Netherlands to pay me a visit, and to hack a little bit together, in person. So with the weather clearly suggesting to stay inside, that’s what we did over the weekend, and how better to entertain yourself than to work on mobile software?

    Marco has been working for a while on components that follow Plasma’s human interface guidelines and make it easy to implement applications with a common navigation pattern and look and feel. Obviously, these components use a lot of Plasma under the hood, so they get excellent integration at a visual and at a technical level. This high integration, however, comes at the price of having a non-trivial chain of dependencies. That’s not a problem in Plasma Mobile, or other Plasma workspaces, since all that is already there, anyway.
    We thought that an interesting exercise would be to find out what really defines a “Plasma application”, and how we can make the concepts we engrained in their design available to application developers more easily. How hard could it be to use Plasma components in an Android app, for example? The answer is, not entirely trivial, but it just became a whole lot easier. So what did we do?

    For those reading this article via a feed aggregator, hop over to youtube to watch the demo video.
    We took Subsurface, which is a piece of Free software used for logging and analysing scuba dives. Subsurface has a mobile version, which is still in its infancy, so it’s an excellent candidate to experiment with. We also took Marco’s set of Plasma components that provide a reduced set of functionality, in fact, just enough to create what most applications will need. These components extend QtQuick components where we found them lacking. They’re very light weight, carry no dependencies other than QtQuick, and they’re entirely written in QML, so basically, you add a bunch of QML files to your app and concentrate on what makes your app great, not on overall navigation components or re-implementing for the n-th time a set of widgets.

    So after solving some deployment issues, on Saturday night, we had the Plasma mobile components loading in an Android app. A first success. Running the app did show a number of problems, however, so we spent most of the Sunday to look into each problem one by one and trying to solve them. By early Monday morning, we had all of the glaring issues we found during our testing solved, and we got Subsurface mobile to a pretty solid appearance (pretty solid given its early state of development, not bug free by any means).

    So, what to take a away from this? In a reduced form, Plasma can be a huge help to create also Android applications. The mobile components which we’re developing with Plasma Mobile as target in mind have had their first real world exposure and a lot of fixes, we got very useful feedback from the Subsurface community which we’re directly feeding back into our components.

    A big thanks goes out to the Subsurface team and especially Dirk Hohndel for giving us excellent and timely feedback, for being open to our ideas and for willing to play guinea pig for the Plasma HIG and our components. The state you can see in the above video has already been reviewed and merged into Subsurface’s master tree, so divers around the world will be able to enjoy it when the app becomes available for a wider audience.

    on November 30, 2015 02:09 PM

    Sabayon Linux 15.12 is an operating system designed for Linux enthusiasts who want the latest packages and the best performance. This is a system based on Gentoo, which is known for its reliability.

    Let’s face it, there aren’t too many Gentoo-based operating systems out there, but Sabayon is proof that you can also use other bases than some of the big names like Debian, Fedora or Arch. It employs a rolling release model, which means that changes and improvement are pushed on a constant basis, and each month the ISO is regenerated with the latest packages.

    Sabayon is also a system that provides the newest packages from the Gentoo repositories, making sure that it stays up to date. This way, users have the latest KDE, GNOME, or LibreOffice software. This makes Sabayon one of the few bleeding-edge Linux distributions that put emphasis on new and interesting rather than old and stable.

    Submitted by: Arnfried Walbrecht

    on November 30, 2015 09:23 AM
    A lot of web services use the JSON format. If you are working a GLib based project and need to access a service like this there are two great libraries to help you - libsoup and JSON-Glib.

    For my example, I'm going to grab some review data from Ubuntu (API) which looks something like this:

            "ratings_total": 229,
            "ratings_average": "3.84",
            "app_name": "",
            "package_name": "simple-scan",
            "histogram": "[35, 13, 22, 42, 117]"
            "ratings_total": 546,
            "ratings_average": "4.66",
            "app_name": "",
            "package_name": "audacity",
            "histogram": "[17, 7, 17, 63, 442]"


    The data is a single array of objects that contain the statistics for each package. For this example I'll print out the number of ratings for each package by getting the package_name and ratings_total members from each object.

    Firstly, I need to download the data. The data is retrieved using a HTTP GET request; in libsoup you can do this with:

        SoupSession *session = soup_session_new_with_options (SOUP_SESSION_USER_AGENT, "test-json", NULL);
        SoupMessage *message = soup_message_new (SOUP_METHOD_GET, "");

        soup_session_send_message (session, message);

    Now I have the server text in message->response_body->data but it needs to be decoded. JSON-GLib can parse it with:

        JsonParser *parser = json_parser_new ();
        json_parser_load_from_data (parser, message->response_body->data, -1, NULL);
        JsonNode *root = json_parser_get_root (parser);

    Now I have an in-memory tree of the JSON data which can be traversed. After checking the root node is an array as expected I'll iterate over each object:

        g_assert (JSON_NODE_HOLDS_ARRAY (root));
        array = json_node_get_array (root);
        for (i = 0; i < json_array_get_length (array); i++)
            JsonNode *node = json_array_get_element (array, i);

            /* do stuff... */

    For each object, I extract the required data:

            g_assert (JSON_NODE_HOLDS_OBJECT (node));
            JsonObject *object = json_node_get_object (node);
            const gchar *package_name = json_object_get_string_member (object, "package_name");
            gint64 ratings_total = json_object_get_int_member (object, "ratings_total");
            if (package_name)
                g_print ("%s: %" G_GUINT64_FORMAT "\n", package_name,

    Combined into a program, I can print out the number of reviews for each package:

    simple-scan: 229
    audacity: 546

    The full program:

    // gcc -g -Wall example-json.c -o example-json `pkg-config --cflags --libs libsoup-2.4 json-glib-1.0`


    int main (int argc, char **argv)
        SoupSession *session;
        SoupMessage *message;
        guint status_code;
        JsonParser *parser;
        gboolean result;
        JsonNode *root;
        JsonArray *array;
        gint i;

        /* Get the data using a HTTP GET */
        session = soup_session_new_with_options (SOUP_SESSION_USER_AGENT, "test-json", NULL);
        message = soup_message_new (SOUP_METHOD_GET, "");
        g_assert (message != NULL);
        status_code = soup_session_send_message (session, message);
        g_assert (status_code == SOUP_STATUS_OK);

        /* Parse the data in JSON format */
        parser = json_parser_new ();
        result = json_parser_load_from_data (parser, message->response_body->data, -1, NULL);
        g_assert (result);

        /* The data should contain an array of JSON objects */
        root = json_parser_get_root (parser);
        g_assert (JSON_NODE_HOLDS_ARRAY (root));
        array = json_node_get_array (root);
        for (i = 0; i < json_array_get_length (array); i++)
            JsonNode *node;
            JsonObject *object;
            const gchar *package_name;
            gint64 ratings_total;

            /* Get the nth object, skipping unexpected elements */
            node = json_array_get_element (array, i);
            if (!JSON_NODE_HOLDS_OBJECT (node))

            /* Get the package name and number of ratings from the object - skip if has no name */
            object = json_node_get_object (node);
            package_name = json_object_get_string_member (object, "package_name");
            ratings_total = json_object_get_int_member (object, "ratings_total");
            if (package_name)
                g_print ("%s: %" G_GINT64_FORMAT "\n", package_name, ratings_total);

        /* Clean up */
        g_object_unref (session); 
        g_object_unref (message);
        g_object_unref (parser);

        return 0;

    And to show you can do the same thing with GIR bindings, here's the same in Vala:

    // valac example-json.vala --pkg soup-2.4 --pkg json-glib-1.0

    public int main (string[] args)
        /* Get the data using a HTTP GET */
        var session = new Soup.Session.with_options (Soup.SESSION_USER_AGENT, "test-json");
        var message = new Soup.Message ("GET", "");
        assert (message != null);
        var status_code = session.send_message (message);
        assert (status_code == Soup.Status.OK);

        /* Parse the data in JSON format */
        var parser = new Json.Parser ();
            parser.load_from_data ((string);
        catch (Error e)

        /* The data should contain an array of JSON objects */
        var root = parser.get_root ();
        assert (root.get_node_type () == Json.NodeType.ARRAY);
        var array = root.get_array ();
        for (var i = 0; i
            /* Get the nth object, skipping unexpected elements */
            var node = array.get_element (i);
            if (node.get_node_type () != Json.NodeType.OBJECT)

            /* Get the package name and number of ratings from the object - skip if has no name */
            var object = node.get_object ();
            var package_name = object.get_string_member ("package_name");
            var ratings_total = object.get_int_member ("ratings_total");
            if (package_name != null)
                stdout.printf ("%s: %" + int64.FORMAT + "\n", package_name, ratings_total);

        return 0;

    and Python:


    from gi.repository import Soup
    from gi.repository import Json

    # Get the data using a HTTP GET
    session = ()
    session.set_property (Soup.SESSION_USER_AGENT, "test-json")
    message = ("GET", "")
    assert (message != None)
    status_code = session.send_message (message)
    assert (status_code == Soup.Status.OK)

    # Parse the data in JSON format
    parser = Json.Parser ()
    parser.load_from_data (, -1)

    # The data should contain an array of JSON objects
    root = parser.get_root ()
    assert (root.get_node_type () == Json.NodeType.ARRAY)
    array = root.get_array ()
    for i in xrange (array.get_length ()):
        # Get the nth object, skipping unexpected elements
        node = array.get_element (i)
        if node.get_node_type () != Json.NodeType.OBJECT:

        # Get the package name and number of ratings from the object - skip if has no name
        object = node.get_object ()
        package_name = object.get_string_member ("package_name")
        ratings_total = object.get_int_member ("ratings_total")
        if package_name != None:
            print ("%s: %d" % (package_name, ratings_total))

    on November 30, 2015 07:55 AM

    November 29, 2015

    Viernes, 27 Noviembre

    Llevaba tiempo con ganas de ir a la Ubucon de París, una de las más famosas :) Además, para esta se animó Fernando Lanero :D así que será nuestra segunda Ubucon (¡qué recuerdos de Colombia!).

    Are you ready?

    Tras el vuelo y trenes de rigor, dejamos las cosas en el hotel y nos dirigímos al bar donde habían quedado algunos organizadores, después de montar todo el chiringuito para los próximos dos días.

    Ahí tuvimos la suerte de compartir unas pizzas y cervezas con parte de Ubuntu Francia; Olivier nos convenció de por qué el Lenovo X201 es el mejor portátil (¡quiero uno! ;P) y convencimos a Matthieu de que se quedara más tiempo gracias al líquido ambar ;P Llevaba mucho tiempo con ganas de conocer a Rudy, en persona se confirmó que es un hombre excepcional.




    En la noche, el frío y la lluvia nos acompañó hasta el hotel.

    Sábado, 28 Noviembre

    ¡Primer día de Ubucon! Nos levantamos temprano para estar a primera hora en el edificio de la Ciudad de las Ciencias.

    Allí estaba Vincent :)) ¡Qué alegría verle! Pues no coincidíamos desde el evento de Insiders en Londres. También conocí a Simon, David Callé y Nicolas, quedría haber podido compartir más tiempo con ellos :)




    ¿Y qué decir de la Ubucon? ¡Impresionante! Nos sentimos como en casa, su hospitalidad fue extraordinaria. La organización perfecta, el sitio genial, las conferencias y talleres muy interesantes y atiborrados de gente.












    Me pasé el día de conferencia en conferencia, paseando por la zona de asociaciones como Mozilla, Wikipedia o Framasoft donde conocí a Genma, quien transmite muchísima pasión hablando de la libertad.También ví por primera vez la convergencia de Ubuntu :D Y os aseguro que es una pasada :D
    Desde aquí quiero agradecer a Francis, muy majo, su ayuda con la traducción de mi charla.

    El día se me pasó volando, tanto, que cuando me dí cuenta, estabamos en el bar para cenar juntos 46 compañeros ubunteros, sí, 46 :O nos adueñamos del bar :P Ahí conocí a Quest, quien graba los podcast de Ubuntu France.


    La velada la finalizamos en otro bar, compartiendo ídeas para solucionar el mundo :)

    Domingo, 29 Noviembre

    ¡Y segundo día de la Ubucon! O más bien, nuestro segundo medio día, pues el vuelo sale por la tarde. Aún así, dió tiempo a ver un par de conferencias y volver a sorprendernos de la cantidad de personas que asisten a interesarse por Ubuntu. Y además Matthieu nos enseñó los talleres de Fablab, uf, ahí podríamos pasar días enteros, una pasada.


    Con más tiempo, experimenté más con el ordenador de exposición que muestra la convergencia y pude probar uNav en modo escritorio :P


    Asistir a una Ubucon es una experiencia única y totalmente recomendable. Vuelvo con muchos amigos nuevos.
    Espero veros pronto compañeros |o/

    and future :)
    Lovely game and guy!

    Awesome Ubucon!
    Tienes más fotos de Ubuntu-FR aquí.
    on November 29, 2015 10:04 PM

    November 28, 2015

    This week I had a rather frustrating customer experience. Now, in these kinds of situations some folks like to take to their blogs to spew their frustration in the direction of the Internet and feel a sense of catharsis.

    To be honest, what I found frustrating about this experience was less the outcome and more the way the situation was managed. The frustration then turned into an interesting little thought experiment about the psychology going on in this experience and how it could potentially be improved.

    So, I sat down and thought about why the experience was frustrating and came away with some conclusions that I thought might be interesting to share. This may be useful for those of you building your own customer service/engagement departments.

    The Problem

    A while ago I booked some flights to take my family to England for Christmas. Using an airline Erica and I are both big fans of, we managed to book the trip using miles. We had to be a little flexible on dates/times, but we figured this would be worth it to save the $1500+.

    Like anyone picking flights, the times and dates were carefully considered. My parents live up in the north of England and it takes about four hours to get from Heathrow to their house (with a mixture of trains and taxis). Thus we wanted to arrive at Heathrow from San Francisco earlier in the day, and for our return flight to be later in the day to accommodate this four hour trip.

    Recently I was sent an email that the airline had decided to change the times of our flights. More specifically, the return flight which was due to leave at 3.15pm was now shifted to closer to 12pm. As such, to get to Heathrow with the requisite few hours before our flight it would have mean’t us leaving my parents house at around 5am. Ugh.

    Now, to help illustrate the severity of this issue, this would mean getting a 3 year-old up at 4.15am to embark on a four hour journey to London and of course the 11 hour flight back to San Francisco. The early morning would make the whole trip more difficult.

    Expected reaction of Jack when this happens (credit)

    Expected reaction of Jack when this happens (credit)

    As you can imagine, we were not particularly amused by this. So, I went to call the airline to see if we could figure out a better solution.

    The Response

    I called the airline and politely illustrated the problem, complete with all the details of the booking.

    I was then informed that they couldn’t do anything to change the flight time (obviously), and there were no other flights that day (understandable).

    So, I asked if they could simply re-book my family onto the same flight the following day. This would then mean we could head to the airport, stay in a hotel that evening near Heathrow, and make the noon flight…all without having to cut our holiday short by a day.

    I was promptly informed that this was not going to work. The attendant told me that because we had purchased a miles-based ticket, they could only move us to miles-based ticketed seats the following day without a charge. I was also informed that the airline considers anything less than a 5 hour time change to be “insignificant” and thus are not obliged to provide any additional amendments or service. To cap things off I was told that if I had read the Terms Of Service this would have all been abundantly clear.

    To explore all possible options I asked how much the change fees would be to move to the same flight the following day but in non-mileage based seats and the resulting cost was $1500; quite a number to swallow.

    The airline's perception of my house (credit)

    The airline’s perception of my house (credit)

    As I processed this information I was rather annoyed. I booked these tickets in good faith and the airline had put us in this awkward position with the change of times. While I called to explore a flexible solution to the problem, I was instead told there would be no flexibility and that they were only willing to meet their own defined set of obligations.

    As you can imagine, I was not particularly happy with this outcome so I felt it appropriate to escalate. I politely asked to speak to a manager and was informed that the manager would not take my call as this was merely a ticket-related issue. I pressed further to ask to speak to a manager and after a number of additional pushbacks about this not being important enough for a manager and that they may not take my call, I was eventually put through.

    When I spoke to the manager the same response was re-iterated. We finished the conversation and I made it clear I was not frustrated with any of the staff who I spoke to (they were, after all, just doing their job and don’t set airline policy), but I was frustrated with the airline and I would not be doing business with them in future.

    Now to be clear, I am not expecting to be treated like royalty. I just felt the overall situation could have possibly been handled better.

    A Better Experience

    Now, to be clear before we proceed, I am not an expert on customer service, how it is architected, and the methodology of delivering the best customer service while protecting the legal and financial interests of a company.

    I am merely a customer, but I do think there were some underlying principles that exist in people and how we engage around problems such as this that the airline seems to be ignoring.

    Let’s first look at what I think the key problems were in this engagement:

    Accountability and Assurance

    At no point throughout the discussion did one of the customer service reps say:

    “Mr Bacon, we know we have put you in an awkward situation, but we assure you we are going to do our level best to find a solution that you and your family are happy with.”

    A simple acknowledgement such as this serves three purposes. Firstly, it lets the customer feel the company is willing to accept responsibility. Secondly, it demonstrates a collaborative human side to the company. Finally, and as we will explore later, it equalizes the relationship between the customer and the company. This immediately gets the conversation off to a good start.

    Obligations vs. Gestures Of Goodwill

    Imagine your friend does something that puts you in an awkward position, for example, saying they will take care of part of a shared project which they then say they are not going to have time to deliver.

    Now imagine the conversation looks like this:

    You: you have kind of put me in an awkward situation here, friend. What do you think you can do to help resolve it?
    Friend: well, based upon the parameters of the project and our friendship I am only obliged to provide you with a certain level of service, which is X.

    This is not how human beings operate. When there is a sense that a shared agreement has been compromised, it is generally recommended that the person who compromised the agreement will (a) demonstrate a willingness to rectify the situation and (b) provide a sense of priority in doing so.

    When we replace thoughtful problem-solving with “obligations” and “terms of service”, which while legally true and accurate, it changes the nature of the conversation to be one that is more pedantic and potentially adversarial. This is not what anyone wants. It essentially transforms the discussion from a collaboration to a sense that one party is covering their back and wants to put in minimal effort to solve the problem. This neatly leads me to…

    Trust and Favors

    Psychology has taught us that favors play an important role in the world. When we feel someone has treated us well we socially feel a responsibility to repay the favor.

    Consequently in business when you feel a company goes above and beyond, consumers will often repay that generosity significantly.

    In this case the cost to me of reseating my family was $1500. Arguably this will be a lower actual cost to the airline, let’s say $1000.

    Now, let’s say the airline said:

    “Mr Bacon, as I mentioned it is difficult to move you to the seats on the flight the following day as you have a mileage ticket, but I have talked to my manager and we would be happy to provide a 30% discount.”

    If this happened it would demonstrate a number of things. Firstly, the airline was willing to step outside of their published process to solve the customer’s problem. It demonstrates a willingness to find a middle-ground, and it shows that the airline wants to minimize the cost for the customer.

    If this had occurred I would have come away singing the praises of the airline. I would be tweeting about how impressed I was, telling my friends that they are “different to the usual airlines”, and certainly keeping my business with them.

    This is because I would feel that they took care of me and did me a favor. As such, and as we see elsewhere in the world, I would feel an urge to repay that favor, both with advocacy and future business.

    Unfortunately, the actual response of what they are obliged to do and that they are covered by their terms of service shows an unwillingness to work together to find a solution.

    Thus, the optimal solution would cost them a $500 loss but assure future business and customer advocacy. The current solution saves them $500 but means they are less likely to get my future business or advocacy.

    Relativity and Expectations

    People think largely in terms of relativity. We obviously compare products and services but we also compare social constructs and our positions in the world too.

    This is important because a business transaction is often a power struggle. If you think about the most satisfying companies you have purchased a product or service from, invariably the ones where you felt like an equal in the transaction was more rewarding. Compare for example the snooty restaurant waiter that looks down at you versus the chatty and talkative waiter who makes you feel at ease. The latter makes you feel more of an equal and thus feels like a better experience.

    In this case the airline customer service department made it very clear from the outset that they considered themselves in a position of power. The immediate citing of obligations, terms of service, an unwillingness to escalate the call, and other components essentially put the customer in a submissive position, which rarely helps contentious situations.

    The knock-on effect here is expectations: when a customer feels unequal it sets low expectations in the business relationship and we tend to think less highly of the company. The world is littered with examples of this sense of an unequal relationship with many cable companies getting a particularly bad reputation here.

    Choice Architecture

    Another interesting construct in psychology is the importance of choice. Choices provide a fulfilling experience for people and it makes people feel a sense of control and empowerment.

    In this case the airline provided no real choices with the exception of laying down $1500 for full-price tickets for the non-mileage seats. If they had instead provided a few options (e.g. a discounted ticket, an option to adjust the flight time/date, or even choices for speaking to other staff members such as a manager to rectify the situation) the overall experience would feel more rewarding.

    The Optimal Solution

    So, based on all this, how would I have recommended the airline handled this? Well, imagine this conversation (this is somewhat paraphrased to keep it short, but you get the drift):

    Me: Good afternoon. We have a bit of a problem where your airline has changed the time my family’s return flights. Now, we have a 3 year-old on this trip and this is going to result in getting up at 4.15am to make the new time. As you can imagine this is going to be stressful, particularly with such a long trip. Is there anything you can do to help?
    Airline: I am terribly sorry to hear this. Can you let me know your booking ID please?
    Me: Sure, it is ABCDEFG.
    Airline: Thank-you, Mr Bacon. OK, I can see the problem now. Firstly, I want to apologize for this. We know that the times of reservations are important and I am sorry your family are in this position. Unfortunately we had to change the time due to XYZ factors, but I also appreciate you are in an uncomfortable situation. Rest assured I want to do everything to make your trip as comfortable as possible. Would you mind if I put you on hold and explore a few options?
    Me: Sure.
    Airline: OK, Mr Bacon. So the challenge we have is that because you booked a mileage-based ticket, our usual policy is that we can only move you to mileage-based seats. Now, for the day after we sadly don’t have any of these types of seats left. So, we have a few options. Firstly, I could explore a range of flight options across dates that work for you to see if there is something that works by moving the mileage-based seats free of charge. Secondly, we could explore a refund of your miles so you could explore another airline or ticket. Now, there are normal seats available the day after but the fee to switch to them would be around $1500. We do though appreciate you are in an uncomfortable position, particularly with a child, and we also appreciate you are a regular customer due to you booking mileage seats. Unfortunately while I am unable to provide these new seats free of charge…I wish I could but I am unable to…I can provide a discount so we provide a 1/3 off, so you pay $1000. Another option is that I can put you through to my manager if none of these options will work for you. What would you prefer?
    Me: Thanks for the options. I think I will go for the $1000 switch, thanks.
    Airline: Wonderful. Again, Mr Bacon, I apologize for this…I know none of us would want to be in this position, and we appreciate your flexibility in finding a solution.

    If something approximating this outcome occurred, I would have been quite satisfied with the airline, I would have felt empowered, left with a sense that they took care of me, and I would be sharing the story with my friends and colleagues.

    This would have also mitigated taking a manager’s time and reduced the overall call time to around 10 – 15 minutes as opposed to the hour that I was on the phone.

    To put the cherry on top I would then recommend that the airline sends an email a few days later that says something like this:

    Dear Mr Bacon,

    One of my colleagues shared with me the issue you had with your recent booking and the solution that was sourced. I want to also apologize for the change in times (we try to minimize this as best we can because we know how disruptive this can be).

    I just wanted to follow up and let you know that if you have any further issues or questions, please feel free to call me directly. You can just call the customer service line and use extension 1234.

    Kind Regards,

    Jane Bloggs, Customer Service Team Manager

    This would send yet another signal of clear customer care. Also, while I don’t have any data on-hand to prove this, I am sure the actual number of customers that would call Jane would be tiny, thus you get the benefit of the caring email without the further cost of serving the customer.

    Now, some of you may say “well, what if the airline can’t simply slash the cost by a third for the re-seating?”

    In actuality I think the solution in many cases is secondary to the handling of the case. If the airline in this case had demonstrated a similar optimal approach that I outline here (acknowledging the issue, sympathizing with the customer, an eagerness to solve the problem creatively, providing choices etc), yet they could not provide any workable solution, I suspect most people would be reasonably satisfied with the effort.

    Eventually they never solved the problem in our case, so a 4.15am wake-up and a grumpy Jack it is. While rather annoying, in the scheme of things it is manageable. I just thought the psychology behind the story was interesting.

    Anyway, sorry for the long post, but I hope this provides some interesting food for thought for those of you building customer service platforms for your companies.

    on November 28, 2015 10:42 PM

    I just had a shocking experience at a college football game and I feel the need to talk about it because if we don’t talk about these things then we condone them.

    I met Zia Combs today. He played for the University of Michigan as a defensive back. Hailing from MSU I was not familiar with his career. We kind of just do our thing, and move on. He was awesome, he came into the tent talking to people, and his assistant/friend was really great too. I don’t know anything about this guy, so meeting him and knowing he was a thing at the U of M was really neat for me.

    I met him because he stopped by a tailgate that I was invited to by my neighbor since and I had never been to a Michigan tailgate before. Everything was awesome all day; good food, good people, and a general camaraderie around football. I’ve never been to the Big House, and I really wanted to experience the UM tailgate experience. People from Ohio State stopped by and generally it was all around midwestern awesomeness. People laughed and joked about the teams that they were rooting for and I thought that was all a part of the atmosphere.

    Then at some point it got nasty. Ohio State started to win and the “quirky Spartan who is here” turned into “that fucking asshole.” At the third quarter I was asked to leave. Fair enough, you don’t want me here, fine. We got bigger games to win.

    On the way out it felt like I literally walked into an episode of The Walking Dead. I walk out of the golf field area where the tailgate was and some kid is in the middle of the field surrounded by U-M fans. He’s clearly young and wasted in his OSU sweatshirt. He’s surrounded by Wolverines, and they’re not being friendly whatsoever. WTF am I supposed to do, he’s outmatched and people were looking like they were pissed. I have no idea why.

    So clearly I’m like “Well, welcome to the Big House, I’ve been here all morning and everything was fine, and I just got kicked out of a tailgate because ____.”

    Ends up it was not fine and I recognize Vincent Smith and his friend around the kid. So I walk up because I knew he saw me from earlier that morning. And he’s like “You better get this kid out of here.” People were literally standing around this kid about to beat him. I have no idea what this kid did to get himself into that kind of situation, and I’m sure he was annoying as hell in his OSU sweatshirt, but that’s beside the point. I took it upon myself to take him across the street and found an aid station and dropped him off.

    This bothers me for a few reasons:

    • In the US we’re very competitive, ribbing someone for sports is totally fine. It becomes totally not fine when people take it outside of bounds. There’s a difference between friendly rivalries and being an asshole. It doesn’t matter if OSU or U-M wins; as a Spartan, the entire outcome doesn’t affect me at all.
    • Zia Combs is awesome. Never really knew the guy but from talking to him and his friends, he’s a class act all the way. I have no idea why U-M people wanted to beat the shit out of that kid, but he defused the situation and he was a geniunenly nice guy.
    • I met a bunch of amazing fans today and they were great, and my experience was ruined by a loud minority of douchebags.

    Overall, I am not impressed with my first experience tailgating at a University of Michigan football game. I respect what Jim Harbaugh has brought to the program, but from my experience today, you are still arrogant, entitled douchebags. It saddens me that my first experience at the Big House is watching Zia Combs stick up for some random kid being bullied.

    42-13. Ohio State.

    EDIT: My original comment said “beat him to death”. I don’t feel at any point that was going to happen. In hindsight that is way too hyperbolic. I have corrected my comment.

    EDIT: My original post mentioned Vincent Smith as the U-M player; I was incorrect, it was Zia Combs.

    on November 28, 2015 09:48 PM

    In many travel-related web sites for airlines and hotels, there is some attempt to sting the customer with an extra fee by performing a currency conversion at an inflated exchange rate. Sometimes it is only about five percent and this may not appear to be a lot but in one case a hotel was trying to use a rate that increased the cost of my booking by 30%. This scheme/scam is referred to as Dynamic Currency Conversion (DCC). Sometimes the website says that they are making it "easy" for you by giving you a "guaranteed" exchange rate that "might" be better than the rate from your bank. Sometimes a hotel or restaurant in a tourist location insists that you have to pay in a currency that is not the same as the currency on your booking receipt or their menu card, this is also a DCC situation.

    Reality check: these DCC rates are universally bad. Last time I checked, my own credit card only has a 0.9% fee for currency conversion. Credit card companies have become a lot more competitive but the travel industry hasn't.

    Airbnb often claims that they want to help the little guy and empower people, at least that is the spin they were using when New York city authorities were scrutinizing their business model. Their PR blog tries to boast about the wonderful economic impact of Airbnb.

    But when it comes to DCC, the economic impact is universally bad for the customer and good for Airbnb's bosses. Most sites just turn on DCC by default and add some little opt-out link or checkbox that you have to click every time you book. Airbnb, however, is flouting regulations and deceiving people by trying to insist that you can't manually choose the currency you'll use for payment.

    Fortunately, Visa and Mastercard have insisted that customers do have the right to know the DCC exchange rate and choose not to use DCC.

    What are the rules?

    Looking at the Visa system, the Visa Product and Service Rules, page 371, s5.9.7.4 include the statement that the merchant (Airbnb) must "Inform the Cardholder that Dynamic Currency Conversion is optional".

    The same section also says that Airbnb must "Not use any language or procedures that may cause the Cardholder to choose Dynamic Currency Conversion by default". When you read the Airbnb help text about currencies, do you think the language and procedures there comply with Visa's regulations?

    What does Airbnb have to say about it?

    I wrote to Airbnb to ask about this. A woman called Eryn H replied "As it turns out we cannot provide our users with the option to disable currency conversion."

    She went on to explain "When it comes to currency converting, we have to make sure that the payments and payouts equal to be the same amount, this is why we convert it as well as offer to convert it for you. We took it upon ourselves to do this for our users as a courtesy, not so that we can inconvenience any users.". That, and the rest of Eryn's email, reads like a patronizing copy-and-paste response that we've all come to dread from some poorly trained customer service staff these days.

    Miss H's response also includes this little gem: "Additionally, if you pay in a currency that’s different from the denominated currency of your payment method, your payment company (for example, your credit or bank card issuer) or third-party payment processor may apply a currency conversion rate or fees to your payment. Please contact your provider for information on what rates and fees may apply as these are not controlled by or known to Airbnb." and what this really means is that if Airbnb forces you to use a particular currency, with their inflated exchange rate and that is not the currency used by your credit card then you will have another currency conversion fee added by your bank, so you suffer the pain of two currency conversions. This disastrous scenario comes about because some clever person at Airbnb wanted to show users a little "courtesy", as Miss H describes it.

    What can users do?

    As DCC is optional and as it is not clear on the booking page, there are other things a user can do.

    At the bottom of the Airbnb page you can usually find an option to view prices in a different currency. You can also change your country of residence in the settings to ensure you view prices in the host currency. This allows you to see the real price, without the DCC steal.

    People have been able to email or call Airbnb and have DCC disabled for their account. Not all their telephone staff seem to understand these requests and apparently it is necessary to persist and call more than once. In the long term, the cost savings outweigh the time it may take even if you spend 20 minutes on the phone getting it fixed.

    Whatever you do, with any travel site, print a copy of the information page showing the price in host currency. After doing that for an Airbnb booking and before making any payment, send a message to the host quoting the total price in their currency and stating DCC is not authorized. If Airbnb does wrongly convert the currency, send a letter to the credit card company asking for a full refund/chargeback on the basis that the transaction in the wrong currency was not an authorized transaction. It is important to ensure that you do not agree to the payment using Verified-by-Visa or Mastercard Securecode and do not pay with a debit card as these things can undermine your chances of a successful chargeback.

    The chargeback rules are very clear about this. On the Visa website, the Guide for the Lodging Industry describes all the chargeback reason codes. On page 46, reason code 76 is described for cases such as these:

    • Cardholder was not advised that Dynamic Currency Conversion (DCC) would occur
    • Cardholder was refused the choice of paying in the merchant’s local currency

    If you feel that Airbnb's web site was not operating in compliance with these rules, while many other web sites have made the effort to do so, why shouldn't you demand a correction by your bank? Once enough people do this, don't be surprised if Airbnb fixes their site.

    on November 28, 2015 05:08 PM

    In case you’ve upgraded to the Xenial (16.04 LTS) development release, you’ll have noticed that a new version of the Ubuntu Font Family has been uploaded to the archive (thank you, Laney and Canonical Design Team!)

    Take a look at the changelog to learn about the bug fixes and other goodness contained in this release. Most importantly, this upload finally ships the Arabic and Hebrew glyphs that the Dalton Maag crew beautifully designed back in ~2011.

    on November 28, 2015 09:17 AM

    November 27, 2015

    Munich Hackathon sponsored by Limux

    Munich Hackathon sponsored by Limux

    First, a big thank you to the fine folks at Limux for hosting the event. Second, a big thank you to the Ubuntu Community Donations fund for getting me there!

    I successfully crammed a ton of work into this short trip! We (Kubuntu) first sorted (mostly) a plan
    for Xenial LTS release. We are going to sync with Debian as much as we possibly can this release as
    stability is of utmost importance. Don’t fret, we (I) will still put newer KDE releases in a PPA for
    those that want the newest of KDE, time permitting of course. We are still working out who will host our CI system, as we all agree that this is extremely important to our workflow. During the period that we are synced to debian will have time to fix our somewhat broken toolset so that we can function with less overhead. We bashed a few bugs, updated our to-dos.

    On the KDE side, I worked on getting the docker workflow functioning on Unfortunately, ICU was updated so all of KDE will need a rebuild before this can go live. But the good news is we will have more than 2 slaves! And it will be fairly simple to extend in the future, fully clean builds, and we can utilize different OS version requirements. I also spent some time working on Phabricator permissions issues.

    Overall this was an essential team building and work event that I could not have participated in without your help. So thank you to all of you that support Ubuntu community donations. Donate today!

    With that said, my cry for help:

    If you find any of my work useful, please consider a donation or become a patreon!
    I can no longer sustain working without an income. If this works I can continue all of my
    (K)ubuntu and KDE contributions ( a full time job in its current state + overtime!)
    Patreon for Scarlett Clark (me)

    on November 27, 2015 10:52 PM

    Resuming work on Yokadi

    Aurélien Gâteau

    A few weeks ago we started working again on Yokadi, our command-line oriented, todo list. We are now finally ready to release version 1.0. This new version fixes a few bugs but does not bring new features. This lack of new features is actually a conscious decision: we wanted to make changes under the hood, and doing changes under the hood at the same time as adding new features is often a recipe for disaster.

    What happened under the hood? I hear you asking.

    Well, we finally ported Yokadi to Python 3. Mind you, it was not a straightforward port. The main pain point was SQLObject, the ORM we have been using since we started Yokadi. At the time we wanted to start porting Yokadi to Python 3, SQLObject had not been ported (the port is still not ready, only an alpha has been released) so we had to first switch to another ORM — we went with SQLAlchemy — before actually porting the application to Python 3. In fact I suspect Sébastien started the Python 3 port just to get rid of SQLObject, which he does not really like :)

    The code is pretty much frozen by now, we have been using it for real-life todo-list work for quite some time: even if there are periods without active development, we still use and depend on Yokadi daily. We plan to get 1.0 out this weekend. Then we can start working on improvements and new features, a few of them are actually in progress, but I'll write more about them later.

    on November 27, 2015 09:36 PM

    screen config victory!

    Sebastian Kügler

    kscreen wayland backend in action

    kscreen wayland backend in action

    That moment when the application “just works” after all your unit tests pass…

    A really nice experience after working on these low-level bits was firing up the kscreen systemsettings module configured to use my wayland test server. I hadn’t done so in a while, so I didn’t expect much at all. The whole thing just worked right out of the box, however. Every single change I’ve tried had exactly the expected effect.
    This screenshot shows Plasma’s screen configuration settings (“kscreen”). The settings module uses the new kwayland backend to communicate with a wayland server (which you can see “running” on the left hand side). That means that another big chunk of getting Plasma Wayland-ready for multi-display use-cases is falling nicely into place.


    I’m working on this part of the stack using test-driven development methods, so I write unit tests for every bit of functionality, and then implement and polish the library parts. Something is done when all units tests pass reliably, when others have reviewed the code, when everything works in on the application side, and when I am happy with it.
    The unit tests stay in place and are from then on compiled and run through our continuous integration system automatically on every code change. This system yells at us as soon as any of the unit tests breaks or shows problems, so we can fix it right away.

    Interestingly, we run the unit tests live against a real wayland server. This test server is implemented using the KWayland library. The server runs headless, so it doesn’t do any rendering of windows, and it just implements the bits interesting for screen management. It’s sort of a mini kwin_wayland, the real kwin will use this exact same library on the server side, so our tests are not entirely synthetical. This wasn’t really possible for X11-based systems, because you can’t just fire up an X server that supports XRandR in automated tests — the machine running the test may not allow you to use its graphics card, if it even has one. It’s very easy to do, however, when using wayland.
    Our autotests fire up a wayland server from one of many example configurations. We have a whole set of example configurations that we run tests against, and it’s easy to add more that we want to make sure work correctly. (I’m also thinking about user support, where we can ask to send us a problematic configuration written out to a json file, that we can then add to our unit tests, fix, and ensure that it never breaks again.
    The wayland test server is only about 500 lines of relatively simple code, but it provides full functionality for setting up screens using the wayland protocol.

    Next steps…

    The real kwin_wayland will use the exact same library, on the server as we do in our tests, but instead of using “virtual screens”, it does actually interact with the hardware, for example through libdrm on more sensible system or through libhybris on ones less so.
    Kwin takes a more central role in our wayland story, as we move initial mode-setting there, it just makes to have it do run-time mode setting as well.

    The next steps are to hook the server side of the protocol up in kwin_wayland’s hardware backends.

    In the back of my head are a few new features, which so far had a lower priority — first the core feature set needed to be made stable. There are three things which I’d like to see us doing:

    • per-display scaling — This is an interesting one. I’d love to be able to specify a floating point scaling factor. Wayland’s wl_output interface, which represents the application clients, only provides int-precision. I think that sucks since there is a lot of hardware around where a scaling factor of 1 is to small, and 2 is too high. That’s pretty much everything between 140 and 190 DPI according to my eyesight, your mileage may vary here. I’m wondering if I should go ahead and add the necessary API’s at least on our end of the stack to allow better than integer precision.
      Also, of course we want the scaling be controlled per display (and not globally for all displays, as it is on X11), but that’s in fact already solved by just using wayland semantics — it needs to be fixed on the rendering side now.
    • pre-apply checks — at least the drm backend will allow us to ask it if it will be able to apply a new configuration to the hardware. I’d love to hook that up to the UI, so we can do things like enable or disable the apply button, and warn the user of something that the hardware is not going to like doing.
      The low-level bits have arrived with the new drm infrastructure in the kernel, so we can hook it up in the libraries and the user interface.
    • configuration profiles — it would make sense to allow the user to save configurations for different situations and pick between them. It would be quite easy to allow the user to switch between setups not just through the systemsettings ui, but also for example when connecting or disabling a screen. I an imagine that this could be presented very nicely, and in tune with graphical effects that get their timing juuuuust right when switching between graphics setups. Let’s see how glitch-free we can make it.
    on November 27, 2015 03:29 AM

    November 26, 2015

    Hello everybody,

    the Community Council has been elected and the results can be viewed here:

    On the CC for the next two years are going to be:

    • Daniel Holbach
    • Laura Czajkowski
    • Svetlana Belkin
    • Michael Hall
    • Scarlett Clark
    • C de-Avillez
    • Marco Ceppi

    Thanks to all the nominees and all the voters. Thanks a lot also to everyone who served on the CC the last two years.

    Originally posted to the community-announce mailing list on Thu Nov 26 16:48:22 UTC 2015 by Daniel Holbach

    on November 26, 2015 05:02 PM

    An expanded device mono icon set

    Canonical Design Team

    We will soon push an update of the Suru icon theme that includes more device icons in order to support the Ubuntu convergence story.

    Because the existing icon set was focused on mobile, many of the new icons are very specific to the desktop, as we were missing icons such as hard disk, optical drive, printer or touchpad.

    When designing new mono icons, we need to make sure that they are consistent with the graphic style of the existing set (thin outlines, rare solid shapes, etc).

    A device, like a printer or a hard disk, can be quite complex if you want to make it look realistic, so it’s important to add a level of abstraction to the design. However the icon still has to be recognisable within the right context.

    At the moment, if you compare the Suru icon theme to the symbolic mono icons in Gnome, or to the Humanity devices icons, a few icons are missing, so you should expect to see this set expand at some point in the future — but the most common devices are covered.

    In the meantime, here is the current full set:

    Device icon set

    on November 26, 2015 01:42 PM

    S08E38 – Santa with Muscles - Ubuntu Podcast

    Ubuntu Podcast from the UK LoCo

    It’s Episode Thirty-eight of Season Eight of the Ubuntu Podcast! With Mark Johnson, Laura Cowen, Martin Wimpress, and Alan Pope recording as normal over the internets which are suffering slightly from the storms outside…

    In this week’s show:

    • We talk about Laura’s recent experience 3D printing Christmas tree-shaped Christmas tree decorations:

    That’s all for this week, please send your comments and suggestions to:

    on November 26, 2015 12:28 PM

    November 25, 2015

    Dropped AAAA record from DNS

    Marcin Juszkiewicz

    I host my blog on small machine somewhere in OVH. As part of package I got IPv6 address for it. Five minutes ago I decided to no longer use it.

    My home Internet provider (UPC) does not offer IPv6 addresses so testing is my blog (or other pages/services I host) reachable via IPv6 was always problematic. Ok, I have tunnel setup on one of routers at home but it is not fun when your browser (and other tools) decide to use IPv6 instead of IPv4 and slow down from 250/20 Mbps to tunnel speed.

    So when today I got information that something is not reachable via IPv6 I decided to just drop use of it on server. Will fix configs but do not want to get information that something else break on the other day.

    on November 25, 2015 02:11 PM

    I recently had a problem with a program behaving badly. As a developer familiar with open source, my normal strategy in this case would be to find the source and debug or patch it. Although I was familiar with the source code, I didn't have it on hand and would have faced significant inconvenience having it patched, recompiled and introduced to the runtime environment.

    Conveniently, the program has not been stripped of symbol names, and it was running on Solaris. This made it possible for me to whip up a quick dtrace script to print a log message as each function was entered and exited, along with the return values. This gives a precise record of the runtime code path. Within a few minutes, I could see that just changing the return value of a couple of function calls would resolve the problem.

    On the x86 platform, functions set their return value by putting the value in the EAX register. This is a trivial thing to express in assembly language and there are many web-based x86 assemblers that will allow you to enter the instructions in a web-form and get back hexadecimal code instantly. I used the bvi utility to cut and paste the hex code into a copy of the binary and verify the solution.

    All I needed was a convenient way to apply these changes to all the related binary files, with a low risk of error. Furthermore, it needed to be clear for a third-party to inspect the way the code was being changed and verify that it was done correctly and that no other unintended changes were introduced at the same time.

    Finding or writing a script to apply the changes seemed like the obvious solution. A quick search found many libraries and scripts for reading ELF binary files, but none offered a patching capability. Tools like objdump on Linux and elfedit on Solaris show the raw ELF data, such as virtual addresses, which must be converted manually into file offsets, which can be quite tedious if many binaries need to be patched.

    My initial thought was to develop a concise C/C++ program using libelf to parse the ELF headers and then calculating locations for the patches. While searching for an example, I came across pyelftools and it occurred to me that a Python solution may be quicker to write and more concise to review.

    elfpatch (on github) was born. As input, it takes a text file with a list of symbols and hexadecimal representations of the patch for each symbol. It then reads one or more binary files and either checks for the presence of the symbols (read-only mode) or writes out the patches. It can optionally backup each binary before changing it.

    on November 25, 2015 10:30 AM

    November 24, 2015

    A clockwork carrot

    Rohan Garg

    This weekend I had the opportunity to travel to the yearly LiMux sprint to spend some time with my fellow kubuntu devs and talk about the potential issues we’re facing with the CI system and improving the Debian CI system to be more robust.

    Some of the more important issues that were discussed included figuring out a way to improve file tracking in packages, so that the CI can detect file conflicts without having to actually install all the packages. Another important topic that was bought up was using the packagekit and appstream with Muon. This is apparently being held back on account of Ubuntu Touch, but is slated to be resolved soon. Once the necessary packagekit packages are updated, we can play around with the idea of perhaps shipping a muon using the packagekit backend on the next Kubuntu release.

    As usual, the LiMux folks are a great bunch to hang out with, and I happened to notice something on the wall of their office while lunching with them. It was a clock. Not just a regular clock though, a timey wimey clock. I’ll let a picture do more of the talking here :


    Timey Wimey clock

    Timey Wimey clock


    Told you. Timey Wimey.

    I got quite the headache looking at the clock, but my fascination with it stuck. So once I was back home, I hacked up the regular Plasma 5 analog clock and made it timey-wimey too ;)

    Timey Wimey clock

    You can download and install the clock from here. Clocks and Carrots, a weekend well spent I say. As usual, you can find me and the other kubuntu devs in #kubuntu-devel on IRC or on in case you want to reach out to us about Kubuntu, Clocks or Carrots.

    on November 24, 2015 10:32 PM
    (Cough... This should probably be called the "I-almost-forgot-I-had-a-blog release"! :-)

    Development has now moved to github:

    So you can grab the release files here:

    The move to github brings a few advantages, including Travis-CI integration:

    Even more awesome being that, thanks to the wonder of webhooks, procenv is now building for lots of distros. Take a look at:

    So you get to see the environment those builds run in and OBS is also providing procenv packages!

    Here's the funky download page (just click your distro):

    Caveat emptor: those packages are building off the tip, so are not necessarily releases - they are built from the latest commit! That said, since procenv runs a lot of tests at build-time, you should be reasonably safe.

    If you'd rather opt for official releases, the new version should be in Debian and Ubuntu Xenial soon. It should also arrive in Clear Linux tomorrow.

    As for what has changed since the last blog-post, just take a look at the NEWS file:

    on November 24, 2015 07:29 PM

    It's already time for a third release of Ubuntu Make this month! Thanks to the help of existing and new contributors, here are what's noticeable on this release.

    JetBrains' excellent C/C++ IDE named CLion is now available! A simple umake ide clion will get it you at your disposal!


    The non linear game editor Twine (that our community team is using as well for other QA purposes) also entered this release and is just a umake games twine away!


    Our ZSH users will be pleased to know that the advanced shell completion that we have in bash is now available to them. We refreshed and fixed some translations, especially in russian, portuguese and french for this release. A lot of opportunities in term of translations are available! Do not hesitate to jump in. :)

    A bunch of work on tests and the testing infrastructure (cutting the testing time approximately by half!) have been done. Speaking of tests, we spotted and fixed the upstream renamed icon in Visual Studio Code thanks to one of them failing (nice to be at that level of quality granularity)! We also worked on ensuring that people using our PPA with previous ubuntu releases only download the minimal requirements and not our testing dependency (by shifting to another ppa only containing them). Of course, the contributor guide has been updated for matching all of this.

    You will thus understand that we got a lot of other small fixes and enhancements with this new package. If you want to read the full and detailed list of what's in this release, please have a read here!

    As usual, you can get this latest version direcly through its ppa for the 14.04 LTS, 15.04 and 15.10 ubuntu releases. Xenial version is available directly in the xenial ubuntu archive. This wouldn't be possible withoutl our awesome contributors community, thanks to them again!

    Our issue tracker is full of ideas and opportunities, and pull requests remain opened for any issues or suggestions! If you want to be the next featured contributor and want to give an hand, you can refer to this post with useful links!

    on November 24, 2015 03:30 PM

    After some releases bringing updates, bug fixes, refactoring, tests improvements and more minor features and automations, here is time again for a noticeable feature release!

    Thanks to Fabio Colella, we now have NetBeans support in Ubuntu Make! Installing it is just a umake ide netbeans away and just relax while Ubuntu Make is doing the hard work so that you can enjoy this IDE.


    Another new feature is the Rust support by Jared Ravetch. umake rust will do all the necessary steps so that you get a good rust developing experience on your favorite ubuntu distro!

    Eldar Khayrullin (welcome to him for his first contribution!) updated the Unity 3D game engine support to point to the latest beta released version and Sebastian Schuberth fixed an android NDK environment variable to use a more widespread one.

    Other noticeable changes, following upstream webstorm IDE, are update to get their latest available icons (thanks to our test granularity level, we were able to detect this small change!), fixes for the version option, global -r working as the new global --remove, some fixes for zsh users, and as well a bunch of new translations thanks to our awesome translator community (new languages: fa, pt_BR and updated de, en_AU, en_CA, en_GB, eu, hr, it, pl, ru, te, zh_CN, zh_HK). There is of course more refactoring and other tests changes. Full glory details are available here.

    As usual, all of those modifications and new features are backed up via a number of small, medium and large tests! We are currently running about 850 tests in our jenkins infrastructure (running all the tests). All commits and pull requests are tested for pep8 and small tests using Travis CI and the health status is of course reported in the file.

    As usual, you can get this latest version direcly through its ppa for the 14.04 LTS, 15.05 and 15.10 ubuntu releases. Xenial version is available directly in the xenial ubuntu archive. Thanks again to all our awesome contributors community! A lot more is still in the pipe, but that will be for next release!

    Our issue tracker is full of ideas and opportunities, and pull requests remain opened for any issues or suggestions! If you want to be the next featured contributor and want to give an hand, you can refer to this post with useful links!

    on November 24, 2015 12:09 PM

    Salut Salon

    Rhonda D'Vine

    I don't really remember where or how I stumbled upon this four women so I'm sorry that I can't give credit where credit is due, and I even do believe that I started writing a blog entry about them already somewhere. Anyway, I want to present you today Salut Salon. They might play classic instruments, but not in a classic way. But see and hear yourself:

    • Wettstreit zu viert: This is the first that I stumbled upon that did catch my attention. Lovely interpretation of classic tunes and sweet mixup.
    • Ievan Polkka: I love the catchy tune—and their interpretation of the song.
    • We'll Meet Again: While the history of the song might not be so laughable the giggling of them is just contagious. :)

    So like always, enjoy!

    /music | permanent link | Comments: 1 | Flattr this

    on November 24, 2015 08:26 AM

    November 23, 2015

    Junkyard Jam Band

    Matthew Helmke

    As I opened Junkyard Jam Band, the first thing I thought of was a couple of books I read in the mid-1990s by a man named Craig Anderton. I still have his books covering electronic projects for musicians and do-it-yourself projects for guitarists on my shelf, but they are a bit outdated. The connection is a positive one. I have played guitar for more than 25 years, built my own effects, and even built my own full-on tube amplifier.

    Junkyard Jam Band is a worthy heir to the maker-musician throne that Anderton’s books sat on for me. David Erik Nelson does a great job of mixing practical and easy projects with inspiring ideas. Here you will learn how to make some instruments in less than 5 minutes, provided you already have all of the tools and have collected the supplies you need. You will also discover some projects that will take longer, but which are useful as building blocks for larger musical ventures.

    I was thrilled to discover a chapter dedicated to a project that I tried more than 15 years ago, just at random. At the time, I learned that piezo pickups and piezo speakers were very similar, so I bought a $1.99 piezo speaker from Radio Shack, cut it out of its plastic case, soldered the leads to a guitar plug jack, and mounted it inside a guitar. It worked! I wish I had potted the project at the time, as it was (still is) a bit noisy, but that procedure is covered in Junkyard Jam Band with the use of Plastidip. Cool idea!

    No more spoilers. If you understood any of the contents of the last three paragraphs, take a look at this book. You may find it as fun and enjoyable as I have. It has also given me some ideas for projects that I must make time for soon.

    Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

    on November 23, 2015 09:48 PM

    The Xubuntu team hears stories about how it is used in organizations all over the world. In this “Xubuntu at..” series of interviews, we seek to interview organizations who wish to share their stories. If your organization is using Xubuntu and you want to share what you’re doing with us please contact Elizabeth K. Joseph at to discuss details about your organization.

    Several months ago we learned from Evelyn Lopez at FreeGeek Chicago that they’d been deploying Xubuntu on computers they sell through their efforts to recycle used computers and parts to provide functional computers, education, internet access and job skills training to those who want them. Evelyn took some time out of her schedule to talk to us about the work that FreeGeek Chicago does and some of the tools they use around Xubuntu and flavors being used.

    Can you tell us a bit about your role at FreeGeek Chicago and work that FreeGeek Chicago does?

    I’m currently the Communications Coordinator at FreeGeek Chicago. My job is to manage FreeGeek’s social networks, create content and occasionally serve as photographer for their events and volunteer days. Our organization, FreeGeek Chicago has a mission to reduce e-waste and to properly recycle computer electronics. The general public and our volunteers donate their old electronics with the intention of recycle and/or re-purpose. Our volunteers seek, test and build new computers out of the working parts donated which in turn are sold to customers with the Linux system at a reduced price. Through volunteering our volunteers learn current computer building skills and open source software.


    What influenced your decision to use Open Source Software at FreeGeek Chicago?

    In order to use the FreeGeek name we must adhere by certain articles, one of them being using exclusively open source software. We as an organization firmly believe in the use of open source software as a main alternative to the high prices of proprietary software. Also, we understand the positive aspects of giving the user access to modify [the software] as it can lead to a better function and understanding of the software.

    What made you select Xubuntu for your deployments?

    At the time we chose Xubuntu for a variety of reasons. First of all we believed that this platform best suited the needs of our organization. We also thought that it was the most compatible with the computers that were being donated to us. Lastly, we believed that it was an easier platform to teach our volunteers. At this time we currently use two different systems distros (Ubuntu and Kubuntu).


    Can you tell us a bit about your Xubuntu setup?

    We try to keep it as simple as we can since our computers will be going out to the sales floor or to donation. Currently, we install LibreOffice, Krita, Inkscape, VLC Player, Firefox, Chromium, GIMP among others. Installs are done by our volunteers as part of their hands-on learning education. They load the operating system from our network and use the command line to install the rest of the programs. After it is installed our Q&A team certifies the installation and the computer goes to our sales floor.


    Is there anything else you wish to share with us about FreeGeek Chicago?

    FreeGeek Chicago is a community organization that refurbishes used computers and parts to provide functional computers to volunteers and the general public. We provide education in practical computing, hands-on job skills training, and an outlet for community service, recycle non-reusable materials in an ethical, safe, and environmentally responsible manner.

    on November 23, 2015 07:20 PM

    November 22, 2015

    The prctl() system call provides a rather useful PR_SET_PDEATHSIG option to allow a signal to be sent to child processes when the parent unexpectedly dies. A quick and dirty mechanism is trigger the SIGHUP or SIGKILL signal to kill the child immediately, or perhaps more elegantly to invoke a resource tidy up before exiting.

    In the trivial example below, we use the SIGUSR1 signal to inform the child that the parent has died. I know printf() should not be used in a signal handler, it just makes the example simpler.

     #include <stdlib.h>                                 
    #include <unistd.h>
    #include <signal.h>
    #include <sys/prctl.h>
    #include <err.h>

    void sigusr1_handler(int dummy)
    printf("Parent died, child now exiting\n");

    int main()
    pid_t pid;

    pid = fork();
    if (pid < 0)
    err(1, "fork failed");
    if (pid == 0) {
    /* Child */
    if (signal(SIGUSR1, sigusr1_handler) == SIG_ERR)
    err(1, "signal failed");
    if (prctl(PR_SET_PDEATHSIG, SIGUSR1) < 0)
    err(1, "prctl failed");

    for (;;)
    if (pid > 0) {
    /* Parent */
    printf("Parent exiting...\n");

    return 0;

    ..the child process sits in an infinite loop, performing 60 second sleeps.  The parent sleeps for 5 seconds and then exits.  The child is then sent a SIGUSR1 signal and the handler exits.  In practice the signal handler would be used to trigger a more sophisticated clean up of resources if required.

    Anyhow, this is a useful Linux feature that seems to be overlooked.
    on November 22, 2015 11:44 PM

    Muon 5.5 and Carrots

    Harald Sitter


    Jonathan Riddell, Leader of Flies, kept holding me until I write a blog post, so here is one.

    After 2 days of obscenely unsubsidized drinking and vicious discussions about carrots, the KDE and Kubuntu developers here at the developer sprint in Munich decided to release the Debian package manager Muon in version 5.5.0.

    A very prominent thing to take away from this sprint is “oops”. I am not sure that is good, but oh well.

    Hearts and kisses!

    on November 22, 2015 04:11 PM

    Links to articles not necessarily written today, but still interesting.

    The post Links of the Day – 2015-11-22 appeared first on Milo Casagrande.

    on November 22, 2015 01:16 PM

    Gruss vom Krampus!

    Lubuntu Blog

    Dedicated to all our friends in Finland, Germany, Austria, etc. have a nice celebration, the 5th of December, with Krampuslauf fest. Christmas begins!
    on November 22, 2015 11:55 AM

    November 21, 2015

    Openly Thankful

    Benjamin Kerensa

    ThankfulSo next week has a certain meaning for millions of Americans that we relate to a story of indians and pilgrims gathering to have a meal together. While that story may be distorted from the historical truth, I do think the symbolic holiday we celebrate is important.

    That said, I want to name some individuals I am thankful for….



    Lukas Blakk

    I’m thankful for Lukas for being a excellent mentor to me at Mozilla for the last two years she was at Mozilla. Lukas helped me learn skills and have opportunities that many Mozillians would not have the opportunity to do. I’m very grateful for her mentoring, teaching, and her passion to help others, especially those who have less opportunity.

    Jeff Beatty

    I’m especially thankful for Jeff. This year, out of the blue, he came to me this year and offered to have his university students support an open source project I launched and this has helped us grow our l10n community. I’m also grateful for Jeff’s overall thoughtfulness and my ability to go to him over the last couple of years for advice and feedback.

    Majken Connor

    I’m thankful for Majken. She is always a very friendly person who is there to welcome people to the Mozilla Community but also I appreciate how outspoken she is. She is willing to share opinions and beliefs she has that add value to conversations and help us think outside the box. No matter how busy she is, she has been a constant in the Mozilla Project. always there to lend advice or listen.

    Emma Irwin

    I’m thankful for Emma. She does something much different than teaching us how to lead or build community, she teaches us how to participate better and build better participation into open source projects. I appreciate her efforts in teaching future generations the open web and being such a great advocate for participation.

    Stormy Peters

    I’m thankful for Stormy. She has always been a great leader and it’s been great to work with her on evangelism and event stuff at Mozilla. But even more important than all the work she did at Mozilla, I appreciate all the work she does with various open source nonprofits the committees and boards she serves on or advises that you do not hear about because she does it for the impact.


    Jonathan Riddell

    I’m thankful for Jonathan. He has done a lot for Ubuntu, Kubuntu, KDE and the great open source ecosystem over the years. Jonathan has been a devout open source advocate always standing for what is right and unafraid to share his opinion even if it meant disappointment from others.

    Elizabeth Krumbach Joseph

    I’m thankful for Elizabeth. She has been a good friend, mentor and listener for years now and does so much more than she gets credit for. Elizabeth is welcoming in the multiple open source projects she is involved in and if you contribute to any of those projects you know who she is because of the work she does.


    Paolo Rotolo

    I’m thankful for our lead Android developer who helps lead our Android development efforts and is a driving force in helping us move forward the vision behind Glucosio and help people around the world. I enjoy near daily if not multiple time a day conversations with him about the technical bits and big picture.

    The Core Team + Contributors

    I’m very thankful for everyone on the core team and all of our contributors at Glucosio. Without all of you, we would not be what we are today, which is a growing open source project doing amazing work to bring positive change to Diabetes.


    Leslie Hawthorne

    I’m thankful for Leslie. She is always very helpful for advice on all things open source and especially open source non-profits. I think she helps us all be better human beings. She really is a force of good and perhaps the best friend you can have in open source.

    Jono Bacon

    I’m thankful for Jono. While we often disagree on things, he always has very useful feedback and has an ocean of community management and leadership experience. I also appreciate Jono’s no bullshit approach to discussions. While it can be rough for some, the cut to the chase approach is sometimes a good thing.

    Christie Koehler

    I’m thankful for Christie. She has been a great listener over the years I have known her and has been very supportive of community at Mozilla and also inclusion & diversity efforts. Christie is a teacher but also an organizer and in addition to all the things I am thankful for that she did at Mozilla, I also appreciate her efforts locally with Stumptown Syndicate.

    on November 21, 2015 01:58 AM

    November 20, 2015

    Ubuntu Community Appreciation Day

    Elizabeth K. Joseph

    Often times, Ubuntu Community Appreciation Day sneaks up on me and I don’t have an opportunity to do a full blog post. This time I was able to spend several days reflecting on who has had an impact on my experience this year, and while the list is longer than I can include here (thanks everyone), there are some key people who I do need to thank.

    José Antonio Rey

    If you’ve been involved with Ubuntu for any length of time, you know José. He’s done extraordinary work as a volunteer across various areas in Ubuntu, but this year I got to know him just a little bit better. He and his father picked me up from the airport in Lima, Peru when visited his home country for UbuCon Latinoamérica back in August. In the midst of preparing for a conference, he also played tour guide my first day as we traveled the city to pick up shirts for the conference and then took time to have lunch at one of the best ceviche places in town. I felt incredibly welcome as he introduced me to staff and volunteers and checked on me throughout the conference to make sure I had what I needed. Excellent conference with incredible support, thank you José!

    Naudy Urquiola

    I met Naudy at UbuCon Latinoamérica, and I’m so glad I did. He made the trip from Venezuela to join us all, and I quickly learned how passionate and dedicated to Ubuntu he was. When he introduced himself he handed me a Venezuelan flag, which hung off my backpack for the rest of the conference. Throughout the event he took photos and has been sharing them since, along with other great Ubuntu tidbits that he’s excited about, a constant reminder of the great time we all had. Thanks for being such an inspirational volunteer, Naudy!

    Naudy, me, Jose

    Richard Gaskin

    For the past several years Richard has led UbuCon at the Southern California Linux Expo, rounding up a great list of speakers for each event and making sure everything goes smoothly. This year I’m proud to say it’s turning into an even bigger event, as the UbuCon Summit. He’s also got a great Google+ feed. But for this post, I want to call out that he reminds me why we’re all here. It can become easy to get burnt out as a volunteer on open source, feel uninspired and tired. During my last one-on-one call with Richard, his enthusiasm around Ubuntu for enabling us to accomplish great things brought back my energy. Thanks to Ubuntu I’m able to work with Partimus and Computer Reach to bring computers to people at home and around the world. Passion for bringing technology to people who lack access is one of the reasons I wake up in the morning. Thanks to Richard for reminding me of this.

    Laura Czajkowski, Michael Hall, David Planella and Jono Bacon

    What happens when you lock 5 community managers in a convention center for three days to discuss hard problems in our community? We laugh, we cry, we come up with solid plans moving forward! I wrote about the outcome of our discussions from the Community Leadership Summit in July here, but beyond the raw data dump provided there, I was able to connect on a very personal level with each of them. Whether it was over a conference table or over a beer, we were able to be honest with each other to discuss hard problems and still come out friends. No blame, no accusations, just listening, talking and more listening. Thank you all, it’s an honor to work with you.

    Laura, David, Michael and me (Jono took the picture!)

    Paul White

    For the past several years, Paul White has been my right hand man with the Ubuntu Weekly Newsletter. If you enjoy reading the newsletter, you should thank him as well. As I’ve traveled a lot this year and worked on my next book, he’s been keeping the newsletter going, from writing summaries to collecting links, with me just swinging in to review, make sure all the ducks are lined up and that the release goes out on time. It’s often thankless work with only a small team (obligatory reminder that we always need more help, see here and/or email to learn more). Thank you Paul for your work this year.

    Matthew Miller

    Matthew Miller is the Fedora Project Lead, we were introduced last week at LISA15 by Ben Cotton in an amusing Twitter exchange. He may seem like an interesting choice for an Ubuntu appreciation blog post, but this is your annual reminder that as members of Linux distribution communities, we’re all in this together. In the 20 or so minutes we spoke during a break between sessions, we were able to dive right into discussing leadership and community, understanding each others jokes and pain points. I appreciate him today because his ability to listen and insights have enriched my experience in Ubuntu by bringing in a valuable outside perspective and making me feel like we’re not in this alone. Thanks mattdm!

    Matt holds my very X/Ubuntu laptop, I hold a Fedora sticker


    If you’re reading this, you probably care about Ubuntu. Thank you for caring. I’d like to send you a holiday card!

    on November 20, 2015 05:15 PM
    • rbasak listed areas that he thinks needs looking at before Xenial feature freeze on 18 Feb. hallyn pointed out that this should be in a blueprint, so rbasak agreed to take an action to create one. Some work item assignments were made for the blueprint.
    • No other discussion was required for the other standing agenda items.
    • Meeting actions assigned:
      • rbasak look at and
      • rbasak to create blueprint for Xenial feature work
      • rbasak to find kickinz1 a merge to do
    • The next meeting will be on Tue Nov 24 16:00:00 UTC 2015 in #ubuntu-meeting.

    Full agenda and log

    on November 20, 2015 02:31 PM

    I have so many people to thank this time around I’m just going to post them all throughout the next few days. The first is Merlijn Sebrechts, one of the new breed of big data experts collaborating around Big Data.

    Merlijn is bringing the Tengu Platform to users, which is a platform for big data experimentation, you can find more about it here.

    You can find Merlijn’s work here.

    on November 20, 2015 02:20 PM