February 12, 2016

If, for whatever reason, you’re looking to switch from Gmail, I think you’ll love FastMail.

Its workflow, interface, and features will be immediately recognizable to you: it has conversation view, archiving, spam detection, categorization, filtering, keyboard shortcuts, a modern and fast web UI (ditto for mobile), fast search, calendars, contacts, two-factor authentication, and the option to use your own domain name.

I’ve looked around and having even just that first one (a conversation view) is a shocking rarity in either webmail or mail apps. Let alone all those features.

Switching is easy too. You can import email directly from Gmail and can just export/import any calendars and contacts from Google. Plus, for any shared calendars that you still want to host at Google, you can have FastMail show them and sync any changes.

The big catch of course is that it isn’t free. But it’s not expensive either.

I know this post reads like an ad, but I’m just genuinely pleased so far (and I’m intentionally not using a referral code on the link above). Hopefully the next person doesn’t have to do as much comparison shopping as I did.

on February 12, 2016 12:11 AM

Unhappy Birthday Suspended

Benjamin Mako Hill

More than 10 years ago, I launched Unhappy Birthday in a fit of copyrighteous exuberance. In the last decade, I have been interviewed on the CBC show WireTap and have received an unrelenting stream of hate mail from random strangers.

With a recently announced settlement suggesting that “Happy Birthday” is on its way into the public domain, it’s not possible for even the highest-protectionist in me to justify the continuation of the campaign in its original form. As a result, I’ve suspended the campaign while I plan my next move. Here’s the full text of the notice I posted on the Unhappy Birthday website:

Unfortunately, a series of recent legal rulings have forced us to suspend our campaign. In 2015, Time Warner’s copyright claim to “Happy Birthday” was declared invalid. In 2016, a settlement was announced that calls for a judge to officially declare that the song is in the public domain.

This is horrible news for the future of music. It is horrible news for anybody who cares that creators, their heirs, etc., are fairly remunerated when their work is performed. What incentive will there be for anybody to pen the next “Happy Birthday” knowing that less than a century after their deaths — their estates and the large multinational companies that buy their estates — might not be able to reap the financial rewards from their hard work and creativity?

We are currently planning a campaign to push for a retroactive extension of copyright law to place “Happy Birthday,” and other works, back into the private domain where they belong! We believe this is a winnable fight. After all, copyright has been retroactively extended before! Stay tuned! In the meantime, we’ll keep this page here for historical purposes.

—“Copyrighteous“ Benjamin Mako Hill (2016-02-11)

on February 12, 2016 12:07 AM

February 11, 2016

The time to apply is here! Ubuntu has applied for GSOC 2016, but we need project ideas for prospective students, and mentors to mentor them.

What is GSOC?
GSOC stands for Google Summer of Code. The event brings together university students and open source organizations like Ubuntu. It happens over the course of the summer, and mentors mentor students on a one to one basis. Mentors give project ideas, and students select them, pairing up with the mentor to make the idea a reality.

I'll be a mentor!
Mentors need to be around to help a student from May - August. You'll be mentoring a student on the project you propose, so you'll need to be capable of completing the project. As the time commitment is long, it's helpful to have a friend who can pitch in if needed. We've put together all the information you need to know as a mentor on community.u.c, including links to some mentoring guides. This will help give you more details about what to expect.

I'm in. What do I need to do?
To make sure you ideas are included in our application, you need to have them on the Ideas wiki by February 19th, 2016. When you are ready, simply add your idea. It's that simple. Assuming we are accepted as an organization, students will read our ideas, and we'll have a period of time to finalize the details with interested students.

I have a question!
If you have questions about what all this mentoring might entail, feel free to reach out to myself or anyone on the community team. This is a great way to make some needed ideas a reality and grow the community at the same time!
on February 11, 2016 09:54 PM

What a great Ubuntu Make release today! The best is that all of those new supports (Nodejs, Lighttable IDE, Spring Tools Suite and JeBrains' Datagrip) are all brought thanks to our awesome Ubuntu Make community!

Galileo Sartor brought a lot of goodness in previous releases, but he didn't stop there! In addition to starting reviewing other branches, he brought the nodejs and Lighttable support with extensive testsuites!


I'm sure a lot of developer will appreciate those new frameworks. In addition to that, I'm happy to announce that Galileo has now gained commit access to the project itself! This reflects his ability to quickly dive into the deep layers of the projects and very great skills and questioning when it's needed! Welcome and well done Galileo. \o/


He also implemented symlink creation in a shared bin/ directory added to user's path. This means that you will be able starting from now on to run directly from the command like "android-studio" and others UI tools when there is a desktop file associated. This is only for newly installed frameworks with Ubuntu make 16.02 and onwards.

Patricio Pérez is a newcomer to the Ubuntu Make contributor family, he jumped on bringing to us excellent Spring Tools Suite support, a customized all-in-one Eclipse based distribution that makes application development easy.

Finally, Omer Sheikh, a good well-known returning contributor, extended the JetBrains support adding the Datagrip IDE that is tailored to suit specific needs of professional SQL developers and DBAs.


You will note that we released as well 16.02.1. We needed to fix Visual Studio Code which changed its website, and thanks to a lot of excellent discussions and research from the community, we were able to publish this fix quickly! It's excellent to see both the Ubuntu Make's contributor growing and the code itself, with an excellent meritocracy spirit, based on collaborations!

As usual, you can get this latest version direcly through its ppa for the 14.04 LTS and 15.10 ubuntu releases. Xenial version is available directly in the xenial ubuntu archive. This wouldn't be possible without 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 February 11, 2016 04:48 PM
I would like to give you all the basic information I know about Ubuntu Phone. If you miss a question, please, ask in comments.

Are there another names?
It's Ubuntu Phone, but you could see Ubuntu Touch too.


Current devices
  • BQ E4.5, BQ E5 & Meizu MX4: Phones that you'll buy with Ubuntu Phone preinstalled.
  • Coming soon: BQ Tablet M10 with Ubuntu Phone preinstalled.

Not preinstalled:

  • Nexus 4: An Android phone that you need to flash. It's the phone used by developers. It works really good, not so fast opening the apps as E4.5 or MX4, IMHO.
Can I use Ubuntu Phone in another phone?
You can use a ROM ported, but the best performance are the current devices.

Can I buy an Ubuntu Phone?
Yes, currently you can buy the BQ E5 and BQ E4.5.
Meixu MX4 is sold out.
You'll can buy the BQ tablet in ~1 month (march 2016).

I live out of Europe. Can I buy it?
Yes, BQ is sending to all the world.

Is there fragmentation?
No, every phone will be updated at the same time.

How otfen will the phones update?
Every month, via OTA.

Are the phones locked?
Not, you can use any SIM

Have the phones got dual SIM?
Only the BQ phones.

Have the phones for extra microSD storage?
BQ E4.5 and E5 have it. Probably the BQ tablet too.

Which phone should I buy?
Design: MX4
Screen: MX4
Camera: MX4
Front Camera: E5
Connectivity: MX4
Convergence: Export screen to monitor and have Ubuntu Desktop: Nexus 4
Battery: E5/MX4
Price: E4.5 or Nexus 4 (second hand)
Storage: E5
Performance (CPU+RAM): MX4


Will the phone work in 3G/4G?
Only Meizu has 4G. BQ phones have 3G.
Out of Europe the phones could work only as 2G.

How is the quality of pictures?
Meizu MX4 is doing an awesome pictures. You can see a few of them from my travels here and here.
The BQ's camera is not so good, a normal camera for a phone.

What about current phone apps?
There are at least 1 application for each task you will need :) You'll not find 300 apps for the same task as in Android, but the current applications are so good and they have a great quality for me.
You can take a look to the catalog here.

What can I do with Ubuntu Phone?
I'll tell you what apps I use, they are doing all the work for my needs :)
  • Call & SMS & Contacts: Preinstalled.
  • Camera: Preinstalled
  • Alarms: Preinstalled
  • Web browser: Preinstalled
  • Active Screen: This will force the screen always ON, so useful for videos, ebooks...
  • Beru: epub reader
  • Calculator: Preinstalled
  • Dekko: Mail reader
  • Document Viewer: PDF, office docs reader
  • edIT: Plain text editor
  • Facebook: Preinstalled
  • File Manager
  • Gallery: Watch your pictures
  • Google+
  • Google Maps
  • Music: Preinstalled
  • Notes: Preinstalled, sync with evernote
  • Podbird: Podcast
  • SnapRecorder: Send voice messages
  • Tasks: Preinstalled
  • Telegram: Preinstalled
  • Terminal
  • Trello
  • Twitter: Preinstalled
  • uApp Explorer: Alternate Store
  • uNav: GPS Navigator
  • uTorch: A lamp for your phone
  • Weather: Preinstalled
  • WifiTransfer: Transfer your files by Wi-Fi
  • XBMC Remote: Control your RaspXBMC
  • Youtube
How do I install the apps?
From the Store in the phone.
You can install any installer file too (.click extension) with this command: pkcon local-install --allow-untrusted <file>.click

Can I uninstall preinstalled apps?
Yes, all of them.


Is there What's App?
No, it's a privative app and only if What's App wants it will be available in the future. You have Telegram preinstalled.

Will I have games?
Yes :) Some as Cut the rope, Don't crash, Falldown, Tux Racer...

Cut the Rope

Don't Crash

Is there a java virtual machine between Ubuntu & the hardware?
No :)) You'll have a real Ubuntu over the hardware in your pocket.

Ubuntu pure

Can I generate a tethering?

What about the battery?
So good, ~1,5 days, but it will depend of your use.

What about privacy?
So good too. The applications can't run in background. You can allow or not any access to camera, GPS...

Privacity! :)

What about free software (as in freedom)?
Probably the best OS, you have a few privative apps, but by default, the phone is free software and the best applications are free too, then you'll enjoy a 100% free phone. Free as in freedom, of course ;)

Can I connect any bluetooth device?
Standard bluetooth devices, as keyboards, mouses... I know people with issues with Bluetooth cars.

How is the interface?
Unity will be the interface and the phone works by gestures.


What are the scopes?
A way to access information without open the app. There is just an alternative to open the app. Similar to Google Now, but with a lot of API services.

I'll migrate from Android
The contacts in Google account will be import so easy from the Contacts presintalled app :)
You have alternatives to Google Calendar, including sync dates.

Does the phone run desktop apps?
No, the current phone is not running them, but it will run ASAP, because the ARM packages will be port to click packages.
You can force it, but I would not recommend you now, because you need to remount the image as writable and you'll lost the OTA updates.

What about convergence?
The convergence is this: the OS and apps will be adapted to the screen: phone, tablet, PC. Then, you'll run the same app.

If you connect a mouse + keyboard to any phone, it will be a mini PC:

Mouse + Keyboard = MiniPC

You can connect a Nexus 4 or the incoming BQ tablet (because BQ and Meizu phones haven't HDMI port) with a SlimPort adapter to a monitor or TV, attach a bluetooth mouse + keyboard and you'll have an Ubuntu desktop, but with the phone apps.
Take a look to this post about this stuff.
ASAP, a fix for BQ & Meizu will use Miracast technology for using the phone as Ubuntu Desktop in a monitor.

Mouse + Keyboard + SlimPort adapter in Nexus 4. Picture by Daniel Wood
How can I develop for phone?
It's so easy to create an app for Ubuntu Phone. Use the SDK. You have a great official guides.
You can develop in:
  • Webapp: A webview container
  • QML + (javascript or C++)
  • Scopes (C++, javascript or Go)
As the apps are open source, you can learn about them in Launchpad or Github.
I have a few examples code so basic here. It could help you.
I would recommend you the mail list or "Ubuntu Apps" in Telegram.

on February 11, 2016 10:09 AM

February 10, 2016

Google Code In 2015 is now complete! Overall, we had a total of 215 students finish more than 500 tasks for ubuntu! The students made contributions to documentation, created wallpapers and other art, fixed Unity 7 issues, hacked on the core apps for the phone, performed tests, wrote automated and manual tests, and worked on tools like the qatracker. A big thank you to all of the students and mentors who helped out.

Here's our winners!

 * Daniyaal Rasheed
 * Matthew Allen

And our Finalists

 * Evan McIntire
 * Girish Rawat
 * Malena Vasquez Currie

The students amazed everyone, myself included, with the level and skill they displayed in there work. You all should be very proud. It was lovely to have you as part of the community, and I've been delighted to see some of your faces sticking around and still contributing! Thank you, and welcome to the community!
    on February 10, 2016 09:39 PM

    There's no shortage of excitement, controversy, and readership, any time you can work "Docker" into a headline these days.  Perhaps a bit like "Donald Trump", but for CIO tech blogs and IT news -- a real hot button.  Hey, look, I even did it myself in the title of this post!

    Sometimes an article even starts out about CoreOS, but gets diverted into a discussion about Docker, like this one, where shykes (Docker's founder and CTO) announced that Docker's default image would be moving away from Ubuntu to Alpine Linux.

    I have personally been Canonical's business and technical point of contact with Docker Inc, since September of 2013, when I co-presented at an OpenStack Meetup in Austin, Texas, with Ben Golub and Nick Stinemates of Docker.  I can tell you that, along with most of the rest of the Docker community, this casual declaration in an unrelated Hacker News thread, came as a surprise to nearly all of us!

    Docker's default container image is certainly Docker's decision to make.  But it would be prudent to examine at a few facts:

    (1) Check DockerHub and you may notice that while Busybox (Alpine Linux) has surpassed Ubuntu in the number downloads (66M to 40M), Ubuntu is still by far the most "popular" by number of "stars" -- likes, favorites, +1's, whatever, (3.2K to 499).

    (2) Ubuntu's compressed, minimal root tarball is 59 MB, which is what is downloaded over the Internet.  That's different from the 188 MB uncompressed root filesystem, which has been quoted a number of times in the press.

    (3) The real magic of Docker is such that you only ever download that base image, one time!  And you only store one copy of the uncompressed root filesystem on your disk! Just once, sudo docker pull ubuntu, on your laptop at home or work, and then launch thousands of images at a coffee shop or airport lounge with its spotty wifi.  Build derivative images, FROM ubuntu, etc. and you only ever store the incremental differences.

    Actually, I encourage you to test that out yourself...  I just launched a t2.micro -- Amazon's cheapest instance type with the lowest networking bandwidth.  It took 15.938s to sudo apt install docker.io.  And it took 9.230s to sudo docker pull ubuntu.  It takes less time to download Ubuntu than to install Docker!

    ubuntu@ip-172-30-0-129:~⟫ time sudo apt install docker.io -y
    real 0m15.938s
    user 0m2.146s
    sys 0m0.913s

    As compared to...

    ubuntu@ip-172-30-0-129:~⟫ time sudo docker pull ubuntu
    latest: Pulling from ubuntu
    f15ce52fc004: Pull complete
    c4fae638e7ce: Pull complete
    a4c5be5b6e59: Pull complete
    8693db7e8a00: Pull complete
    ubuntu:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
    Digest: sha256:457b05828bdb5dcc044d93d042863fba3f2158ae249a6db5ae3934307c757c54
    Status: Downloaded newer image for ubuntu:latest
    real 0m9.230s
    user 0m0.021s
    sys 0m0.016s

    Now, sure, it takes even less than that to download Alpine Linux (0.747s by my test), but again you only ever do that once!  After you have your initial image, launching Docker containers take the exact same amount of time (0.233s) and identical storage differences.  See:

    ubuntu@ip-172-30-0-129:/tmp/docker⟫ time sudo docker run alpine /bin/true
    real 0m0.233s
    user 0m0.014s
    sys 0m0.001s
    ubuntu@ip-172-30-0-129:/tmp/docker⟫ time sudo docker run ubuntu /bin/true
    real 0m0.234s
    user 0m0.012s
    sys 0m0.002s

    (4) I regularly communicate sincere, warm congratulations to our friends at Docker Inc, on its continued growth.  shykes publicly mentioned the hiring of the maintainer of Alpine Linux in that Hacker News post.  As a long time Linux distro developer myself, I have tons of respect for everyone involved in building a high quality Linux distribution.  In fact, Canonical employs over 700 people, in 44 countries, working around the clock, all calendar year, to make Ubuntu the world's most popular Linux OS.  Importantly, that includes a dedicated security team that has an outstanding track record over the last 12 years, keeping Ubuntu servers, clouds, desktops, laptops, tablets, and phones up-to-date and protected against the latest security vulnerabilities.  I don't know personally Natanael, but I'm intimately aware of what a spectacular amount of work it is to maintain and secure an OS distribution, as it makes its way into enterprise and production deployments.  Good luck!

    (5) There are currently 5,854 packages available via apk in Alpine Linux (sudo docker run alpine apk search -v).  There are 8,862 packages in Ubuntu Main (officially supported by Canonical), and 53,150 binary packages across all of Ubuntu Main, Universe, Restricted, and Multiverse, supported by the greater Ubuntu community.  Nearly all 50,000+ packages are updated every 6 months, on time, every time, and we release an LTS version of Ubuntu and the best of open source software in the world every 2 years.  Like clockwork.  Choice.  Velocity.  Stability.  That's what Ubuntu brings.

    Docker holds a special place in the Ubuntu ecosystem, and Ubuntu has been instrumental in Docker's growth over the last 3 years.  Where we go from here, is largely up to the cross-section of our two vibrant communities.

    And so I ask you honestly...what do you want to see?  How would you like to see Docker and Ubuntu operate together?

    I'm Canonical's Product Manager for Ubuntu Server, I'm responsible for Canonical's relationship with Docker Inc, and I will read absolutely every comment posted below.


    p.s. I'm speaking at Container Summit in New York City today, and wrote this post from the top of the (inspiring!) One World Observatory at the World Trade Center this morning.  Please come up and talk to me, if you want to share your thoughts (at Container Summit, not the One World Observatory)!

    on February 10, 2016 05:09 PM

    I have a new avatar!

    Simon Quigley

    I now have a new avatar for my Launchpad page! It is made by Rafael Laguna, and although it isn't 100% accurate compared to my actual face, he did a PHENOMENAL job at making me an avatar.

    A HUGE thanks to Rafael Laguna, who was kind enough to make this for me. He also makes the Lubuntu artwork and he does a wonderful job at what he does.
    on February 10, 2016 12:26 AM

    February 09, 2016

    Justo hoy hace un año que tengo un Ubuntu Phone :)) Aquella primera prerelease para insiders, donde conocí a unos compañeros maravillosos, marcó la salida al mundo del primer dispositivo con Ubuntu Touch.

    Presentación en Londres hace 1 año

    Es imposible no echar la vista atrás, recopilando de la hemeroteca, intentando hacer memoria y comparar como era Ubuntu antes y después de esa presentación.

    Haciendo fotos al móvil con Fernando Lanero
    Quedó claro el compromiso de BQ, sacando a posteriori el E5 (y el próximo mes de este año, la primera tablet con convergencia). También vende fundas propias, dispone de foros de soporte y es la primera vez que BQ vende un móvil en todo el mundo.

    BQ E4.5

    Meizu, con un gran móvil como es el MX4, no ha sacado más modelos, aunque ha habido rumores apuntando a la salida del MX5. Ojalá :D


    Y tras un año, ¿cuales son las armas de Ubuntu Phone? En mi opinión, principalmente la convergencia, la privacidad y la libertad del software.

    Privacy :) Yeah!

    Si, la palabra so dicha mil veces, casi rayando la maldición, What's App. No, aún no existe esa aplicación para el móvil y posiblemente sea el único lastre para la plataforma.

    Nada más que añadir
    Y sí :) También podemos jugar

    No hay millones y millones de aplicaciones como en Android o iOS (¿realmente necesitamos disponer de 300 aplicaciones distintas para hacer lo mismo?), pero las que hay son libres y de muchísima calidad. Y lo importante (para mi) es tener eso: un sistema operativo totalmente abierto y las aplicaciones suficientes para usar mi móvil en el día a día.

    Porque quien se siente atraído por un Ubuntu Phone es un usuario que busca un dispositivo gobernado por software libre y que se respete su privacidad. Desde ahí debemos partir. Y ahí es donde Ubuntu cumple con creces. Ubuntu tiene su nicho y realmente no es un nicho pequeño.

    Os aseguro que tener un móvil gobernado por un GNU/Linux real, un auténtico Ubuntu en el bolsillo, no tiene precio.

    El cerebro de la bestia :)

    Añade ratón + teclado + monitor y tendrás un Ubuntu Escritorio. Foto de Marius Quabeck

    La otra gran baza es la convergencia, donde la competencia aún no se ha puesto las pilas y a excepción de Windows Phone, nadie ofrece lo que ofrecerá inminentemente Canonical.
    Ubuntu ha ido entramando la telaraña con paso firme y decidido y ahora es el momento de recoger los frutos.
    La nueva era, en la que la CPU de un escritorio es tu móvil, ha llegado. Un mismo Ubuntu para el móvil, la tablet y el escritorio. El ecosistema se ha completado :))

    Conecta ratón + teclado y tendrás un mini PC perfecto para viajar

    No quiero finalizar sin agradecer a todos los que hayan hecho que Ubuntu Phone sea lo que es hoy :) ¡Gracias!

    Fotos: De Marius Quabeck, Fernando Lanero, David Castañón y mías.
    on February 09, 2016 10:46 PM
    Meet cprofitt. How did you first get started using Linux? What distros, software or resources did you use while learning? I first started dabbling with Linux in 1993, but did not convert to using it full-time until 2006. I currently use Fedora 23. I have used Arch, Debian, OpenSUSE and Ubuntu in the past. All […]
    on February 09, 2016 04:40 PM

    The poetic code

    Alessio Treglia


    As well as the simple reading of a musical score is sufficient to an experienced musician to recognize the most velvety harmonic variations of an orchestral piece, so the apparent coldness of a fragment of program code can stimulate emotions of ecstatic contemplation in the developer.

    Don’t be misled by the simplicity of the laconic definition of the code as a sequence of instructions to be given to a computer to solve a specific problem. Generally, a problem has multiple solutions, the most simple and fast to implement, the most economical from the point of view of machine cycles or memory, the elegant solution and the makeshift one.

    However, there is always a “poetic” solution, the one that has a particular and unusual beauty and that is always generated by the inexhaustible forge of the human intuition….

    [Read More…]

    on February 09, 2016 11:31 AM

    Welcome to the Ubuntu Weekly Newsletter. This is issue #453 for the week February 1 – 7, 2016, 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
    • Simon Quigley
    • Thomas Ward
    • Walter Lapchynski
    • 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 February 09, 2016 12:56 AM

    February 08, 2016

    It’s been a while since our last Snappy Clinic, so we asked for your input on which topics to cover. Thanks for the feedback so far.

    In our next session Sergio Schvezov is going to talk about what’s new in Snapcraft and the changes in the 2.x series. Be there and you are going to be up-to-date on how to publish your software on Snappy Ubuntu Core. There will be time for questions afterwards.

    Join us on the 12th February 2016 at 16:00 UTC on http://ubuntuonair.com.

    on February 08, 2016 10:47 AM

    Ubuntu Membership!

    Simon Quigley

    I recently obtained official Ubuntu Membership, hence this blog post being on Planet Ubuntu. I wanted to summarize a few concepts I learned while working towards this goal.

    What is Ubuntu Membership?

    From https://wiki.ubuntu.com/Membership, "Official Ubuntu Membership means recognition of significant and sustained contribution to Ubuntu or the Ubuntu community." I would suggest checking out that page if you would like to know more.

    Details about the meeting

    Meeting log: http://ubottu.com/meetingology/logs/ubuntu-meeting/2016/ubuntu-meeting.2016-02-04-22.01.moin.txt

    Wiki page: https://wiki.ubuntu.com/tsimonq2

    Launchpad page: https://launchpad.net/~tsimonq2


    I keep all my contributions up-to-date here, so if you would like to learn more about my contributions, that is where to start.

    Lessons Learned/Advice I have received

    If you plan on getting your membership in the future, this is the advice that I would give:

    When applying:
    • Be yourself.
    • Have a statement prepared beforehand describing a bit about you and what you have done in the community, with links to wiki pages. My original statement was:
    Wiki Page: https://wiki.ubuntu.com/tsimonq2 , Launchpad: https://launchpad.net/~tsimonq2 , Ubuntu US Wisconsin LoCo Team Wiki Page:https://wiki.ubuntu.com/WisconsinTeam
    My name is Simon Quigley (tsimonq2) and I am from Wisconsin, USA. I am currently 13 years old(I turn 14 in March of 2016). I have been interested in computers for the past few years, and I started using Ubuntu in February 2015. In late July, I used Lubuntu due to the condition of my computer, and it really brought my computer back to life. So I switched, and I said to myself, "hey, I really should get involved with the community." So I did. I Googled a lot of things, wanting to contribute to Lubuntu, and I found QA. It seemed easy enough to start with, but I was really confused/unsure on what I had to do. I looked around, and I read something about IRC. At that point, I joined one of the Lubuntu IRC channels asking for help on this. I was greeted by the most friendly people, specifically wxl. They were all really kind to me, and soon thereafter, I figured out QA and started contributing. For a while I stuck around QA and Lubuntu, but in November of 2015, my contributions really took off. Due to the extensive amount of free time I get by being a kid combined with my fast learning capabilities and intelligence, I explored many different avenues of contributing and "attacked" them all. But before this started, I had some social problems with several individuals in an offtopic channel. That day in late November, I promised to exponentially increase my contributions and fine-tune my social interactions with other people. Ever since, I have contributed countless ways, in countless amounts, and even though it's only been about three months since I really started diving in, I believe I have contributed massively.
    To highlight my contributions(which are on my wiki page if you would like more specifics), my first unintentional form of contribution was through Ask Ubuntu. I answered a few questions and it just sort of died down. After I actually knew what contribution meant, I started with Package QA(when Wily was in development), because at the time, all I had was my old Pentium 4(which I am actually on now). That is how I met the Lubuntu team. After I got my newer computer, I started with ISO QA. ISO QA was really one of the gateway form of contributions that got me familiar with a lot of the tools as well as the Ubuntu install process. I am currently the number one Xenial ISO QA tester, with 114 test cases completed. Right before this happened, I watched the Ubuntu Snappy Clinic, which really inspired me to get started contributing more regularly to Ubuntu. When this was starting, I was in talks with Anthony Hook(he *should* be here today, hello h00k!) to reincarnate the Ubuntu US Wisconsin Local Community team. I emailed him asking about it and he gave me the position of contact(the way he tells it, I stepped up to the position, but I guess it depends on how you look at it XD). Our team has monthly meetings and informal IRC meetings(the next one is tomorrow on #ubuntu-us-wi). I have worked to establish many resources and options for the team. Right now we are sort of in a transitional phase, where things are getting set up and we have a lot of works in progress. At this point, after the LoCo had it's first meeting, I started contributing to the Ubuntu Weekly Newsletter. At first I just wrote summaries, but recently I have also helped with link hunting. This brings me to mid to late December. I started as a mentor for Google Code-in, which, to summarize it, is a project that is to help high school students with an introduction to Open Source. I just created tasks and "mentored" them. What that means is to help the student complete the task, and to review the task when it is done. balloons should be around, he was an "Admin" for Ubuntu. He helped with the technical side of things. He witnessed some of the mentoring I did for QA tasks. wxl co-mentored some tasks as well.
    Those were my contributions leading up to recently. Recently I have been starting with the development(code) side of Ubuntu. I have been looking at FTBFS(Failed To Build From Source, http://qa.ubuntuwire.org/ftbfs/ ) issues and although I haven't fixed any issues that require packages, I have requested rebuilds and filed MIRs(Main Inclusion Request). Along with that, I have also recently been starting to fix QA test cases and I am shortly going to be working to formulate some documentation for the API(yes, there's an API :D).
    So although this is a very long explanation and it probably fills up your IRC client's screen, I hope you look favorably upon my application for Ubuntu Membership. Thank you.
    I showed this to Walter Lapchynski and he told me this was MILES too long. So I revised this a bit and here is what I pasted(if you look at the logs it got cut off but I think they know what I meant):
    Wiki Page: https://wiki.ubuntu.com/tsimonq2 , Launchpad: https://launchpad.net/~tsimonq2 , Ubuntu US Wisconsin LoCo Team Wiki Page:https://wiki.ubuntu.com/WisconsinTeam
    My name is Simon Quigley (tsimonq2) and I am from Wisconsin, USA. I am currently 13 years old(I turn 14 in March of 2016). I have been interested in computers for the past few years, and I started using Ubuntu in February 2015. My contributions started in late July after asking a question on a Lubuntu IRC channel and meeting friendly people. My forms of contribution include but are not limited to: Package and ISO QA, Ubuntu Weekly Newsletter summaries and link finding, complete reincarnation of the Ubuntu US Wisconsin Local Community Team, helping a lot with Lubuntu, being a Google Code-in mentor, Ask Ubuntu, and various manual QA test case fixes.
    I hope you look favorably upon my application for Ubuntu Membership. If you have any questions/comments/concerns please let me know. Thank you.
    So my suggestion here is, make a statement that is not TOO long, but not too short either. The suggested length is 1-5 sentences and I think this is a great amount.
    • Be prepared to answer questions about your contributions/community interactions.
    In the meeting, Thomas Ward kept me on my feet, but from meeting logs that I have read, there aren't an overly excessive amount of questions.
    • The LoCo council will probably be silent.
    As far as I remember, they have a special IRC channel that they communicate in. They also have a mailing list. This does NOT mean anything bad. I was really nervous, so this was the worst part(I went and got some spicy foods, I don't know why), but consider it a drumroll.

    Here is some advice I can give for contributing in preparation for the meeting.
    • Be curious and learn as much as you can
    Believe me, you don't know everything you can in the Ubuntu community already. If you do, you already have membership. :)

    Always be curious. I used Ubuntu from February to July before contributing, and this is the reason I started contributing. I wanted hands-on knowledge about how Ubuntu works on the inside. Sure, you can watch other people contribute, but you really don't know much unless you get your hands dirty in my experience.

    This is really the main premise of why I started/continued to contribute.
    • Don't be afraid to ask questions
    Questions produce answers. Answers produce more questions. Those answers produce more questions. This can stretch your knowledge and contribution avenues more than you think. I wondered how packages were built in the Ubuntu archive, so I found FTBFS. FTBFS led me to build logs. This led me to schroots. And I now regularly use schroots today. Believe me, this helps more than you think.

    This concludes my advice to new contributors and people who want to get their membership. If you would like to start contributing, check out find-a-task. If you want to explore more avenues to contribute, check out the Ubuntu Community page. And lastly, if you want one-on-one help with Linux in general(there are Ubuntu people around there so don't be afraid to ask about that), check out Linux Padawan.

    If you have questions/comments/concerns about this article or you would like to work with me to get started with contributing to Ubuntu, my email is sqawesome99@gmail.com (tsimonq2@ubuntu.com should work in a week or two, but it doesn't seem to be working yet, :/) or I am tsimonq2 on Freenode(PMs and pings welcome).
    on February 08, 2016 01:46 AM

    February 07, 2016

    Meet Harry SilverLion.   How did you first get started using Linux? What distros, software or resources did you use while learning? Honestly speaking I can not recall the exact time and date of my very first contact with Linux. What I do remember though, is an event in 2006. Back then – during my […]
    on February 07, 2016 11:46 AM

    February 06, 2016

    So let's encrypt thing started. And it can do challenges over http (serving text files) and over dns (serving .txt records).

    My "infrastructure" is fairly modest. I've seen too many of my email accounts getting swamped with spam, and or companies going bust. So I got my own domain name surgut.co.uk. However, I don't have money or time to run my own services. So I've signed up for the Google Apps account for my domain to do email, blogging, etc.

    Then later i got the libnih.la domain to host API docs for the mentioned library. In the world of .io startups, I thought it's an incredibly funny domain name.

    But I also have a VPS to host static files on ad-hoc basis, run VPN, and an irc bouncer. My irc bouncer is ZNC and I used a self-signed certificate there, thus i had "ignore" ssl errors in all of my irc clients... which kind of defeats the purposes somewhat.

    I run my VPS on i386 (to save on memory usage) and on Ubuntu 14.04 LTS managed with Landscape. And my little services are just configured by hand there (not using juju).

    My first attempt at getting on the let's encrypt bandwagon was to use the official client. By fetching debs from xenial, and installing that on LTS. But the package/script there is huge, has support for things I don't need, and wants dependencies I don't have on 14.04 LTS.

    However I found a minimalist implementation letsencrypt.sh implemented in shell, with openssl and curl. It was trivial to get dependencies for and configure. Specified a domains text file, and that was it. And well, added sym links in my NGINX config to serve the challenges directory & a hook to deploy certificate to znc and restart that. I've added a cronjob to renew the certs too. Thinking about it, it's not complete as I'm not sure if NGINX will pick up certificate change and/or if it will need to be reloaded. I shall test that, once my cert expires.

    Tweaking config for NGINX was easy. And I was like, let's see how good it is. I pointed https://www.ssllabs.com/ssltest/ at my https://x4d.surgut.co.uk/ and I got a "C" rating. No forward secrecy, vulnerable to down grade attacks, BEAST, POODLE and stuff like that. I went googling for all types of NGINX configs and eventually found website with "best known practices" https://cipherli.st/ However, even that only got me to "B" rating, as it still has Diffie-Hellman things that ssltest caps at "B" rating. So I disabled those too. I've ended up with this gibberish:

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:AES256+EECDH";
    ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
    ssl_session_cache shared:SSL:10m;
    #ssl_session_tickets off; # Requires nginx >= 1.5.9
    ssl_stapling on; # Requires nginx >= 1.3.7
    ssl_stapling_verify on; # Requires nginx => 1.3.7
    #resolver $DNS-IP-1 $DNS-IP-2 valid=300s;
    #resolver_timeout 5s;
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;

    I call it gibberish, because IMHO, I shouldn't need to specify any of the above... Anyway I got my A+ rating.

    However, security is as best as the weakest link. I'm still serving things over HTTP, maybe I should disable that. And I'm yet to check how "good" the TLS is on my znc. Or if I need to further harden my sshd configuration.

    This has filled a big gap in my infrastructure. However a few things remain served over HTTP only.

    http://blog.surgut.co.uk is hosted by an Alphabet's / Google's Blogger service. Which I would want to be served over HTTPS.

    http://libnih.la is hosted by GitHub Inc service. Which I would want to be served over HTTPS.

    I do not want to manage those services, experience load / spammers / DDoS attacks etc. But I am happy to sign CSRs with let's encrypt and deploy certs over to those companies. Or allow them to self-obtain certificates from let's encrypt on my behalf. I used gandi.net as my domain names provider, which offers an RPC API to manage domains and their zones files, thus e.g. I can also generate an API token for those companies to respond with a dns-01 challenge from let's encrypt.

    One step at a time I guess.

    The postings on this site are my own and don't necessarily represent any past/present/future employers' positions, strategies, or opinions.
    on February 06, 2016 11:30 PM

    I have a Cubox-i and these are my notes to install Debian with the standard u-boot and linux kernel from the Debian archive.

    Some requirements on the host:

    apt-get install qemu-user-static debootstrap

    Assuming the SD-Card is available as /dev/sdb :

    # define our target device (mmc card) and the directory we use
    export TARGETDEV=/dev/sdb
    export MNTDIR=/mnt/tmp
    # clean some blocks
    dd if=/dev/zero of=$TARGETDEV bs=1M count=4
    # create a single partition and ext4 filesystem
    echo "n
    "|fdisk $TARGETDEV
    mkfs.ext4 -L rootfs "$TARGETDEV"1
    mkdir -p $MNTDIR
    mkdir -p $MNTDIR/etc/{default,flash-kernel}
    echo "SolidRun Cubox-i Dual/Quad" >> $MNTDIR/etc/flash-kernel/machine
    echo 'LINUX_KERNEL_CMDLINE="root=/dev/mmcblk0p1 rootfstype=ext4 ro rootwait console=ttymxc0,115200 console=tty1"' >> $MNTDIR/etc/default/flash-kernel
    echo '/dev/mmcblk0p1 / ext4 defaults,noatime 0 0' >> $MNTDIR/etc/fstab
    # get and install packages via debootstrap
    qemu-debootstrap --foreign  --include=ntp,ntpdate,less,u-boot,u-boot-tools,flash-kernel,linux-image-armmp,kmod,openssh-server,firmware-linux-free,bash-completion,dialog,fake-hwclock,locales,vim --arch=armhf stretch $MNTDIR http://ftp.de.debian.org/debian/
    # copy u-boot files to SD-Card (and it's 69, not 42. See cuboxi README from u-boot source tree)
    dd if=$MNTDIR/usr/lib/u-boot/mx6cuboxi/SPL of=$TARGETDEV bs=1K seek=1
    dd if=$MNTDIR/usr/lib/u-boot/mx6cuboxi/u-boot.img of=$TARGETDEV bs=1K seek=69
    # set root password
    chroot $MNTDIR passwd root
    # serial console
    echo 'T0:23:respawn:/sbin/getty -L ttymxc0 115200 vt100' >> $MNTDIR/etc/inittab
    # hostname
    echo "cubox" >> $MNTDIR/etc/hostname
    # network eth0
    cat <<eof>> $MNTDIR/etc/network/interfaces.d/eth0
    auto eth0
    allow-hotplug eth0
    iface eth0 inet dhcp
    # loopback
    cat <<eof>> $MNTDIR/etc/network/interfaces.d/lo
    auto lo
    iface lo inet loopback

    That’s it. Insert the SD-Card, connect with Putty or minicom and yo should see a booting system and be able to login.

    on February 06, 2016 11:24 PM

    From the 21st to the 24th the 14th Southern California Linux Expo took place in Pasadena. Since many years, there is also an UbuCon happening. This year was the first time when the newly created "UbuCon Summit" took place.

    The people who are involved in the international Ubuntu-Community probably heard about the UbuCon Summit. It is the new attempt by Ubuntus Community Team and the community to bring the community back together, after the end of the Ubuntu Developer Summits. The Ubuntu Developer Summits got abandoned in 2012 because it was too expensive. Personally I didn't have a chance to visit a Ubuntu Developer Summit, mainly because I wasn't much involved in the international community back then. I couldn't decline to jump at the chance to attend the UbuCon Summit.

    At this point I want to thank everybody who donated to the Ubuntu Community Donations program. Without that I wouldn't have the chance to go to the UbuCon Summit, Thanks everyone!

    Day 0

    After a long (and delayed) flight, I arrived in Pasadena. The day "0" was the day before the UbuCon Summit officially started. It was the first meet and greet at a wine bar. For me it was the first time to meet a couple of people which I only knew online before, so I was really happy to finally meet Nathan Haines, Richard Gaskin, Michael Hall, José Rey, Elizabeth K. Joseph and all the others which I forgot to mention.

    Day 1

    At 10 o'clock in the morning the UbuCon Summit officially started. Before the keynote by Mark Shuttleworth started, Nathan Haines and Richard Gaskin as the main organisers of the event, welcomed everybody in their welcoming speech. The ballroom was already full at that time, there weren't that many free seats left. Mark mainly focused Snappy, Containers and the Internet of Things on his keynote, interestingly the Phone did only get a small reference at the end of the keynote, when he slightly touched the topic of convergence. After his talk, a few lightning talks followed. Sergio Schvezov talked about building snap packages with snapcraft, followed by Jorge Castro about Gaming on Ubuntu. Didier Roche presented the tool "Ubuntu Make" and was followed by the new Kubuntu lead Scarlett Clark. She was really shy, so it was just a couple of minutes long talk about the current tasks of the Kubuntu project. After that the group photo followed, which is not yet public. (Where is it Nathan? ;)).

    After lunch, the actual talks started. Nathan Haines started with "The Future of Ubuntu" and on the same time Sergio Schvezov and Canonicals Product Manager Manik Taneja talked about snappy. I've attended the snappy talk, where I didn't learn much new stuff, because I was already familiar with the basics of snappy. After that, my own talk followed about the project Labdoo.org. The project aims to collect old and used laptops in industrial countries, which are not used anymore or got replaced by new hardware. This was actually my very fist talk in English, as a non-native English speaker this was a harder step for me. Anyhow only 15-20 people attended my talk and I was already done after 30 minutes, because I was too nervous and also spoke too fast so I ended up forgetting half of the stuff… Beside my not that great performance at my talk, Jono Bacons talk was on the same time, where all the people went.

    After these talks, three more talks followed in two tracks. I didn't follow the next talks completely, so I had more time to talk to so many other cool people.

    At the evening there was the Canonical-sponsored social-event. I had another priority for that time, so I went to the talk "Floss reflections" by Jon 'maddog' Hall, Jono Bacon and Keila Banks. It was followed by Bryan Lundukes amusing "Linux Sucks" talk which you shouldn't miss seeing on YouTube. Finally, I joined the social event at the Brazilian bar afterwards. It was totally worth! :)

    Day 2

    The second day was mainly the Unconference-Day. But before that the second keynote of SCALE took place. Cory Doctorow talked about the topic "No Matter Who's Winning the War on General Purpose Computing, You're Losing". One interesting slot followed after the keynote. The "Ubuntu Leadership Panel" discussed many things, including positive and negative aspects in the last year. The panel included Daniel Holbach as part of the Community Counil, David Planella as the Community Team Manager, Olli Ries as the Director of Engineering, Mark Shuttleworth as the Ubuntu Founder, Elizabeth Joseph as a former Community Council Member, Nathan Haines as part of the LoCo Council and José Rey as a UbuCon LA organiser.

    One of the sponsors of the UbuCon Summit was Dell. Barton George, founder of "Project Sputnik" - the ubuntu powered Dell XPS 13 Developer Edition - also talked about the project in a lightning talk. After that the raffle took place, where I sadly didn't win, boo! A cool thing about Barton George was, that he was very open and cool to talk to, he even started talking to people (like me) and was interested what we do in the community. The second lightning talk was by Michael Hall about Ubuntu Convergence Demo, he even connected his Nexus 4 to the projector to make the demo. Alan Pope and Jorge Castro followed then by the instructions about the unconference sessions. There were many sessions which were spontaneously added to the schedule. The sessions covered topics like "Snappy for Sys-Admins", "Snap Packaging", "In App Purchases" or "Attracting Non-Ubuntu App Developers". Sadly the amount of people radically reduced. There were only like 30-40 people in all unconference session altogether and the bigger part of these were Canonical employees. The UbuCon Summit ended in the afternoon, after the Unconference-Session.

    During the Unconference-Session the exhibit hall opened, where many companies and project had their booth, of course there was also a booth from Canonical and Ubuntu. They had different ubuntu devices, like laptops, phones and a drone running snappy Ubuntu, even though it wasn't really snappy but rather slow…

    At the afternoon it was time for Bad Voltage Live! It was really cool and not only because I listen to their podcast regularly. The beginning was delayed because Jono Bacons Macbook (running Mac OS and Keynote) had issues playing audio. That was funny, but they somehow got managed to fix it partly. I recommend watching the recording on YouTube, specially the beginning with all the audio issues!

    After the show there was another social-event, the after party of Bad Voltage, which was sponsored by a sponsor, again at the wine bar.

    Day 3

    The third day was the first SCALE-only day and it had a huge schedule with up to ten simultaneously talks. Like the other days, also the third day started with a keynote, this time again from Mark Shuttleworth. The topic of his talk was "Free Software in the age of app stores". The talk was pretty similar to his talk on the opening of the UbuCon, so I would say that there was like 20% new or other stuff in it.

    I've visited a few talks on Saturday, mainly "Continuous Delivery of Infrastructure with Jenkins", "Building Awesome Communities with GitHub" from Jono Bacon and "Docker, Kubernetes, and Mesos: Compared". Sadly my unterstanding of the container technologies aren't that high currently, so I didn't understand most of the talk. But beside that the other talks were pretty good.

    On the other time I was mostly walking around in the exhibit hall, also sometimes standing and talking with people at the Ubuntu booth. There were a lot of people at the Ubuntu booth and many were interested in convergence. One guy was so much excited about the Nexus 4 and the attached screen/keyboard/mouse that he said "This is so awesome, I would kill for it!". It was kind of strange, but made a good laugh. ;-)

    At the end of the day the "Game Night" took place in a smaller part of the exhibit hall. The idea and the realisation were great! There were a lot of people playing different types of games in the hall, like table tennis, pinball, kicker table or even with Lego. I didn't see many people with their phones in their hands (except for making photos) and nearly no person who was using their laptop.

    Day 4

    The last day started with the keynote of Sarah Sharp about "Improving Diversity with Maslow's Hierarchy of Needs". This keynote was in fact very interesting and she mentioned many points which I didn't think of. She started her talk with the instruction to raise your hand if you're male and then proceed with the second clause if you're white. So I had to put down my hand again. All these people had to say "Improving diversity in open source communities is my responsibility." While I generally agree with that, I was a little confused because I didn't have to raise my hand because I'm not white. Personally I never had (and never directly heard about) any issues in open source communities because I'm not white. Beside that point her talk really impressed many people. She even got standing ovations afterwards.

    Next talk for me was "From Sys Admin to Netflix SRE“ from two Netflix guys. This was a talk again, where I couldn't follow completely because I didn't know much about the sys admin stuff. The third and last talk for me was from Dustin Kirkland about "adapt" which was quite interesting.


    Looking back at the event, I've noticed that I skipped too many talk slots. Even though there were many talks at the same time, so I had to decide which one I should go to. Compared to German Linux or Open Source Conferences I've noticed that the (felt) percentage of attending women were higher than in Germany. One cool point of SCALE is also that they help young and new people to talk at conferences. I've never seen kids under the age of 15 talking in front of many people yet. Sadly the video and live-streaming recording weren't that great. The YouTube channel gets all the talks slowly added. My talk is also available with broken slides and bad audio quality.

    I really enjoyed UbuCon and SCALE. It was the first time to go to a Linux and Open Source Conference which was not in Germany and it was also the first time at an international Ubuntu event. At the end I talked to so many people and also skipped some talks because I was talking to different people. I hope to have the chance to go to another UbuCon Summit in the next year and hope to see you all there again! :-)

    Beside the UbuCon Summit the next bigger UbuCon is the UbuCon Europe which takes place in Essen, Germany from the 18th to 20th November 2016! Me as the organiser of the event I hope to see you there too!

    on February 06, 2016 09:00 PM

    Slashdot Effect

    Matthew Helmke

    The Slashdot Effect isn’t what it used to be (or maybe I’m not terribly interesting…possible). This blog was linked to from the beginning of an article a couple days ago. On Thursday, this blog had 178 views. On January 26, 2009, we had 7,120 views, which is the highest number recorded since I switched to WordPress and my stats were reset, mostly because StumbleUpon listed this post. Before that, back in 2008 we had more than 20,000 visitors in one day when I posted this.

    on February 06, 2016 04:43 PM

    People = People

    Joe Liau

    Technology made *for* people Trapped in technology? (source)

    “Ubuntu is about people.”
    “Ubuntu is for human beings.”

    We have heard these phrases as good reminders as to “why” we are making Ubuntu. However, there is a growing sense of disconnect from the definition of “what” we are doing for the people. The “what” has to come back to the “why”. So, we need to clarify and simplify what we are doing.

    Ubuntu = Ubuntu (oo-boon-too) — A free operating system inspired by an African philosophy that says that we all are one.

    Ubuntu = People. When we are people-focused, then we are making Ubuntu. Anyone can make a product that people use. Anyone can create convergence of people’s devices. But, Ubuntu brings it all back to the people, and for the people. We don’t get trapped in the technology.

    People = People. Ubuntu is about people. But, everyone is unique. We are not all technology-focused, and we don’t all have the freedom to enjoy technology without advanced knowledge. When we create Ubuntu we think of the humans before the technology. When we come together to celebrate Ubuntu, we celebrate the humans who are involved in the project. Our events and attention focus on the people and not just software. This means that we establish environments that allow and encourage people to be people. We don’t get Ubuntu by simply having people there. We get Ubuntu by acknowledging that those people are human beings who are part of the bigger picture. The things that we create are great, but Ubuntu is about people, so it always comes full circle, back to the people.


    on February 06, 2016 05:11 AM

    February 05, 2016

    Do services like Facebook and Twitter really help worthwhile participation in democracy, or are they the most sinister and efficient mechanism ever invented to control people while giving the illusion that they empower us?

    Over the last few years, groups on the left and right of the political spectrum have spoken more and more loudly about the problems in the European Union. Some advocate breaking up the EU, while behind the scenes milking it for every handout they can get. Others seek to reform it from within.

    Yanis Varoufakis on motorbike

    Most recently, former Greek finance minister Yanis Varoufakis has announced plans to found a movement (not a political party) that claims to "democratise" the EU by 2025. Ironically, one of his first steps has been to create a web site directing supporters to Facebook and Twitter. A groundbreaking effort to put citizens back in charge? Or further entangling activism in the false hope of platforms that are run for profit by their Silicon Valley overlords? A Greek tragedy indeed, in the classical sense.

    Varoufakis rails against authoritarian establishment figures who don't put the citizens' interests first. Ironically, big data and the cloud are a far bigger threat than Brussels. The privacy and independence of each citizen is fundamental to a healthy democracy. Companies like Facebook are obliged - by law and by contract - to service the needs of their shareholders and advertisers paying to study and influence the poor user. If "Facebook privacy" settings were actually credible, who would want to buy their shares any more?

    Facebook is more akin to an activism placebo: people sitting in their armchair clicking to "Like" whales or trees are having hardly any impact at all. Maintaining democracy requires a sufficient number of people to be actively involved, whether it is raising funds for worthwhile causes, scrutinizing the work of our public institutions or even writing blogs like this. Keeping them busy on Facebook and Twitter renders them impotent in the real world (but please feel free to alert your friends with a tweet)

    Big data is one of the areas that requires the greatest scrutiny. Many of the professionals working in the field are actually selling out their own friends and neighbours, their own families and even themselves. The general public and the policy makers who claim to represent us are oblivious or reckless about the consequences of this all-you-can-eat feeding frenzy on humanity.

    Pretending to be democratic is all part of the illusion. Facebook's recent announcement to deviate from their real-name policy is about as effective as using sunscreen to treat HIV. By subjecting themselves to the laws of Facebook, activists have simply given Facebook more status and power.

    Data means power. Those who are accumulating it from us, collecting billions of tiny details about our behavior, every hour of every day, are fortifying a position of great strength with which they can personalize messages to condition anybody, anywhere, to think the way they want us to. Does that sound like the route to democracy?

    I would encourage Mr Varoufakis to get up to speed with Free Software and come down to Zurich next week to hear Richard Stallman explain it the day before launching his DiEM25 project in Berlin.

    Will the DiEM25 movement invite participation from experts on big data and digital freedom and make these issues a core element of their promised manifesto? Is there any credible way they can achieve their goal of democracy by 2025 without addressing such issues head-on?

    Or put that the other way around: what will be left of democracy in 2025 if big data continues to run rampant? Will it be as distant as the gods of Greek mythology?

    Still not convinced? Read about Amazon secretly removing George Orwell's 1984 and Animal Farm from Kindles while people were reading them, Apple filtering the availability of apps with a pro-Life bias and Facebook using algorithms to identify homosexual users.

    on February 05, 2016 10:07 PM

    Have We Converged Yet?

    Randall Ross

    Apologies for the long period with no updates. I'll be bringing back this blog with a fresh look and more new exciting and original topics soon. I wanted to get this article out without further delay though because it captures an important and timely idea that has been missed by the tech news sites... again.

    Convergence is not about a unified computing experience across all your devices. Although that's an important goal, convergence is more about that point in time where your philosophy that technology should respect people converges with that of a group or company that believes the same.

    Recently, my friend Wayne (who's a long-time Ubuntu Vancouverite) pointed out his thoughts on Ubuntu's convergence announcement.

    Here's a teaser from Wayne's blog:

      "... it became even more apparent to me that the ‘battle for the operating system’ will eventually be won by Ubuntu in numbers (it is already won in principle)"

      "You see, Ubuntu cares about you, because it’s built by people who care about things other than shareholders’ dividends."

    Please read Wayne's full article here. http://wayneoutthere.com/race-or-marathon-to-convergence/ It's a quick read and will make you say "Hmmm..."

    Like Wayne, I hope you will reject those in the tech industry that insist on keeping you focused on what's unimportant. It's *never* about widget this, or kernel that.

    It's about the agenda that is behind the technology.

    The friendly folks who make Ubuntu are charting a course in computing that respects people. The Ubuntu Tablet is another way to deliver that goal. That's the real news.

    Image "Happy Boys" by https://www.flickr.com/photos/deepblue66/ cc-by-nc-sa

    on February 05, 2016 08:43 PM

    NGINX PPA Cleanup

    Thomas Ward

    The NGINX PPAs have had some cleanup done to them today.

    Previously, the PPAs kept the ‘older’ package versions in them for now-EOL releases (this included keeping ancient versions for Maverick, Natty, Oneiric, Quantal, Raring, Saucy, and Utopic). This was decided upon in order to prevent people from seeing 404 errors on PPA checking. We also included a large list of “Final Version” items for each Ubuntu release, stating there would be no more updates for that release, but keeping the ancient packages in place for installation.

    Looking back on this, this is a bad thing for multiple reasons. Firstly, it means people in ‘older releases’ can still use the PPA for that release. This means security-holed versions of NGINX could still be used. Secondly, it implies that we still ‘support’ the use of older releases of Ubuntu in the PPAs. This has the security connotation that we are OK with people using no-longer-updated releases, which in turn have their own security holes.

    So, today, in an effort to discourage the use of ancient Ubuntu versions which get no security updates or support anymore, I’ve made changes to the way that the PPAs will operate going forward: Unless a release recently went End of Life, versions of the nginx package in the PPAs for older Ubuntu releases are no longer going to be kept, and will be deleted a week after the version goes End of Life.

    Therefore, as of today, I have deleted all the packages in the NGINX PPAs (both Stable and Mainline, in both staging and release PPAs) for the following releases of Ubuntu:

    • Maverick (10.10)
    • Natty (11.04)
    • Oneiric (11.10)
    • Quantal (12.10)
    • Raring (13.04)
    • Saucy (13.10)
    • Utopic (15.04)

    People still using ancient versions of NGINX or Ubuntu are strongly recommended to upgrade to get continued support and security/bug fixes.

    on February 05, 2016 05:20 PM

    In the last two days, I’ve installed two Android apps (names redacted because it’s not their fault!) which, on install, have popped up a custom notification saying that the app “requests Sensitive Permissions”.

    UPDATE: this is not these apps’s fault. It is ES File Explorer’s fault. Uninstall ES File Explorer. And everything below applies to the ES File Explorer people.

    Tapping this notification pops up a thing named “Apps Analyze” which pretends to be analysing the stuff on your phone and then shows you a bunch of irrelevant information about your phone and weather and Facebook info, which have nothing whatsoever to do with the app you installed.

    Let me be clear. This is bullshit. This is nothing more than malware. I wanted to dim my screen, or buy a sandwich. I did not want to have my phone “analysed”; I did not want “sensitive permissions”. I don’t think this thing needs permissions at all; at the very best it’s a completely unwanted bundled thing, like Oracle bundling adware with their Java installer. At worst, it’s some sort of unpleasant malware which harvests data from my phone and ships it off somewhere. I don’t know what it does; it’s certainly bloatware at the very least; there’s a Reddit thread about it.

    I don’t know where this is coming from; since it’s shown up in two separate apps, it’s presumably some sort of third-party component, and presumably the authors of it pay app developers to include it. I do know where it’s coming from; it’s from ES File Explorer. If you are an Android app developer and you are using this thing, fucking pack it in. This is a hysterical betrayal of your users’ trust. I know it’s hard work to monetise software that you write. I know it’s tempting to scrape the barrel like this. But if you are using this, you are a terrible person and you should sit down and have a bloody word with yourself. Stop it. You’re pissing in the waterhole and ruining things for everyone. Do you really want to be part of this race to the bottom?

    It’s possible that this is an official Android thing, since it’s also showing up in Google Sheets and so on. If so, Android people, what the hell are you thinking of?

    on February 05, 2016 12:52 PM

    This is a follow-up to the End of Life warning sent last month to confirm that as of today (February 4, 2016), Ubuntu 15.04 is no longer supported. No more package updates will be accepted to 15.04, and it will be archived to old-releases.ubuntu.com in the coming weeks.

    The original End of Life warning follows, with upgrade instructions:

    Ubuntu announced its 15.04 (Vivid Vervet) release almost 9 months ago, on April 23, 2015. As a non-LTS release, 15.04 has a 9-month month support cycle and, as such, the support period is now nearing its end and Ubuntu 15.04 will reach end of life on Thursday, February 4th. At that time, Ubuntu Security Notices will no longer include information or updated packages for Ubuntu 15.04.

    The supported upgrade path from Ubuntu 15.04 is via Ubuntu 15.10. Instructions and caveats for the upgrade may be found at:


    Ubuntu 15.10 continues to be actively supported with security updates and select high-impact bug fixes. Announcements of security updates for Ubuntu releases are sent to the ubuntu-security-announce mailing list, information about which may be found at:


    Since its launch in October 2004 Ubuntu has become one of the most highly regarded Linux distributions with millions of users in homes, schools, businesses and governments around the world. Ubuntu is Open Source software, costs nothing to download, and users are free to customise or alter their software in order to meet their needs.

    Originally posted to the ubuntu-security-announce mailing list on Fri Feb 5 03:54:55 UTC 2016 by Adam Conrad, on behalf of the Ubuntu Release Team

    on February 05, 2016 04:22 AM

    February 04, 2016

    People of earth, waving at Saturn, courtesy of NASA.
    “It Doesn't Look Like Ubuntu Reached Its Goal Of 200 Million Users This Year”, says Michael Larabel of Phoronix, in a post that it seems he's been itching to post for months.

    Why the negativity?!? Are you sure? Did you count all of them?

    No one has.

    How many people in the world use Ubuntu?

    Actually, no one can count all of the Ubuntu users in the world!

    Canonical, unlike Apple, Microsoft, Red Hat, or Google, does not require each user to register their installation of Ubuntu.

    Of course, you can buy laptops preloaded with Ubuntu from Dell, HP, Lenovo, and Asus.  And there are millions of them out there.  And you can buy servers powered by Ubuntu from IBM, Dell, HP, Cisco, Lenovo, Quanta, and compatible with the OpenCompute Project.

    In 2011, hardware sales might have been how Mark Shuttleworth hoped to reach 200M Ubuntu users by 2015.

    But in reality, hundreds of millions of PCs, servers, devices, virtual machines, and containers have booted Ubuntu to date!

    Let's look at some facts...
    • Docker users have launched Ubuntu images over 35.5 million times.
    • HashiCorp's Vagrant images of Ubuntu 14.04 LTS 64-bit have been downloaded 10 million times.
    • At least 20 million unique instances of Ubuntu have launched in public clouds, private clouds, and bare metal in 2015 itself.
      • That's Ubuntu in clouds like AWS, Microsoft Azure, Google Compute Engine, Rackspace, Oracle Cloud, VMware, and others.
      • And that's Ubuntu in private clouds like OpenStack.
      • And Ubuntu at scale on bare metal with MAAS, often managed with Chef.
    • In fact, over 2 million new Ubuntu cloud instances launched in November 2015.
      • That's 67,000 new Ubuntu cloud instances launched per day.
      • That's 2,800 new Ubuntu cloud instances launched every hour.
      • That's 46 new Ubuntu cloud instances launched every minute.
      • That's nearly one new Ubuntu cloud instance launched every single second of every single day in November 2015.
    • And then there are Ubuntu phones from Meizu.
    • And more Ubuntu phones from BQ.
    • Of course, anyone can install Ubuntu on their Google Nexus tablet or phone.
    • Or buy a converged tablet/desktop preinstalled with Ubuntu from BQ.
    • Oh, and the Tesla entertainment system?  All electric Ubuntu.
    • Google's self-driving cars?  They're self-driven by Ubuntu.
    • George Hotz's home-made self-driving car?  It's a homebrewed Ubuntu autopilot.
    • Snappy Ubuntu downloads and updates for Raspberry Pi's and Beagle Bone Blacks -- the response has been tremendous.  Download numbers are astounding.
    • Drones, robots, network switches, smart devices, the Internet of Things.  More Snappy Ubuntu.
    • How about Walmart?  Everyday low prices.  Everyday Ubuntu.  Lots and lots of Ubuntu.
    • Are you orchestrating containers with Kubernetes or Apache Mesos?  There's plenty of Ubuntu in there.
    • Kicking PaaS with Cloud Foundry?  App instances are Ubuntu LXC containers.  Pivotal has lots of serious users.
    • And Heroku?  You bet your PaaS those hosted application containers are Ubuntu.  Plenty of serious users here too.
    • Tianhe-2, the world's largest super computer.  Merely 80,000 Xeons, 1.4 TB of memory, 12.4 PB of disk, all number crunching on Ubuntu.
    • Ever watch a movie on Netflix?  You were served by Ubuntu.
    • Ever hitch a ride with Uber or Lyft?  Your mobile app is talking to Ubuntu servers on the backend.
    • Did you enjoy watching The Hobbit?  Hunger Games?  Avengers?  Avatar?  All rendered on Ubuntu at WETA Digital.  Among many others.
    • Do you use Instagram?  Say cheese!
    • Listen to Spotify?  Music to my ears...
    • Doing a deal on Wall Street?  Ubuntu is serious business for Bloomberg.
    • Paypal, Dropbox, Snapchat, Pinterest, Reddit. Airbnb.  Yep.  More Ubuntu.
    • Wikipedia and Wikimedia, among the busiest sites on the Internet with 8 - 18 billion page views per month, are hosted on Ubuntu.
    How many "users" of Ubuntu are there ultimately?  I bet there are over a billion people today, using Ubuntu -- both directly and indirectly.  Without a doubt, there are over a billion people on the planet benefiting from the services, security, and availability of Ubuntu today.
    • More people use Ubuntu than we know.
    • More people use Ubuntu than you know.
    • More people use Ubuntu than they know.
    More people use Ubuntu than anyone actually knows.

    Because of who we all are.

    on February 04, 2016 08:08 PM

    A new look for tablet

    Canonical Design Team

    Today we launched a new and redesigned tablet section on ubuntu.com that introduces all the cool features of the upcoming BQ Aquaris M10 Ubuntu Edition tablet.

    Breaking out of the box

    In this redesign, we have broken out of the box, removing the container that previously held the content of the pages. This makes each page feel more spacious, giving the text and the images plenty of room to shine.

    This is something we’ve wanted to do for a while across the entire site, so we thought that having the beautiful, large tablet photos to work with gave us a good excuse to try out this new approach.


    The overview page of the tablet section of ubuntu.com, before (left) and after


    For most of the section, we’ve used existing patterns from our design framework, but the removal of the container box allowed us to play with how the images behave across different screen sizes. You will notice that if you look at the tablet pages on a medium to small screen, some of the images will be cropped by the edge of the viewport, but if you see the same image in a large screen, you can see it in its entirety.


    From the top: the same row on a large, medium and small screen


    How we did it

    This project was a concerted effort across the design, marketing, and product management teams.

    To understand the key goals for this redesign, we collected the requirements and messaging from the key stakeholders of the project. We then translated all this information into wireframes that guide the reader through what Ubuntu Tablet is. These went through a few rounds of testing and iteration with both users and stakeholders. Finally, we worked with a copywriter to refine the words of each section of the tablet pages.


    Some of the wireframes


    To design the pages, we started with exploring the flow of each page in large and small screens in flat mockups, which were quickly built into a fully functioning prototype that we could keep experimenting and testing on.


    Some of the flat mockups created for the redesign


    This design process, where we start with flat mockups and move swiftly into a real prototype, is how we design and develop most of our projects, and it is made easier by the existence of a flexible framework and design patterns, that we use (and sometimes break!) as needed.


    Testing the new tablet section on real devices


    To showcase the beautiful tablet screen designs on the new BQ tablet, we coordinated with professional photographers to deliver the stunning images of the real device that you can enjoy along every new page of the section.


    One of the many beautiful device photos used across the new tablet section of ubuntu.com


    Many people were involved in this project, making it possible to deliver a redesign that looks great, and is completed on time — which is always good a thing :)

    In the future

    In the near future, we want to remove the container box from the other sections of ubuntu.com, although you may see this change being done gradually, section by section, rather than all in one go. We will also be looking at redesigning our navigation, so lots to look forward to.

    Now go experience tablet for yourself and let us know what you think!

    on February 04, 2016 04:15 PM

    Embeddable cards for Juju

    Canonical Design Team

    Juju is a cloud orchestration tool with a lot of unique terminology. This is not so much of a problem when discussing or explaining terms or features within the site or the GUI, but, when it comes to external sources, the context is sometimes lost and everything can start to get a little confusing.

    So a project was started to create embeddable widgets of information to not only give context to blog posts mentioning features of Juju, but also to help user adoption by providing direct access to the information on jujucharms.com.

    This project was started by Anthony Dillon, one of the developers, to create embeddable information cards for three topics in particular. Charms, bundles and user profiles. These cards would function similarly to embedded YouTube videos, or embedding a song from Soundcloud on your own site as seen bellow:



    Multiple breakpoints of the cards were established (small, 300px and below. medium: 301px to 625px and large: 626px and up) so that they would work responsively and therefore work in a breadth of different situations and compliment the user’s content referring to a charm, bundle or a user profile without any additional effort for the user.

    We started the process by determining what information we would want to include within the card and then refining that information as we went through the different breakpoints. Here are some of the initial ideas that we put together:

    charm  bundle  profile

    We wrote down all the information there could be related to each type of card and then discussed how that might carry down to smaller card sizes and removed the unnecessary information as we went through the process. For the profile cards, we felt there was not enough information to display a profile card above 625px break point so we limited the card to the medium size.

    Just enter the bundle or the charm name and the card will be generated for you to copy the code snippet to embed into your own content.

    embed card thing

    You can create your own here: http://www.jujugui.org/community/cards

    Below are some examples of the responsive cards are different widths:


    on February 04, 2016 02:36 PM

    13 ways to PulseAudio

    David Henningsson

    All roads lead to Rome, but PulseAudio is not far behind! In fact, how the PulseAudio client library determines how to try to connect to the PulseAudio server has no less than 13 different steps. Here they are, in priority order:

    1) As an application developer, you can specify a server string in your call to pa_context_connect. If you do that, that’s the server string used, nothing else.

    2) If the PULSE_SERVER environment variable is set, that’s the server string used, and nothing else.

    3) Next, it goes to X to check if there is an x11 property named PULSE_SERVER. If there is, that’s the server string, nothing else. (There is also a PulseAudio module called module-x11-publish that sets this property. It is loaded by the start-pulseaudio-x11 script.)

    4) It also checks client.conf, if such a file is found, for the default-server key. If that’s present, that’s the server string.

    So, if none of the four methods above gives any result, several items will be merged and tried in order.

    First up is trying to connect to a user-level PulseAudio, which means finding the right path where the UNIX socket exists. That in turn has several steps, in priority order:

    5) If the PULSE_RUNTIME_PATH environment variable is set, that’s the path.

    6) Otherwise, if the XDG_RUNTIME_DIR environment variable is set, the path is the “pulse” subdirectory below the directory specified in XDG_RUNTIME_DIR.

    7) If not, and the “.pulse” directory exists in the current user’s home directory, that’s the path. (This is for historical reasons – a few years ago PulseAudio switched from “.pulse” to using XDG compliant directories, but ignoring “.pulse” would throw away some settings on upgrade.)

    8) Failing that, if XDG_CONFIG_HOME environment variable is set, the path is the “pulse” subdirectory to the directory specified in XDG_CONFIG_HOME.

    9) Still no path? Then fall back to using the “.config/pulse” subdirectory below the current user’s home directory.

    Okay, so maybe we can connect to the UNIX socket inside that user-level PulseAudio path. But if it does not work, there are still a few more things to try:

    10) Using a path of a system-level PulseAudio server. This directory is /var/run/pulse on Ubuntu (and probably most other distributions), or /usr/local/var/run/pulse in case you compiled PulseAudio from source yourself.

    11) By checking client.conf for the key “auto-connect-localhost”. If so, also try connecting to tcp4:…

    12) …and tcp6:[::1], too. Of course we cannot leave IPv6-only systems behind.

    13) As the last straw of hope, the library checks client.conf for the key “auto-connect-display”. If it’s set, it checks the DISPLAY environment variable, and if it finds a hostname (i e, something before the “:”), then that host will be tried too.

    To summarise, first the client library checks for a server string in step 1-4, if there is none, it makes a server string – out of one item from steps 5-9, and then up to four more items from steps 10-13.

    And that’s all. If you ever want to customize how you connect to a PulseAudio server, you have a smorgasbord of options to choose from!

    on February 04, 2016 12:51 PM
    One issue when running parallel processes is contention of shared resources such as the Last Level Cache (aka LLC or L3 Cache).  For example, a server may be running a set of Virtual Machines with processes that are memory and cache intensive hence producing a large amount of cache activity. This can impact on the other VMs and is known as the "Noisy Neighbour" problem.

    Fortunately the next generation Intel processors allow one to monitor and also fine tune cache allocation using Intel Cache Monitoring Technology (CMT) and Cache Allocation Technology (CAT).

    Intel kindly loaned me a 12 thread development machine with CMT and CAT support to experiment with this technology using the Intel pqos tool.   For my experiment, I installed Ubuntu Xenial Server on the machine. I then installed KVM and an VM instance of Ubuntu Xenial Server.   I then loaded the instance using stress-ng running a memory bandwidth stressor:

     stress-ng --stream 1 -v --stream-l3-size 16M  
    ..which allocates 16MB in 4 buffers and performs various read/compute and writes to these, hence causing a "noisy neighbour".

    Using pqos,  one can monitor and see the cache/memory activity:
    sudo apt-get install intel-cmt-cat
    sudo modprobe msr
    sudo pqos -r
    TIME 2016-02-04 10:25:06
    0 0.59 168259k 9144.0 12195.0 0.0
    1 1.33 107k 0.0 3.3 0.0
    2 0.20 2k 0.0 0.0 0.0
    3 0.70 104k 0.0 2.0 0.0
    4 0.86 23k 0.0 0.7 0.0
    5 0.38 42k 24.0 1.5 0.0
    6 0.12 2k 0.0 0.0 0.0
    7 0.24 48k 0.0 3.0 0.0
    8 0.61 26k 0.0 1.6 0.0
    9 0.37 11k 144.0 0.9 0.0
    10 0.48 1k 0.0 0.0 0.0
    11 0.45 2k 0.0 0.0 0.0
    Now to run a stress-ng stream stressor on the host and see the performance while the noisy neighbour is also running:
    stress-ng --stream 4 --stream-l3-size 2M --perf --metrics-brief -t 60
    stress-ng: info: [2195] dispatching hogs: 4 stream
    stress-ng: info: [2196] stress-ng-stream: stressor loosely based on a variant of the STREAM benchmark code
    stress-ng: info: [2196] stress-ng-stream: do NOT submit any of these results to the STREAM benchmark results
    stress-ng: info: [2196] stress-ng-stream: Using L3 CPU cache size of 2048K
    stress-ng: info: [2196] stress-ng-stream: memory rate: 1842.22 MB/sec, 736.89 Mflop/sec (instance 0)
    stress-ng: info: [2198] stress-ng-stream: memory rate: 1847.88 MB/sec, 739.15 Mflop/sec (instance 2)
    stress-ng: info: [2199] stress-ng-stream: memory rate: 1833.89 MB/sec, 733.56 Mflop/sec (instance 3)
    stress-ng: info: [2197] stress-ng-stream: memory rate: 1847.16 MB/sec, 738.86 Mflop/sec (instance 1)
    stress-ng: info: [2195] successful run completed in 60.01s (1 min, 0.01 secs)
    stress-ng: info: [2195] stressor bogo ops real time usr time sys time bogo ops/s bogo ops/s
    stress-ng: info: [2195] (secs) (secs) (secs) (real time) (usr+sys time)
    stress-ng: info: [2195] stream 22101 60.01 239.93 0.04 368.31 92.10
    stress-ng: info: [2195] stream:
    stress-ng: info: [2195] 547,520,600,744 CPU Cycles 9.12 B/sec
    stress-ng: info: [2195] 69,959,954,760 Instructions 1.17 B/sec (0.128 instr. per cycle)
    stress-ng: info: [2195] 11,066,905,620 Cache References 0.18 B/sec
    stress-ng: info: [2195] 11,065,068,064 Cache Misses 0.18 B/sec (99.98%)
    stress-ng: info: [2195] 8,759,154,716 Branch Instructions 0.15 B/sec
    stress-ng: info: [2195] 2,205,904 Branch Misses 36.76 K/sec ( 0.03%)
    stress-ng: info: [2195] 23,856,890,232 Bus Cycles 0.40 B/sec
    stress-ng: info: [2195] 477,143,689,444 Total Cycles 7.95 B/sec
    stress-ng: info: [2195] 36 Page Faults Minor 0.60 sec
    stress-ng: info: [2195] 0 Page Faults Major 0.00 sec
    stress-ng: info: [2195] 96 Context Switches 1.60 sec
    stress-ng: info: [2195] 0 CPU Migrations 0.00 sec
    stress-ng: info: [2195] 0 Alignment Faults 0.00 sec
    .. so about 1842 MB/sec memory rate and 736 Mflop/sec per CPU across 4 CPUs.  And pqos shows the cache/memory actitivity as:
    sudo pqos -r
    TIME 2016-02-04 10:35:27
    0 0.14 43060k 1104.0 2487.9 0.0
    1 0.12 3981523k 2616.0 2893.8 0.0
    2 0.26 320k 48.0 18.0 0.0
    3 0.12 3980489k 1800.0 2572.2 0.0
    4 0.12 3979094k 1728.0 2870.3 0.0
    5 0.12 3970996k 2112.0 2734.5 0.0
    6 0.04 20k 0.0 0.3 0.0
    7 0.04 29k 0.0 1.9 0.0
    8 0.09 143k 0.0 5.9 0.0
    9 0.15 0k 0.0 0.0 0.0
    10 0.07 2k 0.0 0.0 0.0
    11 0.13 0k 0.0 0.0 0.0
    Using pqos again, we can find out how much LLC cache the processor has:
    sudo pqos -v
    NOTE: Mixed use of MSR and kernel interfaces to manage
    CAT or CMT & MBM may lead to unexpected behavior.
    INFO: Monitoring capability detected
    INFO: CPUID.0x7.0: CAT supported
    INFO: CAT details: CDP support=0, CDP on=0, #COS=16, #ways=12, ways contention bit-mask 0xc00
    INFO: LLC cache size 9437184 bytes, 12 ways
    INFO: LLC cache way size 786432 bytes
    INFO: L3CA capability detected
    INFO: Detected PID API (perf) support for LLC Occupancy
    INFO: Detected PID API (perf) support for Instructions/Cycle
    INFO: Detected PID API (perf) support for LLC Misses
    ERROR: IPC and/or LLC miss performance counters already in use!
    Use -r option to start monitoring anyway.
    Monitoring start error on core(s) 5, status 6
    So this CPU has 12 cache "ways", each of 786432 bytes (768K).  One or more  "Class of Service" (COS)  types can be defined that can use one or more of these ways.  One uses a bitmap with each bit representing a way to indicate how the ways are to be used by a COS.  For example, to use all the 12 ways on my example machine, the bit map is 0xfff  (111111111111).   A way can be exclusively mapped to a COS or shared, or not used at all.   Note that the ways in the bitmap must be contiguously allocated, so a mask such as 0xf3f (111100111111) is invalid and cannot be used.

    In my experiment, I want to create 2 COS types, the first COS will have just 1 cache way assigned to it and CPU 0 will be bound to this COS as well as pinning the VM instance to CPU 0  The second COS will have the other 11 cache ways assigned to it, and all the other CPUs can use this COS.

    So, create COS #1 with just 1 way of cache, and bind CPU 0 to this COS, and pin the VM to CPU 0:
    sudo pqos -e llc:1=0x0001
    sudo pqos -a llc:1=0
    sudo taskset -apc 0 $(pidof qemu-system-x86_64)
    And create COS #2, with 11 ways of cache and bind CPUs 1-11 to this COS:
    sudo pqos -e "llc:2=0x0ffe"
    sudo pqos -a "llc:2=1-11"
    And let's see the new configuration:
    sudo pqos  -s
    NOTE: Mixed use of MSR and kernel interfaces to manage
    CAT or CMT & MBM may lead to unexpected behavior.
    L3CA COS definitions for Socket 0:
    L3CA COS0 => MASK 0xfff
    L3CA COS1 => MASK 0x1
    L3CA COS2 => MASK 0xffe
    L3CA COS3 => MASK 0xfff
    L3CA COS4 => MASK 0xfff
    L3CA COS5 => MASK 0xfff
    L3CA COS6 => MASK 0xfff
    L3CA COS7 => MASK 0xfff
    L3CA COS8 => MASK 0xfff
    L3CA COS9 => MASK 0xfff
    L3CA COS10 => MASK 0xfff
    L3CA COS11 => MASK 0xfff
    L3CA COS12 => MASK 0xfff
    L3CA COS13 => MASK 0xfff
    L3CA COS14 => MASK 0xfff
    L3CA COS15 => MASK 0xfff
    Core information for socket 0:
    Core 0 => COS1, RMID0
    Core 1 => COS2, RMID0
    Core 2 => COS2, RMID0
    Core 3 => COS2, RMID0
    Core 4 => COS2, RMID0
    Core 5 => COS2, RMID0
    Core 6 => COS2, RMID0
    Core 7 => COS2, RMID0
    Core 8 => COS2, RMID0
    Core 9 => COS2, RMID0
    Core 10 => COS2, RMID0
    Core 11 => COS2, RMID0
    ..showing Core 0 bound to COS1, and Cores 1-11 bound to COS2, with COS1 with 1 cache way and COS2 with the remaining 11 cache ways.
    Now re-run the stream stressor and see if the VM has less impact on the LL3 cache:
    stress-ng --stream 4 --stream-l3-size 1M --perf --metrics-brief -t 60
    stress-ng: info: [2232] dispatching hogs: 4 stream
    stress-ng: info: [2233] stress-ng-stream: stressor loosely based on a variant of the STREAM benchmark code
    stress-ng: info: [2233] stress-ng-stream: do NOT submit any of these results to the STREAM benchmark results
    stress-ng: info: [2233] stress-ng-stream: Using L3 CPU cache size of 1024K
    stress-ng: info: [2235] stress-ng-stream: memory rate: 2616.90 MB/sec, 1046.76 Mflop/sec (instance 2)
    stress-ng: info: [2233] stress-ng-stream: memory rate: 2562.97 MB/sec, 1025.19 Mflop/sec (instance 0)
    stress-ng: info: [2234] stress-ng-stream: memory rate: 2541.10 MB/sec, 1016.44 Mflop/sec (instance 1)
    stress-ng: info: [2236] stress-ng-stream: memory rate: 2652.02 MB/sec, 1060.81 Mflop/sec (instance 3)
    stress-ng: info: [2232] successful run completed in 60.00s (1 min, 0.00 secs)
    stress-ng: info: [2232] stressor bogo ops real time usr time sys time bogo ops/s bogo ops/s
    stress-ng: info: [2232] (secs) (secs) (secs) (real time) (usr+sys time)
    stress-ng: info: [2232] stream 62223 60.00 239.97 0.00 1037.01 259.29
    stress-ng: info: [2232] stream:
    stress-ng: info: [2232] 547,364,185,528 CPU Cycles 9.12 B/sec
    stress-ng: info: [2232] 97,037,047,444 Instructions 1.62 B/sec (0.177 instr. per cycle)
    stress-ng: info: [2232] 14,396,274,512 Cache References 0.24 B/sec
    stress-ng: info: [2232] 14,390,808,440 Cache Misses 0.24 B/sec (99.96%)
    stress-ng: info: [2232] 12,144,372,800 Branch Instructions 0.20 B/sec
    stress-ng: info: [2232] 1,732,264 Branch Misses 28.87 K/sec ( 0.01%)
    stress-ng: info: [2232] 23,856,388,872 Bus Cycles 0.40 B/sec
    stress-ng: info: [2232] 477,136,188,248 Total Cycles 7.95 B/sec
    stress-ng: info: [2232] 44 Page Faults Minor 0.73 sec
    stress-ng: info: [2232] 0 Page Faults Major 0.00 sec
    stress-ng: info: [2232] 72 Context Switches 1.20 sec
    stress-ng: info: [2232] 0 CPU Migrations 0.00 sec
    stress-ng: info: [2232] 0 Alignment Faults 0.00 sec
    Now with the noisy neighbour VM constrained to use just 1 way of LL3 cache, the stream stressor on the host now can achieve about 2592 MB/sec and about 1030 Mflop/sec per CPU across 4 CPUs.

    This is a relatively simple example.  With the ability to monitor cache and memory bandwidth activity with one can carefully tune a system to make best use of the limited LL3 cache resource and maximise throughput where needed.

    There are many applications where Intel CMT/CAT can be useful, for example fine tuning containers or VM instances, or pinning user space networking buffers to cache ways in DPDK for improved throughput.

    on February 04, 2016 12:03 PM

    Two Australians have achieved prominence (or notoriety, depending on your perspective) for the difficulty in questioning them about their knowledge of alleged sex crimes.

    One is Julian Assange, holed up in the embassy of Ecuador in London. He is back in the news again today thanks to a UN panel finding that the UK is effectively detaining him, unlawfully, in the Ecuadorian embassy. The effort made to discredit and pursue Assange and other disruptive technologists, such as Aaron Swartz, has an eerie resemblance to the way the Inquisition hunted witches in the middle ages and beyond.

    The other Australian stuck abroad is Cardinal George Pell, the most senior figure in the Catholic Church in Australia. The Royal Commission into child sex abuse by priests has heard serious allegations claiming the Cardinal knew about and covered up abuse. This would appear far more sinister than anything Mr Assange is accused of. Like Mr Assange, the Cardinal has been unable to travel to attend questioning in person. News reports suggest he is ill and can't leave Rome, although he is being accommodated in significantly more comfort than Mr Assange.

    If you had to choose, which would you prefer to leave your child alone with?

    on February 04, 2016 10:30 AM

    Welcome Back Poster

    Benjamin Mako Hill

    My office door is on the second floor in front the major staircase in my building. I work with my door open so that my colleagues and my students know when I’m in. The only time I consider deviating from this policy is the first week of the quarter when I’m faced with a stream of students, usually lost on their way to class and that, embarrassingly, I am usually unable to help.

    I made this poster so that these conversations can, in a way, continue even when I am not in the office.



    on February 04, 2016 06:25 AM

    February 03, 2016

    Scale and Ubucon

    Philip Ballew

    Just a little over a week ago I had the privilege of both attending and helping out at the Southern California Linux Expo. As someone who simi-frequently travels to other far away lands for Linux related software events, it is nice to be able to visit a place so close to home and see the impacts of a conference like this first hand.

    The first portion of the conference involved me assisting and attending UbuCon at SCALE. What was different about this UbuCon, was that this UbuCon was a cooperative of both the Ubuntu community, and Canonical. All of the talks were amazing. One of the talks was about building a Juju Charm. Another was about gtting started in Free software as a career. I saw a keynote by Mark Shuttleworth, and also a member of my local community, Nathan Haines that have pictures right below. IMG_20160121_102222810
    (Mark Shuttleworth giving an opening Keynote to the conference)

    (Nathan Haines talking at UbuCon)

    Once the Ubuntu mini conference ended, I was able to work with my favorite part of SCALE, The Next Generation. It is a part of SCALE, I work on. Here, we have Children from all over the country and beyond come and speak about the amazing things they are doing with Free Software. This year we had a child speak about statistics with R, that made me feel like I should know about statistics!

    Below is a picture from a local high school that came out to present on some of the work they have been doing.

    Needless to say, it was a great time and I cannot wait until next year!

    on February 03, 2016 11:30 PM

    February 02, 2016


    Rhonda D'Vine

    Today is one of these moods. And sometimes one needs certain artists/music to foster it. Music is powerful. There are certain bands I know that I have to stay away from when feeling down to not get too deep into it. Knowing that already helps a lot. The following is an artist that is not completely in that area, but he got powerful songs and powerful messages nevertheless; and there was this situation today that one of his songs came to my mind. That's the reason why I present you today Moby. These are the songs:

    • Why Does My Heart Feel So Bad?: The song for certain moods. And lovely at that, not dragging me too much down. Hope you like the song too. :)
    • Extreme Ways: The ending tune from the movie The Bourne Ultimatum, and I fell immediately in love with the song. I used it for a while as morning alarm, a good start into the day.
    • Disco Lies: If you consider the video disturbing you might be shutting your eyes from what animals are facing on a daily basis.

    Hope you like the selection; and like always: enjoy!

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

    on February 02, 2016 11:08 PM

    It’s time once again for the Ubuntu Free Culture Showcase!

    The Ubuntu Free Culture Showcase is a way to celebrate the Free Culture movement, where talented artists across the globe create media and release it under licenses that encourage sharing and adaptation. We're looking for content which shows off the skill and talent of these amazing artists and will greet Ubuntu 16.04 LTS users.

    Not only will the chosen content be featured on the next set of pressed Ubuntu discs shared worldwide across the next two years, but it will serve the joint purposes of providing a perfect test for new users testing Ubuntu’s live session or new installations, but also celebrating the fantastic talents of artists who embrace Free content licenses.

    While we hope to see contributions from the video, audio, and photographic realms, I also want to thank the artists who have provided wallpapers for Ubuntu release after release. Ubuntu 15.10 shipped with wallpapers from the following contributors:

    I'm looking forward to seeing the next round of entrants and a difficult time picking final choices to ship with Ubuntu 16.04 LTS.

    For more information, please visit the Ubuntu Free Culture Showcase page on the Ubuntu wiki.

    on February 02, 2016 11:33 AM

    February 01, 2016

    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

    I did not ask for any paid hours this month and won’t be requesting paid hours for the next 5 months as I have a big project to handle with a deadline in June. That said I still did a few LTS related tasks:

    • I uploaded a new version of debian-security-support (2016.01.07) to officialize that virtualbox-ose is no longer supported in Squeeze and that redmine was not really supportable ever since we dropped support for rails.
    • Made a summary of the discussion about what to support in wheezy and started a new round of discussions with some open questions. I invited contributors to try to pickup one topic, study it and bring the discussion to some conclusion.
    • I wrote a blog post to recruit new paid contributors. Brian May, Markus Koschany and Damyan Ivanov candidated and will do their first paid hours over February.

    Distro Tracker

    Due to many nights spent on playing Splatoon (I’m at level 33, rank B+, anyone else playing it?), I did not do much work on Distro Tracker.

    After having received the bug report #809211, I investigated the reasons why SQLite was no longer working satisfactorily in Django 1.9 and I opened the upstream ticket 26063 and I had a long discussion with two upstream developers to find out the best fix. The next point release (1.9.2) will fix that annoying regression.

    I also merged a couple of contributions (two patches from Christophe Siraut, one adding descriptions to keywords, cf #754413, one making it more obvious that chevrons in action items are actionable to show more data, a patch from Balasankar C in #810226 fixing a bad URL in an action item).

    I fixed a small bug in the “unsubscribe” command of the mail bot, it was not properly recognizing source packages.

    I updated the task notifying of new upstream versions to use the data generated by UDD (instead of the data generated by Christoph Berg’s mole-based implementation which was suffering from a few bugs). 

    Debian Packaging

    Testing experimental sbuild. While following the work of Johannes Schauer on sbuild, I installed the version from experimental to support his work and give him some feedback. In the process I uncovered #810248.

    Python sponsorship. I reviewed and uploaded many packages for Daniel Stender who keeps doing great work maintaining prospector and all its recursive dependencies: pylint-common, python-requirements-detector, sphinx-argparse, pylint-django, prospector. He also prepared an upload of python-bcrypt which I requested last month for Django.

    Django packaging. I uploaded Django 1.8.8 to jessie-backports.
    My stable updates for Django 1.7.11 was not handled before the release of Debian 8.3 even though it was filed more than 1.5 months before.

    Misc stuff. My stable update for debian-handbook has been accepted fairly shortly after my last monthly report (thank you Adam!) so I uploaded the package once acked by a release manager. I also sponsor a backports upload of zim prepared by Joerg Desch.

    Kali related work

    Kernel work. The switch to Linux 4.3 in Kali resulted in a few bug reports that I investigated with the help of #debian-kernel and where I reported my findings back so that the Debian kernel could also benefit from the fixes I uploaded to Kali: first we included a patch for a regression in the vmwgfx video driver used by VMWare virtual machines (which broke the gdm login screen), then we fixed the input-modules udeb to fix support of some Logitech keyboards in debian-installer (see #796096).

    Misc work. I made a non-maintainer upload of python-maxminddb to fix #805689 which had been removed from stretch and that we needed in Kali. I also had to NMU libmaxminddb since it was no longer available on armel and we actually support armel in Kali. During that NMU, it occurred to me that dh-exec could offer a feature of “optional install”, that is installing a file that exists but not failing if it doesn’t exist. I filed this as #811064 and it stirred up quite some debate.


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

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

    on February 01, 2016 07:31 PM


    If the above doesn’t load, click this link.

    on February 01, 2016 04:51 PM

    UI Toolkit for OTA9

    Ubuntu App Developer Blog

    Hello folks, it’s been a while since the last update came from our busy toolkit ants. As OTA9 came out recently, it is the time for a refreshment from our side to show you the latest and greatest cocktail of features our barmen have prepared. Beside the bugfixes we’ve provided, here is a list of the big changes we’ve introduced in OTA9. Enjoy!


    One of the most awaited components is the PageHeader. This now makes it possible to have a detached header component which then can be used in a Page, a Rectangle, an Item, wherever you wish. It is composed of a base, plain Header component, which does not have any layout, but handles the default behavior like showing, hiding the header and dealing with the auto-hiding when an attached Flickable is moved. Some part of that API has been introduced in OTA8, but because it wasn’t yet polished enough, we decided not to announce it there and provide more distilled functionality now.

    The PageHeader then adds the navigation and the trailing actions through the - hopefully - well known ActionBar component.


    Yes, it’s back. Voldemort is back! But this time it is back as a detached component :) The API is pretty similar to PageHeader (it contains a leading and trailing ActionBar), and you can place it wherever you wish. The only restriction so far is that its layout only supports horizontal orientation.

    Facelifted Scrollbar

    Yes, finally we got a loan headcount to help us out in creating some nice facelift for the Scrollbar. The design follows the same principles we have for the upcoming 16.04 desktop, with the scroll handler residing inside the bar, and having two pointers to drive page up/down scrolling.

    This guy also convinced us that we need a Scrollview, like in QtQuick Controls v1, so we can handle the “buddy” scrollbars, the situation when horizontal and vertical scrollbars are needed at the same time and their overlapping should be dealt with. So, we have that one too :) And let's name the barman: Andrea Bernabei aka faenil is the one!

    The unified BottomEdge experience

    Finally we got a complete design pattern ready for the bottom edge behavior, so it was about the time to get a component around the pattern. It can be placed within any component, and its content can be staged, meaning it can be changed while the content is dragged. The content is always loaded asynchronously for now, we will add support to force synchronous loading in the upcoming releases.

    Focus handling in CheckBox, Switch, Button ActionBar

    Starting now, pressing Tab and Shift+Tab on a keyboard will show a focus ring on components that support it. CheckBox, Switch, Button and ActionBar have this right now, others will follow soon.

    Action mnemonics

    As we are heading towards the implementation of contextual menus, we are preparing a few features as prerequisite work for the menus. For one adding mnemonic handling to Action.

    So far there was only one way to define shortcuts for an Action, through the shortcut property. This now can be achieved by specifying the mnemonic in the text property of the Action using the ‘&’ character. This character will then be converted into a shortcut and, if there is a hardware keyboard attached, it will underline the mnemonic.

    on February 01, 2016 10:21 AM

    I was about to title this “Injecting code, for fun and profit”, until I realized that this may give a different sense than I originally intended… :P

    I won’t cover the reasons behind doing such, because I’m pretty sure that if you landed on this article, you would already have a pretty good sense of why you want to do this …. for fun, profit, or both ;)

    Anyway, after trying various programs and reading on how to do it manually (not easy!), I came across linux-inject, a program that injects a .so into a running application, similar to how LD_PRELOAD works, except that it can be done while a program is running… and it also doesn’t actually replace any functions either (but see the P.S. at the bottom of this post for a way to do that). In other words, maybe ignore the LD_PRELOAD simile :P

    The documentation of it (and a few other programs I tried) was pretty lacking though. And for good reason, the developers probably expect that most users who would be using these kinds of programs wouldn’t be newbies in this field, and would know exactly what to do. Sadly, however, I am not part of this target audience :P It took me a rather long time to figure out what to do, so in hopes that it may help someone else, I’m writing this post! :D

    Let’s start by quickly cloning and building it:

    git clone https://github.com/gaffe23/linux-inject.git
    cd linux-inject

    Once that’s done, let’s try the sample example bundled in with the program. Open another terminal (so that you have two free ones), cd to the directory you cloned linux-inject to (e.g. cd ~/workspace/linux-inject), and run ./sample-target.

    Back in the first terminal, run sudo ./inject -n sample-target sample-library.so

    What this does is that it injects the library sample-library.so to a process by the -name of sample-target. If instead, you want to choose your victim target by their PID, simply use the -p option instead of -n.

    But … this might or might not work. Since Linux 3.4, there’s a security module named Yama that can disable ptrace-based code injections (or code injections period, I doubt there is any other way). To allow this to work, you’ll have to run either one of these commands (I prefer the second, for security reasons):

    echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope # Allows any process to inject code into any other process started by the same user. Root can access all processes
    echo 2 | sudo tee /proc/sys/kernel/yama/ptrace_scope # Only allows root to inject code

    Try it again, and you will hopefully see “I just got loaded” in-between the “sleeping…” messages.

    Before I get to the part about writing your own code to inject, I have to warn you: Some applications (such as VLC) will segfault if you inject code into them (via linux-inject, I don’t know about other programs, this is the first injection program that I managed to get working, period :P). Make sure that you are okay with the possibility of the program crashing when you inject the code.

    With that (possibly ominous) warning out of the way, let’s get to writing some code!

    #include <stdio.h>
    void hello() {
        puts("Hello world!");

    If you know C, most of this should be pretty easy to understand. The part that confused me was __attribute__((constructor)). All this does is that it says to run this function as soon as the library is loaded. In other words, this is the function that will be run when the code is injected. As you may imagine, the name of the function (in this case, hello) can be whatever you wish.

    Compiling is pretty straightforward, nothing out of the ordinary required:

    gcc -shared -fPIC -o libhello.so hello.c

    Assuming that sample-target is running, let’s try it!

    sudo ./inject -n sample-target libhello.so

    Amongst the wall of “sleeping…”, you should see “Hello world!” pop up!

    There’s a problem with this though: the code interrupts the program flow. If you try looping puts("Hello world!");, it will continually print “Hello world!” (as expected), but the main program will not resume until the injected library has finished running. In other words, you will not see “sleeping…” pop up.

    The answer is to run it in a separate thread! So if you change the code to this …

    #include <stdio.h>
    #include <unistd.h>
    #include <pthread.h>
    void* thread(void* a) {
        while (1) {
            puts("Hello world!");
        return NULL;
    void hello() {
        pthread_t t;
        pthread_create(&t, NULL, thread, NULL);

    … it should work, right? Not if you inject it to sample-target. sample-target is not linked to libpthread, and therefore, any function that uses pthread functions will simply not work. Of course, if you link it to libpthread (by adding -lpthread to the linking arguments), it will work fine.

    However, let’s keep it as-is, and instead, use a function that linux-inject depends on: __libc_dlopen_mode(). Why not dlopen()? dlopen() requires the program to be linked to libdl, while __libc_dlopen_mode() is included in the standard C library! (glibc’s version of it, anyways)

    Here’s the code:

    #include <stdio.h>
    #include <unistd.h>
    #include <pthread.h>
    #include <dlfcn.h>
    /* Forward declare these functions */
    void* __libc_dlopen_mode(const char*, int);
    void* __libc_dlsym(void*, const char*);
    int   __libc_dlclose(void*);
    void* thread(void* a) {
        while (1) {
            puts("Hello world!");
    void hello() {
        /* Note libpthread.so.0. For some reason,
           using the symbolic link (libpthread.so) will not work */
        void* pthread_lib = __libc_dlopen_mode("libpthread.so.0", RTLD_LAZY);
        pthread_t t;
        *(void**)(&pthread_lib_create) = __libc_dlsym(pthread_lib, "pthread_create");
        pthread_lib_create(&t, NULL, thread, NULL);

    If you haven’t used the dl* functions before, this code probably looks absolutely crazy. I would try to explain it, but the man pages are quite readable, and do a way better job of explaining than I could ever hope to try.

    And on that note, you should (hopefully) be well off to injecting your own code into other processes!

    If anything doesn’t make sense, or you need help, or just even to give a thank you (they are really appreciated!!), feel more than free to leave a comment or send me an email! :D And if you enjoy using linux-inject, make sure to thank the author of it as well!!

    P.S. What if you want to change a function inside the host process? This tutorial was getting a little long, so instead, I’ll leave you with this: http://www.ars-informatica.com/Root/Code/2010_04_18/LinuxPTrace.aspx and specifically http://www.ars-informatica.com/Root/Code/2010_04_18/Examples/linkerex.c . I’ll try to make a tutorial on this later if someone wants :)

    on February 01, 2016 05:44 AM
    let's start charminglet’s start charming

    This is the basic blueprint of my system for juju charming. I found that this was the quickest and least problematic setup for myself.

    Below is the guide to working with this setup. Most of this will apply for working with a local server as well.

    While I was working on my first juju charm, I found that the documentation was quite helpful, but I also ran into some recurring issues. As a result, I curated a lot of content, and created notes, which are now in the form of a supplementary guide for those heading down a similar path.


    • Install and setup juju on a single, local desktop system for creating and testing charms
    • Give you basic terminal commands for working with juju
    • Give some tips for troubleshooting the juju environment

    Follow the guide on the LEFT, and refer to the RIGHT when necessary.

    Terminal commands in this guide will look like this.

    Juju guide Troubleshooting

    sudo add-apt-repository ppa:juju/stable
    sudo apt-get update


    Install juju for local environment use:

    sudo apt-get install juju-core juju-local
    juju generate-config
    juju switch local


    juju bootstrap

    The juju environment should be ready for working in now.


    This guide will assume that you are working from the home directory, so please setup in home:

    cd ~
    mkdir -p charms/trusty
    (swap “trusty” for “precise” if necessary)

    You can now put charms that you are working on into ~/charms/trusty and deploy them via the local repository method (see below). Each charm will have its own unique directory that should match the charm name.

    Install charm-tools for creating new charms, or testing existing ones:

    sudo apt-get install charm-tools

    Bootstrap Errors:
    If you get any errors during bootstrap, then the environment is probably already boostrapped. You may need to restart the juju db and agent services. This might happen if you reboot the computer (you will notice that the juju commands just hang).

    sudo service juju-db-$USER-local start
    sudo service juju-agent-$USER-local start

    Wait a few minutes for the agent to reconnect.

    Destroying environment:

    If the whole environment becomes messy or faulty, you can start over.

    juju destroy-environment local
    You will probably have to enter the super user password. And re-bootstrap.

    In the worst case you might have to purge the juju installation and start again:
    sudo apt-get purge juju*
    sudo rm -rf ~/.juju

    Some other errors might require a juju package upgrade.


    juju status

    This will give you the details of what your current juju environment is doing.
    Pay attention to public-address (IP), and current state of your charm. Don’t interact with it until it is “started”.

    juju debug-log

    A running log of whatever juju is doing. It will show you where charms are at, if there is an error, and when hooks are “completed.”
    (You must CTRL C to get out of it.)

    Status Checks:
    It is important to be patient when checking on the status of charms. Some issues are resolved by waiting. You can check juju status periodically to see changes.

    DEPLOYING SERVICES (i.e. “installing” charms)

    a) You can deploy any “recommended” charm with:

    juju deploy charmName

    e.g. juju deploy juju-gui

    You can deploy multiple charms without waiting for the previous one to finish.
    Just don’t add relations until they are BOTH “started.”

    b) If you want to deploy a charm that you are working on locally (one-line command):

    juju deploy --repository=/home/$USER/charms/ local:trusty/charmname
    e.g. juju deploy –repository=/home/$USER/charms/ local:trusty/diaspora

    Replace “trusty” with “precise” if necessary.

    c) You can also deploy from personal trunks that haven’t yet been recommended:

    juju deploy cs:~launchpadUserId/trusty/charmname

    e.g. juju deploy cs:~joe/trusty/ethercalc-6

    d) Deploying from the GUI (see GUI section below)

    Destroy services (i.e. charm installations):

    Maybe you installed the wrong one, or it “failed” to install or configure.
    (You should probably destroy relations first.)

    juju destroy-service serviceName
    e.g. juju destroy-service suitecrm

    “Un-Dead” Services ( Can’t Destroy )

    Sometimes things are “dying” forever, but don’t actually die because they are in an “error state.”

    If a charm/relation is in an “error” state, it will hang indefinitely at each error. You can’t even destroy it.

    You can “resolve” the errors until all the hooks have gone through the cycle at which point the thing may die.

    juju resolved serviceName/0

    e.g. juju resolved suitecrm/0

    if you have more than one of the same service, the /# will indicate which one.

    *Be sure to spell “resolved” correctly. I never get it right first type :(

    ssh into a service (remember a service is running inside its own “machine” by default)

    If you want to go into the virtual machine that your service is running on to fix/break things more:

    juju ssh serviceName/0

    e.g. juju ssh suitecrm/0

    No username or password needed. You have root access with “sudo”. Keep track of where you are (purple circle vs orange circle). “exit” to return to the local terminal


    You can link/relate charms to each other if compatible. Commonly a database and another service.

    juju add-relation charmName1 charmName2

    WAIT again. Check the status do see “x-relation-changed” hook running etc.

    Can’t add relation:

    Check the charm’s readme to see if a special syntax is required for the relation.

    Generally I like to wait for both services/charms to be in a ready state before adding a relation between them.

    Destroy relations:

    relation-changed hook failed, or the charms don’t like each other anymore:

    juju destroy-relation charm1 charm2

    e.g. juju destroy-relation suitecrm mysql

    SAMPLE WORKFLOW: Deploying Services
    Let’s see if that suitecrm charm is working for you.

    Deploy database:

    juju deploy mysql

    Deploy suitecrm:

    juju deploy suitecrm

    Run juju status or juju debug-log to see when BOTH charms are done.

    Just because it has a public-address does not mean that it’s ready to be used.

    Add relation:

    juju add-relation suitecrm mysql

    Check status…… WAIT!

    While you’re waiting… why not check out the readme document.

    Access the service:

    juju status and get the public-address of suitecrm, then visit in your browser. You should see the login page.

    User: Admin
    Pass: thisisaTEST!


    This will give you graphical way of working with juju. It is quite magical, but requires manual installation if not using juju-quickstart.

    juju deploy juju-gui

    WAIT. Do a “juju status” to see what stage of deployment is in.

    Run this in your terminal again to get the admin password

    cat ~/.juju/environments/local.jenv | grep password

    Once started, copy the public-address. Usually 10.0.#.### and visit that in a browser. It will likely complain about an insecure connection. For our purposes you can add the exception.

    Login with: admin and the password from the above command.

    The GUI is the simplest way to deploy and manage services. It does not provide much debugging information at this time. Most of the usage is pretty self-explanatory.

    When you deploy a service it will show the icon with colours to indicate its status (these have been varying lately):

    Yellow = wait
    Red = Stop. error…

    You do have to “commit” the changes to the canvas.

    your first charmyour first charm (source)

    Hopefully this guide has provided you with an acceptable environment for working on your charm(s). Further documentation exists for starting a charm, but I also recommend finding an existing charm that is similar to the one that you want to create so that you can model the structure. More on this process can be seen in an earlier post.

    Remember that you are not alone in this project: juju add-relation me community 😉

    on February 01, 2016 05:34 AM