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
Fitna Silenced?
So after the initial relatively positive uptake, things did turn sour after all. From the front page of LiveLeak.com:
Following threats to our staff of a very serious nature, and some ill informed reports from certain corners of the British media that could directly lead to the harm of some of our staff, Liveleak.com has been left with no other choice but to remove Fitna from our servers. This is a sad day for freedom of speech on the net but we have to place the safety and well being of our staff above all else. We would like to thank the thousands of people, from all backgrounds and religions, who gave us their support. They realised LiveLeak.com is a vehicle for many opinions and not just for the support of one. Perhaps there is still hope that this situation may produce a discussion that could benefit and educate all of us as to how we can accept one anothers culture. We stood for what we believe in, the ability to be heard, but in the end the price was too high.
Read more at Anti-Islamic Film Taken Offline Following Threats.
Personally, I don't really mind that much in this particular case, but it does go against my principles. The power of a non-governmental group of people is striking though.
Also see Taliban interviewed by David Loyn of BBC News. This just shows that there is an evil minority but that the locals in Afghanistan are actually generally very respectable and honourable (see towards the end).
Fitna The Movie
I'm hectically busy this side so only a quick update. Yesterday evening, the controversial short film titled "Fitna" by Geert Wilders of the Dutch Party for Freedom was finally released on LiveLeak.com.
When I opened the page, the were only 40-something views so far. In a couple of minutes, this rose to well over 200 000 views. About an hour later, it was already 410 211 views and then made a radical jump to over 1 million views (1 212 119 to be exact) in less than 8 minutes. It hanged there for a while and then went back to 410 211 views where it got stuck again. Seems like some kind of strange hack. Would be interested to know what the true amount of views were. At the time of writing, it's saying 2 535 081 views. Whatever.
Interesting thing was the message that they posted on the LiveLeak.com homepage, minutes after the film was released. Due to an increase in traffic and targetted hacking attacks, we have had to disable certain features.
(Did they just spell "targeted" wrong?!) The video was also extremely slow to download. And soon the BBC published an article about it as well.
Anyway, Dutch people all around the world (also in South Africa) were talking about this as there's a huge amount of politics surrounding a controversial anti-Islam film like that. However, many Dutch and Muslims alike are now rather relieved because it wasn't as bad as anticipated. Indeed, the hype that led up to it made it sound much worse than it actually was, although it's still pretty offensive to most Islam people I do believe.
For the moment, things are going much better than expected but let's hope it stays like this and there doesn't end up being any incidents because of this. After the Theo van Gogh incident, I think lots of people are a bit edgy...
Although I might not agree with all of Geert Wilders' views, it is important that we all respect each others' opinions and let freedom of speech prevail. After all, if you don't like it, you have the power to close the page, nobody is forcing you to look at the video. I anyway think it's good to stay neutral and objective and look at things from all angles and perspectives in order to build an informed opinion.
I am quite pissed off though that they pointed to a Wikipedia page as the "official" homepage of the show as that's just ridiculous. The Wikipedia reacted by posting a message on the page rejecting the claim as they are obviously not affiliated with Geert Wilders or the PVV. Nevertheless, the Wikipedia has an excellent page about the film which is still the #1 source of information for me about it.
Windows 64-bit Update
So after my last post, the plot "thickened" a bit!
Basically many of the computer dealers are not selling Windows 64-bit (at least not by default) as support is a real issue. Apparently not even all the hardware drivers for the motherboards are available.
Ok, so let me see if I can get this straight. A motherboard specifically manufactured for a 64-bit microprocessor does not ship with 64-bit drivers. Brilliant.
So then I went to the Garden Route Mall and I asked the Incredible Connection store over there. They did not even have Windows Vista Ultimate 64-bit in stock, but they could special order it for me for a "mere" R4 900. I can buy myself an entire, new, very nice computer for that price! So basically what does Vista give me? A painful little irritating operating system. They got to be insane...
Neotel in George
So today I was running around in George and I walked past a manhole. Ok, sounds like a pointless blog post, but read on. The manhole had "Neotel" written on it. This was on the southern side walk in York Street.
Unfortunately I was not able to take a picture but it seems like Neotel definitely has / are soon going to have a (fibre?) infrastructure going over here. This is so exciting to me. I am fed up with this exceptionally slow ADSL. It's so fast in Cape Town and Johannesburg, and over here it's just kak! I mean, how can a 4 Mbps line be slower than a dial-up modem? Well, apparently some people are getting quite decent speeds but others are suffering. It's just not acceptable! I can hardly wait until they get all their stuff in order and I can start using some of their services. I really hope it will beat the crap out of Telkom ADSL because otherwise I'll just have to relocate because I can't put up with this shit forever. I would be 10 times as productive on a decent internet connection!
Update: How ironic. Just while publishing this post, my internet connection fails. LOL! Or is that :( ? Anyway, in the meantime I was speaking to Jayx (local was still fine, just my international) and it actually turns out that this is quite old news. The problem is me not sitting around in town anymore, I'm working from home (or remotely out of town). Apparently Neotel came at the beginning of this year and dug up a whole lot of the streets, all Fibre, massive infrastructure. Now we are just waiting for the products. Come on people we can't have those pipes lying around doing nothing!!! ;)
Garden Route 2.0 in 2008
Ok so it was a while since I spinned this ridiculous marketing (hype) term Garden Route 2.0 but I just thought I should show that geeks can also talk shit (like anybody wouldn't know already after reading this blog the last few years...)
GardenRoute.com is a local portal site which I believe should have a presence on Facebook. After all, Facebook is all the rage at the moment (goodness only knows why...)
Anyway, I created a proper canvas page for the Facebook App finally. I also created a Facebook Page and a Facebook Group for the portal.
I also created a Twitter Feed for anybody that might be interested.
Ideas, suggestions, flames, etc. welcome!
Ubuntu Hardy Power Management Issues
I was a little disappointed to see that the full computer "sleep" function still doesn't work (for my particular machine) but I know this is something very difficult to implement, especially in a system like Linux, so I'm not going to complain about that. However, I was a little disappointed not having the screen turn itself off automatically. I set it to turn off after 15 minutes of inactivity in the power management dialog but even after 30 minutes it still does not turn off.
The interesting thing is that, even on my old Dapper machine (where the screen does turn off correctly), the xset q output is the following:
DPMS (Energy Star):
Standby: 0 Suspend: 0 Off: 0
DPMS is Enabled
Monitor is On
This is similar on my Hardy machine. When I try xset dpms force standby on my Dapper machine, it works fine. On my new Hardy machine, no luck. Well, the screen turns black but the backlighting does not go off. However, when I try xset dpms force off it works perfectly. So therefore I am setting it xset dpms 0 0 900 and that is working perfectly.
I suspect this issue is related to the driver. After all, it didn't pick up my screen automatically either, so therefore it's quite logical to me to suspect these two issues are related.
Wondering if I should submit this on the proprietary Launchpad or not...
Food for Thought
I am probably one of the relatively few consumers that are really concious about what's in the food they buy. I suffered (and am still suffering) from various allergies and sensitivities. I guess you have to be one of the "disadvantaged" people to care. But, in my case, I'm actually quite glad as it put me on the right road from early in my life. Maybe the others have it good now but with the alarming rates of cancer in South Africa and many other places of the world, I think nobody should take too many chances.
When I walk into a shop, I always check out the ingredients on virtually any product I buy. Well, obviously I don't on fresh fruit and vegetables, but I normally do on anything with a label. I find it generally horrifying to see how many artificial additives are thrown into many of the foods that lots of people eat every day.
One of the things that I noticed the last few weeks in particular was that many products contained an anti-oxidant called TBHQ. This is actually short for tert-Butylhydroquinone. Don't worry, I can't pronounce that either. I'm obviously a little weary and like to do my research first before I input too much of that into my body.
In my casual research around the net, the results were very inconclusive. Some people label it as bad, some people label it as good (yes, as in having health benefits). I'm not entirely convinced of either at the moment so I think I'll just try and avoid it as far as possible, just to be on the safe side.
However, while browsing around, I read some other (very) worrying things. Note that I'm not sure if these are true or not, and for exactly which countries, but I thought they were quite interesting anyway so I'll quote them here.
From the Food Intolerance Network Factsheet: 320 BHA and other antioxidants:
If the amount of an ingredient in a food is less than 5% of the food (such as 4.5 per cent sunflower oil added to soymilk), a food additive (such as antioxidant TBHQ, 319) in that ingredient does not have to be included in the ingredients list on the label unless the food additive is performing a technological function in the final food. Who decides is the additive is performing a technological function? The food manufacturers. What if consumption of the unlisted food additive can affect consumers? Too bad.
Even 2% is a very significant amount in my opinion, especially if you have some kind of intolerance towards a specific ingredient.
From More Fallout from the Chinese Food Scandals: Heavy Metals in Our Food?:
As this blog has discussed in previous posts, the American public is in blissful ignorance of how widespread Chinese ingredients are in their food supply. This is because of a little-known loophole in the food labeling laws that does not require country of origin for food ingredients if the product has been processed and has undergone substantial transformation.
For quite a while now, I have been refusing to consume any food that comes from China. The scandals involving poisonous substances in their products have been many in the past few years. Even in South Africa we got hit quite badly. How on earth they manage to get all these heavy metals in their food products, goodness only knows, especially when these metals are not being used in the production of food at all! I mean, what on earth? Do they build these food processing plants right next to mines? Even so, it should not be possible as the environment in which the food is prepared should be entirely sterile. If it's possible for them to have heavy metals in their food, who knows what else could be in the food? Just the thought grosses me out quite badly.
Anyway, to find out the above is again quite upsetting. Just because food is processed outside of China does not mean it's safe. There could still be poisonous metals in it and who knows what else. If you ask me, Chinese food exports should be banned entirely until they get their testing facilities up to scratch. Maybe they are getting their act together though, but I'm still not trusting the situation entirely.
From Chinese Embassy in the United States: Chinese Food Exports Are Safe:
China has always attached great importance to opinions and feedbacks from importing countries and regions regarding quality and safety of Chinese food exports. In light of recent incidents, to further strengthen safety of food exports, the Administration for Quality Supervision, Inspection and Quarantine (AQSIQ) in China has taken a series of additional measures. Firstly, checks and tests have been increased. When the exported items fail to match the export certificates, or are found to be problematic, they will be banned from exportation. Warning will be issued on the AQSIQ website so as to increase checks and tests on all food items produced by the company or declared by export agents. Companies that violate regulations will be put on the blacklist and barred from exportation. Secondly, random inspections will be increased of items like toothpaste that are not covered under compulsory checks. Thirdly, starting from September 1, 2007, all food exports that have passed quality inspection and quarantine checks are required to put labels on sale and transportation packages. Fourthly, immediate investigation and timely actions will be taken in response to information from importing countries and regions regarding unsafe food items. Fifthly, a blacklist of companies exporting unsafe products will be set up so as to crack down on illegal exports.
Banned from exporting? Are you nuts? Close the company down!!! I mean, they are selling poisonous products to your own citizens! Don't you care?
Interesting about the labels though, haven't seen any of them yet in South Africa... Could still be old stock the shops are selling though but otherwise there is again reason for suspicion...
Blogger Backup / Export
I'm not naive, yes I probably do border on the paranoid at times but I'm not there to take chances. I just sleep easier knowing that I have backups in place. :)
I recently decided that, having more than 800 posts, this blog deserves a good backup.
Basically I'm just downloading and saving copies of the Atom feeds for the posts and comments. I can only retrieve a hundred entries at a time though, otherwise this would have been two wget's in a bash script. Unfortunately this does not include draft posts, but luckily I don't have too many of them anyway.
<?php
header("Content-Type: text/plain; charset=UTF-8");
$types = array("posts", "comments");
foreach ($types as $type) {
for ($page = 0; $page < 100; $page++) {
$start = $page * 100 + 1;
$data = file_get_contents("http://blog.charlvn.za.net/feeds/$type/default?max-results=100&start-index=$start");
if (strpos($data, "<entry>") !== false) {
file_put_contents("$type/$page.xml", $data);
echo "Saved page $page of type $type.\n";
ob_flush();
flush();
} else {
echo "End of type $type at page $page.\n";
break;
}
}
}
Very basic for the moment, but that's all I need, really. I'll have to create an import script if something goes wrong though or I want to move my blog, which might also happen sometime soon.
Ubuntu 8.04 LTS Beta (Hardy Heron)
Early this morning I saw that the Beta release of Ubuntu 8.04 Hardy Heron was just released so I downloaded the 64-bit version while I was sleeping this morning and installed it today.
I was honestly not very impressed with Gutsy. I put it on my laptop as a fresh install and it bombed out bigtime. The fonts were ridiculously large in size and after logging in Gnome totally freaked out. I put it on my desktop. Everything worked, except the sound. Scanned the forums, tried various hacks but still no luck. For both, I went back to Feisty.
I was a little worried about Hardy now but I thought it was worth a try. Installed it on my desktop, sound works, everything else works. The only issue I had was with my display driver. I couldn't go up above 800x600. Just ran displayconfig-gtk and selected my display manually. Logged off, logged back in again and all was sorted. Quite beta indeed - I see it even bundles the Firefox 3.0 beta.
PHP Magic Quotes Gets Deprecated
From the first moment I discovered PHP Magic Quotes I hated it. The feature is entirely illogical. There are tons of things I could do with a request variable. To just assume I want to insert it into an SQL statement is crazy. You might want to insert it into a mail for example, or back into the response page. Now I have to go and use stripslashes every time? You could also insert strings into an SQL statement that is retrieved from other sources, for example from an API call or from a flat file. In my opinion, you should use ORM or find another standardised method of escaping the strings you insert into an SQL statement. There are tons of techniques available.
This must be the best news I've heard in a while. Finally the guys are getting smart with PHP 6. From the above page:
This feature is DEPRECATED and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.
Yay! I have been disabling this for a long time now in my .htaccess files:
php_flag magic_quotes_gpc off
Now finally they dump this ridiculous feature altogether.
Google Summer of Code: Africa is on the map
As Neil already blogged, Translate.org.za has been chosen as one of the mentoring organisations for Google Summer of Code 2008. This is excellent as this already puts Africa back on the GSoC map; now I just hope that there will be lots of African participants this year! As previously mentioned I will not be applying to participate as a student this year simply because I am no longer a student (and with work I wouldn't really have enough time anyway). I might become again into the future and apply but just not this year. :)
Believe me, this is really worth the experience. It is a lot of work, it isn't easy, but the benefits of participating are immense. You will learn a great deal of working with an open source organisation; if you wanted to get into one, this is a very good way to get a "foot in the door" (so to speak).
If you need some "inspiration", feel free to contact me and I'll try my best. :)
Update: Only saw just now after reading my feeds, this was featured on Tectonic as well.
Zend Framework 1.5 Released
A few days ago I blogged my feelings about Zend Framework, and got some great feedback as well.
I actually blogged after working with 1.5 but at that point in time it was pre-release (I actually worked directly from the trunk). However, now it's been officially launched and the site got a revamp together with that, and it's looking great! Well done guys, keep it up!! Will blog lots more about the platform in the next few weeks.
Just not so sure about those error messages yet but will follow that up.
I am outraged
SMTP is inherently insecure. There is nothing preventing anybody anywhere in the world from sending mail as me.
When I opened up my mailbox this morning I was horrified to find literally hundreds of bounces from various mail servers. It seems like some massive spam operation is sending messages with from addresses on two of my domains, charlvn.za.net and standards.za.net. This is just horrible. Those people must come here and I'll show them what I do to spammers. ;)
The worst thing at all is that this is a broken internet, not my setup, therefore I can do nothing!!!
Back in George
Really glad to be back in George again! First a week in Cape Town, then two weeks in Gaborone, now back in the Garden Route finally!
This morning when I left Gaborone, it was raining very hard. After landing in Johannesburg, I finally got to meet Tyler Reed in person at the airport, then had to rush off to catch my connecting flight to George.
What a disaster! We were standing in the shuttle bus for I don't know how long. Then when they eventually left, the driver took us for nice drive all around the air strip. Felt like an episode of "Around the airport in 80 minutes" or something. Then we went all the way back, the driver ran out of the shuttle! Eventually he took us back around to our airplane. It was raining hard again, also there!
Then when we were sitting in the airplane we got another delay. Some other thing broke on the road so they had to clear that out of the way first. Eventually we took off - arrived in George like an hour or so late! Oh well, it felt so good to be home, I didn't really care. :)
Now I'm back in front of my ADSL that is k@k slow!!!! Eish I miss the internet access up there. But at least I am back home, have lots of nice Woolworths food and comforts, etc! Lekke to be back at HQ!!
Zend Framework: General Feelings
I have been working intensively the last week or two with Zend Framework. In general, I have mixed feelings about the platform. I heard many good and bad things about it in the past so it was a great experience for me to take it for a test drive myself.
Firstly, one of the things I like about the framework is that it does not force you to take the "all or nothing" approach. You can actually strip it apart and only use the various packages you want to use individually. In other words, you can actually use it more like a collection of libraries than an actual framework if you prefer.
So far I am rather impressed with the various packages. Sure, they aren't everything, right. But I feel that the overall quality is pretty good. The documentation isn't perfect yet but it's better than much of the rest I've seen.
What I'm not so impressed with is the actual MVC framework. You need decent errors, especially when you are moving from one method to the next. Just getting an error telling me that there has been an invalid controller specified does not help me when the controller is actually correctly specified but the action is wrong. Or, the controller and action are right but the view cannot be found. These things need separate error messages I believe.
Anyway, the "framework" is then extremely minimal. There are no default configuration and database connection objects established, etc, these you all have to sort out yourself. In other words, my feeling is that Zend is less of a "framework" (as I would expect it, comparing to other "frameworks") and more of a "framework to build a framework". So this gives you great flexibility and that I like, but it's the kind of framework you want to spend some time with, not the kind of framework you just want to get set up and running with in 5 minutes with everything ready for you straight out of the box.
Also, although I'm a big fan of straight PHP templating (but that's another post), I wouldn't mind seeing a "proper" templating engine incorporated into the framework, even if it's optional.
Going forward, I will definitely continue to make use of Zend as a library. I might build my own framework around the Zend MVC framework but it definitely needs to be built out quite a bit. If I'll build on top of the Zend_Controller system is something I need to decide on, but probably not. Personally, especially for larger systems, I like to be a bit more maximalist on the actual framework so that it really streamlines the development of the rest of the system and hopefully standardises the "common" structure as far as possible. This is especially important when you have a larger project that runs over a couple of months or even years, and even more so when multiple developers are involved. Having everybody running around doing their own little thing can easily turn into a disaster.
Pingbacks and Trackbacks: My Comparison
Introduction
Here is a short summary of how I feel about the Pingback specification relative to the Trackback specification.
RESTfulness
Pingback makes use of XML-RPC which is probably fine if you're using a language with a built-in XML-RPC library like Python but quite pesky if you're using something like PHP where you have to use separate libraries.
Trackback on the other side uses basic REST. So as far as RESTfulness is concerned, Trackback scores.
Spam
Trackback does not define that the receiving site needs to verify that the sending site actually does have a link to the receiving site. Pingback on the other side does, which makes it more resilient (although not immune) to spam. Therefore, Pingback scores in this department.
Auto-discovery
Trackback uses embedded RDF. This is complex and ugly to me. Way over-complicated if you ask me!
Pingback uses two methods. The one is a link element and the other is a proprietary field in the HTTP response header. For me, this is kind-of silly. I like to have one way of doing things as that makes for simple implementation. As far as I'm concerned, they should have just stuck to the link element as I'm sure everybody can read and modify that fairly easily. Or then again, maybe not. But at least the exact markup for the link element is defined and even the regular expression for parsing; that makes things a lot simpler. I like that.
Overall, I'm not perfectly happy with either, but I prefer the Pingback approach by a long shot!
Fields
Pingback only sends the source and destination URIs. Trackback also allows you to send a title, excerpt and blog name. Pingback lets the receiving site figure all of this information out. It doesn't always work that well as sometimes the Pingbacks look quite ugly as the information has to be extracted from the (X)HTML of the source site. This does allow for a certain amount of spam-proof-ness though.
Personally I would allow all the Trackback fields and just make sure that all the text appears at least once in the source page. So therefore, I have to pick Trackback here.
Conclusion
I would really like a standard that is RESTful, has some more parameters in the call but is otherwise really simple and very strictly defined. That makes for simple implementation but yet provides quite a bit of power. I wouldn't mind taking the best of both worlds and add my own flavour into the mix but unfortunately it would be a bit late now to introduce yet another standard. Maybe something I can work on anyway though and provide gateways for Pingbacks and Trackbacks.
Going Web 2.0
Ok so I thought since the whole world was going Web 2.0 I might as well create myself a noob logo with the Web 2.0 Free Logo Generator.
Update: Ok so apparently the flipping logo should have been lowercase. Like I give a shit. Oh well, here goes:
Disclaimer: This is not for drinking your coffee with! Or your beer! If you spray the liquid all over your keyboard and computer screen I take no responsibility!!!
FriendFeed
Earlier today Jayx invited me to use FriendFeed and tonight I see it's featured on TC as well so I decided to give in and open an account. After all the interesting researching earlier today (where people generally support OpenID), I was disappointed to have to "register the old way" now. I was surprised to see how many of the people I know in Facebook was on there already. Makes me wonder what all these people do for a living... :P
Anyway, initially I couldn't catch it but now after checking out how many different social services it can aggregate I'm actually quite impressed. Back in the day I used to think Suprglu was cool but now I'm starting to think twice.
Still, other than being a super-aggregator, I'm still not entirely sure what all the hype is about. I couldn't even get my flipping blog imported. Firstly I give it http://blog.charlvn.za.net/ and then it told me that it could not find my link element. If you ask me, it's just bad algorithms. Then I gave it the full path to my feed and it complained it could not open the page. Bah.
Anyway, other than that, I guess it worked pretty cool. Just get some OpenID integration please guys, thanks!
In unrelated news, my mom got herself a Facebook account (so that she could see some photos posted to Facebook by somebody else - eish). For the first time in a while, I logged into MySpace. I almost forgot I had an account. Now I know why it isn't so popular (at least not in South Africa). I found it pretty difficult to figure out how to find my way around. Needs some serious redesigning in my opinion! Facebook has a much nicer look and feel. I just don't find it that nice that I would go and re-create it though. But it's anyway miles ahead of MySpace (for me).
Update: And finally registered a Blueworld account!
Getting my groove back...
Yesterday evening I came down with a pretty nasty stomach bug that basically took me out for the night. Am pretty pissed at that as I lost some valuable online time but I guess these things happen. The last two weeks I have been confronted with lots of "RL" issues but that's also a good thing as that keeps one's head "on the ground" so to speak.
Most of today I've been feeling pretty crap still so didn't manage to focus on much work but at least I managed to browse around a little and do some research. Clearly, a lot has gone past me! After researching a bit, I am starting to get "back into it" which feels great.
Firstly, I read Yahoo Embraces The Semantic Web - Expect The Internet To Organize Itself In A Hurry on TC this morning. Then I watched an old video from Scoble Editors Choice of Twine, the semantic Web tool. I applied for my Twine beta invite ages ago but never received one. Eish!
Later I watched the first part of a talk by Leah Culver on OAuth. I then read up on OAuth a bit and briefly checked out the specification. I had to see it in action so finally logged back into my old ma.gnolia account and registered an nsyght account.
The more I see of OpenID and OAuth the more excited I am getting!
While I was going through my ma.gnolia account options I also found my way to APML and Engagd. I'm not sure if I'm supposed to pronounce the latter "engagged" or "engaged" but I guess it should be "engaged" as "engagged" sounds rather stupid. I am actually starting to dislike these "leave out the last vowel" style names as it's such a Flickr legacy but oh well. Actually the "dot in the name" like ma.gnolia is also starting to feel stupid as it's a real del.icio.us legacy. Funny that these things only seem to work for me when they are fresh.
Anyway, getting back to the sites, my overall feeling after today is that the semantic web is back on track. Definitely lots of very interesting discussions taking place all around the web at the moment. I can't wait to get back to the SDSN stuff, etc.
Update: Been checking out the OpenContacts wiki, very cool, also the Soocial approach sounds brilliant, I want my flipping invite code!!!
Joomla! SEO wiki opened
Three weeks ago some of the brighest SEO minds in the Joomlasphere took up the challenge to form a thinktank and bring together their thoughts for improving SEO in Joomla! 1.6.
Today this team is happy to announce the opening of a public wiki for the Joomla! community to get involved in this process. Over the next 2 weeks we would like to gather as many ideas, suggestions and concepts as possible.
At the end of the 2 weeks, the information in the wiki will be turned into a ‘White Paper’ that guides SEO improvements in the next Joomla! releases.
The wiki is here: http://joomla-seo.pbwiki.com
Want to be part of Joomla! history? Here is your chance: just register and start contributing.
Thanks, the Joomla! SEO team.
(Originally posted on the Joomlatools blog.)
Bye-bye Rand! :)
Well, there we go again. This time luckily I am not that stressed, getting paid in overseas currency can help alleviate stress levels in times like these. :)
A couple of years ago, the Rand fell right through the floor. Now this is on its way to happening again, or so it would appear (it might be a little early to say, the Rand has wobbled a lot over the last few years). Some people thought we would have to wait for Zuma to become president before this would happen; well now it's happening even earlier.
It seems like the USD is also taking some strain unfortunately, that's why I don't think it's just the country itself that is making the Rand fall. It is probably the overseas market in general that is wobbling.
Nevertheless, at time of writing, an Euro will cost you well over R12.
I actually don't mind that much, it's just that overseas imports become ridiculously expensive. Particularly, computer (and other electronic) equipment. Even international bandwidth prices could be affected. That again means that people like me can have a lower (tech) living standard.
This time I have committed already though that I will be buggering off if the situation gets too bad. I'm definitely not putting up with this shit. I'm sure many other educated South Africans won't either, and so the country loses yet more of its valuable skill base.
It's kind-of funny to think about it like that. The wealthy economies are getting even wealthier and the poorer economies even poorer. The wealthy economies attract intelligent, educated, well-skilled individuals. The poorer economies shed them. The talent imported into the wealthy economies make them even wealthier and the talent loss of the poorer economies make them even poorer. It's an evil circle, but good economic policy, stable politics, etc can help to alleviate that. I used to think South Africa has that (even despite the typical overseas African stereotypes) but I'm no longer so sure.
For further reading, see the article by twobombs Rand Collapse.
PHP -> Google Calendar -> Outlook
Just in case you ever had the request from clients to integrate your PHP app with Microsoft Outlook's calendar, now you can; however, you have to use Google Calendar in the middle. If that's fine though, you can use a Google Calendar PHP library such as Zend_Gdata_Calendar and the new Google Calendar Sync installable.
We really need some open standards in the middle though so that whatever can directly speak to whatever else. Something like hCalendar might come in handy but we need a full API.
Apple iPhone in Botswana
Yes, the iPhone is available in Botswana, even before it's available in South Africa (unless I missed something). It's pretty expensive though. It should also be noted that there are only two mobile network operators here (at least that I'm aware of): Mascom and Orange.
Interesting, yes?
Vodacom 3G and Private IPs
This is really silly to me. Vodacom gives you a private IP address if you're accessing through 3G. This means you can't run a server using your 3G even by using dynamic DNS. The only way to get into your server is to establish a connection outwards to a server somewhere else, via using SSH or a VPN for example, and then connecting in again via that server.
Ok, so who wants to run a server on 3G anyway? It's too unreliable and expensive, you might say. Yes, indeed. But what if you have a server standing on-site (for example, an intranet server but you need to be able to get in remotely). If there's no landline connectivity available, you have to go either GPRS, EDGE, 3G, WIFI, WIMAX or whatever. Or what if the landline connectivity is too unstable and you need a backup.
Now all you can do is connect outward and then hope that the other server you're connecting to doesn't go down as well.
I can't help wondering though why Vodacom is doing this. Is it because they have a shortage of public IP addresses? Is it because they want to make it difficult to run a server? Well, the latter wouldn't make sense because with the rates they are charging, it could only benefit them to have as much use on your connection as possible.
Update: Oh yes, and this can create issues for peer-to-peer as well obviously because every node is a server in essence. Another typically very bandwidth-hungry service I'm sure Vodacom would love to accommodate, unless they genuinely have an issue with their network capacity (which, taking the speeds into consideration in some areas, does seem to be the case). The maximum I got via 3G so far was about 60 KBps.
Another update: Stefano found a way to get a public IP address.
Windows Live Messenger via Gaim
I wonder why I keep having issues with using the Windows Live Messenger protocol via Gaim... When I send people messages I often get this silly Message could not be sent because an error with the switchboard occurred:
error message. This is so irritating! Unfortunately Jabber does not want to get through the firewall at my mom's work otherwise I would have liked to switch her over to that entirely. She is using that at home exclusively though. XMPP is just so much better. Although, in this case I wonder if the issue is related to Windows Live Messenger or to Gaim? I had simialr issues with Pidgin before as well.
Live GPS Tracking
Lots of people would probably spit on this, but I find this a massive development for countries polluted with insane amounts of violent crime such as South Africa.
Check out Trackr.nl.
If you have a GPS enabled phone, this effectively lets you show your friends exactly where you are and even where you've been. Imagine you are a parent and you can do this with your children, it would give you so much more peace of mind...
In South Africa this is not a new concept however. There are some services such as Look4me. However, these services are ridiculously expensive. Any time you want to see where somebody has been, you have to pay more than a Rand in addition to a monthly subscription fee. Come on people, we have GPRS/3G/EDGE!!! Also, the service is extremely primitive. It does not provide nice maps or history or anything it seems. Bah.
So if you don't have a GPS enabled phone, you can use triangulation to give a rough estimate. Also, say I want to publish some information about this on my blog, microblog, or any other form of social networking. Could be very rough information, not detailed (for privacy and security reasons) to the general public. Let's just say my current city, for example, George, Cape Town, Johannesburg or Gaborone. There should be a nice API available for me to use.
Any thoughts? Let's develop something like this, sounds like fun. :)
Update: Just remembered, Fring can also already do this, I'm just not so sure about an API or about history. I'm looking for something open source though, anybody know of anything?
CWD in PHP
It's considered good practice by many to have most of the PHP scripts of your application sit outside of the directory which is accessible via Apache. In other words, you might have this:
- application
- controllers
- IndexController.php
- ErrorController.php
- models
- views
- controllers
- html
- .htaccess
- index.php
In this case, Apache's vhost config should point to the html directory. Then from there it should include the code in the other directories. If this is not possible, you can also use the .htaccess file to block direct access to the other scripts.
As in my previous post, you could use this to fire up the controllers:
Zend_Controller_Front::run('../application/controllers');
Or, you could:
<?php
chdir('..');
require_once 'Zend/Controller/Front.php';
Zend_Loader::registerAutoload();
Zend_Controller_Front::run('application/controllers');
Using chdir, you literally change the current working directory that PHP is using and now you don't have to include ../ at the beginning of subsequent paths anymore. For example, now you can also:
$config = new Zend_Config_Xml('application/config.xml');
Probably a little stupid, but it just feels cleaner and neater. Also helps later if you want to move the application directory into your main web directory on a funny server, you can simply remove the chdir call in index.php.
Jokevn now has her own blog!
Just wanted to welcome my mom to the blogging world!! She set herself up, not half bad for the "technologically disadvantaged" generation. :)
Black liquids fueling the economy...
Every now and then you might hear in the media that it's crude oil that fuels the economy of industrialised nations such as the USA and South Africa. However, after waking up to having three great cups of Nescafé café latte this afternoon, I think there is another potent black liquid that fuels the economy even more - good strong coffee!
Any thoughts? Also check out these great recipes!
Windows 64-bit: I must be missing something!
This is really funny...
The typical dual core Intel or AMD machine you buy at the shops is 64-bit. However, all too many of them get sold with 32-bit Windows licences in South Africa. Check out Incredible Connection's notebooks, desktop computers, etc. for example! Of course, bundled licences are evil to start with, but apart from that, what's the point selling a 32-bit operating system for a 64-bit machine??
Zend Controller Quickstart Notes
Here are some tips in addition to the Zend Controller Quickstart Guide. Firstly, there is no reason to keep using require_once or whatever. Here is my index.php:
<?php
require_once 'Zend/Controller/Front.php';
Zend_Loader::registerAutoload();
Zend_Controller_Front::run('../application/controllers');
I just use Zend Loader's Autoloading feature.
I have a central installation of the Zend Framework libraries. In my case, it's in /var/www/library/Zend. Basically, my .htaccess file looks like this:
php_value include_path .:/var/www/library
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
This is just to make this site specific though but there are a thousand different approaches you can take to that. Also, I had no intention using something like PEAR in there.
Oh yes and almost forgot to add. Inside of /var/www/library I basically just typed:
svn co http://framework.zend.com/svn/framework/trunk/library/Zend
Hope that saves somebody some time. :)
Zend_Acl
Although I'm a pretty big fan of Zend Framework in general, it does disappoint me in some ways.
For example, take a look at the Zend_Acl library. It would only be natural for me to want to use a proper data store, but oh no. According to the Storing ACL Data for Persistence section:
Zend_Acl was designed in such a way that it does not require any particular backend technology such as a database or cache server for storage of the ACL data. Its complete PHP implementation enables customized administration tools to be built upon Zend_Acl with relative ease and flexibility. Many situations require some form of interactive maintenance of the ACL, and Zend_Acl provides methods for setting up, and querying against, the access controls of an application.
Storage of ACL data is therefore left as a task for the developer, since use cases are expected to vary widely for various situations. Because Zend_Acl is serializable, ACL objects may be serialized with PHP's serialize() function, and the results may be stored anywhere the developer should desire, such as a file, database, or caching mechanism.
Firstly, they put this under the advanced page which is ridiculous. This is the basics. So they actually expect me to serialise and deserialise the objects every time?
Imagine I have a complex system with potentially tens or even hundreds of thousands of access rules. Now I have to go and load all of them from the database / a flat file and save everything back if I only make a single change to anything. Absolutely ridiculous, that's all I can say.
This should have a couple of database tables, and only the information that is needed should be retrieved or stored as necessary. PHP is not great when it comes to managing huge amounts of data in memory, or at least not in my experience. MySQL is made for persistence and managing large quantities of data.
So honestly I think they are missing the point entirely. That is one part of Zend I will not use and rather replace with my own subsystem.
PHP: You decide!
I am a major fan of PHP, simply because it lets me get the job done. In my experience, PHP 5 is extremely fast, powerful and easy to develop with.
Not everybody would agree though. Yes, the language has its limitations and lots of people find it hacky and ugly. I think it can be quite hacky and ugly but it can also be quite clean and structured, depending on how you code.
I found some votes on Jyte that I thought was quite interesting:
I agree with all three of these but it seems like, at the time of writing, I'm only winning with the first. :)
PHP Atom to JSON Converter
This is a fun little experiment I tried the other evening. I used the SimpleXML and JSON PHP extensions to convert the Atom feed of this blog to a simple JSON feed. It doesn't have all the fields in, I am just copying the post titles and permalinks. But obviously you can include whatever you like with some simple modifications to the script.
Firstly, I used the following script to do the conversion:
<?php
$callback = isset($_REQUEST["callback"]) ? $_REQUEST["callback"] : "processFeed";
$xml = new SimpleXMLElement("http://blog.charlvn.za.net/feeds/posts/default", 0, true);
$json = array();
foreach ($xml->entry as $entry) {
$json[] = array("title" => (string) $entry->title, "link" => (string) $entry->link["href"]);
}
header("content-type: application/javascript");
echo "$callback(" . json_encode($json) . ")";
Then I built the following little example page as a consumption demo:
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JSON Feed Example</title>
<script type="application/javascript">
function processFeed(feed) {
var ul = document.createElement("ul");
for (var i = 0; i < feed.length; i++) {
var text = document.createTextNode(feed[i]["title"]);
var a = document.createElement("a");
a.setAttribute("href", feed[i]["link"]);
a.appendChild(text);
var li = document.createElement("li");
li.appendChild(a);
ul.appendChild(li);
}
document.getElementsByTagName("body")[0].appendChild(ul);
}
window.onload = function() {
var script = document.createElement("script");
script.setAttribute("type", "application/javascript");
script.setAttribute("src", "http://example.com/json.php");
document.getElementsByTagName("head")[0].appendChild(script);
}
</script>
</head>
<body>
</body>
</html>
This is obviously HTML 5 but effectively you need to change http://example.com/json.php to the URI of your PHP script. The script also allows you to change the name of the callback function so if you want to add more than one feed to a page you can call different function names, for example you can request json.php?callback=bah from the script and it will call function bah(whatever). But I mean you can easily customise as you need to from here, this is just a simple example, not a real implementation. You will need some error handling too since you are requesting a document on a remote server.
PHP 5.2.1 on Ubuntu Feisty??
Ok this is ridiculous. According to this wiki page, Ubuntu Feisty is supposed to be supported until October 2008. I have feisty, feisty-security and feisty-updates enabled in my /etc/apt/sources.list. However, after a fresh upgrade I still only have PHP 5.2.1 installed. In the meantime, we are already sitting at 5.2.5. 5.2.2 had security fixes, 5.2.3 had security fixes, 5.2.4 had security fixes, and even 5.2.5 had security fixes. 5.2.2 was released on 03 May 2007. Yes, more than 10 months have passed since then. The php5 package is maintained by the Ubuntu Core! Surely somewhere during the line, the Ubuntu packages should have been updated?
No really, I am a big Ubuntu fan but right now I am lank disappointed....
charlvn@aurora:~$ apt-cache show php5
Package: php5
Priority: optional
Section: web
Installed-Size: 20
Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
Architecture: all
Version: 5.2.1-0ubuntu1.5
Depends: libapache2-mod-php5 (>= 5.2.1-0ubuntu1.5) | php5-cgi (>= 5.2.1-0ubuntu1.5), php5-common (>= 5.2.1-0ubuntu1.5)
Filename: pool/main/p/php5/php5_5.2.1-0ubuntu1.5_all.deb
Size: 1080
MD5sum: b9686d98938e4d4729a4de865f608c50
SHA1: 7d0bef37ecf2159ccea283c0198124a87fc3004f
SHA256: 35d465a873baa9cdd42ac455441469436558daf06ae405163bc19d9cd98fc37e
Description: server-side, HTML-embedded scripting language (meta-package)
This package is a meta-package that, when installed, guarantees that you
have at least one of the four server-side versions of the PHP5 interpreter
installed. Removing this package won't remove PHP5 from your system, however
it may remove other packages that depend on this one.
.
PHP5 is an HTML-embedded scripting language. Much of its syntax is borrowed
from C, Java and Perl with a couple of unique PHP-specific features thrown
in. The goal of the language is to allow web developers to write dynamically
generated pages quickly.
.
Homepage: http://www.php.net/
Bugs: mailto:ubuntu-users@lists.ubuntu.com
Origin: Ubuntu
Package: php5
Priority: optional
Section: web
Installed-Size: 20
Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
Architecture: all
Version: 5.2.1-0ubuntu1
Depends: libapache2-mod-php5 (>= 5.2.1-0ubuntu1) | php5-cgi (>= 5.2.1-0ubuntu1), php5-common (>= 5.2.1-0ubuntu1)
Filename: pool/main/p/php5/php5_5.2.1-0ubuntu1_all.deb
Size: 1074
MD5sum: 8115e12e1069008953a2654e178b0695
SHA1: 4fe317d5110e3b661f42a4f80f68a2f51cc938d4
SHA256: ff265ef87275dd1a701e2b358d6e1d8aacea3ed76ae20c77529457c2b8b162da
Description: server-side, HTML-embedded scripting language (meta-package)
This package is a meta-package that, when installed, guarantees that you
have at least one of the four server-side versions of the PHP5 interpreter
installed. Removing this package won't remove PHP5 from your system, however
it may remove other packages that depend on this one.
.
PHP5 is an HTML-embedded scripting language. Much of its syntax is borrowed
from C, Java and Perl with a couple of unique PHP-specific features thrown
in. The goal of the language is to allow web developers to write dynamically
generated pages quickly.
.
Homepage: http://www.php.net/
Bugs: mailto:ubuntu-users@lists.ubuntu.com
Origin: Ubuntu
You can also view the apt package details on the web.
Dividing ZA into two timezones?
I was just outraged when I read Govt considers dividing SA into two time zones. I mean, how ridiculous!!!
Us all being in one time zone makes things simple. We can communicate to each other a certain time without having to worry who's in which time zone.
Now they want to change this because it might lead to less more distributed (in terms of time) power use.
Well fine, why do you want to change the timezone for this? Just change the flipping working hours!
For example, in Gauteng the sun comes up much earlier than in the Western Cape because Gauteng is more towards the eastern side of the country.
You definitely don't have to make an entire time zone shift for this. Just say, for example, that standard working hours in Gauteng is from 07:00 in the morning until 16:00 in the afternoon and standard working hours in the Western Cape is 08:00 in the morning until 17:00 in the afternoon.
In my opinion, that will be much simpler because now at least we won't have to ask "In which time zone are you?" every time we have to make an appointment and adjust our watches when traveling nationally.
Your thoughts?
27 Dinner February 2008
Last month I attended the February 2008 27 Dinner during my visit to Cape Town. There was a relatively small amount of people (only around 50) which kind-of seemed boring at first but reflecting back I definitely agree with Dave that if there are too many people it's difficult to keep track of things. I think this event was of a comfortable size and I really, really enjoyed it.
First I got to see some familiar faces, including our former Garden Route girl Bev who recently decided to desert us for life in the Mother City. :P
Later I got to finally meet Charl Norman in real life!
I also had an extremely interesting chat with Ian Gilfillan regarding organic food, medics and general health issues. I vote for him giving a talk at the next Geek / 27 Dinner about this!!!
They had fantastic coffee and some great cheesy food at The Wild Fig so really loved the night. We just wanted some more potatoes for Dutch people such as Jayx and myself... ;)
Also, cheers to Robynn for starting her new blog and to Dave for "opening up" the 27 Dinner and making this a fully community-driven project. Extremely cool move, am looking forward to having a 27 Dinner over in the Garden Route as well sometime!
All in all, wonderful event, thanks so much guys, was more than worth it!
No wget? Use lynx. :)
I have access to a couple of managed Hetzner server machines. For some crazy reason, they just don't allow the wget command if you log in via SSH. I sent them mail about this and they claimed that SSH is an optional extra, even though it was enabled as standard for me. They also claimed that wget is an extension of PHP, which I really don't figure.
Anyway, if wget gets blocked you can always use lynx if you have that. For example:
lynx -dump http://switch.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.11.5-all-languages-utf-8-only.tar.bz2 > phpmyadmin.tar.bz2
And some more noobs just got sk3wl3d.
PHP: The Single / Double Quotes Red Herring
Coming out of a C++ / Java background, I initially hated the PHP var-between-double-quotes thing. For example:
echo "This is my var: $myvar";
I just objected fundamentally to this and prefer:
echo "This is my var: " . $myvar;
However, if you have a code editor with syntax highlighting, this makes it look rather clean.
I generally prefer to use double quotes for three reasons:
- I can embed variables directly.
- I can use
\nand\tand get the desired effect. - I can use my other convention to use single quotes in SQL queries.
Using single quotes is more efficient because it does not have to check for so many different characters, but at the end of the day we use PHP not because it's the most efficient (then we would probably be using compiled binaries through CGI or a custom web server) but because it's clean, simple and efficient (to some). However, this is not clean for me:
mysql_connect('localhost', 'myuser', 'mypass);
mysql_select_db('mydb');
mysql_query("SELECT COUNT(*) FROM `noobs` WHERE `status` = 'pwned'");
There is probably nothing wrong with this but using single quotes the one moment and using double quotes the next just feels inconsistent.
Then of course you get this:
header('Content-Type: text/plain');
echo 'This is one line of text.' . "\n";
Not my kind of thing either.
Then you have the issue of, what I like to call, "evolving filth"... You start out with:
$query1 = "SELECT COUNT(*) FROM `noobs` WHERE `status` = '$status1'";
$query2 = 'SELECT COUNT(*) FROM `noobs` WHERE `status` = "pwned"';
Now somewhere down the line, you realise "oh shit pwned should not have been hard coded but passed as a variable". Now you have two choices. Either go and replace the single quotes with double quotes and vice versa (pesky...) or just "hack it":
$query1 = "SELECT COUNT(*) FROM `noobs` WHERE `status` = '$status1'";
$query2 = 'SELECT COUNT(*) FROM `noobs` WHERE `status` = "' . $status2 . '"';
Now that's a real mess. Although some people would have gone for the "proper" solution like me, I happen to know many that would have gone for this one instead.
So I dunno, I just like to set down standards and stick to them. In other words:
- Double quotes are for PHP, always.
- Single quotes are for SQL, always.
Thoughts, flames, or other shit? Comment! :)
bloggggg (one more "g" ftw)
I just read blogggg! A blog engine for the ages.
WTF?! ROFLMFAO!!! These Python noobs... We can do this much better in PHP. For example:
<?php
require_once "lib/orm/massiveproductions/tehbigshit_include.php";
session_start();
$_SESSION["orm"] = new MyMassiveORMTehBigShit();
$_SESSION["orm"]->load("myhost", "mydb", "myuser", "mypassword");
$_SESSION["orm"]->suck($_REQUEST);
echo $_SESSION["orm"]->spew();
session_destroy();
This makes so much more sense! Especially the session management, it's just brilliant...
Feedlr
I heard about Feedlr on the Twitter developers mailing list today. I thought there were already similar systems but this one is actually quite cool. They still have some "minor" usability and technical bugs to sort out (like double-encoded special characters in feed titles and the separate validation of the Twitter username / password) but I have to say that the intense use of Ajax gives the site a nice all-round feel, although it comes at a cost in terms of accessibility (try disabling JavaScript). Also, why is a Twitter account called a "bot" and not just a "Twitter account" or "Twitter microblog"?
Otherwise, I quite enjoyed setting up with a charlvnfeed with all my shit syndicated to there. All round, exciting project!
RIP jabber.obsidian.co.za
Ok, this is the first of March which means jabber.obsidian.co.za has now officially been pwned. If you haven't done it so far, it's time to move to jabber.co.za now.
As previously blogged, my username is now charlvn@jabber.co.za and my mom's is jokevn@jabber.co.za.
It's the Fix
I have a new philosophy in life: It's not the problem, but the fix that defines us.
Sometimes a situation hits you and there's no way you can stop it and you get all stressed up. I had a really bad personal episode in my life the last two months that I would rather like to forget. Now that I reflect back, I'm actually totally stupid. Instead of focusing on the problem, I should have focused on the solution. There is nothing I could have possibly done to prevent it. But I could have handled it better. It's the way you handle a situation that people remember and will respect (or disrespect) you for.
Back in Gabs Again!!
Wow I am so stoked to be back in Gaborone - really excited. It's flipping hot though!
I should be available on +26 7457 5943 for the next two weeks until I'm back in South Africa (while I'm not in meetings though).
Blogger in German
When I sit down at the airport on insecure wifi, I open up an SSH tunnel to my site in Germany and pass all my web traffic through that.
Blogger and many other sites clearly serve languages not according to my preferences set in Firefox (and therefore passed in the Accept-Language field in the HTTP Request Header) because most people don't bother to configure that. In Blogger's case, they prefer to pick the default language according to the source IP address. When I use the SSH tunnel, it appears to Blogger that I'm accessing the site from Germany and therefore I get the page served in German.
After I log in though, my preferences get read and I get served normal English. (When are they adding Afrikaans?)
Copyright © 2004-2009 Charl van Niekerk. All articles are released under the Creative Commons Attribution 2.5 South Africa licence, unless where otherwise stated.









