One of the best CLI utility I have used in a while

Having worked on Linux early in my career, it is hard to get away from the cli. I continue using cli as much as I can and am constantly on the look out of tools that can make my life easier.

Last week, I came across The Fuck utility. This is literally one of the best utility I have installed and used in a very long time.

I learned typing as a school subject when I was 16. Yes, I can type fast, but when it comes to cli commands, I’m error prone. And every time I type in a command that doesn’t work – 90% of the time its because of a spelling mistake or a missing character. I would literally blurt out “fuck” in my mind and roll my eyes and in some cases out of frustration I would type in “fuck” multiple times.

Well now, I literally type fuck and it auto corrects my command and voilà.

It works for most of the commands I use on a daily basis and my usage isn’t vast. I mainly use GitHub, Docker, node.js, curl, etc. Here is a demo from their GitHub page:

No. I do not use CLI for email.

Scaling with Process vs. People

Marty Cagan writing for SVPG on scaling your product with people instead of processes:

I loved reading this article particularly because he simply uses quotes from former CEO’s who have focused on people rather than processes to scale new heights for their product.

My favorite quote here is from Reid Hastings talking about Netflix:

“[The reason Netflix has been so successful is because it has] a culture that values people over process, emphasizes innovation over efficiency, and has very few controls. Our culture, which focuses on achieving top performance with talent density and leading employees with context not control, has allowed us to continually grow and change as the world, and our members’ needs, have likewise morphed around us.”

You need people to continue scaling your product which simply means creation of new software, hardware, service, etc

What’s in a Good Error Message?

I came across this great article by Gunnar Morling and have been wanting to repost this for a while… better late then never.

So what makes a good error message then? To me, it boils down to three pieces of information which should be conveyed by an error message:

Context: What led to the error? What was the code trying to do when it failed?
The error itself: What exactly failed?
Mitigation: What needs to be done in order to overcome the error?

The reason I find this article get is cause its coming from a Software Developer keeping other developers in context. I have worked as a Product Manager & a UX professional for several years now and Error messages is one of those areas which does not get much attention.

Its always at the back of your mind but other important aspects take over and error messages typically get overlooked.

Good error messages are important. When things go wrong, these error messages are the only communication channel between your software and customer. A good error message will allow your customer to recover well or submit a support ticket – and thats $ we are talking about.

The first comment by RossVertizan on this blog also has an important aspect for good error messages:

One thing that I would add is an indication of severity. Personally, I like to have every message preceded with a word which indicates the severity of the message

Killing a feature is also important

When it comes to adding a feature to your product, there are countless ways of doing this – and we still mess it up. However, when it comes to killing a feature there isn’t much out there.

As product managers we get excited to take the product to the next level with new features. But deep inside we know there are some features in your product that simply don’t work anymore. You are tracking your product with countless KPIs and metrics to see the health of your product, and its right on the dashboard when a feature isn’t getting clicks or for that matter appreciation (feedback). We either ignore them or simply stop tracking them.

Features that don’t work cost money to support. Worst, just by being present in the product they complicate workflows and risk distracting your users from their core tasks.


You may have heard your customers complain at times: “Your product is to complicated or bulky”. There is a high likely hood that there are features sitting in your product that isn’t being used that’s adding to this bulk and complexity.


Removing a feature isn’t simple. You can’t simply release a new version without a feature. You have to treat removing a feature the same way as adding a new feature to the product:

  • does the existing feature align with your overall product vision & strategy.
  • deprecating a feature needs user search, interviews and analysis.
  • deprecating a feature needs planning, included in the roadmap, and communicate with your users.

To decide if a feature needs to be deprecated:

  • check with your users what are they using to solve their problems instead of your feature.
  • did the feature miss the market?
  • the feature may solve a user problem but its unsustainable for you.
  • the feature solves a problem for a very small set of users, but its not a problem worth solving for you.

When deprecating a feature, communication and transparency is key. Ensure you have two set paths, i.e. End of Life (EoL) and End of Support (EoS) and there is sufficient time for the users (if any) to move to other options if they are using this feature.

To ensure a successful EoL and EoS,

  • remove the feature so that new users do not have access to this
  • de-emphasize the feature in the UI – out of sight out of mind.
  • suggest alternatives and help your users migrate

Lastly, make sure this is part of your continuous onboarding strategy, where you are communicating this to your users and helping them migrate through the EoL and EoS timeframe.

Applying a ‘Time-To-Market’ KPI in product

Gabriel Dan on Mind the Product:

It’s a KPI—used mostly by the business—to measure the time required to move a product or service from conception to market (until it is available to be purchased). The process is the combined efforts of all stakeholders, product management, marketing, and so on. It includes workflow steps and strategies involved throughout the process. It’s usually calculated in days/weeks/months/years but it can be met in other forms too depending on how the different organizations will want to implement this.

This is simply amazing and important especially when you are constantly trying to beat your competition to get out in the market to capture your audience.

The shorter the time to market is, the quicker the return on investment (ROI) can be realized, therefore you can imagine why it’s important for businesses.

The quicker the product gets on the market, the bigger market share the company will get especially in an unaddressed segment facing less competition and thus enjoys better profit margins. Getting fresh and relevant products to market quickly attracts customers.

Exactly. It is very common to get into the phase of doing more before releasing to the market. The TTM metric forces you to be frugal about your MVP.

Gabriel Dan does a great job setting the premise and goes on the explain how the TTM should be calculated. Highly recommended.

Your Product is already obsolete – How to Survive

Des Traynor speaking at Mind the Product San Francisco Keynote:

All startups go through three distinct phases – birth, growth, and survival. You start by making the product work, then you have to grow the product, and then, crucially, you have to focus on survival – on keeping it relevant.

Relevant till date.
One of the best session I ever attended.

One more gadget: The Ember Mug 2

Coffee is probably one of the most ubiquitous and social products in the world. I’m sure tea is also somewhere right up there. So it doesn’t hurt to say a Hot Beverage.

I have seen messy desks (I have one) and extremely clean ones and a mug for a hot beverage is ubiquitous. One of the things that drives me nuts is the rate at which my beverage goes from pipping hot to stone cold. It’s not that I am lazy to get up and heat it – its the fact that every time I wake up i have the urge to make a fresh cup of hot beverage to replace my cold one. I hate wasting food.

I’m sure there are studies that would say Coffee/Tea is good or bad for your health. For me apart from Coffee being a fuel it helps me be alert (especially when you are in those long and boring meetings), it has certainly helped me improve productivity (also proved by this MIT study).

Earlier this year I was diagnosed with Cervical Radiculitis – a pathological condition of the spine and one of the reason for this was my sitting posture. It’s hard to maintain a good posture when you work in front of a screen for more than 12 hours a day. It’s even harder to correct a habit that is ~30+ years old. A hot beverage allows me to stretch back, straighten my poster and take a nice hot sip. Doing this every 20-30 minutes helps tremendously.

So when Ember came out with their temperature control mug, it was a no brainer to get one of these.

Ember has a travel mug and a regular mug. Personally I prefer the mug.

They come in 2 sizes, 10 oz and 14 oz. To put it in perspective, the 10 oz although small looks like a normal mug that’s available in the market. The 14 oz mug – although they do have that extra 4 oz; stand out cause the shape and size is not like any other normal cup available in the market.

Also remember these mugs come with a batter – which is typically heavy, so the more bigger you cup, the much heavier it gets. I went with the Black Ember Mug2 10 oz size.

I generally prefer the black color, but when it comes to utilities, I do prefer white. There was one reason I chose the Black Mug – Coffee Stains. These mugs are made of durable stainless-steel with a ceramic reinforced coating (presumably food grade) which gives these mugs the nice matt finish. And this finish will retain coffee stains. I’m sure the black mugs also retains coffee stains, but they are barely visible.

The App

The Ember Mug comes with an app. Following the instructions and I was able to pair this mug with my phone in less than 30 seconds. That was awesome.

It also walked me through to create a profile that allows me to choose a coffee brand, brew style, and my desired temperate. They suggest 135 F to being with; after setting this temperate for a week, i reduced mine to 132. Personalization is a great thing. The app also comes with multiple presets for different kinds of coffee brews.

The overall app is OK. Not the best usable app. The main screen is basically a screen with a single color and a number that shows your current coffee temperature in the middle and at the very bottom an animation showing how far off it is from your desired temperature and your profile if it’s selected one.

The ^ right below the animation suggests more options, and every time instead of tapping it, i swipe up and close the app. When you get there, you can select a coffee preset, or add/remove presets; a Tea timer if you need one, and some coffee recipes. I have never used this page after the first setup.

Settings
The settings screen allows you to:
1. change the color of your LED – I set mine to green
2. Adjust brightness (of the LED maybe?)
3. shows the Battery level
4. Change Temperature – I have mine setup at Fahrenheit
5. Notifications – I turned mine on to notify me when my coffee reaches the right temperature.

Menu
The menu has a lot more options. I enabled Ember X Health and every once in a while when I’m thinking what exactly this app does, I venture into insights.

The LED Indicator
One of the things that has always confused me is the LED indicator on the mug. It flashes Red when the battery is running low or out of charge. Most of the time it is white; and I’m have seen it go Green only when its on my charging plate. Basically IO have absolutely no idea what these indicators mean. For now I think or it as the mug has battery and its working.

Conclusion

So far its the best $99 that I have spent this year.

It keeps my coffee at my desired temperature. The battery on this lasts long enough for me to take my mug and walk around or go to a hour long meeting. Because of the ceramic coating, they do feel fragile, but I’m assuming the stainless-steel makes it durable. The confusing LED indicator – try and tune out of this and think of the white light as the mug’s working.

Dropbox: Rewriting the heart of our sync engine

Sujay Jaykar for Dropbox:

Shipping any change to sync behavior required an arduous rollout, and we’d still find complex inconsistencies in production. The team would have to drop everything, diagnose the issue, fix it, and then spend time getting their apps back into a good state. Even though we had a strong team of experts, onboarding new engineers to the system took years. Finally, we poured time into incremental performance wins but failed to appreciably scale the total number of files the sync engine could manage.

Once you have a successful product at your hand; things start to get complex. It’s not that the world has got complex problems; adding features and at times making this simple add complexity. Also, in today world, technology is so ingrained that anything you build should have the ability to scale almost instantly. But predicting how much to scale is hard. At a given point in time you do have to make a decision to build something again. The approach that you take makes or breaks your new shiny product.

I loved Dropbox’s approach here. They created a “rewrite” checklist.
I understand that one needs to refactor, optimize constantly. But at a certain time and due to resource constraints, this stops happening.

Can you deliver incremental value?

A PM is typically delivering value to their customers every release. I feel this is a very important checklist item; rewrites are slow and the teams needs to come together to pull this off.

They followed this up with a “can you pull off a rewrite” checklist

It’s much easier to write new code than fully understand existing code. So, before embarking on a rewrite, you must deeply understand and respect the “Classic” system.

This comes back to bite you hard. This I feel is the single most important item for a developer and a PM to understand how your existing product works.

Do you have the domain experts who understand the current system?

This is important. If you don’t have some; hire a contractor.

I have been involved in a couple of rewrites myself and things did not go as planned. This checklist made me realized how easy it would have been for me to apply this to every single aspect of the product and then move forward.

Documenting UX

A lot of companies today implement an agile process and the remaining ones like to call themselves agile. A few years back any designer (UX/IX) would pull out their hair because turning around design details wasn’t easy given the amount of time a sprint would end. Years go by and processes have evolved. Processes like LeanUX and staggered sprints or design and R&D sprints in parallel have more or less solved this issue. However these processes have reduced the amount of documentation.

We have user research data, but never used it to create personas. We have analytics data but never exported them out of their software/databases. There are a list of scenarios or stories that are important or have a higher priority, but they never made it to the official todo list or backlog. All, I see is wireframes, trolls of em. Some of them make sense like login screens and forgot passwords; the others I have no idea. Today wireframes have become one of the most important means of documentation. I even see scanned sketches, photographed whiteboards and clickable wireframes. One change in the use case or workflow, and you are back to square one.

It does capture details; however, chances are when I see someone else’s wires, I may not like a solution. How do you support your solution? 

And I have made them all; mistakes. The fact that the requirements or priorities are in my head and not anywhere else does not do good for me to convince someone why these things need to be done the way I intend to. 

Over the last couple of months I started maintaining a combination of few documents that has helped me transition stuff and propose design easily. Here is a short run down of these documents and processes: 

We all do our bit by venturing out and talking to users. We capture notes and lot of em. When you do so, try to capture them as quotes. There are two important advantages in doing so. One, Its faster to write them while you are interviewing/talking to them and Two, it preserves the context. 

“I have to apply the same filter every fucking time I visit this page” 

“See I like this pages concept in OneNote. This way I can just have multiple notebooks and go and write down in pages within them…”

One of the important thing is to digitize these notes. It could be in a notepad or Evernote; I found excel helpful (yeah!). I was able to create buckets/categories and then write the quotes in these specific buckets. Also, when I digitized these notes; I was able to add attributes to them; like screen resolution, position, firm, interview date, system usage, type of user, etc. These become important when I really wanted to narrow down to specific kind of users.  Apart from that I color codeed these quotes – for example. Red for negative, Blue for positive and Greens for opportunities; this gave me an idea on the state of the existing software.  

I haven’t created any personas (and I might not for the time being) for my work. But when I was working on a specific problem, I was able to filter down to a handful of target users in my excel sheet then parsing through notebooks of research data. Once I have narrowed it down to a bunch of users, it is easier for me to identify patterns in their quotes (colors added value). Those attributes that you add now allows you to see how much is in common between these users.

After looking at my excel, I note down tasks/use cases/stories. I maintain a list in a todo list. Apple reminders does the job for me. Nothing fancy. This allows me to scope out, prioritize stuff. Anything that is high priority gets a date and bubbles up, rest of them just remain at the bottom. Simple.

Analytics – If you have it, great. This comes in use when you really want to see what users are doing with existing systems. How are they using it. Export them and keep them handy. Don’t rely on your system that you did log in and get data. Historic data is fine. Patterns are not going to change overnight. Export them because you can quickly pivot data. That is important to figure out supporting numbers for your uses cases. 

This accompanying my wireframes/sketches is a good combination. I try to ensure my wireframes are also not too elaborate. Stick to the specific workflow or use case and thats good enough. 

Trying to Keeping iSimple and Stupid. So far it has worked for me. Maybe over the next few months or a year I will know if it was effective enough.

Please leave your comments and suggestions or any of the processes you personally follow or send an email to get in touch.

Please add “AI” to your Ads…

By now I’m immune to the ads that show up on the website and thanks to Readability, I don’t have to look at them constantly. 

When these ads started, they were irrelevant, some non-sensical ad would just show up randomly on the webpage. However the business model worked. Intelligence got built in and now ads are relevant. You search for something that you are looking to buy, invest and they would follow you all over the web like a ghost for the next few months. 

Well this was a welcome change for business. 

Last year around Thanksgiving I decided to upgrade my Canon DSLR camera. I had been using my existing 50D for about 5 years now, and the urge to get a full frame camera had been on my mind. So sometime in the first week of September I search for a Canon 50D on 3 sites. BHPhotoVideo.com, Amazon.com and for some odd reason Google.com. Apart form the camera I also did a couple of searches for lenses and a camera bag. If I was upgrading, I was upgrading a whole lot of things.

For the next 12 weeks until Thanksgiving week, where ever I went, I could see ads for Canon 5D Mark III, Camera bags every where. BHPhotoVideo.com was the primary contender followed by Adorma and other places where a Canon 5D Mark III was available. I was not bothered by these add, but I would observe them from the corner of my eye when I would be checking my mails, or reading something. 

Finally in November 3rd week I took the plunge and upgraded my self. The camera was delivered to me in 2 business days and Google with all its smart identified the tracking number in my mail box and of course there was the Google now card as well. Thanksgiving was good, the new camera was even awesome. I had a cool new later messenger bag for my new gear.  The Christmas tree went up and celebrations were all around.

After Thanksgiving I log back in and the first ad I see on the browser is for a Canon 5D Mark III from BHPhotoVideo.com.  These ad did not change. They were still there.

So basically,

  1. Google knew what I was looking for and they started showing me ads.
  2. Google scans my email to highlight any tracking numbers and also show me a Google Now card with the tracking number and the product tin transit. 

So why the hell am I seeing this ad now? Why are they so dumb? I bought an item that I was looking for; they scan my mails and the know what have I bought; heck they would even know if I returned something.

So instead of seeing ‘RELEVANT’ ads like accessories for my camera, Lenses that my go well with my camera or even a cool Vacation package; I still see an ad for a Canon 5D Mark III from BHPhotoVideo.com.