Didn’t note in enough detail the unplanned tasks that I had to tackle last week. Am planning this week to note down the things which sidetrack me from the main goals.

Last week:

Work

  • [X] Support major customer project
  • [-] Development work on 2 other projects
  • [-] Stay in touch prospective clients/leads
  • [-] Kick off charity project
  • [-] Expedite tasks that are currently “WAITING”
  • [X] Clean up customer/supplier records on CRM tool
  • [-] Set up virtual machines
  • [ ] Create additional web forms to service other business areas

Life

  • [ ] Tax return
  • [-] Practice Siu Lim Tao and stretching
  • [X] Clean house

Misc

  • [X] Finish FLAC’ing CD collection
  • [-] Learn GnuCash

This Week

Work

  • [-] Development work on 2 customer projects
  • [-] Stay in touch prospective clients/leads
  • [ ] Get list together of targets for Project “L” and plan launch
  • [ ] Review charity project costings: is there a more cost-effective approach?
  • [ ] [Arrange to] visit datacenter for scheduled maintenance – the machines, not me 🙂
  • [ ] Create additional web forms to service other business areas
  • [ ] Minor company homepage change
  • [ ] Review structure of site and content; trim.
  • [ ] Complete SVN/Bugzilla integration project.
  • [ ] Complete new cashflow tool.

Life

  • [ ] Tax return
  • [-] Practice Siu Lim Tao and stretching
  • [ ] Clean house
  • [ ] Try to get a bit of Family Guy in

Misc

  • [ ] Decide on Slovakia trip
  • [-] Learn GnuCash
  • [-] A few more CDs to add to the collection

Summary:

Last week was a bit short, as I went on my little surf expedition early Thursday afternoon. So I’ll forgive myself for not putting X’s in all the boxes.

From last week:

Work

  • [-] Stay in touch prospective clients
  • [-] Kick off charity project
  • [-] Expedite tasks that are currently “WAITING”
  • [X] Complete 2nd quarter accounts
  • [ ] Clean up customer/supplier records on CRM tool
  • [ ] Set up virtual machines
  • [ ] Create additional web forms to service other business areas

Life

  • [ ] Tax return
  • [X] Light grocery shop
  • [ ] Practice Siu Lim Tao and stretching
  • [X] Surf trip
  • [X] Clean house

Misc

  • [ ] Finish FLAC’ing CD collection
  • [ ] Learn GnuCash

This week:

Work

  • [ ] Support major customer project
  • [ ] Development work on 2 other projects
  • [-] Stay in touch prospective clients/leads
  • [-] Kick off charity project
  • [-] Expedite tasks that are currently “WAITING”
  • [ ] Clean up customer/supplier records on CRM tool
  • [ ] Set up virtual machines
  • [ ] Create additional web forms to service other business areas

Life

  • [ ] Tax return
  • [ ] Practice Siu Lim Tao and stretching
  • [ ] Clean house

Misc

  • [ ] Finish FLAC’ing CD collection
  • [ ] Learn GnuCash

Inspired by a well-known figure online, I have decided to imitate her style with a weekly [p]review blog. It is a review of the previous week, and a preview of the coming week. I will try to capture tasks that I want to see complete plus the unexpected events that everyone gets in a typical week.

From last week:

This is my first weekly review, so there’s nothing to see here yet!

This week:

Work

  • [ ] Stay in touch prospective clients
  • [ ] Kick off charity project
  • [ ] Expedite tasks that are currently “WAITING”
  • [ ] Complete 2nd quarter accounts
  • [ ] Clean up customer/supplier records on CRM tool
  • [ ] Set up virtual machines
  • [ ] Create additional web forms to service other business areas

Life

  • [ ] Tax return
  • [ ] Light grocery shop
  • [ ] Practice Siu Lim Tao and stretching
  • [ ] Surf trip
  • [ ] Clean house

Misc

  • [ ] Finish FLAC’ing CD collection
  • [ ] Learn GnuCash

Well, thank the heavens. It finally happened. Google saved the web.

The Register reports that Google has released the VP8 video codec which it gained last year through its $124M acquisition of web video business, On2.

On2 have been producing video codecs for years. It open sourced VP3 around 2003, if memory serves, which then became the basis for the Theora codec; the preferred choice of the open source community. Theora is a royalty- and patent-free codec that many open source advocates – myself included – have promoted the use of due to its free nature (free as in freedom… but that’s another issue).

However, as Steve Jobs recently hinted that a patent pools was being established to destroy Theora (and ultimately line his pockets further), Google have done just what Microsoft and Apple probably feared. Pulled the rug out.

So, all YouTube video will be re-encoded to use VP8 rather than H.264 (the proprietary codec supported by Apple and Microsoft), and browser builders Mozilla and Opera have already come out in support of it. As has Adobe. And, of course, Chrome will support it too.

And VP8, being open source and royalty-free, can also be supported by Microsoft and Apple. All source code and documentation is available on line, so there really is no excuse not to support it.

Well Apple-lovers, you sure do choose interesting products. Like the iPod; a “revolutionary” portable audio player, being probably the first to have a non-replaceable battery. I might be wrong, having done no research on the subject, but this was enough to turn me off. Let alone the insistence of using iTunes.

Or the iPad; the computer-but-not-a-computer consumer device that let’s you do anything you want with your media.  So long as it is on Apple’s terms.  I don’t get why someone as apparently intellectual as Stephen Fry gets so excited about it. Yes, it’s so exciting, in fact, that I’d go immediately to iPad.com and check it out!

The iPad. I mean, for goodness sake, it’s a laptop without a keyboard, but with potentially harmful restrictions, a proprietary operating system and about as much appeal as a colonoscopy. According to Fry, it also has no “multitasking, still no Adobe Flash. No camera, no GPS”. But it does have a touch-screen and 3D desktop effects… Perhaps that’s why the Free Software Foundation dropped “Freedom” Fry’s video from their homepage: who’d want to appear as hypocritical as that?

And then there’s the iPhone. This is the biggy. Apple are using typical Microsoft-like tactics here.  Make an “irresistable” upgrade, probably for free or very cheap, and subtly attach some conditions to it. This time, as exposed in Giorgio Sironi’s blog post, The Apple of Sin, the condition is that you must only develop iPhone applications in languages prescribed to you by Apple.

The reasons, given by Giorgio, are pretty clear: Apple want to kill any chance of Flash appearing on the iPhone, else it might be inconsistent with the new iPad policy.

So, Mac users, be aware that your choice of platform may well come to haunt you in a year or two, when Apple extends this anti-Flash policy to OS X.  There is one nice aspect of this, though: Apple might just force Adobe to open-source Flash.  Then will follow a review-and-embrace process, where Flash gains recognition as an open standard.

Then we’ll see if Apple is embracing open standards as it “seems” to be with its current policies.  If not, then you’ll get more choice of hardware and software if you choose Windows. And even more if you opt for Linux and, not only would that be cheaper, you would also retain your right to choose what you do with it.

Sorry about that. 😉

I recently ‘dented’ (tweeted on identi.ca) a question to a group of software developers: what music do they listen to that is conducive to coding?I received a variety of answers, with just as wide-ranging tastes as you could expect, really. Clearly, I hadn’t conducted a very economic experiment. Perhaps I was asking the wrong question.

The question I should have asked is this: which music do you listen to that evokes a calm, creative and logical state of mind? In other words, I needed to key-word the question to (a) elicit greater impact on the reader and (b) give the question more scope, more context.

The premise of the question is the science behind brainwaves. Apparently, alpha waves in the brain (those which occur at between 8-13Hz [cycles per second]) are the most conducive to creative AND logical thinking. It is commonly associated with a meditative state of mind, deeply relaxed, daydreaming, fantasizing and creatively visualising various scenarios.

This dispels some notion that left brain/right brain dominance exists. I can’t remember which is which, but it is said that the right hemisphere is more creative and the left, more logical/analytical. Or vice versa.

But this alpha wave state could, in fact, also support such dominance, if it allowed for the idea of submission of the dominant region during periods of relaxation. In other words, we will have one personality profile when active, busy, even stressed, and another profile when relaxed, calm, clear.

It follows, then, the people seeking to produce creative works – whether it be software code, writing, visual art or music, should always seek the best environment to create alpha brain waves. Music is just one component; meditation, light scents, lighting, physical comfort and staying hydrated also contribute, as does the avoidance of caffiene and alcohol.

But for me, most of all, it’s music.  And quite often, that’s trance. 😉

Having installed CentOS (wikipedia) on a server here, I was surprised to find that, by default, the source repositories were not enabled.
Below are the source repo definitions I use.  Simply create a file called “Centos-Source.repo” (# chmod 644) in /etc/yum.repos.d/ and enable repositories as required (using enabled=1).  Please note that this example is for CentOS version 5 and may differ from any official versions out there.  I offer no warranty… it just works for me.  ;-)

[base-SRPMS]
name=CentOS-$releasever – Base SRPMS
baseurl=http://mirror.centos.org/centos/$releasever/os/SRPMS/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1
enabled=1
updates
[update-SRPMS]
name=CentOS-$releasever – Updates SRPMS
baseurl=http://mirror.centos.org/centos/$releasever/updates/SRPMS/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1
enabled=1
used/produced in the build but not released
[addons-SRPMS]
name=CentOS-$releasever – Addons SRPMS
baseurl=http://mirror.centos.org/centos/$releasever/addons/SRPMS/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1
enabled=0
packages that may be useful
[extras-SRPMS]
name=CentOS-$releasever – Extras SRPMS
baseurl=http://mirror.centos.org/centos/$releasever/extras/SRPMS/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1
enabled=0
packages that extend functionality of existing packages
[centosplus-SRPMS]
name=CentOS-$releasever – Plus SRPMS
baseurl=http://mirror.centos.org/centos/$releasever/centosplus/SRPMS/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1
– packages by Centos Users
[contrib-SRPMS]
name=CentOS-$releasever – Contrib SRPMS
baseurl=http://mirror.centos.org/centos/$releasever/contrib/SRPMS/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1

The full title of this blog should really be ‘SELinux is preventing mysqld (mysqld_t) “search” to ./tmp (public_content_rw_t)’ as that is the problem I’ve been having with CentOS recently (and hence my searches on the web for a solution).
The cause of the problem
I use SugarCRM for customer and project management data – and very good it is too! (Gratuitous plug – I can help your company install and use this fine software :-) ). Except that recently, when listing my Accounts within Sugar, I would not see all of the account context. Only the account data itself would be displayed and none of the subpanels/links. The query to retrieve more data was failing, with this error message displayed in the browser window:
mysqld: Can't create/write to file '/tmp/#08y2jw' (Errcode: 13)
In my system log (/var/log/messages), I also got multiple SELinux errors like this:
Oct 13 09:07:50 server setroubleshoot: SELinux is preventing mysqld (mysqld_t) "read" to ./tmp (public_content_rw_t). For complete SELinux messages. run sealert -l 1762c478-f3a2-4eeb-be09-bd3dc037d945
Clearly, the reason for “Errcode: 13″ was due to SELinux.
Incidentally. if you have seen a similar error on your web site, but with (Errcode: 28) instead, this is likely due to shortage of disk space. A great way of determining operating system errors like this, is to use ‘PError’, thus:
# perror 28
OS error code 28: No space left on device

# perror 13
OS error code 13: Permission denied

So there we are – two distinct and different issues.
With SELinux, resolving the permission issue can be difficult. By issuing # sealert -l 1762c478-f3a2-4eeb-be09-bd3dc037d945, as suggested above, I got the following output (trimmed and highlighted for clarity):

Summary:
SELinux is preventing mysqld (mysqld_t) “search” to ./tmp (public_content_rw_t).
Allowing Access:
Sometimes labeling problems can cause SELinux denials. You could try to restore
the default system file context for ./tmp,
restorecon -v ‘./tmp’
Additional Information:
Source Context root:system_r:mysqld_t
Target Context system_u:object_r:public_content_rw_t

First things first: issuing # restorecon -v './tmp' didn’t fix it for me. I was also surprised to see that the path to /tmp was relative to the current working directory, so I tried a slightly modified # restorecon -v '/tmp', but to no avail. After restarting mysqld, the problem persisted: MySQL was simply being refused access to /tmp. Somewhere, a policy is disallowing this.
It’s a mistake to assume the the source context and target context should be the same; they don’t have to be, as it’s entirely policy-driven.  I made bold those aspects (the file Type) above to highlight this incorrect assumption (that I previously held).
Find and fix a policy?
Although finding the troublesome policy and analysing it is a Good Thing, it’s also time-consuming and requires significant knowledge of SELinux, chiefly to avoid creating security holes. A better way, I found, was simply to relocate where mysqld tries to store temporary data.
Thanks to Surachart Opun’s blog, I learned that you can specify a new location for temporary files. In /etc/my.cnf, add or edit the following:
[mysqld]
tmpdir=/tmp # # e.g.
tmpdir=/var/lib/mysql/tmp

Now do the legwork to set up the directory properly:
First, create directory with appropriate permissions
# cd /var/lib/mysql
# mkdir tmp
# chown mysql:mysql tmp
# chmod 1750 tmp

Now set the SELinux context up:
# chcon --reference /var/lib/mysql tmp
and make the SELinuiux context permanent:
# semanage fcontext -a -t mysql_db_t "/var/lib/mysql/tmp(/.*)?"
Finally, restart mysql:

SugarCRM – Open Source CRM system

# service mysqld restart
Closing thoughts: optimisation
The methods above fixed the particular problem I was having. They didn’t, however, actually pinpoint the cause. This is one of the good things about Linux and SELinux in particular: you are forced to rethink what the system is doing and work out a solution that sits within the predefined security context – or learn how to write SELinux policies. Personally, I prefer the former ;-)
There is an additional benefit to the solution above – namely, optimisation. Because we have specified the security context with semanage, we are free to mount an external file system and use that instead for MySQL’s temporary files. In other words, we can maintain the security but increase the performance.  One such filesystem could be tmpfs. tmpfs is actually a RAM Disk, uses a fixed amount of RAM to provide file storage. It is much quicker than an on-disk filesystem and thus perfectly optimised for storing temporary, caching data. There are many resources about tmpfs on the web. A good introduction to tmpfs can be at Planet Admon.

News abounds today of Google’s statement, relating to its operations in China. The statement indicated that Google would consider exiting China completely if it could not operate, with government approval, in an unrestricted manner. The post is here: http://googleblog.blogspot.com/2010/01/new-approach-to-china.htmlIn business, to turn away just under 20% of your potential revenue to comply with your own principles must be a hard call to make. But Google is global, and perhaps 4.8 billion people in the rest of the world is a sufficient number to target with AdWords campaigns…

But what is really happening here? It’s difficult to believe that Google would invest so much time and effort, installing services in 2006, and then expect that within 4 years Beijing would accede to Google’s “wisdom” and suddenly allow freedom of speech. Within 4 years? After thousands of years of communist, dynastic and, occasionally, even tyrannical rule? No, somehow this seems unlikely.

It’s a surprising move by Google; one that could incite anything from a murmur of disquiet amongst the ranks of young Chinese teens, avidly seeking knowledge and understanding, to full-blown protests, perhaps even riots. It’s something of a political move, too: reading between the lines, it would appear that Google suspects Beijing of orchestrating the cyber-attacks on it and the twenty or so other organisations, as mentioned in their blog. By saying “play fair or don’t play at all”, Google may be vocalising the sentiments of the underclasses, still struggling to be heard from within the provinces.

Something that has not been mentioned (to my knowledge) so far in the press is the opportunity to expose Hong Kong. Under Chinese rule, but with special provisions (such as more liberal allowances on internet services), Hong Kong would present a potential new base for Google’s Chinese operation. But perhaps that’s a step too far?

The question remains whether it’s a viable exercise, and for viability, read “bottom-line”. Implementing the required censorship and publishing restrictions as required by the Chinese government will likely have been more technical trouble than they’re worth for Google, who elsewhere in the world have hands-down probably the most advanced information and revenue infrastructure to be found.

But information and revenue go hand in hand in Google’s business model. The less information, the less dynamism on-site, then the less interest there will likely be and the less uptake, over time. Google works in the west because there are virtually no limits, within the law, on trading ideas and services. In the far east, Google may have just observed a synergy that works to the detriment of its model. It may also be outgunned by larger powers at work; Beijing’s insurance.

We shall see if Google’s gambit, encouraging closer but more open ties with Beijing, will pay off.

Some time ago, mainly because my then-girlfriend bought me 3 Hacky Sacks (or ‘juggling balls‘, as they seem to be known these days), I took it upon myself to learn how to juggle.
An image of three juggling balls

The learning process is actually quite simple.  This is the method I have used:

  1. With two in one hand (e.g. left) and one in the other, throw up one (of the two) first and simply catch it with the other hand.
  2. Then, repeat but throw back from the right to the left.

    Completing just this first step is the key to learning how to juggle. 

    Continue to practice this method, tossing the sack from one to the other hand.  When you can always catch it, try the next step:

  3. When the ball is up in the air, throw the opposite ball up too.  The best time to throw it is just before the first ball reaches the parabolic peak (the top of the arc of travel).   Now that your second hand is free, catch the first ball.
  4. If you can, try to catch the second ball as well, using your first hand – just as you have already practised.

    Once you have got this far, you are well on the way to becoming an expert! 😉

  5. It goes without saying that, to improve, you need to throw the third ball into the air before catching either the first, or the second.

The paradox

This is the secret to success.  In order to successfully catch, time after time, you must successfully throw.  In other words, to hold on, you have to let go.

Perhaps it can be best summarised with a quote from Star Wars.  When Princess Leia is speaking to Governer Tarkin, shortly before he destroys the planet of Dantooine, she says (paraphrased), “the more you tighten your grip, the more will slip through your fingers”.