One of the ideas behind writing these week notes was that it would force me to write at least one post a week. That doesn’t seem to have worked. So here’s a combined post for the last two weeks.
Health
It’s four weeks today since I broke my leg. The leg itself feels fine; it’s just the cast that’s bloody inconvenient. I get around the house pretty well, but I don’t get out much. Last weekend we took a taxi to Blah Blah Blah in Goldhawk Road to celebrate various birthdays. Other than a couple of trips to the hospital that was the first time I’d been out since it happened.
I was considering hobbling down to the pub quiz tonight. But the snow has probably put paid to that idea.
Speaking and Training
I was supposed to be in Romania at the end of last week, but we’ll be rescheduling that trip for later in the year.
I’ve been spending some time preparing for the public Perl courses I’m running at the end of the month. Still a few places left if you’re interested.
Writing
I didn’t write anything new (not even a blog post) but the final part of my three-part tutorial on Modern Perl was published in issue 155 of Linux Format which went on sale this week. I already have an agreement to write another series for them later in the year.
General Business Stuff
I finished moving all of my domains over to a shiny new server. And then I spent a week or so fixing all of the niggling little problems that I found. There still seems to be one outstanding problem with the Mailman configuration.
I bought a new laptop. It’s a Dell XPS 14z. I say bought – actually I’ve ordered and it’ll be delivered in the next ten days.
Buying it was a bit of a nightmare. I ordered it on Wednesday using the HSBC credit card that I got when I moved my company bank account. But unfortunately the credit limit wasn’t high enough (I’d forgotten about a few other things I’d put on t he card) and the transaction was declined.
But the transaction wasn’t declined as I was placing the order. No, it was declined at some point in the following twelve hours. So Dell cancelled my order. They didn’t contact me to find out if I wanted to try another credit card – they just cancelled the order. They didn’t even tell me that they had cancelled the order. I found out as I logged on to my account and checked the order status on Thursday morning.
I spoke to them and gave them the details of another credit card. But apparently they couldn’t just reactivate my existing order, they had to start again from scratch. And for some reason Dell’s web site seems to change from day to day so it took them 24 hours to be able to replicate my order at the same price. But finally on Friday morning I got an email confirming that the order had been placed. For £4 cheaper than the original order.
I can’t help thinking that Dell’s systems are a little overcomplicated.
Films
Watched a few films for the first time. Candyman was terrible. 127 Hours was grim, but gripping. The Troll Hunter was a lot of fun.
I’ve been investigating Netflix UK and LoveFilm Instant. I think that LoveFilm have a slight edge as their application is already installed on my Bluray player. For Netflix I’d need to use my Wii. I need to see if I can persuade LoveFilm to give me a free trial – as a returning member that doesn’t seem to be their default behaviour.
Related Posts:Big theatre!
The code examples are in this git repository (git clone git://git.annexia.org/git/libguestfs-talks.git)
Tech Talk — the superior technical presentation software — is back!
(Not surprisingly this coincides with me doing a presentation at FOSDEM this weekend …)
The new version has been rebuilt around WebKit (all the work for this was done by Dan Berrange). Mozilla were never really serious about “MozEmbed”, and in practice it crashed all the time. WebKit (or KHTML as we like to call it) is built from the ground up for embedding and it is rock solid, so it was just better to switch.
Also in this development version is support for VTE, which is a simpler way to display terminal output. Any shell script called *.term is rendered in a built-in VTE terminal emulator. You can still use *.sh for shell scripts that you want to run during your presentation (eg. for using your own terminal, or just running arbitrary programs).
Tech Talk PSE is available from git or in Fedora Rawhide.
Here:
http://people.redhat.com/~rjones/libguestfs-RHEL-6.3-preview/
These are based on libguestfs 1.16.1 1.16.2.
FreeDOS 1.1 running in KVM with 4 MB (sic) of virtual RAM:
This is more than just a silly experiment. Being able to run very small VMs (and this is by far the smallest real VM I have been able to run) allows us to test the scalability of KVM to hundreds or thousands of guests using standard hardware.
It has revealed a couple of bugs in libguestfs too …
In just over 1 week, FOSDEM 2012 is being held in Brussels. This flyer (PDF) is a handy guide to the Red Hat folk who will be giving talks there. (Thanks Máirín Duffy).
In libguestfs 1.16 we added experimental GObject bindings and support for GObject Introspection. These are experimental because we may change them a little in future. They do allow you to access libguestfs from Javascript, specifically from gjs.
Here is an example program (fixed and updated):
const Guestfs = imports.gi.Guestfs; function inspect (filename) { var g = new Guestfs.Session (); //g.set_trace (true); var optargs = new Guestfs.AddDriveOpts ({readonly: true}); g.add_drive_opts (filename, optargs); g.launch (); var roots = g.inspect_os () if (roots.length == 0) printerr ("inspection: no operating systems found in", filename); else { for (var i = 0; i < roots.length; ++i) { inspect_root (g, roots[i]); } } } function inspect_root (g, root) { print ("inspecting operating system root", root); print (" product name:", g.inspect_get_product_name (root)); print (" version:", g.inspect_get_major_version (root), g.inspect_get_minor_version (root)); //print (" type:", g.inspect_get_type (root)); print (" distro:", g.inspect_get_distro (root)); // Mount up the disks like guestfish -i var mps = g.inspect_get_mountpoints (root); var keys = []; for (var key in mps) { keys.push (key); } function compare (a, b) { if (a.length > b.length) return 1; else if (a.length == b.length) return 0; else return -1; } keys.sort (compare); for (var i = 0; i < keys.length; ++i) { g.mount_ro (mps[keys[i]], keys[i]); } // Get the list of applications. print (" applications:"); apps = g.inspect_list_applications (root); for (var i = 0; i < apps.length; ++i) { print (" ", apps[i].app_name, apps[i].app_version, apps[i].app_release); } g.umount_all (); } if (ARGV.length != 1) { printerr ("Usage: gjs test.js disk.img"); } else { inspect (ARGV[0]); }One highlight is GObject bindings, which makes the API available from Javascript. More on this topic coming soon.
I am often surprised by the sort of questions asked in the forums or on irc around open source projects - it just feels as if people are going out of their way to inflict pain and suffering upon themselves by trying to find the most awkward and most complicated way to do things. So how can we better help these people ? We dont need to save them or anything as drastic like that, its just a case of being able to show or explain that there might be a better way.
The first thing that I've started now doing, when asked a strange question is ask the person 'What are you really trying to achieve?'. You might be amazed how many times the answer has nothing to do with the question being asked. Try to establish what the end goal is, and in many cases its clear that the person has been lead astray by random posts on the internet, some of which are perfectly fine in their own context, but can be quite a kludge outside that context.
Establishing, clearly what the goal is before advice or opinion is thrown at people will always result in a better overall experience. And to the people spending their time in the irc channels, web forums and mailing lists helping others out : must respect. You guys are the ones making the idea of Communities and Open Source work.
- KB
Finally I actually managed to write a blog post that wasn’t week notes. That may well be my biggest achievement of the week.
Health
Still hobbling around in a cast and on crutches. Getting a bit better at it, but my upper body strength is still almost non-existent so I’m not going very far.
I went back to the hospital on Friday. On my previous visit it took about three hours. This time I did pretty much the same things and it took about half an hour. The doctor says everything seems to be going ok. They don’t want to see me for another four weeks. At that point they hope to remove the cast and replace it with a plastic boot.
Speaking and Training
Not much going on here. Still slowly building up to the courses I’ll be running at the end of February – which it now looks like I’ll be running with a plastic boot on, so there will probably be a fair bit of sitting down involved.
A couple of enquiries came in for training sessions later in the year. Looks like it could be a good year for my training business.
General Business Stuff
I host most of my domains on servers rented from 1 and 1. They’re not the best option by some distance, but they’re really cheap. At the end of last year I noticed that they had servers available running Centos 6. I rented a new server and have been slowly moving my domains over. This is a long and rather dull process. But I expect to be finished by next weekend.
Gigs
Anther gig that I couldn’t get to this week. This time it was Ed Sheeran at the Brixton Academy. Put the ticket on Gumtree and within hours I had a huge number of replies. Guess I set the price too low.
TV Highlights
Sherlock, of course. For the record, here’s my theory.
Moriarty had a Sherlock mask that he used when he kidnapped the children (which is why the young girl screamed when she saw Sherlock). Sherlock jumped into the back of the lorry that we saw, but at the same time threw off Moriarty’s body with the mask on. The cyclist that bumped into Watson also gave him a quick squirt of the H.O.U.N.D. gas so he saw what he feared most. Molly arranged to have the body collected and misindentified as Sherlock.
Of course, this is just a synthesis of many theories that have been going round on the web this week. And Stephen Moffat says there’s a clue that no-one has spotted.
Finished series two of Lost on DVD and made a start on series three. And we’ve started to watch Mad Men against from the start. Hope to watched it all before series five starts in April.
Hmm… doesn’t sound like I’ve achieved that much this week. But that’s probably an accurate reflection of how I feel.
Related Posts:Today was the day that parliament had a rather long list of private members bills to debate. Originally there were sixty-four on the list. As this informative post from Kerry McCarthy tells us, they’d normally expect to get through about three of them. The MPs sponsoring the rest of the bills were pretty much wasting their time.
Number eight on the original list was Nadine Dorries bill to teach girls between 13 and 16 how to say no to sex. The Guardian’s headline was MPs to debate sexual abstinence lessons bill, which was slightly disingenuous as the chance of the debate reaching that far down the list was tiny.
But this morning, when the order of business for today in parliament was published Dorries bill was missing from the list. Everyone assumed that Dorries was responsible for this removal. As a spokeswoman for the Commons information office told the Guardian “No one would be able to remove a private members’ bill without the permission of a member”. The assumption seemed to be that Dorries had realised the futility of being so far down the list and had removed the bill. She wouldn’t have been the only one – the published list only contains forty-nine of the expected sixty-four bills.
At lunchtime, things got even more interesting. A new Twitter account called @NadineDorriesMP appeared with this tweet (in reply to a joke by John Prescott):
@johnprescott My bill has not ‘jumped off at Edge Hill’ if you care to read the order paper, it’s number eight on the list!!
Something about this timeline didn’t seem right to me. That tweet was posted at 12:47, which is almost two hours since I first saw the order of business without her bill. I assume the order of business was published some time earlier. The first hint I had that the bill had been withdrawn was this blog post by Kerry McCarthy which was published just after 10am.
On the basis that the real Nadine Dorries would have known by 12:47 that her bill was not on the order paper, I called the new Twitter account as a fake. But it seems I was wrong. People like Iain Dale confirmed that it really was her (and, yes, this is one of the few things I’d trust Iain Dale on).
All of which leaves us with a bit of a mystery. Either Dorries withdrew her bill or she didn’t. If she did then the first tweet on her new Twitter account is a complete lie. If she didn’t then we need to ask who did withdraw her bill – given that it’s only her who is supposed to be able to do that.
And even if someone else managed to withdraw her bill without her knowledge, something still doesn’t ring true. If she was expecting to debate her bill (no matter how tiny the chance) then surely she would have been hanging around in parliament all morning and I can’t believe that she didn’t see the order paper and notice her bill was missing. Or that one of her friends saw that it was missing and asked her what happened.
All in all I find it incredible that she could have got to 12:47 without knowing that her bill was not on the list. So how do you explain that tweet?
This is, I think, the third time that Dorries has joined Twitter. And with her first tweet she has already started people thinking that this time is going to be no different to the previous occasions. She will be ineptly trying to use it to promote her strange view of the world. And she will quickly make herself a laughing stock once more.
Update: At 16:37 this afternoon, @NadineDorriesMP tweeted the following:
Just to make it absolutely clear and leave no doubt whatsoever, my Bill was NOT withdrawn
Curiouser and curiouser. So, now we are left with two questions. 1/ Why wasn’t Dorries’ bill on the order paper? And 2/ At what point did she realise it wasn’t on the order paper?
Update 2: Welshracer may have got to the heart of the matter here. He points out what it says on the official parliamentary web page for Dorries’ bill.
The Bill was not printed and so was not moved for debate on 20 January 2012.
What do we make of this? One interpretation would be that Dorries didn’t withdraw the bill for debate, but that someone in her office forgot to get the bill printed so that it could be included in the debate.
But even in those circumstances you’d think that she’d get a phone call from the people who were planning the day’s business telling her what had (or hadn’t) happened. I still can’t believe that she didn’t know the bill wasn’t on the order paper when she sent her first tweet at quarter to one.
Update 3: Couple more pieces of information came in overnight.
Firstly, it seems that the new @NadineDorriesMP Twitter account was set up two weeks ago. It seems she resisted using it until goaded into it by John Prescott yesterday.
Secondly, the Independent managed to speak to Dorries about this confusion. She says:
The Bill is still live, but there was more chance of being struck by a meteor than getting it debated, so we told the Commons office not to bother printing a hard copy. What I didn’t realise was that if you don’t order it to be printed, it automatically comes off the agenda.
Of course I wouldn’t withdraw it … a lot of people had paid train fares to come and protest. It would have been churlish.
So we finally have the truth (or, at least, Dorries’ version of it). She knew it wouldn’t be debated so she decided not to have the bill printed. She didn’t know that would automatically remove it from the order paper. She didn’t withdraw the bill out of respect for the people who were coming to protest against it.
It’s also not clear to me in what sense the bill is still live. This was the final opportunity to debate private members bills before the end of this parliamentary session. Any unfinished business from this parliamentary session doesn’t get passed on to the next one, so anything that wasn’t approved is, as far as I can see, effectively dead.
You couldn’t make this up!
Related Posts:I answered a question on a mailing list about live migration versus copying guests between different versions of KVM on RHEL. The complainant observed that you can’t live migrate from RHEL 6.2 to RHEL 6.1. But you can shut down a guest, copy it from RHEL 6.2 to 6.1, and boot it.
Why is there this difference? It comes down to how live migration is implemented.
Live migration is completely different from shutting down and copying a guest. During live migration we must send the complete state of system RAM, virtual CPUs, and all virtual devices, over to the remote side. In qemu this is done by sending “VMState” structures over the wire, one struct for each device that the guest is using. These structures are mostly a memory dump, but so that you don’t need byte-for-byte compatible versions of qemu when live migrating, each struct is preceded by a version ID.
The receiving qemu checks that it can handle that version of the struct. In some (but not all) cases, qemu knows how to “upgrade”, say, a version 1 struct into a version 2 struct. Downgrades are never possible, and some upgrades are also rejected (eg. if version 2 is a complete rewrite over version 1, then it’s possible for a device to refuse to deal with version 1 structs at all).
Downgrades are not possible, and that’s the basic reason why live migration doesn’t work from a newer to an older version of qemu.
Why does copying work? When a VM is shut down, there is no RAM, vCPU or device state. All the state that remains is the contents of the hard disk. If the hard disk is booted on an older qemu, then the kernel, during boot, will test the available CPUs, devices, etc and adjust itself, exactly the same as if you took a physical hard disk and transplanted it between real machines.
Indirectly related to all this is the qemu machine type. If you created guests on RHEL 6.0, then you may notice the libvirt XML contains:
<type arch='x86_64' machine='rhel6.0.0'>hvm</type>This machine type stays with the guest even when you update the host.
The machine type controls what devices and PCI slots we present to the guest at boot, and it’s mainly there so that Windows doesn’t try to reactivate itself when you upgrade your host. The newer qemu presents the old devices and PCI assignments, so Windows doesn’t “notice” the updated hypervisor.
For Linux guests this is usually not a problem you have to worry about and you can go ahead and change the machine type at will.
This was unexpected:
Write something to a partition device (eg. /dev/vda1) and immediately call blockdev --rereadpt /dev/vda to re-read the partition table of the whole device. Sometimes (about 50% for me) the blockdev command fails with:
blockdev: BLKRRPART: Device or resource busyNothing else is using /dev/vda, nothing from it was mounted, and the error was intermittent which indicates a race condition.
Why this happens:
udev has a rule that runs blkid -o udev -p /dev/vda1. It does this every time you close a block device so that blkid can rescan the content of the device.
The act of blkid running very briefly behind our backs causes the device to be open during the blockdev operation, causing it to fail.
Adding udevadm settle between the close and the blockdev fixed the problem for us, although this command is also inherently racy (what happens if it runs before the kernel has sent a message to udev?)
There is a new tool in libguestfs ≥ 1.15.17: virt-format lets you erase disks and make blank disks.
Usage is quite simple:
$ virt-format -a disk.img(Note that erases any data on disk.img!)
This works for any format of disk, eg. qcow2, or you can run it on host partitions, LVs, USB storage etc. By default it just creates a partition, but using other options you can make empty filesystems and logical volumes.
This is a simple tool that doesn’t cover everything you might want to do. For more complex requirements, see virt-make-fs or guestfish.
When I said I was going to experiment with week notes on this blog, I didn’t intend that the blog would only consist of week notes. But as we’ll see below, other things have been taking my attention this week and I haven’t felt much like blogging. Hopefully normal service will resume very soon.
Health
This is the big one. A few hours after posting my last week notes I slipped down a small flight of stairs in my house and fell badly. Something went ping in my ankle and it hurt like hell. I shuffled onto my bed where I lay for twenty minutes or so before deciding it wasn’t getting any better and I should probably take myself to A&E.
Four or five hours later I left A&E with a diagnosis of a spiral fracture in my fibula, a temporary cast, crutches and an appointment to go to the fracture clinic on Friday.
I spent the week hobbling about the house on crutches and went back to the hospital on Friday. They replaced the temporary cast with a more permanent one in sexy black fibreglass which I’ll be sporting for the next five weeks or so. They also took another x-ray and confirmed that although there’s definitely a fracture, everything is still in the right place so there’s no need for surgery, pins of any of that nonsense.
Going back to see them again next Friday.
Speaking and Training
The downside of having your leg in a cast is the doctors don’t like you flying – the pressure in the cabin can lead to blood clots. So I’ve had to postpone the trip to Romania. It hasn’t been rescheduled yet, but I hope to get there later in the year.
Counting the weeks, it looks like the cast will be coming off just before my other currently scheduled classes – the public courses for FlossUK and O’Reilly at the end of February. If I don’t heal on schedule then I expect I’ll be giving the classes sitting down.
Incidentally, those lovely people at O’Reilly have arranged to give away one free ticket to each of the two courses. Full details on how to enter are in an advert in the new issue of Linux Format. There are also runners-up prizes of copies of the new camel book.
Writing
Having spent the week sitting around at home, you’d think I would have had time to do plenty of writing. But, to be honest, I just haven’t been in the mood. The most I can report here is that I’ve got an agreement write four more articles for Linux Format over the next few months. I hope to finish the first of these (which isn’t about Perl!) today.
Reading
I have at least managed some reading. I’ve picked up Bruce Tate’s Seven Languages in Seven Weeks which I started reading in August but never quite got to the end of. And I’ve started reading Build Your Own Wicked WordPress Themes because I can see myself getting deeper and deeper into WordPress this year.
Gigs
I had a ticket to see Ani DiFranco at the Union Chapel on Tuesday. But my limited mobility mean that I couldn’t get there. I sold my ticket to the very lovely (and talented) Kal Lavelle. Luckily there are lots of videos of the gig on YouTube so I’ve been able to at least see some of the show.
Film
I had a ticket to see The Iron Lady last Sunday afternoon, but I was in A&E at the time. Later in the week I finally got to see In Bruges, which I’ve been planning to watch for ages. Oh, and one morning when I was sitting on the sofa feeling a bit sorry for myself I watched Sixteen Candles. Can’t beat a bit of Molly Ringwald to cheer youself up.
TV
Sherlock was another ninety minutes of delight, of course. And I was pleased to see that The Good Wife returned to More 4. VirginMedia have half of the fourth series of Big Bang Theory on their video on demand service, so I’ve worked through that and am waiting for them to add the rest. We’re working our way through a DVD boxset of Lost – we’re currently close to the end of series two.
But the big surprise has been American Horror Story. We’ve watched all of the first series. Sure, it’s a clichéd in places, but part of the fun is spotting all the references to horror films. We love it.
Related Posts:Looks like I will need to get a Visa again to visit Belgium for Fosdem 2012. This is starting to get a bit irritating now, six times I've been to Fosdem and every time they have asked me to come in for an interview before they give me a visa; once again ? Surely by now it should be possible to get onto the visa-by-post process.
- KB
A new experiment on the blog this year. I’m planning to write a weekly report on what I’ve been doing. No idea how useful or interesting it will be or how long I’ll feel like keeping it going. So here’s what I did this week.
Speaking and Training
Didn’t give any talks this week, but there are a couple of things in the pipeline. I’m running four days of public Perl training courses in London at the end of next month and I’m starting to get into the marketing for that. O’Reilly have offered two free places on these courses as prizes for a competition that has been advertised in Linux Format.
As part of my marketing campaign I’ve been working on a new web site about my training business. Currently I’m working on the content. The look will come later.
Probably the most exciting thing to happen in this area is that I’ve been invited to give a talk about Perl in Transylvania. I’ve been doing some work with some Romanian Perl programmers and they’ve asked me to go over and talk to their new Perl Mongers group in Cluj. I’m going over for a couple of days at the start of February.
Programming
Over the last few months, Linux Format have been publishing a series of articles I’ve written about Modern Perl. The third and final article in the series will be published next month. The articles are about writing a web application to track a reading list. This was to replace a bodged together system or Perl programs that I’ve been using to track my reading for the last few years. This week I finally put the replacement system live at books.dave.org.uk. If you’re interested, the code is on GitHub. At some point I should probably write an article about it on my Perl blog.
General Business Stuff
About a month ago I realised that I was tired of dealing with Nat West for my business banking. It seemed that they made everything far more complex than it needed to be. I asked for advice on Twitter and most people seemed to recommend using HSBC instead. So I applied for an account with them through their web site.
Well, it wasn’t anywhere near as easy as it could have been, but last Saturday I finally opened my new business account. With a new bank account and a new accountant a few months ago it really feels like the business has started a new era.
People ask why I carried on with the HSBC application when it was all so painful. That’s because I still think they’re more efficient than Nat West were. It crystallised for me when I was thinking about the computer systems that they use. In recent months I’ve spent far too much time in Nat West branches watching the screen as an assistant tries to sort out a problem. Their internal systems are all running on what seems to be CICS-based software from the 1980s. When I was watching the chap opening my account in HSBC last weekend it looked like they were running an old version of Windows from the 1990s.
So HSBC’s software seems to be about a decade more up to date than Nat West’s. But still twenty years behind the rest of the world. Surely banking doesn’t need to be so tortuous?
House Stuff
I spent a lot of last week finishing a decluttering exercise that I started after Christmas. I’ve shredded a huge mountain of old paperwork and for the first time ever I have every piece of paper in my study filed in the right place.
Our back garden backs onto a railway embankment and there are a lot of trees there. So we get a lot of leaves covering the back garden. Yesterday I went out and swept up several months worth of fallen leaves. One of the tree has nasty small leaves which get through the grills over drains and block them. So I lifted a lot of drain covers and pulled out a lot of muddy leaves. It wasn’t fun.
TV Highlights
I’ve been watching a lot of TV. The new series of Sherlock was an obvious highlight. But I’m also enjoying the Sky version of Treasure Island and the BBC’s Public Enemies. One thing I didn’t enjoy was Eternal Law. Despite being written by the same people as Life on Mars, the premise of lawyer angels proved to be just as silly as it sounds.
Health
The scales just told me that I’m almost three pounds lighter than I was a week ago.
Related Posts:Over the holidays I started a new project called “wrappi”.
The name is a play on “wrapper” and “API”. And a play on what has been discussed for a very long time inside Red Hat — an API for everything that Red Hat Enterprise Linux does. A “rh-api”, if you will.
Wrappi aims to wrap up everything you can do with a Linux box:
We take all of that and present it back to you as an API:
The aim is that from a PowerShell-like interface (or your own program) you could control and maintain 100s of Linux machines remotely. Like puppet/chef, but at a lower level.
Here is what a C program using the API might look like.
So this is ambitious.
An API that did all of the above might run to 10,000 different calls. To make this feasible to maintain and implement, we have to be able to generate the code for just about everything.
Each API call starts with a description. Because we need to write this description for 10,000 calls, it’s best to keep this short. In the best case, just a single line would be required, but in some cases it’ll be more complicated:
entry_point void mkdir (pathname path, fileperm perm) system_object block_device dir_list "/sys/block/[hsv]d[a-z]*" entry_point struct timeval gettimeofday () << int r; struct timeval tv; r = gettimeofday (&tv, NULL); if (r == -1) { set_error_errno ("gettimeofday"); return NULL; } ret->tv_sec = tv.tv_sec; ret->tv_usec = tv.tv_usec; return ret; >> includes ["sys/time.h"]From that metadata we can generate automatically everything we need, all the language bindings, all the remote access code, the implementation.
When a new shiny-thing comes along (“JSON-powered Enterprise GObject”) we can simply add a new generator backend, and we’ll support the whole API through that.
If you’ve followed my blog, you’ll know that this looks a lot like the libguestfs generator, and in many ways this is the generator done right.
There’s lots of code in the git repo. If you want to find out more, follow the blog, or ask questions below!
And here’s the second post in my review of 2011. This is a list of my favourite posts from the year. In 2010 I said it was harder to choose posts from that year as I had blogged less than in previous years. Well, I actually blogged even less in 2011 so it was even harder this year.
As usual I’ve tried to pick one post from each month, but because of the scarcity of posts I’ve had to bend the rules at times. Usually I don’t include posts that have already been mentioned in the list of most popular posts, but that has proved impossible this year so there is a small amount of repetition.
It was only while writing this review that I noticed that four of these twelve articles are about the Daily Mail. Looks like the blog might, finally, be developing a theme.
Last year was my lightest year for blogging. In fact every year has seen fewer post since I joined Twitter. Tweets are, of course, far less effort than blog posts. But nevertheless I shall, once again, endeavour to blog more often in 2012.
Thanks for reading in 2011.
Related Posts: