Archive for December, 2008

Do We Really Need Personal Data Backup Strategies?

December 29th, 2008

Some people advocate frequent backups – and some go so far as to suggest making use of offsite storage, duplicating their DVD/CD collections, and so on. This fixation on personal data redundancy seems multi-compulsive for an individual or a family (running a company is obviously a different situation).

I personally do not have a data backup plan – aside from online storage like Google Docs, Flickr (for photos and videos), and source control. I have lost years worth of files a number of times, and every time my hard drive comes screeching to a halt, I feel that burning pit of anxiety deep in my stomach, but guess what? It doesn't last long. Seriously, over the years there has never been a case where I lost something that I absolutely needed (again, personal pictures and videos are an exception). After losing data, I find myself pining for a couple recently created / used files, I then recreate the files in a quarter the time it took me to do the first version, then I forget about the heaps of digital baggage I was hording over the years.

Personal data loss might be part of a natural regeneration process – like a forest fire, it makes way for new growth and forces us to focus on the present.

Stop fighting nature, forget about a data backup plan, involuntary random data purging might be good for all of us. Perhaps a digital natural disaster is in order for you. :)

Can you let go of your bits? What is your backup strategy? Why do you backup?

Author: Adam Kahtava Categories: Musings, Software Tags:

The Law of Two Feet

December 19th, 2008

The Law of Two Feet is just as applicable to life, as it is to Open Spaces.

The Law of Two Feet:

If at any time during our time together you find yourself in any situation where you are neither learning nor contributing, use your two feet. Go to some other place where you may learn and contribute. – Open Spaces, Wikipedia

By applying this philosophy to software development (programming languages, operating systems, and development ecosystems), I’ve really been been re-igniting my passion as a software developer. I am foremost a software developer and the tools and products I choose are secondary, but I lost sight of this over the past couple years. I was buying into being a [insert your choice of ecosystem, language, operating system here] developer.

Anyhow; this isn’t to say I won’t be raising my concerns (running away), I’ll continue to make noise (because I believe it has value), but when change doesn’t manifest. I will (like so many people before me) use my own two feet and move towards a situation where I can continue to learn, contribute, and be the change I’d like to see .

Author: Adam Kahtava Categories: Musings, Open Source, Personal, Software Tags:

Some Design Up Front is Good

December 18th, 2008

Like a horse with blinders on, avoiding some degree of Big Design Up Front (BDUF) can force your team and project into tunnel vision, because… If you don’t look at what you’re building in its entirety, it is harder to see the big picture, to have to that ah-hah moment that leads to a break through, to maintain conceptual integrity, or have a successful project.

I worked on a project where we attempted evolutionary design (avoiding Big Design Up Front) while taking an Agile approach. We used Continuous Integration, and Test Driven Development. Looking back, our attempt at trying to avoid Big Design Up Front was fatal for our project’s success and probably our biggest mistake. The funny thing is, the only reason we avoided BDUF was because it seemed non-Agile (note the capital ‘A‘ in ‘Agile’ read Yegge’s post Good Agile, Bad Agile for the reference). As a development team we were inexperienced Agile (eXtreme Programming) teenagers and somewhere along the way we exchanged our brains for dogma.

eXtreme Programming [is at odds with] “Big Design, Up Front” (BDUF) _ Because “Ya Ain’t Gonna Need It” (YAGNI) … [but this is often] taken as permission to not do any planning – Gerard Meszaros’ Alberta TechFest slide deck ’07

In the past Big Design Up Front (BDUF) was associated with large inflexible architectural solutions that are designed upfront (before development begins) – like the waterfall methodology. However; BDUF (like most techniques / methodologies / tools) are quite useful when used with a sprinkle of common sense and moderation. BDUF can be a productive lightweight tool for fleshing out the high level overview of a system. It is important to note that I’m not advocating Big Architectural Design Up Front which is often composed of reams of documents, UML, ERDs, diagrams, and other unneeded artifacts. Instead I’m advocating for paper based story boards, wire frames, paper prototypes, user stories – anything that is easy to create, destroy, and recreate. These techniques provide the foundation of the final product, they start to verbalize the common product goal and can start to draw out the language, metaphors, and model that will eventually compose the project.

Avoiding some Design Up Front was a mistake for our project. As a team we were trying to cope with the complexities of our domain under very tight deadlines. Our code became increasingly brittle, we had overlooked obvious shared functionality that a high level overview would have fleshed out. At the same time we had segregated our application into sprint sized silos with no clear relationships – each sprint was essentially a two week tunnel, and disconnected.

Without some form of BDUF it was difficult to:

  • maintain conceptual integrity, a common goal, a consistent user interface
  • estimate the whole product cost
  • have a successful project

We should have headed Steve McConnell’s words:

people were claiming,  “I don’t have to do requirements or design because I’m using object-oriented programming.” That was just an excuse. Most of those people weren’t really doing object-oriented programming-they were hacking, and the results were predictable, and poor. Right now, people are saying “I don’t have to do requirements or design because I’m doing agile development.” Again, the results are easy to predict, and poorSteve McConnell, Code Complete

Or perhaps Martin Fowler’s suggestion:

the planned design approach has been around since the 70s, and lots of people have used it. It is better in many ways than code and fix evolutionary design. But it has some faults. – Martin Fowler, Is Design Dead?

Not doing some Design Up Front is probably another excuse for being sloppy, but what do you think?

Author: Adam Kahtava Categories: AJAX, ASP.NET, Musings, Personal Tags:

By three methods we may learn

December 10th, 2008

By three methods we may learn wisdom: First, by reflection, which is noblest; Second, by imitation, which is easiest; and third by experience, which is the bitterest. – Confucius

Author: Adam Kahtava Categories: Musings, Personal Tags:

The Case for a College / University Education

December 9th, 2008

In the IT world the debate over the value of formal education vs the school of hard knocks (real life experience) has been waging for a long-long time. I’m biased towards the education side of the debate to some degree, and here’s why I think having a formal education is important.

It’s easier to work or migrate to foreign countries
With a University education (regardless of discipline) it’s easier to obtain work and long stay Visas in foreign countries. Candidates with a formal education can move through the Visa process quicker and in some cases those without degrees are bared entirely from obtaining a Visa. While I don’t think these restrictions are fair, unfortunately it seems to be the global statuesque.

Job security, and increased marketability
When an employer chooses between two candidates for a position, experience often trumps education, but an educated candidate with experience can trump both – education and experience is the best of both worlds. In addition, as an junior / intermediate some employers will bill you out at a higher rate based on education, and some clients feel more confident with certificates and education – both factors increase your marketability.

A strong core, a long term personal investment
I attended Community College before University. While attending Community College some of my friends were enrolled in Computer Science at the University level. These friends would talk of fascinating things like: assembly language, processor registers, paging tables, and abstract data types. Sure my Computer Science friends were immersed heavily in theory, but I was immersed in the practical side of programming (without the theory) – I felt that I was missing out and was envious of their University education. After completing University, I found that the process of working through University helped me cultivate my ideas, understand the basics of computation, draw other disciplines into my work, and relate with the larger world. Today, I think of my University education as the center (hub) of a bicycle wheel – all the spokes branch out, but they all start at the center (this center being the core, the theory of the computer / software world). Sure, we can learn the theory on our own, but working through a conventional program with assignments and with instructors that continue to push you, enforces rigor and promotes personal growth (for myself anyways).

There are no recipes for success and formal education is not the end all – although every advantage helps in our increasingly globally competitive world. To this day, I’ve only been asked for proof of my education on two occasions: once while applying for a Japanese Working Visa, and the other while considering a position in the US (I’m a Canadian). To anyone considering a B.Sc in Computer Science or going to University, I recommend it over experience – it is a long term investment.

* photo courtesy of Jessie Johnson
Author: Adam Kahtava Categories: Musings, Personal Tags:

Twitter on PowerShell

December 5th, 2008

Adam Geras originally wrote a script in PowerShell that saves all the Twitter posts for a specific user into a file (view Mr. Geras original post here).

I built on his script and extended it to:

  • Post messages to Twitter
  • Retrieve Twitter replies
  • View my Twitter friends conversations
  • Display the classic Twitter Fail Whale when an error occurs

Screen Shots

Sending a Twitter message:

Viewing my friends conversations:

The classic Twitter Fail Whale:

There’s something beautiful about the classic green console on a black background – I think it’s about being closer to the metal. :) What do you think?

Contribute, view, or download the openly available script here: Twitter on Powershell

Author: Adam Kahtava Categories: Open Source, PowerShell, Twitter Tags:

Fun With Twitter

December 4th, 2008

I think of Twitter as a mash up of instant messaging, IRC, and the web. It's a great tool for keeping abreast of the global technical sphere and a great place to connect with people from your local community. The flexibility of Twitter, it's growing user base, and it's APIs are probably what has accelerated its use.

A couple neat examples of the flexibility of Twitter that I've seen are:

What innovative uses of Twitter have you seen or do you use?

Author: Adam Kahtava Categories: Twitter Tags:

The Best Teacher I Ever Had: An Ode to Stephan Regoczei

December 3rd, 2008

The most interesting courses at school were my non Computer Science courses (the comp sci courses were pretty easy since the instructors depended heavily on code samples and textbooks), and Stephen Regoczei’s course on Digital Multimedia tops my list for being the most interesting and inspirational course.

I usually picked my summer course while tree planting since most of the course syllabuses were online, but Regoczei’s course (aside from a vague 200 word blurb that the course digital multimedia related topics) had little information.

I emailed Regoczei requesting a syllabus and received a reply along the lines of:

Due to socioeconomic reasons, I do not respond to my email.

His course was ironically about communicating, the internet, and digital media, but yet he wouldn’t respond to email?! This was weird! I signed up for his course, I was intrigued.

On the first day of class, I sat near the front – but not in the front row (I was trying really-really hard not to be too geeky). Like most students in the class – I was clueless to who this Regoczei character was. Ten minutes after the class was scheduled to start we still didn’t have a professor, and students started leaving. Minutes later, a man who looked like he could be our professor walked through the door, but he then sat down among the students took off his jacket, took off his shoes, and the class waited a couple more minutes. The man who could have been our professor, started striking conversations with those around him, then stood up and walked to the front of the class, and introduced himself in a strong foreign accent as Stephan Regoczei – he was our professor.

With a series of five chalkboards available to him, and a full class, Regoczei would start jotting his notes on the middle black board, he’d then move left (not right as one might expect) to the next board, then back to the middle board. Then to the bottom left corner of the middle board, to the top right corner, filling in any empty space with his notes. He never touched the left or right most blackboards, but instead created a jumbled nest of notes that were impossible to follow if you hadn’t been taking notes. Regoczei often hedged around answering assignment / test related questions, instead he assured us that we would either “get it” or “not get it”, but he would say that he felt we were smart enough to “get it”. Over the first few weeks students would occasionally storm out of the class as they were obviously frustrated with his unconventional approach to teaching. When students did storm out he’d giggle and make funny remarks like “I guess they won’t ‘get it’, they must have been in the wrong class”.

The marking structure for this class was as unconventional as his teaching style – which had many students griping (I think some were on the verge of starting a petition to try and have him fired). The assignments weren’t hard, but they were extremely open ended which made you think. One assignment was along the lines of “present four topics in the Media that you found interesting”. Submissions in the form of a four page essay consistently scored lower than a single sheet of paper filled with bullet points and hand drawn color pictures. At the end of the course most of the students that “got it” had abandoned their pens and computers for paint, scissors, and pencil crayons. On my final exam I used a pair of scissors to turn my exam book into a pop-out, and had answered every question with a different colored pencil crayon.

In retrospect Regoczei really forced his students to think outside the box in a conventional setting – if we didn’t think outside the box we received a poor mark. For me, he demonstrated that if you understand the constraints of your environment, then you can play within these rules and thrive as you change the rules. Today I’d label Regoczei as a heretic.

Regoczei’s course also promoted a great sense of community – the first 45 minutes of his class were dedicated to a media show-and-tell where students could show an exciting product, or bring up an article for discussion. In a couple discussions we debated whether the oil slicks (highways) covering our country were worse than the oil spilling into the oceans and the emissions in our air, or how antiques featured on the antique road show can maintain value whereas mass produced replicas were cheapening our world, and we had ongoing conversations on quality vs quantity. In addition to the discussions, his extremely open ended assignments forced the class to come together and compare their marks and assignment strategies in an effort to figure out his bazaar marking scheme.

Today I think Regoczei’s main points were (but I’m not sure, and every student walked away with different ideas):

  • You need to think outside the box in order to be successful
  • We should question everything
  • People that can get beyond conventional thinking will never need to look for a job, because the jobs will always find them
  • There is a world of difference between “Kiddie” computing (Microsoft based PCs) and “Grown up” computing (unix, linux, macs, anything else)

This course along, with my discussion based English seminars were the most exciting, inspirational, and though provoking courses at Trent University. These were the courses that really taught me how to learn, inspired me, and left me hungry to continue learning, reading, writing, thinking, and growing.

This quote from Arden’s book reminded me of Regoczei’s approach to teaching:

Good marks will not secure you an interesting life.
Your imagination will. – Paul Arden, Whatever You Think, Think the Opposite

What inspirational teachers have you had in the past?

Author: Adam Kahtava Categories: Community, Musings Tags:

I WANT MEANS if I want it enough I will get it.

December 1st, 2008

I WANT MEANS if I want it enough I will get it.
Getting what you want means making the decisions you need to make to get what you want.
Not the decisions those around you should make.
Making the safe decision is dull predictable and leads nowhere new.
The unsafe decision causes you to think and respond in a way you hadn’t thought of.
And that thought will lead to other thoughts which will help you achieve what you want.
Start making bad decisions and it will take you to a place where others only dream of being. - Paul Arden, Whatever You Think, Think the Opposite

In one of my previous posts I said that I wanted more passion in my work – I want to be a happy satisfied developer (to use the tools, editors, frameworks, computers, and languages that make me happy). After publishing those thoughts, I wondered if I was being self centered – I kept thinking: “maybe I should just be happy with where I am? People are in worse situations right?” Then Arden comes along and offers that bit of encouragement.

We only live once, happiness and passion is important, I can’t settle for mediocracy. I continue to want.

Author: Adam Kahtava Categories: Musings, Personal Tags: