Sunday, 24 April 2011

Review: What I wish I knew when I was Twenty by Tina Seelig


Tina Seelig runs the Entrepreneurial Thought Leadership at Stanford, a very impressive programme with guest speakers from all the top companies sharing their experiences of past failures and successes - invaluable insights freely available for download.  If you're seeking out knowledge to be a successful entrepreneur, then I highly recommend you visit Stanford E-Corner website.

Back to the book: Very well written, easy language in direct conversation-style, brings out the message in clear and simple terms. Although this book could be seen as yet-another-self-improvement-book-on-leadership-innovation, in that it provides stories and insight's into other people's experiences & resultant lessons learnt; it is unique in the following aspects:
  • References to real classroom exercises being taught at Stanford. Don't be fooled into thinking this is a student text, the example challenges can be given to any company team and will be equally, if not, more challenging than the classroom experience
  • Tina touches upon subjects that are generally considered taboo
  • There is an element of realism, practical advice that is good food for thought
  • Topics are light-enough to leave the reader time to analyse his/her own personal situation (For example: the bit on "Failure Resume" (FR) really got me thinking, so much so that I exposed version 1 of my draft FR here)
Another topic that got me going was from the chapter "Turn Lemonade into Helicopters", Pages 129-130, which I'll quote below [I am still working on my own similes :-)]:
...In my course on creativity I focus a great deal on the value of recombining ideas in unusual ways. The more you practice this skill, the more natural it becomes. For example, using similes or metaphors, to describe concepts that on the surface seem completely unrelated offers tools for revealing fresh solutions to familiar problems.....Teams are asked to come up with as many answers as possible to the following statement:
Ideas are like ______________________________________
because __________________________________________
therefore __________________________________________
  • Ideas are like babies because everyone think theirs is cute, therefore be objective when judging your own ideas ideas 
  • Ideas are like shoes because you need to break them in, therefore take time to evaluate new ideas
  • Ideas are like mirrors because they reflect the local environment, therefore consider changing contexts to get more diverse collections of ideas
  • Ideas are like bubbles because they easily burst, therefore be gentle with them
  • Ideas are like the measles because they are contagious, therefore hang out with other people with ideas if you want to get them yourself
  • Ideas are like spider webs because they are stronger than they appear, therefore don't underestimate them
All-in-all, this is a useful addition to my book collection. It will no doubt be used time and again as a reference.  Don't be fooled by the title, the lessons taught are relevant to anyone throughout their personal/professional life, 20s, 30s, 40s and beyond...


Thursday, 21 April 2011

Writing a Failure Resume




This week I completed Chapter 5 of Tina Seelig’s "What I Wish I Knew When I Was 20: A Crash Course on Making Your Place in the World”; and was left thinking about a particular topic that I found quite interesting: writing a “Failure Resume”.  Other people have already blogged about this in the past (ETL, Tina's own blog, mistake bank) sharing similar impressions as I. But what I’d like to do here, is present my very own failure resume just as Tina has done in her book, but adding a little more detail: in addition to summarising the failure, I will include the lesson learnt and future objectives for improvements.


I find Tina’s book a fascinating read, it’s as if the book was especially written for me. I can really relate to Tina’s advice, how I wish I could’ve attended a proper institution like Stanford. I try my best to follow Tina’s ETL series (Entrepreneurial Thought Leaders) program, how generous of them to share this valuable information with the world, for free!!  Whenever I read books on entrepreneurs, I get really excited. I have this feeling in my inner core that this is me, this is something I can do, this is someone I definitely want to be - but haven’t yet taken that leap of faith yet, although I can feel it’s just around the corner.  I plan to share my past ideas with you in another post, just in case you think I’m a nutter, a wanna-be, just a dreamer getting high on books ;-)



So back to this “Failure Resume” and what is so interesting about it??  Most of us concentrate on all the successes and overlook the past failures that probably influenced us more than we’d like to admit ourselves, and could possibly have accounted for future success.  It’s good to keep a record of past failures, and in my opinion, could come in handy during interviews when you’re quizzed “What are your weaknesses?”, “Give us an example where things didn’t go the way you wanted”, etc.  Failing that, it is a good tool for reflection and planning your next growth stage, both personally and professionally.  



To excel and succeed, to reach the next stage or challenge, one has to take risks, try something different - and don’t be afraid of failure. One should embrace failure, because with failure, comes wisdom. A mix of successes and failures provides one with a good balance, well rounded experiences that you can use to your advantage.  The great companies, according to Tina, look for people with a diverse background and talent, willingness to learn, experiment and failure, but wise enough not to repeat past failures.  I, myself, am still searching for a company that embraces this culture - well it is the secret sauce of Silicon Valley after all!!


[April 2011]: So version one of my Failure Resume is below (I found this quite a difficult exercise to complete, this is certainly no 10-minute exercise. In my case, I’m not that experienced, I’ve only got 10 years professional experience, and most of the failures can be rationalised and turned up-side-down to be seen as necessary successes because of my over-arching desire of learning as much as possible, from as many different areas as possible - to be a Jack of all trades in Software):


MUHAMMAD J. KHAN

Professional Failures

Jumping ship too early. My desire to broaden my horizons can be seen as a failure of not giving enough time to stay for a long enough period to establish myself in the role. I find myself changing roles once I feel that I’ve learnt enough or seen enough, eager to seek out the next new challenge. I’ve learnt that you really should allow yourself at least 2 years in a job role before moving onwards. After all practise makes perfect. Just because I excelled in one project doesn’t necessarily mean the next project will be any easier. This failure can be seen as getting bored too quickly, impatient.  It’s a tricky one because you can find yourself falling into the trap of becoming too complacent, watching the years go by and then realising you missed your chance to make that exit you so desperately need right now.

Being made redundant. I left my country of birth after one year of working as a graduate engineer, to work in Ireland. I’d not been overseas before, and neither did I have enough workplace experience (my first company mostly employed people from the local university - we were all friends). It took me a while to settle in with the new company culture, moreover, the company was doing poorly in terms of projects, so for the first 6 months I literally had no real work to do. Although I made efforts to take on work and was proactive, I fear I wasn’t loud enough, blending quietly in the background.  When work did pick up and I was assigned to a good project where I thought I’d played an important role, I falsely assumed that my job was secure in the wave of redundancies taking place. Not so - I was made redundant (they train you to say “my job was made redundant”) - I see that as a personal failure on my part, not doing enough, not contributing to core projects as a failure.  Thankfully, the subsequent 8 years that followed, I made it a point to strategically move when my spider-senses detected a scarcity of work on the horizon.


Falsely assuming managers understood my expectations, not selling myself enough & working too hard. I recently came off an intense project where personally I felt I did an excellent job, even in my appraisals had consistently exceeded my managers expectations.  I assumed that I’d naturally move into a more senior position seeing that I’d proven myself on more than one occasion, doing work proactively, working long hours early into the morning, etc.  Oddly enough, I wasn’t given the appreciation I assumed was coming my way.  I did not communicate clearly enough to the main project stakeholder of my expectations, once the project was over, I found myself wandering, in limbo - all that effort, all my hard work wasn’t good enough to be noticed. Seeing that I wasn’t getting what I wanted, I decided to leave the team, leaving a hole behind now filled in by three people. A new project was kicked off, but it was too late for me to board that ship!  I realise now that expectations must be communicated clearly, and also, you should try NOT to do too much (if you’re overloaded, shout about it, don’t take it on), there’s more important things to worry about than work.


Refusing to play the corporate game.  Perhaps it’s because of my naivety, but for a few years I’d refused to play to corporate game of falsely smiling and being nice to managers, pretending to give a damn when in fact you don’t, just because you want to climb the corporate ladder.  Yes, you need to get on with all your colleagues, but when it comes to work and execution of tasks, one should be judged on only this - the value one adds to the bottom-line.  Maybe I have a cultural or religious bias, ideals that prevent me from mixing and socialising?  I’ve learnt that if you don’t allow yourself a little flexibility without compromising on your core principles, you need to develop some “street savvy, be street-smart” in the workplace, to make the connections and silently manoeuvre to positions advantageous for you.  Don’t expect others to do it for you, you need to consciously make the effort and plan ahead - take time to determine the corporate culture, identify the teams/people you’d rather not get involved with, have a plan of attack targeting the people you’d like to end up with.


Academic Failures

Not doing my best, not 100% focused. I used to be a straight-A/B student, but at university, I dropped the ball in my third & final years (the most important years!). Staying on my own with friends, having unrivalled freedom to experiment, even the distraction of girls, I ended up not attending lectures, avoiding the lecturers, and just sitting for the exams with only a month’s preparation, gaining a 3rd class pass (66% if you average the 4 years), when I could’ve easily got at least 75% had I been focused.  Whilst I did successfully qualify, I regret not using the vast amount of resources that were available to us (e.g. experimenting with business projects, becoming more involved with the university staff, etc).

Poor relationship management. Whilst some of this can be attributed to the unnatural cultural legacy of Apartheid, and that it needed some mental fortitude for students from backgrounds such as myself to break through the invisible barrier between different people (black/indian/coloured/white) - I failed to build any meaningful relationships with the faculty staff at university, so much so, that when I enrolled for a Masters in Ireland, the professor in charge was not entirely positive in his recommendation.  We were not on talking terms socially, I’d only visit him when a report or presentation was due - we did not have a mentor/student relationship.  At university the class would be naturally be separate into racial groups, we didn’t really interact with each other.  Had we learnt how to make these relationships in university, then working in a multicultural company would’ve been a piece of cake.


Personal Failures

Not knowing enough - choosing the wrong career path.  Perhaps I’m being too hash on myself, but one of my failures goes way back to when I finished high school, the period where you decide what to do for the rest of your life.  I feel had I known better, I could’ve made different choices that would’ve set out a path so different to where I am today, although the present one isn’t so bad.  Nevertheless, I failed to do the research, the serious searching that was required at this important juncture of my life.

Not executing my ideas, not taking enough risks.  I have always had ideas that could’ve led to something great, if only I’d acted upon them.  Either I take too long to experiment with the idea, or lack the confidence to push it through, take it to the next level.  I have executed on a couple ideas, but this was within the context of a safe environment of the workplace.  If I failing to execute, I can’t call myself an entrepreneur. I need to stop making excuses (no time, work, family, no money) and take a chance.


Rewarding myself.  I over analyse and keep putting the needs of others ahead of mine.  I am also too hard on myself, and very self-critical. Personal time and space is important, and is a right of an individual. I don’t allow myself enough of this, and also have failed in keeping my interests up-to-date, for example: making sketches, doing some programming (i.e. learning new languages outside of work), or taking time out to be active.


Relationship management. There were times when I found difficult to separate out my work persona from my family persona - and expect my family to be run just as I’m running a project at work, to an extent that I’ve been told I act like a general in the army, too strict with the wife and kids, with too many expectations. Over time, I’ve improved and trying hard to change :-)

[October 2016 Update]: Five years onwards and I've had a relook at my failure resume, read here!

Saturday, 16 April 2011

Getting back to being creative again....



I find myself reminiscing about the past recently, and find it fascinating how time flies by so fast, that before you know it almost two decades passes you by, even though I can remember my teenage years as if it was just yesterday.  I am searching for a something, a past time, a time for myself where I can relax, do something interesting and gain some satisfaction from doing so :-) Of course, I am quite enjoying blogging, although finding the time is proving difficult - and I'm quite conscious of my blog becoming an outlet for being a humble brag - but I guess my blog can be seen as me reaching out, perhaps someone comes across my posts by accident which could set things in motion and change my life in ways I could never imagine ha haa, lol - I'm such a dreamer :-)

I used to sketch/draw back when I was in school, you could say it was a hobby of mine.  I would mostly draw from pictures, not from my own imagination though. I would also draw plants (our house was filled with pot plants) and flowers. I would enter art competitions, but never did take it quite seriously though - I couldn't see a lucrative future in art, neither our school teachers help to promote the arts/culture.  

After school, enter university, then work, then married life - I really didn't make any time to continue my sketching seriously.  But I am thinking about making a start, I think it'll be a good stress reliever...

I want to put my art out there, and would like whoever stumbles across it to give an opinion. Remember this is stuff that I drew about 15-20 years ago. Click here for the full picture

Hand-drawn replica of the cover from "The Best of Lawrence Green"
The above sketch was taken from a book that I'd received for a History prize in primary school, ended drawing this during the July school holiday in 1993... 

In high school I made some friends who were quite talented and interested in art. One of the guys was heavily into the 1940s war comics that featured classic fighter planes (of the like described in this blog post); we'd all have a go at sketching whatever we found interesting. Remember these were all free-hand drawing, not tracing (Click here, here and here for all the pics below):



I went through a phase of being fanatical of Bill Watterson's Calvin & Hobbes, through another friend of mine. I couldn't afford buying the books myself, but I made sure when I was working I bought every title there was :-) I sketched these during my last year of high school, in between studying and writing final exams:
Weirdos from another planet

The days are just packed

Something under the bed is drooling

Homicidal psycho jungle cat

Attack of the deranged killer monster goons

Yukon Ho!

Friday, 15 April 2011

My Background - How my journey with computers began...




My interest in computers started when I was about 11 years old, when my brother was introduced to the subject in his first year of university, a course called Business Information Systems 101.  If you read my Outliers you'll know that we weren't well off financially and so couldn't really afford PCs at the time.  So I first began reading about all things computer-related by going to the library, checking out the series of Computer Encyclopedias. This was a series of titles introducing the novice to computers, not sure if this is still around anymore, the books were hardbound, grey in colour, a little bigger than an A4 (tried searching for it now, couldn't find it. This is going back 20 years ago). So all I had to go on was books, this was in 1988-1990.

I remember my primary school library acquired a PC around the same time, but no one dared touch it! None of the teachers knew how to use it, and wouldn't even allow anyone to get close to it. I did manage to touch the keyboard one day and came close to hitting the power switch, if I remember correctly I did in fact switch it on, but was admonished for trying :-( Talk about encouraging exploration and discovery.  I suspect that PC was your basic AT machine, with just two floppy drives, no hard drives.  Such was the mentality in those days, and in the culture of the people - heck, I wasn't allowed to touch my dad's TV until I was twelve or thirteen years old. These machines cost money, so we had to look after them...compare that now to my kids who control the TV and even learnt on their own how to pause & playback live TV, but also access things from the Sky Planner without even knowing how to read yet!

I started high school in 1990. Our school was one of the few Indian schools (House of Delegates) to setup a dedicated computer room, with about 25 workstations (they were supposed to be networked, using BNC coax at the time, but there wasn't anyone with the know-how to do it). Our school provided a Computer Studies course from Standard 8 (Grade 10, 15 years) to Matric (Standard 10, Grade 12, 17 years) and that - really excited me.  Although I was just 13 at the time (Standard 6, Grade 8) and wasn't even supposed to be close to the vicinity of the computer room, I managed to gain the trust of the Computer Studies teacher, who allowed me to enter the room during the lunch breaks, after school and even weekend sessions that he ran.  Mr. Ranjeeth was his name (he's now lecturing at university), a wonderful chap, who's support and trust in his students will not be forgotten by all. I would hang around outside the foyer waiting for him to disappear into the staff canteen and seized every opportunity. My persistence paid off, so much so that I actually began to miss other lessons by staying late in the lab. I also made good friends who were in their senior year, at first they used to kick me out of the lab but then when Mr. Ranjeeth gave the all OK, it was fine afterwards. The teachers just knew where to look for me, better have a student interested in something educational rather than have him join the wrong company, believe you me...it was very easy to join the wrong crowd, for instance join a gang and start smoking...By the way, our lab was heavily secured, in keeping with the culture that these things are expensive, cost the people money and should be treasured...The other schools (i.e. the White schools of course had computers way before we did....)

It was these early high school years that I was introduced to MSDOS, GWBASIC and PACMAN of course.  I read every manual I could get my hands on, and experimented as much as I could.  It was in high school that I met other students from more affluent backgrounds compared to me, and was amazed that some kids had PCs since they were like 10 years old so I had a lot of catching up to do.  I soon mastered the DOS command line and was fluent in playing games.  I started programming at 15 when I took the Computer Studies course, and from there my interest deepened...I seriously needed a PC to practice on, luckily had a first cousin who always offered his help with open arms. After school and some weekends I would spend at my uncle's house doing the homework, and in between play games (Vikings, Duke Nukem, Dangerous Dave & DuneII spring to mind).

XT, from Ohio Computers, two floppy drives only, no hard disk, 12 inch Hercules monitor, orange text.  It was a thing of beauty, my very own machine to play games and program...

In high school we covered basic computer architecture, algorithms and programming in Microsoft GW-Basic and Turbo Pascal. In the last two years we'd do a project each.  My first major project in GW-Basic was called "Trig Tutor" by "JincoSoft" (cheesy I know). Trig Tutor was an interactive tutorial that taught trigonometry concepts, showing diagrams, graphs and even had an exam.  For all intents and purposes, it was mostly a screen dump program with little logic of handling the exam and key presses.  The thing that took me most time was coding the animation. Hopefully you can imagine this - Two people running from either side of the screen (one runs in from the left, the other runs in from the right, they meet at the centre), coming together and opening up a scroll and running outwards. The scroll opens up and you see "JincoSoft presents TrigTutor" in the centre.  That's what I had in mind (just as the guy walks in Dangerous Dave, but running instead), but in the end, realising a running motion of legs and arms moving for both figures was too complicated, so I settled for what you could call stick figures coming in from either side of the screen, not simultaneously, one at a time, and then the intro text coming in from the right.  So that was the basic animation sequence that nowadays can be implemented so easily - there are plenty of animation programs out there, and application engines hidden behind the scenes in browsers or the system turns animations on as if by magic. Just take a look at this snippet below, it's really amazing that even in a browser post, you can execute complex-behind-the-scenes code so easily.

So I was a bit ahead of myself then, knew what needed to be done in terms of frames and the physics of running, but just couldn't figure out how to do it in GWBasic. I wish I had a video to prove this, but I've lost all the  floppy disks a long time ago...

Quattro Pro for DOS screenshot
The next school project was in Turbo Pascal.  I was heavily influenced by Quattro Pro, remember that? So I ended up writing a Quattro Pro clone, but instead of a spreadsheet, it handled a school report system. The classic problem of sorting out pupil's grades, sorting out the class positions and also generating a report for printing. I had emulated the Quattro menu style navigation, pressing "\" will bring up the menu, navigate left, right, up and down will highlight options, hitting enter will take you to an action and reset the screen. What I hadn't quite worked out was double buffering for screen scrolling - so I had to limit the display area to one screen width, with limited paging, but no scrolling.

Part way through school I met a chap who actually programmed back in the 60s/70s with punch cards. Yes, a South African, but no, not an Indian chap, a white guy. He was really helpful and fed me some classic books: Peter Norton's guide to Assembly Language, IBM PC, etc.

I also pair-programmed with a friend of mine who was equally passionate computers, he lived just up the road. One of our early experiments were to re-create the Norton Antivirus scan that used to be part of the boot sequence. It was a series of characters "| / - \ | / - " repeatedly that gave the appearance of spinning. That was cool,
remember the DOS spinning cursor (Thanks to Sal for helping with the javascript here):


I used to plan pet programming projects during school holidays, to the point of drawing the UI on paper, the classic wire-frames. I'd even toyed with names for my company I'd own one day.  The programs I focussed on again was more around emulating Quattro Pro, which was a tall order, so nothing really materialised apart from the spinning cursor, the menu driven system and a basic spreadsheet-like application to do school reports.

You'd think that I'd continue my foray into computers after high school, but that didn't really happen. University, in my opinion is a waste of time [topic for another day].  Anyway after high school I had to decide what do do with my life: Medicine or Computers?? Turned out Medicine was not an option as it was too expensive and I declined my only offer, so that left Computers. Two choices: Computer Science or Electronic Engineering.  I chose the latter because I thought I'd get the best of both worlds with Elec Eng because of the cross-over in the domains, and because of the promise of software engineering courses (Operating systems, databases, software engineering & software design) in the 3rd and 4th year of the engineering course.

During the university break of the first and second year, I used to work through the holidays for a national clothing retailer. I started off as an accounting clerk, but persuaded the IT admin guy to take me on. They were just installing Point-of-Sale (POS) systems nationwide, all networked, with the master control centre in the local town.  I ended up planning and rolling out a few stores all on my own: installing the machines at the counters, patching the network cable and testing the systems.


I wasted the first year learning about chemical engineering, technical drawing & mechanics and advanced calculus. The second year was a little better, offering a course on C in first semester (2 months really) and Assembly in second semester. By that time, my passion for programming had waned because of all the other course load, being away from home and student life itself. In the 3rd year, there was one course on embedded programming PIC assembly language, 
and guess what - the courses that were promised were not available because we didn't have the lecturers available. What a waste - I'm learning about radio communications, control system theory when all I wanted was to learn about software.  So even though I succeeded at getting a university degree, which in itself was a triumph considering that out of 600 students who registered in 1st year, only about 50 students reach the final year in 4 years and graduate.  But I had some major lost time, and by then I was no longer passionate about programming as I was in high school.  In my third year holidays, I did a two week stint on Y2K testing, but no programming.


Because I got a bursary from Vodacom, I was heading off into the communications field, GSM seemed pretty interesting at the time - but we didn't even touch on that subject in university.

In my university projects, I tried to keep them software related. In my final year 1st semester project, I was part of the "MotorVations" team, our product was called "TheEye", a vehicle-based monitoring and measurement device. The project was a complete Product Development exercise, we had to do marketing, advertising, research, presentations, prototypes and final product implementation.  Back in 1999, accelerometers were just coming out (compared to now where these things are in every smart phone, sat nav, etc). TheEye was all about measuring and reporting driving performance, by using data captured by the accelerometer and presenting it in a visual form that makes sense. It was a major team effort, the code that I wrote talked to the accelerometer via a PIC micro controller and sent data onwards to be processed. One team mate wrote the digital clock, another wrote the VB application interface. Like most university projects, we had little time for integration testing and feedback, in the end only the clock worked and data from the accelerometer appeared to be randomly generated! But if I recall correctly, our team did get the highest mark in the class overall.  A sore point to note though, and it was our introduction into team work, was the immense pressure and negative atmosphere that resulted when it came to distributing the marks to team members...the team split after that project :-(

To end this post (my real-life industry projects will be another post), the final year project was a Mail system, written in Visual Basic, using Novell Groupware ActiveX objects. It was a simple system to filter out email distributed to specific user groups on the network, for university notices. For example, students shouldn't get to see notices sent out to university admin, chemical engineering students shouldn't get notices for mechanical engineering topics, etc.  I was left entirely on my own to figure this out, not having a good relationship with my mentor (a post for another day, another reason for why I feel university is big waste of time - the professor could've done a better job in my humble opinion). I did a reasonably okay job of the project in the end (but again found myself missing out on big piece of information, for e.g. the whole topic of network systems and unix servers. Had I done the course on operating systems or taken Computer Science instead, I would've re-used part of an existing technology...but thankfully Novell had exposed some pretty cool ActiveX objects that provided all the data and network communication I needed. What really irked me was that after I'd submitted my initial design that used these objects, the professor routinely updated the project spec by specifying using novell groupware interface!) Agh, I needed to pass and just get the hell out of university and start work to earn some money...I was expecting to work for Vodacom anyway, radio engineering not doing software at all...

Having graduated, I found myself without a job - the Vodacom bursary didn't guarantee a job placement which I assumed was set all along. I had interviewed at Deloitte for an analytical role involving mathematics, statistical mining and investigating fraudulent pension schemes.  I was desperate to take any job, but somehow maintained I shouldn't throw away my hard-earned Electronic Engineering degree for a job involving numbers analysis.  A month passed, Vodacom approached me and offered a Database admin/systems programming role - I spent a couple of hours with the team and realised again that I'm not interested in data harvesting and SQL analysis, I wanted to create systems.  So I really pissed those guys off for wasting their time.  Then finally in March 2001 (after about 6 months looking for a job), an opportunity at UEC came up: These guys actually made Set-Top-Boxes from scratch, wrote the drivers, interfaced with operating systems and even wrote application code. They worked with companies around the world, and the interview process was not even an interview - they were just looking for fresh graduates to start churning out code.  So this was the closest thing and most relevant company for an Electronic Engineering graduate, and I took the job.  But I wasn't put on to write drivers or low level bootloader code, instead found myself learning and writing OpenTV applications, in C - a language that I programmed in briefly during my second year an university!

The flame was on its way out...until I started working for a real company (UEC), but even then in my first year of employment I was still a newbie...the flame only began to come back after I'd left South Africa to come into contact with the first world experiencing first hand what was on offer at both the workplace and universities which made me realise what a gaping hole there was, a big divide in knowledge and work ethic, professional responsibility between the two worlds....truly an eye opener! This then provided the spark igniting my analytical engine that had lain dormant for so long, spurned an interest in reading and experimenting as I had this big gap to close...which thankfully I did eventually close both academically (got an MSc from a distinguished University) and professionally (worked with brilliant people and secured a position with advanced product development team)...   Alas, I have painted a bleak picture of the educational experience the South Africa provides, perhaps it was down to just bad timing during a period of change and transition in the political climate, the university has since then improved its graduate programme by introducing a Computer Engineering degree to be more in tune with the real world...globalisation, Internet and open source have no doubt been an overall influence.

Now that I'm heading back to SA, one of my goals is to promote a different kind of pragmatic education, and I will endeavour to promote open source software, that alone provides enough information to be learn and become a self-made software engineer (again, digressing - a topic for another post)...
During my stint overseas, I had solid exposure to real world development, writing all types of applications, centred around Digital TV systems. Starting with the Set-Top-Box User Interface Application Development primarily in C, exposed me to the world of embedded programming, real-time operating systems and operating system development. That was really cool stuff because the code was actually being used by real people in the homes - a very nice feeling to know that there's code out there that you wrote...I was also exposed to Server-side programming specifically on Windows Server Operating systems where I moved to C++ system programming, opening up a whole new area of programming, involving video streaming over IP, encryption systems for VOD servers and lights-out automation services using web services.  I also did my Masters on Internet Search and Advertising, exposing myself to a somewhat different world of Internet Systems.  And the closest thing to doing something from scratch, was when I took on a pet project to prove I could make a TV talk, the very first implementation of speech synthesis on a Set-Top-Box - alas, NDS at the time did not see any business value in promoting the work into mainstream product development - so a couple of years later, a start-up called OceanBlue went public and became the worlds-first in providing Talking STBs!!

I have always been full of ideas, and still continue to dream of owning my own start-up one day, yet I find myself caught in reality, that unlike Steve Jobs, I don't have a reality distortion field - I can't afford to take that massive risk and plunge into the unknown, I am always looking out for the most practical and realistic solution, putting my family needs ahead of myself - so as yet, as much I'd hate to admit it, haven't had the guts to really go out on my own - but the desire is still there. I just hope the flame doesn't burn out soon....





Monday, 4 April 2011

My Professional Background (Digital TV Software)...



Founders at Work: Stories of Startups' Early Days (Recipes: a Problem-Solution Ap)If I am to write about professional topics in software engineering offering my opinion and the like, then it's fair I provide some bit of background into who I am professionally.  I'm afraid I don't have that much of a story to tell, but I'll try to tell a story just like one's told in one of my favourite books Founders at Work: Stories of Startups' Early Days (Recipes: a Problem-Solution Ap) although I'm not nearly as great as those guys, but aspiring to get there some day ;-)  Okay, this post isn't going to tell the story as planned, the story will be left for another post. Below is just a snippet of my current professional background.

I am in the business of software development in the field of Digital TV systems. What's that then?? Have you heard of a gadget called a Set-Top-Box (STB)? It's a cool little box that brings you digital TV to the home, offering you hundreds of channels and interactive applications, no doubt a couch-potato's favourite tool :-) You drive the STB through something called an Electronic Program Guide (EPG) - which is basically an application consisting of a few screens providing information to navigate the TV schedule, control the TV, etc - basic STB & EPGs are called Zappers that give you access to basic TV services and a limited schedule, possibly offering a feature called Reminders that allows the viewer to set reminders for programs in the future. Advanced STBs & EPGs range from Personal Video Recorders (PVRs) or your TiVo, allowing you to pause and rewind live TV, watch one program and simultaneously record other programs. Traditionally, these STBs were limited to the broadcast domain: satellite, cable and terrestrial. Like so many technologies, depending on the region, different standards are implemented - it also depends on the technology suppliers chosen by broadcasters.  More recently though, with the ubiquitous internet and the plethora of interconnected devices being driven by the rapid growth of smart phones, STB technology is forced to follow suit by offering Internet services, collectively grouped under the moniker IPTV. For an overview of IPTV systems I highly recommend IPTV and Internet Video, Second Edition: Expanding the Reach of Television Broadcasting (NAB Executive Technology Briefings).

Anyway, there is still very much an ongoing battle for the living room with products like GoogleTV, AppleTV, Netflix, AmazonVOD, BT Vision, Roku (to name a few) that are competing and trying to disrupt the marketplace, which, in my opinion is always a good thing, especially since traditional broadcasters have long since enjoyed a monopoly, trapping consumers into their product walled gardens with strict pay walls...Sorry, I'm digressing.  More on my thoughts about this particular industry in future blog posts ;-)

The fundamental technology that brings us this beautiful world of TV, is the family of standards called MPEG, Moving Pictures Expert Group.  Another fundamental technology to this is content protection, or Conditional Access. Remember that PayTV broadcasters are offering premium content to paying subscribers, this content needs to be protected to prevent piracy, etc. Conditional Access is the backbone to securing revenue for the PayTV operators.  If you're looking for a good overview of this technology domain, then I must refer you to no other than The Essential Guide to Digital Set-Top Boxes and Interactive TV

The STB in your home is just an end-point. A lot of things has to happen before-hand. I won't go into the details now, but just understand for now that the STB needs to receive a signal from somewhere, just as your mobile phone will not operate without a valid signal.  Just as you have some transmission medium that enables you to receive mobile signal (those base stations / transmitting stations), so too is there a similar transmission and distribution medium for TV signals.  And to get TV, you need content, i.e. something to watch/listen.  This content needs to be prepared first for transmission.  To get the nice TV program in your living room, content needs to be created, converted to some format and distributed to your home in some way (cable, satellite, telephone line, etc).  This all requires intensive computer systems, called backend or Headend systems.  Without a headend, your (traditional) STB is useless.


So what have I done that qualifies me to speak on this subject??
I have personally written STB EPGs (known as STB Interactive applications MediaHighway, OpenTV), ranging from your simple zapper boxes with simple graphics, to advanced screens with 7 day program guides and PVRs (generally powered by top 3 chipset vendors ST, Broadcom, ARM each with its own porting layer). STBs are no different to PCs and needs an operating system function, I've written low-level operating system components that enable EPGs to run.  I've also written Headend applications in the IP domain, particularly contributing to IPTV streaming and VOD encryption systems.  I have worked with STB manufacturers, Software Consulting and Middleware/CA/Headend technology providers, including PayTV Operators (Multichoice, DirecTV, BSkyB, Sky LA, Telecom Italia, Softbank, etc). As an engineer I've written code running in over 25 million homes in all the continents, as well as headend systems serving thousands of users.  I've also managed the production of STB system software (Middleware Stacks), involved in multimillion pound projects and therefore have direct, first hand knowledge of not only developing STB and Headends, but also innovated on accessible EPGs to make them more easier to use, for example a Talking TV.  Overall, I believe I have relevant, well-rounded experience and a versatile skill set that qualifies me to contribute to the Digital TV subject.  I'll refer you now to my LinkedIn profile until I follow-up with another post going into detail into some of the projects I've worked on, including the story of how I came to be involved in software...