Michael Fox
VMware Workstation 7.1 Beta
VMware Workstation 7.1 Beta announced. More details can be found at the link below;
VMware Workstation 7.1 Beta announced. More details can be found at the link below;
Not all the videos are there yet, but they are starting to show up . Yay. See http://mirror.internode.on.net/pub/linux.conf.au/2010/index.html or your local LA mirror.
Looks like VMware has pushed out VMware Fusion 3.1 Beta. You can grab a copy from the link below;
Last night I finished watching a series called "From the earth to the moon". I think it was the first of Tom Hanks' forays into docu-drama (coming after the movie Apollo 13).
As you might guess from the title the series follows the events leading up to the first landing on the moon and afterwards to the final Apollo mission in 1972. As a series it is an excellent examination of the people involved in the American Space effort, from Astronauts to their wives, to the contractors and everyone else involved.
What it did for me was to bring home how far short we have fallen from the promise offered by the Apollo missions themselves. If the momentum had been maintained, Apollo could have been the stepping stone to the next wave of human exploration. By now we wouldn't be marvelling at the staying power of a couple of Rovers on Mars, but instead we'd be marvelling at the fact that the human species had set foot on another planet, not just our celestial partner, but a whole other world.
Today we are told that it's better to send probes and rovers to other worlds. Less of a risk, cheaper and so on. Feh I say. The USSR sent a probe to the moon, then the US sent two men to the moon, which is more inspiring? Which is more likely to stir the blood?
So yes, "From the earth to the moon" is an inspiring series, it details what can be done when there is the will to move forward and achieve something great. However it's also depressing to see where the evaporation of that will has left us.
Might as well write these steps down in case I ever need them again:
Background: A test box started making a faint high-pitched squealing sound, and then powering off. Happened semi-randomly, but most commonly during periods of hard disk access (such as boot-up). Fixed the hardware problem by replacing the Power Supply Unit ($25 from MSY).
Steps for moving to a new hard disk:
Error in /var/log/syslog when starting mysqld: Failed to open log (file ‘/var/log/mysql/mysql-bin.000348′, errno 2) The cheat was to delete the last line, the one referencing the /var/log/mysql/mysql-bin.000348 file, from the /var/log/mysql/mysql-bin.index file. Note that in this case I knew that the last log file contained no updates that mattered, so it really was no loss.
vim /var/log/mysql/mysql-bin.index
MySQL server would no longer start, instead giving a “Fatal error: Can’t open and lock privilege tables: Can’t find file: ‘host’ (errno: 2)” message in the logs. For me, the problem was that the /var/lib/mysql/mysql/host.MYI file was missing. What fixed it: Repair the host table.
mysqld_safe --skip-grant-tables &
mysql
mysql> use mysql
mysql> REPAIR TABLE host USE_FRM;
mysql> exit
Try to reset the host table with useful starting data, to fix this error when starting mysql client: error: ‘Access denied for user ‘debian-sys-maint’@'localhost’ (using password: YES)’
mysql_fix_privilege_tables
mysqladmin shutdown
To fix these errors in /var/log/syslog :
[ERROR] /usr/sbin/mysqld:Fatal error: Can’t open and lock privilege tables: Table ‘./mysql/db’ is marked as crashed and should be repaired
[ERROR] /usr/sbin/mysqld: Table ‘./mysql/db’ is marked as crashed and should be repaired
cd /var/lib/mysql/mysql
myisamchk db
myisamchk *.MYI
To fix these warnings in the syslog:
myisamchk: warning: Table is marked as crashed
MyISAM-table ‘db.MYI’ is usable but should be fixed
myisamchk -r db
To fix this error in /var/log/syslog :
[ERROR] /usr/sbin/mysqld: Incorrect information in file: ‘./mysql/tables_priv.frm’
This did not work: repair table tables_priv USE_FRM;
Cheated: just copied /var/lib/mysql/mysql/tables_priv.* from another working machine.
chmod -x,o-r,g+w tables_priv.*
chown mysql.mysql tables_priv.*
Recurrence of this error:
ERROR 1045 (28000): Access denied for user ‘debian-sys-maint’@'localhost’ (using password: YES)
And a new one:
Access denied for user ‘root’@'localhost’ (using password: NO)
… and at this point a “desc user;” showed that the user table file must have had a doubly-claimed inode with another table during the fsck, as it was a completely different user table schema from that found on another machine.
Cheated again: just copied /var/lib/mysql/mysql/user.* over from another working machine.
chown mysql.mysql user.*
/etc/init.d/mysql start
Then to fix: ERROR 1045 (28000): Access denied for user ‘debian-sys-maint’@'localhost’ (using password: YES)
cat /etc/mysql/debian.cnf
Copy the “password” field’s value for the “debian-sys-maint” user to the clipboard.
mysql
mysql> use mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'insert_password_copied_above_from_clipboard' WITH GRANT OPTION;
mysql> exit
To fix this warning in /var/log/syslog: WARNING: mysqlcheck has found corrupt tables
Force a check of all tables:
mysqlcheck -A
Fix for this error when granting privileges: ERROR 126 (HY000): Incorrect key file for table ‘./mysql/db.MYI’; try to repair it
mysql
mysql> GRANT ALL PRIVILEGES ON dbname.* to 'dbuser'@'localhost' IDENTIFIED BY "fakefake";
ERROR 126 (HY000): Incorrect key file for table './mysql/db.MYI'; try to repair it
mysql> use mysql
mysql> REPAIR TABLE db USE_FRM;
+----------+--------+----------+----------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+----------+--------+----------+----------------------------------------------------+
| mysql.db | repair | info | Wrong bytesec: 255- 37- 32 at 0; Skipped |
| mysql.db | repair | info | Found block that points outside data file at 424 |
....
| mysql.db | repair | info | Found block that points outside data file at 24960 |
| mysql.db | repair | status | OK |
+----------+--------+----------+----------------------------------------------------+
151 rows in set (0.01 sec)
mysql> GRANT ALL PRIVILEGES ON dbname.* to 'dbuser'@'localhost' IDENTIFIED BY "fakefake";
Query OK, 0 rows affected (0.00 sec)
mysql> exit
mysqladmin shutdown
/etc/init.d/mysql start
To fix these errors in the syslog on mysqld startup:
/etc/mysql/debian-start[4592]: ERROR 1017 (HY000) at line 116: Can’t find file: ‘columns_priv’ (errno: 2)
/etc/mysql/debian-start[4592]: ERROR 1017 (HY000) at line 516: Can’t find file: ‘proc’ (errno: 2)
mysql
mysql> use mysql
mysql> REPAIR TABLE proc USE_FRM;
mysql> REPAIR TABLE columns_priv USE_FRM;
mysql> exit
… and after all the above, the box powers on, and stays on, the disk errors are gone, the mysqld service starts cleanly, and from a quick cursory glance, the data still looks okay.
So, you have some application where you want the user to specify a remote host/port, and you want to support IPv4 and IPv6.
For literal addresses, things are fairly simple. IPv4 addresses are simple, and RFC2732 has things covered by putting the IPv6 address within square brackets.
It gets more interesting as to what you should do with hostnames. The problem is that getaddrinfo can return you multiple addresses, but without extra disambiguation from the user it is very difficult to know which one to choose. RFC4472 discusses this, but there does not appear to be any good solution.
Possibly you can do something like ping/ping6 and have a separate program name or configuration flag to choose IPv6. This comes at a cost of transparency.
The glibc implementation of getaddrinfo() puts considerable effort into deciding if you have an IPv6 interface up and running before it will return an IPv6 address. It will even recognise link-local addresses and sort addresses more likely to work to the front of the returned list as described here. However, there is still a small possibility that the IPv6 interface doesn't actually work, and so the library will sort the IPv6 address as first in the returned list when maybe it shouldn't be.
If you are using TCP, you can connect to each address in turn to find one that works. With UDP, however, the connect essentially does nothing.
So I believe probably the best way to handle hostnames for UDP connections, at least on Linux/glibc, is to trust getaddrinfo to return the sanest values first, try a connect on the socket anyway just for extra security and then essentially hope it works. Below is some example code to do that (literal address splitter bit stolen from Python's httplib).
import socket
DEFAULT_PORT = 123
host = '[fe80::21c:a0ff:fb27:7196]:567'
# the port will be anything after the last :
p = host.rfind(":")
# ipv6 literals should have a closing brace
b = host.rfind("]")
# if the last : is outside the [addr] part (or if we don't have []'s
if (p > b):
try:
port = int(host[p+1:])
except ValueError:
print "Non-numeric port"
raise
host = host[:p]
else:
port = DEFAULT_PORT
# now strip off ipv6 []'s if there are any
if host and host[0] == '[' and host[-1] == ']':
host = host[1:-1]
print "host = <%s>, port = <%d>" % (host, port)
the_socket = None
res = socket.getaddrinfo(host, port, socket.AF_UNSPEC, socket.SOCK_DGRAM)
# go through all the returned values, and choose the ipv6 one if
# we see it.
for r in res:
af,socktype,proto,cname,sa = r
try:
the_socket = socket.socket(af, socktype, proto)
the_socket.connect(sa)
except socket.error, e:
# connect failed! try the next one
continue
break
if the_socket == None:
raise socket.error, "Could not get address!"
# ready to send!
the_socket.send("hi!")
Joachim Breitner recently announced on the Debian Haskell mailing list that version 6.12.1 of the Glasgow/Glorious Haskell compiler was about to transition from Debian unstable to Debian testing. That has now happened. This means there is a very good chance it will be part of the next stable release of Debian.
A big thanks is due to Kari Pahula, the Debian maintainer for GHC who managed to get this version of GHC working on a bunch of CPU architectures not officially supported by the upstream GHC maintainers. Deserving of equal attention are Joachim Breitner and Marco Túlio Gontijo e Silva who did a large amount of real quality work to improve the way Haskell libraries are packaged in Debian.
The big change recently was drastic improvements in the way library dependencies are tracked across packages which will make it much easier to write tools to automatically check for broken dependency chains. Packaging Haskell libraries for Debian is now a relatively trivial and fool proof exercise. Packaging a library which is on Hackage can take as little as 5 minutes.
With the current version of GHC in Debian and a large and growing collection of Haskell libraries, writing Haskell code on Debian using nothing but Debian packages is now a pleasure. Ubuntu and other Debian and Ubuntu derived distributions of course also benefit from this work.
Picked up an iPhone 3GS to replace that of my iPhone 3G that I already have had for sometime. The existing phone was purchased outright and was locked with Telstra. It was on a Telstra cap, and the amount it cost me was certainly not competitive.
I managed to get a new phone on a plan that includes more for less then I was paying with Telstra using my own phone. Go figure.
iPhone 3GS seems a bit different so far, in fact better then previous model. Had considered to get something else, but kept coming back to the iPod which can be used for audio/video playback. Both handy features for a phone device all in one unit.
On Thursday February 25th we held the first meeting for 2010 of the Sydney Functional Programming group. The meeting was held at Google's Sydney offices and we had 17 people show up to hear our two presenters.
First up we had your correspondent (Erik de Castro Lopo), giving a presentation titled "Hacking DDC" on my bug fixing work on Ben Lippmeier's DDC compiler. I explained a little about what DDC and Disciple were; a Haskell like language with some interesting extensions to the type system. I then suggested that anyone curious as to why these extensions were interesting should read the first chapter of Ben's PhD thesis "Type Inference and Optimisation for an Impure World". I then went on how using Darcs for the revision control made it easy to use one branch per bug or feature I'm working on, specifically, it allowed me to work on one until I got stuck and then move on to another without the debugging of the first interfering with the second.
Our second presenter for the evening was Tim Docker who gave us an explanation of a Domain Specific Language (DSL) for handling dates in financial systems. Code written in his DSL looked a lot like Ocaml, but the implementation was in C++.
A big thanks to Tim for presenting and Google for providing the meeting venue and the snacks.
In my day job I do Linux embedded work and as people in the embedded world know, Linux is a pretty commonly used embedded OS. Today I was evaluating a new board and found it had an Intel graphics chip that was not properly detected by Ubuntu 9.10. The ever trusty lspci said this:
00:02.0 VGA compatible controller: Intel Corporation System Controller Hub
(SCH Poulsbo) Graphics Controller (rev 07)
We all know that Intel employs a bunch of well known Xorg developers, so this shouldn't be a problem, right?
Unfortunately, it is a problem. Intel's offering for this chipset is the Intel® Embedded Graphics Drivers web page where they offer a 124 megabyte download (registration required). After registration you get to choose which driver pack you want and which OS you are downloading it for. Ubuntu was not on the list and neither was Debian. I chose Fedora 10 (released in 2008) as that was the most recent one.
Now, you can image my surprise when the driver download for Fedora Linux contained just four files:
Archive: /tmp/IEGD_10_3_GOLD.zip
testing: UsersGuide_10_3_1525.pdf OK
testing: IEGD_10_3_GOLD_1525.exe OK
testing: IEGD_SU_10_3_GOLD.pdf OK
testing: RELNOTES_10_3_1525.txt OK
No errors detected in compressed data of /tmp/IEGD_10_3_GOLD.zip.
Yep, thats right, the driver download for Fedora Linux contains two PDF files, a text file and an executable installer for Windows.
Being the curious (and paranoid) type I decided to explore this further, by running the installer under WINE in a chroot. After the installer you get left with several metric craploads of Java Jar files, and another windows executable iegd-ced.exe that supposedly configures this nightmare. I ran it (again, under WINE in a chroot) but it didn't seem to do anything sensible or worthwhile so I looked around amongst the other installed files and found IEGD_10_3_Linux.tgz.
Inside that tarball there are a bunch of Xorg library binaries (for several different versions of Xorg), a large chunk of source code that gets compiled into the Linux kernel and even better yet, a couple of Microsoft Visual Studio project files. WTF?
Unbe-fscking-lievable. Needless to say, I will avoid any hardware which uses this chipset and any other hardware that requires binary only kernel blobs packaged this badly. Doing so makes my life easier.
The people at Intel who thought this was a good idea must have their own personal mother-lode of stupid.
My current job involves working extensively with Omniture products. The company has an annoying habit of secrecy, with documentation only available on request for many aspects of their products.
They also attempt to obfuscate their JavaScript, despite the fact that a determined viewer should be able to work it out eventually. I'm told this is so that people aren't tempted to play with the code. The obvious methods of deobfuscation are pretty tedious, and because Omniture don't use standard (minify et al) methods of obfuscation so it seems a little more difficult. Fortunately I lucked onto a better approach.
You'll need Firebug, and if you don't have that already you should anyway. Go to a page that already has the Omniture "plugin" (function) you want. Open the Firebug console and run alert(s.functionNameYouWant) and run it. You'll be shown a nicely-formatted anonymous function, which will be much easier to read than the line noise you'll see in the actual s_code.js file.
In my case I'm after Cross-Visit Participation, and that's used on the Omniture site itself (though an older version than the latest available from Omniture which has a very useful additional feature).

Work is providing me a mobile, so I went to cancel my phone with Exetel. Unfortunately this is the UI you see. So first of all, you can helpfully cancel it in the past. But then the button is labelled "Cancel". So does that means clicking it will cancel my service, or cancel the request to disconnect?

The resulting page is even more confusing. Does that mean my "Cancel" was successful? Or do I now need to "Submit" to make it happen? Terribly confused.
Ran the Traxxas Rustler VXL yesterday and managed to have a wall jump in front of me.
The damage this time was a shock coming apart. Good news is it wasn’t damaged to the point I couldn’t fix it. Pulled apart, added new oil. Rebuild shock. Reinstalled back on car.
All good for another use.
The amazon book order arrived yesterday, just had to go pick up from local post office as I had a card left for me. As I wasn’t home when the package arrived.
Books shipped in good condition. Very happy with the service. Now I just need to read and study the content.
Transition to Wordpress MU seems to have gone fairly well. The product seems to perform exactly like the normal Wordpress. Although one exception would appear that embedded media doesn’t work unless you install a plugin. I’ve since done that and it seems to now work as expected.
With that said, I think my blog will live in the new location. As I can now manage Wordpress MU and it’s updated for all associated blogs hosted off the users.heimic.net vhost.
From RFC3164, which is otherwise about syslog formats:
6. Security Considerations
An odor may be considered to be a message that does not require any acknowledgement. People tend to avoid bad odors but are drawn to odors that they associate with good food. The acknowledgement of the receipt of the odor or scent is not required and indeed it may be the height of discretion to totally ignore some odors. On the other hand, it is usually considered good civility to acknowledge the prowess of the cook merely from the ambiance wafting from the kitchen. Similarly, various species have been found to utilize odors to attract mates. One species of moth uses this scent to find each other. However, it has been found that bolas spiders can mimic the odor of the female moths of this species. This scent will then attract male moths, which will follow it with the expectation of finding a mate. Instead, when they arrive at the source of the scent, they will be eaten [8]. This is a case of a false message being sent out with inimical intent.
...
Along the lines of the analogy, computer event messages may be sent accidentally, erroneously and even maliciously.
This smells more like "I bet nobody ever really reads this RFC, let's put some stuff in the middle to see if they do!".
Okay, Freeview (the group that represents all of the major Free to Air Networks, including commercial and government owned) has announced that it's going to be launching a new Electronic Programme Guide service in June, complete with new hardware and something they are calling an Online Catchup Service.
Apart from the Online Catchup Service (which I will be talking about shortly) the biggest selling point that Freeview seems to be pushing for this new service is the ability to record based not only on time blocks, but by genre and programme as well.
This is what 250 million dollars buys you these days?
From the article and the reading around that I've done, it appears that the Free To Air Television industry (somewhat bizzarley aided by the ABC, an organisation that has proven time and again that it knows where the future lies) has decided that the best way to tackle the threat of extinction is to re-arrange the deck chairs on the titanic. People have had the ability to record programmes based on genre and programme titles, episode titles and so on for a few years now. If they haven't been building their own PVR's via projects like MythTV (my personal favourite), they've been using off the shelf solutions such as TiVO. It's not new people, it's old and people have been doing it for a long time now.
Hell I was there when digital came to a certain regional television network, I helped setup their first EPG generator and I can tell you that the Standard of the day, derived from the European DVB-T EPG stuff required genre information to be sent out.
Oh yes, there is something new about this particular EPG service. It's not going to be standard. In order for you to take advantage of it and the attached "Online Catchup Service", you are going to need to buy new hardware. Your set top box isn't going to be able to use any of the new features, and certainly your plasma/led/lcd tv with built in HD tuner isn't going to be able to utilise the new features being offered. Nope, you're going to have to go out and spend another couple of hundred bucks so that you can make sure you don't miss that 6 month old episode of Big Bang Theory or which ever is your Television poison.
Re the "Online Catchup Service" that appears to be a service that allows you to catchup with programmes that you've missed, online. Though I'm not quite sure if you're going to need to "catchup" given that you're going to have teh cool new "recording by genre and programme" features of the new EPG Service.
Sigh.
I’ve been doing BJJ (Brazilian Jiu Jitsu) for years. It’s a great sport and form of self-defence, but in Australia it’s dominated by men – probably putting a lot of women off starting.

This is unfortunate, as I think BJJ is one of the best forms of self defence women can do; statistically violence against women is less likely to be the “pub punchup” that guys get in and more likely to be a grab/sexual assault (either in public or in the home). In these situations, reflexively knowing how to escape from someone’s grips or fight on the ground with someone stronger and heavier on top of you is invaluable, and just by training with a stinky, sweaty guy on top of you you’re much less to likely to panic and escape the situation (The Bene Gesserit Littany against Fear – Dune).
But BJJ is also a great sport! You get a great workout (especially abs), it’s exciting and you need to think a lot (BJJ is often called “physical chess”). You share the pain and triumphs, the sweat and exhilaration, the interstate and overseas trips with your team mates, and form close friendships.
I’m now training at The Dojo in Bondi Junction with Daniel Sainty. Amongst the guys there’s 4 other women training – Eleni, Kunita, Laura and Sam. They’re all inspirational, but the one who really gets me back to training when my middle-aged joints are creaking is Sam. She’s a petite high school girl, self-described “girly-girl” and geek. She fights against the boys, gives (and receives) a good thrashing, is starting to win competitions, and is now blogging about her training. You go girl!!

BJJ is so effective that the US Army now uses it as the foundation for their Army Combatives course. Not because they want their soldiers to throw down their rifles and start up UFC-style fights with “the baddies”. Rather, they found that teaching a random collection of moves (this kick, this punch, this other kick) was ineffective for learning a “combat mindset”. The sport nature of BJJ allows for “an avenue or the motivation for continued training” as well as internalizing the “concept of a hierarchy of dominant positions”. And knowing how to rear naked choke when someone jumps on you and hangs on to your rifle is kind of handy…
See you on the mat sometime
PS a great website on Women & BJJ – Women << BJJ Girl (especially Resources)- thanks Slideyfoot.
How to connect to a Cisco device (or other serial devices) using OSX and a USB to Serial converter (eg ATEN). Googling, everyone says to use zterm, but I couldn’t get it to work (and zterm looks and feels like a toy).
This probably isn’t the “Mac way” of doing things, but </whatever>…
Install PL2303 USB to Serial Driver for Mac OS X, restart
sudo port selfupdate sudo port upgrade outdated sudo port install minicom
Work out tty of USB-Serial converter:
ls /dev/tty* > pre
Plug in USB-Serial converter.
ls /dev/tty* > pst % diff pre pst 3a4 > /dev/tty.PL2303-00002006
Link up to make life easier:
cd /dev sudo ln -s tty.PL2303-00002006 ttyusb
Setup minicom, and use colour:
sudo minicom -s -c on
Setup defaults to:
Always use colour:
Connect (sudo minicom), hit enter a few times, and you should be on the device.
Today while out with the family, we decided to purchase a treat for the kids. So we headed for the nearby donut place to purchase the required sickeningly sweet treat.
Turns out they didn't have enough of the particular sweet my son wanted, so he picked what looked like an iced donut with chocolate flakes on it. Except it wasn't called a donut, rather it was called a Yeast Ring.
This naturally caught my eye as being a somewhat risky name to give a ring of dough, so after the kids had consumed their various sweets, I thought I would get a photo of the Yeasty Rings to follow up the tweet I had already made.
Not thinking much of it, I went up to the counter and used my camera to take a couple of what turned out to be uselessly blurred photos. Gave it up as a lost effort and then went off to complete the rest of the tasks we had at the time.
45 minutes later as we exited the shopping centre a security guard approached me and asked me if I had taken any photos around the donut place earlier on. Specifically he asked if I had taken photos of a young girl who had apparently been standing close to the Yeast Rings display. Apparently the girls mother had registered a complaint, accusing me of taking photos of her girl. The guard didn't mention why this would be a problem, but the obvious implication is that I was taking photos for nefarious purposes.
It took me but a minute to explain to the guard that no, I hadn't taken photos of the girl, I hadn't even seen the girl standing there, focused as I was, on the Yeast Rings. The guard explained that they had to follow up the complaint both to calm the apparently distressed mother and for reasons of terrorism (my jaw dropped I'm sure at this one). However while I was finishing up with the guard, a police car pulled up in a nearby spot, and I was informed by the guard that I would need to talk to the officer.
Right.
Remaining calm at all times I walked over to the officer and once again went through the process of showing him that the photos I had taken were of the donut silmacra rather than the girl. The officer was pretty good about it, requesting to see through the rest of the photos, which I allowed, and then we parted ways without a request for details or anything else.
All in all the security staff and police were polite and cordial in the way that they treated me. I have since discovered however that they were actually trailing myself and my family for at least half an hour before we were approached.
Sigh.
Below are the two photos that I took:
Update (01/03/2010):
I have just received confirmation that the security personal have managed to get in contact with the woman who made the original complaint and explain that there was no substance to her complaint - something that had been playing on mind since Saturday afternoon. While this wraps up the event (and believe me I feel quite relieved), it doesn't excuse the manner in which it was dealt with. I will be writing a further letter to the centre regarding this sort of situation and ways it could have been handled better.
The ABC overhauled DIG Jazz (now I think it's just called "ABC Jazz") and upgraded from the oh-so 2008 XML playlist to a much more web-cool JSON one.
Hence Version 3 (source) of the applet. Now with improved HTML escaping and different colors.
Check out The Dilworths while you're there!
Hey here's an idea to combat the rash of idiotic facebook page "hacks" (leaving your facebook page open to all is not a hack by the way). Let's set up an Online Content Ombudsman, who shall have the power to... umm... complain to overseas companies.
Um.
Originally suggested by South Australian independent Senator Nick Xenaphon, it's been picked up by the Government to show how "pro-active" they are when it comes to dealing "Teh Evil Interwebs".
Considering that companies like Facebook and MySpace have absolutely zero Australian presence, I don't see how any Ombudsman can have any affect on their operations, unless, and this is a very scary, scary thought. The Ombudsman has the power to attach web sites to the Filter. Anything less than threatening to ban the site within the country is going to have all the persuasive power of a damp tissue.
I would love to be able to sit down with Kevin Rudd and Senator Nick, away from the cameras and explain to them how the internet works. If not me, then please can someone else do it?
Problem: You work in an organisation with locked down desktops that have stupidly short screensaver timeouts. And you’re connected via multiple rdp’s to a process that you want to keep running all day, but the timeouts keep halting the process.
Solution: an optical mouse on top of an analog watch (that has a second hand):
Take that Group Policy!
(Tip of the Hat to Stu).
After getting sick of having to underclock my existing home server to get it to remain up for any period of time, along with the horrendous noise, I finally found the time and budget to rebuild.
My goals were:
In the end I went with
The case is really awesome. Very easy to access, and the fan is extremley quiet. It very cleverly holds 3 full-size hard-disks; two mounted vertically on either side, and one horizontally in the middle. The final space is for a DVD -- after that it's pretty cramped inside! It makes claims it is a very efficient power supply.
It has a very bright blue LED on the front, and the face-plate over the DVD looks nice but the button doesn't quite reach the eject button on my drive, so it's software eject only. All over, definitely recommend.
The motherboard is fairly good. One annoying thing is that it only has 3 SATA ports -- I think it's reasonable to want to have a primary drive, two mirrored large disks plus a DVD for a nice little media server. It also has no parallel-IDE, which is reasonable these days. However, if you wanted to install a wireless card you'd be out of luck if you also wanted to put in another SATA card, as it only has one PCI slot. There are plenty of USB ports for a USB wireless card, however. It also comes with two SATA cables, which isn't mentioned anywhere I could see (hopefully this saves you a trip back to Fry's to return your extra cables :).
The CPU fan is a little on the loud side, as mentioned in some other forums. It is also located right where the power supply cables come down in this case, making for a fairly tight fit.
Here's a lspci for those interested in such things
00:00.0 Host bridge: nVidia Corporation MCP79 Host Bridge (rev b1) 00:00.1 RAM memory: nVidia Corporation MCP79 Memory Controller (rev b1) 00:03.0 ISA bridge: nVidia Corporation MCP79 LPC Bridge (rev b2) 00:03.1 RAM memory: nVidia Corporation MCP79 Memory Controller (rev b1) 00:03.2 SMBus: nVidia Corporation MCP79 SMBus (rev b1) 00:03.3 RAM memory: nVidia Corporation MCP79 Memory Controller (rev b1) 00:03.5 Co-processor: nVidia Corporation MCP79 Co-processor (rev b1) 00:04.0 USB Controller: nVidia Corporation MCP79 OHCI USB 1.1 Controller (rev b1) 00:04.1 USB Controller: nVidia Corporation MCP79 EHCI USB 2.0 Controller (rev b1) 00:06.0 USB Controller: nVidia Corporation MCP79 OHCI USB 1.1 Controller (rev b1) 00:06.1 USB Controller: nVidia Corporation MCP79 EHCI USB 2.0 Controller (rev b1) 00:08.0 Audio device: nVidia Corporation MCP79 High Definition Audio (rev b1) 00:09.0 PCI bridge: nVidia Corporation MCP79 PCI Bridge (rev b1) 00:0b.0 IDE interface: nVidia Corporation MCP79 SATA Controller (rev b1) 00:10.0 PCI bridge: nVidia Corporation MCP79 PCI Express Bridge (rev b1) 00:15.0 PCI bridge: nVidia Corporation MCP79 PCI Express Bridge (rev b1) 01:05.0 RAID bus controller: Silicon Image, Inc. PCI0680 Ultra ATA-133 Host Controller (rev 02) 02:00.0 VGA compatible controller: nVidia Corporation ION VGA (rev b1) 03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
I know there are issues with the controller of the Patriot SSD, which would probably worry me for a general purpose machine. However for the primary disk of a server machine I'm not too fussed. The silence is golden and cool-running and low power consumption really helps too. I wouldn't really say it seems that blazing fast. It comes with a handy mount so it fits in a full-size hard-disk slot. Hard to beat for the price.
One concession I made to avoid excessive writes was mounting /tmp on tmpfs; this is where it's nice to have 4GB of RAM. Handbrake seems to do a lot of work in /tmp for example.
The two green hard-disks (software mirrored) are also inaudible. I'm hoping different brands should at least not fail at the same time. I'm not sure if they're auto-spinning down, but you can't really tell if they're on or not, even under load.
Even when running flat-out re-encoding a DVD in the enclosed cabinet with minimal airflow the CPU temperature hasn't gone above 60C; normal CPU temp is around 40C. Performance is adequate -- running PlayOn in a VMware workstation XP VM almost works.
It's kind of hard to take photos inside a case, but here's an attempt:
Debian unstable installed without issues (except for some weird bug with the boot hanging for 60 seconds due to the RTL driver). It is also very strange installing from USB to an SSD — no noise!
We've both played Enemies of the State.
Seriously, according to this article the IIPA (International Intellectual Property Alliance) has requested that the US Trade Representative place countries that mandate, or (and here's the kicker) even suggest the use of Open Source software be placed on a special list of countries that have lax intellectual property regimes (read Pirate Havens).
Note that this is not just a case of sneaking in the Open Source thing amongst a number of other reasons, the IIPA is explicitly claiming that even thinking about using Open Source software in Government is tantamount to destroying the global software industry, letting the Goths into Rome and scheduling a 7 day, 24 hour run of Home and Away on every single channel.
So according to the IIPA, I as a purveyor of Open Source solutions am leading to the delinquency of governments world wide, using my awesome "Powahs! (tm)" to drive poor innocent multi-nationals to the wall.
Sigh.
(This article comes from one I helped edit and publish inside work, so I can't take any credit for the ideas expressed within, though I do vehemently and violently subscribe to the sentiment! Thanks to Alan Sundell for originally educating me.)
When you set (or don't set at all) MAILTO in a crontab fragment, typically it's because you want to be notified if your job fails -- failure in this case if and only if the job only prints to stdout/stderr if there is an exceptional condition... However not all jobs print only on exceptional conditions, many use stderr for logging, and email is just not a great solution to this problem, especially at scale.
cron. Why is it a bad idea to rely on cron mail?
crond can crash.
If a cronjob running successfully is critical to operation, then it seems that what you really need is some kind of monitoring system that addresses all of these things, and can send alerts to some oncall rotation that determines who is responsible for handling alerts.
Here's an idea that might help with that.
Direct the output of your job to some log file for debugging, in the event of persistent failure. Note the truncate:
MAILTO=""
*/1 * * * * root cronjob > /var/log/cronjob.log 2>&1
(If you decide to appent, not overwrite the log each execution, then make sure you logrotate that file.)
At the end of cronjob, update a status file, like so:
scriptname=$(basename $0)
date +%s > /var/tmp/cronjob-last-success-timestamp
Ensure that your job exits on error before reaching the last line!
Collect the content of that file regularly with your monitoring system; scrape it with the nagios host agent, pump it into collectd, whatever you hip open source cats are using these days.
Configure your monitoring system to send a notification on the timestamp having not been updated in some time period.
if cronjob-last-success-timestamp
<
(time() - 30m)
then alert
Profit!
Now you only generate an alert if the cron job hasn't succeeded in the last 30 minutes (a threshold you can adjust to match your monitoring scrape intervals and service SLAs), and with a sufficiently mature monitoring system you can now express dependencies, suppress the notification, and send it to an oncall rotation, and so on!
Most significantly, we have converted a system that always reported failure, into a system that is based around checking for success -- a failsafe.
I’ve been hearing a lot of buzz about IPTV lately. It’s something that is exciting, useful, and inevitable.
As I understand it, IPTV is defined to be a live television service delivered over multicast (usually RTP) over a broadband Internet connection. Multicast has an advantage over normal traffic (“unicast”) because it avoids the duplication of traffic. Only one copy of the data is ever sent.
TPG currently offer 19 channels over an IPTV service, and TransACT allegedly offer over 50. iiNet is “on the brink of IPTV launch”. There are rumours that Internode are investigating something similar too.
That last paragraph should have triggered alarm bells in your head. It did for me, but maybe I’m just a cynic. Let me explain.
I asked myself: why are the ISPs providing the IPTV service? It sounds wrong to me. I’ve tried to come up with an answer, and my conclusion is that it is because of two reasons: (1) infrastructure (multicast is virtually non-existant in most production networks) and (2) content lock-in.
Having the ISPs provide the infrastructure for the IPTV service (marketing, encoding, distribution, etc.) means the ISP will likely sign a contract to exclusive usage rights with the TV partner for each channel they will provide. If iiNet sign an exclusive deal with Sky News, they sure as heck ain’t going to let Internode or TPG also put the content on their networks.
The infrastructure would also be duplicated. Each ISP needs their own TV receiving equipment (likely a few satellite dishes on top of their data centre), encoding equipment, marketing, private IP multicast network, and whatnot.
With regards to content lock-in, this will also mean that the ISP you choose to use will determine what IPTV channels you are able to watch. Conversely, what IPTV channels you want to watch will determine which ISP you will sign up with.
That sounds all rosy, until you consider that I am not restricted on what websites I can visit based on what ISP I am with. I can watch YouTube or ABC iView from any ISP in Australia. Sure, some ISPs offer better services than others, faster speeds, or more reliable connections, but it’s just the one Internet. This is because the ISP is not in the content provider role. They are merely the gateway to the Internet — the Internet service provider (now where have I heard that term before?).
The way IPTV looks like it is heading is shifting the ISP onto the content provider role. As I’ve already said, this means the service is delivered over the ISP’s private network, available exclusive to that ISP’s customers, and not over the Internet. That’s a Bad Thing™ in terms of net neutrality.
If an ISP “rebroadcasts” content from an IPTV channel that another ISP has signed an exclusive deal on, that would be a copyright violation.
But that still doesn’t explain the title of my post: “Multicast versus IPTV”. The above isn’t actually the crux of what I wanted to get at (apologies to the reader if you’ve managed to read this far in great detail).
I’m supportive of multicast in general. Combined with IPv6 (each /64 subnet has a corresponding multicast subnet), multicast opens up the doorway for anybody to serve high definition audio and video to the Internet at large without the need for exorbitant amounts of bandwidth up their sleeve.
But that’s public multicast. These “IPTV” solutions will be, and currently are, deployed on private multicast networks. On the plus site, private multicast networks mean it is easier for the ISP to deploy the infrastructure — it’s much easier to only have to worry about your own network, than also have to worry about interfacing with others. But it also means less incentive to deploy a public multicast infrastructure, and less incentive for content providers (such as TV networks) to provide their services over multicast themselves. It’s a chicken-and-egg problem.
We don’t need ISPs to “provide IPTV services”. We need a decent multicast network (preferably IPv6) that all Australians can access, so that TV stations themselves can provide the multicast streams with the knowledge that a large percentage of Internet subscribers are able to access their content, and that channel availability discrimination does not occur based on what ISP you choose to sign up with.
That’s the crux of what I’m getting at. I’m sure someone will come along and say “but but but…they have a right to sign exclusive contracts and deliver only over private networks”. My response to that would be that just because you have the right, doesn’t make it right. Nor left.
Thoughts?
I am about to embark on the reading of 2 x Microsoft Press books to attempt two Microsoft certification exams. More details on these as time goes on, but for now the story is about the book prices.
Locally the books cost about over $100 for one. Looking on Amazon the books I wanted had list prices of $44 USD and $37 USD. Oddly enough I ended up getting both with postage for about $127 AUD.
It’s an easy decision, buy from Amazon, get both books and have to wait up to a month.
Will post back my experience, I’ve heard others say Amazon has been a pleasure experience to purchase from.
Today, I was invited to give a talk at my old workplace CSIRO about the HTML5 media elements and accessibility.
A lot of the things that have gone into Ogg and that are now being worked on in the W3C in different working groups – including the Media Fragments and HTML5 WGs – were also of concern in the Annodex project that I worked on while at CSIRO. So I was rather excited to be able to report back about the current status in HTML5 and where we’re at with accessibility features.
Check out the presentation here. It contains a good collection of links to exciting demos of what is possible with the new HTML5 media elements when combined with other HTML features.
I tried something now with this presentation: I wrote it in a tool called S5, which makes use only of HTML features for the presentation. It was quite a bit slower than I expected, e.g. reloading a page always included having to navigate to that page. Also, it’s not easily possible to do drawings, unless you are willing to code them all up in HTML. But otherwise I have found it very useful for, in particular, including all the used URLs and video element demos directly in the slides. I was inspired with using this tool by Chris Double’s slides from LCA about implementing HTML 5 video in Firefox.
If you decide to run collectd on your system, don’t do what I did: I ran it for 8 months without caching enabled. Basically, that means that not only was collectd monitoring load, it was generating a huge amount of load itself — way more than anything else running on the system.
Case in point:

The “no caching” bit is what it’s been running like for 8 months, using this config in /etc/collectd/collectd.conf:
<Plugin rrdtool>
DataDir "/var/lib/collectd/rrd"
</Plugin>
To more than half my idle CPU usage, and get my load averages back down to near 0.00, all I had to do was add:
<Plugin rrdtool>
DataDir "/var/lib/collectd/rrd"
CacheTimeout 120
CacheFlush 900
</Plugin>
I don’t get why they don’t ship it like that by default. Enable caching. Your server will thank you. Thanks to the folks on #slug who held my hand while fixing this.

Josephine's Cheese, given your site has no contact information, and doesn't even display the product I bought, I'll have to howl into the aether and assume you'll find it when I SEO your arse (given Google doesn't even see your image-only site, that won't be hard).
So I bought your "Traditional Goat's Cheese in Ash" last week. It was delicious. Unfortunately your packaging is abysmal. After very carefully peeling off the label, you're presented with this tube of squished cheese. If you take care from this point, and happen to have scissors or a sharp knife handy, you can just about get a single blob of cheese out ready to serve. More likely you'll end up with more like a tube of cheese toothpaste squirted out onto your serving location.
Great cheese. I won't buy it again in this packaging. Buy your competitors' products and learn.
The South Coast Linux Users Group (SCLUG) website has had a lick of paint by yours truly.
The old site didn’t look bad (in particular, I liked the penguin header image), but was getting a little long in the tooth, had a few issues (such as broken category styles, and images being linked to the wrong domain), and didn’t really reflect much about Wollongong, which is where we are based.
So a little Inkscaping later, I came up with this:
Check it out. No, like, seriously. Check it out. A bit more polish to come, but the idea is there.
Since On2 Technology’s stockholders have approved the merger with Google, there are now first requests to Google to open up VP8.
I am sure Google is thinking about it. But … what does “it” mean?
Freeing VP8
Simply open sourcing it and making it available under a free license doesn’t help. That just provides open source code for a codec where relevant patents are held by a commercial entity and any other entity using it would still need to be afraid of using that technology, even if it’s use is free.
So, Google has to make the patents that relate to VP8 available under an irrevocable, royalty-free license for the VP8 open source base, but also for any independent implementations of VP8. This at least guarantees to any commercial entity that Google will not pursue them over VP8 related patents.
Now, this doesn’t mean that there are no submarine or unknown patents that VP8 infringes on. So, Google needs to also undertake an intensive patent search on VP8 to be able to at least convince themselves that their technology is not infringing on anyone else’s. For others to gain that confidence, Google would then further have to indemnify anyone who is making use of VP8 for any potential patent infringement.
I believe – from what I have seen in the discussions at the W3C – it would only be that last step that will make companies such as Apple have the confidence to adopt a “free” codec.
An alternative to providing indemnification is the standardisation of VP8 through an accepted video standardisation body. That would probably need to be ISO/MPEG or SMPTE, because that’s where other video standards have emerged and there are a sufficient number of video codec patent holders involved that a royalty-free publication of the standard will hold a sufficient number of patent holders “under control”. However, such a standardisation process takes a long time. For HTML5, it may be too late.
Technology Challenges
Also, let’s not forget that VP8 is just a video codec. A video codec alone does not encode a video. There is a need for an audio codec and a encapsulation format. In the interest of staying all open, Google would need to pick Vorbis as the audio codec to go with VP8. Then there would be the need to put Vorbis and VP8 in a container together – this could be Ogg or MPEG or QuickTime’s MOOV. So, apart from all the legal challenges, there are also technology challenges that need to be mastered.
It’s not simple to introduce a “free codec” and it will take time!
Google and Theora
There is actually something that Google should do before they start on the path of making VP8 available “for free”: They should formulate a new license agreement with Xiph (and the world) over VP3 and Theora. Right now, the existing license that was provided by On2 Technologies to Theora (link is to an early version of On2’s open source license of VP3) was only for the codebase of VP3 and any modifications of it, but doesn’t in an obvious way apply to an independent re-implementations of VP3/Theora. The new agreement between Google and Xiph should be about the patents and not about the source code. (UPDATE: The actual agreement with Xiph apparently also covers re-implementations – see comments below.)
That would put Theora in a better position to be universally acceptable as a baseline codec for HTML5. It would allow, e.g. Apple to make their own implementation of Theora – which is probably what they would want for ipods and iphones. Since Firefox, Chrome, and Opera already support Ogg Theora in their browsers using the on2 licensed codebase, they must have decided that the risk of submarine patents is low. So, presumably, Apple can come to the same conclusion.
Free codecs roadmap
I see this as the easiest path towards getting a universally acceptable free codec. Over time then, as VP8 develops into a free codec, it could become the successor of Theora on a path to higher quality video. And later still, when the Internet will handle large resolution video, we can move on to the BBC’s Dirac/VC2 codec. It’s where the future is. The present is more likely here and now in Theora.
ADDITION:
Please note the comments from Monty from Xiph and from Dan, ex-On2, about the intent that VP3 was to be completely put into the hands of the community. Also, Monty notes that in order to implement VP3, you do not actually need any On2 patents. So, there is probably not a need for Google to refresh that commitment. Though it might be good to reconfirm that commitment.
The Australian Federal Minister for Communications, Stephen Conroy, may not actually be corrupt; I certainly have no evidence that he is, but a number of recent incidents sure look like corruption to me. For instance:
The real irony is that under Conroy's proposed scheme to filter the internet in Australia comments like this blog entry may end up being censored. The problem with Conroy's filter is not that it filters porn, but rather that the list of what is being filtered is secret and hence could easily include web sites which contain comments which the government or the Minister for Communications want silenced.
This blog is officially IPv6–enabled, as of a few days ago.
The server-side IPv6 connectivity is admittedly powered by 6to4, which is not quite the real deal, but given that the nearest 6to4 gateway is 0.8msec away, I couldn’t very well pass the opportunity to stress test my new Linode.
I’m a pretty firm believer in the fact that IPv6 adoption is absolutely essential to the continued health and function of the Internet. I’ve been IPv6 tunneling from my house for years, had native IPv6 at my house since November, and though I’m certainly not the first to do so, it’s time to IPv6–enable my blog.
At the recent FOMS/LCA in Wellington, New Zealand, we talked a lot about how Ogg could support accessibility. Technically, this means support for multiple text tracks (subtitles/captions), multiple audio tracks (audio descriptions parallel to main audio track), and multiple video tracks (sign language video parallel to main video track).
Creating multitrack Ogg files
The creation of multitrack Ogg files is already possible using one of the muxing applications, e.g. oggz-merge. For example, I have my own little collection of multitrack Ogg files at http://annodex.net/~silvia/itext/elephants_dream/multitrack/. But then you are stranded with files that no player will play back.
Multitrack Ogg in Players
As Ogg is now being used in multiple Web browsers in the new HTML5 media formats, there are in particular requirements for accessibility support for the hard-of-hearing and vision-impaired. Either multitrack Ogg needs to become more of a common case, or the association of external media files that provide synchronised accessibility data (captions, audio descriptions, sign language) to the main media file needs to become a standard in HTML5.
As it turn out, both these approaches are being considered and worked on in the W3C. Accessibility data that are audio or video tracks will in the near future have to come out of the media resource itself, but captions and other text tracks will also be available from external associated elements.
The availability of internal accessibility tracks in Ogg is a new use case – something Ogg has been ready to do, but has not gone into common usage. MPEG files on the other hand have for a long time been used with internal accessibility tracks and thus frameworks and players are in place to decode such tracks and do something sensible with them. This is not so much the case for Ogg.
For example, a current VLC build installed on Windows will display captions, because Ogg Kate support is activated. A current VLC build on any other platform, however, has Ogg Kate support deactivated in the build, so captions won’t display. This will hopefully change soon, but we have to look also beyond players and into media frameworks – in particular those that are being used by the browser vendors to provide Ogg support.
Multitrack Ogg in Browsers
Hopefully gstreamer (which is what Opera uses for Ogg support) and ffmpeg (which is what Chrome uses for Ogg support) will expose all available tracks to the browser so they can expose them to the user for turning on and off. Incidentally, a multitrack media JavaScript API is in development in the W3C HTML5 Accessibility Task Force for allowing such control.
The current version of Firefox uses liboggplay for Ogg support, but liboggplay’s multitrack support has been sketchy this far. So, Viktor Gal – the liboggplay maintainer – and I sat down at FOMS/LCA to discuss this and Viktor developed some patches to make the demo player in the liboggplay package, the glut-player, support the accessibility use cases.
I applied Viktor’s patch to my local copy of liboggplay and I am very excited to show you the screencast of glut-player playing back a video file with an audio description track and an English caption track all in sync:
elephants_dream_with_audiodescriptions_and_captions
Further developments
There are still important questions open: for example, how will a player know that an audio description track is to be played together with the main audio track, but a dub track (e.g. a German dub for an English video) is to be played as an alternative. Such metadata for the tracks is something that Ogg is still missing, but that Ogg can be extended with fairly easily through the use of the Skeleton track. It is something the Xiph community is now working on.
Summary
This is great progress towards accessibility support in Ogg and therefore in Web browsers. And there is more to come soon.
I was pondering the supposed reason behind the recent fee rebate the Government is giving to the TV networks, that Australian Content needs to be developed and played on our air waves, when a question arose.
How much "Australian Content" is generated online? If you took the podcasts, blog posts, music and videos generated by Australians for online consumption, how would they stack up against the "Traditional Media"?
Does anyone know if any studies have been done on this?
Oh and I've added the spam module and turned off comment moderation, let's see how this goes.
Recently, I was asked for some help on coding with an HTML5 video element and its events. In particular the question was: how do I display the time position that somebody seeked to in a video?
Here is a code snipped that shows how to use the seeked event:
<video onseeked="writeVideoTime(this.currentTime);" src="video.ogv" controls></video>
<p>position:</p><div id="videotime"></div>
<script type="text/javascript">
// get video element
var video = document.getElementsByTagName("video")[0];
function writeVideoTime(t) {
document.getElementById("videotime").innerHTML=t;
}
</script>
Other events that can be used in a similar way are:
Please refer to the actual event list in the specification for more details and more accurate information on the events.
I watch lots of (martial arts) instructional videos. Something I’ve always wanted to do is “mashup” my own videos ie take a few chapters from one video, a few chapters from another video. Now I know how – handbreakcli:
First, rip the vobs off the dvd. You can work directly off the dvd with handbreak, but working from the hard-disk is often easier. I use dd_rescue for unencrypted dvds. (For scratched dvds, I’ve been using motorbike visor cleaner to remove the scratches, and myrescue).
for i in /media/cdrom/VIDEO_TS/* ; do j=`basename $i` dd_rescue $i $j done
Use handbrakecli to scan the disk to find the titles and chapters:
./handbrake -i cd1/VIDEO_TS -t 0
Then convert to mp4’s split on chapters (in this case I’m taking chapters 2-18 from title 2, as individual files):
for i in `seq 2 18` ; do
./handbrake -i cd1/VIDEO_TS/ -t 2 -c $i -o cd1.t2.c${i}.mp4
done
Thanks to EngageMedia for their great articles. Another good site is videohelp.com
Dell has been offering Ubuntu on selected models for a while. I had however nearly given up hope on being able to buy one, because they hadn’t started doing that in Australia. I am very glad to see this has changed though – check out their notebook page. Not all models yet, but a reasonable number have Ubuntu as an option.
Yay!
Sydney has been getting a fair bit of rain of late. Each weekend we have managed to get a bit of rain too. Which means being unable to do much outside.
On the upside, the grass seems to be growing so fast it’s hard to believe. Problem is, you mow the lawn and then within days of doing so it’s needing another mow. All we need now is for the rain to ease up a bit so that those lawns can get another trip.
I’d love to be able to run the remote control car a little more, haven’t had the chance to do so due to the weather. Managed a short go late today and then we got a serious storm in the late afternoon.
I wish I got a video clip of the water tank overflowing. The rain was very heavy and the tank was overflowing with a very high flow rate of water. Pretty impressive to see, but shame we didn’t have another tank to collect all that water. Oh well.
Managed to get a replacement air compressor today and a friend gave me a tyre pressure attachment, so I can pump up my car tyres when I want. No more need to visit the garage to use the tyre pump. Sweet.
Let me ask you a question.
Which is worse:
A minister who oversees an infrastructure programme that relies upon State standards bodies to police the work (building codes being State responsibilities). Under this programme there have been a number of deaths (3) and faulty installations (houses burning down) due to participants not working to minimum standards.
A minister who meets with the head of one of the very large and wealthy companies directly affected by his ministry (whilst on holidays, so not part of his official duties). Soon after this meeting, said minister announces between $250 and $500 million dollars in rebates for the industry (depending on how well said industry performs gross revenue wise).
To be honest I'm not sure which one is worse.
Peter Garrett has been copping a shelacking this week over the three deaths and numerous house fires that have occured as a result of the shoddy work practices of some of those taking part in the Home Insulation Programme (yes it is HIP to be square). Tony Abbott went so far as to accuse Garrett of "industrial manslaughter", a charge normally brought against company directors who knowingly encourage work practices that lead to death in the workplace.
However what no one seems to have been doing is asking the State bodies responsible for policing building and construction practices. It is their direct responsibility to ensure that their rules and regulations are followed, not the federal governments. So while Garrett can legitimately be hauled over the coals for not including regular and random checks and audits (which should have been considered over and above the State requirements), ultimately the responsibility for these tragic events lie with the businesses and State regulatory bodies.
If you really want to have a go at Garrett then the green loans (with no checks to see if the money is being spent on green anything) would be a much better place to look.
Let's move on to Senator Conroy shall we. Last week he announced that he would be giving the Television networks in Australia a cut in their license fees of 33% for 2010 and 50% in 2011. Given that license fees are calculated at 9% of Gross Revenue, this could mean anything between $250 million and $500 million will be gouged out of the budget for the next two years. The justification given at the time was to help preserve Australian Content, however there isn't any such condition in the rebate and Australian TV Networks are already obliged under law to carry 55% Australian content (which is why we're seeing a huge explosion in "Real TV" type programming).
Now it turns out that Conroy and Channel 7 head Kerry Stokes ran into each other a month before the announcement was made. On a skiing trip in Colorado no less. Both Stokes and Conroy are refusing to say what was discussed at this meeting. For all we know they were discussing the latest in Apre Ski fashions, or possibly their chances in that nights Chalet karaoke night competition. However as both a Minister and a seasoned political operator (I don't like the man but he's managed to stay around this long), Conroy should have known better than to meet with the head of one of the major players affected by his portfolio like that.
Oh and we can't leave this week in politics without a word about everyones favourite National Party member. Barnaby has been in fine form this week, going from confusing his millyuns with his billyuns (and for those who are trying to cover for him, he's CPA, he should know the difference), to trying to spook the market by declaring that Australia is on the brink of defaulting on its foreign debt. Well done Mr Joyce. Oh and if you want to have a look at what a country that is staring default in the face looks like? Have a look at Greece.
I have talked a lot about synchronising multiple tracks of audio and video content recently. The reason was mainly that I foresee a need for more than two parallel audio and video tracks, such as audio descriptions for the vision-impaired or dub tracks for internationalisation, as well as sign language tracks for the hard-of-hearing.
It is almost impossible to introduce a good scheme to deliver the right video composition to a target audience. Common people will prefer bare a/v, vision-impaired would probably prefer only audio plus audio descriptions (but will probably take the video), and the hard-of-hearing will prefer video plus captions and possibly a sign language track . While it is possible to dynamically create files that contain such tracks on a server and then deliver the right composition, implementation of such a server method has not been very successful in the last years and it would likely take many years to roll out such new infrastructure.
So, the only other option we have is to synchronise completely separate media resource together as they are selected by the audience.
It is this need that this HTML5 accessibility demo is about: Check out the demo of multiple media resource synchronisation.
I created a Ogg video with only a video track (10m53s750). Then I created an audio track that is the original English audio track (10m53s696). Then I used a Spanish dub track that I found through BlenderNation as an alternative audio track (10m58s337). Lastly, I created an audio description track in the original language (10m53s706). This creates a video track with three optional audio tracks.
I took away all native controls from these elements when using the HTML5 audio and video tag and ran my own stop/play and seeking approaches, which handled all media elements in one go.
I was mostly interested in the quality of this experience. Would the different media files stay mostly in sync? They are normally decoded in different threads, so how big would the drift be?
The resulting page is the basis for such experiments with synchronisation.
The page prints the current playback position in all of the media files at a constant interval of 500ms. Note that when you pause and then play again, I am re-synching the audio tracks with the video track, but not when you just let the files play through.
I have let the files play through on my rather busy Macbook and have achieved the following interesting drift over the course of about 9 minutes:
You will see that the video was the slowest, only doing roughly 540s, while the Spanish dub did 560s in the same time.
To fix such drifts, you can always include regular re-synchronisation points into the video playback. For example, you could set a timeout on the playback to re-sync every 500ms. Within such a short time, it is almost impossible to notice a drift. Don’t re-load the video, because it will lead to visual artifacts. But do use the video’s currentTime to re-set the others. (UPDATE: Actually, it depends on your situation, which track is the best choice as the main timeline. See also comments below.)
It is a workable way of associating random numbers of media tracks with videos, in particular in situations where the creation of merged files cannot easily be included in a workflow.
So, we wanted to move a Hudson CI server at Canonical from using chroots to VM’s (for better isolation and security), and there is this great product Ubuntu Enterprise Cloud (UEC – basically Eucalyptus). To do this I needed to make some changes to the Hudson EC2 plugin – and thats where the fun starts. While I focus on getting Hudson up and running with UEC in this post, folk generally interested in the differences between UEC and EC2, or getting a single-machine UEC instance up for testing should also find this useful.
Firstly, getting a test UEC instance installed was a little tricky – I only had one machine to deploy it on, and this is an unusual configuration. Nicely though, it all worked, once a few initial bugs and misconfiguration items got fixed up. I wrote up the crux of the outcome on the Ubuntu community help wiki. See ‘1 Physical system’. The particular trap to watch out for seems to be that this configuration is not well tested, so the installation scripts have a hard time getting it right. I haven’t tried to make it play nice with Network Manager in the loop, but I’m pretty sure that that can be done via interface aliasing or something similar.
Secondly I needed to find out what was different between EC2 and UEC (Note that I was running on Karmic (Ubuntu 9.10) – so things could be different in Lucid). I couldn’t find a simple description of this, so this list may be incomplete:
So the next step then is to modify the Hudson EC2 plugin to support these differences. Fortunately it is in Java, and the Java community has already updated the various libraries (jets3t and typica) to support UEC – I just needed to write a UI for the differences and pass the info down the various code paths. Kohsuke has let me land this now even though it has an average UI (in rev 27366), and I’m going to make the UI better now by consolidating all the little aspects into a couple of URL’s. Folk comfortable with building their own .hpi can get this now by svn updating and rebuilding the ec2 plugin. We’ve also filed another bug asking for a single API call to establish the endpoints, so that its even easier for users to set this up.
Finally, and this isn’t a UEC difference, I needed to modify the Hudson EC2 plugin to work with the ubuntu user rather than root, as Ubuntu AMI’s ship with root disabled (as all Ubuntu installs do). I chose to have Hudson reenable root, rather than making everything work without root, because the current code paths assume they can scp things as root, so this was less disruptive.
With all that done, its now possible to configure up a Hudson instance testing via UEC nodes. Here’s how:
cat >> /etc/apt/sources.list << EOF deb http://archive.ubuntu.com/ubuntu/ karmic multiverse deb http://archive.ubuntu.com/ubuntu/ karmic-updates multiverse deb http://archive.ubuntu.com/ubuntu/ karmic-security multiverse EOF export http_proxy=http://192.168.1.1:8080/ export DEBIAN_FRONTEND=noninteractive apt-get update echo "buildd shared/accepted-sun-dlj-v1-1 boolean true" | debconf-set-selections apt-get install -y -f sun-java6-jre
Note that I have included my local HTTP proxy there – just remove that line if you don’t have one.
Note that Hudson will try to use java from s3 if you don’t install it, but that won’t work right for a few reasons – I’ll be filing an issue in the Hudson tracker about it, as thats a bit of unusual structure in the existing code that I’m happier leaving well enough alone
.
File Under: Stuff I'm guaranteed to forget if I don't write it down
I just went a bit wild and decided to get myself some mobile broadband love -- I'm finding that I crave a bit of light 'net when I'm out and about, and an impending change in circumstances will mean that I'm out and about a lot more than I am currently.
I have:
My wvdial.conf stanza looks like:
[Dialer virgin] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Init3 = AT+CGDCONT=1,"IP" "VirginBroadband" Stupid Mode = 1 ISDN = 0 Phone = *99# Modem = /dev/ttyUSB0 Modem Type = USB Modem Username = irrelevant Dial Command = ATDT Password = irrelevant Baud = 460800
I also had to disable CHAP (by putting -chap in /etc/ppp/options, although I suspect the same would have worked in /etc/ppp/peers/wvdial).
After that, a simple sudo wvdial virgin and I was away.
Scarily enough, there was actually some useful information on the Virgin support site regarding the settings, which helped me confirm that I was on the right track. I have no doubt that the universe will find some alternate means of punishing me down the line.
You know something, there are a lot of us working to try and educate and inform our family, friends and communities about the dangers and inadequacies of the proposed mandatory ISP filtering scheme. We're actually talking to people, explaining the issues as they stand and answering questions.
We're also trying to get the media to move away from the over-simplistic "It's all about the Child Porn" angle to look at the real problems with the scheme.
All that work however is being hampered by the kind of activities conducted today by a group of people calling themselves Anonymous. In their wisdom, they decided that they needed to take more direct action. So, in the spirit of attacking censorship on the internet they declared they would be attempting a Denial of Service attack on a number of Government web sites, and at the same time conducting a "blackfax" campaign and other activities of a similar type against various Government offices.
In essence they were going to declare to the Australian government that any attempt to bring regulation to the internet would be met with attacks on government infrastructure.
This sort of short sighted ill thought out protest annoys me on a couple of levels. Firstly it cuts the ground out from under those of us who have been working for a long time to try and change this policy. By acting in such an irresponsible manner, Anonymous has given the media a sensational angle which has and will be used to counter the more cogent and reasoned arguments against the filter. Now, along side the infamous "If you're against the filter you must be for Child Porn" we'll have "Opponents against the filter are evil hackers only concerned with getting access to porn".
Secondly, speaking as a system-administrator and IT worker, these sort of attacks annoy the living hell out of me. The create work, not for the people responsible for the policy you are protesting against, but for the IT staff instead. Not only do they have to deal with the immediate effects of the protest (infrastructure issues and so on), but they also have to spend many hours after any such attack ensuring that nothing more sinister than a DoS was conducted against their infrastructure.
So in the end, Anonymous will have brought attention to themselves, created a link between the Open Internet movement and illegal protests and generally caused problems for everyone concerned.
If only they could get involved in the discussion rather than standing outside yelling obscenities.
Looking at using google apps for my home email, as I want to be able to have my home machines totally turned off from time to time.
Found this interesting gem in the sign up agreement (which I have not yet agreed to
):
11. PR. Customer agrees not to issue any public announcement regarding the existence or content of this Agreement without Google’s prior written approval. Google may (i) include Customer’s Brand Features in presentations, marketing materials, and customer lists (which includes, without limitation, customer lists posted on Google’s web sites and screen shots of Customer’s implementation of the Service) and (ii) issue a public announcement regarding the existence or content of this Agreement. Upon Customer’s request, Google will furnish Customer with a sample of such usage or announcement.
This is rather asymmetrical: If I agree to the sign up page, I cannot say ‘I am using google apps’, but google can say ‘Robert is using google apps’. While I can appreciate not wanting to be dissed on if something goes wrong, this is very much not open! A couple of implications: Everyone seeking support for google apps in the apps forums is probably in violation of the sign up agreement; we can assume that anyone having a terrible experience has been squelched under this agreement.
Le sigh.
Wow, I can’t believe it has been over two years since I last wrote about Android’s for of the QEMU emulator. Turns out there have been some changes since I last looked at it.
The most important is that the Android emulator no longer has a
fixed layout of devices in the physical memory address space. So,
while it may have previously been the case that the event device was
always at 0xff007000, now it might be at
0xff008000, or 0xff009000, depending on what
other devices have been configured for a particular device
configuration.
Now, if a device may exist at some random physical address, how
does the OS know how to setup the devices drivers? Well, as I’m
sure you’ve guessed, the addresses and really random, they
are located at page-offset addresses through a restricted range of
memory. OK, so how does the OS know what the range is? Well, there is
the goldfish_device_bus device.
Basically, this device provides a mechanism to enumerate the
devices on the bus. The driver writes PDEV_BUS_OP_INIT to
the PDEV_BUS_OP register, the
goldfish_device_bus then raises an interrupt. The driver
the reads the PDEV_BUS_OP register. Each time the value
is PDEV_BUS_OP_ADD_DEV, the driver can read the other
registers such as PDEV_BUS_IO_BASE,
PDEV_BUS_IO_SIZE, PDEV_BUS_IRQ, to determine
the properties of the new device. It continues doing this until it
reads a PDEV_BUS_OP_DONE, which indicates the bus scan
has finished.
The driver can determine what type of device it has found by
writing a pointer to the PDEV_BUS_GET_NAME register. When
this happens the device writes an the device’s name (as an ASCII
string) to the pointer.
Linux uses these strings to perform device to driver matching as described in the Platform Devices and Drivers document.