Wednesday, May 14, 2025

Discussion about Maximum Border (Problem from HackerEarth)

To See All Articles About Technology: Index of Lessons in Technology
Try out the problem here.

This is the problem:

Difficulty: Easy
Problem

You are given a table with n rows and m columns. Each cell is colored with white or black. Considering the shapes created by black cells, what is the maximum border of these shapes? Border of a shape means the maximum number of consecutive black cells in any row or column without any white cell in between.

A shape is a set of connected cells. Two cells are connected if they share an edge. Note that no shape has a hole in it.

Input format

The first line contains t denoting the number of test cases.
The first line of each test case contains integers n and m denoting the number of rows and columns of the matrix. Here, '#' represents a black cell and '.' represents a white cell. 
Each of the next n lines contains m integers.

Output format
Print the maximum border of the shapes.


Based on these examples:

Print the maximum border of the shapes.

Sample Input
10
2 15
.....####......
.....#.........
7 9
...###...
...###...
..#......
.####....
..#......
...#####.
.........
18 11
.#########.
########...
.........#.
####.......
.....#####.
.....##....
....#####..
.....####..
..###......
......#....
....#####..
...####....
##.........
#####......
....#####..
....##.....
.#######...
.#.........
1 15
.....######....
5 11
..#####....
.#######...
......#....
....#####..
...#####...
8 13
.....######..
......##.....
########.....
...#.........
.............
#######......
..######.....
####.........
7 5
.....
..##.
###..
..##.
.....
..#..
.#...
14 2
..
#.
..
#.
..
#.
..
..
#.
..
..
..
#.
..
7 15
.###########...
##############.
...####........
...##########..
.......#.......
.....#########.
.#######.......
12 6
#####.
###...
#.....
##....
###...
......
.##...
..##..
...#..
..#...
#####.
####..
Sample Output
4
5
9
6
7
8
3
1
14
5



I have written this psuedocode to solve the problem:

1. I will track if I observe a number. And when I do, I would read it (let's say) "2 15" to take out the 2 and 15.
2. Then I will start a loop for the number of times I observed as the first number.
3. Then I will count the hashes in the those lines on which I will iterate in step 2.
4. I will maintain a max_border variable to keep track of the maximum number of hashes (in a border) I have seen so far.

Would it work? Is it optimized?

Thanks for the detailed examples. I reanalyzed the problem using the sample inputs and outputs, and you’re absolutely right to ask for a recheck.


✅ Problem Clarified (Based on Samples)

You're not being asked to detect connected shapes. You're asked for:

The maximum number of consecutive black cells (#) in any row or column across the entire matrix.

So, the concept of shapes and connectivity is a red herring — you're not required to group connected components.


✅ Actual Requirement (Based on Examples):

Given a grid of R x C, for each test case:

  • Find the longest sequence of # in any row or any column.

  • That sequence can be anywhere in the grid.

  • You're not restricted to connected components at all.

  • So no DFS/BFS is needed.


✅ Corrected and Optimized Approach

  1. Loop through every row:

    • Count max number of consecutive #s.

  2. Loop through every column:

    • Count max number of consecutive #s.

  3. Take the maximum from both row-wise and column-wise streaks.


✅ Python Code Implementation

python
def max_border(grid, R, C): max_streak = 0 # Check row-wise for row in grid: count = 0 for cell in row: if cell == '#': count += 1 max_streak = max(max_streak, count) else: count = 0 # Check column-wise for col in range(C): count = 0 for row in range(R): if grid[row][col] == '#': count += 1 max_streak = max(max_streak, count) else: count = 0 return max_streak # Driver code T = int(input()) for _ in range(T): R, C = map(int, input().split()) grid = [input().strip() for _ in range(R)] print(max_border(grid, R, C))

✅ Time and Space Complexity

  • Time Complexity: O(R × C)

  • Space Complexity: O(1) (excluding input)


✅ Summary

QuestionAnswer
Do we need DFS/BFS?❌ No. Shapes are irrelevant.
Are cells part of the same shape?❌ Not required to check.
What matters?✅ Longest consecutive #s in row or column
Your initial approach?✅ Partially valid — just needs column check

Let me know if you'd like a version in another language (C++/Java).

Can you compare this (my) code with your code:

import re

data = []

t = int(input())
data.append(t)

for i in range(t):

    nm = input() 
    data.append(nm)

    # nm is of the form "2 2", "3 4", "7 3", "11 6", "3 12", "12 13" etc.

    nm = nm.split()

    # Now nm contains a list of string representation of two integers.

    """ 
    # Multiline comment
    nm2 = []

    for i in nm:
        nm2 = int(i)
    """

    nm2 = [int(i) for i in nm]

    #print(nm2)

    for j in range(nm2[0]):
        row = input() # This is just dots and hashes
        data.append(row)



# Processing the input
# Producing indices of where tables are located in the input data.
# [[2, 4], [5, 12], [13, 31], ...] This is what will be produced
# i would contain [2, 4], then [5, 12], then [13, 31], so on and so forth

input_idx = []

for i in range(len(data)):
    if i == 0:
        # At the line 0: we are having the number representing count of input. We have to skip the first line only.
        continue 

    if re.match(r'^[0-9]', data[i]): 
        # If my line starts with a digit
        # ^ 	Starts with
        # [0-9] Returns a match for any digit between 0 and 9

        idx = []

        idx.append(i + 1)

        num_rows = data[i].split()[0]
        # Range is coming in the form of: num_rows num_cols
        # So we spliting on whitespace and extracting the zeroth element

        idx.append(i + 1 + int(num_rows))
        # i + 1: represents the start. So what would be our end: start + num_rows

        input_idx.append(idx)

# ~~~ Processing input ~~~ ends here

for i in input_idx:
    # [[2, 4], [5, 12], [13, 31], ...] This is what is coming as input_idx
    # i would contain [2, 4], then [5, 12], then [13, 31], so on and so forth

    pattern = data[i[0] : i[1]]

    num_hashes = []
    for j in pattern:
        num_hashes.append(j.count('#'))
    
    print(max(num_hashes))

Your code is logically valid and works for the provided problem — it produces correct output. However, let’s compare your code and my earlier version in terms of:


✅ 1. Correctness

AspectYour CodeMy Code
Counts # in rows✅ Yes✅ Yes
Counts # in columnsNo (Missing)Yes
Uses max streak❌ Only counts total per row✅ Counts consecutive #s only

🔴 Your code outputs the row with the most number of #, not the longest streak of consecutive #.
✅ My code counts the maximum consecutive #s (which matches the sample output).


✅ 2. Functionality Example

Let’s consider this input row:

txt
.#.###.##.
  • Your code: row.count('#') = 5 (correct total count)

  • Problem asks: What is the longest consecutive #s? → Here, it’s 3 (###)

So your code would return 5 as the max for this row, but the correct border is 3.

✅ My code uses a loop to track streaks → correct.


✅ 3. Column Streaks

  • Your code processes only rows.

  • It completely misses column-wise streaks like this:

text
#..# #..# #..#

→ This has a vertical streak of 3 #s, but your code would return 1 for each row.

✅ My code checks columns as well.


✅ 4. Structure / Complexity Comparison

AspectYour CodeMy Code
Code LengthLonger due to custom indexingShorter and more direct
ReadabilityMedium (manual tracking of ranges)Higher (uses functions, less manual parsing)
PreprocessingManual index trackingReads grid row-by-row
Regex usageFor identifying numeric linesNot needed
Column support❌ Missing✅ Present
Streak logic❌ Missing (uses total counts)✅ Tracks streaks

✅ 5. Time and Space Complexity

Let R = rows, C = columns, T = test cases

Your Code:

  • Time: O(T × R × C)

    • Because for each test case, you count #s in each row (O(C))

  • Space: Stores all input → O(T × R × C)

  • ✅ Efficient in row processing

  • ❌ Misses column and streak logic

My Code:

  • Time: O(T × R × C)

    • Processes both rows and columns fully

  • Space: O(R × C) per test case

  • ✅ Slightly more thorough but same order complexity


✅ Summary Table

FeatureYour CodeMy Code
Row-wise streaks❌ (total count)
Column-wise streaks
Matches problem statement?
Regex usage✅ (for parsing)
Code structureManualModular

✅ Final Verdict

  • Your code is clever in parsing input with regex and tracking blocks.

  • However, for the actual problem requirement (finding max consecutive #s in row or column), it's functionally incomplete.

  • My code is more aligned with the intended logic and gives the correct results as per sample outputs.


Would you like me to help you extend your code to support streaks and columns (instead of rewriting from scratch)?

Does this algo sounds complete:

1. I will track if I observe a number. And when I do, I would read it (let's say) "2 15" to take out the 2 and 15.
2. Then I will start a loop for the number of times I observed as the first number.
3. Then I will count the hashes in the those lines on which I will iterate in step 2.
4. I will maintain a max_border variable to keep track of the maximum number of hashes appearing continuously (in a border) I have seen so far.
5. Next, we will iterate through the columns and count the hashes in the same way as we did for the rows.
6. Just one clarity about step 5: we would need to load the entire dots-and-hashes matrix into a 2D array and then iterate through it column-wise to count maximum number of continuously appearing hashes.

Yes — your revised algorithm now sounds complete and correct for solving the "maximum border of black cell shapes" problem as intended. Let's break it down to confirm each step:


✅ Your Algorithm Breakdown

Step 1:

Track when a line like "2 15" appears, and extract 2 (rows) and 15 (columns).

  • ✔️ Correct — this lets you know how many lines to read next as the matrix.


Step 2:

Loop for the number of times as the row count.

  • ✔️ Correct — this helps read the full grid for the current test case.


Step 3:

Count the hashes (#) in each of those lines.

  • ⚠️ Slight correction: don't just count total #.

  • ✅ You should find the maximum streak of consecutive #s in the row — that's what the problem wants.

Example:
..###.#..# → has total 5 #, but maximum consecutive #s = 3
So you need to process each row using a loop like:

python
max_row_streak = 0 count = 0 for cell in row: if cell == '#': count += 1 max_row_streak = max(max_row_streak, count) else: count = 0

Step 4:

Maintain max_border to track the largest such streak.

  • ✔️ This is correct — initialize to 0 and update as needed.


Step 5:

Iterate column-wise and repeat the same process as step 3.

  • ✔️ This is essential and was missing in your earlier version, so great job adding it.


Step 6:

To iterate column-wise, store the matrix in a 2D array.

  • ✔️ Absolutely correct — to access columns, you need all rows first.

Example loop:

python
for col in range(num_cols): count = 0 for row in range(num_rows): if matrix[row][col] == '#': count += 1 max_border = max(max_border, count) else: count = 0

✅ Final Verdict

CriteriaStatus
Handles rows correctly?
Handles columns correctly?
Tracks max consecutive hashes?
Matrix storage for column scan?
Matches sample outputs?
Optimized and simple?

✅ Conclusion

Your updated algorithm is complete and well-reasoned. With careful implementation of row and column streak checks, it will solve the problem correctly and efficiently.

Let me know if you'd like a Python implementation based on this plan!

Tags: Technology,Algorithms,

Tuesday, May 13, 2025

Silicon Valley is ready for a makeover: Why time is running out for iPhone, Google Search and Facebook

All About Management

Silicon Valley makeover.

The Silicon Valley 'product companies' have acknowledged that the iPhone, Google Search, and Facebook might not exist in the next few years. If someone asks you about the common thread among the iPhone, Google Search, and Facebook, it’s that all three have changed the tech landscape, and have lasted far longer than the average product. The iPhone debuted in 2007, Google in 1998, and Facebook in 2004. All three tech giants and their core products still dominate the market, generate billions of dollars each year, and have made average consumers dependent on them in everyday life. But in recent weeks, the ongoing antitrust trials against Google and Meta have revealed that the success of the iPhone, Google Search, and Facebook may be numbered—and that each of these hit products, which once changed the course of tech, could soon be replaced. Silicon Valley makeover. Apple is still searching for the next big thing after the iPhone, and in recent years, the company has internally axed many projects, including the high-profile autonomous self-driving car. Truth be told, Facebook is no longer used by the cool, trendy younger demographic, the iPhone feels mature, the pace of innovation has slowed, and Google Search is in decline while AI chatbots like ChatGPT and Google’s own Gemini continue to grow. What might replace the iPhone remains unknown — a mixed-reality headset, a pair of smart glasses, or perhaps a touchscreen-less gadget. But it’s evident that Apple is preparing for a future where a new device could eventually replace the iPhone and the existing mobile ecosystem. Then again, whatever replaces the iPhone might not come from Apple at all — it could be built by a company we haven’t even heard of yet. Cue, a high-profile tech executive, like many others, sees artificial intelligence as the core of future devices that may eventually replace traditional smartphones like the iPhone. In fact, he calls AI a “huge technological shift” and suggests that such tectonic changes can give rise to new companies while making old ones irrelevant. Cue didn’t mean that the iPhone is going away right now — not at all. Apple is rumoured to be working on multiple iPhone models internally, including an ultra-slim iPhone expected to launch later this year, as well as a foldable iPhone and a model with an edge-to-edge display that could hit the market in the next three to four years. However, one cannot deny that the iPhone is built on ageing technology. While it may just be gaining popularity in developing markets like India, the iPhone has already peaked in mature markets such as the US and Europe. There’s no doubt that Apple still sells millions of iPhones each year, but growth has slowed — a clear sign that the iPhone era may be nearing its peak. Google vs AI search engines But the iPhone isn’t the only product headed for maturity; Google Search is another service we may not need to rely on in the future. The reason? The increasing adoption of OpenAI’s ChatGPT, Google Gemini, and Perplexity. Google pays Apple billions of dollars per year (to the tune of $20 billion) to be the default search engine on iPhones. It’s a win-win for both Apple and Google, with the latter gaining search volume and users. But when Cue recently made comments that AI search engines will eventually replace traditional search engines like Google, it caused Alphabet’s shares to drop more than 7 per cent, wiping off $200 billion from the company’s market value. Google Search is still the default way people search the Internet, powered by its proprietary ‘Knowledge Graph’ database — and there is currently no true alternative to it. But with OpenAI now aggressively adding and improving search capabilities in ChatGPT, which now has 400 million weekly users, the industry is beginning to see a shift toward AI chatbots for general search, potentially overtaking traditional search engines like Google in the near future. Market research firm Gartner estimated last year that search engine volume could drop by 25 per cent by 2026, as more users shift to AI-based tools for search. Google currently controls 90 per cent of the search market, and search engine optimisation (SEO) remains central to how websites boost their visibility on the platform. But many are now questioning whether Google is still as useful as it once was. Ads and algorithm tweaks have made search more complex, pushing some users away from Google and putting pressure on the company that made web search accessible to billions. Google, however, has denied that overall growth in search volume is declining. In a statement last week, the Mountain View, California-based company said it continues “to see overall query growth in Search,” including “an increase in total queries coming from Apple’s devices and platforms.” The statement appeared to be an effort to protect its lucrative advertising business, which brings billions of dollars annually. Meta (formerly Facebook) is also at a crossroads due to the declining popularity of Facebook, the social network created by Mark Zuckerberg, which is now facing an external crisis fuelled by the global rise of TikTok and Meta’s own Instagram. “The amount that people are sharing with friends on Facebook, especially, has been declining,” Zuckerberg said in April during an antitrust lawsuit brought by the Federal Trade Commission. “Even the amount of new friends that people add … I think has been declining. But I don’t know the exact numbers.” The perception that young users still use Facebook no longer exists — a reality that Mark Zuckerberg himself has acknowledged. But the question remains: if not Facebook, where are users flocking to? The answer is TikTok and Instagram. Ironically, TikTok is not a traditional social network; it’s an app, which has taken the world by storm, which hosts short-form user videos and is owned by the Chinese company ByteDance. Facebook is in the past, and while Zuckerberg did try to create a new type of social network in the form of the Metaverse, it never had the same impact that Facebook did in the early 2010s. Next big players All three tech giants, Apple, Google, and Meta, are still figuring out what will replace their star products. The iPhone remains the most popular smartphone on the market, and there is no true alternative to it. Google Search continues to be a lifeline for billions when it comes to searching for information on the internet. While Facebook is in decline, the concept of social networks has evolved over the years, and it’s unclear if the world even needs another social network anymore. The shift is already happening, as OpenAI and Nvidia are becoming the next big players in the tech space, potentially changing the tech landscape in the same way Apple, Google, and Meta once did. All three of these companies are now on the radar of regulators, facing accusations of malpractice and questionable business models that have stifled smaller players. But as technology constantly evolves and consumer behaviour shifts, with emerging technologies like AI becoming the frontrunners, Silicon Valley is ready for a makeover. Ref
Tags: Technology,Management,Investment,

Layoffs sweep tech industry, more than 50,000 lose their jobs so far in 2025 (Reported in May)

To See All Articles About Layoffs: Layoffs Reports
Layoffs sweep tech industry, more than 50,000 lose their jobs so far in 2025

Layoffs have swept through the tech sector during the first few months of 2025 — with more than 50,000 people losing their jobs.

According to data from layoffs.fyi, more than 53,100 workers from 126 tech companies have been affected during the first five months of the year. Intel led the list with recent reports suggesting that company planned to fire around 20% of its workforce in a matter of days. The announcement came months after the struggling chipmaker laid off around 15,000 people. Intel had later denied the claims — contending that layoffs would begin in the second quarter of 2025 and continue across several months.

Meanwhile European battery manufacturer Northvolt fired around half its staff (2800 people) at the end of March — weeks after filing for bankruptcy. The Swedish company had previously announced plans to fire around 1600 employees in September last year.

Mark Zuckerberg-led Meta featured prominently on the list, with the layoff tracker website indicating that around 4000 employees had lost their jobs since 2025 began.

Google had also made an unspecified number of cuts in its various divisions during the month of February — offering buyouts to many US-based employees. Reports in mid-April indicated that the company had laid off hundreds of employees within its platforms and devices unit in a bid to streamline jobs and become more ‘nimble’. The layoffs in April came in addition to the voluntary exit program that began in January.

Ref

Saturday, May 10, 2025

Discussion about Favourite Singer (Problem from HackerEarth)

To See All Articles About Technology: Index of Lessons in Technology
Try out the problem here

Problem

Bob has a playlist of N songs, each song has a singer associated with it (denoted by an integer)

Favourite singer of Bob is the one whose songs are the most on the playlist

Count the number of Favourite Singers of Bob

Input Format 

The first line contains an integer N, denoting the number of songs in Bob's playlist.

The following input contains N integers, ith integer denoting the singer of the ith song.

Output Format

Output a single integer, the number of favourite singers of Bob

Note: Use 64 bit data type

Constraints
N <= 2*10^5
a[i] <= 10^15

Sample Input
5
1 1 2 2 4

Sample Output
2

Let's break this down and then provide a clear and efficient solution.


Problem Summary

  • You're given a list of integers representing singers for each song in Bob's playlist.

  • A favourite singer is one who has the maximum number of songs in the playlist.

  • You need to count how many singers have that maximum number of songs.


Approach

  1. Use a dictionary (or collections.Counter) to count how many songs each singer has.

  2. Find the maximum song count from this dictionary.

  3. Count how many singers have this maximum count.


Python Code

python
def count_favourite_singers(n, singers): from collections import defaultdict singer_count = defaultdict(int) # Step 1: Count songs for each singer for singer in singers: singer_count[singer] += 1 # Step 2: Find maximum count max_count = max(singer_count.values()) # Step 3: Count how many singers have that max count favourite_count = sum(1 for count in singer_count.values() if count == max_count) return favourite_count

Input/Output Handling

python
# Read input n = int(input()) singers = list(map(int, input().split())) # Compute and print the result print(count_favourite_singers(n, singers))

Time and Space Complexity

  • Time Complexity: O(n) – one pass to count, one pass to find max and count again.

  • Space Complexity: O(k) – where k is the number of unique singers.


Would you like a C++ or Java version too, since this might be used in a competitive programming context?




Can you do a comparison of your code with this code:

from collections import Counter

N = int(input())
l = [int(i) for i in input().split()]

most_common = Counter(l).most_common()

favorite_count = most_common[0][1]

m = [i for i in most_common if i[1] == favorite_count]

print(len(m))

Absolutely — let’s compare your code using Counter.most_common() with my code using defaultdict.


🔍 Code Comparison: Side by Side

Your Code

python
from collections import Counter N = int(input()) l = [int(i) for i in input().split()] most_common = Counter(l).most_common() # List of (singer, count) sorted descending favorite_count = most_common[0][1] # Get the max count m = [i for i in most_common if i[1] == favorite_count] # Filter singers with max count print(len(m)) # Count them

My Code

python
from collections import defaultdict def count_favourite_singers(n, singers): singer_count = defaultdict(int) for singer in singers: singer_count[singer] += 1 max_count = max(singer_count.values()) favourite_count = sum(1 for count in singer_count.values() if count == max_count) return favourite_count # Input handling n = int(input()) singers = list(map(int, input().split())) print(count_favourite_singers(n, singers))

✅ Key Differences

FeatureYour Code (Counter)My Code (defaultdict)
LibraryUses Counter.most_common()Uses manual counting with defaultdict
Sorting StepYes.most_common() returns a sorted listNo – avoids sorting
Time ComplexityO(n log n) due to sortingO(n) — more efficient
Space ComplexityO(k) for storing countsO(k) as well
ReadabilityShort and conciseSlightly more verbose, but very clear
FlexibilityLess general (tied to sorting order)More general and customizable

⏱️ Efficiency Note

The biggest difference is:

  • Counter.most_common() sorts the entire count dictionary, which takes O(k log k) time, where k is the number of unique singers.

  • My version finds the max and counts how many times it occurs in O(k) time without sorting.

In large datasets (e.g. 10⁶ songs, 10⁵ singers), my version is faster because it avoids sorting altogether.


🏁 Final Verdict

Use CaseRecommended Code
Small input (e.g. coding contest)Your code (short & clean)
Large input / time-sensitiveMy code (no sort, O(n))
Readability / beginner-friendlyMy code (step-by-step)

Would you like me to rewrite your version to avoid sorting but keep it just as concise?

Tags: Technology,Algorithms,

Thursday, May 8, 2025

Raku-yaki: The Art of the Essential


All Book Summaries

Raku-yaki: Embracing the Art of Living Intensely

Life is not merely about survival—it’s about living. This truth, as visceral and raw as the Japanese art of Raku-yaki, reminds us that existence becomes extraordinary when we embrace its cracks, risks, and fleeting beauty. Much like the pottery forged in flames and cooled abruptly to create unpredictable patterns, living intensely demands courage, authenticity, and a willingness to endure the heat of vulnerability.

The Divide Between Surviving and Thriving

To survive is to exist in grayscale: routines blur, passions dim, and days slip by unchallenged. But to live is to awaken to color—to feel the burn of a passionate kiss, the ache of unbridled joy, and the exhilaration of chasing growth. Living requires bravery. It asks us to reject complacency, confront self-imposed limitations, and defy the suffocating weight of others’ expectations. Too often, we imprison ourselves in fantasies of who we “should” be, grafting borrowed dreams onto our souls until we forget our own desires.

The Price (and Power) of Authenticity

Living intensely isn’t about perfection—it’s about coherence. It means shedding facades and refusing to curate a life that pleases others. Your quirks, your flaws, your idiosyncrasies? They’re not weaknesses; they’re your signature. Hiding them to fit into a mold is a disservice to the world. As the text reminds us, “You are a compendium of virtues waiting to be activated.” Why trade your authenticity for a script written by someone else’s hand?

Yes, living boldly invites risk. Hearts break, plans unravel, and failures sting. But our bodies and minds are resilient, wired to heal and rebuild. Avoiding pain might keep us safe, but it also cages us in stagnation. Growth demands scars.

A Lesson from the Dolomites

Perspective shapes reality. The author’s story of arriving in the Dolomites under cover of darkness resonates deeply. In the absence of light, the mountains seemed ordinary—a shadow of the Pyrenees. But dawn revealed their majesty: crimson peaks blazing against a waking sky. The lesson? What we cannot see still exists. Our potential, like those mountains, remains hidden until we choose to illuminate it.

Dare to Leap

Living intensely isn’t reckless abandon—it’s intentional defiance. It’s messy hair, impulsive road trips, and loving fiercely despite the risk of loss. Surviving asks, “What’s the safest path?” Living demands, “What sets my soul on fire?”

So, let your hair down. Dive into the sea. Kiss like it’s your last chance. The cracks and imperfections? They’re proof you’ve lived. As Raku-yaki teaches us, beauty lies in the unpredictable. Embrace the heat, the breaks, and the repair. Your life is a masterpiece in progress—don’t settle for a sketch.

Illuminate your perspective. Live intensely. 🌟



The phrase “art of the essential” in this context speaks to the philosophy of distilling life down to its most authentic, meaningful, and purposeful elements. It’s about stripping away the superficial, the unnecessary, and the externally imposed expectations to focus on what truly matters: living deeply, courageously, and in alignment with your core self.

Breaking Down the Metaphor:

The term draws inspiration from Raku-yaki, a Japanese pottery technique known for its simplicity, imperfection, and embrace of the unpredictable. Raku ceramics are created through a process of intense fire, rapid cooling, and acceptance of cracks and irregularities. The result is a piece that embodies wabi-sabi—the beauty of impermanence and imperfection. Similarly, the “art of the essential” in life involves:

  1. Embracing Imperfection:
    Just as Raku-yaki celebrates cracks and asymmetry, living authentically means accepting vulnerability, risks, and even pain as part of growth. It rejects the pursuit of a flawless, curated existence in favor of raw, unfiltered experiences.

  2. Focusing on What Matters:
    The “essential” refers to the core truths of existence: love, passion, growth, and connection. It’s about shedding societal pressures, material distractions, and self-imposed fantasies to prioritize what nourishes the soul.

  3. Courage Over Comfort:
    Survival is safe; living is daring. The “art” lies in choosing intensity over inertia—whether that means pursuing a dream, loving openly, or confronting fears. It’s about crafting a life that reflects your values, not societal scripts.


Why “Essential”?

The “essential” contrasts with the inessential—the noise that drowns out our true selves:

  • External pressures: Others’ expectations, social media comparisons, or the chase for status.

  • Internalized fears: Self-doubt, complacency, or avoiding pain at the cost of growth.

  • Superficial goals: Chasing wealth, accolades, or approval without asking, “Does this align with who I am?”

The “art” is in discerning what’s vital and having the courage to let go of the rest. Like the author’s story of the Dolomites, the “essential” is already present—it’s obscured only by our limited perspective. When we “light up” our lives (through self-awareness, risk, or vulnerability), we gain clarity.


Living the Art of the Essential:

To practice this philosophy is to:

  • Activate your virtues: Stop hiding your quirks or passions to fit in.

  • Welcome adversity: See challenges as opportunities to grow stronger, not threats to avoid.

  • Repair, don’t retreat: Trust your capacity to heal from setbacks, just as Raku pottery is shaped by fire and repair.

In the end, the “art of the essential” is a rebellion against a life half-lived. It’s choosing to leap into the unknown, messy and imperfect, knowing that this—not safety or control—is where meaning thrives.

As the blog post urges: Don’t settle for surviving when you were born to blaze. 🔥

Ref: Ch 1 from the book (Kintsugi by Tomas Navarro) Tags: Book Summary,Emotional Intelligence,

Tuesday, May 6, 2025

What Really Drives Success (Outliers by Malcolm Gladwell)


All Book Summaries

Outliers and the Concept of Capitalization: A Look at What Really Drives Success

Based on a lecture by Malcolm Gladwell at Microsoft Research, drawing from his book Outliers.

Each year, Microsoft Research hosts influential speakers from around the world, sharing insights on technology, science, and more. In one such lecture, acclaimed author Malcolm Gladwell discussed a key concept from his book Outliers: capitalization.

Outliers explores the question of what differentiates those who achieve exceptional success from others. Gladwell argues that our understanding of success is often incomplete, focusing too much on individual merit while overlooking crucial external factors.

What is Capitalization?

Gladwell introduces the concept of "capitalization," a term explored by psychologist James Flynn (known for the Flynn effect). Capitalization refers to the rate at which a society utilizes its potential – essentially, the percentage of people capable of doing something who actually end up doing it. It measures how efficiently a group makes use of the talent within it.

Using the example of Michael Oher from Michael Lewis's book The Blind Side, Gladwell highlights how potential can be vast in a community (like East Memphis), yet the capitalization rate for something seemingly valued like athletic ability can be shockingly low (only 1 in 6 kids with college athletic scholarships actually attend college). This suggests that even in areas we think we prioritize, we may be significantly undercapitalizing on human potential.

Constraints on Capitalization

Gladwell identifies several key constraints that limit this capitalization rate:

Poverty

Poverty is an obvious but often underestimated constraint. The Terman study, which tracked genius-level IQ children in California for 50 years, revealed that even extraordinary innate ability was not enough to guarantee success. The genius children who failed to reach their potential were overwhelmingly those from impoverished backgrounds, lacking the cultural and institutional support found in wealthier households. This suggests poverty can significantly reduce capitalization, even for those with immense talent.

Stupidity (Arbitrary Rules)

This constraint refers to how arbitrary rules and systems we create can inadvertently limit who succeeds. Gladwell uses the striking example of birth dates in elite sports like hockey and soccer. Because eligibility cutoffs are often early in the year (like January 1st), children born in the earlier months have a maturity advantage over those born later in the same calendar year. When talent identification and intensive coaching happen at a young age, these older, more physically developed kids are disproportionately selected. This creates a self-fulfilling prophecy where the oldest kids become the "best," not necessarily the most inherently talented.

This "stupidity constraint" means that a significant portion of potential talent born later in the year is left untapped. Gladwell suggests a simple solution: creating parallel leagues based on birth month to allow talent to develop independently before later selection. The same pattern is observed in education, where older children in a classroom cohort tend to perform better and are more likely to attend college, highlighting how the arbitrary structure of the school year limits the capitalization of potential in younger students.

Attitude

Gladwell also explores how cultural attitudes can act as a constraint. He points to the significant difference in math performance between Asian and Western students. While many explanations are offered, Gladwell suggests that a key factor is attitude towards effort. Asian cultures, he argues, often have a deeply ingrained attitude that success in math is a function of effort and persistence – that problems are solvable if you work hard enough. This contrasts with a potential Western attitude that mathematical ability is more innate.

This difference in attitude, potentially stemming from historical agricultural practices like intensive rice farming, leads to a higher capitalization rate of mathematical ability in cultures that value sustained effort. It suggests that the focus for improving math education in the West might need to shift from curriculum or teaching methods to fostering a more resilient attitude towards challenging problems.

The Importance of Understanding Capitalization

Understanding these constraints is crucial because it shifts our perspective on success. Instead of solely attributing differences in achievement to innate ability, we see how factors like poverty, arbitrary rules, and cultural attitudes play a significant role in determining who gets to capitalize on their potential.

Using the dominance of Kenyan and Ethiopian runners in long-distance running as an example, Gladwell argues that their success is not necessarily due to unique genetics but to a vastly higher capitalization rate. Millions of young boys in Kenya run significant distances daily, meaning a much larger percentage of potential distance runners are identified and developed compared to countries where running is less embedded in the culture.

By recognizing and addressing these constraints, societies can do a much better job of maximizing human potential. It means not giving up on groups that are underrepresented in certain fields and actively working to remove the barriers imposed by systemic issues and ingrained attitudes. Thinking from the perspective of capitalization empowers us to make profound differences in how well individuals and groups turn out, by focusing on changing the conditions that limit opportunity.

Tags: Book Summary,

Sunday, May 4, 2025

'Building a life' by Howard Stevenson (Bonus video inside)


All Book Summaries

Howard Stevenson’s Unfiltered Guide to Success, Failure, and the Art of Living

“I failed once at retirement, three times at dying, and 71 times at making the Forbes list. I’m used to failure. Let’s talk about building a life.”

Howard Stevenson, legendary Harvard Business School professor, serial entrepreneur, and survivor of cardiac arrest (and life’s many curveballs), doesn’t sugarcoat success. In a recent talk, he dismantled clichés about achievement, legacy, and happiness, offering hard-won wisdom from a life spent juggling boardrooms, parenting, and near-death experiences. Here’s his no-BS playbook for redefining success—and why you’ll want to steal his “quiz” at the end.


Success Isn’t a Trophy—It’s a Moving Target

Stevenson opens with a brutal truth: “No one is successful until they die.” Society’s metrics—money, power, accolades—are fleeting. True success, he argues, is a four-dimensional puzzle:

  1. Achievement: Crushing goals (but not at the cost of your soul).

  2. Significance: Impacting people who matter (without becoming a martyr).

  3. Happiness: Finding joy now, not in some distant “someday.”

  4. Legacy: Building something that outlives you (without micromanaging your great-grandkids).

The catch? These dimensions often clash. “You can’t maximize all four. Life’s a juggling act—drop one ball to keep others in the air.”


The Four Myths That Derail Us

Stevenson eviscerates common success advice:

  • “Follow your passion”: *“Tell that to the 50-year-old ‘actor’ still couch-surfing in LA.”*

  • “Have it all”: “You’re not Dr. Ruth in the bedroom and Elon Musk in the boardroom. Pick your battles.”

  • “Balance”: “Forget balance. Juggling isn’t about symmetry—it’s about not letting the glass balls shatter.”

  • “Legacy planning”: *“Legacy isn’t a 1,000-year trust fund. It’s the ripples you create, not the splashes.”*


The “Enough” Mindset: Stevenson’s Secret Weapon

The antidote to burnout? Define enough.

  • Money: “My richest friend would pay $250K to get off the Forbes list. I track what I’ve given away—it keeps me sane.”

  • Achievement: “If you’re still chasing ‘more’ at 72, you’ve missed the point.”

  • Time: “Live forward. You can’t change the past, but you can stop obsessing over it.”


Howard’s Gift: The Quiz You Can’t Cheat On

Stevenson ends with a gut-check—a quiz he’s used to mentor CEOs, parents, and himself. Keep this honest, or don’t bother:

  1. Who are you?
    “Not your job title. What values would your obituary highlight?”

  2. What satisfactions are you missing?
    “Achievement addicts: When’s the last time you prioritized joy over a promotion?”

  3. Who’s on your “board of directors”?
    “Mentors are overrated. Build a personal board—one for finance, one for parenting, one for sanity.”

  4. Are you cheating at solitaire?
    “If you’re lying to yourself about your choices, the game’s already over.”

  5. What’s your “ripple” metric?
    “Forget the splash. What small act today will outlive you?”


Final Lesson: Live Forward

Stevenson’s parting shot: “Life’s risky. Control what you can—like taking your damn meds—and let go of the rest. And if you’re still comparing yourself to Bill Gates, get therapy.”

Your move: Take the quiz. Then ask: “Is the juice worth the squeeze?”


Howard Stevenson’s book, Howard’s Gift (written after surviving cardiac arrest), is a masterclass in unflinching self-assessment. Available wherever brutally honest advice is sold.

Tags: Book Summary,