news aggregator

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!

The Fridge: Ubuntu Weekly Newsletter Issue 373

Planet Ubuntu - Tue, 2014-06-24 02:35

Sam Hewitt: Chicken Laksa

Planet Ubuntu - Mon, 2014-06-23 19:05

Laksa is a quite popular spicy noodle soup, from the regions of China, Singapore, Malaysia & Indonesia, as such many variations and regional differences. You can get more info from Wikipedia.

This recipe I'm sharing is for a chicken laksa but it can be varied or added to, such as using fish or shrimp instead. The addition of veg. such as bok choy or shredded carrot wouldn't go astray either.

Chicken Laksa Recipe

    4 hours of waiting; 10 minutes of work; Makes 8 buns

  • 2 tablespoons peanut oil (or sunflower oil)
  • 1 kg chicken thigh fillets, sliced
  • 200g laksa paste –if not purchased arecipe follows
  • 3 cups (700ml) chicken stock
  • 1 can (~400ml) coconut milk/cream
  • 1 lime, juice of
  • 2 kaffir lime leaves, very finely shredded (if not available add more lime juice)
  • 2 tablespoons crushed rock sugar (or light brown sugar)
  • 2 tablespoons fish sauce
  • 800g (a box) dried vermicelli rice noodles (or Udon noodles)
  • salt
  • Garnishes
  • Fried Asian shallots (see note) and sliced red chile, to garnish
  • 2 cups (160g) bean sprouts, trimmed
  • 1/2 cup Thai basil leaves (you can substitute regular basil)
  • 1/2 cup cilantro leaves
  • 1/2 cup green onion, sliced on a bias
  • 1-2 chilies, sliced thinly
  • 4 eggs, hardboiled
  • lime slices
  1. In a wok, stir fry the chicken slices, in batches, until golden brown (3-4 minutes). Remove from wok and set aside.
  2. Add the laksa paste and stir fry until fragrant. Transfer to a large pot.
  3. Return the chicken, add the coconut milk, chicken stock, kaffir lime leaves (if using) & the lime juice.
  4. Bring the broth to a boil, reduce heat & simmer for 10 minutes to cook the chicken.
  5. Stir in the sugar, fish sauce and season to taste.
  6. Cook noodles according to directions.
  7. Serve broth and cooked chicken over cooked noodles and garnish with slices of boiled egg, bean sprouts, Thai basil & cilantro leaves, sliced green onion and sliced chiles.
Laksa Paste Recipe

    Makes about 300ml

  • 6 dried long red chiles (or a couple tablespoons dried chile flakes)
  • 1 teaspoon ground coriander
  • 1/2 teaspoon ground cumin
  • 1/2 teaspoon ground turmeric
  • 1/2 teaspoon sweet paprika
  • 1 3-cm piece galangal (or ginger), peeled & chopped
  • 1 onion, chopped
  • 2 garlic cloves, chopped
  • 2 stalks lemongrass, white part only, chopped
  • several cashew nuts
  • 2 teaspoons shrimp paste (or dried shrimp)
  • 1 tablespoon peanut oil
  1. Place the dried chile in a small heatproof bowl (and the dried shrimp if using in another) and cover with boiled water. Let stand for ~10 minutes.
  2. In a small non-stick skillet toast the coriander, cumin, turmeric & paprika over med-high heat, until fragrant –1-2 minutes.
  3. In a food processor, pulse to coarsely chop the ginger/galanagal, onion, lemongrass, garlic & cashews.
  4. Drain and add the reconsituted chiles (and dried shrimp, if using) and the shrimp paste (if using).
  5. Turn the food processor on and pour in the peanut oil, blending until a smooth paste forms.
  6. This laksa paste can be kept refridgerated for a couple weeks.

Sam Hewitt: Making Udon Noodles

Planet Ubuntu - Mon, 2014-06-23 19:00

Asian cuisines are among my favourites, particularly broth-y noodle dishes like Laksa or Pho. So I took it upon my self to learn how to make udon noodles.

The dough, I was surprised to discover, is a very basic wheat flour dough, however the footwork (you read correctly) required may deter some; given the dough's density it requires quite a bit of force to knead, but it's well worth it, in my opinion.

Udon Dough Recipe
  • 2 cups white all-purpose flour
  • 1/2 cup warm water
  • 2 teaspoons kosher salt
  1. Dissolve the salt in the warm water.
  2. In a large bowl, combine the salt water solution and the flour.
  3. Knead with your hands until it is a lumpy mass & transfer it to a clean surface.
  4. Continue to knead and shape it into a ball ߝthis'll take about 10 minutes.
  5. Let the dough-ball rest for a few minutes.
  6. The traditional method is to knead the dough with your feet, using your body weight to help flatten it.
  7. Shape it into more-or-less a rectangle & place it in a large zip-seal bag or between two sheets of plastic wrap and wrap in a towel.
  8. Using your feet, flatten it out until it's ~1 cm thick, then fold in half and knead it out again.
  9. Repeat this another 3 or 4 times, folding the dough over in the same direction each time ߝthis smooths out the dough.
  10. Hey, how often do you get to walk on your food?
  11. After the final folding/foot massage, set the dough aside (still wrapped up) for 3+ hours.
  12. When ready, unwrap the dough onto a clean, lightly-floured surface.
  13. Using a pasta machine (for ease), roll to desired thinness and cut into the noodle shape you like.
  14. Cooking in boiling water or directly in a soup broth until tender.

Tony Whitmore: Tom Baker at 80

Planet Ubuntu - Mon, 2014-06-23 17:31

Back in March I photographed the legendary Tom Baker at the Big Finish studios in Kent. The occasion was the recording of a special extended interview with Tom, to mark his 80th birthday. The interview was conducted by Nicholas Briggs, and the recording is being released on CD and download by Big Finish.

I got to listen in to the end of the recording session and it was full of Tom’s own unique form of inventive story-telling, as well as moments of reflection. I got to photograph Tom on his own using a portable studio set up, as well as with Nick and some other special guests. All in about 7 minutes! The cover has been released now and it looks pretty good I think.

The CD is available for pre-order from the Big Finish website now. Pre-orders will be signed by Tom, so buy now!

Pin It

Dustin Kirkland: The Yo Charm. It's that simple.

Planet Ubuntu - Mon, 2014-06-23 14:44
It's that simple.

It was about 4pm on Friday afternoon, when I had just about wrapped up everything I absolutely needed to do for the day, when I decided to kick back and have a little fun with the remainder of my work day.

 It's now 4:37pm on Friday, and I'm now done.

Done with what?  The Yo charm, of course!

The Internet has been abuzz this week about the how the Yo app received a whopping $1 million dollars in venture funding.  (Forbes notes that this is a pretty surefire indication that there's another internet bubble about to burst...)

It's little more than the first program any kid writes -- hello world!

Subsequently I realized that we don't really have a "hello world" charm.  And so here it is, yo.

$ juju deploy yo

Deploying up a webpage that says "Yo" is hardly the point, of course.  Rather, this is a fantastic way to see the absolute simplest form of a Juju charm.  Grab the source, and explore yourself.

$ charm-get yo
$ tree yo
├── config.yaml
├── copyright
├── hooks
│   ├── config-changed
│   ├── install
│   ├── start
│   ├── stop
│   ├── upgrade-charm
│   └── website-relation-joined
├── icon.svg
├── metadata.yaml
1 directory, 11 files

  • The config.yaml let's you set and dynamically changes the service itself (the color and size of the font that renders "Yo").
  • The copyright is simply boilerplate GPLv3
  • The icon.svg is just a vector graphics "Yo."
  • The metadata.yaml explains what this charm is, how it can relate to other charms
  • The is a simple getting-started document
  • And the hooks...
    • config-changed is the script that runs when you change the configuration -- basically, it uses sed to inline edit the index.html Yo webpage
    • install simply installs apache2 and overwrites /var/www/index.html
    • start and stop simply starts and stops the apache2 service
    • upgrade-charm is currently a no-op
    • website-relation-joined sets and exports the hostname and port of this system
The website relation is very important here...  Declaring and defining this relation instantly lets me relate this charm with dozens of other services.  As you can see in the screenshot at the top of this post, I was able to easily relate the varnish website accelerator in front of the Yo charm.
Hopefully this simple little example might help you examine the anatomy of a charm for the first time, and perhaps write your own first charm!

Benjamin Kerensa: Mozilla at Open Source Bridge

Planet Ubuntu - Sun, 2014-06-22 23:49

Ben Kero, Firefox OS Talk at OSBridge 2013

This week Open Source Bridge will kick off in Portland and I’m extremely excited that Mozilla will once again be sponsoring this wonderful event. This will also mark my second year attending.

To me, Open Source Bridge is the kind of conference that has a lot of great content while also having a small feel to it; where you feel like you can dive in and do some networking and attend many of the talks.

This year, like previous years, Mozilla will have a number of speakers and attendees at Open Source Bridge and we will be giving out some swag in the Hacker Lounge throughout the week and chatting with people about Firefox OS and other Mozilla Projects.

If you are a Mozillian in town for AdaCamp or Open Source Bridge, be sure to stop by the Portland MozSpace and say hello.

Be sure to catch one of these awesome talks being given by Mozillians:

Explicit Invitations: Passion is Not Enough for True Diversity – Lukas Blakk

Making language selection smarter in Wikipedia – Sucheta Ghosal

The Outreach Program for Women: what works & what’s next – Liz Henry

The joy of volunteering with open technology and culture – Netha Hussain

Making your mobile web app accessible – Eitan Isaacson

Modern Home Automation – Ben Kero

Nest + Pellet Stove + Yurt – Lars John

When Firefox Faceplants – what the fox says and who is listening – Lars John

From navel gazing to ass kicking: Building leadership in the journalism code community – Erika Owens

Badging and Beyond: Rubrics and Building a Culture of Recognition as Community Building Strategies – Larissa Shapiro


Paul Tagliamonte: Adventures in AsyncIO: Moxie

Planet Ubuntu - Sun, 2014-06-22 17:49

This week, I started work on something I’m calling moxie. Due to wanting to use my aiodocker bindings on the backend, I decided to implement it in 100% AsyncIO Python 3.4.

What pushed me over the edge was finding the aiopg driver (postgres asyncio bindings), with very (let me stress - very) immature SQLAlchemy support.

Unfortunately, no web frameworks support asyncio as a first-class member of the framework, so I was forced into writing a microframework. The resulting “app” looks pretty not bad, and likely easy to switch if Flask ever gets support for asyncio.

One neat side-effect was that the framework can support stuff like websockets as a first-class element of the framework, just like GET requests.

Moxie will be a tool to run periodic long-running jobs in a sane way using

More soon!


Subscribe to Free Software Magazine aggregator