Great software developers know how to write code very well. Great business entrepreneurs know their target niche communities very well.
When the guy behind JoelOnSoftware.com and FogBugz announced StackOverflow.com I knew it would be an instant hit because his talks and blog posts consistently show him knowing not one but both of these things very well.
Here Joel Spolsky gives a talk on building StackOverflow.com, where his continued mastery of these two talents shines, since his talk is non-technical, but gives insights into both user behavior goals and techical decision pointers.
His video should also be a reminder to all just how high he's set the bar on communications ability for collaborators of projects on both sides of this fence. I will often revisit this video since I think these could be considered best practices to encouraging building a strong community-driven site for both the entrepreneur looking to start a new user-based community website as well as the great software developers who intend to build it.
By watching his talk alone I can see he knows the keys to bridging the communication gaps that often exist between these two sides of the 'I have an idea for a great website' coin. I hope one day as well to have learnt to be such a person gifted with Joel's rare talent. For now though, thanks Joel for this shared jewel of knowledge mentorship to me and the community.
Sunday, 7 June 2009
Learning from StackOverflow.com
Saturday, 23 May 2009
Git For Version Control - Why Choosing It Can Define You And Your Team As Developers

The first question one usually asks if one hasn't been exposed it is why use version control software?
My first experience with version control within a team environment was just after I came off a project where two other developers and myself were unable to deliver a first cut of a project because each of us developed in our own way and style, and we just could not get many, many ownership and integration issues worked out in time. I then joined a team that used Sourgear Vault for version control. and where several ground rules placed by our Technical Architect ensured that all code was checked in at the end of every day, and that builds were made automatically on commits. Breaking the build was a big no-no, and the incentive to keep to this was that if someone broke the build, they bought everyone lunch that day, a nice rule which cost me a bit at first in terms of free BK for folks at my expense, but paid itself back nicely in terms of disciplining me to check my code and my tests more thoroughly before committing.
This also gave immediate benefits to me in that not only did I become a better programmer because my code was being constantly checked to ensure I did not break the build, but it also allowed for easier reviewing by my team to ensure adherence to good design patterns, no implementation of anti-patterns or unwarranted hacks, and an adherence to accepted coding standards. For the team it also meant that integration of various components in the project happened much eariler and frequently. Learning from each other's own hacks and best practices also happened much more often, and frequently.
As a single or lone developer, I would also recommend version control as features such as 'code-revert' means quickly 'righting the wrongs' of horrible coding efforts where the neat organised project you started with several hours earlier became strands of spaghetti code you wish you could throw out with yesterdays leftovers.
Recently I came across a video on YouTube about Git by Linus Torvalds, creator of Linux. After watching it and playing around with Git myself, I find it personally appealling to my style of development as I find myself to now be a more mature developer, but still wishing to work closely with younger developers who may be very talented but not have had as many best practice habits in team development ingrained in them.
The key point of this version control system is the term 'distributed' There are no branches, there is no central repository, things common in all systems I met before such as Vault, Team Foundation Server, CVS and Subversion. Instead, every member of the team has his/her own copy of a starting point in the system, and one may choose to include submissions by team members to all to update their own copy of the project system, or not.
In a mentoring-friendly environment of software development I think this can be most effective to training junior developers, as code reviews can be more real time and one-on-one with anyone, from a peer to the lead technical architect. This is not to discount the team dynamics, full team code reviews are great for experienced developers, but for me required a bit of a thick skin as my coding practices are open to a barrage of public, sometimes undiplomatic, feedback from everyone on my team at once. Developers are passionate about their code and coding practices, and so peer code reviews can get a bit heated at times.
With Git, I can see more interaction happening with just as much passion, as well as growth, for a junior developer as a technical architect or senior team member walks through one-on-one with them why certain submissions they make to the technical architect's repository won't make the grade and be included in their build, at least, not yet.
One thing that is great about this is that ownership is so clear here. In this case, the project will be delivered via one person's copy of the project, probably the technical architect or project delivery lead. This ensures ownership is directly attributed, so that in the case of a technical architect code reviews HAVE happened, and no unfixed results of previous code reviews are present.
I missed getting in to today's Open Space Coding so I haven't gotten a 'real world' test with Git yet, but hopefully soon I'll find an opportunity to experiment with it, either at work or on a pet project of my own.
My first experience with version control within a team environment was just after I came off a project where two other developers and myself were unable to deliver a first cut of a project because each of us developed in our own way and style, and we just could not get many, many ownership and integration issues worked out in time. I then joined a team that used Sourgear Vault for version control. and where several ground rules placed by our Technical Architect ensured that all code was checked in at the end of every day, and that builds were made automatically on commits. Breaking the build was a big no-no, and the incentive to keep to this was that if someone broke the build, they bought everyone lunch that day, a nice rule which cost me a bit at first in terms of free BK for folks at my expense, but paid itself back nicely in terms of disciplining me to check my code and my tests more thoroughly before committing.
This also gave immediate benefits to me in that not only did I become a better programmer because my code was being constantly checked to ensure I did not break the build, but it also allowed for easier reviewing by my team to ensure adherence to good design patterns, no implementation of anti-patterns or unwarranted hacks, and an adherence to accepted coding standards. For the team it also meant that integration of various components in the project happened much eariler and frequently. Learning from each other's own hacks and best practices also happened much more often, and frequently.
As a single or lone developer, I would also recommend version control as features such as 'code-revert' means quickly 'righting the wrongs' of horrible coding efforts where the neat organised project you started with several hours earlier became strands of spaghetti code you wish you could throw out with yesterdays leftovers.
Recently I came across a video on YouTube about Git by Linus Torvalds, creator of Linux. After watching it and playing around with Git myself, I find it personally appealling to my style of development as I find myself to now be a more mature developer, but still wishing to work closely with younger developers who may be very talented but not have had as many best practice habits in team development ingrained in them.
The key point of this version control system is the term 'distributed' There are no branches, there is no central repository, things common in all systems I met before such as Vault, Team Foundation Server, CVS and Subversion. Instead, every member of the team has his/her own copy of a starting point in the system, and one may choose to include submissions by team members to all to update their own copy of the project system, or not.
In a mentoring-friendly environment of software development I think this can be most effective to training junior developers, as code reviews can be more real time and one-on-one with anyone, from a peer to the lead technical architect. This is not to discount the team dynamics, full team code reviews are great for experienced developers, but for me required a bit of a thick skin as my coding practices are open to a barrage of public, sometimes undiplomatic, feedback from everyone on my team at once. Developers are passionate about their code and coding practices, and so peer code reviews can get a bit heated at times.
With Git, I can see more interaction happening with just as much passion, as well as growth, for a junior developer as a technical architect or senior team member walks through one-on-one with them why certain submissions they make to the technical architect's repository won't make the grade and be included in their build, at least, not yet.
One thing that is great about this is that ownership is so clear here. In this case, the project will be delivered via one person's copy of the project, probably the technical architect or project delivery lead. This ensures ownership is directly attributed, so that in the case of a technical architect code reviews HAVE happened, and no unfixed results of previous code reviews are present.
I missed getting in to today's Open Space Coding so I haven't gotten a 'real world' test with Git yet, but hopefully soon I'll find an opportunity to experiment with it, either at work or on a pet project of my own.
Saturday, 16 May 2009
Wolfram Alpha - How it stacks up against Google
WolframAlpha launched at 7pm CST yesterday, against much Twitter hype. If it wasn't tweeted by Peter Kim I probably would not have been interested in yet another search engine claiming to have Googly potential. I went through the WolframAlpha demonstration video, and my interest peaked. After having used it a bit with several adhoc as well as recommended search terms, I realise that, as a database of intentions, WolframAlpha is still a very young infant in the search business, albeit an infant with a potentially high IQ.
One example that started me on this unscientific evaluation was the search for 'Universities near Hounslow, UK', something a little generic, but still near-enough to natural language to be human readable and express the intention of my search. Given the video demo and instructions on the site, it also gave the impression that WolframAlpha would make mince meat of this search. It was very sad to see that it again gave me a 'Wolfram|Alpha isn't sure what to do with your input' screen.
Modifying the search to include a more popular location, 'Universities near Cambridge' resulted in a similar screen. By comparison, Google's seach result returned a mini-map from Google Maps with several univerisities listed, along with their names as website addresses. WolframAlpha failed this search 'litmus test' whereas Google shined brightly.
The second test used was 'September 11, 2001.' Indeed, under noteable events WolframAlpha did list 'World Trade Center destroyed' as one of its results, the result I was searching for. Google, by comparison also had the wikipedia entry for that sad day as its first link. Good litmus test results for both, nice!
A search for a more obscure date of 'September 14, 1979' produced more useful information in WolframAlpha though, since information on a noteable event was there, and the relevancy of its statistical information like moon-phase and sunrise/sunset times seemed a little more appropriate to the possible intention of the search. By comparison Google's relevancy ranking was a bit off to my intention, with links to an archived issue of Science Magazine being its first choice result. 'All technology stories on 14th September 1979 in the Guardian UK' was in the top ten results still around number 5, so still not too far off, given the obscure nature of the search and my unspecific intention with this search.
The tie-breaker for me was using a not-too-popular but still known date, UK Prime Minister Gordon Brown's birthday of 20 February 1951. Here Google floundered, the Wikipedia link to Gordon Brown was listed in the top 10, but was not number one. By comparison, in WolframAlpha's Noteable Events listing Gordon Brown's birthday was listed, along with actor Edward Albert. The Edward Albert birthday was a result that was NOT in Google's top ten search, but did seem to have a strong relevance to search intention that Google missed, even though it was not my search intention. This is a toss-up, but given my opinion that the intention of a search for a date would be noteable events. Given the missing of Edward Albert's birthday from the test results, I'm not sure if Google passed this litmus test.
One nitpick is that WolframAlpha's noteable events listing is always a bit of scroll down the page, the first result was actually the time difference from today. This is probably a tribute to its Mathematica underpinnings, since it is billed as more of a number-cruncher and statistical analyser than a relevancy-finder, which is more Google's forte.
The final litmus test I used was two stocks, 'MSFT AAPL'. That's Microsoft and Apple's stock names, for those unaware. Here WolframAlpha did work as advertised, bringing up very relevant information about each company, and a 'optimal portfolio return' for each. By comparison, Google continuously listed links to stock alerts for each from the previous day's trading. One additional result that came in with Google was an article from May 1st this year on 'What Microsoft Can Learn From Apple', something that may not have been my intention, but was still relevant, and a good link to me, as a business reader. If I were a stock analyst though, I'm not sure how I would have reacted. Both guys passed this litmus test, however where Google offered variety, WolframAlpha offered more purposeful computational knowledge.
However, this should not say WolframAlpha is a Google-killer (yet). Searches for less mathematically formulated queries, such as my name, or 'Ratio of Men To Women in London' seemed to confuse WolframAlpha's supposedly powerful natural language interpreter, just as my initial 'Universities in Hounslow, UK' search did. Google, on the other hand, had no problem understanding it, and directing the results of my search to the intention, which was the national statistics site for the UK.
So although the score so far seems to lead to WolframAlpha being gifted in quite a few ways, it still has a long way to go to even start to be in Google's league. I don't think is quite WolframAlpha's mission yet to be the successor to Google's crown as search engine king, but it should be the BHAG (Big Hairy Audacious Goal) of all search engines anyway.
As I write this, Google actually links 'BHAG' directly to the Wikipedia article on it, whereas WolframAlpha thought I was asking about somewhere in Pakistan. I guess that just reinforces my conclusion, that if you follow the script given, WolframAlpha works decently, however as a database of intentions, WolframAlpha has a long way to go still to reach the Google standard.
Friday, 1 May 2009
Presentation on Improving Web Applications - User Experience and Styles
After a few design sessions today everyone on the team walked away feeling very accomplished, except me. In the pit of my stomach I felt quite the opposite, and though it could have been the flu that I am still recovering from, I needed to be sure that we were not suffering from blissful ignorance and hence getting ourselves into serious trouble when it came to pending estimations we are about to do regarding work we intend to complete in upcoming sprints.
This is around the time any good team member should ask for a health check, but in this case there are no ground rules established so far within the team for health checking designs, so the effectiveness of one is questionable. For effective health checks to happen, the ground rules for analysis of materials for formulating the health weighting have to exist, and be understood and agreed to by all participating.
So I built this presentation based firstly on research into the ground rules used by two leaders in design and development, Google and Apple, and using my own past experience as a web developer to help build it.
I hope it helps teams using it (including ours) ask the right questions that setup good, iterative health checks for improving web applications.
Thursday, 23 April 2009
Repost of Business Blogging Best Practices from Web Strategy By Jeremiah
These were originally published at http://jeremiahthewebprophet.blogspot.com/2005/11/learn-from-my-pain-business-blogging.html but the link now seems to be dead. However these are very useful guidelines for anyone who decides to take up blogging, not just for business purposes.
Image via Wikipedia
- Understand and be able to articulate the concept that “The Participants are taking charge” (Scott McNeally, Sun)
- Understand and be able to articulate that “Consumers trust other consumer opinions over all others”
- Understand that a conversation about your market will occur regardless if you participate or not
- Understand that blogs are nothing special or nothing new. In fact, blog tools are often less sophisticated than most free email services. A blog is just a tool. The key point is that now everyone (esp consumers) can easily publish their opinion, and other can easily find it (other consumers)
- Business blogging is publishing and participating in the conversation in your market.
- Listen to the blogosphere: Start listning yourself, or consider hiring a company to monitor and report on the blogosphere. There are a variety of tools that can do this, but this really is part time to full time job. Contact me if you want some recommendations
- Make it clear in your organization what’s "ok" to blog about and what’s not. Create a public disclosure policy and communicate to employees. Even if your company is not going to sanction blogging. (11% of internet users are bloggers, and this is increasing rapidly, likely your company has bloggers-Pew Internet) you need to communicate what's appropriate and what's not. The level of effort to create a policy is significantly less than a 'fiasco' of leaked information.
- Figure out in advance your blog purpose, audience and strategy. Have a plan.
- Pick a topic and stick to that topic strategy. Some blogs are good for product evanglism, customer feedback, corporate image, fire control, developer code, etc.
- Be authentic, don't create a fake blog, you'll get flamed when they find you out.
- A blog is not a press release, it's an informal converastion.
- Consider blogging at least once a week, if not more, find someone who’s already online a lot or is willing to commit.
- Your blog posts don’t need to be long, in fact short quick posts to relvent articles can sometimes ‘link’ you into the conversation.
- An ideal blogger is someone who is already online all the time, consumes mass info, and exports mass info.
- Design your blog in a way that makes sense. Create a URL that is unique to your discussion, find a template the aligns with your blog strategy.
- Discuss best practices in your industry. You don’t need to ‘self pump’ yourself, as readers realize that you understand what the best practices are, they will assume or relate that you as well are the best practice.
- To gain visibility strategically cross-link. Some thought needs to go into this
- Format for readability. Sometimes bloggers give long hard to digest paragraphs (what I call ‘steaks’) consider chunking the text into bite sized formats, bullet points and smaller points. (I call this “shish kabobs”). Try using bolds, colors, indents and other formatting tools.
- Consider using images to enhance your point. Avoid using the most obvious image, think a little deeper and go for a metaphor. You want your audience to go “aha, I get it”
- Read other blogs in your conversation and marketplace, link to them to your feedreader such as myYahoo or google personalized, or google feedreader.
- Edit your blogs for grammar and spelling, but don’t have your PR department write it, use a sensible natural conversational tone that you would use if you were actually speaking to your audience at a restaurant or bar.
- Leave comments on other people’s blogs in your audience, provide a link back to your blog
- Leave comments on your advocates, align yourselves with them. Reward your advocates (doesn't need to be monatarily). Strengthen your relationship so you both prosper.
- Develop a strategy to counter your detractors, consider using your advocates to fight your battles.
- Don’t beg for cross links, figure out ways to get people to link to your blog. Keep it natural and organic. No one wants to be "marketed" to anymore, plus it's pathetic.
- Consider an analytics tool. A simple ‘visit count’ like I use on my site, to google analytics (also free), to a full blown analytics suite will serve you well
- Respond to comments on your site, keep the conversation going.
- Your blogging strategy doesn’t mean that you need to have the whole world linking and reading your blog, it’s about connecting with your small audience
- Look for a non cluttered template, sometimes having all the blog features turned on will distract users.
- Really consider if doing ad words is best for your strategy, will that dilute your message to your target audience? Worth thinking about.
- Ask permission before posting someone’s name or email content. Of course linking to people that are already blogging and are “public” is certainly normal and acceptable, as they want to be found.
- Don’t talk smack about your competitors, the golden rule applies. Blog wars can get nasty, be sure you really want to go there.
- Acknowledge your competitors, believe me, your customers already know who they are, by showing openness, you’re demonstrating your confidence and self assurance to your customers.
- Discuss topics that are relevant to your audience, real business or user needs. Pumping your company on every post is not what blogging is about.
- At a medium or large corporation, bloggers will self select and volunteer themselves. They are already on their soapbox, are vocal or are leaders. You’ll know them as they will already be preaching.
- Only consider bloggers that have the time to commit to blogging, and can do so on a regular basis.
- Allow user comments, seriously. One of the biggest benefits of a blog is to have a conversation with your audience. You can figure out a process or a way to filter or review comments before they hit your blog. I feel strongly that comments are native to the tool and communication medium, strongly consider keeping it on.
- Consider your official corporate blogger to be an individual that already faces customers or the public. Blogging can reach a lot of people quickly and is persistent, often individuals that do a lot of speaking to the industry on behalf of the company are ideal.
- Your corporate blogger should be interesting as well as informative, they need to have a balance. No one wants to read a boring blog, but entertaining only lasts a few visits. The blogger should be a subject matter expert at the topic at hand
- Make sure the blog voice is authentic, but also well written. A fine balance is needed here, and it’s not easy to achieve. A balance between raw blogging, and corporate sanitation needs to be met. Talk about it in advance. Real but not raw, interesting but not polished.
- If you’re in a company where it may be hard to find regular bloggers, consider making a blog ‘pool’ or a general blog site that’s not attached to an individual blogger. GM Fastlane has multiple authors in their blog setting.
- Register your blog with indexers. feedster, technoratie, ice rocket, google, yahoo, pubsub, and others.
- Obtain analytics for your site, at minimum, a hit counter (like I use) or Google Analytics (free) or an enterprise tool.
- If you have multiple strategies, consider having multiple bloggers that focus in on each of those areas.
- Alert the analysts in your industry that you’re blogging, either give them a call or link to their blog (if they have one)
- Figure out a ‘fire team’ strategy for how to handle bad news, company crisis, or blog flamers. Do you engage, ignore, or redirect these events? What’s the purpose of your blog and image? Different companies have handled this in a variety of methods, figure out in advance what the best strategy is.
- On your first post of your blog, identify who you are, and your purpose. Consider elevating a short version of this in your banner or profile.
- Don’t believe the concept that “PR is dead” Public Relations have just started, and blogging is now part of it, blogs are the new public relations tool. When relations with your public are dead, you are dead.
- Don't hire any firms to help you with a blog strategy that are not blogging themselves.
- Don't hire any firms to help you that suggest the reason to blog is 'because blogging is hot right now'.
- Use language that your audience uses, avoid using terms that your marketing and corporate communications teams have created.
- Have a kickoff 'best practices' and 'strategy' meeting with your corporate bloggers. Have updated meetings and training later.
- Consider creating a feedreader with industry feeds for your bloggers to quickly scan.
- Inform other business units of the plan and involve them. This is very important for Corp Comm, Communications, Execs, Legal and Marketing groups.
- Find or train a blog guru to guide your corporate blogging strategy. This person may or may not be your corporate blogger, but find someone that can guide, provide best practices, and get the tools in motion. Often, this person is already a blogger.
- In addition to your regular guru, find industry blog leaders, read their work, talk to them, hire them.
- Attend blogging conferences
- Ask outsiders to provide honest and open feedback about your blog. Let them know that negative feedback as well as positive feedback will be helpful.
- Obtain high level approval and sponsorship.
- Write a detailed plan, and share with stakeholders, get approval
- Get a good blog book, Check out Rebecca's WebLog Handbook
- Disregard everything you read above, research on your own, jump in, and try it for yourself. I dare you, double-trump-crown-decker-chocolate-cherry dare ya!
- For long posts, it's best to compose offline. Use text editors for grammer and spelling, as well as reducing risk of losing connection. Pare down content before posting, consider running by a second pair of eyes (See full version submitted in comments from DaveU, Nov 29th, 2005)
- This brought to mind one other, consider using notepad to remove all text editor crap code (such as MS word) before uploading into blog tool. Use the native formatting tools within the blogging tools.
- Watch a webinar with presentation and powerpoint about blogging. This one is a good high quality introduction, worth turning on an listning to in the background Lewis Global PR, Breakfast Summit. I highly reccomend watching these videos to be introduced to the concepts
- Don't disappear for weeks on end between posts. Otherwise, your readers will disappear. Try to post on a regular-enough basis such that it gets readers into the groove of constantly wondering whether there's a new post to check out. (Submitted by Ken)
- Develop "thick skin" as people will slam your company, your products, your ideas, and maybe even you. This is called playing in the blogosphere, and for some, it's tough lesson to swallow. Don't worry, many of us are doing it, and there is some netiquette. More importantly, since your customers are already thinking these things and telling others, isn't it better to get it out in the open and resolve it for all to see? (Idea from Scott Anderson of HP during his address at the syndicaiton conference)
- Blog about timely events. Yup, releveny is important, this is a conversation so old news isnt' relevent. (Idea from Scott Anderson of HP during his address at the syndicaiton conference)
- Remember that blogs are conversations, avoid the long approval proccesses, 'strategic linking' and people that want to over-refine your corporate blog. There are many other marketing tools (like press releases, public websites) that you can put the polish on. A blog, should represent the transparency of the blogger to their audience. Keep it real.
- Be very cautious when starting a blogging program at your company. It makes sense to obtain strategy and advice from someone who is succesful blogger, not someone who's willing to dive in without proper experience
Thursday, 2 April 2009
Keeping meetings effective
via CrunchBase
Well planned meetings
Every well planned meeting should have a Meeting Owner, usually the same person who calls the meeting and is also expected to lead the meeting. The meeting owner is definitely the guy in charge of determining a meeting's Purpose, Objectives, Deliverables and Agenda (or what I've learnt to call the PODA).
If you think you need a meeting but cannot define this critieria, a meeting should not be called as it would be unstructured, unfocused, probably run over time and in general waste alot of time you could spend doing more defined things like building the code that drives some already well defined stories from your storyboard so it meets your acceptance criteria.
If you're still feeling a need to call a meeting because you really feel there is something that needs discussing, try polling the individuals you think you need to have there on a one-on-one basis at first until you have enough clarity to generate the PODA. In this manner you risk wasting only one person's time instead of many if indeed you're trying to call a meeting unnecessarily.
Tip: If you want to avoid becoming infamous as the 'the boy who cried wolf' of meetings it is a good idea to seek the
Bigger Tip: CEO polling is an automatic 50-75% on its own in my book, because his time is the most valuable because it's probably the one most asked for from people, so if a CEO feels the need to be at a meeting, it isn't because of a need for a coffee break and chat. The counter is also true, in that if you need the CEO at a meeting and have gotten pings from everyone except him on what they think about potential PODAs for that meeting, it might still not be worth calling.
The PODA should always be sent as well beforehand as possible to all participants of the meeting. This from my experience allows several things to happen. First it allows people to give feedback on the PODA, and if they do not understand it they will make me, as the Meeting Owner, aware of this so that I can clarify it in a one-on-one meeting or conversation rather than waste several other people's time at the beginning of a meeting.
It also allows every participant to schedule in not just the time for a meeting, but to schedule dedicated time of their own before the meeting itself to properly prepare for the meeting. This is where recruiting the right people comes into play, since I'm essentially depending on another person having the discipline already in place to know to schedule time to prepare for a meeting and review the PODA beforehand, rather than walk into it unprepared and essentially take time away from acheiving the meeting PODA by needing to ask questions to help them 'catch up', questions that could have otherwise been asked beforehand. That being said, as Meeting Owner, it is also my responsibility to identify such potential participants beforehand, and take appropriate action. If this means rescheduling the meeting, then that's a better problem to have than folks I work with and/or answer to in uproar because they felt I wasted their time by calling them into an unproductive meeting.
Now if you ignore my personal plight of not meeting goals and just do the math on time listed above, that's over an hour of lost productivity time because the person who would have key input and ultimately a voting say in what was the final outcome of discussions, wasn't there, even though all the other senior executive members of the team were. In addition to this, when they do have the meeting, they probably won't have this PODA strategy in place so will spend another 40-60 minutes of combined, wasted time, trying to establish what they're actually trying to discuss...why do I feel the need to call out a Vorgon analogy from this suddenly?
Monday, 16 March 2009
Seth Godin on social networking and how to do it right
I haven't had time to blog in a while, but I've been working really hard with the team here to flush out and develop ideas and firm up features for the GigJunkie website that aim to acheive what Seth talks about in this video.
Monday, 23 February 2009
Will I be working in London come September?
Being a Trinidadian working in London on the now-retired Working Holidaymaker visa, I became a bit anxious when I read that migrant workers will face tougher test to work in the United Kingdom.This is as my permission to work here expires after a year of full-time work, although my visa allows me to stay in the UK on vacation for another year from then. I had recently planned to apply to switch to Tier 1 or Tier 2 status at the end of this period, given the nature of my work, my love for it, and my employer's desire to keep me on after this time. Now I am unsure if this can even happen.
The reason I think this amendment is short-sighted, and will eventually hurt the UK more in its recession period is that I cannot be alone in the situation I am in, i.e. although I have practical experience and an income level far above that of most people with a Master's degree, the proposed new measures would exclude me from working in the UK without one.
The UK, I predict, will thus see a massive brain-drain as the exodus of "truly skilled workers without Masters' degrees" who cannot now qualify for Tier 1 status would leave a gap even local British labour and new graduates will not be able to fill immediately, especially in the "emerging technologies" and IT fields that I work in.
Even if workers were able to convince their employers to jump through the new hoops for Tier 2 status, this would effectively leave a worker open to being the victim in similar horror stories to those I've heard from friends who were on the US H1-B Visa. The power of a Tier 2 employed worker to protest improper, inadequate or unsafe working conditions or inequitable compensation scales would be virtually non-existant as this would risk him losing his job and being asked to leave the country. Tier 2 visa holders would become like second-class citizens in the workforce, working side by side with British nationals, but having little avenues to address grievances unless they were with a benevolent employer.
Anyone know a good immigration lawyer who might be able to show me the fine print in this amendment and if I'm being too pessimistic about the expected outcome of events?
The reason I think this amendment is short-sighted, and will eventually hurt the UK more in its recession period is that I cannot be alone in the situation I am in, i.e. although I have practical experience and an income level far above that of most people with a Master's degree, the proposed new measures would exclude me from working in the UK without one.
The UK, I predict, will thus see a massive brain-drain as the exodus of "truly skilled workers without Masters' degrees" who cannot now qualify for Tier 1 status would leave a gap even local British labour and new graduates will not be able to fill immediately, especially in the "emerging technologies" and IT fields that I work in.
Even if workers were able to convince their employers to jump through the new hoops for Tier 2 status, this would effectively leave a worker open to being the victim in similar horror stories to those I've heard from friends who were on the US H1-B Visa. The power of a Tier 2 employed worker to protest improper, inadequate or unsafe working conditions or inequitable compensation scales would be virtually non-existant as this would risk him losing his job and being asked to leave the country. Tier 2 visa holders would become like second-class citizens in the workforce, working side by side with British nationals, but having little avenues to address grievances unless they were with a benevolent employer.
Anyone know a good immigration lawyer who might be able to show me the fine print in this amendment and if I'm being too pessimistic about the expected outcome of events?
Thursday, 8 January 2009
Introducing Blurbs - and the Redditech "Ground Zero" blog
I started a Wordpress hosted blog quite awhile ago as I was considering moving to a hosted blogging platform. I eventually settled on Blogger, and this has been a good fit for me for quite some time.
However I have noticed a disappointing trend since I started actively blogging again. I visit many sites, either as learning resources, or just to lighten the mood of the day, but not having time to blog about them. Adding them to my del.icio.us links through my Firefox extension kept them historically available, but somehow lost the metadata of why I personally visited this site and found it worth noting.
I also tried to twitter about them, but with some of the long URLs of these addresses meant I had less characters in my tweet to write about why this site connected to me personally. I know tweets can exceed the recommended 140 character limit, but I like keeping my tweets under 140 characters so they can be transmitted via SMS and displayed on IM and also be catered for via websites that may host tweet feeds.
The level of effort needed for the extra step needed to render a tinyURL link for these sites also didn't quite make sense to me, since the added characters still weren't always enough.
So somewhere between the micro-blog tweet and the traditional blog post I think there's need of something newly defined...something that may have always existed in the blogging world, and which we can say we've created at least once before, but which we haven't quite distinguished and identified as unique...at least not yet. For now, I call this a blurb.
A blurb is and should be hosted within a blog, since in essence it is a blog post. However, I like to consider the 'non-blurb' blog post to be a bit thought out, somewhat edited, and perhaps including quite a bit of original opinion and/or factual content.
A blurb, on the other hand, is a post focused on a link or serious of links to more in-depth content. It is less thought out, containing just enough information to make the personal connection between the author and the content being linked to. It isn't limited to being the length of a tweet, and can indeed be a tweet for those who prefer to accept breaking the 140 character guidance limit. Unlike a delicious link, it isn't restricted to organisation by tags, but is indexed under the free form text one writes about it.
To experiment with this idea, I have reinitialised my Wordpress.com hosted account, and created the Redditech 'Ground Zero' Blog. This will be totally focused on 'blurbing', and currently I have two categories, 'tech blurbs', and 'time-wasting blurbs'.
I have also installed the Wordpress.com 'Press This' bookmarklet in Firefox that allows me to create a blurb about any page I visit and post it to Ground Zero in a few clicks.
I have as well as Vodpod's wordpress bookmarklet plugin that allows me to directly embed videos I may view into a blurb at my Wordpress.com hosted blog.
I suggest others try this idea too, and decide if blurbing content is an activity you do frequently enough to justify uniquely identifying and distinguishing it from the more lengthy blog post and the much shorter tweet.
However I have noticed a disappointing trend since I started actively blogging again. I visit many sites, either as learning resources, or just to lighten the mood of the day, but not having time to blog about them. Adding them to my del.icio.us links through my Firefox extension kept them historically available, but somehow lost the metadata of why I personally visited this site and found it worth noting.
I also tried to twitter about them, but with some of the long URLs of these addresses meant I had less characters in my tweet to write about why this site connected to me personally. I know tweets can exceed the recommended 140 character limit, but I like keeping my tweets under 140 characters so they can be transmitted via SMS and displayed on IM and also be catered for via websites that may host tweet feeds.
The level of effort needed for the extra step needed to render a tinyURL link for these sites also didn't quite make sense to me, since the added characters still weren't always enough.
So somewhere between the micro-blog tweet and the traditional blog post I think there's need of something newly defined...something that may have always existed in the blogging world, and which we can say we've created at least once before, but which we haven't quite distinguished and identified as unique...at least not yet. For now, I call this a blurb.
A blurb is and should be hosted within a blog, since in essence it is a blog post. However, I like to consider the 'non-blurb' blog post to be a bit thought out, somewhat edited, and perhaps including quite a bit of original opinion and/or factual content.
A blurb, on the other hand, is a post focused on a link or serious of links to more in-depth content. It is less thought out, containing just enough information to make the personal connection between the author and the content being linked to. It isn't limited to being the length of a tweet, and can indeed be a tweet for those who prefer to accept breaking the 140 character guidance limit. Unlike a delicious link, it isn't restricted to organisation by tags, but is indexed under the free form text one writes about it.
To experiment with this idea, I have reinitialised my Wordpress.com hosted account, and created the Redditech 'Ground Zero' Blog. This will be totally focused on 'blurbing', and currently I have two categories, 'tech blurbs', and 'time-wasting blurbs'.
I have also installed the Wordpress.com 'Press This' bookmarklet in Firefox that allows me to create a blurb about any page I visit and post it to Ground Zero in a few clicks.
I have as well as Vodpod's wordpress bookmarklet plugin that allows me to directly embed videos I may view into a blurb at my Wordpress.com hosted blog.
I suggest others try this idea too, and decide if blurbing content is an activity you do frequently enough to justify uniquely identifying and distinguishing it from the more lengthy blog post and the much shorter tweet.
Wednesday, 24 December 2008
Best of the holidays to all!
As I go offline for the next few weeks on holidays, I'd like to wish all the readers of this blog, my family and friends both here in London and back home in Trinidad, the most festive of holidays and the greatest successes in the year to come.
Be safe this Christmas everyone, especially when on the road. The last thing the world needs is another drunk driving statistic.
Be safe this Christmas everyone, especially when on the road. The last thing the world needs is another drunk driving statistic.
Thursday, 11 December 2008
Wednesday, 3 December 2008
Non-tech - In Memory of My Mother
Although I've tried to keep the content technical or business related, I've decided to dedicate this one post in memory of my mother, who passed on November 2nd 2008 after having suffered complications from heart surgery in September this year (about the time of my last blog entry).I've decided to post the eulogies written for her and given at her funeral on November 6th, both as my act of remembrance of her, and also as I could not be present for her 40th day Mass in Trinidad. Rest in peace Mom, you've brought up three strong sons, and even though you're gone, we'll always remember you and continue to aim to make you proud of us.
From my dad (read by my brother Kiran):
Simple, friendly, charitable, devoted, tolerant, humble, magnificent and caring. All packed into one. What a great person she was. Like a fresh blooming rose.
The 2nd of 9 children, Leela Dookeran, nee Bachan, was born on 21st June, 1949 to parents Roopnarine (Peter) and Pearl Bachan of Ramier Street, Morvant.
She attended Nelson Street Girls R.C. School, Chadee’s High School, Curepe and Revos Secretarial College, Curepe where she obtained certificates in typing, accounts and short-hand, going on to work as a typist at the Film Centre, St. James.
She attended the Morvant Catholic Church in 1969, and would pass in front of the Morvant Police Station, where her future husband Bertram was stationed as a young police Constable. Bertram would sometimes escort her to church and back home. Leela’s mother insisted that she bring her friend home on and not meet him on the streets.
On visiting her home Bertram observed a closely knit family atmosphere. The Hindu traditions were prominent. Her home was always neat and clean. Respect for her parents was of the highest degree and this was a house full of love amongst the brothers and sisters.
Leela would always be singing Indian movie songs which fascinated Bertram. He believed that Leela knew Hindi and felt that if she became his wife their children would learn Hindi and many of the Indian traditions. Little did he know that Leela knew only a few lines of the song and when later on in life he asked her about this she told him, “You never asked”
But by then it was too late. Leela and Bertram were already head over heels for each other.
Leela and Bertram got married at the Church of Assumption, Maraval on 12th September 1969, thirty-nine years ago. They lived initially at an apartment on 9th Street, Barataria.
On the 18th M ay, 1972, their first son Russi Preston was born. Leela treated him like a child would treat a doll. He was her joy and happiness. When Russi was three months old they moved to Hillsdale Crescent, Mount Hope, where they acquired a house. She was such a devoted mother to Russi; however she never neglected Bertram, whom she treated and adored as a god.
In August of 1970 Bertram was drafted into the Port-of-Spain C.I.D. as a Detective, a non-uniformed position, and Leela enjoyed selecting his clothes on a daily basis so that he would look outstanding in his appearance. She never let him wear the same clothes twice. Bertram worked odd hours, and no matter what time of the night he came home, Leela would get up and heat his food and make sure that he was comfortable. She cherished Bertram so much that he often had cause to remind her he married a wife and not a slave. Leela always called Bertram by his middle name, Lloyd. She felt that she alone would call him Lloyd and that was her special name for him.
On September 14th, 1979, her second son Nissan Reddi was born. Again Leela showered him with love and attention. By this time Bertram bought a Nissan dump truck and it was as though their new son Nissan brought a sort of luck to the family; things began to blossom.
Bertram had twelve months vacation and he drove his truck during this time. Leela would get up at 3:00am each weekday and prepare roti and alloo for him and he would leave home at 4:00am. She would then continue to prepare Russi for school and after dropping him off would go to the mini-hardware in Mount Hope and conduct sales and take orders. Little Nissan would be with her, and she somehow managed to successfully run the show, putting Nissan to sleep in a make-shift bed.
Leela always wanted a daughter. And so on 20th June, 1984, twelve years after Russi was born and five years after Nissan, Runcie Kiran came into this world. She was denied her girl child once again.
However Runcie became her pride and joy. Despite the numerous headaches he caused it appeared that he was her favourite. This only came to light where after her operation, she only responded when Runcie returned from North Carolina and spoke to her. It was only then she opened her eyes and smiled.
As her children grew up, Leela would get them to school in Port of Spain and get back to the business. It was only after two occasions of being robbed at gunpoint did she stop going to the mini-hardware. That was when Russi stepped in and became a pivotal point in the business.
As time went by and the recession’s effects were being felt, Leela began to make dress-up dolls, wedding cakes and also sew curtains to make ends meet. She even ran her own classes from home, teaching others the art of making soft furnishings and draperies.
She contributed tremendously to her home by being a wife, mother and bread winner. Bertram would often ask her to slow down but she would say she loved doing what she did and continued.
A couple of years ago Leela began following the Hindu faith and would celebrate Divali at her home. The neighbours looked forward to her sending Indian delicacies which she made herself, at Eid and Divali times.
On 14th October, 2003, Leela got the daughter she never had. Heidi Priya was born to Russi and Lisha. This added a new spirit to her life. Heidi would accompany her to the grocery and Leela loved to show her off. Often Leela would become jealous when Heidi would cling to her grandfather instead.
Earlier this year Leela found out that she would need triple bypass surgery. This was the beginning of the end. She was prepared to go through with it. She was so brave. Bertram was silently reluctant but gave his support.
By this time, each morning at 5 a.m. she would make coffee and both Bertram and herself would sit in the gallery and listen to the Hindu prayers, and identify birds which would greet the morning sunrise. Suddenly Leela started following Bertram around the house. She appeared to be getting scared and was clinging to her Lloyd, who at the time did not take notice.
On September 15th 2008 she underwent the surgery and immediately complications developed. Her blood pressure would not stabilise and she developed an infection which attacked her nervous system. She was diagnosed with Guillian-Barre Syndrome, a rare disease which destroys the nerve ends and paralyses the victim.
At around midday on October 13th 2008, thirty days after surgery, she looked Bertram in his eyes and with a smile and glow in her which reminded him of the days of early courtship she pouted her mouth in a kiss-like fashion. Bertram was so happy thinking the worst had passed but at 1:15am that said night he was called into the hospital to be told that she had a seizure. It took some 25 minutes to get her heart going again, and she lapsed into a coma at 7pm on October 14th 2008 from which she never recovered after twenty agonising days for her family.
At this stage we want to acknowledge the tremendous effort made by the Doctors, the Cuban, Filipino and local nurses of the Mount Hope ICU and HDU, in particular one Dr Zaid Khan who manually operated a bag pump for ten continuous hours to supply Leela with oxygen due to a staff shortage and the unavailability of a ventilator.
Leela, who Bertram affectionately called Mindy, did more than what was required of a wife and Bertram often took her for granted. Yet their love for each other lay deep within their hearts.
When things were tough she never complained, and a more devoted wife and mother no one will ever get.
She loved entertaining her sisters and her in-laws. It seemed as though she would show off her culinary talent on them. She would prepare Indian, Chinese and Creole dishes at the same sitting. She would insist that Bertram find cascadoo and shrimps whenever Nyla or Debra visited these shores. As such Bertram had to go all the way to Otaheite to purchase fresh shrimps and Felicity to get the blue crabs and cascadoo. His sisters always reminded him of the wonderful wife he had, telling him that they would not tolerate some of his behaviour and that she truly loved him.
During her illness they gave Bertram great support and would call each day to enquire about her condition.
Leela’s brother Anand and sisters Penny, Dolly and Vidia flew in from the USA and Canada to be with their sister. Tanty Mamim and Uncle Mano were like parents to her.
Over the past few years Leela was able to visit Great Lakes, Illinois where she proudly witnessed her son Runcie Kiran graduate in the U.S. Navy uniform as a Naval Corpsman attached to the U.S. Marines. She also visited Canada and several other places in the United States whilst Bertram stayed at home; holidays she richly deserved.
During their 39 years of marriage Leela weathered many a storm. She was committed to her family whilst ill advisors fell by the wayside. She was one of a kind. She was deeply loved by Bertram and her sons Russi, Nissan and Runcie Kiran.
Her determination to live for her family was evidenced by her stubborn fight to survive her bypass operation, performed on Monday 15th September 2008. After several near death calls she succumbed on Sunday 2nd November 2008, a total of fifty days later, the last twenty of which she was in a coma.
Leela, Pinky, Mingy, Mindy, Aunty, Mom, Grandma - whichever name you were called, we all love you so much.
We will always miss your tender caring ways and may God be with you and may you rest in peace.
From my Aunt Sandra:
Today, we are here to pay tribute to one of our own – Leela (also known to many of us as Pinky). She was a devoted wife to Bertram, a wonderful mother to her three children and granddaughter. A loving sister to her brothers and sisters, and a true friend to many.
Pinky, whom we know for her generous qualities, was a person who always put the needs of others before herself. She was always willing to give without you having to ask her for anything.
All of us who live abroad only had to say we needed something and she would send it no matter what trouble she had to go through to get it. Such a quality in a person was a shining example of her love for her family and her generosity as a rare individual.
I myself was fortunate to have had Pinky as my sister-in-law. She was the first sister of my husband who welcomed me into their family. I remembered the day that she invited me to dinner with her family (that was over 35 years ago). She accepted me into the family and the warmth that she extended to me after our first meeting remained with me up to this day– so true, that i am privileged to mention it to you today.
In the beginning, i said a “devoted” wife to Bertram. That adjective described her so aptly because i can recall her cooking the many dishes that Bertram loved (especially the fried chicken on a Saturday). All Bertram had to do was give her that special whistle of his and she was right there by his side to help him in anything that was required of her. Her children would attest to her loving kindness because of the many tasks she performed as any mother would. Whether it was driving them to a class or to take them to a friend’s house to hang out – she would do so without a complaint and she was always happy to oblige.
She has had to overcome many obstacles in her life but as a faithful believer, she faced every challenge with strength and dignity. She was never afraid to take a stand for something she believed in. Her faith kept her going.
Pinky, we will miss the many lovely dishes that you prepared with your hands, we will miss the bubbly laughter that you shared with your family, we will miss the true gem and shining star that you are. Deep in our hearts, all of our pleasant memories will be stored and reflected upon throughout the years to come and the joy that we have shared will continue to shine through. To all of our families and friends, don’t be sadden by Pinky’s passing - instead, be glad and rejoice that the lord found a purpose for Pinky and she has fulfilled his every wish as a wife, a mother, a grandmother, a sister, a friend and indeed a worthwhile contributor to society.
Bertram, Russi, Nissan and Kiran, be strong knowing that your wife and mother loved you very much and let her kindness, love and generosity reflect in everything that you continue to do. She has left you a legacy that no amount of money can buy.
On behalf of the Bachan family (all of her sisters and brothers – Radhika, Anand, Penny, Indar (deceased), Merle, Dolly, Vydia and Sunita) we would like to say thanks to everyone who has offered words of condolence and those who have been at our side to offer their support.
Thank you
From my aunt Nyla:
Today we come together to honor the life of one of our precious and loved family members, my sister-in-law, Leela Dookeran. I would like to say a few words on behalf of Bertram’s siblings, and in particular, his 3 youngest sisters. I am Bertram’s youngest sister, Nyla.
I never knew Bertram without there being Leela. I was too young to remember the individual Bertram. Bertram and Leela were an entity, a unit, throughout my life.
Leela came from a family of 7 girls and 2 boys, where the age spread of the siblings were as wide as Bertram’s own family of 9 girls and 2 boys. When Leela met Bertram, there was that very present knowledge that he had several sisters in his own age group, but that he also had 1 brother and 3 sisters who were much younger. When they got married, the younger group of us lived in Rio Claro; I remember their many visits to Rio Claro. It wasn’t too long after they were married that our father passed away. This led Bertram to take on the role of father-figure for the 4 youngest of us. This required a lot of time and resources from Bertram as he helped us in our journey to adulthood. Of course, this could not have been accomplished without great sacrifice on Leela’s part. Leela accepted that we were a big part of Bertram’s life, and supported him in his efforts to protect and guide us over the years.
When our sister, Indi, was 11 yrs old, she moved to Port-of-Spain to go to high school. She lived with Bertram and Leela for some time. Leela was always receptive of this arrangement, and helped to guide Indi as she went through those rough teenage years. She often referred to Indi as the daughter she never had; such was the bond that they shared.
Leela had a deep love for her immediate family as well. Her love for our brother, Bertram and for our nephews, Russi, Nissan and Kiran, was amazing. She treated our brother like a king. She took pride to prepare coffee every morning, and she and Bertram will start each day enjoying their cups of coffee together. She continued that practice until her last day at their home. Her children were her treasures and she worked hard to build a strong family unit. She adored her granddaughters as well. We remember her joy when she talked about how Priya’s name was chosen; she had suggested the name.
It’s been almost 20 years now since I left Trinidad, however, every year when I came home, there was always a grand welcome for me: Leela always cooked up a huge dinner for us all to enjoy. We spent many an evening enjoying her wonderful cooking and, most importantly, each other’s company. The dinners became even more extravagant when I brought home my boyfriend, now husband, Bill, to meet my family. Since he is not from this country, Bertram and Leela’s intention was to educate him about all things Trinidadian. One of my most memorable dishes was the curried cascadura and pigeon peas which was a must-have at our annual dinners. She would send Bertram out to scout the country to find this unique fish, and then cook it up in grand Trinidadian style, bringing this dish to life.
My sister, Debbie couldn’t be here today. However, as we worked to put this eulogy together, she shared a similar story about Leela welcoming her husband, Ron to Trinidad, preparing a great feast, which of course, included the now- Signature Cascadura. She remembers Leela gleefully explaining the legend of the Cascadura to Ron with a great chuckle.
Leela enjoyed cooking and baking. Over and over again, she used these talents to bring joy to others. One year we visited Trinidad during Bill’s birthday. We did not really let anyone know that it was Bill’s birthday. As usual, we headed over to Bertram and Leela’s for our annual visit. We had our grand dinner, and to our surprise, Leela had found out about Bill’s birthday the day before. Not only did she cook up this wonderful meal, but she had also baked him a birthday cake as a surprise. There is a very special place in his heart for her.
In times of crisis, Leela was always ready to help. As a family, we have gone through many ups and downs in life. My brother Bertram, his wife, Leela, and their boys have been a constant source of support throughout. There have been many sacrifices made by all of them for Bertram’s little sisters to grow up. Bertram and Leela’s home was a safe haven to pour our hearts out, to share our troubles. We found strong shoulders to lean on there, and continuous support throughout our lives. We will forever be thankful to Leela for being so supportive along this journey.
The times we have shared, the memories we have created, they would always be a part of us. Leela lived a full life. We celebrate and honor her life. The memory we will keep of Leela is of someone who gave so much of herself to her family and to others. We thank God for her having been such a significant part of our family, for being a supportive wife, a wonderful mother and an ever-thoughtful sister-in-law. We will miss her dearly.
Wednesday, 3 September 2008
Selenium and VS 2008 - nice, but watch this pitfall
One major problem for me with building web applications has always been testing the presentation layer of such an application, that is, the part rendered in the web browser. This not only includes ensuring that when a user submits information or clicks on links on a page the expected behavior happens, but that it happens in all the popular browsers. Making the assumption that because it runs in one browser means it will run in all is one that has been thrown to the wind a long time ago. The quirky behaviors made famous by Internet Explorer and poor CSS implementation have assured us of that. Despite open standards and open specifications, somehow consistent browser behavior still remains a mystical holy grail for web developers and users alike.
These days the browser suite has grown to include not only IE and Firefox on the desktop, but Opera, Safari (for Mac and Windows) as well as the recently released Google Chrome. Added to this are the new market of browsers for mobile devices such as 3G phones and wi-fi enabled PDAs. Even game consoles such as the PS3 and Nintendo Wii have web browsing capabilities, and all of these behaviors may need to be tested depending on the market a web application targets.
Selenium is a suite of tools to automate web application testing across many platforms. A great introduction to the tool suite and its capabilities already exists on its website. This post is about one of its features that is of particular attraction to me as a professional .NET developer, that is the ability to generate C# code from a test recorded in Firefox using the Selenium IDE plugin.
Utilising Selenium Remote Control and running the Selenium server included in this the generated test code can then be integrated into a .NET project and run from within Visual Studio. This would seem simple, and in fact the online demo is correct in how simply it is to generate testing code, however once you move to the Visual Studio IDE issues can arise.
One major pitfall I hit was once I had written my tests and clicked the "Run Test" button the security error "The location of the file or directory '...\bin\debug\ThoughtWorks.Selenium.Core.dll' is not trusted." would pop up and prevent the test from running.
It took some researching, but it was finally explained by this MSDN post.
Firstly, to implement the .NET code generated for tests your .NET project will need to reference the ThoughtWorks.Selenium.Core.dll included in Selenium Remote Control zip file. When I unzipped the folder I placed it on my Windows desktop. This DLL is included in the folder contents precompiled and so was unzipped into the desktop folder as well, and together that created the issue.
In Windows Vista (at least, not sure about Windows XP), when you attempt to use a .DLL file that was not compiled locally but acquired from the Internet or other location, Vista marks the file as potentially unsafe once it is copied to your local machine anywhere under the "Users" folder (which includes the Desktop, Downloads and Documents folders) and prevents it from being executable. One must first right-click on the file from Windows Explorer, go to Properties and click "Unblock" in order for the file to be marked safe for execution from within the Visual Studio debugger.
The workaround to these types of issues (referencing precompiled DLLs) I've found has been to unzip such folders directly to the root of a drive (C: for instance), and the referencing of such DLLs does not produce the same issue since apparently the automatic blocking happens only to files placed inside the "Users" folder.
Hopefully this post will save new Selenium users some time and not discourage the initial excitement about such a powerful, yet simple to use, tool. As I continue using it hopefully I'll have some more tips and experiences to share.
These days the browser suite has grown to include not only IE and Firefox on the desktop, but Opera, Safari (for Mac and Windows) as well as the recently released Google Chrome. Added to this are the new market of browsers for mobile devices such as 3G phones and wi-fi enabled PDAs. Even game consoles such as the PS3 and Nintendo Wii have web browsing capabilities, and all of these behaviors may need to be tested depending on the market a web application targets.
Selenium is a suite of tools to automate web application testing across many platforms. A great introduction to the tool suite and its capabilities already exists on its website. This post is about one of its features that is of particular attraction to me as a professional .NET developer, that is the ability to generate C# code from a test recorded in Firefox using the Selenium IDE plugin.
Utilising Selenium Remote Control and running the Selenium server included in this the generated test code can then be integrated into a .NET project and run from within Visual Studio. This would seem simple, and in fact the online demo is correct in how simply it is to generate testing code, however once you move to the Visual Studio IDE issues can arise.
One major pitfall I hit was once I had written my tests and clicked the "Run Test" button the security error "The location of the file or directory '...\bin\debug\ThoughtWorks.Selenium.Core.dll' is not trusted." would pop up and prevent the test from running.
It took some researching, but it was finally explained by this MSDN post.
Firstly, to implement the .NET code generated for tests your .NET project will need to reference the ThoughtWorks.Selenium.Core.dll included in Selenium Remote Control zip file. When I unzipped the folder I placed it on my Windows desktop. This DLL is included in the folder contents precompiled and so was unzipped into the desktop folder as well, and together that created the issue.
In Windows Vista (at least, not sure about Windows XP), when you attempt to use a .DLL file that was not compiled locally but acquired from the Internet or other location, Vista marks the file as potentially unsafe once it is copied to your local machine anywhere under the "Users" folder (which includes the Desktop, Downloads and Documents folders) and prevents it from being executable. One must first right-click on the file from Windows Explorer, go to Properties and click "Unblock" in order for the file to be marked safe for execution from within the Visual Studio debugger.
The workaround to these types of issues (referencing precompiled DLLs) I've found has been to unzip such folders directly to the root of a drive (C: for instance), and the referencing of such DLLs does not produce the same issue since apparently the automatic blocking happens only to files placed inside the "Users" folder.
Hopefully this post will save new Selenium users some time and not discourage the initial excitement about such a powerful, yet simple to use, tool. As I continue using it hopefully I'll have some more tips and experiences to share.
Google Chrome - Superior Javascript execution claim by V8 is true so far
The latest tech buzz created by Google has been about its new open-source browser, Chrome. While browsing the very informative (and entertaining) release done via comic book, one of the features that is touted by this new browser is a superior Javascript execution engine called V8. Firefox users have so far been used to the SpiderMoney Javascript execution engine, one which Brendan's Roadmap Updates had announced will be replaced in Firefox 3.1 with the TraceMonkey Javascript execution engine.
While the latest post on Brendan's Roadmap Updates shows that TraceMonkey is superior to V8 using the SunSpider Javascript Benchmark, I decided to run my own tests on my desktop using several other browsers I had installed on my desktop. The following link is my tabulated results from Sunspider's page, which show Google Chrome does significantly better than Mozilla Firefox 3.0.1, Microsoft Internet Explorer 7, Apple Safari for Windows 3.1.2 and Opera 9.52 in all but 5 categories of tests (Firefox wins in 4, and surprisingly Safari for Windows wins one).
Note: My actual technical knowledge of what each test does is limited, however the general rule of thumb is that the shorter the execution time is the better the performance.
Update: The converted Excel table won't display properly in Blogger because of the style used, however I have posted the results here for viewing. Enjoy!
While the latest post on Brendan's Roadmap Updates shows that TraceMonkey is superior to V8 using the SunSpider Javascript Benchmark, I decided to run my own tests on my desktop using several other browsers I had installed on my desktop. The following link is my tabulated results from Sunspider's page, which show Google Chrome does significantly better than Mozilla Firefox 3.0.1, Microsoft Internet Explorer 7, Apple Safari for Windows 3.1.2 and Opera 9.52 in all but 5 categories of tests (Firefox wins in 4, and surprisingly Safari for Windows wins one).
Note: My actual technical knowledge of what each test does is limited, however the general rule of thumb is that the shorter the execution time is the better the performance.
Update: The converted Excel table won't display properly in Blogger because of the style used, however I have posted the results here for viewing. Enjoy!
Saturday, 16 August 2008
Congratulations to Trinidad's Richard Thompson - Olympic 100m silver medallist
My congratulations to Richard Thompson on his silver medal in the Olympics 100m Men's race. He and fellow Trinidadian Marc Burns have done my homeland of Trinidad and Tobago most proud with their efforts. The fact that the winner, Usain Bolt, was Jamaican is testament enough to the ability Caribbean athletes have to compete at world class levels in sports. I was lucky enough to be in Trafalgar Square in London watching the race on the big screen there. I've linked the BBC's coverage of the race as well as embeded my own video of Richard Thompson on Trafalgar Square's big screen for those interested in seeing this historic event.
Go Team Trinidad and Tobago!!
Go Team Trinidad and Tobago!!
Wednesday, 30 July 2008
Experiences with Google Technology Part 2 - Business Professional Track - Gmail

My initial experiences in a business professional role with Google technology beyond the search engine started with Gmail. Gmail started as Google's free web mail service and has been incorporated into its Google Apps suite, although you can still sign up for a free email account alone if you want. It set the standard for near-unlimited mailbox space among its competitors, and its easy to use interface, many intuitive features and powerful search capabilities made it a viral hit for many web users. In fact, Gmail set the pace for all other popular mail providers such as AOL, Hotmail and Yahoo to start AJAX-ifying their own interfaces in order to produce better user experiences.
One cool feature I liked about GMail was the ability to insert periods (.) anywhere within your email address to create separate "virtual" email addresses. Thus, for business purposes, I gave my email address as nissan (dot) dookeran (at) gmail (dot) com, but for mailing list subscriptions or sites which required me to sign up with an email address I would use nissandookeran (at) gmail (dot) com. This way I could easily use Gmail's filters to tag the business emails with their own label and prioritise them over less important emails.
Using labels rather than creating folders as destinations for filtered emails is definitely a different, but still very useful, approach to sorting volumes of emails. With 3GB and counting of available email space, there's definitely need for these types of innovations to keep things manageable.
Contact management is also quite simple with Gmail. Basically any email to which a "Reply-To" link is clicked automatically adds that email address to your contacts database. Now this initially was quite useful to me for creating quick coworker, client and mailing list emails. Eventually though the contacts database became a bit polluted, as one-time reply to addresses, such as mailing list subscription and unsubscription addresses, became automatically added into My Contacts as well. Google has recently produced a solution to this issue, deciding to auto-add addresses to a "Suggested Contacts" list from which a contact can then be moved into the My Contacts section manually, with the address being automatically added to your contacts database if you've sent email to the "suggested contact" five or more times.
Spam is virtually non-existent, as Gmail's powerful spam-filtering capabilities have in my experience only allowed at most one or two emails per month through their strong protective barrier. Compared to the hundreds of email per month I receive, and with hundreds of spam messages being caught automatically, this is quite good enough for me compared to my past horrendous experiences with Microsoft Outlook's Junk Mail feature. Google's recent acquisition of Postini has only served to strengthen its ability to produce higher grades of security in its Google Apps products.
Two useful sites I have found for maximising Gmail and becoming a power user are the official Gmail blog and the Gmail Google Group. Occasional checks on the Gmail blog reveal the new and upcoming features and by using the Gmail Google Group any technical difficulties not explained by FAQs or the help itself can often be answered quite easily.
One thing that Gmail still misses though is an offline/desktop client. The Google Gears technology makes one likely to be in the making, and the rumours are already there about it, but to date there hasn't been any beta produced (or even confirmation a beta version is in the works). Most folks would have no problem with web-based email given the superb nature of the Gmail interface, but there are two types of users who still require this. The die-hard Outlook users among us, and those who are on severely limited Internet connections such as dial-up and need to make web pages load as fast as possible as often as possible.
In fairness, the second type of user does have the option of disabling the AJAX features of Gmail and using a Basic HTML view, but this limits the user experience tremendously and being one of the second type, I found this option not very appealing.
I personally have chosen to move back to Microsoft Outlook as my email client of choice until my Internet scenario changes, but thankfully I've found the experience quite useful at learning just how much Gmail's creators have catered for a varying audience. Setting up Outlook to receive my Gmail content was quite simple as Gmail provides IMAP/SMTP settings or POP3/SMTP settings to allow receiving and sending emails through any mail client.
Google even surprised me when I saw that email that is sent from Outlook via my Gmail account gets logged into my Sent Items on my Gmail web interface, removing any concerns I had about future synchronisation problems.
While this is by no means an exhaustive list of features, and I have purposefully left out mentioning features such as Calendar synchronisation with Outlook and Chat integration in Gmail's web interface for future posts where I write specifically on GCal and Google Talk, I hope that this post is sufficiently enticing and filled with enough links to get the non-Gmail user (if they still exist) trying out this excellent free tool, and that it will also get current Gmail users experimenting and becoming power users in their own right.
Labels:
Gmail,
Google,
Google Apps,
Web-based email
Tuesday, 29 July 2008
Experiences with Google Technology Part 1 - The Plan
I've always been a fan of Google and its innovative applications suite. Despite not having a funky name like the Microsoft Office System, the Google products out there today do form a cohesive structure of applications which can support the technical needs of any business or developer. This series attempts to take a look at my experiences with Google technology, both from the business professional perspective and the developer's perspective.
As such the tracks would be as follows:
1. Business Professional Track - focusing on Google Apps. These include details of my real world experiences using Google Docs (Writely, Spreadsheet, Presently), Gmail, Google Talk and GCal. I also mention Google Gears and how it brings the realm of web applications to the offline world making life much easier for mobile-but-offline folks like myself to keep productive.
2. Developer Track - focusing on my experiences building custom portals using devices such as the Google Mini as well as my recent adventures with programming tools such as Google Web Toolkit and Google Android and the recently launched Google App Engine.
A talk about Google APIs and initiatives such as OpenSocial would also be included here as well as links to learning resources such as Google Developer Day videos available on YouTube .
3. Hacker's Track - here it's strictly about how I have fun using Google tools. I talk about my experience with Blogger, their blogging tool, Picasa, their image sharing tool, Google Desktop, their desktop search tool and YouTube, their video sharing tool. Since I am in the process of moving I'll show the usefulness of Google Maps for getting one's bearings in a strange new location. I'll also look at how I manage my RSS subscriptions using Google Reader as well as fun enhancements I use in Firefox to maximise the experiences with some of these tools. I'll take a look at Google Labs and funky projects like Knol which let you write "expert" articles about practically anything. Finally, in a serious-but-fun moment I'll look at how i use Google Analytics to monitor how popular my blog posts are and gather feedback about what sort of topics I blog about are more popular than others.
My initial disclaimer is that this is by no means an exhaustive list of Google's applications. It's just a subset of the ones I've used and the personal experiences I've had with them. The plan is to create an intense but fun series of articles that other folks can look to as a guide for getting started. I hope I can do the guys at Google justice with my take on their tools.
Saturday, 5 July 2008
Building a one page resume
So my time at Teleios has ended. It was a decent place to work, with many memorable folks and events, but at the end of the day life threw me a curveball which I chose to catch by moving out of traffic-centric Port-of-Spain and working from home for at least the next month or so. The upside is that I now have much more free time on my hand while I build a business pipeline and seek new opportunities for private jobs to sustain my income. One of the pet projects I had on my plate, which seemed appropriate to start with as I am now technically unemployed, was the "one-page resume."The idea of a one-page resume is not a new one. Sadly in Trinidad, it may be new since the inexperienced new graduate or recently working individual feels that a resume of several pages in length trumps that of a shorter length. In reality though, brevity can be a key component to whether you're put at the top of the pile for callbacks or whether you're lost in the sea of other candidates' resumes. I once had the task of "short-listing" the fifty odd resumes of recent university graduates to a list of no more than 20 for initial phone screenings, the first step in the hiring process at my previous employer, Medullan. Each resume had at least a two page length, with some being stretched to as much as five pages. Needless to say, it was very monotonous, and slightly headache-inducing, extracting the information from each resume needed to make a fair evaluation of the candidate to determine whether he or she fit the criteria for short listing, especially when superfluous information such as extensive details of course contents from irrelevant but standard university courses were included as an obvious attempt to make a lengthier read.In my interest to be fair, I ensured I read all the resumes, every detail, since I remember too well what it was like to be inexperienced and could forgive such mistakes in the interest of giving these faceless folks a fair evaluation. Another individual with such a task, with perhaps as many as two-hundred or more such resumes, might not. The five page resume filled with multiple suitable references to qualifications and job experiences in line with the position may find itself at the bottom of the pile, last to be read if read at all, simply because it would take too long to be evaluated fairly when compared to the much shorter two to three page resumes other, maybe less suitable, candidates might have put forward.Consider now if this bypassed candidate's resume was condensed to its smallest possible size, one page, and that its content, although brief, contained the necessary details for a fair evaluation to be made at a glance. The likelihood of this resume being read in its entirety when placed in a stack of two hundred lengthier but similar documents has now drastically gone up. Additionally, if written well enough, "hooks" can be planted into the wording of the details in this one page that make for the opening of your "selling strategy" when the actual interview happens. Experienced candidates know that the resume is an advertisement of yourself, an invitation to a recruiter to get to know you better as a potential suitable candidate for an opening. Having purposefully included starting points for exploration (or hooks) throughout your resume are key to allowing you, as a candidate, to direct an interview in a direction where you can demonstrate your strongest qualities and "sell" yourself as the best candidate for the job at hand.One person whose attempt at a one-page resume I highly like is Kevin Fox. His resume is freely available as a PDF file to download, and it is his layout that I have copied in my attempt to create my own personal one-page resume. One cannot create one's own one page resume by simply copying the structure used by Kevin though. Alone it is not the crux of things. The key to his resume is how subtlely his hooks are placed. The one page of details about Kevin is laced with sell points, from his experience with Gmail building, to his working with Apple as a client, to his interest in "Viral workflows". Not a keyword placed is wasted, for I am sure behind each keyword he has placed, there is a strong story demonstrating key attributes about him and his abilities.So now my challenge, which would be the same as all who seek to create a one-page resume, is to condense in a similar fashion my current three page resume into one page, ensuring I include the essential details that, at a glance, will make me an ideal candidate for any future software developer position I wish to apply for. At the same time, I also need to include the "hooks" in the content that can lead to sharing the stories with a future recruiter in an interview. These stories would demonstrate me as not just a strong developer, but a strong leader and team-player with a passion for using technology to create new systems, make existing systems work better, and finally sharing those stories with others as a means of advocating what works with others and gathering feedback to making my own processes better. In the end, I hope, this one page would help me more be the guy getting made the offer for a terrific job, and less the guy whose resume was at the bottom of the pile, passed over because its three pages couldn't stand out in the sea of similar candidates.
Update: Please feel free to take a look at my first-cut at a one page resume.
Tuesday, 17 June 2008
On Open Source and Business Ventures
A question was posted recently to the TTLUG mailing list expressing the opinion that venture capitalists locally would never invest in a business which focused on utilising Free and Open Source Software, more commonly known in TTLUG circles as FOSS, because it was such a risky venture (in the writer's eyes). The following is my response to that post, which I thought I'd share with fellow bloggers.
Sell it as risky and no one will buy.
The focus of any new business should never be "to be FOSS based" or even alternatively "to be closed source based". If one wants to focus on the promotion of FOSS in a business venture, then it should be a business venture for which FOSS is the business-sensible solution.
Building a business just to use FOSS would be the equivalent of selling doubles (a cheap, tasty and popular Trinidian food) just because there happened to be a free corner spot in Curepe (a local densely populated town in Trinidad where doubles is popularly sold). It is doomed to failure unless there are other credible business factors to justify it.
In the case of my "doubles scenario", one of these food vendors I know who successfully made a move from the popular location in Curepe where doubles is sold to a less popular location got it to work because there also existed a bar in his new location to serve as a population centre for attracting new customers. The reputation of the vendor lended itself to helping his move succeed as once word got around as to his new location, loyal customers sought him out still dispite the less convenient location.
Similarly, new "FOSS-based" business ventures need other credible business factors to justify their coming into existence. Support from a major market sector/niche to satisfy a need not being met currently by alternate software vendors/solution providers could be a strong mitigating factor. When I started my first small business several years ago, not only could I not afford it, but my target market, the small business in Trinidad looking to now implement IT solutions, could also not afford the "costly-to-license" Microsoft software. This is why I chose to implement solutions based around the use of Open Office instead of Microsoft Office for solutions requiring no custom software to be built and building customised solutions using LAMP (Linux, Apache, MySQL, PHP) or FOSS built on LAMP.
The co-branding of a new venture with the "good name" of a well known vendor, such as IBM or HP or another major vendor who is known to proport open-source solutions could also help significantly. In the case of my first small business it was this, among other reasons, I believe that was a contributing factor to its failing, since the "branding" I had as a small business working only for other small businesses did not grow sufficiently for a sustainable new business pipeline (and thus income) to be maintained.
It is an excellent idea to want to promote FOSS through a business venture. But it is a terrible idea to simply start a "FOSS-based" business for want of having one. There must be, at the end of the day, strong, correlating business reasons to do so as well, if one is to make such a venture sustainable and profitable.
Sell it as risky and no one will buy.
The focus of any new business should never be "to be FOSS based" or even alternatively "to be closed source based". If one wants to focus on the promotion of FOSS in a business venture, then it should be a business venture for which FOSS is the business-sensible solution.
Building a business just to use FOSS would be the equivalent of selling doubles (a cheap, tasty and popular Trinidian food) just because there happened to be a free corner spot in Curepe (a local densely populated town in Trinidad where doubles is popularly sold). It is doomed to failure unless there are other credible business factors to justify it.
In the case of my "doubles scenario", one of these food vendors I know who successfully made a move from the popular location in Curepe where doubles is sold to a less popular location got it to work because there also existed a bar in his new location to serve as a population centre for attracting new customers. The reputation of the vendor lended itself to helping his move succeed as once word got around as to his new location, loyal customers sought him out still dispite the less convenient location.
Similarly, new "FOSS-based" business ventures need other credible business factors to justify their coming into existence. Support from a major market sector/niche to satisfy a need not being met currently by alternate software vendors/solution providers could be a strong mitigating factor. When I started my first small business several years ago, not only could I not afford it, but my target market, the small business in Trinidad looking to now implement IT solutions, could also not afford the "costly-to-license" Microsoft software. This is why I chose to implement solutions based around the use of Open Office instead of Microsoft Office for solutions requiring no custom software to be built and building customised solutions using LAMP (Linux, Apache, MySQL, PHP) or FOSS built on LAMP.
The co-branding of a new venture with the "good name" of a well known vendor, such as IBM or HP or another major vendor who is known to proport open-source solutions could also help significantly. In the case of my first small business it was this, among other reasons, I believe that was a contributing factor to its failing, since the "branding" I had as a small business working only for other small businesses did not grow sufficiently for a sustainable new business pipeline (and thus income) to be maintained.
It is an excellent idea to want to promote FOSS through a business venture. But it is a terrible idea to simply start a "FOSS-based" business for want of having one. There must be, at the end of the day, strong, correlating business reasons to do so as well, if one is to make such a venture sustainable and profitable.
Subscribe to:
Posts (Atom)


