programming Technology

Building Kentico CMS for Azure

When you’re putting a Kentico CMS site together, and you’re deploying to Azure, the one thing that doesn’t work too well is the emulator. It works, it’s just really intensive and slow-going. Especially if you want to run through small features or logic and need to do relatively frequent (and normal) build updates.

Enter build configurations and preprocessors. Under the hood, a KCMS web app for Azure is not that much different to a regular web application, with the exception of the AzureInit class. For local testing and running my app as a regular web application, I simply created a new build configuration (copied from the default ‘Debug’) calling it ‘Local’. In the other configurations, I added an extra pre-processor definition “FOR_AZURE” and then in the AzureInit class (in the web app project), I added:

public void ApplicationStartInit()
AzureHelper.OnGetApplicationSettings += AzureHelper_GetApplicationSettings;

That way, when I’m building for local testing, I skip all the Azure goodness, and then if I need to package and deploy, let the project settings take over. Sure, there some specific things that you won’t be able to work through- but you can still get a near-perfect resemblance on a straightforward deploy.

Business programming Technology

Opensource is not Free

Opensource, love it or hate it, has a definite place in our software ecosystem. I use opensource all the time, and i put a lot of projects up on opensource too. I don’t have any issue with it at all, on the contrary, opensource, by-and-large, has helped shape me as a developer. So, for the record, i love opensource. But then there’s also free software…

Free software is software you can download and use, for free, to do *something*. There is a lot of it. In fact, there is so much free software, some folk don’t even like paying a single penny for *any* software. I’m not going to touch on piracy- that’s a completely different issue. Chances are, if you look hard enough, you’ll more than likely find a free piece of software out there to do whatever you need to do. Even if you end up using two or three different free software apps to accomplish one task…

Now the proliferation of free and opensource has had an interesting side-effect. I hear a lot of “wtf?!” in response to actually paying for software. For example, I mention a licence fee of USD$300 to do a relatively complex task and I often hear: “why pay $300 when you can download and use some opensource component to do the same thing?” Or even better: “but you’re a developer, can’t you just build the same thing for me?”


The same thing.

It’s never the same thing. And often, to build the “same thing” would probably cost 3 times as much, if not more. And it has nothign to do with how good or bad a developer I am. Sure, I could use an opensource component. But I still need to vet the code, integrate the libraries, write a test suite for it (if there’s nothing attached) and make sure it does everything and that the “same thing” is exactly what is needed.

Sometimes that works. Sometimes that doesn’t. You can spend hours working with a “free” or “opensource” project only to discover some weird edge case that you need to cover or you end up trying to extend it (or trim it down) and find out the architecture is a real mess. Either way, your free component is now costing you, and more, putting __your__ product at risk.

On the contrary, a paid-for product has (usually) been built, tested in a standard QA environment, released with support options and comes with a warranty of sorts. I say usually because, as in life, you get software lemons too. But mostly, there is a system of connected people behind a paid-for product. An opensource project on the other hand, is (again) usually a smaller team more focused on *other things* (or next delivery milestone) that they don’t, can’t, won’t fix *your* problems with the codebase -for free-.

Again, there are always exceptions.

Bottom line, there’s a real business, with real people who need real money, behind the product. And yes, there are some opensource projects that are also a business- those actually fall more into a product offering than “free as in free beer” code.

Free beer code works when your dev team integrating it groks the codebase. It’s no different than having a regular team member contribution. Everyone needs to know what that code is doing: they can read it, can debug it, can modify it. If your team can’t (for whatever reason) then leave that code alone, or be happy to run the risk of bleeding later, which is usually when you really don’t want to.

And don’t be so scrooge about paying for software. Often, the licences are well-priced because the spend has already been done- and the model is in place to make a business of selling. Again, due diligence is required, as you would any other purchase. But you cannot run on the default strategy that opensource = free = cheaper.

Life perspective

Nothing Wrong With The Government

In every age and civilisation, when men didn’t agree with the status quo, they teamed up. They plotted and planned (illegally if they had to) and put into action, a labour of passion that would change the way things are. Sometimes, they would rewrite history. They were men of conviction and action. So, yes, it’s not the government at fault for *whatever*- it’s the men that fail to do nothing about it that’s really at fault.

I’ve written about tweeting our demise; watching the world burn while we compete for first in breaking the news on twitter, or getting an instagram or video up on youtube before anyone else…

And today, the notion was re-inforced listening to “grown” men fawn over each other about how ripped their abs were- and then compare notes on training supplements. Because these things are *really* important. The “bluddy government” is not a real problem- just another conversation topic.

Oh, and it hailed pretty badly up north, apparently. Check it out. This video is insane!

Life perspective

Betrayed in Prayer

Our prayers can betray us through the language we often use, or perhaps, default on. Sometimes it might just be a habit we’ve adopted without thinking about- and with all sincerity, we think it’s ok. But let’s unpack an interaction between two close friends, Ben and John. Ben finds himself in the awkward position of having to tell John that he has just crashed John’s car…

Ben: “Hey, John. Here I am. I stand before you to tell you something.”

Wait, stop.

Who is Ben really talking to… or more importantly, who is Ben talking for? That’s not really how friends talk to each other. They are both present in the conversation so Ben doesn’t really need to describe what he’s doing. Unless of course, John is blind and needs some context. Which in itself is equally interesting…

So when we pray, why do so many of us describe where we are and what we are doing to an omniscient God?

Us: “Lord, Here I stand before Your throne to ask for Your forgiveness…”

Do we think that He is blind to where we are and what we are doing? What are we trying to say and for whose benefit? It seems a little bit wishy-washy but maybe you think it’s respectful, polite or politically correct? It doesn’t really matter. Simply put, we don’t really talk that way. It’s just a little weird.

I feel we take our cue though from popular songs and, or from attending to and listening to too many prayers- not actually saying as many for ourselves. For example, when a leader prays, he prays for those gathered and almost tells a story and describes a lot of context. That is always for the benefit of those there that are, in context, slightly anonymous. In the same way you might over-elaborate a dinner at story time for the benefit of an invited guest who isn’t intimate with the details of the conversations.

A real conversation has a far more natural flow. And that’s where we betray ourselves; in the reality of the conversation we’re having.

Ben: “Hey, John. I’m sorry, I crashed your car.”

Us: “Lord, forgive me”

Simpler. And there’s a lot more we try and describe, add flowery images to and wax eloquently with prepared phrases and time-honoured sentences we’ve heard probably far too often. We can probably do a little better than that. Step into a real conversation with a real person.

Other phrases like: “… I kneel before you …” when we’re actually just sitting or standing. Which, we are quick to point out in a defence is a condition of the heart, and that we’re actually metaphorically kneeling when we say that. Well, sure but however you feel about that, why do we even feel the need to say that? Does it make us sound more pious and holy? Do we feel the need to impress whomever is hearing (besides God)?

There’s a couple more, but it’s not about picking on any of them really. It’s more about encouragement and pushing into having more meaningful and deeper conversations in prayer; without the burden of trying too hard and being overly PC. Just talk.

Life perspective Technology

Twitter Money

Stumbled upon a funny chirp the other day; equating twitter fame with monopoly money. Chuckle. It’s true. Obviously, some would disagree quite strongly with that sentiment- probably the same ones with a lot of hotels on Eloff Street?

Anyhow, shortly after that, Pussy Riot made headlines. Erm, ok. I ignored that (who on earth are Pussy Riot anyway?) till I read about the Kremlin’s interpretation of “free-speech” and their utter disregard for the entire Twitter-protest. I mean, even celebrities were tweeting! Shucks. Pussy Riot was trending.. somewhere. People were getting upset. And tweeting! Surely that would have made Putin think twice?

Apparently not.

Then I came to a frightening conclusion after a little extrapolation of online cultural behaviour: we’re going to tweet our demise and be left with a world burning behind us while we wonder #wtf?

Egypt worked because people actually *did* something and used a medium to communicate and co-ordinate their actions. It doesn’t mean Facebook and Twitter became all powerful and capable of toppling governments. If you believe that, you’re probably sitting on a stack of Get-Out-Of-Jail-Free cards and smuggly smiling to yourself.

No, Twitter is not powerful. Nor is Facebook or any other social medium. Fact is, you can organise a coup d’etat without any online social platform. Shock. Even more startling: you actually have to get off the network for a bit and *do* something in the real world to affect real change.

It’s much the same as a $1 re-tweet to help save children dying of hunger in Eritrea. How do you even know that’s *really* working? Or are you happy to just RT and put your conscience to sleep? What about closer to home: the homeless freezing their tails off but at least you look good by sparing them a thought online. As someone in my TL suggested: spare a blanket, not a thought! That would mean actually getting outside and doing something about it though…

Ok, enough of the holier-than-thouness. We’re all guilty of sitting cosy and looking good- trying to capitalize on events and circumstances and adding our thoughts. We’re good at being human. And as you will notice, most of the thoughts outlined here have purposely been chosen from those very same platforms- to illustrate a point. Conversations are great, but without action…

So going back to our little demise… Edmund Burke is quoted as saying: “The only thing necessary for the triumph of evil is for good men to do nothing”. I say: “The only thing necessary for the triumph of evil is for good men to keep busy tweeting about it”. Oh, and I would include women there as well as men.

Less virtual. More real.


OAuth, Magento, Cookies, Ubuntu and Time

After upgrading my VMWare host (and some Ubuntu updates at the same time) I started noticing some strange behaviour on my Magento platform in QA. I just couldn’t login with my regular test user account. After clearing cookies on the browser, Magento started redirecting me to it’s “Please enable cookies” page. Boom! Nothing else had changed between stopping work on Monday and then resuming work on Tuesday. Frustrated, I simply created a new account and carried on using the new test account. That soon bombed though; mid workflow…

Now as if that wasn’t mysterious enough, my Twitter OAuth integrations started falling over. I really thought it was Monday- but it was actually Thursday. Not less than 45 minutes ago, a work items which had passed QA and committed to the repo was now suddenly failing. At the same time, my Magento session expired and I couldn’t login again. Wait a minute…

Both the OAuth error message and the Magento error were pointing to clock-synch issues. Could it be? Short answer: yes.

Now NTP is set to run automatically on the Ubuntu machine, but that wasn’t cutting it somehow. So i stopped that daemon, run ntpdate manually, and walah! Zee problem vas gone. Turns out my server was 5 minutes behind schedule.

So somewhere between the host clock, the VMWare time synch mechanism, the Ubuntu (11.04) updates and the NTP daemon- i’m still losing time.. somehow. I haven’t tracked down the culprit specifically, but at least the cause correlates with the symptoms and the appropriate fix is related to and resolves the issue.

The hunt will continue once this current story is completed….

Business programming

Tech And The Art of Ninja

There’s a lot of folk that like to call themselves ninjas out there- and it’s just plain wrong. Now unless you’re familiar with the Togakure-ryÅ« then you probably need to rethink your strategy a little…

Ok, so you don’t mean that you’re actually a -real- ninja, like, a real ass-kicking ninjutsu warrior with highly developed skills in espionage, combat and a multitude of other arts and skills. Fair enough. So what does ninja really mean then- that you’re supposed to be highly skilled? Well, here’s a funny twist: you cannot call yourself a ninja- not even a non ass-kicking-warrior one. Any title of excellence has to be bestowed upon you by one greater and more skilled than yourself. Formally. And usually, there’s a ritual of sorts involved. Sometimes, live animals are hurt.

Stop for a minute and think about every other title out there which conveys a sense of mastery: take the most common ones like professor or doctor even. These are titles earned after years of training and bestowed upon the learner by their guardians and masters- who themselves have acquired great learning over YEARS. A ninja, a real ninja, follows a similar path. The same goes for the word guru. By maintaining the traditions that these titles have been founded on, they ensure the longevity of a well-respected standard.

So calling yourself a ninja or a guru doesn’t make any sense. You’re just buying into your own hype and unfortunately, people who know even less than you, fall for it emotionally and romantically. Basically, you’re just conning everyone (most of all yourself). An even greater irony is that most esteemed masters seem to understand just how little they do know and shy away from the all-powerful titles in humility (enlightenment seems to have that effect).

So you’re a wizard (oops, there’s another title) with HTML or C++, maybe some Python- or… wait for it.. Twitter of all things. People who know less than you, will look up to you and respect your talent and skill. They might even go: “Wow. You’re such a jedi with INSERT_TECHNOLOGY_HERE!”

Awesome. Now if you believe that and start calling yourself a jedi, guru, ninja, prof because a bunch of people who know less than you actually think you are, then you have a serious dilemma. If you haven’t spotted the irony yet, let me make repeat: a worthy title is bestowed upon you by one greater than yourself- not by one lesser (and greater and lesser are purely relative terms with respect skill levels- not humanitarian judgments). That’s just plain backwards.

And no, not even if your peers think you’re a guru can you call yourself a guru. It simply doesn’t work that way. If you had to see a doctor about a terminal illness and enquired about her credentials and the reply you got was: “Well, all her friends thinks she knows quite a lot about health and medicine so they just call her The Doctor”. You can see where this is going, and where it came from. In early civilisations this is is exactly how it worked. But part of that entitlement included a wealth of supporting evidence.

So, now you might say: well, I have a collection of really good websites (or Tweets and followers) and everyone thinks I’m the bees knees, so why not call myself a ninja if everyone else thinks I am? *sigh*
Well, for starters, you probably cannot ride a horse…

Elevate your own standards and have a little respect for yourself and your own hard-won skills. If you want to be called a ninja- look for someone who is WAY better than yourself- is proven to be years ahead of you in skill- and then go and try impress the bajutsu out of them. So much so that they say: “Well done, padawan!”. Then one day they will turn around say: “The master has finally become the student” at which point you have arrived. Funny thing is, it doesn’t matter anymore and now that your skills exceed that of your master; he/she can probably no longer bestow the title on you since you are now “greater”. Checkmate.

And yes, I get that people use the terms as metaphors: “I’m looking for a ninja front-end web developer” => “I’m looking for a highly skilled front-end web developer”. Ok, so what’s wrong with the plain and obvious in the second statement? Why on earth would you choose “ninja” over “highly skilled”? Does it make you sound cool? Does it make you trend or get more search results? Are you bored with “highly skilled”?

And probably the biggest issue of all is that real ninjas and gurus are finding it harder and harder every day to find decent work and support their families since they need to spend all day trawling through completely unrelated spam.

Job Ad #3209 of 40,600,000 related to search for ‘ninja jobs’:
“Wanted: Ninja.”

“Yes, please!”

Job Ad #3209:
“Duties: Resolve CSS issues in IE6”

“WTF? Seriously?”

Ninja’s wife:
“Hey, honey! How’s the job-hunting going?”

“Well, I found someone I need to kill but it doesn’t pay…”

perspective programming

Team Balance

There’s a lot to be said for flexible work hours. They’re all the rage but they can be tricky when you need to collaborate on something meaningful. Maturing teams understand this and introduce “core” hours. That is, everyone -must- be in the same space for a set number of hours during the day; you get some flexibility to decide where to put the rest: on the head, or the the tail of that day. And then you have overtime….

An experienced team will undervalue overtime. The productivity gains are superficial and short-lived. The latent bugs and burnout issues which crop up down the line are way harder to solve. And that realisation, unfortunately, takes experience. Sometimes, more than you need. And sometimes, even when you have that experience, you doom yourself to repeat the same mistake under the illusion of end-of-the-world-pressure. But it’s not just the team you need to look out for; it’s also the individual within a greater team…

The output of any team is not merely the sum of individual contributions. It’s a collective output which is the combination of a number of quantifiable, but difficult-to-measure, actions: hallway conversations, peer pressure dynamics, inter-personal relationships, email:work ratios, extra-office activities… and on and on. For the most part though, a team result requires that the team move together at the same pace. Which is why they can either be really funky, or really frustrating, depending on your own personality.

So when you have one individual burning faster and more than the average pace of the team, you need to be cautious. Yes, leaders will put in more than normal: that’s what gives the team acceleration; impetus; momentum; drive. You have to start somewhere, sometime. But at some point, everybody should work roughly at the same pace. I.e. given a particular skillset and competence, the task should be completed by two different individuals on the team within the same business delivery time frame.

What happens when one cog spins more than the rest? For a start, that project plan (which you mostly ignore) gets even more muddled. The expectation for delivery timeframe changes (not just for current workload, but for future reference too). The inter-personal dynamics change (competition). The path of least resistance shifts and the workload tips in favour of the “Doer of More”. The rest slack off and you have this horrible elastic stretch in your execution plan. It will snap. 75% of the time. The other 25% of the time, it also snaps.

Now, you have to stretch that elastic from time to time. A balanced and measured test of that is a good thing. Shake things up and stir the pot. It’s healthy if controlled properly. Sometimes you get an unexpected organic boost of productivity which shifts everything into a neater gear: run with it. Recognise that and facilitate it. But don’t let it run out of steam “naturally”. The human spirit is strong: just watch the finish to any massive endurance test. People will push themselves beyond what’s probable and into a state of “cannot-do-anything-for-3-weeks-until-I-am-recovered”. So unless that’s what you want to achieve, nip it in the bud. And that takes a skilled project leader.

But as a peer, you are more intimately aware of when the pace changes. You have a responsibility to highlight that and bring transparency through to the fore. That’s what standups are for, right? Talking about the technical hurdles and objective progress of a project is EASY. You can go through 100 standups without challenging yourself or anybody else. Another path of least resistance. So how about using standups to bring attention to more important matters- issues that bug you in the soul but are hard to talk about?

Again, a good leader will cut short any ad-hominem or diatribe and schedule a time and space for it to be dealt with properly. The nice thing about using the standup for that is that you have the opportunity every day to voice your concerns. You even get to sleep on it for one night, to shift your ego away from the team’s greater good, before raising it.

Balance is not something we can always achieve on our own; despite our ingrained philosophies. That’s where East and West are remarkably similar. Both focus on the individual achieving his/her own internal balance and striving for that. But there’s nothing like pitching in and helping each other achieve balance.

You’re not walking on that tightrope alone. And yes, you work hard at making sure you’re not the one that causes the fall. But help others at the same time. In the wise words of Oogway: “One often meets his destiny on the road he takes to avoid it”


Get Out Jail Free

Every once in a while, you get a randomly odd idea (thanks, @brentone80– like this one: DeadGranny. It might seem shallow, but not so actually. It was also relatively quick to code and more fun to play with. It actually solved a real-world problem too; which is a bonus. And soo…

Ever get stuck in a awkward situation where you need an escape- and you need it fast- but you need a catalyst to spark off your rescue? Maybe you’re stuck in public transport, listening to some random citizen with bad teeth and equally attractive halitosis chew your ear off about a personal drama of theirs from 1979; or the conversation is just plain inappropriate and you’re the odd one out; or you’re in a meeting that doesn’t know how to end? Trickiness abounds. That’s when you need “DeadGranny”.

All of a sudden, your phone starts ringing. You casually glance down to see who it is. (It’s not outright anti-social just to keep a tab on your phone.) Cue your drama skills. Look worried. Interject with a “Sorry, I’ve been expecting this call”. Answer the phone. Look even more worried. “What?! When?! Ok, I’m coming now” Put down the phone and excuse yourself. If you’re asked what’s up… well, the rest is up to you.

So how does DeadGranny work?
First, you need to activate DeadGranny mode. You can do this by clicking the “End Call” button when your home screen is showing. You will notice the wheelchair icon appear. You are now in DeadGranny mode. To set your phone back to normal, just click the “end call” button again. The wheelchair icon will disappear. Simple.

Now to activate -and control- the ringing on your phone. Click the “back” button 3 times (while in DeadGranny mode) to activate a call. You will hear an anonymous tone played 5 times. If you want to repeat the tone, press the “back” button 3 times again. Repeat as often as you need to.

Simple. There are no configuration screens, icons or settings. It operates discreetly and with a bit of practice, you could even get this going without looking down at your phone. If you use a BlackBerry you are probably more than capable of using it blindfold.

It’s as simple as it needs to be and no simpler. How effective it will be is largely up to your convincing display of drama 😉

Available on AppWorld

Business perspective Technology

Brand Invasion

Online social spaces are a quagmire. While they were primarily created for people to engage and share ideas, the prevailing subtext is less noble. You can start a revolution, join a collaboration or just be human inside that virtual world- with real-world effects, or you can spend waste hours watching fake videos.

Hello, brand invasion. Like the Portugese traders of yesteryear, the brands arrived bearing trinkets we couldn’t refuse. A pair of sunglasses for a “like”. A T-Shirt for a “follow”. Some even trade comments, page visits, emails, photos or simply a click-through. And so we trade happily and frivolously, indulging the offerings and running back to the village boasting our “gains”. It’s playful. What we never counted on was the brands taking it too seriously.

Facebook today is a mess as a result (and trying to recover). Twitter is fast going the same route- with the brakes on. People like, follow, talk, share and get entertained by brands- not so much by people anymore. But in the real world, we don’t talk about brands really- unless there’s a strong emotional event attached to the brand. And the brands with their agencies love it. They see the effect and keep pumping the same strategy because, well, it’s working. Can you say viral? That’s codeword for success. But I think they’re confusing correlation and causation…

In the real world, people engage with people. When last did you go down to your favourite brand’s spot and just enjoy the company of their people- not their product? Hang out with the VP, shoot the breeze with the software guy, have coffee with the secretary….? You see, it’s not really a meaningful relationship. I mean, you don’t invite BrandX to dinner ever, do you (as a consumer)? And if you did, who/what would you invite anyway?

I can understand the economic models around social media; online presence and returns (and dangers). What you do with money makes the world go twirly-wirly and we all benefit in the long term (or supposed to at any rate). In much the same way the Portugese traders arriving could be argued as a good thing (well, at least it wasn’t on the same scale as the Spanish strategy of “submit or die”), the brand-invading-social event can be a good thing. We do need to remind ourselves though: who ended up ruling the land?

I used to see ordinary people having meaningful conversations about love, life, the universe- academic revolutions, religious and philosophical debates- the “essentials” of living- on social spaces. Now we share a TED video for that. Like it. Follow someone. (I still see those conversations, but not in the spaces where you’d think they’d be)

People are having conversations about how a brand’s t-shirt changed their lives- competing to win a freebie; vying for position of “influencer”- for more freebies. Their motives are ulterior, emotions cliched, strategies shallow. The brand invasion changed the way people engage and altered the energy distribution: they changed the game. Even the big issues; a war in Somalia? Don’t worry, retweet this and BrandX will donate $1 to aid…

In the social spaces, the revolutions were organised by people. The masses were mobilised by people. Action was effected by people. The real conversations took place between people. Brands can’t do that. They risk segmenting their market and losing revenue if their position is too strong on one side (and the market is 50/50): the quintessential diplomat.

And yes, this is a general discussion. And yes again, there is an example out there which can be used as an argument to counter any one of the points above. It’s easy to pick out one example because it stands out as one example against the norm. And that’s the point really- it’s an outlier. Cult-brands aside…

Ultimately, there is a space and a place for brands online- even on Facebook. Some will invade the popular mediums and behave like a weed, others will grow in harmony. Some will appeal to the base and primitive needs of online-man and continue to trade likes for product. Economically, there is only so much you can give away before you realise you have a fanbase of 100000 followers who only want a freebie- and are not interested in actually paying for your product. The Groupon effect. Others will make a real difference.

In the meantime, social spaces will struggle to be personal and meaningful. When they don’t succeed on the whole, the people will move into another space where they can touch base with the personal and meaningful; the stuff that makes them human. Maybe one day we’ll all be back chatting on ##family… or on BBM.

And that’s precisely why a relevant and meaningful social space can’t be invaded (in the offensive sense) by a brand. The energy inside a relevant space is dynamic, powerful, unpredictable. It demands a constant stream of energy. Brands need constraints, constructs, predictable returns and an efficient communication mechanism relative to their budgets. The inefficiency and chaos of a real conversation is what makes it beautiful and adds dimension, frustration, inspiration, colour and emotion.