Ryan Betts from VoltDB interviewed me on how we make use of VoltDB to power Lightning. Including details on what makes Lightning so great.
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?
This post comes in light of recent events in New Jersey and New York, hit by hurricane Sandy. Like Katrina, it has been a very difficult moment and is nice to see people help each other. Businesses too were affected by Sandy. They suffered power loss or loss of hardware due to flooding. Individuals and business alike will be changed forever.
While working for General Motors, I was given the opportunity to learn and work on disaster recovery and business resumption plans. This included researching tremendously in something I knew little about. To my surprise, a lot of horror stories came out of Katrina, many businesses effectively shutting down and liquidating. These business owners having written about their losses, hoping that others would learn from their mistakes. GM as you can imagine, has a significant amount of employees, business apps and data required to run day to day operations. If the headquarters is hit by a tornado or blocked by disgruntled union workers, how do we ensure continuity as if nothing happened? Working on the Disaster Recovery Plan (DRP) and Business Resumption Plan (BRP) was an eye opening experience for me.
Just to make sure I am not confusing anyone, DRP is a plan that is used to recover data and ensure that the tools used by the business are recovered. BRP is the plan that is executed when the physical business local is no longer operable and requires setting up remote locations to resume business as normal. Each business will have different requirements for resuming operations, including timelines and services that are crucial to operations.
I operate under the assumption that anything that can go wrong will go wrong and the edge cases, while rare, will also happen when you least expect it. For instance, who knew that of all things, a CAW blockade would require execution for the BRP for GM? Looking at Amazon over the past few months, they’ve had numerous large scale failures. Sandy has caused major disruptions and forced multiple websites and services to shut down as the backup generators ran out of fuel.
I’ve asked many small and medium sized business owners to describe their disaster recovery process. To my disbelief, most are unprepared or do not understand the severity of potential events. I live in a world filled with paranoia, so I asked them “what if your hosting provider disappears tomorrow?” which is often followed up by a puzzled look. Amazon could never crash right? What about pushing code to live the accidently purges live data? Or even an intern who runs a query that deletes data? Companies and developers are assuming that edge cases never happen because they pay attention and they can fix problems as they arise. They need plans for when things go terribly bad, even if it never will. I won’t try and claim that I haven’t made mistakes and that I have everything implemented, but I have the plans. Now if I had money to execute my plans, I’d perhaps be in a better position to convince everyone to follow my lead.
Regardless of your situation, you should plan. I won’t get into business resumption too much. Unless you have a decently sized company or a corporation, you won’t necessarily need it, your developers likely could work from home and be as productive as they are in the office. If you operate under VPN and have a variety of services in house, then you will more than likely need a BRP. I may get into that for another blog post if I get requests. Plan the implementation of the DRP as you get cash and the scale of which you deploy this plan.
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.
It is no secret that our governments are as slow as molasses when it comes to truly helping citizens. Need help getting a hold of the city to fix a water leak in your basement? In the past you’d call 311, surprisingly, that hasn’t changed much these days. However, given the internet age, you can likely jump online or onto your smartphone and find an app that can get you the help you need. This begs the question, why do our governments need large teams staffed to handle those calls when an app can do the same work?
Don’t get me wrong, I think it is great that people are employed to support services like 311. This post isn’t about spending money. I am not in any way a staffing / financial expert and will stick to commenting what I know, which is technology and building / managing this technolgy. My question is whether we can improve the government’s efficiency and open up the services to even more people. The majority of government sites I’ve used were impossible to navigate and at times lacked consistency. In most cases, app developers are focused on usability and UI that I don’t tend to complain as much.
As of today, pelland.me has been upgraded with the ability to keep track of all the articles you read. I’m looking to add some more actions in the near future and make the actions better associated with the interactions you are performing in this blog. To start, you only need to Login with Facebook.
If anyone feels I should post a tutorial or perhaps a plugin for this, let me know in the comments.
Since I’ve started using Spotify, its made me want to discover music again. Whatever the music, new or old, I wanted to hear it. I’ve always really loved music, but over the past few years, work and hobbies have taken over and I have been unable to really go searching. Spotify has allowed me to to find some tracks from artists I liked that but never heard of, also helping me find tracks from artists I’ve never heard of.
The one thing I noticed was that I found myself going back to artists I used to listen to, used to love. I have over 100 CDs of various artists. Anything from soft rock, rap, hip hop, rock, punk… I seem to be all over the place. The only thing I seem to dislike is country, unless of course its Taylor Swift. Spotify guarantees 320kbps bitrate and my library is mostly lossless. The music sounds awesome on my Onkyo system.
One thing about me, is that music opens up my mind and makes me more productive. Now having over 8000 tracks locally and access to likely hundreds of thousands more with Spotify, my music cravings are now satisfied. I can’t say I need to listen to a song more than twice anymore! I guess this means the next few months may turn out to be interesting… I think it will be.
And if you were wondering, I am currently listening to the Blue Man Group’s I Feel Love. I love this band’s innovative instruments and sounds. Mind you they are more entertaining to watch, but their music still sounds great!
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.
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.
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.
Over the past years, we’ve all become more social. Many will argue that this has lead to our lives being more public and having less privacy. In theory it may be true, but like anything else, you must be conscious of what you share and who you share it with. Social networks, the majority of them, provide you the tools you need to manage your privacy. This post isn’t about privacy, it is about how the world has changed since the web has become more social. Early in the social days, websites would mainly function with users hiding behind a pseudonym. Later, we moved to sharing content with friends, to now implicating friends into our activities.
When I started on the web, I’ve basically used it as a tool, to do my homework and so on. Not long after, I began using content sites for the games I played (and loved). But I quickly began posting on fan sites and soon enough was helping manage some of those sites. It eventually lead me to creating my own sites. My sites were popular in the day, not the size of Facebook or Myspace today. Just over hundred thousand users and over two million pieces of content (posts, comments, downloadable content, etc) created in a little over a year. The sites however lacked on key aspect… the ability to drive new users (or at least our users’ friends) to the site. Which is why sites then focused on retention and we did that extremely well, I retained the majority of my users quite well. But we also didn’t have to fight for the user’s attention with many other games, apps, or sites.
Sites slowly moved to making users less anonymous and reveal their real identify. I can’t quite say who started this movement, but Myspace was a big player in this field, as it started to become popular. Myspace focused on users sharing posts together and gathering attention with fancy layouts. Facebook was not far behind, but focused on sharing pictures between friends with the ability to tag pictures. Soon college students all over North America were sharing pictures of their drunken adventures from the night before. What many didn’t know was that around the corner was the revolution of the web, where one could monetize social activity. These sites still focused heavily on retention and continue to focus on retention, though partly giving way to virality in order to grow the sites (or networks), apps or games out.
Applications and games began to use social networking sites to share content between users and their friends. Some of the things shared were as silly as “How are you in bed”, but were extremely popular in their early days. It was simple, users wanted to see the results of them completing the activity and comparing it with their friends. That is why quiz apps ruled the Facebook platform when apps initially launched. People wanted to see what Movie Star they resembled the most, or what Harry Potter they were like, or what year they would die. Soon we had the games where users would share the activity on their levelling up, their completing of challenges, and harvesting of crops. But those were mostly in the context of being virtual, rarely implicating the users in real situations, like lifestyle events.
Today, we are seeing the shift of social on lifestyle events and things users do outside of the virtual world, going back to getting users to get off their computers and enjoy their lives in different ways. People are rewarded for sharing the places they’ve been, people share all the music they listen to, users share what they discover while shopping, or their experiences on vacation as they are enjoying it. Those applications are heavily focused on virality, much less on retention. Many products seem to focus on the product being stellar enough that users will come back to it or their friends will bug them to come back. This is where I find social has done a complete 180 from users being anonymous to being pressured to come back.
What lead me to this post was not the history of how we got to where we’ve gotten today, but the power of social activity. We’ve likely all heard the concept of “word of mouth”, I like to think the social experience is a derivative of that. People see an activity that was shared, being curious as we all are, we will check it out to see what it is about. Take me creating a radio station as an example. I create a radio station in Spotify, people are either curious to see what I listen to or like what I listen to, which leads them to subscribing or at least trying it out. I will also do the same with my friends and see what they listen to, often subscribing to their activity. It helps me discover music and keep myself entertained. The same can be said about any other variety of applications or products out there, pimping out your friends to help you discover new experiences, though really what they are trying to do is get more people using their product.
What continues to fascinate me is how these applications, games or products that now focus on the viral aspect of social activity do so at the expense of other core values, such as retention. Retention was always a core to any product and continues to be in games or applications that have no up front costs but have a micro-transaction economy. Using products like Spotify, Nike+, or Yahoo News, I was never really asked to come back or even given the a notice that coming back may result in me getting something out of it. Instead, I am reminded through my shared activity that those were great products which benefitted me and I should go back to it. In a way, I am shocked that they aren’t trying to get me back, but also happy they aren’t annoying me either.
Today, most of the products I use are social. I like they are social. Not for the fact that I am giving away all of my privacy, but because I can express myself, share my experiences with others, and review my friends’ social activity that allows me to discover new amazing things. Social has brought me to real life events that appealed to me (like Camaro Fest), has allowed me to discover new amazing products that made my life easier and better, and also allowed me to have some more variety in how I go about to my daily activities. Of course, there is a very large flow of content, the tools to curate this content is becoming more popular, but in the meantime I am watching what I share with others and what I subscribe to.