Forget marketing if you cannot provide unparalleled support

2013 has been a year where my brand loyalty has gone out the window. A lot of the products and services I used to love have lost me as a customer and a supporter.  Why?  Because I’ve experience poor support.  There were also certain scenarios where I chose to buy a competitive product or service to the one I was considering because their sales and support team made me feel welcome.

This is certainly not a new theory by any means. Companies are hiring agents to man their Twitter and Facebook channels for users complaining.   Having been on both sides of the coin, it isn’t an easy.  As a user, you are frustrated that you aren’t getting what you expected, whether or not expectations are reasonable.  With sometimes unreasonable users, providing may sometimes feel like a lost cause. Let me tell you that it is not, I will share my GoDaddy experiences later.

There are companies that I have been very loyal to over the past 10 years. I’ve praised their product, chanted their name and also showed my support with my wallet.  I’ve also supported brands in general, regardless of the product they released.  When something doesn’t work as expected or breaks, support is the first line of contact. Some bend over backwards trying to make you feel comfortable, even if you are wrong. Then there are others who feel like they just read you an answer from a manual without care of you moving on.  This year, my worst experiences have all been with services, namely Lunarpages, GoDaddy and Spotify.

Continue reading…

LightHack – Version 1

This past weekend, we hosted our very first hackathon, called LightHack. Up early for a 9am start with a nice breakfast and some coffee. Quickly, the office filled up and we had over 20 people chatting / getting ready to start hacking away. We matched entrepreneurs with developers and they were off.  There were 4 teams, each building a different app. Throughout the day, I got a chance to see how people used Lightning and whether they encountered any issues. Food was served and people were having a great time. Many like myself were tired, which made development interesting.

We ended development early, had some drinks and dinner before presenting the various apps that were built.  All of which looked great and we were proud to see how much was accomplished in a few hours.  The hackathon progressed into a social event for Nathon and Scott’s birthday.

The event was great! While the event was a success in many ways, there was also a lot to learn.  Anyone hosting a hackathon can tell you that the first one won’t be perfect and you will learn as you do more. We are still debriefing to understand how we can make the future hackathons better. But if you have been to hackathons or have hosted some, I’d love to hear your feedback.  We want Lightning to be the tool developers go to when they want to build apps.

A happy user is a happy customer

Understanding human to computer interactions is a crucial step for insuring users are happy using your product.  As technology advances, it tends to get more complicated as a result.  The user experience should not.  Complications in interfaces and user experience often stem from privacy regulations, connection to multiple third party networks, a result of software that tries to give user options, or by overwhelming the user with features.  While valid problems, they can all be solved through innovative UI.

Some of the best and most used products on the market feature a very simple on boarding process for the user and keep the user engaged with limited options.  Can you get a user to get your product in 5 steps or less?  Can you get them to find the value of your product in those steps?  What about keeping the discovery process simple for the user as they continue to explore your product?

Continue reading…

Only the best powering Lightning

It is Sunday night, CBC is going well and no server hiccups at all, so I’d take a bit of time to post some stuff and benchmarks we’ve hit with Lightning.  Lightning is the name we are calling our new platform.  Not only does it sound better, it also works with a few other products that are coming out that support Lightning. Lightning is a name that has meaning for the goals we are looking to accomplish.

Continue reading…

HTML5 not yet ready for prime time

Before working with HTML5, I had initially questioned HTML5’s support and adoption, considering IE6 and IE7 were still dominating browsers.  Recently, Microsoft has announced IE would automatically update, like their competing browsers Firefox and Chrome.  I’ve developed using HTML5 and CSS3 for the past few months, using all the latest browsers.  In short, most of my tests and development failed to be cross-browser compliant.  I’ve probably swore at my computer a few dozen times and rewrote the code to use standard JavaScript just as many times.

For those of you who know me, they will know that I am using Internet Explorer 9 64 bit as a primary browser.  My reasons are very simple, I want something fast, has robust developer tools, and good crash management.  If my options were limited to IE 32 bit, I could promise you that I would not use Internet Explorer as a primary browser, despite having arguably the best developer tools (which oddly enough come built into the browser, unlike Firefox which requires you to install Firebug).  After using it as a primary browser for a few months, I’ve noticed how much different the web looks from the perspective of an IE user.  Websites had bugs, some code had breaking errors (that other browsers tend to ignore) and some sites simply refused to let you in if you used IE (regardless of the version).  I’ve had a few sites tell me to switch browsers for no clear reason.  Oddly enough, as a user of IE9, I love it, but as a developer who wants to build using the latest tools, that is simply not possible… unless of course I used IE10.

When developing in HTML5, I did not build a game, as most people expect HTML5 to be used for.  Instead, I used it to build tools and manage data.  Based on my earlier posts, you will see that this has been no small test, with more than 200k lines of code from the start.  Today, it stands at 165k lines of code (yes, we are refactoring).  HTML5 is supposed to have more tools and capabilities with handling forms and have new events that would hopefully cut down on the need of observers in a page.  Beyond that, I was mainly looked forward to HTML5 for the ability to embed multimedia into pages; like music, videos, articles and figures.

Continue reading…

What is clean code?

I’ve always really wondered what people thought when they hear the term “clean code”.  I often hear people say it is commenting your code, while others say object-oriented programming, and some just say “no spaghetti code”.  While I agree with all those, I tend to lean towards object-oriented programming the most.  In fact, I don’t even believe commenting your code should necessarily be a function of clean and legible code.

Lately, my team and I have been tackling a goal I set to clean up our code, to make it faster and more reliable. Prior to starting this project, we had just over 200k lines of code.  Had a lot of duplication of functions, a lot of code that could be simplified by turning into more generic functions and a bunch of functions that existed but never used.  200k lines of code is a lot, but we are also building a very complex system and we do use some open source libraries like Mootools that add to the total.  However, given that JavaScript has never been particularly nice with OOP, it is difficult to make nice clean extensible code and save on lines of code.  We’ve built hacks into our JavaScript to mimic OOP to our best abilities, but it still isn’t as perfect as you’d find it in languages like Java.

As you can probably tell, my approach is to cut down on code by making functions and existing code more modular and used by more sources, as opposed to living in the cache as a one time use function.  Granted that the function is clearly written, declaring variables in plain text and using variable names that make sense for what they do, commenting becomes much less relevant, especially when the functions themselves are less than 30-50 lines of code (including line breaks). Commenting is something I felt was always added to help another developer understand one developers sloppy writing.  Yes, creating code is like writing.  If you cannot properly outline your introduction (declarations), your content (the main code) and the conclusion (clean up and return statements), then no one will understand what you are attempting to carry out.

Continue reading…

Algorithms vs the world

[EDIT: For some odd reason, WordPress decided it wanted to delete the rest of this post… so here’s to writing it again]

Haven’t you ever told yourself while in school : “I won’t ever use this again, why am I learning this?”.  Well I do all the time, being that I am fresh out of university, those are still thoughts that continue to come to me. However, recently I’ve discovered that I am beginning to use concepts learned in school in order to adapt them to real world scenarios.  More importantly, I am using algorithms.  There are two algorithms I am using primarily these days, that revolve around Tree Structures and Statistics (as in that really confusing class you need to take when enrolled in Computer Science).

Continue reading…

The Email Authority

It’s been a while since I’ve tinkered with sending authenticated emails.  Recently, I’ve been tasked with doing just that in order to decrease chances of emails landing into spam box.  Integrating DKIM has become surprisingly easy to what I have done some 5 years ago with cy-Mall.  What has surprised me even more are the tools available to validate the authentication of the emails sent.  I was able to validate my emails’ spf, domainkeys, and dkim with some detailed information to help me debug.

I am very happy to report that all my emails going out are DKIM and SPF validated, where I have found DomainKey to be reduntant.  DomainKeys do not seem to be supported by the majority of top email providers, their signature being nearly identical to DKIM (except that only headers are signed).  Email providers are now reporting my emails to be whitelisted and have followed up with those email providers to ensure everything was done to remain on their whitelists.

With all that said and done, one lingering question remains.  Why does ICANN not provide more options to cut down on spam and ensure the validaty of emails.  Its been said that the majority of emails going through the internet today are spam.  After going through setting up DNS entries for DomainKeys, DKIM and SPF, makes me wonder why they aren’t setup by default.  Beyond that, provide additional settings to force signed emails from that domain or have email providers reject non-signed emails.  This could very well help with cutting down phishing, who like to send emails (or make it seem like they do) from other domains.

Perhaps a crazy idea, but wonder what stops them from doing it.