Main
Latest
- South African Embassy
- Green Card Lottery 2008
- Zend Framework Google Login Example
- Custom Muti Widgets
- Google Social Graph API and PHP 5.2
- Google AJAX Feed API Muti Example
- Gnip API Changes
- Google Maps and Geolocation
- oEmbed, flickr and starstar
- Petition Against Public Holidays
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
Enterprise 4.0
We come out of a tradition of Enterprise 1.0, these days sometimes known as “old-school business”. Then the focus shifted to social networks, and Enterprise 2.0 was born. Now people are talking about Enterprise 3.0, which includes Software-as-a-Service (SaaS) and Extended Enterprise (EE) principles.
These are all probably good shifts in the industry and are very exciting, but I still think people are missing the point. In my opinion, enterprises shouldn’t get version numbers based on concepts and technologies they adopt, but things should be much more focused on how the corporate structure is set up, from top-level management to the actual people working on ground level.
Actually, giving anything version numbers (HTML, the Web, the Enterprise) are a bit silly as things keep evolving continually and we shouldn’t limit ourselves, but let’s leave that discussion for now.
So, what do I believe Enterprise 4.0 is all about? Personally, these are my ideals…
In the traditional setup, companies “own” their employees. They need to sign a contract that they will work exclusively for one company, and everything that comes out of their brain basically belongs to that company, if the company wish to actually do something with that or not.
Let’s face it, it doesn’t matter if you’re right-brain or left-brain centric, humans are naturally creative. It doesn’t matter how you see creativity; some people believe it is “random neurons firing” and is a product of our imperfect reasoning. Others believe it’s related to the supernatural. However, some of the most fascinating scientific discoveries mankind has ever made was due to pure accident or some kind of “imperfect” situation. Look at how electricity and plastic were discovered as examples.
The main thing limiting our creative abilities is us, our education, our own fears and insecurities, our perfectionism, our OCD, etc. The education system is aimed at teaching us skills, not inspiration. Companies need to make money. Managers want you to look after their immediate wants and needs, not facilitate your creative process. Schools want you to achieve top marks, often by absorbing and regurgitating information just like a parrot. We have yet to see a parrot invent any useful technology.
By now it might sound like I’m against the traditional corporate structure and the typical corporate bureaucracy. Of course I am not in favour of a bureaucracy, but that’s not the point of the article. Things have started to change and I’ve seen these changes recently at some major South African and international companies, which is very positive.
But how are we to work into the future? Let’s face it, managers are scared. I don’t believe they want to push down their employees and limit them in their abilities, but their fears of not being able to meet deadlines and keeping “control” of their employees are essentially killing most of their employees’ creative abilities. Also, we have to realise there are other selfish issues involved. Some managers are scared their employees might take their positions if they get too “smart”. These are all commonly known facts and are some of the reasons Dilbert comics are so popular.
It is still very common to require employees to come into a physical office every day, work normal office hours, report if they are unable to come to work, etc. There is nothing fundamentally wrong with that. There are too many “chancers” out there that would gladly abuse their privileges in the workplace. The simple answer would be “well, fire them if they don’t do their work properly”. Yes, until you have to contend with South African labour laws, which are also a necessary evil as there are no proper social security systems in place in South Africa other than the Unemployment Insurance Fund.
So, what is my ideal working environment? How would I see the employee of the future? I see people that are able to work their own hours, unless when real-time meetings are an absolute must. I see people that can work from anywhere in the world, unless again for physical meetings or when physical hardware or something needs to be installed or fixed in a particular location. The internet has made this possible; the technologies are largely in place.
You can work from home, you can work from an office (or a virtual office) or even the coffee shop. Wherever you have a laptop or notebook, Linutop, Eee PC, maybe even a smart phone, as long as you have 3G or WiFi connectivity you are free to move around as you please.
I prefer to work during the night and sleep during the day as I am able to focus better in the relative peace and quite of the late-night and early-morning hours.
So I might decide to move to Europe for a few months to visit my friends and family and maybe do some touring. Maybe I even want to relocate permanently. Why should this stop me from working for United States- or South African-based companies? (Ok, on the longer term, the living expenses might be an issue as the Euro is very strong at the moment, but that set apart.)
These concepts are fast becoming more and more popular all over the world, but why didn’t it become the “standard” yet?
There are lots of challenges we need to overcome. Some of them are legal, some of them are social, and some of them are purely a bad state of mind. Fearful managers, undisciplined workers, outdated educational systems and ways of working that are not keeping pace with technology are destroying our potential as the human race.
Over the next couple of months I wish to address each one of these issues and also wish to invite everybody (particular from the enterprise) to take part in the discussion and raise their concerns. We need to determine what is possible and what is not possible. Despite all our challenges, I do believe that South Africans are some of the most innovative people in the world and with the current state of our connectivity I personally don’t think we can use the lack of a reasonable telecommunications infrastructure as an excuse anymore. Wireless connectivity in South Africa is actually not even that expensive in comparison to many other places of the world.
Now is a better time than ever for us to determine the “new” way of working and how we are going to maximalise our limited resources to ensure we stay competitive in the global economy…
Flickr. Epic Fail.
I created a flickr group called Garden Route a couple of years ago. At first I was the only one posting to it but at time of writing there are already 35 members. Very cool.
So anyway, waaaay back when I created the group, I customised the role names, so I had "locals" and "tourists" for the administrator and member names respectively.
And then along came flickr. Fail. Epic fail.
What is that? Localses? Touristses? Sounds like a bad chinese back-translation!
Scala
It's settled, Scala is the language for back-street gangsters and other low-lives. If you like to hang out with the scum of society, just enter #scala on IRC. Some people still seem to think that Scala is for Academics and Egomaniacs but in reality we all know that Scala is a Ghetto.
(09:48:13 AM) DRMacIver: It's appropriate that "one of the fundamentals of java" is fundamentally broken. :)
[...]
(09:49:51 AM) DRMacIver: It's a really powerful drug called "Knowing what you're talking about". :)
[...]
(09:52:00 AM) dysinger: There is theoretically a possibility of a collision in the RFC for UUID too. It doesn't paralyze anybody except academics that don't actually code but stand around and debate edge cases.
[...]
(10:01:33 AM) dysinger: doub - the vm moves shit all the time as needed.
[...]
(10:10:12 AM) DRMacIver: dysinger: Or, in other words, you're full of shit. Kindly shut up about this now.
[...]
(10:11:54 AM) dysinger: fuck you guys
[...]
(10:13:11 AM) dysinger: fuck you drmaciver - you and I have debated endlessly on other topics.
[...]
(10:14:37 AM) dysinger: eat a dick egomanics
[...]
(10:14:58 AM) dysinger left the room (Kicked by DRMacIver (I've already told you you're not my type.)).
These okes are hard core, don't mess with them...
Woolworths Organic Peanut Butter
I have been trying some of Woolworth's organic peanut butter over the past few months. I have to say that I am quite impressed with the product. It has a naturally great taste and contains nothing other than organic peanuts (at least according to the label).
After eating some real peanut butter, I will never be able to eat "normal" peanut butter again. Either they throw it full of sugar and salt or it's practically tasteless.
However, there is another thing that I find quite shocking. The natural peanut butter has some basic practical problems, similar to most other natural things. When left to stand, the peanut oil separates from the solids and needs to be mixed together again when you take it out of storage.
If you put it in the fridge the oil will become solid though so you shouldn't have the problem after the initial mix.
However, why does this not happen with other peanut butters? The only conclusion I can come to is that they hydrogenate the oil. I did a quick Google and it seems like the concept of hydrogenated peanut oil is quite common.
This is not necessarily a problem, although there has been various health concerns with hydrogenated vegetable oils in general. Be that as it may, don't you think they should indicate this on the label? Something like "Peanuts, Hydrogenated Peanut Oil"? This is very sneaky and unethical in my opinion. People have the right to make choices and should be informed in order to make these choices. This is just out-right dishonest to me, or serious negligence by the food companies to say the least.
Any thoughts?
MySQL BIGINT Calculation Weirdness
Check these out:
mysql> select 5 + 5;
+-------+
| 5 + 5 |
+-------+
| 10 |
+-------+
1 row in set (0.00 sec)
mysql> select '5' + '5';
+-----------+
| '5' + '5' |
+-----------+
| 10 |
+-----------+
1 row in set (0.00 sec)
mysql> select 4000000000000000000 + 1;
+-------------------------+
| 4000000000000000000 + 1 |
+-------------------------+
| 4000000000000000001 |
+-------------------------+
1 row in set (0.00 sec)
mysql> select '4000000000000000000' + 1;
+---------------------------+
| '4000000000000000000' + 1 |
+---------------------------+
| 4e+18 |
+---------------------------+
1 row in set (0.00 sec)
mysql> select '4000000000000000000';
+---------------------+
| 4000000000000000000 |
+---------------------+
| 4000000000000000000 |
+---------------------+
1 row in set (0.00 sec)
So basically if you surround the number with quotes, it would first take it as a string, but if it needs to convert it, it would not convert it optimally to a BIGINT and thereby you lose accuracy.
This sounds like a petty issue but it really screwed me around the other day.
My girlfriend?
I got sick for a couple of days unfortunately, still busy recovering, so I got behind with my mail. I did receive this one very interesting mail about my girlfriend apparently following me on Twitter.
Somebody indeed pulled a very funny trick. Sucking thing though is that if I go to http://twitter.com/yourgirlfriend then the account does not exist (maybe suspended, dunno).
I thought it was too good to be true... So now I still suffer from girlfriendlessness but at least the good thing about that is that I'm not paying child support due to faulty condoms and I'm still pretty sure I'm HIV negative... (Hey, I gotta think of something positive, rite?) :P
Parsing an hCard using getElementsByClassName in Firefox 3
Actually this slipped past me, but I discovered today that Firefox 3 now has a built-in implementation of getElementsByClassName which might help reduce your script library size. Well, perhaps not yet, but as soon as most of the other browsers also support it. I think Opera already does, didn't test though.
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Charl van Niekerk: Contact</title>
</head>
<body>
<h1>Charl van Niekerk: Contact</h1>
<div class="vcard">
<ul>
<li>Name: <span class="fn">Charl van Niekerk</span></li>
<li>E-mail: <a class="email" href="mailto:charlvn@charlvn.za.net">charlvn@charlvn.za.net</a></li>
<li><span class="tel"><span class="type">Cell</span> (South Africa): <span class="value">+27 72 405 8378</span></span></li>
<li><span class="tel"><span class="type">Cell</span> (Botswana): <span class="value">+267 7457 5943</span></span></li>
<li>Website: <a class="url" href="http://charlvn.za.net/">http://charlvn.za.net/</a></li>
</ul>
</div>
<script type="application/javascript">
function getFullName() {
hCards = document.getElementsByClassName("vcard");
for (var i = 0; i < hCards.length; i++) {
fn = hCards[i].getElementsByClassName("fn");
alert("Full Name: " + fn[0].textContent);
}
}
</script>
<form>
<input type="button" value="Get Full Name" onclick="getFullName()">
</form>
</body>
</html>
Hopefully this will give Microformats another boost. RDF does unfortunately involve some complexity but this is semantic web technology at its simplest. :)
Jaiku on Google App Engine
This is quite a dirty hack, but it works really well.
You can't use Python's standard xmlrpclib on Google App Engine because of the socket restrictions. The only thing I managed to get running so far is Google's special urlfetch library.
So here is the solution. And this one, unlike the Twitter one, actually works on both dev_appserver.py and after being uploaded (at least last when I tried). After all, it's all Google (Jaiku has mos been bought over and everything...)
url = 'http://api.jaiku.com/xmlrpc'
payload = "<?xml version='1.0'?><methodCall><methodName>presence.send</methodName><params><param><value><struct><member><name>personal_key</name><value><string>%s</string></value></member><member><name>message</name><value><string>%s</string></value></member><member><name>user</name><value><string>%s</string></value></member></struct></value></param></params></methodCall>" % (cgi.escape('myjaikukey'), cgi.escape('my new update'), cgi.escape('myjaikuuser'))
urlfetch.fetch(url=url, payload=payload, method=urlfetch.POST)
This should allow you to post a new message and other API calls can probably be done similarly.
Btw, how did I get this XML-RPC request you might ask? I used the standard xmlrpclib on my localhost and ran ngrep while the request was being made. :)
Twitter on Google App Engine
I tried to post a message to Twitter from Google App Engine and just gave up. Normally I am a die-hard hacker that does not give up easily, but sometimes a man needs to know when he is truly pwned.
Here is the code, which works fine with dev_appserver.py:
url = 'http://twitter.com/statuses/update.xml'
payload = urllib.urlencode({'status': 'my update message'})
basicauth = base64.encodestring('%s:%s' % ('myusername', 'mypassword'))[:-1]
headers = {'Authorization': 'Basic %s' % basicauth}
urlfetch.fetch(url=url, payload=payload, method=urlfetch.POST, headers=headers)
However, after being uploaded, Twitter keeps returning the following error:
403 Forbidden: The server understood the request, but is refusing to fulfill it. If you are posting from an API tool please ensure that the HTTP_REFERER header is not set.
Yes, Google forces the HTTP_REFERER and Twitter will have none of it. And yes, this has been raised on Twitter Development Talk list by myself and others. We are waiting for some (re)action.
wget has rounding mistake or something?
I got this output the other day:
Length: 139,285,753 (133M) [video/flv]
99% [================================================================================================================> ] 139,285,753 23.13K/s ETA 00:06
18:51:46 (21.10 KB/s) - `pythondjangoapppengine.flv' saved [139285753/139285753]
99% but it's clearly done? Check the bytes, looks fine too. Strange...
Update: LOL! I had a typo "appp"!
Twitter Replies
A couple of days back I noticed that the Twitter Replies page has been closed down. In the meantime it has been reopened but here I got a chance to see a new error message I didn't see before. I'm pretty used to the "over capacity" screens but this one I haven't seen before (as far as I can recall).
Blog Reopened
Ok, the blog has not been migrated yet, but it seems like I had a bit less time than what I hoped and my blogging was just heaping up. Will still go through with the migration in about a week or two but now first need to get some stuff posted. Comments have been reopened as well. :)
Copyright © 2004-2008 Charl van Niekerk. All articles are released under the Creative Commons Attribution 2.5 South Africa licence, unless where otherwise stated.





