Main
Latest
- Go Stii!
- Open Yale Courses
- Activity Streams in Atom
- New Twitter Phishing Scam
- RSS/Atom in Chisimba Courses
- Lucene Frustration
- Chisimba Module Loading
- Top Free Web Apps of 2008
- Firework Frustration
- Antfarm DNS and Linux
Archives
- June 2004
- July 2004
- August 2004
- September 2004
- October 2004
- November 2004
- December 2004
- January 2005
- February 2005
- March 2005
- April 2005
- May 2005
- June 2005
- July 2005
- August 2005
- September 2005
- October 2005
- November 2005
- December 2005
- January 2006
- February 2006
- March 2006
- April 2006
- May 2006
- June 2006
- July 2006
- August 2006
- September 2006
- November 2006
- December 2006
- January 2007
- February 2007
- March 2007
- April 2007
- May 2007
- June 2007
- July 2007
- August 2007
- September 2007
- October 2007
- November 2007
- December 2007
- January 2008
- February 2008
- March 2008
- April 2008
- May 2008
- June 2008
- July 2008
- August 2008
- September 2008
- October 2008
- November 2008
- December 2008
- January 2009
Vista
For those that missed all the hype...
From The Enquirer: Vista hates shoot' em ups:
VISTA'A NEW graphics engine is causing first person shoot-em-ups to crash.
According to ComputerWorld, CounterStrike, Half-Life 2, Doom 3 and F.E.A.R are all fragged when punters try to play them on Vista.
So, I guess the gamerz got pwned.
From Slashdot: "Very Severe Hole" In Vista UAC Design:
Hacker Joanna Rutkowska has flagged a "very severe hole" in the design of Windows Vista's User Account Controls (UAC) feature. The issue is that Vista automatically assumes that all setup programs (application installers) should be run with administrator privileges — and gives the user no option to let them run without elevated privileges. This means that a freeware Tetris installer would be allowed to load kernel drivers. Microsoft's Mark Russinovich acknowledges the risk factor but says it was a 'design choice' to balance security with ease of use.
Make a big scene about security and then stuff it up anyway.
From BusinessWeek.com: Vista Shakes Up the Ecosystem:
The release of any new version of Windows is disruptive for the computer industry. PC, chip, and other hardware makers need to get products working with the new system's technologies. Corporate IT departments must verify that their favorite programs still work. Perhaps the toughest job, however, faces the thousands of independent software vendors, including household names like Photoshop maker Adobe Systems (ADBE), TurboTax publisher Intuit (INTU), and Norton Antivirus maker Symantec, whose livelihoods depend on turning out products that work with Windows.
Yeah, these are the problems created by a software monoculture.
Of course, it's also cool to be spoiled with choice, or maybe not.
Microsoft: Source Code is Not Patentable
From BetaNews: Supreme Court Debates Patentability of Software:
During oral arguments this morning, Microsoft attorney Theodore Olson, responding to a barrage of questions from Justices Anthony Kennedy and Antonin Scalia, attacked AT&T's position with a novel argument that you might not expect to hear from Microsoft: In short, you can't patent source code or object code.
Interesting, ja? First they push software patents in Europe, and now when it suits them, software patents is suddenly a bad idea.
Microsoft just lost some more credibility.
Template Changes
I made a couple of minor changes to the template of this blog.
- I had some (really) weird rendering issues with Firefox, so I added an extra
divaround the content area. This seems to have solved the problem. This is usually the problem; as soon as you start to do some advanced coding you run into tons of bugs. - The buttons in the sidebar need to be displayed vertically, not horizontally, so they are now
display:blockalong with some margins. - I hate excessive navigation sidebars. Therefore I removed some of the static links and only left the necessary.
- The "previous posts" have been placed on all the pages (instead of only the main page) because Blogger now dynamically generates the pages instead of saving them as static files like previously. Therefore the heading has also been renamed to "latest" ("latest posts" with the space doesn't look nice if it's styled like XML).
- The comment blocks were poorly styled so I added some better margins and padding.
Much better now. :)
.NET 3 Alarm Clock Demo
So after my previous post about .NET 3.0, I actually managed to download some of the samples.
I checked out the Alarm Clock sample in the Cross Technology Samples. Here are some screenshots:
The third background is actually an image of a plasma lamp by Lviatour.
As you can see, the transparency is a little rough around the edges of the clock on the textured background, but I guess it's not too bad in general.
The only problems are that it seems to eat some serious microprocessor time (almost half of my Pentium 4) and it's unclear on how to close it; it also occupies a space on the taskbar. But considering this is just a sample, that's not too bad.
Quite interesting this stuff, although I have to say I haven't seen too much I haven't seen before yet. And efficiency seems to be a real problem, just like with Vista.
Open Source in South African Government
From IOL Technology - Government switches to Open Source:
Cape Town - Cabinet has approved a policy and strategy to implement Free and Open Source Software (FOSS) in government, government communications head Themba Maseko said on Thursday.
[...]
"All new software developed for or by the government will be based on open standards and government will itself migrate current software to FOSS," he told a media briefing at Parliament following Wednesday's Cabinet meeting.
They have been saying that they will be doing this for years. I wonder if they are finally going to go through with it this time. If they will, this is really exciting!
90 Million Rand Security Wall
In South Africa, lots of the members of public are currently complaining about high crime levels.
President Thabo Mbeki insists though that the public perceives the crime to be higher than what it actually is.
Lots of jokes about this has been doing the rounds lately. "Oh, so next time you get stabbed, just remember that you're not really getting stabbed; it's just your imagination that's running away with you!"
Recently however, it was in the news that he is getting a security wall around his house that will cost more than 90 million SAR. At current exchange rates, this is the equivalent of just below 10 million Euro. Some links:
Hahaha, this is rather funny. It's easy to talk when you have a large budget and private security force protecting you. :)
I especially like this quote from Leitmotif on page 3:
How would you even build a 225k-per-meter wall? Half-meter thick polished rose marble with 2m of concrete foundations to prevent tunneling and a height of about 10m might do it, with the import costs and skilled labour. Add electric fence and generator for when Eskom fscks out again, and then... what the hell, that's the best I can do without adding crennelations and machinegun nests.
Whahaha, but this is a very good question. :)
Toni Gozza & Fat City
This news is actually rather old and I don't know why I didn't blog about this before. But as they say, rather late than never. :)
A friend of mine from Johannesburg, Toni Gozza, together with his band Fat City recorded some super tracks and put them all up for download so check them out if you have some bandwidth to spare this month!
This kind of content should also go onto the Freedom Toaster methinks.
Planets
Back in 2004, "blog" was declared the Word of the Year by Merriam-Webster. If we go on like this, a new definition might cause "planet" to be the 2007 Word of the Year. See planetplanet.org for more info. :)
Firstly, Translate.org.za has created some planets for sites in South African languages (excluding English, which isn't really considered a native language here, sorry guys, but there are luckily enough English planets already). My Afrikaans blog is now syndicated to their Afrikaans planet which is currently being dominated by Steve Hofmeyr. Well done, Steve, I hope to get some time though to give you a run for your money there. ;)
This morning I also learned of Planet Microformats. Currently it's mostly social services that are syndicated there and I agree with Scott Reynen that the signal-to-noise ratio is a little bad. I also agree with Benjamin West's suggestions to separate the social services and the high-quality content.
I guess I better get a move-on with the Garden Route Planet then. :)
MTN Dropping Broadband Prices
Yesterday evening I heard on the news and this morning am already reading all about it on forums and mailing lists.
From MTN cuts 20% on tariffs for all data products:
It seems the telecommunications industry is beginning to heed President Thabo Mbeki's call to bring down costs. MTN today announced a 20% reduction on tariffs for all data products, including sms-es.
From MTN shakes up broadband market with new prices:
MTN’s drastic price reductions on its broadband products are sure to shake up the local wireless broadband market.
MTN yesterday launched their “More bytes for your buck” advertising campaign, with both a reduction in price and an increase in data allowances.
MTN cut the price of their 1 GB ‘Extended Data’ offering from R 499-00 to R 399-00, and further included 1 GB of free data.
This effectively gives users a 2 GB usage limit for R 399-00 which makes them the most affordable wireless operator in the market.
MTN further reduced their ‘modem subsidized’ package to R 479-00 per month which also includes 2 GB of data.
Oh well, now with number portability maybe I should switch? :)
George CPF Meeting at NG Moedergemeente
The George CPF is holding a special meeting at the NG Moedergemeente (roughly translated: Dutch Reformed Mother Church) in George at 19:00 on Wednesday the 21nd of February 2007 for the residents of the Denneoord area. If you also stay there I would advise you to come to the meeting; the more you know the better you can protect yourself against crime so it only makes logical sense to want to learn as much as possible. Hope to see you there tonight. :)
Blogflare
Towards the end of last year, Scott from Blogflare asked me to help beta test their new service, and as you might know, I can never say no to beta testing. :)
Blogflare is like a kind of a blog directory that can be used to rank blogs according to votes and the amount of hits they get.
Although I hate to place buttons on my blogs (as you can probably see if you are reading this on the site itself), I placed the Blogflare button in my template and currently this blog is ranking #7 in the technology category. (It should be noted though that there are only 22 blogs in that category in total.)
Although I might remove the button from my template sometime in the future, I think it's a rather cool service and worth checking out. Well done to Scott and everybody else involved.
South African Blog Awards 2007
I am actually a little slow to blog about this, but the South African Blog Awards 2007 are (or should this be "is"?) currently accepting nominations. When the awards started a couple of years ago their setup was really basic, but it seems to be quite elaborate now thanks to the web addicts. The only problem I have is that the widget generator provided me with invalid XHTML so I had to edit it afterwards. Yes, those pesky unencoded ampersands again, guys! That, and of course the fact that I don't use XHTML on this blog, only plain old HTML, so the img element's tag doesn't need to be closed. :)
I have been blogging since the middle of 2004 and have blogged over 400 entires on this blog alone since then so I naturally hope to also be nominated, especially in the "Best SA blog about tech / computers / web development" category.
I have actually decided to give the winner of the "South African weblog of the year" category a prize of $1 000 000 (yes, that reads one million dollars - in cash, even). "What's the catch?" you might ask; well, naturally there is one: we're talking about Zimbabwean Dollars here! :P
However, there is another catch: since I don't carry Zimbabwean Dollars around with me (it's just physically too large) I will give the winner his/her/their prize in South African Rands. So, the winner is welcome to come and collect their R2 at my place afterwards. For that little cash, I'm definitely not going to ship it. And keep in mind that, since the value of the Zimbabwean Dollar is declining so rapidly, it will probably only be 20 cents once the 2007 blog awards are over. :)
Ok, so that's my lame joke of the day. Now back to better things...
Free Geek
I wondered when they are going to start with a project similar to Tuxlabs overseas. Today I discovered Free Geek. Helping the needy get nerdy since the beginning of the 3rd millennium.
.
Mike Stopforth didn't know that this is an old idea in South Africa. :)
Great stuff; would like to hear more of the Free Geeks in future. :)
Mediawiki: Shocked, again!
One thing I take seriously (very, very seriously) is security.
Once again I am shocked at Mediawiki. Not only is the system very messy but it ignores certain security principles.
When you submit a password as part of a web form, that password should be kept as secure as possible. In other words:
- The password is sent using a special password input field (
<input type="password"/>). - The password is sent once, preferably encrypted, to the server and then destroyed.
Now try to log into any mediawiki installation using any false username + password combination. When I try to log in using the password test123 I get sent to a page with this in the markup (whitespace altered):
<input type='password' class='loginPassword' name="wpPassword" id="wpPassword1" tabindex="2" value="test123" size='20' />
Do I need to say anything further?
Caught on Camera
I really love photos and especially taking them but because I'm behind the camera most of the time I rarely appear on photos myself.
Last week at the Garden Route Geek Dinner, Tresblue caught me on his camera a couple of times though. :)
He took some other great photos at the dinner too, so now the whole world will know what we've been up to. :)
Garden Route Bloggers
Yesterday I received an e-mail from Imel about his new blog. Apparently the Garden Route Geek Dinner had an effect on him; it's really fantastic to see others being inspired! :)
But Imel is not the only inspired person right now; the CLUG Park inspired me to also create a Garden Route Park (or Planet).
Currently I know of 6 people in the Garden Route that blog. In alphabetical order:
- Imel Rautenbach
- Jayx
- Mike Morris
- Stii
- Tresblue
- And then of course, me. :)
If you know somebody else I can place on the list, please comment! :)
I wouldn't mind to use PlanetPlanet just like the CLUG but I lack Python hosting. If somebody would be willing to provide that, it would be great, but otherwise we'll have to look a PHP-based solution.
Does anybody have any experience with PHP-based Planet systems? Any PHP libraries for feed parsing? The best one I have found so far seems to be Magpie.
InfraCo: Yeah, something is wrong...
So it seems that I was not off-track with my initial suspicions. Some quotes from today's article in iafrica.com business news called InfraCo process 'is not transparent':
"While the IFP welcomes any initiative to reduce the cost of communications, it is noted that this development by government has been anything but transparent," she said.
[...]
All legislation should be preceded by public participation and an open and transparent process.
There was no doubt that various affected bodies would want to air their views on the matter, as issues such as state dominance over servitudes and rights of way would need to be clarified, she said.
It was therefore in the public interest that public hearings be scheduled as a matter of urgency.
"The closed door manner in which InfraCo has emerged is highly undesirable.
"It is noted, in this regard, that the minister of finance, in his Medium Term Budget Policy Statement, announced that more than R600-million had been set aside to finance InfraCo and yet the IFP can find no record of any prior public consultation which had taken place in this regard," Vos said.
Innocence? I think not! :)
Ubuntu Kernel Upgrade: Fixed
As a follow-up to last week's troubles, yesterday when I tried again, the upgrade process ran smoothly. I suspect that the problem lied with the mirror. These kinds of things happen easily when mirrors are out of sync; when people try to do upgrades while the mirror is busy sychronising they therefore get errors.
An elegant solution to this problem might be to first allow the mirror to finish synchronising the packages and only then update the package lists. In other words, run two separate rsync operations instead of one.
Amplitude
There are not many South African podcasts; this is probably because bandwidth is such a major problem here.
However, there are a few good ones emerging. Amplitude is a marketing podcast and in their latest installment, Good Muti, they interview Neville Newey, the person behind Muti.co.za.
Muti.co.za is a social bookmarking service; the word "muti" means traditional medicine but is often informally used for any cure to a problem. "Good Muti" would refer to clean, effective medicine (not the kind made from human body parts, for example).
I wonder what's happening with Linux Radio though.
Gmail goes public
For the first time yesterday I noticed that you can now get yourself a Gmail account without having an invite. Yeah, it had to happen eventually. By the way they have been giving away invites it surprises me that they have not done this earlier.
I think Gmail proved that people always want what they can't get. They would probably have had a slower uptake, especially at the start, if it wasn't for this brilliant invite-based system.
What's funny though is that I still have invites left in my account; it would make sense to leave an invite feature but why then tell me I only have 95 left?
Happy Valentines Day!
Linux or Mac?
I tried the MacOS-X Aqua Theme for Gnome today. Took a few screenshots for your enjoyment:
Is this even legal? :)
InfraCo?
Yesterday evening on the news I heard about InfraCo, some new broadband telecommunications project in South Africa. I nearly needed a clean pair of pants.
If I understand correctly, what they are going to do is roll out a very expensive fibre infrastructure in South Africa. Who is going to pay for this? Probably the government, which actually means the tax payer, which actually means the public. After that, this new infrastructure that has been built using our tax money will be given to Telscum and Neotel so that they can make use of it. And the government actually seem to think that this will reduce the broadband pricing for the general public.
First of all, Telscum is making billions of rands in profit every year; why can't they pay for this themselves? Second of all, who will be given the major benefit of this at the end of the day? Yes, Telscum. Will this drop prices? They are overcharging anyway, so I doubt it.
Am I missing something?
Anyway, you can read the online article if you like.
Oh, and you gotta read this quote from South Africa: From Potable Water to the Internet - Challenges for Mbeki:
"Telkom (the communications group) will apply a special low rate for international bandwidth to 10 development call centres, each employing 1,000 persons, as part of the effort to expand the BPO (Business Processing Outsourcing) sector… The special rate will be directly comparable to those for the same service and capacity per month offered in any of the comparable countries….
In other words, they are admitting that Telscum is overcharging the average customer? :)
I can't believe the public are sitting around and doing nothing while the government is screwing them like this! Let's hold a (legal) strike for crying out loud!
Sleep in a capsule!
This is really funny. If you are planning on traveling to Japan any time soon and you don't suffer from claustrophobia at all (or fear of coffins), why not try a nice comfortable "capsule" for the night. You even get your own television in your, ahem, urban hole. See the photos and the English site.
I guess this is like that South African television advertisement... It's a new concept in living. Think outside of the box by living inside the box. :)
Kudos to Jean-Paul for the link!
Ubuntu Kernel Upgrade?
Today when I ran apt-get upgrade I got this output:
charlvn@nebula:~$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
The following packages have been kept back:
linux-image-386 linux-restricted-modules-386
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
So, I tried to do the upgrade, I got this:
charlvn@nebula:~$ sudo apt-get install linux-image-386 linux-restricted-modules-386
Reading package lists... Done
Building dependency tree... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
linux-image-386: Depends: linux-image-2.6.15-28-386 but it is not installable
linux-restricted-modules-386: Depends: linux-restricted-modules-2.6.15-28-386 but it is not going to be installed
E: Broken packages
My sources.list is looking like this:
deb http://za.archive.ubuntu.com/ubuntu dapper main restricted universe multiverse
deb-src http://za.archive.ubuntu.com/ubuntu dapper main restricted universe multiverse
deb http://za.archive.ubuntu.com/ubuntu dapper-updates main restricted universe multiverse
deb-src http://za.archive.ubuntu.com/ubuntu dapper-updates main restricted universe multiverse
deb http://za.archive.ubuntu.com/ubuntu dapper-backports main restricted universe multiverse
deb-src http://za.archive.ubuntu.com/ubuntu dapper-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu dapper-security main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu dapper-security main restricted universe multiverse
My fault, Internet Solutions' or Ubuntu's? Eish.
Pocket PC Emulators
Very interesting. I never knew that there were Pocket PC emulators built right into Microsoft Visual Studio 2005. I played with it a bit today and it works rather nicely, although very slowly even on a Pentium 4 with 1 GB of RAM.
Rather handy, though. :)
We had enough!
Dear President Mbeki
Crime is a great source of concern for most South Africans at present. For this reason, I think that was a good idea for FNB to launch a campaign against crime. I find it a pity that the campaign was aborted before it could even be launched.
You surely recognise the importance of giving communities an opportunity to voice their concerns. South Africans are angry about crime and I am therefore delighted that South Africans will get an opportunity to articulate their dismay with your handling of the crisis brought about by crime.
The 18 528 murders, 54 926 rapes and the 119 726 instances of violent crime during 2006 are unacceptable to me and to millions of other South Africans. Crime is doing tremendous damage to our country. It erodes business confidence and destroys any hopes of tackling the many other problems, like poverty and unemployment, that face our country. The main effect is that it makes negative, pessimistic and unpatriotic citizens out of South Africans. One can hardly expect a country populated by scared and angry people to be successful.
I therefore ask you immediately to declare crime a national crisis and to make the safety of all South Africans our government’s top priority.
You too can send this letter to the South African president from the Send a letter to President Mbeki page. :)
Although Jaiku is very cool, unless you write some of your own scripts it's pesky to update your status.
Twitter came up with a very nice way. You can get twitter@twitter.com as a Jabber contact, and then to update your status, you simply send it a message!
You can see my Twitter status on the web any time and even subscribe to it as an RSS feed (although the IRI for that is really ugly unfortunately). :)
Tagging in Blogger: No Ajax?
So, just when I thought Blogger was starting to become really cool, I am once again really disappointed.
Check what I found when I viewed source on the "Create Post" page:
var BLOG_allLabelsList = ['2007','adsl','advertisement','africa','automobile','blog','blogger','bloggerbeta','blogging','blooddiamond','borat','bot','broadband','capetown','casino','casinoroyale','cellphone','china','chlorination','chlorine','christmas','cia','clug','cms','coal','comic','conference','conservation','corruption','development','devjavu','dilbert','dog','drupal','dutch','expo','extension','fidelis','firefox','freenode','fud','fuel','fun','gambling','gardenroute','geek','geekdinner','gentoo','george','glug','google','googlebot','groovylabs','gross','grossug','group','hak5','happyfeet','holiday','hotmail','ict','im','instantmessaging','interface','iptv','irc','jabber','jaiku','kaput','leonardodicaprio','liberia','linux','linuxworld','live','mailinglist','me.dium','mediawiki','medium','meeting','messenger','microsoft','mobile','morality','movie','mozilla','msn','myadsl','mybroadband','nature','netherlands','obsidian','openseason','opensource','petroleum','php','php5','planet','pr0n','pricefixing','project','rdesktop','rdp','reuters','sabc','sasol','science','searchengine','seo','slashdot','social','southafrica','specialassignment','standards','stork','subversion','survivor','swim','synfuel','synthetic','technology','tectonic','telecommunication','telecomsactiongroup','television','telkom','thunderbird','tip','trac','translate','travel','unisa','usergroup','vista','web','web-a-thon','web2.0','wild','wildlife','windows','xmpp','yahoo','yahoogroups','zimbabwe','zune'];
Also, later again:
<div style="display:none;" id="all-labels"> All Labels: <span class="label-list"> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> 2007</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> adsl</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> advertisement</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> africa</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> automobile</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> blog</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> blogger</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> bloggerbeta</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> blogging</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> blooddiamond</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> borat</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> bot</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> broadband</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> capetown</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> casino</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> casinoroyale</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> cellphone</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> china</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> chlorination</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> chlorine</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> christmas</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> cia</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> clug</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> cms</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> coal</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> comic</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> conference</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> conservation</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> corruption</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> development</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> devjavu</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> dilbert</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> dog</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> drupal</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> dutch</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> expo</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> extension</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> fidelis</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> firefox</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> freenode</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> fud</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> fuel</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> fun</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> gambling</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> gardenroute</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> geek</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> geekdinner</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> gentoo</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> george</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> glug</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> google</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> googlebot</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> groovylabs</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> gross</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> grossug</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> group</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> hak5</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> happyfeet</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> holiday</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> hotmail</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> ict</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> im</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> instantmessaging</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> interface</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> iptv</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> irc</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> jabber</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> jaiku</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> kaput</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> leonardodicaprio</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> liberia</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> linux</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> linuxworld</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> live</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> mailinglist</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> me.dium</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> mediawiki</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> medium</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> meeting</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> messenger</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> microsoft</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> mobile</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> morality</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> movie</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> mozilla</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> msn</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> myadsl</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> mybroadband</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> nature</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> netherlands</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> obsidian</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> openseason</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> opensource</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> petroleum</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> php</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> php5</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> planet</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> pr0n</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> pricefixing</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> project</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> rdesktop</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> rdp</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> reuters</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> sabc</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> sasol</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> science</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> searchengine</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> seo</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> slashdot</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> social</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> southafrica</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> specialassignment</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> standards</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> stork</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> subversion</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> survivor</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> swim</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> synfuel</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> synthetic</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> technology</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> tectonic</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> telecommunication</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> telecomsactiongroup</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> television</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> telkom</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> thunderbird</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> tip</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> trac</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> translate</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> travel</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> unisa</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> usergroup</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> vista</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> web</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> web-a-thon</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> web2.0</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> wild</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> wildlife</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> windows</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> xmpp</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> yahoo</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> yahoogroups</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> zimbabwe</a> <a href="#" class="clickable-label" onclick="BLOG_selectLabel(this); return false;"> zune</a> </span> </div>
Can you believe this shit? Even with XmlHttpRequest and all that is available, they choose to do it the dumb way??? Amazing!
Well, I guess I will now no longer use the tagging facility on Blogger until they do something about this. Otherwise, I will eventually end up with having to preload a list like on my del.icio.us account (they do have bookmarklets available that allows you to use Ajax when posting links though on the more buttons page).
.NET Framework 3.0
I don't know how this slipped my radar; that just comes to show how busy I've been the last couple of months. :)
The .NET Framework 3.0 has been released. For more information, see the following links:
Some things that are up for download:
- Microsoft .NET Framework 3.0 Redistributable Package
- Microsoft® Windows® Software Development Kit for Windows Vista™ and .NET Framework 3.0 Runtime Components
- Visual Studio 2005 extensions for .NET Framework 3.0 (Windows Workflow Foundation)
- Windows SDK .NET Framework 3.0 Samples
All of these (other than the redistributable runtime package) want you to validate your copy of Windows before you get the download URI. If you want to download for your legal Windows copy while booted into Linux for example, you are therefore buggered.
Anyway, when I eventually manage to download all this stuff in Africa (at, well, African speed), I will probably play around a little and do some reviews. Note that you need either Windows Vista or otherwise Windows XP Service Pack 2 to run any of this stuff. Upgrade or be deprecated. Or, just switch to Linux and use Mono. :)
Stop the Upgrades
From Microsoft Windows Vista (Stop the Upgrades!):
I understand that there is and has been an existing browser war and we're all fighting as developers and designers to keep things working (thanks to Microsoft). Now, we basically have to re-develop to be compatible with a whole Operating System? Not just the Browser? What has the world come to? This does not make business sense but I think that WE (designers, developers and the likes) should stop trying to make our works compatible with products from an organization that does not even try to follow any of the recommended standards!
Now we're talking. Follow open standards, not implementations. :)
Messenger E-Mail Change: Update
In an update to my previous post, Messenger E-Mail Change, most (all?) of my contacts seem to be working perfectly again so I guess the change worked. :)
GLUG IRC Channel
This is very cool. The GLUG now also has a channel on freenode called #gauteng-lug.
Swimming
Since it has been very hot in South Africa the last couple of weeks, I have done quite a bit of swimming.
When I swim, I normally go to my gym (Virgin Active) and make use of their indoors swimming pool (helps to stay out of the deadly sun). The pool’s water is somewhat heated (around 28 degrees Celsius), but not like a typical warm-water swimming pool because if the water is too hot you can overheat while you’re exercising.
However, being heated they need to use a lot of Chlorination in order to keep the pool clean of bacteria, etc. Every time after I finished swimming, I immediately take a shower and thoroughly wash myself with soap in order to get the chlorine off. This seems to work perfectly for the rest of my body, but my hands keep smelling strongly like chlorine. And when I say “strongly”, I mean strongly!
Obviously, my hands are more thoroughly washed than the rest of me because I use them to wash the rest. So why on earth does my hands smell so much like chlorine and not the rest at all?
What could be the scientific explanation for this? Does anybody have any ideas?
Tracking African Wild Dogs
This morning I was listening to a very interesting insert on RSG about African Wild Dogs and how nature conservationists are tracking their movements. They fit two collars on each dog, one for normal identification and the other for GPS tracking.
The GPS collar works using a GPS device and a cellphone. When the cellphone picks up reception (obviously cellular reception isn’t always too good out in the bushveld), it sends the dog’s latest GPS coordinates to the conservationists.
From a technical point of view, this is rather cool. I wonder if they meant that the GPS device and the cellphone is a single unit because apparently some cellphones have built-in support for GPS these days. In case they are two separate units, I guess there would be many ways of getting them to talk to each other (open standards are important here, just like everywhere else, naturally).
If the cellphone is actually a smartphone that can run Java, it would be trivial to write a small application that can handle the reporting. They are probably using GPRS and TCP/IP to report the coordinates to some central server, but I’m just speculating because they unfortunately did not let us in on the precise technical details (probably too many noobs listening and then they would all get pwned).
So anyway, I don’t think that this is necessarily a very smart option for Africa. The reason for this is that, by giving the dogs electronic equipment, you are immediately putting their lives at risk. Yes, dogs can also be robbed just like humans. And to make matters worse, thanks to them not understanding the English language, they would not cooperate and voluntarily hand over their belongings to a person shouting “Hey, you dog, stop and give it up or else I’ll shoot you like, well, a dog!”
Pimping with some rather expensive gear is definitely not what you want to do out in Africa. ;)
(For my readers from overseas, “bushveld” is how we refer to the African “outback” or “jungle” as some of you might call it.)
Telscum on Interface
Sorry that I was so slow to blog about this; I have been really busy this week.
On Sunday the 24th of January 2007, the weekly South African television talk show called Interface on SABC 3 had as its topic the high prices of Telscum after the now-famous TAG newspaper ad was published.
They invited three guests to the show:
- Rudolph Muller
- IT Lecturer at the University of Johannesburg and founder of MyADSL.
- Herold Mathebathe
- From the South African Department of Communication.
- Paris Mashile
- From the ICASA.
Apparently Telscum was also invited, but they refused to take part in the discussion.
On the show, they revealed some shocking information. The following countries have ridiculously high telecommunications costs (in order from most to least expensive):
- Belgium
- South Africa
- The Netherlands
The shock here is not that South Africa is on the list. The shock is that Belgium and The Netherlands are.
As they interviewed the three guests, Muller spoke a lot of sense. He came out with some shocking facts about Telscum and was naturally against this telecommunications corruption we have going on.
Mashile's position was a little uncertain. First he argued that they did not have proper evidence to prove that Telscum is too expensive, but this is quite obviously ridiculous. Later he said that he agrees there is a serious problem with Telscum and that it needs to be dealt with ASAP; however, he was not willing to give any assurance that there will be any serious changes before the end of the year (and since this is only January, that is a lot of time).
Mathebathe seems to have been on Telscum's side. For what reason, we can only speculate.
As I said many times, the real problem lies not with Telscum but with the government. Telscum is just doing what most companies in their position would have done (which doesn't make them innocent in any way, but that is the case nevertheless). It's the government here that needs to take responsibility; after all, they are keeping Telscum in monopoly. The attitude problem in the government was clearly demonstrated by Mr. Mathebathe on that evening.
To wrap it up, although Telscum is getting seriously bad publicity they seem to be walking out of this undamaged and laughing all the way to the bank. A lot more needs to be done before this will end.
All that I can suggest is that we, as the public of South Africa, need to place as much pressure as possible on the government to change their no-care attitude towards this problem.
For more information and opinions about the programme, please see the following forum threads:
- SABC 3 Interface: Sunday 28 January 19:30 - My ADSL & My Broadband
- Gardenroute Forums - Telkom Debate on Interface - SABC3
Also, see Reuters blames Telkom:
Well-known media and information provider Reuters made it clear that Telkom is standing in the way of foreign investment in South Africa.
Tom Glocer, CEO of Reuters, made it clear during a brief stop in South Africa that ‘Telkom’s continued high telecommunications prices and low-quality bandwidth are deterring it from ploughing more money into SA’ (Telkom prices hold SA back – Reuters, Rose, 17 January 2007). In other words, Telkom is once again standing in the way of job creation in this country. Not that an increase in foreign investment will necessarily lead to more jobs because a monster called ‘jobless growth’ is also doing the rounds. Foreign investment will however lead us faster to a situation where more jobs can be created.
Is Telkom really that bad?
Well, decide for yourself. Do you think for one that it’s not too bad to pay 440 times more than you should pay for voice and data calls in South Africa? This is according to research done by well known Economist and Telecoms Consultant, Paul Cole.
Another thing I almost forgot about: When my mom went to New York last year, it was cheaper for her to phone me in South Africa from New York than what it would be for me to phone from George to Knysna (around 60 KM away).
So, make up your own mind. :)
rdesktop
Oh my goodness, people, some days my own stupidity amazes me. Up until today, every time I needed to open an RDP session to a Windows box I had to either reboot or find a PC around me somewhere running Windows.
Only today I discovered rdesktop; now I can easily connect into a Windows box without going the VNC route straight from Linux.
CIA
For the noobs, from the About CIA page:
CIA is a system for tracking open-source projects in real-time. People all over the world are constantly collaborating and creating software, creating a constant flow of new code and new ideas. CIA provides an easy way for people to observe this flow. Developers can see the latest changes to their code immediately, users can subscribe to see the latest bugfixes in their favorite programs. Everyone can take a chance to step back and look at open source development as a whole.
Recently I set up subversion monitoring bots for two projects: Fidelis (on #fidelis) and Translate.org.za (on #zaf). You can see my commits too if you want. Really cool stuff. :)
jabber.obsidian.co.za: run over by elephants
As I signed on to Jabber this morning, I got the following notice:
Greetings Jabberites......
As many of you must have noticed, our server was unavailable for approximately one day recently. I'd like to open this confessional with a small but important statement:
NOT MY FAULT!
Believe it or not, I was not in any way involved. I wasn't optimising, or upgrading, or experimenting in any way, shape or form - it was an issue with our leased line! There I've said it.
Be aware, however, that between our [until very recently] only telecoms company and South Africa's only power company, there may still be trials and tribulations ahead - this is Africa after all: Cables get stolen, migratory ostriches get caught in power lines and elephants routinely purloin large satellite dishes for their myserious 'Elephant Braai Area' skottel parties.
Sorry for the downtime - we're busy implementing preventative measure as I type:
- We're painting all our cables to look like snakes.
- We've ordered a battery of SOM (Surface to Ostrich) missile launchers.
- We've confiscated the elephants tongs and spatulas. Let's see them skottel NOW! HAH!
So please be patient with us, Eskom and Telkom. We're doing our best!
Thanks
Warren[...]
PS: For our foreign users:
Braai: Like a barbecue, only with more meat, beer and khaki safari suits.
Skottel: Like a braai, only you cook over gas, on something that looks like a flat-ish wok.
Tongs: The things you use to turn the meat on a braai.
ROFL!
PHP 5 Autoloading
I have to hang my head in shame and admit that I have been stuck in a mostly PHP 4 environment so far because a lot of web hosts have been reluctant to upgrade to PHP 5 in order to support their older sites.
However, this does seem to be changing. I have recently had the pleasure of hacking a bit of PHP 5 and, considering that both Standards.za.net and Robotics.za.net are using it I will continue to do so in the foreseeable future until I eventually dump PHP altogether.
One of the nice features of PHP 5 is the ability to Autoload classes. For example, I can have this:
function __autoload($classname) {
if (file_exists("classes/$classname.php")) {
require "classes/$classname.php";
}
if (!class_exists($classname)) {
die("Class not found: $classname");
}
}
Now, if I try to use a class that does not exist, this function will be called and it will attempt to load the class from the classes directory. This is a lot simpler than having to worry about making sure your require_once statements are complete for each file.
Considering that many programmers prefer to have one file for each class and have the file names correspond to the class names, this is very practical.
Just note that, in my example, I used die but normally you would have a proper error handling script take care of this. To simply use die like this is generally considered to be really bad practice actually.
Also, I used require because it is more efficient than require_once. You can use the latter if you prefer but I don't really think it's necessary, unless I'm missing something.
Copyright © 2004-2009 Charl van Niekerk. All articles are released under the Creative Commons Attribution 2.5 South Africa licence, unless where otherwise stated.


