Business Technology

iTrainedToday Tech

The technology behind iTrainedToday is a nice mix. In fact, the chosen technology has enabled it to finally come to life.

For a web application with persistence, you need basic moving parts: UI, backend persistence (ie. database), server-side middleware to translate the communication between the UI and the persistence. Straightforward for the most part except that things are really straightforward once you dive into the belly- except of course if you live in belly in which case everything’s straightforward but just takes time.

UI: html standards, css standards, javascript and all the various frameworks available and then there’s browser issues. iTrainedToday chose jQuery with jQueryUI as much as possible to lift all the UI interaction. Simile is the only other major JavaScript component but a crucial one. It’s what displays your recent data in one consolidated view.

Server: this is where things can get expensive. ASP.NET, Rails, Django, PHP and more all need to be hosted *somewhere*. And hosting costs money. In addition to the hosting costs there are bandwidth limitations/costs involved. A minefield (unless of course, you play in minefields all day long in which case it’s just a field). Hello, Google AppEngine. Love it or hate it; it’s still pretty sweet to get going with. And whenever someone says “it’s pretty sweet to get going with” they mean “it’s great for prototyping”. I don’t mean that. It’s serving athletes nicely (and simply) and ticking along… prime-time? I’ll let you know when it starts paying for itself in a big way.

Persistence: Google AppEngine handles that for me too. I don’t really need to grok the ins and outs of what that tech is in the tiniest detail. It’s interesting to know, but it’s more important for me to know that: a) it works and b) how to work with it. Storage techies get their hands dirty in the detail ‘cos well, that’s what they do. It’s not really what I do (most of the time).

And then beyond all the moving parts is the brain behind it. Can the brain handle mixing strongly typed dynamic scripting languages with the weakly typed variety and hurdle UI intricacies with usability issues while keeping an eye on security, optimizing the bottleneck (database calls) all the while focusing on the problem domain at hand? Mostly 🙂


Mobile Web Server

The title should pretty much sum it up. It’s new, and if preliminary “user” reports are anything to go by, very scary. I mean, why would you want to open your phone up and turn it into a web server for all the world to access? Heck. Why not? 🙂

So Nokia have been working on this tech (still in beta, like most good things) and have published it at And it rocks. Installed it and have my mobile web server running around with me on my Nokia N81. Check it out.

Of course, i don’t run it 24×7 (yet) so you may get an “offline” response. For now (because of the scary factor) i still keep a close eye on it. But i would encourage you to spend 15 minutes and set yourself up. And then just think of the possibilities….

Currently Learning…

So part of the whole Ubuntu move has also involved migrating my predominantly MS-based programming skillset into something *else*. As it is, i am studying part-time to complete a B.Sc Applied Mathematics, so this year will be a little slower at times on the technology front, but it proceeds, nonetheless.

So far, i’ve managed to learn a little Python and PHP. Turbogears, Django, CakePHP and Zend all occupy my headspace at the moment. The one thing they (the frameworks) have in common though is MVC, so once you have that covered, getting to grips with the semantics of each framework is a little easier.

In the process though, i’ve ended up learning a lot about my Ubuntu installations (server and desktop), managing Apache2, user rights and managing those on the system, network interfaces, MySql and Sqlite, a lot of “notepad” editing (ala nano, vi and gedit)… actually, come to think of it, i’ve learned more about *nix this year than Windows and i’ve had a whole lot more fun too 😀
Of course, i could have spent the time learning Linq, WPF, WCS, etc.. etc… but you can tell from my enthusiasm, i’ve been getting a little jaded with all the MS hype that just turns out to be the same ol’, only with more hoops. To be fair though, i did enjoy some of the .NET porting to Mono.
And that’s been the difference: the fun factor. Learning is fun. When it’s not fun, it’s not learning. It’s cramping.

Firefox is unsupported?

I was trying to access the MS Partner website… but with Firefox. They didn’t seem to like that very much 🙂


i really hate spam

There, i said it. And i’ll say it again. I hate spam.
Akismet is a real lifesaver, and along with SpamAssassin as well as Mozilla Thunderbird and i live in a state of “managed” spam. The odd irritation gets through, but nothing like before…
Between viruses, worms and spyware the computer desktop is enough of a nightmare and then you got to deal with spambots everywhere! Seriously… it’s outta hand.

It’s ridiculous to the point that you get initiatives which have to spend their time and effort combating something which nobody even wants?! methinks a good time to throw what time i have saved from spam filters and put it into Kill Spam 🙂

Resizing NTFS Partitions

Quite simply, the very idea freaks me out. The way NTFS partitions are managed in Windows… well, let’s just say resizing appears to be less straightforward than it makes me comfortable. And yes, there are some tool$ available to do the job securely, but again, in an emerging economy, some tool$ are just not priced affordably. Hello, GParted.

Defrag your NTFS partition (mostly ‘cos it invokes a layer of warm and fuzzy doing so)
Download the GParted LiveCD, burn the ISO (while we’re on the topic of burning ISO’s from Windows, again, it really is a bit of a unaffordable freeware/shareware mission)
Boot up with the LiveCD
Resize your NTFS
Reboot back into Windows (this allows windows to do it’s own CHKDSK on the “new” partition)

That’s it. Did it work? Oh yeah, it works. No corrupt programs, data, files, nada. Even my Lenovo SecureDrive volume is still intact…

… as you can see.

Minimum Computing Power

There is a lot of hype about computing power, technology and what we _really_ need to everyday compute. We find a similar push with cellphone technology too… but what exactly do you really need?

I’ve just finished setting up Feisty… i am impressed. It really does just work. Out of curiousity, i ran a quick check to see what kind of computing power something funky like Feisty would need… and then compared to the current new generation in the Windows world…

Ubuntu Minimum Requirements
(the recommended minimum)
500 MHz x86 processor
192 MB of system memory (RAM)
8 GB of disk space
Graphics card capable of 1024×768 resolution
Sound card
A network or Internet connection
Note: All 64-bit (x86-64) PCs should be able to run Ubuntu. Use the 64-bit installation CD for a 64-bit-optimised installation.

Vista Minimum Requirements
1 GHz 32-bit (x86) or 64-bit (x64) processor
512 MB of system memory
20 GB hard drive with at least 15 GB of available space
Support for DirectX 9 graphics and 32 MB of graphics memory
DVD-ROM drive
Audio Output
Internet access (fees may apply)

Uhuh.. not pretty.

Importing Data into SQL Server 2005

i must say i was quite surprised, in a negative kind of way, by the SQL Server 2005 Express Edition feature set. I took the leap and migrated databases from MSDE2000Sp4. All is well in the Express Management Studio and it ticks over for about 90% of the tasks i need to perform… but then there’s importing data.

Ya think i could locate _anything_ to import a flat file [.CSV] into a table? And bcp doesn’t count.

Eish. The MS forums are a tirade with respect to this issue, so i’m not going to add my rant 🙂 What there is though, is a pretty nifty solution i found on the jackol’s den

INTO theImportTable
‘Driver={Microsoft Text Driver (*.txt; *.csv)};
‘SELECT * FROM data.csv’)

And walah! 😀 Oh, and if you get an error like:

Ad hoc access to OLE DB provider ‘MSDASQL’ has been denied. You must access this provider through a linked server.

You can make changes according to MS Support.

It’s Never About The Process

Ever. Yet it’s so very important at the same time.

We drive processes quite hard, with good reason and positive intent. The process facilitates the change we desire and fosters an environment of learning with the goal of eliminating pain. Not a headache type pain (although it could be) but an organisational pain. And so in our pursuit to make things better, we create or adopt a process to either get us, or keep us, on course. But it’s not about the process and this is where i believe we have to be careful…

It’s too easy to get sucked into promoting or defending the process, above all else. And by process i am largely referring to the processes we use to deliver software. But this pervades far more than the engineering domain since it’s a social problem at the core and thus applicable to any socially organised group. It’s supposed to be all about the people, afterall it’s what sparked off the process in the first place. So throughout the process, the thing what’s most important is how the people, who are supposed to be positively impacted, respond. And to always keep in mind the difference between who they are and where they are.

And this is the part where English is a bit inadequate. In other Latin languages, there is a distinction in the verb “to be” that highlights the difference between the eternal and the temporal. It’s why you can never say in Spanish, as an example: I am hungry. You can never be hungry, you can only have a hunger. Moreover, there is a difference between being a programmer, and being a programmer. The simplest way i understand the difference is that being a programmer means it’s a calling, whereas being a programmer means that is your day job while in essence you’re really a bass guitarist who needs to pay the bills. In English it’s the same sentence: I am a programmer. And that’s the shortcoming in the verb “to be”. The consequence of which, methinks, is that we don’t distinguish often enough between the eternal and the temporal in our speech and leave ourselves open to interpretation, and more, blind ourselves in our ambitions.

While monitoring the process, and the way the people are responding to the process, we need to understand the difference between who they are as people in the eternal sense and who they are as people responding to change. What is more important in a social setting, is who they are in an eternal sense. This is the foundation for relationship, team work and ultimately, success in achieving the goal of the collective. Who they are as people responding to change is another dynamic. The former is more often fuzzy criteria for selecting team players, the latter for eliminating team players. And this is where the process fails: when selected team players are eliminated because they aren’t perceived as having integrated successfully enough into the process we establish. We choose process over people.

And at the same time, the process is super important. You cannot choose people over the process either since without the process, it would be hard to achieve anything, no matter how talented. And the subtle trigger lies in attitude. Let’s take the Agile Manifesto as an example. We value individuals and interactions over processes and tools. That is an attitude you need to manifest, not simply a great idea. And a time will come when the individuals and interactions (that are valued so highly) will sorely challenge the processes and tools: which you choose, if you choose, and the sum response to that crisis will define just how great an idea that really is 😉

Ubuntu Adventures

So far, everything’s going well. Ubuntu Edgy [Feisty coming soon] is installed and updated. Wrapped my head around keeping my computer updated and how to manage it. Also, tried out Kubuntu, but opted for Gnome instead and installed Edubuntu on my wife’s machine [dual boot with XP Home]. And it’s got everything you need.

Come to think of it, our computing needs [home users] are actually quite simple:
Email, web browser and some document creation software. Most applications and interaction take place on the browser anyways, so the rest is.. well, a lot less complicated than it’s made out to be. I know a lot of folk will disagree on that, but of all the thousands of applications we have at our disposal, a very small percentage are actually required.

And i think that’s part of the Ubuntu appeal. It has everything you need to compute. Off the bat. And then of course, you can go wild and install a thousand applications, if you really need to.

For Edgy and Dapper [spread over ubuntu, edubuntu and kubuntu] installations, instead of fighting to get WPA-PSK working with 4 different wireless cards, i changed the router to WEP with a MAC-filter. The path of least resistance 🙂 And it works like a charm. Feisty apparently has some added support in the WP-PSK direction, so we’ll look at that pretty soon…