Here are the slides for my talk at CodeCamp Iași 2014 about The Importance of Transactional E-mail:
A few weeks ago it happened again. I ran into an acquaintance who enthusiastically started to pitch me The Next Big Thing™. All he needed was “someone to build it for him”. This was one of the brighter of his species. He didn’t ask me to sign an NDA. At least not right there at the spot.
What followed was a concept for a social app, as most ideas are nowadays. This doesn’t have to be a bad thing, and fortunately, I rarely meet someone who claims to be on the verge of unsettling Mark Zuckerberg. Still, building a successful social app is not easy.
To the contrary, it’s extremely hard. And it’s not only the huge number of technical challenges. The biggest problem of all is that of the chicken and the egg. What comes first? The audience or the content?
Most of these would-be entrepreneurs don’t consider this catch-22 to be a real issue. From their perspective, the main challenge is getting it designed and built. So they turn to me and ask me what it would cost to execute their idea. Just like this acquaintance did.
Business model > pixels and bytes
The first I told him after listening to his pitch was that he needed to develop a realistic business model before even thinking about pixels and bytes. I’m all for moonshots, but at least be aware of all challenges and risks associated with the project.
Next, I asked him a series of questions to get a sense of the scope of the project. A positive answer to each of these questions added another € 10.000 to my mental cost projection.
When I had an answer to all my questions I asked one more question: “What’s your budget?”.
And there it started: “Of course I’m not telling you! I’m not showing you my cards so you can maximize the price!”. The acquaintance-in-question thought it would be the dumbest thing ever to share his budget with me.
When I get this reply I smile on the inside. No, I laugh my ass off, on the inside. Because this response just shows a total lack of business sense. Here’s why.
Stop wasting time!
First of all: stop wasting everybody’s time! Do you really want to go through the whole requirements specification and sales proposal phase (easily costing up to 60 hours for medium-sized projects) only to find out that there’s a huge budget-mismatch at the end?
Secondly, distrust is not the best way to start off a partnership. And building something as complex as a social app is nothing less than that. You’re not in a regular client/vendor relationship. The investments on both sides are going to be far bigger than just time and money. Being completely fair and transparent with each other is essential for success.
Lastly, if you really think that you’re talking to a slick Glengary Glen Ross sales guy who maximizes his profit out of every deal without considering the interests of the other party, you should not be talking to that person in the first place!
Make it count
Ideas are like assholes: everybody has one. The only thing that counts is execution. So, make it count. Have a realistic business model in place. Know what the risks and challenges are. Seek for mutually beneficial partnerships. And always be completely fair and transparent with your partners.
Then, maybe, you’ll get lucky.
Who doesn’t remember the days that search engines ate whatever you threw at them. Meta tags containing unrelated-yet-search-volume-laden keywords, doorway pages and my personal favourite: white-on-white text. Now it looks like the latter is making a return from its heydays.
Etsy’s Hidden Text
Take a look at this snippet from my Google Mail inbox:
Google Mail shows the e-mail’s subject in regular text and then shows a snippet of text from the body. However, upon opening the e-mail I was surprised not to find the “Find the perfect gift for Mom.” string at the top of the message. What’s more: it was nowhere to be seen at all.
Upon closer inspection however, it turned out that the text was actually there. When I selected the first line in the e-mail it showed up. By matching the text colour with the background colour it was brilliantly concealed by the smart-asses at Etsy.
I love seeing Google getting out-smarted by the exact same practices that were abolished fifteen years ago.
Ever since WhatsApp’s purchase last week, Telegram has been the craze for mobile texting. Hordes of users are adopting Telegram at a speed of over 100 new registrations per second.
Telegram’s main strongpoint when compared to WhatsApp are its security and privacy features. On top of that it offers an open API and protocol and is “cloud-based” (thanks to this Telegram has desktop clients).
But the thing you hear users talk about the most? Telegram’s speed.
Does Speed Matter?
Granted, although benchmarks are nowhere to be found, Telegram really seems to deliver messages faster than WhatsApp. Part of this might be the difference of scale. WhatsApp has approximately 450 million users and handles a huge amount of messages every day (e.g. 54 billion messages on the most recent December the 31st). We will have to see how Telegram will hold up to its promise now that so many users seem to be jumping WhatsApp’s ship. And right now, it’s not doing so well.
But does it actually matter that Telegram delivers messages a couple of hundred milliseconds faster than WhatsApp does? Yes and no.
Rationally it doesn’t matter that much. The bottleneck with mobile chat is typing. No matter how fast the infrastructure, typing messages on touch keyboards is still a dreadfully slow experience.
Emotionally, however, speed makes a big difference. Whenever you receive a text you are bound to read it immediately and fire of a reply. And this is where it gets interesting: users are interacting with the app in short bursts of attention throughout the day. Telegram might not get as much continuous interaction as Angry Bird gets, but Telegram has hundreds of interaction moments per user per day. And every interaction moment is an opportunity to delight the user. Telegram understands this point very well.
WhatsApp vs. Telegram
Let’s compare WhatsApp’s “message sent“-sound (on the left) with Telegram’s (on the right).
Both of them are short, yet Telegram’s is higher pitched. Telegram’s sound, combined with the speedier process of getting the typed-in message into the chat window, makes the overall process seem faster and conveys a happier feeling. It makes me feel good. And the first few times I experienced it, I quickly wanted to send another message.
WhatsApp’s sound is more of a formal end-of-the-road kind of notification. Translated to voice, WhatsApp says “It’s done, now move on please.”. Telegram says “Done! Anything else I can do?”.
Sound Plays an Important Role in UX
Sound plays an essential role in the experience a user has with your mobile product. This is something where the web is clearly lagging behind, as sound in web apps is incredibly uncommon. We don’t really expect (or want) most desktop apps to produce sound – safe for apps like OmmWriter which have it as their core feature – but sound is very much accepted and expected in mobile experiences.
Yet, most web apps don’t feature sound. To prove my point at the hand of another recent craze: even the HTML5 version of Flappy Bird doesn’t feature sound.
With the coming of HTML5’s audio tag there are less technical hurdles to overcome when using sound in web applications. Hopefully sound won’t be treated like an after-thought in web apps soon. But just as with everything else: use where appropriate. I, for one, will definitely experiment with sound in the next mobile web app project I work on.
Want to experiment with sound in web apps yourself? Here are some excellent resources to get you started:
Whoever’s birthday party I’m attending, they all have one thing in common: YouTube is being used to play music. I love Spotify, but many of my obscure music loving friends dismiss it for only covering mainstream music. I don’t know what that says about my taste in music, but for me Spotify usually suffices. The only exception being the occasional mashup on Soundcloud.
Apart from the fact that using YouTube just to play music is a waste of bandwidth – most of the time the active tab is not even the one playing the current track, but hosting the next already preloaded track – it’s just not suitable for the job at all. Seeing someone struggle with an array of browser tabs to manage a playlist pains my innerGeek.
But, let’s face it: a lot of people are actually using YouTube to play music and that won’t go away anytime soon. What’s more, Soundcloud has become a regular source for music lovers and Spotify has a web client as well. What surprises me however, is that browsers didn’t evolve with this trend. Sound is still being considered a second-class citizen on the web, and things only got worse the day the browser tab was born.
The interrupted-while-playing-audio keyboard salvo
There’s still no native way to control sound playing in a browser. Who doesn’t find himself pressing all kinds of key combinations when being interrupted by a colleague while listening to Soundcloud? It’s always the play-button that I hit first, but that either starts Spotify or iTunes on my system. So I hit it again to make the second music source pause, quickly try to locate which tab is playing Soundcloud and eventually just give up and hit the mute button to get rid of the playing music.
YouTube improved things a bit by notifying the user in which tab YouTube videos are playing by displaying an ASCII play-icon in the title. And recent Chrome builds show a play-icon on the right side of the audio emitting tabs. Steps in the right direction, but small steps.
I’m looking forward to the day that browsers offer native ways to control audio. In a time where browsers offer APIs to access GPS, the network stack, video input, audio input, gyroscopes and all other kinds of auxiliary hardware it’s weird that there is still no generic way to locate and control running audio.
Let’s hope browser vendors will catch up soon.
I remember the moment Martin and I came up with the idea for BrnoJS. It was after we attended our first ViennaJS meeting and I had just learnt a new word: kurva zima. As we walked across Masarykova, at half past midnight in the freezing cold, we were amazed by the quality of the talks and the participation of the audience at ViennaJS. We both agreed we had to start something like this in Brno and started BrnoJS.
During my search for available domain names, I stumbled upon the BrnoJS.org domain name. Apparently, someone else in Brno had the same idea as we had. This someone, turned out to be Jan Mayer, who I had met at the WebExpo after-party in September. We even had a pivo meeting scheduled within two weeks. Perfect! Jan joined us and we launched the Meetup.com group.
Considering the fact that most of the existing meetups in Brno focus on back-end development, I expected less than ten participants for the first event. But after launching the Meetup.com group, RSVPs started rolling in a rapid fashion. We were amazed when we broke into double-digits, and we were going crazy by the time the 40th RSVP came in!
Last Tuesday was the very first BrnoJS meetup, aptly called BrnoJS #1. And I can safely say it was a huge success! We had 45 people attending, two great talks by Martin Kačmar and Vojtěch Dobeš, great of audience interaction, and a lot of beer.
See you at BrnoJS #2!
Meetings. Hate ‘em or love ‘em, but they are often a necessary aspect of any project that involves more than one person. However, the bigger the company, the more a time-waster they become. Who doesn’t recognize the person who seems to aim for the Guiness Book of Records in holding meetings?
Although meetings can definitely be useful, they often debouch into needless chit-chat because “we’re in a meeting”. The most common culprits: the absence of an agenda, the false assumption that the entire time-slot needs to be used, the inclusion of people who have no reason to attend and the lack of actionable outcomes.
At dotBlue we kicked 2014 off with approval signatures on some really cool projects. That’s absolutely fantastic, but I immediately felt that my 2014 resolution to leave the office at 18:00h three times a week was in danger. On a more important note: we had to improve our meetings if we wanted to scale up for the extra workload. So, I wanted to improve the efficiency of our meetings. And the solution was actually very simple.
Being a company with people spread across various places in Europe, our meetings often take place via video calls on Skype. Virtual meetings aren’t that different from physical meetings: you mostly get the same things, both good and bad. However, there’s one exception: the risk of drifting away in remote meetings.
In the physical world it would be highly unprofessional — not to mention unfriendly — to start talking to people who are not attending during a meeting. But with remote meetings it’s really easy to do exactly this, and get away with it. As soon as you feel that a topic is uninteresting to you, it’s tempting to just take a quick look at your unread e-mail or to ask someone for a status update in a chat. It’s incredibly easy to lose attention, because you’ve got the distractions literally at your fingertips.
Meetings Done Right
I created a simple Trello board that contained four lists: To Discuss, Discussing, Discussed and Archive. For every meeting everyone puts his topics in the “To Discuss” list. When the meeting starts, we progress through the list, every time moving a topic a list to the right. The great thing about this is that everybody dynamically builds the agenda for the meeting.
Before the meeting starts everyone has already had ample time to think about the topics which are to be discussed. What’s more: due to the interactive nature of Trello everyone is able to leave his comments on the topic’s card. You can share your point of view on the topics in advance, and by the time the meeting starts there’s already a common understanding of each other’s perspective, which greatly enhances the speed and quality of the discussion.
15 Minute Time Limit
To further prevent the risk of drifting away, we put a strict time limit on meetings: 15 minutes. This seemed daunting at first (previously our meetings would take at least 30 minutes), but this limit forces you to stay on track and be well-prepared when the meeting starts.
So far, we’ve had great results with this approach. Our meetings are efficient and focused and don’t feel like time-wasters anymore. On top of that: I found out that meetings, when done right, can be great energy boosters.
Rules of Engagement
For this method to work, you need a set of rules that you adhere to strictly. After a couple of test rounds, we came up with the following set:
- If a topic is not on the “To Discuss” list, it won’t get discussed. There’s no place for “Oh, one more thing, …”-moments in Lean Meetings.
- All topics need to be prepared, you’re not allowed to search for missing information while the meeting is in progress. If a topic is unprepared it stays in the “To Discuss”-bucket for the next meeting.
- If there’s nothing on “To Discuss” list, there is no meeting.
- The meeting takes no longer than 15 minutes. If there are still topics left to discuss, they stay there for the next meeting.
- As soon as all cards are moved to “Discussed” the meeting ends. High-five if you still have time left!
To keep structure in the board, you should set the following additional rules:
- Steer clear of overzealously making notes: the board is meant for organizing meetings, not for collecting notes or minutes.
- After a meeting is finished all topics in “Discussed” move to “Archive”.
- Every morning the cards in the “Archive”-list are moved to the Trello Archive (to clear the board for today).
The cool thing about this method is that it forces meetings to be focused and efficient. No big agenda and planning going around the company’s inboxes, just a “Be there, or be square”-notification. You’ll soon find out that this transforms the way you organize meetings.
You can agree on a set of rules for actually holding a meeting, such as that there must be at least five topics to discuss. This leads to organizing meetings when they are actually needed, instead of planning them in a ‘regular timeframe’ (e.g., after everybody has fetched his morning coffee).
Until telepathy becomes real, meetings are a necessary evil. So ’till then it’s our duty to make sure that we make the most of them. Give this method a shot. I’m convinced it will make your meetings more efficient and useful. You might even start to like meetings. And please share your results with me, I would love to hear how it worked for you.
Self-tracking has become increasingly popular in the past few years. Apps like FourSquare, RunKeeper and Fitocracy have accrued a huge user-base of people tracking, tipping and tagging.
In return for all the tracking users get kick-ass stats, badges and achievements. What’s more: you get to share your impressive feats with your friends (although I doubt anyone likes getting their timelines flooded with personal horn-touting).
But although these apps give you a lot in return for tracking your activities, it’s actually a lot of work to do so.
I go to the gym three times a week, doing my routine work-out. Although I mainly keep track of my progress in my head, it’s useful to have this data logged somewhere. At first I used the good ol’ pen-and-paper approach. But soon I switched to Google Docs after washing my track record in the washing machine along with my sporting gear.
When Fitocracy saw the light of day I jumped on it. Tracking my progress with Fitocracy seemed obvious to me. Earning achievements could give me that extra bit of power just when I need it! But it feels weird to first do an exercise and then spend time logging that very exercise. Also, the touch screen doesn’t always play nice with sweaty hands, making punching in the data a pain in the ass.
There should be a smarter, automatic, way.
Be There, or Be FourSquare
FourSquare is another example. I’m a sucker for gamification and my heart lights up with joy every time I get a new badge. The tips are handy, (especially those wifi passwords) and several times I’ve met up with friends after seeing them check-in at a location near me.
But despite all these advantages I actually forget to check in every one out of two times. It’s simply not natural to me to immediately grab my mobile phone and check in on FourSquare whenever I walk into a bar. Again, there should be a smarter way.
Amnesia and meta-tasking on Toggl
And to top it of, the perfect example is Toggl. Toggl works fine for logging bigger chunks of time. Let’s say, at a one-hour granularity. But go below that number, and you will find yourself spending a considerable amount of time meta-tasking. My working style is simply too dynamic to accurately keep track of everything without going insane.
When I spend half an hour sending out 10 e-mails to 10 different clients, I should log that separately. But doing so I will end up spending another three minutes (10%!) to actually do so (should I track that as well?). And forget to properly track time for a couple of hours, and you’ll wind up playing the what-the-hell-did-i-do-this-morning game.
The Future and Beyond
Simply put, manually tracking after the fact doesn’t work. At least, not for me. It’s too cumbersome, too easy to mess up and generally too expensive (time-wise). On the opposite, an example of tracking that works very well for me is RunKeeper. It automatically tracks my progess while I’m running and provides me with real-time updates. Talking about actionable data collection. It’s seamless, and it’s automatic.
Tracking activities should happen seamlessly and automatically, while performing the very activity. As soon as it requires any manual operation it’s doomed to be inaccurate. Fortunately, the future is bright. Already back in 2011 we saw Google demo’ing a smartphone-connected fitness machine. Then there are the start-ups approaching time tracking in a novel way, such as RescueTime (although this particular app didn’t work for me). And launching APIs has become an essential part for tech start-up success. So as soon as e-wallets get more common, it’ll be a matter of time until FourSquare connects and automatically checks you in when ordering your double-whipped Double Chocolaty Chip Frappuccino.
And what I would like to have after that? I know I’m asking a lot, but metrics on life would be great. Show me my weekly coffee intake, the amount of words I read, time spent arguing which browser is the best, the amount of groceries I carry in kilograms, the liters of water used in the shower, and on and on. Track it seamlessly and make it actionable.
I believe you should always aim to be your best you. Data makes it possible. We’ll get there. Eventually.
Being a big fan of the motto “Today is the first day of the rest of your life” and an avid believer that change can (and should) be applied at any moment, the start of a new year still marks an important point for me. It’s the time for me to look back at what I’ve achieved in the past year, and to set personal goals for the new year. So here it goes…
The Past Year
2013 has been full of change. In fact, I don’t think my life has changed this much in the past 10 years. A quick overview of my highlights:
- Moving to Brno, CZ.
- Due to that, finding Klára.
- And due to the two points above, a lot of personal development.
- Growing the company with Steven.
- Doing my talk at WebExpo 2013.
- Lots of traveling. My ‘commute’ between Haarlem and Brno obviously, but also Copenhagen (Denmark), Vienna (Austria), Alanya (Turkey), Prague (Czech Republic) and Bratislava (Slovakia).
- Starting BrnoJS and ColoursConf (more on this later).
- Picking up sports again.
The New Year
When picking my goals for the new year I tried to make them as specific as possible. I am a data nerd, and the only way for me to actually achieve any of these is to track my progress. So, without further ado, here are my goals for 2014:
- Participating in at least 4 running competitions. I’ve already signed up for the first one.
- Doing sports at least 5 times a week (running, fitness, swimming or stretching / yoga exercises).
- Spending at least 4 hours per week writing (articles, blogs, thoughts, whatever).
- Leaving the office at 18:00h at least 3 times per week (time spend after 18:00h is hardly ever efficiently spend, and I can use the time well to attain my other goals for 2014.
- Reading at least 3 hours per week and at least 1 novel per month (in the past 4 years I’ve hardly read any other book than UX-related ones, I think reading novels will drive my creativity in all fields).
- Taking Czech classes (I need to improve my command of the native language of the country I am living in fast).
- Speaking at least at 3 events (big or small), excluding events I organize myself.
- Attending at least 2 events per month.
- Writing down the 3 things I’m grateful for per day.
- Tweeting at least once per day (I get a lot of value from people I follow in Twitter, I should give more back).
- Talking about valuable communities, I want to contribute to UX.SE or Quora at least 3 times per week.
- Eating at least 2 pieces of fruit or vegetables per day (the best I can do at making this goal SMART).
- Returning missed calls within 24 hours (I’m really bad at this).
- Taking a holiday break at least twice (I’m also really bad at this).
Thanks to all the great people around me in 2013 and here’s to 2014!