Sat 28th Feb 2009 @ 23:24 2009: The First Emoticon... earlier than you thought!
Tradition has it that Scott Fahlman invented the emoticon on 19th September 1982.
However, it now seems that Abraham Lincoln used ";)" back in 1862, 120 years earlier than previously known:
![]()
Mon 23rd Feb 2009 @ 23:37 2009: The Pirate Bay

The PirateBay are publishing a cartoon (click to enlarge) about the threat that modern technology brings to the creative industries.... from Radio, to TV, to Audio tapes, to VHS, to the Internet.
Mon 23rd Feb 2009 @ 22:56 2009: Facebook Group
I've created a Facebook group:
Unix Scripters of the world Unite!
I have no idea if there is any interest in such a group, or what it might (or might not) be useful for. So, let's create it, and see if anything happens. If not, it's only a bunch of ones and zeroes....
Thu 19th Feb 2009 @ 00:57 2009: Print to other people's printers
Here are random unsecured HP Printers.
Presumably, the printer will be capable of logging your IP address, so if you start randomly printing garbage to other people's printers, they would (in principle) be capable of tracing you.
PS. I find myself uncertain as to the placement of the apostrophe in "peoples"; I know that "childrens'" is irregular, but what about "peoples'" vs "people's"? Anybody confident enough to provide a definitive statement on that?
Fri 13th Feb 2009 @ 23:23 2009: MySQL bind-address (was skip-networking)
This may well be due to my lack of experience with MySQL, but it appears to me that my Debian "sid" Database machine installed an update today (I hadn't updated it for a while, so this could be a few weeks old already), which changed the way that MySQL deals with its privacy. And in a very silly way.
The old regime was to use "skip-networking" in my.cnf, which would get MySQL to use UNIX sockets and bypass TCP/IP entirely. That's great for a LAMP solution; your database can't even connect to the network, let alone be exploited over the internet.
This has now changed to having a "bind-address = 127.0.0.1" (ie, localhost). That's a pain if you want to use the database from a remote web server, but also configure the database using PhpMyAdmin. In fact, it's just a general pain and a very silly default, IMNSVHO.
Googling for this information provides some very silly responses. The correct solution, if you want to listen on all available interfaces (localhost and external addresses), appears to be to bind to the address 0.0.0.0:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
bind-address=0.0.0.0
Thu 12th Feb 2009 @ 00:06 2009: 1234567890 is nearly upon us!
I have only just become aware of this....
UNIX (and therefore various other) systems count the current date relative to midnight, 1st Jan 1970. This date is known as the Epoch. Negative dates can go back before then, positive dates after:
$ date -u -d '@0'
Thu Jan 1 00:00:00 UTC 1970
$ date -u -d '@1'
Thu Jan 1 00:00:01 UTC 1970
$ date -u -d '@-1'
Wed Dec 31 23:59:59 UTC 1969
$
$ date -u -d '@1234567890'
Fri Feb 13 23:31:30 UTC 2009
$ date -u -d '@1234569600'
Sat Feb 14 00:00:00 UTC 2009
$

Wed 11th Feb 2009 @ 00:39 2009: This is why schools must teach maths well
http://thecakescraps.com/2008/09/25/pure-profit-a-look-at-swoop
http://www.codinghorror.com/blog/archives/001196.html
This is not easy to convey in one or two paragraphs; I do recommend reading the two sites above before considering using Swoopo or any similar website.
The method is that you buy a "bid" for $0.75. Each time you bid, it costs you $0.75, and increases the item by $0.25.
So if a Nintendo Wii is going for $20.00, your $0.75 bid would increase it to $20.25. And it has cost you just $20.25 + $0.75 = $21.00. Bargain! Ker-Ching!
But wait... your bid has extended the auction for 15 seconds. Someone else has spent another $0.75 of their money to increase the price to $20.50.
Let's take a look at the tally so far:
Swoopo: Total spent: $0 - they buy the kit after the auction ends.
You:Total spent: $20.75, whether you win the auction or not.
A N Other: Total spent: $20.50.
Swoopo: Total gains: $20.75 + $20.50 = $41.25
Wow - if this item was cheap at $40, they could sell it for $20 and still make a profit. But a Wii is worth over $100, and you have paid $20.75 already. That money is spent. You cannot get it back even if you lose the "auction".
Nor can the other bidder get their money back if they lose the auction.
You have now got over $20 invested in what has become a gamble. The website have over $40 in guaranteed takings. They will be out of pocket if the auction ends now... but can you find someone who will bid $21 for a Wii? So long as they can keep on finding suckerspunters, the auction is extended for another 15 seconds. That punter puts more money into the pot to raise the "price" by $0.25. Another one comes along and for another $0.75 raises the "price" by another $0.25.
It is not these tiny $0.25 increments which are relevant; the $0.75 increments aren't terribly relevant either.
What is significant is that if (say) 10 bidders bid around $100 for a $500 item, the website gets 10 x $100 = $1,000, and one bidder gets a $500 item. The other bidders lose everything.
If a $500 item goes for $400, it must be a bargain... but if 200 other bidders have paid $300 each, that is 200x300 + 400 = $1600 for a $500 item.
It may not technically be classified as gambling, but it is certainly a scam.
Tue 10th Feb 2009 @ 23:29 2009: Shell Script: GetCluster
Sun's Solaris OS provides various options during installation, one of which is that you get to choose one from a set of installation "clusters" - sets of packages which go together to create a functional minimal install, or additional packages useful for an end-user, or programmer, up to "install the whole lot" (which doesn't actually install everything; some packages are only installed if you choose certain language options). It calls these "software groups":

The split is not very clearly defined, and I have yet to find an online list to say what packages will be installed for a given package cluster.
This shell script does not address that problem.
But it does address something quite similar.
For some work I happen to be doing at the moment, it is quite useful to be able to find out what installation options will be sufficient to get a certain package installed. If I want (say) the Apache 1.3 packages, this will tell me that I need SUNWCprog, SUNWCall or SUNWCXall. With GNU Grep, it is rather more informative - it describes each installation cluster in more detail, and gives package and version details for the selected package:
$ ./getcluster.sh SUNWapchr
SUNWapchr is in cluster SUNWCapache
Apache Web Server
The Apache Web Server
Sun Microsystems, Inc.
1.3.9
=> Installation Cluster(s):
SUNWCXall
Entire Distribution plus OEM support
A pre-defined software configuration consisting of all software included in the operating system release, plus OEM platform support.
SUNWCall
Entire Distribution
A pre-defined software configuration consisting of all software included in the operating system release.
SUNWCprog
Developer System Support
A pre-defined software configuration consisting of the typical software used by software developers.
Tue 3rd Feb 2009 @ 13:40 2009: Video: Hacker war drives San Francisco cloning RFID passports
From the page:
In just 20 minutes, he found and cloned the passports of two very unaware US citizens
Mon 2nd Feb 2009 @ 00:53 2009: Darwin "vs" God
I'm watching David Attenborough's Darwin programme. (Interestingly, in searching the BBC website, this was the second result; the first was Sir David Attenborough says he has received hate mail from viewers for not crediting God in his nature programmes).
This programme is particularly frustrating as it cites scientific observations (such as that two different species cannot mate), and Darwin's conclusions (that if they did, other species would occur) with no evidence. I am happy that there can be different breeds of dog - Attenborough goes to Crufts to show the variety, but acknowledges that the only obstacle is mechanical; any dog can impregnate any other.
A horse and donkey can make a mule, but it can't propagate.
These fundamental things seem to be inadequately explained to the public, if they are indeed true. Please, if these tenets are true, and the best that Darwinism can find, can somebody find a more convincing way to explain it.
If there is any evidence - and I want truly provable scientific evidence - would I be wrong in wanting it? for one species to somehow turn into another, please provide the evidence. It can't be hard, surely?
That is all before we get into the assumption that "one thing changing into another thing" must be against the Bible; who put that assumption up in the first place?
The New International Version (NIV) is the most commomnly-used English translation of the Bible; Genesis 1 is here: Verses 24-28 say:
24 And God said, "Let the land produce living creatures according to their kinds: livestock, creatures that move along the ground, and wild animals, each according to its kind." And it was so.
25 God made the wild animals according to their kinds, the livestock according to their kinds, and all the creatures that move along the ground according to their kinds. And God saw that it was good.
26 Then God said, "Let us make man in our image, in our likeness, and let them rule over the fish of the sea and the birds of the air, over the livestock, over all the earth, and over all the creatures that move along the ground."
27 So God created man in his own image,
in the image of God he created him;
male and female he created them.
28 God blessed them and said to them, "Be fruitful and increase in number; fill the earth and subdue it. Rule over the fish of the sea and the birds of the air and over every living creature that moves on the ground."
Sun 1st Feb 2009 @ 01:38 2009: How a programmer becomes a manager
An intersting discussion on JoelOnSoftware about unit testing.
It is a subject becoming quite relevant to me at the moment, as I'm writing some code to to accept inputs from various people who interpret the guidelines in different ways. As I change the code to accept a greater variety of input, what else am I breaking?
Unit testing seems to be the obvious answer: If I create a set of sample inputs, and specify exactly what output I expect from that input, then I can be confident that any changes to the code will not adversely affect the correctness of the solution.
But that's because I'm a geek. Joel Spolsky seems to be changing from a manager-who-used-to-be-a-programmer, into a businessman-who-used-to-be-a-manager, as does Jeff Atwood, by the sounds of it:
http://www.joelonsoftware.com/items/2009/01/31.html
I think over time, more and more, I've become really lax on my thinking about this, because what matters is what you deliver to the customer, and how happy the customer is with what you've delivered.
Sun 1st Feb 2009 @ 01:02 2009: Two Years From Now...
Stewart Smith makes some 2-year and 5-year predictions for PC technology:
http://www.flamingspork.com/blog/2008/11/09/technology-predictions/
I won't address the 5-year predictions; that is too far to make any sensible judgement. As for the two-year (2011) predictions:
Sun 1st Feb 2009 @ 00:23 2009: Four Chords, 36 Songs
Four chords are enough for at least 36 songs... with 12 notes on the scale, E, B, C#m and A seem very popular:
(embedded Flash, sorry!):