Mel8ourne 2008
Celebrating linux.conf.au - Australia's Linux, Free and Open-Source Conference - fun, informal and seriously technical...

May 17, 2008

IRC on the run

Those who remember my ancient quest for the perfect IRC solution might be interested in ancient quest for the perfect IRC solution might be interested in these posts by Aaron Toponce explaining how to couple a remote irssi session with GUI notification. I’m still quite happy with my current Bip + Xchat combination, but I’ve always lusted after the 1337ness of irssi. Icecap looks intriguing, but my first instinct tells me that their solution is over-engineered.

Note: If you see duplicated words in the above post, I am aware of them. Wordpress is doing something funny and I can’t figure out what it is. When I get the time I’ll upgrade to 2.5.

LotD: Ubuntu theme for Symbian S60v3 (works on my Nokia N95)



©2008 Sridhar Dhanapalan.

This work is licensed under a Creative Commons Attribution-Share Alike 2.5 Australia Licence.

Creative Commons BY-SA Licence

.

ShareThis

May 16, 2008

Fedora 9 LiveUSB sticks

Creating a Fedora 9 LiveUSB stick is so straight-forward. Just install the livecd-tools package and download a Fedora Live media, and you are all set to create your own Fedora 9 LiveUSB stick. I used a Sony Micro Vault Tiny 2GB flash drive that I got as a gift in a company event, and it worked great.

# livecd-iso-to-disk /tmp/Fedora-9-Live-i686.iso /dev/sdc1
Verifying image...
/tmp/Fedora-9-Live-i686.iso:   e9998706424174d69dda1f23f89b8953
Fragment sums: fad79bb3621cb515652cdbfabaa5cba632af35ca9b739ef3ca35b91b5819
Fragment count: 20
Checking: 100.0%

The media check is complete, the result is: PASS.

It is OK to use this media.
Copying live image to USB stick
Updating boot config file
Installing boot loader
/media/usbdev.6OTeNq/syslinux is device /dev/sdc1
USB stick set up as live image!

Check out the How to Install Live Image to USB Flash Drive guide.

Technorati tags: , ,

May 15, 2008

Jeremy



It seems like the de facto standard in the media, advertising, and in conversations, to leave out the http:// part of a URL when referring to a website.

For example, a truck doing grocery home delivery might have written on the side of it “Woolworths Home Shop — www.homeshop.com.au”. Or a radio announcer might say “For more information, go to abc.net.au/triplej.” (pronounced as ABC dot net dot AU slash triple J)

In both examples, they are actually ambiguous as to what they refer to. Okay, Woolworths has a domain name called “www.homeshop.com.au”. Water is wet.

Let me go to abc.net.au/triplej. Um, I just looked for it in my street directory, and there is no such suburb called abc.net.au/triplej.

Okay, I’m not that dumb. I know it’s got something to do with the computer, so I paste www.homeshop.com.au into my Gopher browser. What? Woolworths doesn’t support Gopher? Damn, you didn’t tell me that.

You should have told me you only work with HTTP in the first place. That’s why you need the http://. How should my computer know not to access it via FTP, Gopher, IRC, etc.?

I know my saying this is falling on deaf ears, but I wish people would print the http:// part of URLs more often. After all, it’s a Universal Resource Locator, and HTTP isn’t the only protocol in the universe.

Tulips by Jeff Koons



I saw the following image on Google.com a couple of weeks ago:

Tulips by Jeff Koons

I recognised it because I’d seen the real artwork not a week before at the Guggenheim Museum while in Spain. Strange coincidence. If you go to this image and look closely, you can see the artwork on the balcony to the right.

It’s a cool piece of art. It looks like a bunch of party balloons, all very light and bouncy. In reality, the artwork is made of steel, and weighs quite a few tons.

Update on the tax status of laptops

Michael Davies pointed out in email that the changes to laptop purchases and taxation have already taken effect, there is no window of opportunity to buy a new private-use laptop and still salary sacrifice it. Depreciation on existing laptops purchased via salary sacrifice can be claimed for the 2007/2008 tax year, but that's the last time.

The Government will tighten the current fringe benefit tax (FBT) exemption for certain work‑related items (including laptop computers, personal digital assistants and tools of trade) by ensuring the exemption only applies where these items are used primarily for work purposes... The measure will apply to items purchased after 7.30 pm (AEST) on 13 May 2008. The measure reduces the FBT concession and tax expenditure for work‑related items...

...

The Government will also deny employees depreciation deductions for FBT exempt items (that is, items purchased primarily for work purposes) purchased from 7.30 pm (AEST) on 13 May 2008. For items purchased before that time, employees will be denied depreciation deductions for the 2008‑09 and later income years. This measure will ensure that employees are no longer able to gain a double benefit by obtaining an FBT exempt item (such as a laptop computer) from their pre‑tax income, and then claim a deduction for depreciation.

Budget Paper No. 2 > Part 1: Revenue Measures > Treasury

A Bazaar branch of GTK

Converting a project from one version control system to another is always painful. Doing so is a rather momentous change to contemplate. With organizational & community inertia being what it is, not something easily rushed into. Worse is when you attempt to use a modern tool as a better front end for an old one.

One of the neat things about the 3rd generation distributed version control system projects (ie Bazaar, Git, or Mercurial) is their plugins which allow you to continue to work with a Subversion upstream project but use the modern tool as a front end locally. For those of us who have been very productively using DVCS for some time, this is a godsend.

Using one of these plugins to thence evaluate the usability or performance of one of a DVCS is not really the best approach one could take; none of them were built with using Subversion as a peer in mind, and lord knows Subversion is not built to store revisions with such complex relationships. Thus the idea has turned out to be a very challenging problem space for everyone but most have had their tools mature to the point where Subversion is the bottleneck. And despite my misgiving that starting out your experience with a 3rd generation DVCS by first using it to access some legacy project will not show your new shiny tool in its best light, the reality remains that most people need to get on with being productive, and doing a full blown conversion (or starting use with a brand new projects) are less likely to be your circumstance.

Having been using Bazaar (known best by the abbreviation bzr) for well over 18 months and overall being very happy with the experience, I would like to encourage other GNOME hackers to try it; likewise I have some patches I’d like to contribute to GTK so I thought I’d start by using bzr-svn to get a branch of GTK as a starting point (and to likewise give Bazaar’s Subversion interface a workout). So I created Bazaar branch of GTK.

Initial import was very slow

The first step was to create a Bazaar branch that represents the foreign Subversion repository. This was painful.

I originally attempted to do this while I was at the GTK Hackfest we had in Berlin; that turned out to be a disaster because (as one does at a conference or meeting) we were moving around every few hours connecting and disconnecting from the ‘net, and I was busy trying to do this from my laptop rather than a server somewhere. (Unfortunately bzr-svn relies on a memory fix that is not yet in the released version of Subversion, and not every distro has their Subversion patched with it). So that fell flat on its face.

I was able to restart the process a week or two later and leave it running overnight. Along the way I’d learned a technique for doing a few hundred revisions at a time (do bzr pull -r $i in a loop and increment the variable by a hundred or whatever each cycle) and so was able to cope with the need to disconnect periodically. Which is well, because it took 2 days to do the import.

While I was at first appalled by this, I really can’t blame Bazaar. The GTK codebase is, of course, rather large. First preserved commits were in 1997; there are over 15,000 revisions; a working tree (excluding VCS metadata) is 83 MB in size. The bigger problem however, is that Subversion is not fast at accessing historical data (the time taken to process revisions started at over 32 minutes per 100 but eventually dropped to about 9 minutes per 100 as it got to the most recent history; interesting).

Clearly, I could have picked an easier example for my experiments with bzr-svn, but it’s done now.

Usage is fine once branch created

I wasn’t entirely sure whether the DVCS property that branches are all peers would apply to one that had started life backed by a Subversion repository would hold, but things work just as they are supposed to. Creating a new branch to work on a feature with bzr branch, or use the technique of using a bzr checkout along with bzr switch to do change-in-place, both worked fine. So I’m all set.

The real point, though, was to encourage more GNOME hackers to give Bazaar a try. If everyone had to put up with a endless import process like mentioned above then no one would touch it. But now that the branch is created (and up to date as of yesterday or so), anyone can use it.

With Olav’s concurrence, I put my branch on in my GNOME directory, so you can branch from it as follows:

$ bzr init-repo --rich-root-pack gtk+
$ cd gtk+/
$ bzr branch http://www.gnome.org/~afcowie/bzr/gtk+/trunk/

You do the first step so that you can create a “shared repository” (in Bazaar parlance) which will allow that various branches under that directory will share all the revision data for the project. I need to warn you, though. Modern DVCS tools give you the full history of the project, but for a large project that can be pretty big. If you grab the above branch you’ll be downloading about 180 MB and it takes about 5 minutes. Yes 5 minutes is a long time, but no there’s no way around it* and in any case 180 MB is not unreasonable for such a mature project. Don’t be too worried if it seems like it is taking a bit to do the transfer. You only need to do it once, and look on the bright side. It took me 2 days. Just let it run.

Workin’

Personally, I always do my work in a working branch separate from my mirror of upstream, allowing me to easily compare against the last update of upstream that I have done. So:

$ bzr branch trunk working
$ cd working/
$ ./autogen.sh
$ make

and away we go. Branching takes like 3 seconds. Nice and fast, no problem.

I haven’t got a script running religiously updating my GTK branch; I do a bzr pull locally once every few days in my copy of 'trunk' and have been pushing that up to http://www.gnome.org/~afcowie/gtk+/trunk/. But now that you’ve got the branch, you don’t have to rely on me anymore; this whole distributed thing kicks in and you can do it yourself. Assuming you have a svn.gnome.org account, then you can update with:

$ cd ../trunk/
$ bzr pull --remember svn+ssh://username@svn.gnome.org/svn/gtk+/trunk

(use the --remember argument the first time to change where it updates from by default so you’re not relying on my branch anymore) and push with:

$ bzr push svn+ssh://username@svn.gnome.org/svn/gtk+/trunk

The very first time you update from Subversion bzr-svn will have to build some caches and whatnot locally, but it’ll be pretty fast from there on.

I’m ignoring the pushing and pulling of revisions between your mirror of ‘trunk’ and your local 'working' (or whatever) branch; I’m sure you can figure that part out yourself: but here’s a hint: do your work, test it, and commit it, all in 'working'; repeat; then use, say:

$ bzr diff -r ancestor:../trunk/

to consider what your current patch looks like, then shuttle it to 'trunk' with bzr pull or bzr merge (assuming you run it from 'trunk’ and whether you need to merge or not) and then bzr push to svn.gnome.org. Hope it works for you.

If you need help, poke your head into #bzr on FreeNode or write to their mailing list, or ping me and I’ll try and lend a hand. Make sure you’re using the latest releases; I doubt it will work otherwise and so recommend that you use bzr >= 1.4.0 and bzr-svn >= 0.4.10. Older versions do not contain critical bug fixes. I also encourage you to grab bzr-gtk >= 0.93.0 as the visualize command it adds:

$ bzr viz

is really amazing.

Good luck!

AfC

Update:

You need to have PycURL installed (it’s an optional dependency; used at runtime if detected). There is a bug that will prevent you doing the branch from me if you don’t. Debian and Ubuntu package python-pycurl; Gentoo USE=curl pulls in package dev-python/pycurl; Fedora package is also python-pycurl.

* Interestingly, the Bazaar hackers are working their way towards a “shallow branch” capability, which will be really cool; really, we don’t need 15,000 revisions of history just to tweak some project; we need the last 100 or so so we can branch from it, build, fix something, commit, and then submit the resultant revision upstream. Full history is wonderful and frequently useful, but this will be hand to help reduce the data transfer barrier to casual contribution in cases where bandwidth is at a premium.

This very moment as the GNOME systems administration team is presently working through the consequences of the Debian SSH key vulnerability; they have for the moment very properly locked down all access to the services provided to GNOME hackers, and that knocks out access to the Subversion server meaning people can’t work with their source code properly. If there was ever a clearer demonstration on the inadequacy of old 1st generation centralized version control systems, I cannot think of it.

2008 Federal Budget: Laptops

The one single non-standard tax 'thing' that many people I know do is to salary sacrifice for a new laptop. Quick review of how this works: normally, you are discouraged from buying yourself stuff out of pre-tax income, because otherwise a sensible financial strategy would go something like: pay for everything, declare small remainder to government, be taxed only on small remainder. The way the government puts a stop to this is by charging Fringe Benefits Tax on things bought from pre-tax income. FBT is a huge amount of money, you'll pay an insane amount of tax on fringe benefits: better to buy things from your wages after tax was taken out.

There are a few exceptions or partial exceptions to FBT, and one is laptops, at present, more info here (written from an employer's point of view). Given how many people I know get their employer to let them salary sacrifice for their 'yearly laptop', I am surprised to see less commentary on this aspect of the Federal Budget for 2008/2009:

FBT improves tax fairness by taxing non-cash remuneration. Tax planning arrangements and changes in technology have eroded the fairness and integrity of the FBT system, which will be addressed by:

  • ...
  • removing the FBT exemption for work-related items used mainly for private purposes such as laptops
  • removing the double benefit from employee depreciation deductions on FBT exempt items used mainly for work purposes
Budget Overview 2008–2009 [706K], page 5

What does this mean for you? I am not a tax professional (or financial professional) but my interpretation is:

  • if you are buying yourself a new laptop and it won't be used mostly for work, you buy it out of post-tax income from now on (and you don't claim depreciation on it either, you've never been allowed to depreciate private possessions like that anyway); or
  • if you are buying yourself a new laptop and it will be used mostly for work, you can either buy it out of pre-tax income, or you can claim depreciation, but not both as you may have done previously.

I assume this applies from July 1 2008 on. My understanding of depreciation is that 'work purposes' in the above is something along the lines of 'assisting in the production of assessable income', but this is certainly getting into regions where you should consult the ATO and tax professionals.

May 14, 2008

Some notes about Fedora 9

I have been running Fedora 9 on my work laptop since last Sunday. Other than the irritating im-chooser problem, I am pretty happy with it.

Here are some notes I wrote:

  • BZ#445129 - im-chooser crashes when attempting to open it. It is fixed in 0.99.6-4.fc10 and -4.fc9.
  • SCIM setup is missing the hotkeys shortcuts, so add your own, i.e. Trigger - Control+space.
  • yum-fastestmirror - specify your preferred mirrorlist.
    • edit /etc/yum.repos.d/{fedora,fedora-updates}.repo.
    • append &country=XX (or tw in my case) at the end of every mirrorlist URL.
    • run yum clean all to clean up the cache directory.

Technorati tags: , , , ,

Oh, now up to 14 Jesses in 2 weeks

Still not aware of any particular significance.

Ran into a few less usual names as well (e.g. Ukranian: “Nat” becomes Natalka, looks quite pretty, not at all hard-line Russki style), & a Jessie who was literally “Jessie” rather than an abbreviation for Jessica or whatever.

Cafe 7 take 2

Tortellini! Yuuuum! (-:

Oh, yes, fell for another super-duper-calorific iced chocolate.

Thinking of which, will have to get serious about this weight-loss thing again (i.e. find ways to overcome the imposed handicaps), as my 92cm jeans now require a belt to stay up, & my 87cm set do fit on... but luxuries like touching my toes are still (literally) beyond me. (-:

Meanwhile, must find ways to fit more Cafe 7 in without the iced choc... hmmm... have heard of people driving others to drink, but never before of driving someone to eat...?

May 13, 2008

Disappearing trick

It’s amazing just how fast a full-sized black forest cheesecake will vanish if you happen to leave a spare one in an office kitchenette, all sliced up, with a stack of plates & teaspoons. (-: 2mins 43secs :-)

Woo! A genuine technical problem

Installed a system on one disk with RAID1 (that is, each RAID segment owns one partition on the existing drive, /dev/sda). Then plugged in the second drive, copied the partition tables (cfdisk), rebooted to make sure disk & kernel agreed, now any attempt to use a partition on the second drive (/dev/sdb) — mkswap, mdadm, anything else — results in “Device or resource busy.”

lsof, lslk etc show nothing for sdb; /proc/swaps shows just the sda swap partition in use; mdadm --detail shows just the sda partitions in use for RAID. Where next?

May 12, 2008

Stress makes you fat

In the last couple of weeks, sticking to a weight-loss programme has become suddenly hard, when it wasn’t beforehand.

I put it down to the instant elimination of certain psych benefits plus some resulting psych damage.

Either way, the result has been a rapid 6kg “bounce” in weight.

Sigh.

About the only tool I have left is stubborn determination. That, at least, has had copious exercise in the face of miscellaneous shocks, lies (yes, that includes some major lies-of-omission), betrayals & complete stonewalling.

Thank You, TransPerth

Today, I piled onto a train at Cottesloe (after one of a long series of medical appointments) with a pushbike, & used my backpack to chock the back wheel to prevent the ’bike from rolling fore & aft.

By the time I got to Perth, I’d become so involved with other passengers that I simply walked off with the ’bike into Northbridge, leaving backpack, laptop, bike-lights, torch, food & numerous other items aboard.

CSO Gail radioed Bassendean Station, who found & rescued the backpack intact, returning it on another train about 20 mins after I’d walked away.

Good thing, too, since said laptop had/has legal documents on it which will help to short out some of the lies being told against me by others.

Note to self: plug new hard-disk in (& SO-DIMMs), keep old as a backup.

May 11, 2008

Press for our Prototype

A press release for our machine just went up on power.org to coincide with the developer conference in Austin this week.

Photo courtesy of Dave Willoughby Photography :)

Brian, Nathan, Ian, Dave, Kaveh and a cast of many put in some hard graft to have the machine ready - the box they demoed was one of the production prototypes so is very close to what will be available. Other thing that is nice is it's using an open source driver for the XGI card, only the card init is done through x86 emulation code running in the bootloader.

Thanks to the folk that wrote after my earlier post, will be staying in touch as we get closer to availability.

Cafe 7

Wandered up through Landsdale on the pushbike today, & found Cafe 7 open for lunch — on a Sunday.

Having enjoyed a great nosh-up there with Matt, fixing computers at a local school, I asked about when would be best (the place was absolutely packed at 09:30, guessing Mothers’ Day had something to do with this) for lunch, & wheeled back in at 14:00.

Lunch was absolutely delicious; these people seem to have refined the art of using serious food (e.g. rice) backgrounded by scrumptious stuff & cooking it so the flavour is spread throughout rather than blanded.

I was able to get something reasonably low-fat, plus veggo (hi, Steph! :-), for about the price of two burgers from one of the fast-food chains.

Their choc-milk is not exactly low-fat (it includes both cream & real ice-cream), but was so delicious that I “had” to order a second. (-:

The staff were very helpful, spontaneously offering to rearrange the table so I got a clear view of the wide-screen DVD showing (“Hedge,” which the munchkins from a nearby Islamic family were audibly excited about, parents liked that fact that most (if not all) of the food was Halal) & checking on the progress of my meal without being intrusive at all.

The Cafe itself is here, in Landsdale Forum, just a tad east of Wanneroo Road (take either Kingsway or Gnangara Road to the east) & there’s plenty of parking.

There’s an IGA supermarket next door, a video store, a few other conveniences. They’re open Sundays, weekdays, & most Saturday nights.

Oh, & they have a range of cakes, muffins & icecream that I didn’t dare to try at the time — but I’m sure you’ll be glad if you do. (-:

Magazines fully loaded

Now have no less than 6 magazines interested in having me write for them.

With that & miscellaneous other work, all I need to do now is get my life organised enough to manage all of this, & I’ll be only a few steps away from career paradise. (-:

Only three major line-items awaiting solutions, but two of those are biggies.

Did I mention girls going crazy? Remind me one day to explain “second best” as a ranking — it offers both ongoing frustration & eventual hope, if I’ve interpreted the promises of certain people (back window of your car) correctly.

Meanwhile, looking at fighting for a duplex in southerly Girrawheen which “should be” in ADSL2/2+ land for at least 2 ISPs.

May 10, 2008

Changes in the blog

Its worth noting some website changes. First, I dropped Skribit. The widget has been sitting there unused for weeks, so I’m thinking that’s software that no one, besides its founders use. “Is Skribit proving useful?” is the question they ask - no.

Next up, I’ve stopped using Technorati tags, and have decided to use Wordpress tags. I’ll still be using categories, as well as tags to complement the categories. Why? Wordpress has the feature… Technorati still gets updates/pings from my blog, and creates its own “tags” (largely from what I can see, from ways I categorise my post) that it sees my blog represents.

Besides, now I can add tags for relevant events, and RSS feeds can be generated from it. Good for people just wanting to follow notes from a certain event, and aggregations of the specific feed for said events.

May 09, 2008

Of cleaning keyboards and virii

In a tiny fit of paranoia, as the Norovirus has decided to pay a visit to the Moscone this week, I decided that I needed to clean my keyboard on the Macbook.

I’ve already been following best practices of washing ones hands before eating with them (say bread at a restaurant even). You learn this stuff as a kid, but somewhere in-between growing up, and finding a girlfriend, you decide to share over cleanliness. Anyway, the habit has been back for a while. This largely after looking at toilets in a many a men’s wash room, where I notice that a lot tend to not wash their hands!

Anyway, to the point. Keyboard Cleaner. Tiny application that locks everything up, allows you to clean your keyboard and trackpad, and then with the magic Command+Q only will the application exit. Its small, but it serves a useful purpose.

Learnertic

Discovered a new mode of learning yesterday, & that I have used it all along (I match up bullet for bullet down the characteristics list).

Sister’s kinder are very much VSL.

Know a pre-teen who is probably going to crash during primary school because he’s begun to collide with the non-VSL techniques used in State School, finds school “boring” (a word which evidently carries a heavy freight of meaning for this bright young lad).

Another branch to the tree is emotive learning, which I’ve not explored yet, but sister’s 2nd-last munchkin is an absolute genius at it (as in, I don’t understand the detail, but I can see the little light come on as she flashes to a conclusion far faster than I’m able to).

Know another pre-teen in which this mode also is not being addressed.

Sigh. /ME wishes for a perfect world in which not only was the understanding wider spread, but social politics didn’t intervene with communicating it in time.

Interactive Application Development for IPTV

Presented by Ronan McBrien and Sourath Roy, both from Sun Microsystems. The highlight of the show for me? Seeing the Sun Media Receiver. Not much information about it, except from the Sun Labs Open Day.

  • Sun Media Receiver (developed at Sun Labs, now maintained by ISV Engineering). Sun make a PVR? Cool.
  • RISC Processor (150-300MHz, predominantly MIPS, some ARM), memory, HDD optional, Ethernet port, USB, IR (remote control), Video output (SD, S-Video, composite, or HD, via HDMI connectors), hardware codecs (MPEG2, MPEG4-2, H.264)
  • Makes use of the Java Media Framework API
  • Can also expose talking to a SIM/smart card through the Java APIs, for security in your IPTV hardware

May 08, 2008

Uing DTrace with Java Technology Based Applications: Bridging the Observability Gap

Presented by Jonathan Haslam, Simon Ritter, Sun Microsystems

In what I thought was completely great showmanship between Jonathan Haslam and Simon ritter, it was simply, pure comedy, having the two of them on stage. No reason to go deeply into notes (as the verbose slides are available), but the actual demonstration, the writing the code on stage, and the dynamics between the two - that made this session pure gold to attend.

You can ask a system to panic with DTrace if you want!

Some terminology:

  • Probe: place of interest in the system where we can make observations
  • Provider: instruments a particular area of a system, and makes probes available. Transfers control into DTrace framework when an enabled probe is hit
  • Aggregation: patterns are more interesting than individual datum, so aggregate data together to look for arrays. Generally an associative array

DTrace has a PID provider, to look at applications based on PID

dvm provider is a java.net project to add DTrace support in. Install a new shared library, and make sure its in the path.

DTrace in JDK6 exists as a hotspot provider. No need to download a shared library. Its also more feature-rich.

Project DAVE (DTrace Advanced Visualisation Environment) was demoed. Also note that there’s chime.

Free and Open Source Software: Use and Production by the Brazilian Government

First up, I want to say, I’m truly impressed with Brazil. One day I will visit this amazing place, and spread the good word of open source with projects that are close to my heart: MySQL, OpenOffice.org, Fedora, and in due time, a lot more. This is a live-blog, from a most interesting talk, at JavaOne 2008. As I wrote on Twitter, “Brazil, simply impresses me. Their use of open source in government, makes me think that the rest of the world has a lot to learn from them”.

Free and Open Source Software: Use and Production by the Brazilian Government

Rogerio Santana <rogerio.santanna@planejamento.gov.br> +55 61 313 1400, Logistics and Information Technology Secretariat

Planning, Budget and Management Ministry

Brazilian Government

Households with Internet access: 70% in the US4k household income range. 70% of households have mobile phones (even when total revenue is USD$2k). Middle and upper class are all, generally on the Internet.

In 2007, 98% of Income Tax has been sent by the Internet. By 2009, there’s only going to be use of a Java application for this. About 17.5 million people filed via the Internet. Impressive.

Brazil has 142k public schools - 26k are connected to the Internet now (18%), and 92% are connected at low speed, while 8% have 512kbps connections.

Plan? Free Internet for schools, from 2008-2025. 1mbps for each connection, growth plans in the next 3 years.

There exists Computer Reconditioning Centres (CRCs) for recycling PCs.

www.eping.e.gov.br (e-PING: e-Government Interoperability Standards)

www.governoelectronico.gov.br (e-MAG: e-Government Accessibility Model)

Brazil has been using electronic voting since 1995. 136.8 million people voted in 2006 election. Next version of vote machines will use GNU/Linux!

Open Standards. Interoperability. Free Software. Free License. Community.

e-PING: uses XML, browser compliant, they have metadata standards

Many organisations of the Brazilian Government use Java as a primary development platform. Remember, Java is important because its the first that allowed even Linux users to interact with government applications.

Brazilian Digital Television? Middle-ware responsible for the interactive process of digital TV also developed in Java. (Ginga is the name of the application).

In education? Enrolment is done via the Internet for universities. e-Proinfo is an e-learning project that has already trained 50k students.

Developing clusters and grids, with focus on high availability, load balancing, database replication, distributed mass storage, and virtualization. The government is backing this, since 2006.

Spring Cleaning

A little late, but I’ve done a spring clean on the site, upgraded wordpress and coppermine to the latest version, and changed the theme to something a little nicer on the eyes.

Let me know if you find something odd and I’ll look into it.

Getting Started Using NDB on MySQL University

We haven’t had a MySQL University session in a while (a semi-spring break?), but tomorrow’s session (May 8) should be real interesting. MySQL Cluster developer, Stewart Smith, will host a session titled Getting Started Using NDB. It will happen on May 8, at 13:00 UTC.

One of the most common queries I receive is from people wanting to install or get started with NDB usage (ok, strictly speaking, they want to “cluster” MySQL, and I’m happy Stewart is using the word “NDB” which refers to the storage engine). All in all, it should be a great session, so I encourage you to join in the festivities.

Lucky for me, 13:00 UTC equates to 06:00 PST, while I’m in San Francisco. So I should definitely attempt to be there.

May 07, 2008

Ten Ways to Destroy Your Community

Note: these are live notes. It was a great talk, I’d rate it as excellent (and I’m not just saying that because Josh and I work in the same group at Sun). I’ll have to also comment on his thoughts and talk, in due time. MySQL, as an open source project, has a lot to learn.

Ten Ways to Destroy Your Community

A How-To Guide

Josh Berkus, Community Guy

Part 1: The Evil of Communities

  • you may attract and will be unable to get rid off a community
  • they mess up your marketing plans, because the community goes out and does its own marketing and PR and distributes your software in places you didn’t expect to
  • they also mess up your product plans, because they contribute to code and features to your project, with unexpected innovation!
  • communities are never satisfied by any amount of quality and keep wanting to improve it - if you can’t make it better fast enough, they sometimes do it on their own!
  • you have to re-define your partner and customer relationships… people who were your customers start contributing to your project, sort of making them partners… “confuse your salespeople” :)
  • the worst part about having a community, is that they require to you communicate constantly (and who has time for that?). Emails, chat channels, web forums, you get constant pestering

10 Ways to Destroy (The Berkus Plan, Patent Pending!)

1. Difficult Tools

  • weird build systems
  • proprietary version control systems
  • limited license issue trackers
  • single-platform conferencing software
  • unusual and flaky CMS

This will limit attracting new community, and eventually people will get frustrated with the tools and go away.

2. Poisonous people

Maximise the damage they do - argue with them at length! So if people give you problems, continue feeding the trolls. Then denounce them venomously, and finally ban them. Josh then goes into a funny way of making use of poisonous people, which eventually leaves your team and the troll(s).

3. No documentation

Don’t document the code, build methods, submission process, release process, install it.

4. Closed-Door Meetings

Short notice online meetings are good. Telephone meetings are even better, because of timezones and limited conference lines. Meet in person, in your secure office, is the best way! (even if you dial in on a conference line so that others can here). People that are most involved will leave your project right away.

5. Legalese, legalese, legalese

The longer and more complex the better! Hate and fear of attorneys help drive people away from your open source project. Contributor agreements that are long/complicated, with unclear implications are particularly good. Website content licensing, non-disclosure agreements (NDAs) [European developers usually never sign an NDA], trademark licensing terms (name and logo of your project… good way to dissuade people). Used properly, you can use legalese to keep out developers!

Bonus: change the legalese every couple of months without informing folk!

6. Bad liaison

A bad liaison/community manager is someone reclusive (least social, hates answering email, unplugs phone regularly, etc.). Also, someone with no time works very well. They’ll spend a few weeks, but pretty soon they’ll give up, and if you’re really lucky they’ll be snappy and make bad comments to the community!

Assigning someone with no authority also helps. As a community manager, you have no chain of command, and you just get to deliver bad news (we decide, and you just say something). That person usually leaves your company, and becomes a poisonous person, and its a win-win.

Someone unfamiliar with the technology also helps. An open source Java project, getting a PHP programmer, is the best person for you :)

Having no liaison also helps. Refer to the project liaison, but have no one!

7. Governance obfuscation

A good model for this is none other than the UN (He has a slide on the UNDP).

Get your legal team to write a governance document. Like they’re dealing with a hostile outsider. You’ll be impressed what they come up with!

Three principles:

1. Decision making and elections should be extremely complex and lengthy

2. Make it unclear what powers community officials and communities actually have

3. Make governance rules nearly impossible to change

8. Screw around with licenses

Licenses loosely translate to Identity. You’re not just a Linux contributor but a GPL person… You’re not just a PostgreSQL contributor but a BSD person…

9. No outside committers

I. No matter how much code outsiders write, only employees get to be committers. This is a surefire way to annoy contributors eventually.

II. If they ask why they’re not being able to commit, just be evasive! Talk about needing a mentor, decision not made yet, etc…

III. Make sure there are no written rules on who gets to be a committer, or that the criteria are impossible to fulfil.

IV. Bonus: promote an employee who doesn’t code to committer! Most will get disgruntled by this and go away and they’re not your problem anymore.

10. Be silent

He demonstrates out live, by giving him a minute… what silence really is. Just do nothing, be really silent.

Q&A

How does Sun score?

All of these techniques have been successfully employed at open source projects at Sun and elsewhere. He gave this talk at a Sun internal event and people came up to him asking if they were talking about their project! Sun is scoring pretty well, but not necessarily any better than other corporations.

I missed the question, but the answer was: If you are fast and clear about explaining mistakes, communities tend to be forgiving.

Examples of a successful community?

Kernel.org, and the Linux kernel community.

What about using forking to destroy community?

Combines poisonous people and playing with licenses. It fragments the outside community as people have no idea which to use. You can’t plan a fork (as it requires a lot of motivation to do the fork - finding people with that level of commitment and masochism is hard). Keep your poisonous people around and encourage them (poisonous people who are also code writers), then you sort of foster their image in the community by giving them a voice, and if you do something to really mess with the community’s mind (say a change of license), then the poisonous person will take the project and fork it.

The other way of forking, is to take a legitimate outside developer, build them up, and then after they have become a major developer, abruptly lock them out. The danger here is that they might not fork the project, and change the project back…

How do you prevent companies from supporting your project? Because this also means more developers will come to your project. And these companies are now selling services around your product.

Monkeying around with licensing. Then you change the commercial services around that. The second thing to prevent ISVs, is to play around with trademark rules, and lots of legalese. Prevent them to get code into your project, that should help too.

Near Field Communication (NFC) at JavaOne

Talk was given by Jaana Majakangas, from Nokia Corporation. I’ve been interested in NFC ever since I heard about it, as its something Maxis has been trialling for a while in Malaysia. It reminds me of rewinding back many years (maybe a decade ago?) when Celcom was trying to allow people to purchase a Coke from select vending machines, using SMS (no cash!). That never took off, but maybe NFC will be right, soon… Current limitation? Lack of devices - one in market (Nokia 6131) and another announced, but not in market. Also, the standard (JSR 257) has been extended by Nokia, which is always an issue for other implementers.

Some quick notes:

  • JSR 257 is what this is all about.
  • Simple wireless protocol between NFC compliant tags and devices in close proximity. New business opportunities for mobile operators, banks, retailers, transport operators, etc.
  • You can share content between phones/pair devices like Bluetooth. You can get further information by “touching” smart posters. Your phone can be your credit card for payment… it can also be your travel card.
  • Service discovery. Nokia has got extensions to the JSR 257 standard for this in their implementations.
  • Think outside of the box, be innovative, the technology is there, there are many use cases
  • Contactless communication API has been around since 2004. RFID tag, smart card, visual tags. Java applications to access the hardware capabilities (RFID for instance).

    - NDEF tag (RFID tag, with NFC standard)
  • There is a dedicated Connection interface for different targets. You will get a notification when a transaction has happened.
  • When you discover a target, the application will get a notification. It has the URL that you will open the connection with. Communicate… then close connection.
  • Nokia 6131 NFC has extensions to JSR 257: get the SDK at Forum Nokia. The extension also includes the peer-to-peer communication framework. In a modified version of JSR 257, the P2P communication will exist soon as well.
  • Business cards that go to NFC devices and contact details are there? Wow, this is Business Card 2.0 :)
  • NFC works within less than 10cm. Its pretty “near”.
  • “Touch to share bookmark”… touch two devices together, and voila! there is instant sharing. I’m reminded of old Palm ads when they were pushing their IR technology and beaming business cards across trains between a man and a woman!
  • NFC enables new consumer services with mobile devices. Take away that you should just be creative, and lots can happen.

double-booking Berne, chocolate shortbread

Had a couple of little strokes of happiness in the last few days (don’t make up for the irrecoverable king-hit of recent weeks — co-starring medical symptoms & other consequences — but...) in that when I went looking for Eric Berne TA books, the library had one of many which they are getting in for me — in a while — & book-shops “could get” for $$$ I don’t have... then in Elizabeth’s (Perth branch) I found “What do you say after you say Hello?” which is an excellent primer. To my surprise, today I found “Games People Play” in a random 2nd-hand bookshop in Warwick (one of the benefits of a push-bike over busses is the ability to dally for a while en route).

The mint-slice balls were only half-effective (paranoia saw about half given away), but I got to drop a little basket of chocolated short-breads before a random Real Estate receptionist (also very slim, concept of “fat” self-evidently ludicrous, appreciated help making tabs work right on MS-Word) today, which earned her a bunch of interested friends.

Tech micro-blurb: suspending my laptop to disk, as well as maintaining a really-fictitious uptime, also makes dodgy wireless links survive overnight.

May 06, 2008

Riding in Rochester, MN

Last weekend I was in Rochester, Minnesota and managed to go on two rides which was rather fun.

I'd done a bit of googling and found the Recyclers, a mob associated with the Rochester Active Sports Club which looked promising. I visited a couple of bike stores and was able to get a bike through Rochester Cycling & Fitness - nothing flash just a hybrid/comfort bike. A few emails back and forth with the organisers of their Saturday morning ride and I was ready for the first outing.

Saturday morning I met up with Jenniene and Rosemary who run the Hybrid Biking Group rides. We did a leisurely 15km ride around the bike trail network then had a coffee to finish up. Thus motivated I explored the trails for another 10km or so before returning to the hotel.

I fancied doing a longer ride so did some more digging around the RASC website and found that there was a ride planned for the Sunday morning with options of 53, 68 and 87 mile routes. This alone gave me pause as I'd not done rides much over 70km (~40mi) before and these were all on the trike. I sent an email off to Dave who organises the rides and explained my background and riding experience to see if he thought I'd be up to it.

Armed with the map of the route I decided to drive it and see what it was like. Looked promising, pretty flat and very little traffic. By the time I returned to the hotel there was a reply from Dave's which was most encouraging - he thought it would be fine and even offered to loan me a better bike. The latter being just one example of how welcoming the whole group were!

On Sunday morning I rode my rented bike over to Daves to arrive at 7:30 and he got me set up with his "loaner" bike. Really nice bit of kit, carbon fibre frame, Shimano/Campagnolo components and even had a speed sensor installed that would work with my Polar HRM. Did a few laps around his street and confirmed all was well before we headed off to meet up with the rest of the bunch. Between Dave and I got some photos of proceedings.

There were seven of us riding in total, very nice bunch of people and most helpful. This was both the first time I'd ridden a roadbike in earnest as well as in a bunch proper - much closer quarters than I'm used to from riding with the mob. The guys were very accomodating and patient, plenty of useful advice and a well planned route made for a highly enjoyable ride.

We ended up doing the middle length route, some 100km or so. A number of snack/drink stops were most welcome, I think I went though something like 4.5l of water and about 1.5l of Gatorade. 30C+ temperatures will do that. Thankfully I'd bought some snack bars (nuts, sultanas etc.) which along with a banana purchased enroute helped keep the energy up. The roads were great, very little traffic, well maintained and fairly flat. Just enough hills to keep it interesting at the start of the day and provide for a few "are we there yet" moments in my mind toward the end.

About six hours later I was back at the hotel, bit sore and dehydrated but elated, a great ride with a great bunch of people. Thanks guys. Figured a total of 130km for the day. Next time I'm gonna take the trike though, hence avoiding a sore butt as well as (perhaps) the ridicule of my recumbent mob mates for riding a wedgie :)

Some highlights from the Summer of Code

As you all know, MySQL is participating in the Google Summer of Code 2008. Its the community bonding period now, and real work only starts on May 26 2008.

Just a couple of highlights:

  • Raj Kissu Rajandran, a student at APIIT, in Malaysia, is the first Malaysian to participate in the MySQL project. I was under the impression that he was the first Malaysian in general, but it turns out that that he has competition in another project as well… He’s mentored by Marc Delisle from phpMyAdmin, but also has a co-mentor that is Ronald Bradford from PBXT/PrimeBase. Interest stuff.
  • Filippo Bollini, mentored by Brian Aker, has already started writing weekly reports, and has a most impressive week 2. Read it. Its comprehensive.

With Filippo’s amazing weekly reporting structure, I believe all the other students have a big task ahead of them to keep up :)

May 05, 2008

A little rant

So courtesy of a failed firmware flash we need to access some debugging pins on a bit of hardware here. Initial prognosis was that it's a dual in line 60 way connector - two rows of 30 pins, 2mm pin spacing. Unusual, but not that odd - laptop ATA drives are 2mm spacing for example.

However, have now just realised that while the row spacing is 2mm, the "column" pitch is 0.1" (2.54mm) which makes it a very odd animal indeed. Thankfully we only need two signals plus ground off this puppy so can stick some wires in to get at them, but, sheesh, why mix standards!

Ok, I'm better now, thanks for listening.

I 8 Jess, gay on phone

Technically relevant? Not even slightly.

Today, I accumulated my 8th new Jess in two weeks. She was a bit disgruntled about another Jess whom I’m gently torturing with chocolate biscuits (& attends gym regularly, & is stunningly slim, & plays the dumb blonde so skillfully but is the only staff member at that workplace who hits proxy sites to get past web filtering) but was still helpful & good value like the other 7 new Jesses plus 3 pre-existent Jesses. Tomorrow’s torture plan is a bowl-full of Arnott’s Mint Slice Balls on Jess Pre-Existent-3’s desk.

I also had some fun with a school-girl (about 15-16yo) on a #64 bus from Warwick Station: she was speaking VERY LOUDLY with her dad on her mobile ’phone, so I continued the conversation VERY LOUDLY to the obvious amusement of many other bus passengers.

When she finished with the ’phone, she (loudly) stated “My Dad is so gay!”

I looked non-plussed at her for a few seconds, then asked, “Um... so... how did you get here?”

She went bright red, & there was raucous laughter from the other school-kiddies. She was reduced to incoherent mumbling, & as we happened to disembark at the same stop (Warwick Supermarket), she fled up Beach Road rather than face either my grin or the heckling of her mates.

That was certainly an example of “hung by your tongue” & I think there’ll be quiet second thoughts before she slags off her parents in public again. (-:

Oh, I’ll sneak some technical relevance in here anyway. Mandriva 2008.1’s installer botches RAIDed /boot partitions — doesn’t complain about them, just botches them. That means a non-RAIDed /boot partition & a manual change to /etc/fstab before grub can be re-run after a drive failure, but it’s not a big issue.

Cheap Embedded Ethernet

I'm always interested in cheap ways of getting small embedded devices onto an Ethernet network. For some time now the cheapest options seemed to have bottomed out at the USD$40 mark (chip + magnetics + PCB ready to go) or so. Still not quite at the point where you'd sprinkle a dozen around the place and not think twice about it.

An article in this month's Circuit Cellar magazine about the WIZnet devices caught my eye. The chips in question are about USD$4 or you can get various eval boards starting from USD$12 for chip + magnetics + PCB. This is low volume pricing - one to ten pieces!

A quick dig through the data sheet of the part in question (iEthernet W5100) yielded the following;

  • SPI and MCU Bus interface options
  • Integrated 10/100 Ethernet MAC and PHY
  • Inbuilt TCP/IP stack
  • Onboard RAM for TX/RX buffers or "Socket" buffers

From an API standpoint you basically get a set of memory addressable registers where you set things like MAC address, IP address, Netmask and Gateway etc. Another part of the register space lets you configure the "Socket" mode where you can set the chip up to run as a TCP Client or Server. When a connection comes in you get an interrupt and take things from there.

On an initial read through they really do seem to have done the heavy lifting so you can read/write bytes from a socket (or UDP) connection as trivially as you would a simple UART.

Have added one of their boards to my "Buy and poke at" list, will write up what I discover once I get started on it. Must admit to a couple of other things needing sorting first tho, so feel free to beat me to it... :)

Jeremy



I have a Compaq Evo N610c, and yesterday I got Suspend to RAM working on Ubuntu 8.04!

It’s actually really easy, and just involves tweaking a configuration file.

Firstly, make sure you are not using uswsusp or suspend2 (TuxOnIce). If you’re unsure, run the following:

sudo apt-get remove uswsusp suspend2

All you have to do is open up /usr/lib/hal/scripts/linux/hal-system-power-suspend-linux in a text editor, and find this line:

QUIRKS=""

Change it to:

QUIRKS="--quirk-vbe-post --quirk-vbemode-restore --quirk-vbestate-restore"

Finally, save the file. Now, try suspending! Make sure you save all your work, because it still may crash. You can either use the Suspend command in the Quit menu in GNOME, or type “pm-suspend” in a terminal.

If you’re lucky, like me, your Evo should now Suspend to RAM and resume successfully!

java-gnome 4.0.7 released!

This blog post is an extract of the release note from the NEWS file which you can read online … or in the sources, of course!


java-gnome 4.0.7 (30 Apr 2008)

Draw some.

In addition to the usual improvements to our coverage of the GNOME libraries, this release introduces preliminary coverage of the Cairo Graphics drawing library, along with the infrastructure to make it work within a GTK program.

Drawing with Cairo

Example

The trusty Cairo context, traditionally declared as a variable named cr in code, is mapped as class Context. Various Cairo types such as different surfaces and patterns are mapped as an abstract base class (Surface, Pattern) along with various concrete subclasses (ImageSurface, XlibSurface, and SolidPattern, RadialPattern, etc). Error checking is implicit: the library status is checked internally after each operation and an Exception thrown if there is a failure.

Thanks in particular to Carl Worth for having reviewed our API and having helped test our implementation.

New coverage and continuing improvement

The single option choice buttons in GTK are called RadioButtons and have now been exposed. When using them you need to indicate the other buttons they are sharing a mutually exclusive relationship with, and this is expressed by adding them to a RadioButtonGroup.

RadioButton

The usual steady refinements to our coverage of the GtkTreeView API continue. There’s a new DataColumn type for Stock icons, and TreeModelSort is now implemented, along with minor changes to various other miscellaneous classes.

Considerable internal optimizations have been done, especially relating to ensuring proper memory management, with notable refinements to make use of “caller owns return” information available in the .defs data. This fixes a number of bugs. Thanks to Vreixo Formoso for having driven these improvements.

Error handling has been improved for GLib based libraries as well. If an ERROR or CRITICAL is emitted, our internals will trap this and throw an exception instead, allowing the developer to see a Java stack trace leading them to the point in their code where they caused the problem.

Internationalization support

java-gnome now has full support for the GNOME translation and localization infrastructure, including the standard _("Hello") idiom for marking strings for extraction and translation, but combined with some of the powerful support for positional parameters available from Java’s MessageFormat as well. There’s a fairly detailed explanation in the Internationalization utility class.

Build changes

Note that as was advertised as forthcoming some time ago, Java 1.5 is now the minimum language level required of your tool chain and Java virtual machine in order to build and use the java-gnome library.

Thanks to Colin Walters, Manu Mahajan, Thomas Girard, Rob Taylor, and Serkan Kaba for contributing improvements allowing the library to build in more environments and for their work on packages for their distributions.

The download page has updated instructions for getting either binary packages or checking out the source code.

Documentation, examples, and testing

Refinements to the API documentation continue across the board, notably improving consistency. A large number of javadoc warnings have also been cleaned up.

While not a full blown tutorial, the number of fully explained examples is growing. There are examples for box packing and signal connection, presenting tabular data, and basic drawing, among others. See the description page in the doc/examples/ section.

This code, together with the not inconsiderable number of unit tests and the code for generating snapshots of Widgets and Windows means that a large portion of the public API is tested within the library itself. The number of non-trivial applications making use of java-gnome is starting to grow, which are likewise providing for ongoing validation of the codebase.

Summary

You can see the full changes accompanying a release by grabbing a copy of the sources and running:

$ bzr diff -r tag:v4.0.6..tag:v4.0.7

Looking ahead

It’s probably unwise to predict what will be in future releases. The challenge for anyone contributing is that they need to understand what something does, when to use it (and more to the point, when not to!), and be able to explain it to others. This needs neither prior experience developing with GNOME or guru level Java knowledge, but a certain willingness to dig into details is necessary.

That said, I imagine we’ll likely see further Cairo improvements as people start to use it in anger. It shouldn’t take too long until the bulk of the functionality needed for most uses is present in java-gnome. In particular, forthcoming coverage of the Pango text drawing library will round things out nicely.

There are a number of other major feature improvements we’d like to see in java-gnome. Conceptual and design work is ongoing on for bindings of GConf, GStreamer, and even support for applets. Within GTK, there have been a number of requests made for various things to be exposed, for example, the powerful GtkTextView / GtkTextBuffer text display and editing capability. Some of these have preliminary implementations; whether or not any given piece of work is acceptable in time for any particular future release will remain to be seen and depends on the willingness of clients to fund us to review and test such work.

In the mean time, people are happily using the library to develop rich user interfaces, which is, of course, the whole point. We’re always pleased to welcome new faces to the community around the project. If you want to learn more, stop by #java-gnome and say hello!


You can download java-gnome from ftp.gnome.org or easily checkout a branch frommainlineusing Bazaar:

$ bzr clone bzr://research.operationaldynamics.com/bzr/java-gnome/mainline java-gnome

AfC

May 04, 2008

Sun xVM VirtualBox is released!

VirtualBox 1.6 is out. Note that now you can use Mac OS X and Solaris as a host platform. Naturally, having Mac OS X support excites me.

I tried installing a Ubuntu 8.04 server guest. Found a tiny issue - 64-bit guests aren’t supported yet :( So I pulled in the 32-bit ISO, and that installed just fine. Note that PAE support for guests exist now, and this is a good step in the right direction.

Sun’s building an OpenxVM community, which currently focus on xVM and xVM VirtualBox. It also harnesses technologies like Open Service Tag. All in all, I think a lot of MySQL users should be interested in virtualization, as there is a growing amount of hardware out there with many, many cores available for use.

Installing Ubuntu 8.04 server and getting past the kernel not booting

This is more of an Ubuntu problem, than a VirtualBox problem, but I faced an issue:

The kernel requires the following features not present on the CPU
0:6
Unable to boot - please use a kernel appropriate for your CPU

Turns out, the problem was the wrong kernel was installed. Rescue Ubuntu, and install linux-generic. For reference, look at Unable to boot 8.04 Alpha 3 Server install on laptop and also the fix.

The Year in Movies, 2007

It seems that my exercise to keep track of every single movie I watched last year actually worked. Here’s how 2007 turned out for me:

  • 5th of January: Blood Diamond (Hoyts Broadway, 8/10)
  • 1st of February: Perfume (Hoyts Cinema Paris, 7/10)
  • 4th of February: The Fountain (Hoyts George St City, 8/10)
  • 10th of February: Fight Club (DVD, repeat viewing, 8/10)
  • 11th of February: Pan’s Labyrinth (Hoyts George St City, 7/10)
  • 10th of March: Quand j’étais chanteur, a.k.a The Singer (Palace Academy Paddington, 6.5/10)
  • 18th of March: Hors de Prix, a.k.a. Priceless (Palace Academy Leichardt, 7/10)
  • 24th of March: The Illusionist (Greater Union Tuggerah, 7/10)
  • 3rd of April: Hot Fuzz (Hoyts Fox Studios, 8.5/10).
  • 10th of April: 300 (Hoyts Westfield Chatswood, 7.5/10).
  • 7th of May: La Science des rêves, a.k.a. The Science of Sleep (Hayden Orpheum, 7/10).
  • 12th of May: Spider-man 3 (Hoyts Westfield Chatswood, 7.5/10)
  • 22nd of May: Shooter (Greater Union Macquarie, 7/10).
  • 27th of May: Tales from Earthsea (Dendy Newtown, 6.5/10).
  • 30th of May: Pirates of the Caribbean: At World’s End (Hayden Orpheum, 7/10).
  • 27th of June: Knocked Up (AMC Pacific Theatres, The Grove, Los Angeles, 8/10).
  • 29th of June: Blades of Glory (Air New Zealand LAX to SYD, 8/10).
  • 1st of July: Transformers (Hoyts Broadway, 8/10)
  • 8th of July: Ocean’s Thirteen (Greater Union Bondi Junction, 7/10).
  • 17th of July: Harry Potter and the Order Of the Phoenix (special groovy RSP screening at Hoyts, Fox Studios, 7/10).
  • 2nd of August: Notes on a Scandal (DVD, 7/10).
  • 5th of August: Fabuleux destin d’Amélie Poulain, Le, a.k.a. Amélie (DVD, 8.5/10)
  • 7th of August: The Simpsons Movie (Hoyts Fox Studios, 7.5/10).
  • 17th of August: Die Hard 4.0 (Hoyts Broadway, 7.5/10).
  • 14th of September: The Bourne Ultimatum (Greater Union Bondi Junction, 6.5/10)
  • 22nd of September: Ratatouille (Hoyts Broadway, 8.5/10)
  • 23rd of September: An Inconvenient Truth (DVD, 8.5/10).
  • 30th of September: The Holiday (DVD, 7/10)
  • 5th of October: Shaun of the Dead (DVD, 7.5/10).
  • 6th of October: Rush Hour 3 (Hoyts Chatswood Westfield, 6.5/10).
  • 13th of October: Resident Evil: Extinction (Shaw Cinemas, Isetan Singapore, 6.5/10).
  • 4th of November: A Chinese Odyssey (DVD, 6.5/10).
  • 18th of November: Elizabeth: The Golden Age (Reading Cinemas at Rhodes, 7/10).
  • 2nd of December: Stranger Than Fiction (DVD, 8/10).
  • 9th of December: Ghost in the Shell S.A.C.: Solid State Society (DVD, 9/10)
  • 16th of December: The Prestige (DVD, 8.5/10).
  • 24th of December: National Treasure: Book of Secrets (Hoyts Chatswood Westfield, 7.5/10)
  • 28th of December: Aliens vs. Predator: Requiem (Hoyts Chatswood Mandarin, 7.5/10)

All in all, a pretty good movie year, with Solid State Society topping the list, and The Prestige, Stranger than Fiction, An Inconvenient Truth, Ratatouille, Amélie, Transformers, Blades of Glory, Knocked Up, Hot Fuzz, The Fountain, and Blood Diamond as my personal A-graders. Reflecting back, about the only two ratings I disagree with are Pan’s Labyrinth (should’ve been way higher, probably 8 or 8.5) and An Inconvenient Truth (which I don’t think quite deserved an 8.5).

I await the arrival of Wall•E this year. The trailer looks like, well, it was done by Pixar. Great humour, fantastic graphics (thank you 1080p), kid-friendly, and with the director and writer of Finding Nemo, Monsters Inc, and Toy Story 2. I’m actually beginning to believe that Pixar have actually built a self-reinforcing system of awesome that is going to be impossible to knock down for at least the next fifty years. It’s pretty incredible that most of their blockbuster movies have been directed and produced by completely different people.

To all my friends working at Pixar, I love you. Please continue doing what you do best.

iPhone: Currency Converter

A small tip for l’iPhone digerati (aw haw haw haw!): if you, like me, like to look up currency rates, forget about all this Web browser and Web application malarkey. Use the Stocks application instead:

  1. go to the Stocks application,
  2. add a new stock,
  3. use a stock name of AUDUSD=X for the Australian to US dollar, USDGBP=X for USD to the British Pound, etc. (Use the Yahoo! finance page if you don’t know the three-letter currency codes.)

Since a picture is worth a thousand words, here you go:

4921090572_iPhoneCurrenyConv

Pretty!

May 03, 2008

Playing with MySQL’s Online Backup

Something that has excited me for a long time with upcoming features in the MySQL Server, is online backup. Since seeing it first being demonstrated by Chuck Bell at the Heidelberg Developers Conference in 2007, I’ve been enthralled. Now you too, can try online backup.

If you’ve not read the Forge Wiki page about it yet, please head over to Online Backup on the Wiki. You can grab the latest source from mysql-6.0-backup from mysql.bkbits.net. If you’ve never built MySQL from source before, go ahead and read Building MySQL from source. And you naturally need to test it once built, so I suggest making use of MySQL Sandbox.

NOTE: mysql-6.0-backup is the MySQL Backup Team Tree, and frequently changes and can break sometimes. This is not for production use. It can eat babies.

So, you’ve got BitKeeper (bkf) built, you’ve checked out the code, you’ve built it, and you have a binary distribution.

Place the built version in a location that sanbox likes (/opt/mysql in my case). Now, run ./express-install.pl /opt/mysql/mysql-6.0.6-alpha-darwin9.2.1-i386.tar.gz. Once the install is completed, head over to ~/msb_6_0_6 and run ./use.

Backing up…

I now loaded the sakila sample database. Then, I proceeded to backup the database.

BACKUP DATABASE sakila TO 'sakila-backup.sql';
+-----------+
| backup_id |
+-----------+
| 1         |
+-----------+
1 row in set (0.37 sec)

sakila-backup.sql is saved in your MySQL “data” directory, and in the case of the sandbox, its kept in your home directory.

du -sh ~/msb_6_0_6/data/sakila-backup.sql
1.9M	/Users/ccharles/msb_6_0_6/data/sakila-backup.sql

Out of curiosity, I ran file on the backup, and it was reported to be data (not ASCII English text, with very long lines):

file ~/msb_6_0_6/data/sakila-backup.sql
/Users/ccharles/msb_6_0_6/data/sakila-backup.sql: data

Once you’ve done the backup, you might want to check the state:

SELECT * FROM mysql.online_backup WHERE backup_id = 1 \G
*************************** 1. row ***************************
          backup_id: 1
         process_id: 0
         binlog_pos: 0
        binlog_file: NULL
       backup_state: complete
          operation: backup
          error_num: 0
        num_objects: 16
        total_bytes: 1654492
validity_point_time: 2008-05-03 18:55:19
         start_time: 2008-05-03 18:55:18
          stop_time: 2008-05-03 18:55:19
host_or_server_name: localhost
           username: msandbox
        backup_file: sakila-backup.sql
       user_comment:
            command: BACKUP DATABASE sakila TO 'sakila-backup.sql'
            engines: Default
1 row in set (0.00 sec)

online_backup provides statistics and metadata about a backup or restore. There is another table in the mysql database, that allows you to find progress information, and its called online_backup_progress.

If you run SELECT * FROM mysql.online_backup_progress WHERE backup_id = 1 \G, you’ll see notes changing from starting, running, validity point, running to complete.

Restoring…

Now, its time to restore. Note that the restore is what is known as a destructive restore (i.e. it will replace the current version of the database).

RESTORE FROM 'sakila-backup.sql';
+-----------+
| backup_id |
+-----------+
| 2         |
+-----------+
1 row in set (3.04 sec)

That’s it! You’ve restored your database. For posterity, here’s some statistics on the restore:

SELECT * FROM mysql.online_backup WHERE backup_id = 2 \G
*************************** 1. row ***************************
          backup_id: 2
         process_id: 0
         binlog_pos: 0
        binlog_file: NULL
       backup_state: complete
          operation: restore
          error_num: 0
        num_objects: 16
        total_bytes: 1654492
validity_point_time: NULL
         start_time: 2008-05-03 19:01:25
          stop_time: 2008-05-03 19:01:28
host_or_server_name: localhost
           username: msandbox
        backup_file: sakila-backup.sql
       user_comment:
            command: RESTORE FROM 'sakila-backup.sql'
            engines: Default
1 row in set (0.00 sec)

There you have it, MySQL 6.0’s Backup and Restore functionality. Still in its early stages of development, but very, very cool! All these features will also be available in MySQL 6.0.5, when this gets released…

‘Open Source software is the software establishment!’

It can be amusing when news articles or blogs are written about a report/study that has only been released or read in excerpt. Small snippets can be extremely controversial on their own, and are easily taken out of the context of the gestalt article.

Such has been the case with the announcement of the Standish Group’s report, titled ‘Trends in Open Source’. The report is available in full to Standish subscribers, or for a fee of $US 1,000 per copy. Standish themselves chose to drum-up publicity in a press release two and a half weeks ago:

Open Source software is raising havoc throughout the software market. It is the ultimate in disruptive technology, and while to it is only 6% of estimated trillion dollars IT budgeted annually, it represents a real loss of $60 billion in annual revenues to software companies.

Some commentators pounced on this in defence of FOSS, and in doing so played right into Standish’s hands. A week later, other reports chose to focus on the technical perceptions of FOSS solutions, in particular security. Some of these articles basically said, “we haven’t been able to read the full report, but this is what we’ve been told”.

More informed accounts have hit the virtual presses in recent days, and it’s been revealed that the report is very positive overall with regards to FOSS. When iTnews asked me for comment, I was assured that the report had been thoroughly read. I said a lot of things, but the quotation that made the final cut is the following:

FOSS is inherently compatible with a free market, and hence with business. There is no closed-off ‘command economy’ that is characterised by proprietary software companies. The software and its development are totally open to the world.

Following the interview, I tried to distil some key points about FOSS:

  • The keys are transparency and accountability, as well as freedom over your own information and independence from vendor lock-in.
  • Most FOSS is based on open standards, which means that users/companies are not tying their data/processes to one vendor or piece of software. Some might be wary of FOSS, but I don’t think anyone can argue against the merits of open standards.
  • There is plenty of FOSS that works well on proprietary platforms (like Windows). There is no inherent tie-in with Linux.
  • FOSS has been most successful where it isn’t noticed. This can be in embedded devices, or in popular desktop applications like Firefox and OpenOffice.org.
  • Most people might think of a ‘computer’ as a desktop computer, but most of ICT (and ICT growth) is actually elsewhere (servers, consumer electronics, mobile phones, telecoms, embedded, supercomputers, etc.). Linux and FOSS is far more popular in these fields.
  • Most of the Internet is based on FOSS and open standards built around FOSS. For instance, TCP/IP networking was built for BSD UNIX (which is open source), and the majority of Web servers run the open source Apache web server.

Obviously there are more points than these, but I deliberately kept this as a quick ‘off the top of my head’ exercise as a means of preventing it from growing into an encyclopaedic tome.

LotD: Ubuntu theme for Windows



©2008 Sridhar Dhanapalan.

This work is licensed under a