news aggregator

Valorie Zimmerman: Final 10 days of the Randa fundraiser - Please help!

Planet Ubuntu - Sun, 2014-06-29 08:03
Hi folks, we're heading to the deadline. Please help put us over the top!

If you've already given money, please help by spreading the word. Small contributions not only count up quickly, they demonstrate that the free community stands behind our work. Mario gives a nice wrap-up here: Show us you care.

Personally, I'm scared and excited by the prospect of writing another book, again with people who over-the-top smart, creative and knowledgeable. I will personally appreciate widespread support of the work we'll be doing.

If you already know about the Randa Meetings, and what our confederated sprints can produce, just proceed directly to and kick in some shekels!

And then please pass along the word.


Paul Tagliamonte: Apple and Debian: A tragic love story

Planet Ubuntu - Sun, 2014-06-29 01:22

One which ends in tears, I’m afraid.

A week or so ago, I got an MacBook Air 13” (MacBook Air 6-2), to take with me when I head out to local hack sessions, and when I travel out of state for short lengths of time. My current Thinkpad T520i is an amazing machine, and will remain my daily driver for a while to come.

After getting it, I unboxed the machine, and put in a Debian install USB key. I wiped OSX (without even booting into it) and put Debian on the drive.

To my dismay, it didn’t boot up after install. Using the recovery mode of the disk, I chrooted in and attempted an upgrade (to ensure I had an up-to-date GRUB). I couldn’t dist-upgrade, the terminal went white. After C-c’ing the terminal, I saw something about systemd’s sysvinit shim, so I manually did a purge of sysvinit and install of systemd.

I hear this has been resolved now. Thanks :)

My machine still wasn’t booting, so I checked around. Turns out I needed to copy over the GRUB EFI blob to a different location to allow it to boot. After doing that, I could boot Debian whilst holding Alt.

After booting, things went great! Until I shut my lid. After that point, my screen was either 0% bright (absolutely dark) or 100% (facemeltingly bright).

I saw mba6x_bl, which claims to fix it, and has many happy users. If you’re in a similar suggestion, I highly suggest looking at it.

Unfortunately, this caused my machine to black out on boot and I couldn’t see the screen at all anymore. A rescue disk later, and I was back.

Annoyingly, the bootup noise’s volume is stored in NVRAM, which gets written out by OSX when it shuts down. After consulting the inimitableMatthew Garrett, I was told the NVRAM can be hacked about with by mounting efivarfs on /sys/firmware/efi/efivars type efivarfs. Win!

After hitting enter, I got a kernel panic and some notes about hardware assertions failing.

That’s when I returned my MacBook and got a Dell XPS 13.

This is a problem, folks.

If I can’t figure out how to make this work, how can we expect our users?

Such a shame the most hardware on the planet gets no support, locking it’s users into even less freedom.

Ubuntu GNOME: HR Sub-Team

Planet Ubuntu - Sat, 2014-06-28 18:45


For the very first time, not only in Ubuntu GNOME Community but within all Ubuntu Communities (Ubuntu + Official Flavours); Ubuntu GNOME Team has taken the initiative and the productivity by establishing the very first Human Resource (Recruiting) Sub-Team within Ubuntu Communities.

For more details, please see this blueprint.

Now, Ubuntu GNOME Sub-Teams has a new arrival and we hope the rest of Ubuntu Communities will follow our steps

Ubuntu GNOME Blueprints for Utopic Unicorn are ready to be approved. We had 7 Roadmaps for 7 Sub-Teams but now, we have 7 + 1 = 8 Roadmaps.

We’re so excited about this new addition and we hope this experience will be very excited and helpful for our team.

Thank you!

Ubuntu GNOME Leaders Board

Ubuntu GNOME: Acting Team Leader

Planet Ubuntu - Sat, 2014-06-28 15:17


As we promised you on the earlier post we have published today, there will be great new changes within Ubuntu GNOME Community and here is yet another one.

We’re pleased to announce that starting from this cycle (Utopic Unicorn), each Sub-Team within Ubuntu GNOME will have:

  • Team Leader
  • Acting Team Leader

The idea was proposed on the first weekly meeting for Ubuntu GNOME Team for Utopic Unicorn Cycle and the team have voted with ‘YES’ to this idea; hence it has been approved.

For more details, please see this blueprint on Launchpad.

On Sunday, 29-06-2014, Ubuntu GNOME Team will have its second weekly meeting for this cycle (Utopic Unicorn) and we shall discuss and decide who will be the Acting Team Leaders for Ubuntu GNOME Sub-Teams.

This is our second official team announcement during this cycle (Utopic Unicorn). Stay tuned for more

Ubuntu GNOME Leaders Board

Ahmed Sghaier: ATI (AMD) Radeon Graphics is killing your laptop

Planet Ubuntu - Fri, 2014-06-27 19:36
Many laptops get hot all the time and run the fan trying to cool down with no hope (at least it prevents it from burning). This, of course, requires more energy consumption killing your laptop's battery life twice (or more) faster. Nevertheless, it might harm your laptop and CPU in the long term.
Fortunately, this might be fixed easily and give your laptop a longer life. (you can skip to "Disable ATI" section if you only care about the workaround)

Linus vs Nvidia Many have seen or heard of the famous Linus Torvalds reaction to Nvidia, when commenting on a question concerning hardware manufacturers and (proprietary) drivers on GNU/Linux.

OK, so Linus gives the finger to Nvidia for lack of cooperation with open source driver developers and for the undocumented closed hardware architecture.
The video and pictures went viral, and many just assumed that ATI drivers are much better than Nvidia's on Linux.
Does it make ATI much better?

The truth is that many Linux users are complaining about ATI's drivers quality and crashes on Linux, even if it is somehow better documented and might collaborate with FLOSS driver developers.
On the other hand, Nvidia has been offering a great quality proprietary drivers. And technically speaking, the nouveau team has been offering great open source drivers for Nvidia through reverse engineering and minor help from Nvidia employees.

In addition to all of this, ATI's open source drivers does not provide an easy and practical solution for (Hybrid) on demand switching between the integrated GPU and ATI's GPU. Actually this feature is only offered by the proprietary drivers which causes a lot of problems for many Linux users.
But Nvidia owners had an open source workaround project called bumblebee offering an on demand use of Nvidia drivers for specific applications (switching to either nouveau or the proprietary drivers). This workaround was available for Nvidia users since 2011 and while Prime the optimal FLOSS solution was designed by Dave Airlie (Red Hat) and delivered in the last few months.

My end user experience with Nvidia has been great (thanks to the community's efforts) since I first started using Linux as a main OS back in 2005. And I still hope Nvidia and ATI cut the bullshit and become a little more cooperative with Linux driver developers.

So that was my overall end user experience with Nvidia for almost 10 years now.
New ATI experience

Then, I had the chance to work with ATI on the new great laptop I got at Angry Cactus (work). But to be honest, this is only my second night with ATI at home (and I already got ATI nightmares), so it is going to be a first impression / first quick tricks article only.

Personally, my needs for a high end GPU performance is rare. I might need great graphics performance once in few months for a LAN/Online gaming round or for 3D design learning or for game/3D-app development. Since I do not need powerful graphics that much and I don't care about disabling the dedicated GPU completely until I need it again, I have decided to go with this workaround. This is because I actually had a real nightmare getting my ATI's proprietary drivers to work and provide a good hybrid GPU support on Ubuntu 14.04.

So, to get to the point. I have googled for some workarounds but the common solution was only compatible with previous versions of Ubuntu 14.04. This might be due to a system bug or a kernel update.
Disabling ATI
The actual compatible workaround was to add the kernel parameter radeon.runpm=0 during boot.
For this to work properly, open the file /etc/default/grub with your favourite text editor or using the following command :
sudo gedit /etc/default/grubThen find the line containing GRUB_CMDLINE_LINUX_DEFAULT, it looks something like the following :
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"You must then add the kernel parameter radeon.runpm=0 so it looks like the following :
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash radeon.runpm=0"Finally save the file and execute the following command :
sudo grub-updateCongratulations, you are now able to use the integrated GPU without overheating the laptop in addition to saving battery life.

Please leave your comments about your experience with GPU drivers.
Note that this might not be the best workaround, but I am satisfied with the result I have got for now. I will see if there is a better workaround or solution in the near future and maybe do some benchmarking and comparison.

Sam Hewitt: Oven-Baked Chicken Wings

Planet Ubuntu - Fri, 2014-06-27 19:00

Wings, if you don't fry 'em you bake them and baking them is the way I do them most often. As such, the coating for them is something I've played around with to find the most flavour boosting techniques.

Two things I do to "amp up" my wings is to add crunch and increase browning. Crunch is straightforward; I add either semolina or cornmeal to the wing dredge mixture.

The browning of meat is (basically) the breakdown of an amino acid (usually a protein) in the presence of sugar (this is known as the Maillard reaction) and more browning equals more flavour.

So to boost the browning potential of the wings I add milk powder to the coating; the milk powder adds additional protein to the outside of the wing, thus increasing the amount it'll brown.

Chicken Wing Coating Recipe
  • 3 lbs (1.5 kg) chicken wings
  • 1/2 cup all-purpose flour
  • 1/4 cup cornmeal or semolina
  • 1/8 cup milk powder
  • 1 tablespoon salt
  1. Preheat an oven to 375 degrees Fahrenheit.
  2. Butcher the chicken wings, removing the tips (keep them*) and separating the wing at the joint.
  3. In a large shallow dish, combine the flour, cornmeal, milk powder & salt.
  4. Line a baking sheet with aluminium foil & lightly brush with olive oil.
  5. Dredge the wings in the dry mixture.
  6. Place on the baking sheet and bake/roast in the oven for 1-1.5 hours.
  7. Serve, either plain or with desired sauce(s).

*People often discard the wing tips, but they are one of my favourite parts; throw the wing tips in a 450 degree oven with some olive oil and seasoned with a little salt and pepper and roast for 30-40 minutes until they're quite crunchy. The result is a sort-of chicken crackling.

Jono Bacon: Exponential Community

Planet Ubuntu - Fri, 2014-06-27 16:42

As some of you will know, recently I moved from Canonical to XPRIZE to work as Sr. Dir. Community. My charter here at XPRIZE is to infuse the organization and the incentive prizes it runs with community engagement.

For those unfamiliar with XPRIZE, it was created by Peter H. Diamandis to solve the grand challenges of our time by creating incentive prize competitions. The first XPRIZE was the $10million Ansari XPRIZE to create a space-craft that went into space and back twice in two weeks and carrying three crew. It was won by Scaled Composites with their SpaceShipOne craft, and the technology ultimately led to birth of the commercial space-flight industry. Other prizes have focused on ocean health, more efficient vehicles, portable health diagnosis, and more.

The incentivized prize model is powerful. It is accessible to anyone with the drive to compete, it results in hundreds of teams engaging in extensive R&D, only the winner gets paid, and the competitive nature generally results in market competition which then drives even more affordable and accessible technology to be built.

The XPRIZE model is part of Peter Diamandis’s vision of exponential technology. In a nutshell, Peter has identified that technology is doubling every year, across a diverse range of areas (not just computing), and that technology can ultimately solve our grand challenges such as scarcity, clean water, illiteracy, space exploration, clean energy, and more. If you are interested in finding out more, read Abundance; it really is an excellent and inspirational read.

When I was first introduced to XPRIZE the piece that inspired me about the model is that collaboratively we can solve grand challenges that we couldn’t solve alone. Regular readers of my work will know that this is precisely the same attribute in communities that I find so powerful.

As such, connecting the dots between incentivized prizes that solve grand challenges with effective and empowering community management has the potential for a profound impact on the world.

The XPRIZE Lobby.

My introduction to XPRIZE helped me to realize that the exponential growth that Peter sees in technology is a key ingredient in how communities work. While not as crisply predictable (a doubling of community does not neccessarily mean a doubling of output), we have seen time and time again that when communities build momentum and growth the overall output of the community (irrespective of the specific size) can often exponentially grow.

An example of this is Wikipedia. From the inception of the site, the tremendous growth of the community resulted in huge growth in not just the site, but the value the site brought to users (as value is often defined by completeness). Another example is Linux. When the Linux kernel was only authored by Linus Torvalds, it had limited growth. The huge community that formed there has resulted in a technology that has literally changed how the technology infrastructure in the world runs. We also have political examples such as the Arab Spring in which social media helped empower large swathes of citizens to challenge their leaders. Again, as the community grew, so did the potency of their goals.

XPRIZE plays a valuable role because exponential growth in technology does not necessarily mean that the technology will be built. Traditionally, only governments were solving the grand challenges of our time because companies found it difficult to understand or define a market. XPRIZE competitions put a solid stake in the ground that highlights the problem, legitimizes the development of the technology with a clear goal and prize purse, and empowers fair participation.

The raw ingredients (smart people with drive and passion) for solving these challenges are already out there, XPRIZE mobilizes them. In a similar fashion, the raw ingredients for creating globally impactive communities are there, we just need to activate them.

So what will I be doing at XPRIZE to build community engagement?

Well, I have only been here a few weeks so my priority right now are some near-term goals and getting to know the team and culture, so I don’t have anything concrete I can share right now. I assure you though, I will be talking more about my work in the coming months.

You can stay connected to this work via this blog, my Twitter account, and my Google+ account. Also, be sure to follow XPRIZE to stay up to date with the general work of the organization.

Daniel Holbach: Making it easier for LoCos to share news/stories

Planet Ubuntu - Fri, 2014-06-27 14:47
The idea

At the last Ubuntu Online Summit, we had a session in which we discussed (among other things) the idea to make it easier for LoCo teams to share news, stories, pictures, events and everything else. A lot of great work is happening around the world already, but a lot of us don’t get to hear about it.

I took an action item to schedule a meeting to discuss the idea some more. The rough plan being that we add functionality to the LoCo Team Portal which allows teams to share their stories, which then end up on Planet Ubuntu.

We held the meeting last week, find the IRC logs here.

The mini-spec

Find the spec here and please either comments on the loco-contacts mailing list or below in the comments. If you are a designer, a web developer, know Django or just generally want to get involved, please let us know!

We will discuss the spec some more, turn it into bug reports and schedule a series of hack days to work on this together.

Ronnie Tucker: Full Circle #86 is unleashed upon an unsuspecting world.

Planet Ubuntu - Fri, 2014-06-27 10:00


This month:
* Command & Conquer
* How-To : Python, LibreOffice, and GRUB2.
* Graphics : Blender and Inkscape.
* Review: Toshiba SSD
* Security and Q&A
* CryptoCurrency: Compiling an Alt-Coin Wallet
* NEW! - Arduino
plus: Q&A, Linux Labs, Ubuntu Games, and another competition to win Humble Bundles!

Get it while it’s hot!

Adam Stokes: Ubuntu Openstack Installer

Planet Ubuntu - Fri, 2014-06-27 00:40

As the title suggests this little gem is an Openstack installer tailored specifically to get you from zero to hero in just a short amount of time.

There are a few options available today for deploying an Openstack cloud. For instance, juju-deployer with an Openstack specific bundle or that other thing called devstack. While these technologies work we wanted to take our existing technologies and go a step further. A lot of people may not have 10 systems laying around to utilize juju-deployer or you may be wanting to demonstrate to the powers that be that implementing Ubuntu, Juju, MAAS, and Openstack within your company is a great idea. Of course you could bring one of those shiny orange boxes or a handful of Intel NUCS into the conference room or ..

.. install the Ubuntu Openstack Installer and get a cloud to play with on a single machine. Getting started is ez-pz.

  • Decent machine, tested on a machine with 8 cores, 12G ram, and 100G HDD.
  • Ubuntu Trusty 14.04
  • Juju 1.18.3+ (includes support for lxc fast cloning for multiple providers)
  • About 30 minutes of your time.

Add the ppa and install the software.

$ sudo apt-add-repository ppa:cloud-installer/ppa $ sudo apt-get update $ sudo apt-get install cloud-installer Second

Run it.

$ sudo cloud-install

Install selection


You’re presented with 3 options, a Single Install, Multi Install, and Landscape (coming soon). Select Single Install.


The installer will go through its little routine of installing necessary packages and setting up configuration. Once this is complete you’ll be dropped into a status screen which will then begin the magical journey of getting you setup with a fully functioning Openstack cloud.

Is that all?

Yep, to elaborate a bit I’ll explain what’s happening:

The entire stack is running off a single machine. Juju is heavily utilized for its ability to deploy services, setup relations, and configure those services. Similar to what juju-deployer does. What juju-deployer doesn’t do is automatically sync boot images via simplestreams or automatically configure neutron to have all deployed instances within nova-compute available on the same network as the host machine all while using a single network card. We even throw in juju-gui for good measure

The experience we are trying to achieve is that any one person can sit down at a machine and have a complete end to end working Openstack environment. All while keeping your gray hair at a minimum and your budget intact. Heres a screenshot of our nifty console ui:

Cloud status screen


Verifying your cloud is easy, just go through the process of deploying an instance via Horizon (Openstack Dashboard), associating a floating IP (already created for you just need to select one) and ssh into the newly created instance to deploy your software stack. Depending on bandwidth some images may not be immediately available and may require you to wait a little longer.

What about those other install options?

Well, as I stated before we have a lot of cool technologies out there like MAAS. That is what the Multi Install is for. The cool thing about this is you install it the same way you would a Single Install. Fast-forward past the package installing and to the status screen you’ll be presented with a dialog stating to PXE boot a machine to act as the controller. Our installer tries to do everything for you but some things are left up to you. In this case you’d commission a machine in the MAAS environment and get it into a ready state. From there the Installer will pick up that machine and continue on its merry way as it did during the single installation.

One thing to note is you’ll want to have a few machines whether it be bare metal or virtual registered in MAAS to make use of all the installer has to offer. I was able to get a full cloud deployed on 3 machines, 1 bare metal (the host machine running maas), 2 virtual machines registered in MAAS. Keep in mind there were no additional network devices added as the installer can configure neutron on a single NIC

Where to go from here?

If you need swift storage for your glance images hit (F6) in the status screen and select Swift storage. This will deploy the necessary bits for swift-storage to be integrated into your Openstack cloud. Swift storage requires at least 3 nodes (in the single install this would be 3 VMs) so make sure you’ve got the hardware for this. Otherwise, for developing/toying around with Openstack leaving the defaults works just as good.

]Add swift storage

Want to deploy additional instances on your compute nodes? Add additional machines to your MAAS environment or if running on a single machine and you have the hardware add a few more nova-compute nodes (via F6 in the status screen) to allow for more instances to be deployed within Openstack.

This is just an intro into the installer more documentation can be found @ ReadTheDocs. The project is hosted @ GitHub and we definitely encourage you to star it, fork it, file issues, and contribute back to make this a truly enjoyable experience.

Also keep an eye out for when the Landscape implementation is completed for an even more feature-rich end to end solution.

Ronnie Tucker: Some new Special Editions

Planet Ubuntu - Thu, 2014-06-26 19:43

Just a quick note to bring your attention to some new Special Editions from Brian and Patrick:





Ubuntu Podcast from the UK LoCo: S07E13 – The One with the Evil Orthodontist

Planet Ubuntu - Thu, 2014-06-26 19:35

Alan Pope, Mark Johnson, Tony Whitmore, and Laura Cowen are in Studio L for Season Seven, Episode Thirteen of the Ubuntu Podcast!

 Download OGG  Download MP3 Play in Popup

In this week’s show:-

We’ll be back next week, when we’ll be discussing remote screencasting technologies, and we’ll go through your feedback.

Please send your comments and suggestions to:
Join us on IRC in #uupc on Freenode
Leave a voicemail via phone: +44 (0) 203 298 1600, sip: and skype: ubuntuukpodcast
Follow us on Twitter
Find our Facebook Fan Page
Follow us on Google+

Lubuntu Blog: Lubuntu 14.10 alpha 1

Planet Ubuntu - Thu, 2014-06-26 09:01
Phill Whitesidem our QA and test head, is proud to communicate: It's that time again: time to officially start testing for this cycle. Alpha 1 is set to be released Thursday, so we need to test over the next couple days. You can see the rest of the schedule for the cycle here, by the way. All images are available at QA. If you're not familiar with testing, it's an easy process and a

Chris J Arges: using CRIU to checkpoint a kernel build

Planet Ubuntu - Wed, 2014-06-25 20:46
CRIU stands for Checkpoint/Restart in Userspace [1]. As the criu package should be landing in utopic soon, and I wanted to test drive it to see how it handles.

I thought of an interesting example of being in the middle of a linux kernel build and a security update needing to be installed and the machine rebooted. While most of us could probably just reboot and rebuild, why not checkpoint it and save the progress; then restore after the system update?  I admit its not the most useful example; but it is pretty cool nonetheless.
sudo apt-get install criu
# start build; save the PID for later
cd linux; make clean; make defconfig
make & echo $! > ~/
# enter a clean directory that isn't tmp and dump state
mkdir ~/cr-build && cd $_
sudo criu dump --shell-job -t $(cat ~/ install and reboot machine
# restore your build
cd ~/cr-build
sudo criu restore --shell-job -t $(cat ~/

And you're building again!

Jono Bacon: Community Leadership Forum

Planet Ubuntu - Wed, 2014-06-25 16:29

A little while ago I set up the Community Leadership Forum. The forum is designed to be a place where community leaders and managers can learn and share experience about how to grow fun, productive, and empowered communities.

The forum is open and accessible to all communities – technology, social, environmental, entertainment, or anything else. It is intended to be diverse and pull together a great set of people.

It is also designed to be another tool (in addition to the Community Leadership Summit) to further the profession, art, and science of building great communities.

We are seeing some wonderful growth on the forum, and because the forum is powered by Discourse it is a simple pleasure to use.

I am also encouraging organizations who are looking for community managers to share their job descriptions on the forum. This forum will be a strong place to find the best talent in community management and for the talent to find great job opportunities.

I hope to see you there!

Join the Community Leadership Forum

Ubuntu App Developer Blog: Bring Your Apps to Hack Days

Planet Ubuntu - Wed, 2014-06-25 15:17
Ready for RTM*: Ubuntu Touch Core App Hack Days!

* Release to Manufacturing

We’re running another set of Core Apps Hack Days next week. Starting Monday 30th June through to Friday 4th July we’ll be hacking on Core Apps, getting them polished for our upcoming RTM (Release To Manufacture) images. The goal of our hack days is as always to implement missing features, fix bugs, get new developers involved in coding on Ubuntu using the SDK and to have some fun hacking on Free Software.

For those who’ve not seen the hack days before, it’s really simple. We get together from 09:00 UTC till 21:00 UTC on #ubuntu-app-devel on freenode IRC and hack on the Core Apps. We will be testing the apps to destruction, filing and triaging bugs, creating patches, discussing and testing proposals and generally do whatever we can to get these apps ready for RTM. It’s good fun, relaxed and a great way to get started in Ubuntu app development with the SDK

We’ll have developers hanging around to answer questions, and can call on platform and SDK experts for assistance when required. We focus on specific apps each day, but as always we welcome contributions to all the core apps both during the designated days, and beyond.

Not just Core Apps

This time around we’re also doing things a little differently. Typically we only focus attention on the main community maintained Core Apps we ship on our device images. For this set of Hack Days we’d like to invite 3rd party community app developers to bring their apps along as well and hack with us. We’re looking for developers who have already developed their Ubuntu app using the SDK but maybe need help with the “last mile”. Perhaps you have design questions, bugs or feature enhancements which you’d like to get people involved in.


We won’t be writing your code for you, but we can certainly help to find experienced people to answer your questions and advise of platform and SDK details. We’d expect you to make your code available somewhere, to allow contributions and perhaps enable some kind of bug tracker or task manager. It’s up to you to manage your own community app, we’re here to help though!

Get involved

If you’re interested in bringing your app to hack days, then get in touch with popey (Alan Pope) on IRC or via email [] and we’ll schedule it in for next week and get the word out.

You can find out more about the Core Apps Hack Days on the wiki, and can discuss this with us on IRC in #ubuntu-app-devel.

Stuart Langridge: Throttling or slowing down network interfaces on Ubuntu

Planet Ubuntu - Wed, 2014-06-25 08:58

Michael Mahemoff, on Google Plus, points out an idea from the Rails people to slow down your network connection to your local machine in order to simulate the experience of using the web, where slow connections are common (especially on mobile).

The commands they mention are for OS X, though. To do this in Ubuntu you want the following:

Slow down your network connection to localhost by adding a 500ms delay:

sudo tc qdisc add dev lo root handle 1:0 netem delay 500msec

If you do this, then ping localhost, you’ll see that packets now take a second to return (because the 500ms delay applies on the way out and the way back).

To remove this delay:

sudo tc qdisc del dev lo root

Since those commands are pretty alarmingly impenetrable, I put together a tiny little app to do it for you instead. Grab the Python code below and run it, and then you can enable throttling by just ticking a box, and drag the sliders to set the amount you want to slow down your connection. Try it next time you’re building an app which talks to the network — you may find it enlightening (although depressing) how badly your app (or the framework you’re using) deals with slow connections… and half your users will have those slow connections. So we need to get better at dealing with them.

from gi.repository import Gtk, GLib import socket, fcntl, struct, array, sys, os def which(program): import os def is_exe(fpath): return os.path.isfile(fpath) and os.access(fpath, os.X_OK) fpath, fname = os.path.split(program) if fpath: if is_exe(program): return program else: for path in os.environ["PATH"].split(os.pathsep): path = path.strip('"') exe_file = os.path.join(path, program) if is_exe(exe_file): return exe_file return None def all_interfaces(): max_possible = 128 # arbitrary. raise if needed. bytes = max_possible * 32 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) names = array.array('B', '\0' * bytes) outbytes = struct.unpack('iL', fcntl.ioctl( s.fileno(), 0x8912, # SIOCGIFCONF struct.pack('iL', bytes, names.buffer_info()[0]) ))[0] namestr = names.tostring() lst = {} for i in range(0, outbytes, 40): name = namestr[i:i+16].split('\0', 1)[0] ip = namestr[i+20:i+24] friendly = "" if name == "lo": friendly = "localhost" if name.startswith("eth"): friendly = "Wired connection %s" % (name.replace("eth", "")) if name.startswith("wlan"): friendly = "Wifi connection %s" % (name.replace("eth", "")) lst[name] =( {"friendly": friendly, "action_timer": None, "current_real_value": 0, "toggled_by_code": False} ) return lst class App(object): def __init__(self): win = Gtk.Window() win.set_size_request(300, 200) win.connect("destroy", Gtk.main_quit) win.set_title("Network Throttle") self.ifs = all_interfaces() tbl = Gtk.Table(rows=len(self.ifs.keys())+1, columns=4) tbl.set_row_spacings(3) tbl.set_col_spacings(10) tbl.attach(Gtk.Label("Throttled"), 2, 3, 0, 1) delay_label = Gtk.Label("Delay") delay_label.set_size_request(150, 40) tbl.attach(delay_label, 3, 4, 0, 1) row = 1 for k, v in self.ifs.items(): tbl.attach(Gtk.Label(k), 0, 1, row, row+1) tbl.attach(Gtk.Label(v["friendly"]), 1, 2, row, row+1) tb = Gtk.CheckButton() tbl.attach(tb, 2, 3, row, row+1) tb.connect("toggled", self.toggle_button, k) self.ifs[k]["checkbox"] = tb sl = Gtk.HScale() sl.set_draw_value(True) sl.set_increments(20, 100) sl.set_range(20, 980) sl.connect("value_changed", self.value_changed, k) sl.set_sensitive(False) tbl.attach(sl, 3, 4, row, row+1) self.ifs[k]["slider"] = sl row += 1 box = Gtk.Box(spacing=6) box.pack_start(tbl, True, True, 6) win.add(box) win.show_all() self.get_tc() def toggle_button(self, button, interface): self.ifs[interface]["slider"].set_sensitive(button.get_active()) if self.ifs[interface]["toggled_by_code"]: print "ignoring toggle button because it was toggled by code, not user" self.ifs[interface]["toggled_by_code"] = False return print "toggled to", button.get_active() if button.get_active(): self.turn_on_throttling(interface) else: self.turn_off_throttling(interface) def value_changed(self, slider, interface): print "value_changed", slider.get_value() if slider.get_value() == self.ifs[interface]["current_real_value"]: print "Not setting if because it already is that value" return self.turn_on_throttling(interface) def get_tc(self): print "getting tc" self.throttled_ifs = {} def get_tc_output(io, condition): print "got tc output", condition line = io.readline() print "got tc line", line parts = line.split() if len(parts) > 2 and parts[0] == "qdisc" and parts[1] == "netem": if len(parts) == 12: self.throttled_ifs[parts[4]] = {"delay": parts[11].replace("ms", "")} if condition == GLib.IO_IN: return True elif condition == GLib.IO_HUP|GLib.IO_IN: GLib.source_remove(self.source_id) print "throttled IFs are", self.throttled_ifs self.update_throttled_list(self.throttled_ifs) return False pid, stdin, stdout, stderr = GLib.spawn_async( ["tc", "qdisc"], flags=GLib.SpawnFlags.SEARCH_PATH, standard_output=True ) io = GLib.IOChannel(stdout) self.source_id = io.add_watch(GLib.IO_IN|GLib.IO_HUP, get_tc_output, priority=GLib.PRIORITY_HIGH) pid.close() def actually_turn_on_throttling(self, interface, value): print "actually throttling", interface, "to", value self.ifs[interface]["action_timer"] = None cmd = "pkexec tc qdisc replace dev %s root handle 1:0 netem delay %smsec" % (interface, int(value),) print cmd os.system(cmd) def turn_on_throttling(self, interface): val = self.ifs[interface]["slider"].get_value() if self.ifs[interface]["action_timer"] is not None: print "aborting previous throttle request for", interface GLib.source_remove(self.ifs[interface]["action_timer"]) print "throttling", interface, "to", val source_id = GLib.timeout_add_seconds(1, self.actually_turn_on_throttling, interface, val) self.ifs[interface]["action_timer"] = source_id def actually_turn_off_throttling(self, interface): print "actually unthrottling", interface self.ifs[interface]["action_timer"] = None cmd = "pkexec tc qdisc del dev %s root" % (interface,) print cmd os.system(cmd) def turn_off_throttling(self, interface): if self.ifs[interface]["action_timer"] is not None: print "aborting previous throttle request for", interface GLib.source_remove(self.ifs[interface]["action_timer"]) print "unthrottling", interface source_id = GLib.timeout_add_seconds(1, self.actually_turn_off_throttling, interface) self.ifs[interface]["action_timer"] = source_id def update_throttled_list(self, throttled_ifs): for k, v in self.ifs.items(): if k in throttled_ifs: current = v["checkbox"].get_active() if not current: self.ifs[k]["toggled_by_code"] = True v["checkbox"].set_active(True) delay = float(throttled_ifs[k]["delay"]) self.ifs[k]["current_real_value"] = delay v["slider"].set_value(delay) else: current = v["checkbox"].get_active() if current: v["checkbox"].set_active(False) if __name__ == "__main__": if not which("pkexec"): print "You need pkexec installed." sys.exit(1) app = App() Gtk.main()

Marcin Juszkiewicz: From a diary of AArch porter –- testsuites

Planet Ubuntu - Wed, 2014-06-25 07:56

More and more software come with testsuites. But not every distribution runs them for each package (nevermind is it Debian, Fedora or Ubuntu). Why it matters? Let me give example from yesterday: HDF 4.2.10.

There is a bug reported against libhdf with information that it built fine for Ubuntu. As I had issues with hdf in Fedora I decided to look and found even simpler patch than one I wrote. Tried it and got package built. But that’s all…

Running testsuite is easy: “make check”. But result was awesome:

!!! 31294 Error(s) were detected !!!

It does not look good, right? So yesterday I spent some time yesterday on searching for architecture related check and found main reason for so big amount of errors — unknown systems are treated as big endian… Simple switch there and from 31294 it dropped to just 278 ones.

Took me a while to find all 27 places where miscellaneous variations of “#if defined(__aarch64__)” were needed and finally got to point where “make check” simply worked as it should.

So if you port software do not assume it is fine once it builds. Run testsuite to be sure that it runs properly.

All rights reserved © Marcin Juszkiewicz
From a diary of AArch porter –- testsuites was originally posted on Marcin Juszkiewicz website

Related posts:

  1. From a diary of AArch porter – part II
  2. I miss Debian tools
  3. AArch64 is in the house

Ubuntu Kernel Team: Kernel Team Meeting Minutes – June 24, 2014

Planet Ubuntu - Tue, 2014-06-24 17:11
Meeting Minutes

IRC Log of the meeting.

Meeting minutes.


20140624 Meeting Agenda

Release Metrics and Incoming Bugs

Release metrics and incoming bug data can be reviewed at the following link:


Status: Utopic Development Kernel

We have rebased our Utopic kernel “unstable” branch to v3.16-rc2. We
are preparing initial packages and performing some test builds and DKMS
package testing. I do not anticipate a v3.16 based upload until it has
undergone some additional widespread baking and testing.
Important upcoming dates:
Thurs Jun 26 – Alpha 1 (2 days away)
Fri Jun 27 – Kernel Freeze for 12.04.5 and 14.04.1 (3 days away)
Thurs Jul 31 – Alpha 2 (~5 weeks away)

Status: CVE’s

The current CVE status can be reviewed at the following link:

Status: Stable, Security, and Bugfix Kernel Updates – Trusty/Saucy/Precise/Lucid

Status for the main kernels, until today (May. 6):

  • Lucid – Testing
  • Precise – Testing
  • Saucy – Testing
  • Trusty – Testing

    Current opened tracking bugs details:


    For SRUs, SRU report is a good source of information:



    cycle: 08-Jun through 28-Jun
    06-Jun Last day for kernel commits for this cycle
    08-Jun – 14-Jun Kernel prep week.
    15-Jun – 21-Jun Bug verification & Regression testing.
    22-Jun – 28-Jun Regression testing & Release to -updates.

    14.04.1 cycle: 29-Jun through 07-Aug
    27-Jun Last day for kernel commits for this cycle
    29-Jun – 05-Jul Kernel prep week.
    06-Jul – 12-Jul Bug verification & Regression testing.
    13-Jul – 19-Jul Regression testing & Release to -updates.
    20-Jul – 24-Jul Release prep
    24-Jul 14.04.1 Release [1]
    07-Aug 12.04.5 Release [2]

    [1] This will be the very last kernels for lts-backport-quantal, lts-backport-raring,
    and lts-backport-saucy.

    [2] This will be the lts-backport-trusty kernel as the default in the precise point
    release iso.

Open Discussion or Questions? Raise your hand to be recognized

No open discussions.

Jono Bacon: The Return of my Weekly Q&A

Planet Ubuntu - Tue, 2014-06-24 05:09

As many of you will know, I used to do a weekly Q&A on Ubuntu On Air for the Ubuntu community where anyone could come and ask any question about anything.

I am pleased to announce my weekly Q&A is coming back but in a new time and place. Now it will be every Thursday at 6pm UTC (6pm UK, 7pm Europe, 11am Pacific, 2pm Eastern), starting this week.

You can join each weekly session at

You are welcome to ask questions about:

  • Community management, leadership, and how to build fun and productive communities.
  • XPRIZE, our work there, and how we solve the world’s grand challenges.
  • My take on Ubuntu from the perspective of an independent community member.
  • My views on technology, Open Source, news, politics, or anything else.

As ever, all questions are welcome! I hope to see you there!


Subscribe to Free Software Magazine aggregator