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.

Microplastics are confirmed in human blood for the first time

Brad Bergan for Interesting Engineering:

These tiny particles can move freely throughout the body, and become stuck in organs — which could cause significant health issues. But now that we know, scientists are on watch to understand the full scope of effects — both short- and long-term, on human health.

It’s an unnerving discovery, but we’re all in this together as scientists rush to explore the potential health effects.

fuck.

Weekly Digest 03/25

Apple developing new 15-inch MacBook Air that could come in 2023:

According to DSCC supply chain information, Apple is planning a new variant of the MacBook Air for 2023 that will feature a screen size of around 15-inches. The company is also reportedly planning to increase the display of the current 13.3-inch MacBook Air to something that is “slightly larger” but still between 13-inches and 14-inches.

💻

Considering the new MacBook Pros with the notch and the thin bezels, I think the new MacBook Air probably may come in 13″ & 15″ or 14″ & 16″. My bet is on the latter. This is a good move by Apple.

During the pandemic, my son was force to be virtual in 2nd grade and he was using a MacBook Air. The screen size although decent, for him it always felt not enough. Making a larger screen would be perfect for school.

And of course I’m looking for more colorful MacBook Air’s these things are begging to be personalized.


An Introduction to Generics:

Generics are a big new language feature in 1.18. These new language changes required a large amount of new code that has not had significant testing in production settings. That will only happen as more people write and use generic code. We believe that this feature is well implemented and high quality. However, unlike most aspects of Go, we can’t back up that belief with real world experience. Therefore, while we encourage the use of generics where it makes sense, please use appropriate caution when deploying generic code in production.

That caution aside, we’re excited to have generics available, and we hope that they will make Go programmers more productive.

👨🏻‍💻

I like this blog post. Great explanation of a new programming feature and ending it with an honest request to the community to use generics to help make it better over time.


The Four Innovation Phases of Netflix’s Trillions Scale Real-time Data Infrastructure:

My name is Zhenzhong Xu. I joined Netflix in 2015 as a founding engineer on the Real-time Data Infrastructure team and later led the Stream Processing Engines team. I developed an interest in real-time data in the early 2010s, and ever since believe there is much value yet to be uncovered.

📺

This was one of those articles that I shared after reading a few paragraphs. Zhenzhong talk about the four phases of real-time data infrastructure’s journey in Netflix. I enjoyed reading this cause every time Netflix had a business motivation they had unique challenges on the way, the bets they played and the learnings they had along the way have clearly shaped Netflix to what they are today.


TUIC:

TUIC was designed on the basis of the QUIC protocol from the very beginning. It can make full use of the advantages brought by QUIC. You can find more information about the TUIC protocol here.

👨🏻‍💻

This is pretty cool. Something to play with for the weekend 🙂


Excited about this:

Go 1.18 released with Generics support

Go 1.18 isn now generally available. This release supports generics which a lot of us have been waiting for. This is still the very first version to support generics and I believe this feature will gain more support and updates in the upcoming features.

From the Go blog:

In Go 1.18, we’re introducing new support for generic code using parameterized types. Supporting generics has been Go’s most often requested feature, and we’re proud to deliver the generic support that the majority of users need today. Subsequent releases will provide additional support for some of the more complicated generic use cases. We encourage you to get to know this new feature using our generics tutorial, and to explore the best ways to use generics to optimize and simplify your code today. The release notes have more details about using generics in Go 1.18.

Go Tutorial does an excellent job explaining how to use generics. I think they did a good job defining this functionally. The code is so much readable.

// SumIntsOrFloats sums the values of map m. It supports both int64 and float64
// as types for map values.
func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V {
    var s V
    for _, v := range m {
        s += v
    }
    return s
}

The [K comparable, V int64 | float64] tells me that you can either send either int or float values to this function.

It makes me wonder if there are product managers for programming languages or not? And, if yes, would love to talk to someone about their experience.

Star”bucks”!!!

With the earnings season in full swing, this tweet just blew my mind:

JP Koning further writes about this on his blog:

Starbucks has around $1.6 billion in stored value card liabilities outstanding. This represents the sum of all physical gift cards held in customer’s wallets as well as the digital value of electronic balances held in the Starbucks Mobile App.* It amounts to ~6% of all of the company’s liabilities.

This is a pretty incredible number. Stored value card liabilities are the money that you, oh loyal Starbucks customer, use to buy coffee. What you might not realize is that these balances  simultaneously function as a loan to Starbucks. Starbucks doesn’t pay any interest on balances held in the Starbucks app or gift cards. You, the loyal customer, are providing the company with free debt.

And I thought Starbucks sold coffee (average coffee). The more I read, it feels like they are a bank (unregulated) where we have loaned them money for an interest rate of a free coffee every 120 points.

Let that sink in.

The New York Times buys Wordle

New York Times buy Wordle:

Wordle was acquired from its creator, Josh Wardle, a software engineer in Brooklyn, for a price “in the low seven figures,” The Times said. The company said the game would initially remain free to new and existing players.

I’m very happy for Josh Wardle, especially after the twitter-verse got behind him to take down all the copy cats, but this news hits hard. Guess we will find out how much we pay to play this game once a day.

Emotional Intelligence – An example

Justin Bariso writing for Inc. on explaining emotional intelligence when reporters asked Tom Brady if he was going to retire after the Bucs lost to Rams last weekend:

Never make a permanent decision based on a temporary emotion.

Nice, short and simple read, but does extremely well to explain how not to be emotional when making decisions.

As product managers we tend to get attached to the products we build and work on day in and day out but it is very important to keep our emotions aside while making decisions.

The 5G Airline Controversy: What is it about?

If you heard “5G”, “airlines” and “problem” and trying to figure out what is going on. You are not alone. James Fallows wrote a wonderful FAQ style article explaining what’s happening between the airlines and the wireless companies who operate 5G.

Short version: 5G versus the airlines is potentially a real issue, rather than a bogus threat. But it’s likely that the parties involved will work out adjustments soon. Which is a good thing.

Head over to the link to understand what exactly happened. I think the regulators have their hands full to read and probably re-write the rules.

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