Back in November I ranted about the migration of Gnome Shell to Debian/Testing. Plenty of other people did the same thing (or have done the same thing about Unity).
I'd just like to say sorry to any of the GNOME people who felt unappreciated; I know you work hard to try and produce a useful user experience out of the box. I ended up doing the dist-upgrade on my work laptop only a week or so after my home machine, and in the process discovered that the nouveau Mesa driver now supports my machine pretty well. It's taken me a while to get used to it, but my frustrations with the change have diminished and I haven't felt the need to move to something different. So, a belated thanks for all your hard work.
Powered by Twitter Tools
Powered by Twitter Tools
This patch I posted yesterday needs some reviews! It adds a qemu-img “diff” subcommand. One use for this is for when you’ve copied/cloned a guest, and you want to go back to a thin-provisioned guest over a base image.
To show it in action, we can use virt-ls. Firstly I’ll start with a Windows 2003 guest which I’ll copy:
$ xzcat /mnt/media/guest-library/win2003.img.xz > base.img $ cp base.img copy.imgAt this point, I boot copy.img, log in and install the Windows updates, just so the guest has some changes over the base image.
Now I have two 6 GB files**, but I know that they’re very similar to each other:
$ ll -h total 6.9G -rw-rw-r--. 1 rjones rjones 6.0G May 18 11:26 base.img -rw-rw-r--. 1 rjones rjones 6.0G May 18 11:42 copy.imgI could save some space here using qemu-img diff!
$ ~/d/qemu/qemu-img diff -b base.img copy.img diff.qcow2 Formatting 'diff.qcow2', fmt=qcow2 size=6442450944 backing_file='base.img' encryption=off cluster_size=65536 $ ll -h total 7.2G -rw-rw-r--. 1 rjones rjones 6.0G May 18 11:26 base.img -rw-rw-r--. 1 rjones rjones 6.0G May 18 11:42 copy.img -rw-r--r--. 1 rjones rjones 308M May 18 11:44 diff.qcow2copy.img is no longer needed because base.img + diff.qcow2 contains the same data. Before we delete it, let’s check that using virt-ls*:
$ virt-ls -lR -a base.img --checksum / > base.files $ virt-ls -lR -a copy.img --checksum / > copy.files $ virt-ls -lR -a diff.qcow2 --checksum / > diff.filesNote we expect that “base” is different from the other two, but “copy” and “diff” should be identical if all went well:
$ md5sum *.files bef46650ff6f2d3f22f562c2a820230f base.files fc723e43a9c16bffd6a9fb7dfd701752 copy.files fc723e43a9c16bffd6a9fb7dfd701752 diff.filesSo we can now in confidence delete copy.img.
* = Note there is a bug which stops --checksum from working in released versions of virt-ls.
** = The eagle-eyed will spot that I don’t in fact have two 6 GB files, because cp has cleverly made the copy sparse, Nevertheless qemu-img diff still saves space.
After using Flask and MongoEngine together for sometime, I've finally got round to publishing the extension on pypi - installing is simple: pip install flask-mongoengine. The documentation is here: http://readthedocs.org/docs/flask-mongoengine
Configuration is simple
1
2
3
4
5
6
7
from flask import Flaskfrom flask.ext.mongoengine import MongoEngine
app = Flask(__name__)app.config.from_pyfile('the-config.cfg')db = MongoEngine(app) # Pass the appdb.init_app(app) # Initiate the app
Full WTForms support including ModelForms and built in Flask-Debugtoolbar support:
This just happened:
And so this just happened:
Dear Principal Cullum,
I frequently commute by bicycle past your school, traveling down Heath Road toward Weybridge. I have often observed that parents tend to let their children out of their cars along here when queuing in traffic or waiting for the traffic lights.
Unfortunately, car passenger doors opening into the route of cyclists represents a very serious hazard for cyclists, and I have seen a number of near-misses.
Even more unfortunately, today I was the victim of exactly the accident you’d expect, as one of your pupils opened the door right into my path, too late for me to avoid, resulting in a painful crash and some nasty bruising. The pupil (and his father) were extremely polite and extremely apologetic and thankfully no permanent damage has been done this time.
Whilst I understand that you have limited control over the actions of your pupils and their parents outside of school grounds, I feel it would be extremely useful if you could issue a reminder to parents to only drop off their children at appropriate places – for example, after parking off the main road – to ensure that a more serious accident does not occur in the future. Anything you can do to raise their awareness of the dangers of ‘dooring‘, and taking care to avoid cyclists in general on that crowded road, would be much appreciated.
Other than this unfortunate incident, I continue to be impressed by the general good conduct of pupils on their way to your school, which reflects well on the level of education they must therefore be receiving.
We’ll see if this makes any difference.
Incidentally, the road in question is a nightmare for everyone. It’s relatively narrow, so there’s not much space either side of the cars for cyclists. Between 8 and 9 every morning there’s usually a long queue of mostly-stationary cars. There’s no footpath (just a muddy track) for much of it. There’s also a number of junctions with cars turning off and pulling out.
I’ve tried various tactics for getting down the road in one piece:
Perhaps I just need a better bike horn.
Update: I got a fairly swift and very nice reply from the school principal. She promises to remind the pupils of where and how they should be dropped off via assemblies next week, and will also remind parents via her weekly blog. Awesome! (And sorry kids for making assembly just a little more boring.)
Recently I have been talking a little about building quality and precision into Ubuntu Accomplishments. Tonight I put one of the final missing pieces in place and I thought I would share in a little more detail about some of this work. Some of you might find this useful in your own projects.
Before I get started though, I just wanted to encourage you to start playing our software and for those of you that had a crash when using certain languages with the Accomplishments Information viewer, I released a 0.1.2 update earlier that fixes this.
Automated TestingAs we continue to grow the Ubuntu Community Accomplishments collection it is going to be more and more complex to ensure all of the accomplishments are working effectively every day; we are already at 28 accomplishments and growing! What’s more, the community accomplishments scripts work by checking third-party services for data (e.g. Launchpad) to assess if you have accomplished something. These external services may change their APIs, adjust how they work, add/reduce services etc, so we need to know right away when one of our accomplishments no longer works and needs updating.
To do this I wrote a tool called battery. It works by reading in a test that is available for each accomplishment that feeds the accomplishment validation data that should succeed and also data that should not validate. As an example, for the Ubuntu Member accomplishment the data that succeeds is an existing member’s email address (such as my own) and the test for failure is an email address on Launchpad that is not a member. The original script requires the user’s email address to assess this accomplishment, so battery tests simply require the same types of information, with data that can trigger success and failure.
This approach allows us to test for three outcomes:
The way this works is that battery includes a customized version of the general accomplishments.daemon module that we use for the backend service. In the code I override the back-end module and load a custom module. This way the original accomplishment script does not need to be modified; instead of get_extra_information() calling the back-end daemon and gathering the user’s details, the custom module that comes with battery instead has it’s own get_extra_information() that gets returns the test data so battery can run the tests.
Originally battery only output textual results, but this would require us manually running it. As such, last night I added HTML output support. I then enabled battery to run once a day and automatically update the HTML results. You can see the output here.
There are a few important features in this report other than a list of all the accomplishment test results:
While this was useful, it still required that we would remember to visit the web page to see the results. This could result in days passing without us noticing a failure.
Tonight I fixed this by adding email output support to battery. With it I can pass an email address as a command-line switch and battery will generate an email report of the test run. I also added battery‘s default behavior to only generate an email when there are failures or tests are missing. This prevents it generating results that don’t need action.
With this feature I have set battery to send a daily “Weather Report” to the Ubuntu Accomplishments mailing list; this means that whenever we see a weather report, something needs fixing.
One final, rather nice feature, that I also added was the ability to run battery on one specific accomplishment. This is useful for when we are reviewing contributions of new accomplishments; we ask every contributor to add one of these simple tests, and using battery we can test that the script works for validation success, validation failure, and script failure with a single command. This makes reviewing contributions much easier and faster and improves our test coverage.
GraphingSomething Mark Shuttleworth discussed at UDS was the idea of us building instrumentation into projects to help us identify ways in which we can make better decisions around how we build software. This is something I have also been thinking of for a while, and to kick the tyres on this I wanted to first track popularity and usage of Ubuntu Accomplishments before exploring other ways of learning how people contribute to communities to help us build a better community.
Just before we released version 0.1 of Ubuntu Accomplishments, I created a little script that does a scan of the validation server to generate some statistics about the number of daily new users, the daily number of new trophies issued, and the totals. Importantly, I only count users and trophies, and I am only interest in publishing anonymized data, not exposing someone’s own activity.
To do this my script scans the data and generates a CSV file with the information I am interested in. I then used the rather awesome Google Charts API to take my CSV and generate the Javascript need to display the graph. Here are some examples:
While this is not exactly instrumentation, it got me thinking about the kind of data that could be interesting to explore. As an example, we could arguably explore which types of contributions in our community are of most interest in our users, how effective our documentation and resources are, which processes are working better than others, and also some client side instrumentation that explores how people use Ubuntu Accomplishments and how they find it rewarding and empowering.
Importantly, none of this instrumentation will happen without anyone’s consent; privacy always has to be key, but I think the idea of exploring patterns and interesting views of data could be a fantastic means of building better software and communities.
The OCaml Users and Developers Conference (14th September 2012, Copenhagen) is looking for speakers!
I’m intending to submit a talk on using OCaml for code generation in libguestfs.
At the Ubuntu Developer Summit last week I delivered a plenary on the Tuesday called Accomplishing An Awesome App Developer Platform that tells the story of how the Ubuntu app developer platform enabled me to build the Ubuntu Accomplishments system that I designed with Aq. The presentation walks through the story of how we designed the system, and how everything was available in Ubuntu to create the client, back-end daemon, validation server, and desktop integration. I think it is a good example of how Ubuntu can help app devs to create interesting ideas and apps.
I thought this might be handy to have on YouTube, so I re-recorded it today, and you can see the video below:
Can’t see it? Watch it here!
If you want to create your own application for Ubuntu, be sure to visit developer.ubuntu.com.
I just released a new update for the Ubuntu Community Accomplishments collection. This new release (0.1.1) includes the following new community accomplishments:
Thanks to Silver Fox, Michael Hall, Matt Fischer, Rafal Cieslek, Angelo Compagnucci for contributing these additions! It is wonderful to see our community growing!
If you want to contribute accomplishments, be sure to see our guidelines, some suggestions, and how to get started!
If you are already running Ubuntu Accomplishments 0.1, you just need to do the following to get the new set:
sudo apt-get update sudo apt-get upgradeIf you are running the daemon, kill it first with killall -9 twistd and then load Accomplishments Information from the dash.
If you are new to Ubuntu Accomplishments, be sure you have your Ubuntu One set up and running on your computer, and then follow these installation instructions.
Last week, I finally gave in and bought a new laptop. I wanted something small and lightweight, yet reasonably powerful.
I discounted the MacBook Air on a couple of counts: the increased cost and the potential for extra hassle getting Ubuntu running.
My two choices were the Dell XPS 13 and the Asus Zenbook. The Dell was my first choice: Project Sputnik, the fact Mark has just got one and its size were all in its favour.
The Asus is a good looking machine and has had good reviews. Some dislike the keyboard, but it has been okay for me. However, the Dell feels like it has more momentum amongst the kind of people I work with and the people who make Ubuntu work well on laptops.
After much thought, and a few conversations, a couple of things pushed me away from the Dell: the trackpad isn’t yet well supported in anything other than Windows and it’s a touch more expensive than the Asus.
So, after a few days with the Asus, here’s a quick run-down:
I’ll report back when I’ve started to tackle some of these issues.
So it’s that time again when we all head off to Liverpool for Dan Lynch’s Rathole Radio, as usual Matthew Copperwaite travelled up from the small village of London to Castle Cannon in the West Midlands and arrived while I was watching Mel Gibson leaving no one behind in ‘When we were soldiers’. Full of excitement I opened the front door to be greeted by Matt clutching a pathetic bouquet of flowers! “These are for you.” he said “you’re always moaning that I never bring you flowers.” Bastard, he knows full well I like lilies! After spending some time recovering from his journey Matt and I set off for Liverpool, I always like to take Matt on a little bit of a detour rather than taking the shortest route to the M6 so that he can sample the delights of the West Midlands the first 20 minutes or so of our journey was pretty uneventful however when we hit the M6 OMG! The traffic was horrendous, every 5 to 10 minutes it was stop start stop start and this was in the fast lane, it has to have been one of the worst journeys up Matt and I have done in fact on one occasion we nearly died when I took my eye off the car in front for literally a split second.
Now I was determined on this occasion that we would not get lost I had downloaded the directions from Google maps even though this is the third time I have done the journey, it clearly states on the directions to get off at junction 21a and follow the M62 to the 5080 now this is where we got lost before so we start to follow the directions and yes you guessed it we was on the wrong road “Fook this” I said “I’m going back to the 62.” So we headed back to the 62 and followed it down into Liverpool which miraculously turns into the 5080 how stupid is that? On the outskirts of Liverpool we could clearly see Ubuntu’s new venture, they are going into house refuse collection as there was a sea of purple wheelie beans everywhere presumably these are collected by the Ubuntu-cart. We headed on down into the city centre totally ignoring the directions we had with me repeatedly saying “we just need to head for the sea.” Yeah that worked really well didn’t it? So having gone round the block we decided to follow a bus which clearly had better directional sense than we did. Now I should say here that we was looking for the Q car park Liverpool 1 I had looked on Google maps, street view, and could see how you got out of the car park but could not for the life of me find the way in. The Strand is a very busy road with three lanes of course we was in the left-hand lane and needed to be in the right-hand lane I tried looking like a lost tourist at the cop car next to us in the hope that they would let us cross in front of them but we obviously didn’t look criminal enough as they just drove off.
Having managed to cross the three lanes into the right-hand lane we travelled a little further on and Matt spotted a ramp in the middle of the road going down into the bowels of the earth “aha, this must be the entrance?” As we descended down we drove across the worst rumble strips I have ever driven over in my life I don’t know about slowing us down but it certainly nearly made me shit myself. I have to say I have never parked in such a posh car park, blue mood lighting adorned the subterranean cavern and this car park was huge. We found a space and retrieved our bags from the boot and set off looking for the exit, on our way we accosted an unfortunate local woman “excuse me can you tell us how we get out of here?” The poor woman led us to the lifts “you don’t happen to know where the travel Lodge Strand Hotel is do you?” The woman led us outside and directed us in the general location of the hotel, Matt and I set off in the lovely weather we was having on that day, it was pissing down. As the bedraggled pair shuffled along the Strand heads sunk into our shoulders for protection we tried to find the hotel “I’m sure it’s on the docks” I said then suddenly out of the corner of my eye there in 20ft letters was the Strand, unusually reception is on the first floor and as we came out of the lift we was greeted by a party of hen nighters trying to book in. Matt, ever the geek, used the booking in console and had his door key straight away I of course was determined to hand over my scrap of paper confirming my booking to a human being, yeah I’m old school, bite me.
“What shall I do give you knock in about an hour?” Said Matt, “Na, I’ve changed my mind I’m not going to have a shower now I’m just going to have a shave and change. Just come in about 20 minutes, don’t panic I won’t be naked.” twenty minutes later there was a knock at the door and I opened it naked from the waist up clutching a towel to my face trying to staunch the blood!
“You bastard, you promised you wouldn’t be naked!” said Matt, never mind the fact that the lovely white towel was covered in blood and looked like some heinous murder had been committed all he was worried about was seeing my hairy chest. Having managed to stem the flow I dressed and we set off to retrieve my phone which I had accidentally left in the car this meant traipsing all the way back to the car park which by now we had a good idea how to get to, having retrieved the phone we got back into the lift and arriving at the shopping level the lift announced “shopping and shop mobility.” which was hysterical given there was still a flight of stairs to be negotiated, how on earth is a wheelchair bound person going to get up those stairs?
We set off for Wetherspoon’s which is where some of us met up last year, as we walked through the city centre a voice called out “Hello” scared that we was going to be asked if we could loan the owner of the voice 24p we picked up the pace, “It’s Dick Turpin in’t it?” I was cornered I had no choice but to own up. There in front of us was Matt Molyneaux, maybe he had been there all day waiting to ambush us? Moggers needed to go back to the hotel so we told him where we would be and carried on I thought it would be a good idea to announce on G+ where we was meeting so, wait for it, I typed ‘witherspoons’ Matt said “what the hell is witherspoons? It’s Wetherspoon’s how can you get that wrong? It’s the biggest national pub chain in the UK!” He’s horrible to me you know. What always makes me smile in this pub is all the girls with rollers in their hair who are having a pre-night out drink I think I’ve only ever seen this in Liverpool? After a short while Matt’s mate texted him that he was in another pub, The Pilgrim on Pilgrim Street. Now given I’d announced we was in Wetherspoon’s we buggered off to the Pilgrim like the complete gits we are.
It’s become a bit of a tradition to eat in The China Palace given it was one of those “Eat all you can for £6.00″ establishments, now Michael (heeed) Rimicans had said earlier in the week that their website was down but we never listen to anything he has to say anyway. My phone rang and it was Michael “The Chinese is closed!” now I thought he meant closed as in not open but after much gnashing of teeth he managed to communicate that like the African blue parrot (Monty Python) “It had ceased to be.” and was closed down so we decided to head for the LEAF as they did food there, the venue is actually really nice and I thought the staff was pretty friendly too. We could hear Dan warming up and could take no more and crept upstairs.
First up was Thom Morecroft I would have said he was a folk singer, we all loved his opening song and his band featured a guy who played a box. Yep he sat on a box and banged it! But it was very good.
I’m afraid the next few songs seemed a bit same old same old with a bit too much “Ooh Ooh aah aah” melodies for my liking Tom did say Holly(?) had a beautiful voice, if only she had sung words more. The songs in the middle of his set was a bit depressing for me but even so we all enjoyed it, sing some happy songs next time mate.
Next up was ‘our mate Dan’ with his band 20lb sounds I am so glad he’s smartened himself up a bit, gone are those crappy red shorts and in was a pretty slick black pair of strides and a black shirt. Of course being a scouse git he still had to wear some multi coloured trainers didn’t he!
Getting a bit too carried away with himself Dan managed to break a string during the second song “It’s OK I only need five strings anyway.” said Mr show off. I’m not sure if it was the next song or the one after Dan realised that he did need that string after all when he hit his guitar solo which now consisted of ‘one note’ played relentlessly. The highlight for me was not only when he announced ”The next song is Jimmy Carter” but that it was for me \o/ I love this song, mainly because it’s the only one of Dan’s I know the words to but also Dan really belts it out. I was a bit worried about him during the mouth organ solo I was scared we’d have to scoop his lung up as he bent over blowing his guts out with a contorted face “You’ll do yourself a mischief mate.”
Next up was P’Chenga this guy is mental! Matt said he was kinda Ska/Punk with almost a bit of Reggae thrown in. This loon threw himself round the stage like a demented gibbon while pulling facial contortions HE WAS BRILLIANT true we couldn’t really understand half the words but who cares he made up for it in energy.
We did feel that his set went on a touch too long there’s only so much excitement a man can take so was kind of glad we could get our breath back when he finished by now I had consumed seven Ginger Beers and was glad of the toilet break to be honest.
The final act was The Corinthians I would have said they was a Rap band, I’ll be honest they was not really my cup of tea although my foot was tapping a couple of times. Matt and I noticed that the guy on the Laptop and I suspect sound board was brilliant! He really seemed to be enjoying himself as well as the guy in the white tee-shirt (This works really well if you wasn’t there as you have no idea who I’m talking about.) my main complaint was they must have said “Corinthians” 30 times during every song! Mind you Matt was right as it clearly worked, their name is now imprinted on my brain.
They’re clearly popular as they brought along their own fan base with an average age of twelve by the look of some of them however at least they had the balls to stand in front of the stage and dance (If you can call it that) which made a few others get up and jiggle about a bit.
One of the strangest moments of the night was when Mr Tinfoil walked past! I have no idea what he was smoking and his excuse of “I was at a fancy dress party.” seemed ‘thin’ very thin in my opinion but hey this is Liverpool and nothing should surprise you of a night time round there.
It was getting near the end of the night certainly for us some of our friends had already headed off and Matt and I decided to wander off back to the hotel. We had a brilliant night Rathole Radio is not just about the music for us it’s about a social event with our friends and one we look forward to every year. If you’ve never been come along next year and we’ll look after you.
The pictures in the post are reproduced by kind permission of another baldy Pete Stean who scared the living daylights out of me by leaving his hugely expensive camera lying around, I’ve lost five years off my life coz of you you bastard! Cheers for letting me use your photos mate and the ones you took of Matt and me.
Pete Stean is available for weddings, christenings and Bar Mitzvah’s and the odd risqué photo shoot. All that’s left to say is “Thanks Dan see you in 2013″
Oh and one final thing, Matt and I was very impressed with the vending machine in the Strand Travelodge that dispensed paracetamol!
ENJOY
Previously if you wanted to mount a disk image on the host from libguestfs, you had to use a separate program called guestmount.
A couple of months ago, we added FUSE support directly into the libguestfs API, and rewrote guestmount to use it. This also means you can use FUSE from your own libguestfs programs.
Yesterday I wrote a short example of using the mount-local API from C. This program creates a new disk image, formats it etc using libguestfs, then gives you a subshell so you can copy your own files, directories etc. in. When you quit the subshell, the disk image is synced and closed, and you end up with a virtual disk image containing all the files you just added. (Nothing that you couldn’t easily do before, but a nice little demonstration anyway).
Here it is in use:
$ gcc -Wall mount_local.c -o mount_local -lguestfs $ ./mount_local /tmp/test.img This is the 'mount-local' demonstration program. Follow the instructions on screen. Creating and formatting the disk image, please wait a moment ... The _current directory_ is a FUSE filesystem backed by the disk image which is managed by libguestfs. Any files or directories you copy into here (up to 512 MB) will be saved into the disk image. You can also delete files, create certain special files and so on. When you have finished adding files, hit ^D or exit to exit the shell and return to the mount-local program. mount-local-shell> ls lost+found PUT_FILES_AND_DIRECTORIES_HEREFrom the subshell, I copy in some files:
mount-local-shell> cp -a /usr/share/doc/libguestfs-devel-1.17.40/ . mount-local-shell> ls libguestfs-devel-1.17.40 lost+found PUT_FILES_AND_DIRECTORIES_HERE mount-local-shell> ls libguestfs-devel-1.17.40/ AUTHORS example-ubuntu.xml BUGS example-windows-2003-x64-cd.xml ChangeLog example-windows-2003-x86-cd.xml copy_over.c example-windows.xml create_disk.c example-windows-xp-cd.xml display_icon.c HACKING example-debian-netinst-cd.xml inspect_vm.c example-debian.xml README example-fedora-dvd.xml RELEASE-NOTES example-fedora-netinst-cd.xml ROADMAP example-fedora.xml TODO example-rhel-6-dvd.xml virt-dhcp-address.c example-rhel-6-netinst-cd.xml virt-inspector.rng example-ubuntu-live-cd.xmlAfter copying in my files, I exit from the subshell:
mount-local-shell> exit Any files or directories that you copied in have been saved into the disk image called '/tmp/test.img'. Try opening the disk image with guestfish to see those files: guestfish -a /tmp/test.img -m /dev/sda1Here is the disk image that was created (note it is sparse, so it’s not really so large as it appears):
$ ll /tmp/test.img -rw-r--r--. 1 rjones rjones 536870912 May 14 12:03 /tmp/test.img $ du -sh /tmp/test.img 18M /tmp/test.imgWe can use guestfish to look inside it:
$ guestfish -a /tmp/test.img -m /dev/sda1 Welcome to guestfish, the libguestfs filesystem interactive shell for editing virtual machine filesystems. Type: 'help' for help on commands 'man' to read the manual 'quit' to quit the shell ><fs> ll / total 18 drwxr-xr-x 4 root root 1024 May 14 12:03 . drwxr-xr-x 23 1000 1000 4096 May 14 12:18 .. -rw-r--r-- 1 root root 0 May 14 12:03 PUT_FILES_AND_DIRECTORIES_HERE drwxr-xr-x 2 root root 1024 May 14 08:37 libguestfs-devel-1.17.40 drwx------ 2 root root 12288 May 14 12:03 lost+foundDownload the test program here: https://github.com/libguestfs/libguestfs/blob/master/examples/mount_local.c
In the Ubuntu world we have some common values that are not just focused on freedom, but also in how we build Ubuntu. Values such as cadence, design, quality and precision help guide us in building the best Ubuntu that we can.
These values continued to be common themes at the recent Ubuntu Developer Summit in California. Today our culture continues to involve important integration work that is a rich and interesting challenge, but this work has also been augmented by us building assurances around Ubuntu too; assurances such as regular releases (cadence), the reliability and quality of the experience (quality), and attention to detail in both design and engineering (precision) are all examples of the strong balance of predictability and innovation that we want to bring.
These values are not limited to Ubuntu though: we want Ubuntu to be a platform where you can get the very best software experience, whether you are using Open Source or commercial applications. In a nutshell, we want to take the lessons we have been learning regarding cadence, design, quality and precision and share them with our upstreams. This is going to be a big chunk of what Michael Hall will be focusing on in the coming months.
One upstream project though that I am actively involved in in my spare time is Ubuntu Accomplishments and I wanted to share some of our plans surrounding our next 0.2 release and how these values are forming an important core of this work. Before I continue though, I just want to say a huge thank-you to everyone who has been participating in Ubuntu Accomplishments. Ever since our 0.1 release a few weeks ago we have had over 180 people start using this very early PPA and a number of people have started contributing accomplishments. Thanks to all of you!
QualityWith the expanded number of accomplishments being contributed, I started thinking last week about how we could perform better testing around these contributions as well as daily testing reports; I wanted to ensure that our project, even though we are very young and small, demonstrates a level of quality that we can be proud of. To kick this off, this weekend I wrote a small tool called battery that helps us assure quality. I created a validation test for every accomplishment and battery runs all the accomplishments and feeds them this data that will cause an accomplishment to succeed as well as fail. This serves a few valuable purposes:
As an important part of building good design into the system, battery was designed to not require any changes to the existing accomplishments sets and require a bare minimum from our contributors who should be spending more time having fun writing accomplishments than caring about tests. I am delighted with the results.
The Road To 0.2In addition to helping to ensure the accomplishment contribution process is simple (see our list of ideas for accomplishments and how to create them), we have been planning the 0.2 release. This will continue to focus on refinements and building a strong, reliable platform for both community and local accomplishments.
We will be focusing on the following in the 0.2 cycle:
It was wonderful to see the excitement and interest around Ubuntu Accomplishments at UDS, and I am excited to see where the project can take us. If you want to join us, be sure to join the mailing list and/or join us on IRC on freenode in #ubuntu-accomplishments.
Meant to post this a while ago when I booked the tickets, but life has a habit of being busy at present. I'm pleased to say I'm going to DebConf 12 in Managua. In the off-chance someone else might be on some of the same flights as me, here's what I've booked:
Outbound:
2012-07-07 00:15 SFO -> 08:12 CLT US466 2012-07-07 11:40 CLT -> 13:44 MIA US1831 2012-07-07 16:07 MIA -> 16:45 MGA US4925Inbound:
2012-07-14 21:15 MGA -> 01:50 MIA US4944 2012-07-15 06:15 MIA -> 08:19 CLT US1800 2012-07-15 09:40 CLT -> 12:08 SFO US1485There were some single stop options but the timings didn't them any quicker, they weren't any cheaper, and these times worked better for me anyway.
Powered by Twitter Tools
Powered by Twitter Tools
A short presentation I gave at today's Multipack Show and Tell on "How to make APIs that people like".
The tl;dr version: your API is part of your user experience. Take your UX knowledge -- design for the user, not for yourself; think about the user journey rather than just modelling your underlying infrastructure; make it understandable and intuitive and focused on their need -- and do all the same things when designing an API.