Fears

I have a burning desire to forge my own path in life; be my own person, live my own vision. The day for me to make some tough choices is approaching – I’ll need to get out of a comfortable job, and take a leap of faith. In some ways, I’m terrified of the future. I’m afraid that I’ll end up with no money, outside of the United States, with no options in life; that my skills will fade, and I will be unhirable; that I’ll work my heart out trying to build a business, fail, give up 15 years later, and have to work until I’m 70 to barely earn a retirement.

Every day on my way to work, I walk 30 minutes straight through the dirtiest part of San Francisco, through the Tenderloin (the ghetto), and see utter defeat: people scraping the bottom of the barrel, with nowhere to go, no path out. Homelessness, drug abuse, dirt, stench – hopelessness. The consequences of failure are very real. The world is more competitive than ever before, and the safety that modern technology has brought is a fleeting illusion, if you step outside of the beaten path.

I have no one to rely on but myself, and so I have to be able to rely on myself. I take the skills that I’m trying to acquire in this phase of my life very seriously, which is why I’ve decided to work so hard to understand and improve my thinking. To win, you have to truly be the best – outsmart and outwork everyone else, learn to use every aspect of your mind.

 

 

Problem solving stages

Thinking better is about knowing how to think.

Knowing how to do anything involves knowing what situations might occur, and what to do in those situations.

Problem solving is one of the most common patterns in thinking. I believe that solving a problem involves a set of recurring stages, and each stage has a recurring set of thought patterns that help overcome that stage.

Here is one possible break down of the stages of a problem:

  1. Understanding the problem
  2. Looking for a simple solution
  3. Optimizing the solution
  4. Proving that the final solution is correct and optimal

Sometimes, steps 2-4 will force returning to step 1. Perhaps for simple problems, 2 and 3 are one step, and perhaps for complex problems, there is no optimal solution, and step 3 produces an array of solutions with tradeoffs. Perhaps it’s impossible to prove that the solution is correct and optimal; perhaps there is no correct solution, but a somewhat correct one exists.

Regardless, I often find myself in the middle of a “stage” of a problem, and these stages reoccur between unrelated problems. I believe there is a lot to say about what each stage is, and what some tricks are to be better at it, and how to know you’ve completed a stage. Practicing those tricks, I believe, is an important key to being a better thinker; further, I think the process for improving in them is very similar to the process of improving at body skills, like guitar or handstands. The underlying neural process would be similar – strengthening and accelerating neural pathways through repetition.

This model came about because I noticed that it’s easy for me to keep going on something once I’ve started. For instance, beginning to write is much harder than continuing to write – there’s a lot more pressure for perfection. Mark Twain said: “The secret of getting ahead is getting started. The secret of getting started is breaking your complex, overwhelming tasks into small manageable tasks, then starting on the first one”.

So one trick that came to mind, that I think is worth practicing at the second stage of thinking, is – try wrong solutions, or try naive solutions, or try dumb solutions. Having some solutions helps understand the problem space – as you see why they don’t work – which feeds into the understanding of the problem.

I like how in thinking through the problem of “how to think better”. I tried a dumb solution – “try dumb solutions”. That forced me to consider why that may be a reasonable tactic to try, and in explaining it, I proposed that it helps understand the problem space, and noticed that understanding can feed into having more solutions. So I’ve arrived at more than one tool by looking at a simple tool.

I want to have a separate post where I explore the stages of problem solving as I currently understand them, and ongoing posts about how tricks involved in each one, and how to work on them. Here’s a summary of the ones I found in writing out this higher-level post:

  1. Understanding the problem
    1. Understand what the entities of the problem are
    2. Understand how they relate to each other (“understand the problem space”)
    3. Break down into small chunks
  2. Looking for a simple solution
    1. Try wrong solutions
    2. Try dumb/naive solutions (brute force)

 

 

Reflection – first stab

Today, I tried to simultaneously solve a problem I’ve never encountered before, and listen in on my thought process, and disassemble it.

I found that I don’t have a good enough notation to write down the thought process. Writing down the whole story waters down the conclusions.

I thought that the solution to any problem is a tree, or a graph. Perhaps I should try drawing these maps, and being more visual in my approach: recognizing which paths I did not see, and which paths I chose mistakenly.

Perhaps practicing drawing out these maps on paper, I can get good at drawing them out in my head. That way, encountering a new problem, I’ll immediately try to apply that skill – drawing out the problem space, and then having a map for navigating my solution that I can reference.

Probability – first stab

I have a book called “Fifty challenging problems in probability”, and I started with the first one today, and I reflected on what my mind was doing trying to solve it. I don’t know probability at all, so this is a great chance to reflect on fundamental thought processes without being tainted by knowing how to solve a class of problems.

Here’s the problem:

A drawer contains red socks and black socks. When two socks are drawn at random, the probability that both are red is 1/2. a) How small can the number of socks in the drawer be? b) How small if the number of black socks is even?

I tried several approaches, and only my last one worked; I’ll go through these, and reflect on why I didn’t immediately arrive at the correct one. I’ll put pointers into significant parts of the thought process where I made a mistake.

First stab

I tried coming up with an obviously wrong solution, and improving it.

How about there are an equal number of socks in the drawer? Like 1 red, 1 black (A). Then the probability of pulling out a red twice is (1/2 * 1/2) = 1/4. That’s broken, we need more reds.

How about there are 3 socks, and 2 are red? What’s the probability of choosing 2 red? I reasoned that it’s (2/3 * 2/3) = 4/9, though I wasn’t certain that they’d multiply.

I spent quite a bit of time proving this to myself (bottom of the post).

So the equation becomes (p^2 = 1/2), where p is the probability of choosing red, where p=(R/N), as I thought intuitively. I know that there is no integer R and N that satisfy that equation from high school (B). So… there is no solution?

Figuring out why my solution isn’t working

One thing I did was scatter for tools. I know there is also conditional probability, so maybe somehow I’m missing some subtlety in my reasoning, and the probabilities don’t multiply (C).

I tried thinking of other representations, which turned out to be equivalent to my original solution (D). I thought of some binary encoding schemes. For instance, (1 1 1 0 0) could represent 3 red socks and 2 black socks in the drawer. How do I represent which socks were selected? (0 0 1 0 1) would represent sock 3 and 5 being chosen. The number of possible selections is the number of possible vectors with 2 ones; for a given distribution of reds and blacks, the probability of 2 red socks being chosen would be the number of vectors with 2 ones located on the left side of the vector, before the reds end.

This turned out to also lead to the same answer I got before.

Final solution

I had been questioning this procedure of pulling out a sock, putting it back, and pulling out a sock again.

Perhaps we don’t put the sock back? I didn’t want to deal with figuring out this totally different problem, with a completely different enumeration. Yet I was curious about how that problem would work (E).

So instead of having R red socks the second time, I have (R-1) socks. And instead of choosing from (N) socks, I choose from (N-1) socks. The equation becomes:

(R * (R-1))/(N * (N-1)) = 1/2

I don’t know how to solve it! It’s 1 equation, 2 variables. But I try to play around with how it changes, because maybe there’s some obvious pattern (F). I try a random pair of reasonably high numbers: 3, 4

(3 * (3 – 1))/(4 * (4 – 1)) = (3 * 2)/(4 * 3) = 6/12 = 1/2… oh fuck.

 

Analysis/Lessons

(A) I made a critical assumption here, and wasn’t aware of it, because I didn’t check for full understanding of the problem immediately.

(B) I got lucky to know it, but that just goes to show that part of solving problems is knowing a lot of stuff.

(C) Having too many tools can be distracting, and induce anxiety. It’s best to think from first principles, rather than grasp for tools.

(D) I should have been 100% confident in my original solution. Second-guessing myself was a waste of time.

(E) Curiosity really saved me here.

(F) Again, curiosity worked out well here, trying to “feel” the problem before attacking it with overly powerful tools.

Why didn’t I arrive at the correct solution immediately? Had I accidentally been on the other side of the assumption tree, I would have. But fundamentally, I was at first not aware of an assumption I made, which is a critical error in rigorous reasoning.

So that’s my main lesson from this exercise: understand the problem statement, resolve assumptions, or be aware of exploring assumption branches.

Secondary lesson: curiosity can help get out of dire situations of misunderstanding.

Tertiary lesson: I was thinking through this problem as I walked around, with plenty of space. I thought about lots of other things, though I did want to solve this problem. I noticed that I need more focus to sustain my mind thinking about the problem, and at the same time reflect on what my mind is doing. So this is the tool of improving thinking: sustaining a double stream of consciousness – one to solve, one to rip the solving apart. And it’s essential to be able to recall the solution process; I found that I had trouble recollecting the order in which I thought of solutions, because my solution wasn’t very structured. I will try to avoid that, so that recall is easier moving forward.

Proofs

When choosing two socks, probabilities multiply

If the socks are ordered 1 through N, and the reds are the first R socks, I can represent “choosing 1 sock” as a list of numbers 1 through N, with 1 of the numbers circled out. Having this language for the 1-sock event, 2 socks can be represented as 2 lists; they can be placed as a table, and every element in the table would represent a pair of socks. In this table, the red socks are in the upper left, and form a square. Its area is R*R, and the total sock area is N*N, so the chance of choosing 2 red socks is (R*R)/(N*N)

I found it fascinating that 2 events like this have this geometric, tabular representation, and probability connects with geometry that way.

Chunking

I was practicing guitar – a piece I’ve played thousands of times through over 4 years of near-daily practice, and have not yet mastered: Cliffs of Dover, by Eric Johnson.

I was going through it with the mindfulness of my mental laziness – tendency to avoid working the most on the things I know least about – and noticed a particular section that I’ve never broken down to its last detail.

To give context, I have played most of the tricky part of the piece in isolation hundreds of times, from snail-level slow, to 32 times as fast, experimented with technique, every possible finger placement and transition, different ways of holding the pick, etc – I’m obsessed with perfecting this song.

But this, I’ve known for years, was my weakest part of the song, it came least naturally to me, and feels most tricky, though it has a very ancillary place in the song – it’s not the star, it’s not marvelously beautiful – more like a very impressive space-filler.

And I realized that it was also my least practiced part of the song. So my lesson was: always make sure to be very aware of what the weakest, least understood area of thought is, and focus most on decomposing it.

The awkwardness of it comes from the fact that it’s supposed to flow continuously and very quickly, but it has a very jagged, non-continuous shape on the guitar neck, and you need to jump around a lot. But the split-second stopping points of the melody are never during the finger jump.

And so I found that I always practiced the melodies between the jumps, as practicing it with the jump was very awkward.

And that was my biggest mistake. What I should have done instead – was isolate the jumps, and repeat them 1000 times.

So I started to isolate it, and repeat it – and there are 3-4 consecutive awkward jumps in a row, so I repeated those. And an hour later, I found that I had committed the same mistake as before – of not focusing on my weakest area the most.

I found that between 2 jumps, there’s a section without a jump, which I really suck at, and that is what actually makes the jump hard. And I was further able to isolate it to merely a 3 note chunk – that repeats a few times. Working at this 3-4 note level, I was able to really understand the mechanics of making all these jumps possible, and devise an optimal fingering.

I’ve played that part for years, and I don’t think I was ever aware of how poorly I understand how to make that section happen, while being painfully aware of every detail about every other part.

Breaking it down to the smallest conceivable level, finding the atom of the problem, allowed me to understand it, and find an efficient solution.

Lesson learned: break down a problem to its smallest components to understand it in depth; isolate unknowns by trying to break the problem down further and further. Always ask “what’s still not known”, and strive to find the smallest knowable thing. Sometimes finding a bigger thing can fool you into thinking you’ve attained understanding. Never be satisfied.

Triggers

One thing I’ve experimented with is switching intentions.

For instance, I can “become” shy, outgoing, focused, impenetrable, or sensitive, or relentless, or uncertain, positive, regretful, or even non-feeling intentions – be as a rock, or be like water. I can project these essences of feeling, and I have a certain degree of conscious control over it: to a degree, I can choose an intention, and my body language, posture, and thinking patterns align around it without further effort. It’s like acting… Except the key thing that I’ve thought about using it for is for the thinking differently, or thinking in a certain way.

It seems as though if I learn to best leverage this type of acting, I can skew my thought process towards generating certain kinds of conclusions, and maybe I can even know which sorts of errors I’m more prone to in various mental states. I could imagine precise thought to benefit from a cold rational intention, and sensitive personal interaction to benefit from thought patterns that aren’t so demanding and exact, that allow for much more error.

I was thinking about this on my walk today. When I take walks, I like to listen to music, and work on my vision – I’ve been doing it for years, and I’ve gotten some results, and I just like to believe that vision can be improved with work; I try to allow my eyes to relax, and focus more clearly. I found that switching around my intentions allowed me to change what I could do with my eye focus – certain intentions allowed for more clarity. More serene and thoughtful and reflective modes, but also more focused and confident modes. This didn’t change my vision by itself; I still had to do the same mental work I normally do, but different intentions changed the characteristics of how difficult it was to focus on smaller things.

As I was trying to channel memories from different times in my life, playing around with my intentions, I noticed that certain songs – that I listened to a lot during certain periods in life – were like a gateway into an intention, they allowed me to channel experiences and thoughts attached to a part of my life, and made for a very powerful and effortless fusing with that character.

I found that I can channel other sorts of patterns of thought, ones that I don’t have any recurring pattern (like a song listened to on repeat) attached to. But I found it much harder.

And so I thought of this as a tool to compartmentalize modes of thinking – attach them to a repeated trigger, like a song. Have a ritual, a mantra, whatever – any repetitive action that through Hebbian plasticity will trigger a mental state – do it every time I need to summon a character, and then work hard to sustain that focus and attach it to the trigger. Suddenly, I understood why rituals and traditions and other similar patterns of behavior have been so popular around the world for so long.

Change

I’ve been thinking about ways to excel at thinking, inspired by thinking about the technical interview process for software engineers. Interviews famously focus on skills that are different from everyday work, but I don’t want to have to study for them by learning algorithms and carefully practicing writing them out on paper. I don’t want to “crack the coding interview”, though I’ve done that in the past with great success: you can really become quite good at being meticulous and error-free on this one task, with practice.

Instead, I want to have superpowers. I want my brain to be able to produce those optimal algorithms flawlessly, with full confidence, without taking time out to prepare for an interview.

I want the fundamental way my brain works to produce error-free thoughts, and give it a notation to naturally express itself with laser-like precision (i.e., write out code as naturally as thoughts).

So instead of focusing on “how do I solve algorithms questions?”, I’m going to focus on “what are the components of thinking, and how do I perfect each one?”.

What are the components of thinking? I hope to get more and more insight and depth around this question. I have something to start with, however: focus, creativity, thoroughness, seeing blindspots and edge cases, understanding assumptions, logical and critical thinking, systems thinking, humility, sensitivity, respect.

I want to think about how to improve each of those components. And I want to have standardized loops to measure these things for myself. I won’t be able to be scientific, but I’ll try my best to be honest with myself in evaluating exactly why the routines I choose don’t go perfectly smoothly, and figure out what sort of improvement in my way of thinking could have remedied it.

One reason I wish to improve my thinking in this way, is that I believe that applying this sort of thinking the best you can, every day – leads to a dramatic difference in how you grow, who you become, over time; I believe that through every action, the path of someone who puts this much care into every aspect of life – shines through; and I believe that that is the best way to be human, the best way to connect to other people, the best way to be a source of positive change.

I’m going to apply this to: creative puzzle solving (such as algorithms), learning pieces of music, learning Spanish, training to do a handstand, improving dancing in tango and zouk, improving my posture, a hobby project app/game that I’m working on, and my everyday work, which involves time-sensitive operations that require great care, prioritizing, scheduling, diagnosing, thinking creatively, teamwork, planning, and executing plans. I’m going to do my best to use these time slots as opportunities to watch my mind think, and understand what about that thinking lies outside of my framework for optimal thinking.

When I say “standard loops”, I mean something quite subtle. For instance, when writing out algorithms, one thing to keep track of is how good the algorithm is; similar, when practicing music, a thing to look at is how well the melody comes out. For the sake of this work, I’m not going to care about those aspects of practice at all. Instead, I’m going to care about what my mind is doing while it’s trying to come up with an algorithm and write it down, and retroactively look for what went wrong. I’m going to look at the thinking process that creates the performance process, not the performance process itself, and that will be the “standard loop”. Which is why I put it in quotes; there’s no standard path; I’d solve the same problem differently on a different day, though I hope to isolate the aspects of thinking, and practice them individually, similar to how I may practice a dance move 1000 times.

Some things that make sense to measure: how well did I understand a problem after first encountering it, how thoroughly did I explore solutions, was the solution I arrived at optimal, did I make any trivial mistakes as I went through it, did I panic or get lost or discouraged or distracted, did I lose sight of my goals, did I focus on the wrong aspects of the problem, was my solution perfect?

This will always be pushing the front in how I think, and perhaps some “improvements” will cause me to make more mistakes. I’ll have to get outside of my comfort zone, be honest with myself, and focus on the smallest, improvable details of how I think. The outcome will be thoughts, rather than numbers.

 

Lies

Some things are easy to lie about: a resume, history, past events, who said what.

Some things are impossible to lie about. How you dance, or juggle, or play music – an expressive display of skill inevitably tells a truthful story.

It’s a story of years – commitment, dedication, focus. It shows how broadly you see, and how deeply, whether you pay attention to detail. Skill requires humility, inspiration, an incessant drive to improve, never being satisfied; being sensitive to people around you, incorporating feedback, stepping past your ego. Subtle motion, every thought and feeling expressed consciously or unconsciously, tells a deeper story of character, if one knows how to listen.

Anyone can do a dance move poorly. It says nothing of how long you’ve danced, or what you care about, or who you are. But a move executed flawlessly speaks volumes. There is no way to get there other than through a remarkable story of personal strength and resilience.

Sometimes, I forget why I do what I do, I forget who I am, and how I got to where I am. It gets lost in the noise of everyday life, gossip, plans that don’t work out.

Then I look at myself, and how I do what I do, and I’m reminded why I started on the path I’m on. I’m reminded of how low I started, and what it took to make progress. The struggles I went through to learn to dance, to fix my body, perfect a foreign language, move to a foreign country, master the skills I needed to succeed in my career. I’m reminded of how vulnerable, alone, and alive I felt – the moment I challenged myself to learn music and guitar.

It was not an easy time in my life, and through the trials, I committed to making something out of the time I have. To living with purpose, and doing my best, in every moment.

Through the lows of life, that sustained dedication leaves an undying reminder, something that no one can take away. Hundreds, thousands of hours of focused practice imprint something deeper than what lies on the surface – soul tattoos – invisible, yet ever-present. Unattainable by any other means, not available for sale, can’t be stolen, no way to cheat; a personal journey, a private possession.

For me, those tattoos help remember truths deeper than any doubts I have of myself, or any stories imposed on me. They remind of the resolve with which I started on my path; they remind me of the only path I found worth it to walk at all. A path of being true to myself, never holding back, giving everything I have, always challenging myself to go beyond what seems possible, and not caring for failure.