Page 1 of 9: First Prev Next Last
Web Log
Adobe In The 21st Century
By Andrew Price, 2008-11-17 17:56:29 in Geekdom. Leave a comment (Permalink)
andy@diogenes:~/.mozilla/plugins$ file libflashplayer.so
libflashplayer.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped
Goodbye, nspluginwrapper. Thanks for being there when I needed you.
Double Take
By Andrew Price, 2008-11-02 15:34:02 in General. Leave a comment (Permalink)
I don't know how long the Wallich Centre has been on Cathedral Road, but it took me until yesterday, on a bus ride home, to realise that their logo is oddly familiar.
Good News
By Andrew Price, 2008-06-20 19:13:54 in News. Leave a comment (Permalink)
It seems to be a time of good/interesting news in the technology world:
- "I think the BBC can, and should, do more to support the Free and Open Source community" -- Ashley Highfield, Director, BBC Future Media & Technology
- "ODF has clearly won" -- Stuart McKee, Microsoft
- "The latest OpenJDK binary [...] passes the rigorous Java Test Compatibility Kit (TCK)" -- Rich Sharples, Director of Product Management for the JBoss EAP, Red Hat
- "MySQL code has been migrated from BitKeeper to Bazaar" -- Kaj Arnö, MySQL VP of Community Relations
- "One tonne 'Baby' marks its birth" -- Jonathan Fildes, Science and technology reporter, BBC News
- "BSc Computer Science with Lower Second Class Honours [...] subject to ratification by the University of Wales" -- The degree result letter I was given earlier by the Computer Science department.
I am a happy chap.
And Now, The End Is Near
By Andrew Price, 2008-05-27 03:08:38 in General. Leave a comment (Permalink)
It's gone 2:00am and my final exam of my entire degree course begins in about seven hours. What a strange feeling. My life is approaching one of those unsettling turning points where just about anything can happen. At least, it feels that way: the sky's the limit. Realistically my next days will be spent basking in the warm glow of relief that the course has ended, celebrating, and spending some proper happy-time with my friends, who I've missed greatly over the last I've-forgotten-how-long due to the CS Course From Hell effect.
After and during all that fun stuff, as I understand is traditional in these circumstances, I'll be looking for a job. I'm aware that advertising the kind of area I'd like to work in on my blog may be counterproductive but any Sharp-eyed Stanley could figure out my preferences from my website and the sites which syndicate my blog entries. Fingers crossed, anyway.
Somewhat less traditionally, I really want to get stuck in and push my open source projects along now. I've been neglecting Pybackpack terribly for the last academic year, and Gnome has gone and changed GnomeVFS into GVFS/GIO which means the crazy Gnome-dependent bits still remaining in Pybackpack are getting rotten. Its code base dates back to when Dave and I were first learning Python so there's some pretty shocking stuff in there too, and it's begging for a rewrite. Although lately I've been developing some ideas about abstracting away the commonalities of backup systems and encapsulating them in a framework so it may evolve into something different. I should mature those ideas and write them down out at some point.
This last academic year my main focus has been Askant, the Linux file system performance analysis tool I've been developing for my third year project and dissertation. It's not very pretty or useful right now but it'll get there with some love and elbow grease. Askant has been at the centre of one of the most interesting and challenging learning experiences I've had at university. While researching for it, I've learned a good deal about file systems (GFS2 in particular), block IO, the Linux kernel in general, C, extending Python, and to top things off, it taught me enough to let me contribute five whole characters of code in the kernel. There'll be more where they came from, I'm sure.
As for Twyt, well, that's simple and modular so I've been able to hack on it in stolen moments of relaxation. It shouldn't take long for it to reach full API support when I'm free to work on it. It's been attracting a fair amount of interest lately (I think more computer geeks are joining Twitter, you know).
Well, I'd better cut this short and get some sleep. That silly exam isn't going to write itself.
Synchronicity and Sharing
By Andrew Price, 2008-05-18 17:46:54 in Geekdom. Leave a comment (Permalink)
Dag Wieers' comments that "Mark Shuttleworth's recent pledge to join a synchronised release plan for Enterprise Linux distributions is no more than a wish to benefit from a lot of work that Novell and Red Hat are already doing in the Enterprise space" are strange.
There is one main reason why I think this is a strange way to argue against Mark's idea and it's this: Red Hat is a very successful company based upon the idea that there is value to be found in and around software which is freely available to modify and redistribute. This is a cornerstone of Red Hat's business model and thus any calls of "It's not fair to use the [freely available, modifiable and redistributable] products of Red Hat's efforts for your own profit." (my words, not Dag's) seem quite out-of-place.
Sure, Canonical is a tiny company by comparison, so it doesn't have a large workforce to make a huge number of upstream contributions, and it's not yet profitable so it needs to be clever in order to propel itself towards sustainability. But if anybody thinks that synchronizing release cycles to stabilize versions and focus efforts across distributions would not benefit Red Hat more than the added competition might damage their business, they might need to rethink the situation. But I guess this is the main question that Red Hat needs to ask itself before signing up to Mark's idea.
One thing Red Hat and Shuttleworth have in common is that they're good business players. They seem to get the idea that, whatever boosts the success of Linux-and-friends as a whole is good for expanding the Linux-and-friends market and other companies' opinions of it. Currently one of the factors holding back adoption of Linux-based solutions, from the point of view of potential customers, is that there's so much to choose from; so many distributions, packages and support possibilities. Judging from one of Red Hat's recent successes the deal clincher is the quality of technical support which is on offer. Technical support in this context presumably means killing bugs and making sure that hardware support for the deployments is top-notch. So having some kind of consistency between versions might make open source a larger target for enterprise customers and hardware manufacturers (two groups which are not distinct) and focus development and testing efforts onto those versions.
So it's really a level playing field. Whatever Canonical contributes to free/open source is available for Red Hat to benefit from and vice versa. The bad vibes I've been sensing lately (particularly surrounding the kernel) seem to be rooted in how Canonical isn't big or successful enough to contribute on the same scale as Red Hat yet. That's to be expected, for now. In reality, any business which enters the Linux distribution market really should know that the competition ultimately is not about having better software than the other guy, because the software belongs to all of us and none of us. The winner will be the company with the best people and the best business ideas and strategies. To me, Mark's idea is not one which is meant to give Canonical an advantage over other companies (especially an unfair advantage), it's an idea meant to map the century-tested assembly line approach which made Ford so successful onto the main components of several Linux-based distributions to push them all forwards. Whether it's a good, workable idea or not has yet to be tested, but I think it would be an interesting experiment.
Twyt 0.8.5 - Dancing Like Astley
By Andrew Price, 2008-05-18 00:44:09 in Twyt. Leave a comment (Permalink)
Twyt 0.8.5 has been unleashed. Twyt is a python Twitter API library and accompanying command line Twitter client.
This version improves greatly on the previous command line interface with added --help for each subcommand. The client code has been rejigged to use Python's optparse making it more scalable and flexible than before. It also has better local timezone and DST support. Here's a quick example:
andy@plato:~$ twyt --commands
Usage: twyt COMMAND [options] [args]
Available commands:
archive Shows 80 of your status messages ordered by date of posting
delete Deletes a tweet by ID
direct Sends a direct message to another user
directdel Delete a direct message which was sent to you
directsent Prints the 20 last direct messages sent by you
directtl Prints the 20 last direct messages sent to you
friendstl Returns 20 most recent statuses in your (or USERNAME's) friends timeline
publictl Shows the 20 most recent statuses in Twitter's public timeline
replies Show the Nth page of 20 replies (messages with @yourusername in them)
savepass Saves your username and password for subsequent use
show Show a single status message by ID
tweet Updates the authenticating user's Twitter status
usertl Show your timeline, or USERNAME's timeline
For command-specific help, use twyt COMMAND --help
andy@plato:~$ twyt tweet "Showing off Twyt's cool, new, helpful, optparsed interface"
[813846209] twytdev: Showing off Twyt's cool, new, helpful, optparsed interface (Sun May 18 00:13:00 2008 via <a href="http://andrewprice.me.uk/projects/twyt">Twyt</a>)
Next on the TODO list for Twyt are better support for multiple Twitter accounts and more complete support for the rest of the API functions. A handful of new API functions has appeared over the last few months so it'll be a challenge to catch up. My aim is to release version 1.0.0 once the whole API is supported in Twyt.
Updated python-twyt packages will hit Debian unstable very soon and Fedora as soon as I've finished upgrading to Fedora 9 (modulo studying for my final exams which start on Monday).
Generating Patch Emails With Git
By Andrew Price, 2008-04-07 19:20:58 in Geekdom. Leave a comment (Permalink)
Today was the first time I've used git to produce an email containing a patch that I'd written and I was impressed at how simple it is. I thought I'd share how it was done to help other git learners, and to help me remember it for next time. For this to make sense, assume that I had just cloned the git tree so that I'm working with a new, clean tree.
First I created a new branch to keep my work separate, using:
git checkout -b mybranch
Then I edited some code, tested that my fix worked, and committed my changes using:
git commit -a
When you commit, git opens an editor (in my case, vim) in which to enter your commit message. It's worth noting here that the first line of the commit message is used as the short log (the 'title' of the commit), and the rest is used as the body of the log message. The short log will become the 'subject' header of your email later.
Once my changes were committed, I used format-patch to produce the email with my patch in it, like so:
git format-patch -1 -s --subject-prefix='PATCH][BUILD'
This produced a nicely formatted email-able text file containing my patch. The file includes the 'From' email header which it generates using the email address and name stored in your git config. You can find information about all the possible format-patch options from the man page but the ones I used were:
- '-1' : Create a patch for the last 1 commit
- '-s' : Add a Signed-off-by line to the message
- '--subject-prefix=' : Specifies the beginning of the subject header
I then used mutt to send the patch by using its -H option which loads a template email:
mutt -H 0001-Example-patch-name.patch
Then all I needed to do was tell mutt which address to send the email to, and hit y to send. Simple as that.
Software From Universities For Schools
By Andrew Price, 2008-04-05 11:54:11 in General. Leave a comment (Permalink)
The idea is simple: computer science/software engineering departments in universities could initiate and host open source software projects to satisfy computer-based learning requirements of local schools. The flow would go something like:
- University and school communicate to establish the school's software requirements;
- Research is carried out to establish whether open source software already exists to satisfy requirements (no point in duplicating effort, right?);
- University sets up infrastructure and recruits interested staff and students to take on the project in their spare time or as part of an assessed course;
- The project is publicised to attract wider attention from potential developers and other schools;
- The software is developed and releases made, allowing teachers to evaluate it and report bugs and request features until it is good enough for use;
- The project hits 'maintenance mode' allowing the university to take on a new project;
- The school kids become computer geeks, end up in university and contribute software back to their old schools (ok, maybe just a few).
The obvious benefits here are financial and educational and it would help schools to improve their community ties with local universities while the open source software is distributed freely to benefit schools in other parts of the world. The kids could also take the software home with them. The lack of restrictions means that the possibilities are abundant.
Perhaps it could attract financial backing from local industry, motivated by the possibility of employing graduates with more experience of collaborating and working on useful software projects.
This is one of those spur-of-the-moment brainstorms which I haven't really thought through and it's probably not an original idea, but I'd like to see something like this happening in my local area. No doubt there is a bit of red tape and apathy to cut through to get projects like this established but it makes sense to me.
Tracking Commits With Twitter And Twyt
By Andrew Price, 2008-04-04 12:46:22 in Twyt. Leave a comment (Permalink)
The python-twyt package provides a Twitter client API library ('from twyt import twitter') and a command line client ('twyt') which uses the library. One way to use it is to integrate twyt into a shell script to automate your Twitter updates. Here's an example.
Sally the software maintainer wants to let her development team keep track of repository commits while they're away from their computers. She installs python-twyt, sets up a Twitter account for her project and tells twyt the username and password for that account. She then writes a shell script which parses from the email details such as the short commit log and the link to the commit diff in the repository's web interface and calls:
twyt tweet "$devname $shortlog $link"
Sally also sets up a procmail rule to pipe emails from her project's commits list into her script.
So when an email arrives from the commits list procmail triggers the script, sending the summary to Twitter. It then gets distributed to Sally's followers, whether they're using email, SMS or any of the other supported notification methods. The developers (who are clearly very dedicated) smile at being able to keep track of the project on their mobile devices while they're out grocery shopping or in the bath.
I'm not sure if this would be a highly desirable real-world application of twyt but it's one possibility. If anyone implements it, do let me know. It's worth noting, however, that Twitter does have usage limits and won't accept over a certain amount of updates per hour or send over a certain number of SMS messages to each user per week.
[Update: Dave Murphy has just reminded me that you can bypass the whole mailing list stage by using the commit hooks for your code repository to trigger the script]
Bunnifying GRUB
By Andrew Price, 2008-02-13 19:24:30 in Silliness. Leave a comment (Permalink)
What do you get when you cross a silly mood with Cute Overload and the Fedora Wednesday Why?
The cutest GRUB splash image ever. That's what.
Google And Ye Shall Find
By Andrew Price, 2008-01-30 23:51:59 in Geekdom. Leave a comment (Permalink)
I've just had an odd Google experience while scouring the web for relevant papers for my computer science project. It all started at the Google Scholar site which I was using to search for papers relating to Linux file systems and storage, particularly performance analysis, block I/O and anything to do with blktrace or GFS2.
After a while I stumbled across a highly relevant looking abstract of a paper entitled Evaluating Block-level Optimization through the IO Path [Riska, Larkby-Lahet & Riedel] so I clicked on the link. A username/password dialog appeared. It turned out I needed a USENIX account to get at this potentially juicy morsel of knowledge. So I clicked on the Web Search link that Google Scholar places next to search results, hoping to find the paper offered freely elsewhere. Expectedly, the first page of results showed links to pages on the USENIX site including a link to the actual PDF which again popped up a username/password dialog (Google's crawler must have a USENIX account...?).
Then I noticed something else - a View as HTML link. Surely it couldn't work. It shouldn't. Could Google search really be that nifty (or subversive)? I clicked on the link. Before my eyes the once-imprisoned-as-a-password-protected-PDF paper loaded in all its oddly formatted glory. A brief skim through reveals that some figures have missing information but I think I can live with that. I'll put it with the others and read it in the morning. Thanks, Google.
[Edit: Good news - since I wrote this entry USENIX has announced that it is making all the proceedings of its conferences available to everyone.]
Twyt 0.8 - Coming At You Like A Buzzard
By Andrew Price, 2008-01-27 14:01:40 in Twyt. Leave a comment (Permalink)
I've just released Twyt 0.8. It includes added support for Twitter user functions, better HTTP error handling, improved documentation and status messages posted with the twyt command line client now show up as 'from Twyt' instead of 'from web'. The Fedora and Debian python-twyt packages will be updated shortly.
[ P.S. This will be the first of my blog entries to pop up on Planet Fedora, so hello to all you Fedorable people! ]
Beer, Speech and Linux File Systems
By Andrew Price, 2008-01-12 11:58:36 in Geekdom. Leave a comment (Permalink)
Wakey, wakey. Rise and shine. -- My mother, somewhen between 1982 and 2008
It's been a while since I last wrote a blog entry that wasn't a software release announcement so I think it's time to remedy that. Since attending LinuxConf Europe (I enjoyed it thoroughly) which I mentioned in my last non-announcement blog entry life has been mostly revolving around university and the final year of my computer science degree, which has been a bit of a rollercoaster. But life is fun, in a fantastically geeky way.
The most interesting aspect has been my 3rd year project. The end product of which will be a file system performance analysis utility. Most pleasingly it will be an open source project, although I'm probably limited to accepting patches only once my dissertation is submitted. I won't bore you with the details but the project specification is similar to Chris Mason's Seekwatcher, which is the must-have accessory for the discerning Linux file system developer (darling).
The project is fairly challenging since it requires some specialist knowledge (I've probably spent 80% of my project time reading, 15% experimenting/exploring and 5% coding so far) and I've already learned a lot about file system implementations, aspects of the kernel and other interesting subjects that raise my state of mind closer to supreme enlightenment. The open source aspect of the project really does boost my enthusiasm for it and adds to my determination to roll out a good piece of software. That's the plan anyway.
The opportunity to do this project was presented to me by Steve Whitehouse of Red Hat GFS2 fame and I'm working under his guidance as a sort of "industry partnership" as the computer science department refers to it. Apparently Red Hat doesn't have an official student project scheme of this nature so I consider myself lucky that Steve has taken the initiative to offer the project and dedicate some of his time to answering my dumb questions. He's quite an inspirational character. I'd like to see these kinds of opportunities being offered to students by open source companies more often.
Here's to a fun 2008. May it be filled with inspiration, aspiration and perspiration.
Twyt (Reprise)
By Andrew Price, 2008-01-06 17:21:10 in Twyt. Leave a comment (Permalink)
Since the majority of twyt's code is reusable I've decided to brand it as an alternative Twitter API Python module instead of just a command line client. It's pretty simple to use, as exemplified by the following exciting and contrived Python session:
>>> from twyt import twitter, data
>>> t = twitter.Twitter()
>>> t.set_auth("username", "password")
>>> return_val = t.status_update("Test")
>>> s = data.Status()
>>> s.load_json(return_val)
>>> print s
[568644162] Andy Price: Test (Sun Jan 06 16:10:53 +0000 2008 via web)
>>> print s.id
568644162
>>> t.status_destroy(s.id)
A quick run through the code: set_auth() tells the Twitter object your username and password. Then status_update() sends your status message to Twitter and return_val is set to the JSON formatted string that Twitter sends back. We then load the JSON string into a Status object which lets us access the returned data (the details of the new status message) conveniently. We then pass the id of the new status message into status_destroy() which tells Twitter to delete the status message, because it's boring.
The docs in the classes are pretty good so help() should be your friend. Go forth and write super-shiny twyt-based applications.
Twyt is now in Fedora Rawhide and Debian Unstable, so it should propagate into Ubuntu Hardy Heron (universe) soon. Those of you brave enough to run Rawhide, Unstable and Hardy can install twyt using 'yum install python-twyt' or 'apt-get install python-twyt' respectively. Alternatively, just grab the latest tarball.
Twyt - A Command Line Twitter Client
By Andrew Price, 2007-12-27 05:53:53 in Twyt. Leave a comment (Permalink)
Allow me to introduce my new little python program named Twyt (randomly chosen but could be backronymed to "That's what you think").
Twyt allows you to post twitter messages, delete them, view your friends' latest messages and view other various twitter "timelines" from the command line. It's very young and really only does enough stuff to keep me happy so it might be lacking in features that others may desire. Patches welcome, as usual.
I wrote twyt a couple of weeks ago after I couldn't find a twitter client that met my standards and stumbled across the Twitter API docs. If you prefer GUI clients, it shouldn't be too hard to import twyt's twitter.py (or commands.py for that matter) and write a nice, shiny front-end for it. I've tried to document it quite well for that purpose - see the GUIHOWTO file for a possible example. Twyt uses the JSON interfaces to the Twitter functions and depends on the simplejson python library.
Have fun.