Book: The Pragmatic Programmer: From Journeyman to Master

Author: Andrew Hunt and David Thomas


When you accept responsibility for an outcome expect to be held accountable for it. Make plans for the risks and if things don’t work out provide options to salvage the situation rather than provide excuses.

Don’t leave “broken windows” in your code. Fix them as soon as they are discovered or board them up. People who find themselves on projects with pristine code are less likely to make a mess or go against the grain with code that doesn’t fit the standard.

It can be better to show people a glimpse of the future then try to lead them to it directly. If you’ve got a great idea it might be worth subtly nudging a discussion focusing on the problem and letting others come to your same conclusion.

All systems must meet users requirements but user should be given an opportunity to decide when software is good enough. Great software today is preferable to perfect software in the future for many customers.

Treat your programming knowledge like a portfolio; invest, diversify, manage risk, review and rebalance. Learn new languages and find other ways to broaden your knowledge.

Every piece of knowledge must have a single and unambiguous authoritative representation within the system. Don’t repeat yourself. Don’t have multiple constants referring to the same thing, or multiple functions which calculate the same result. Don’t cache values until it’s optimization time, and then have systems that verify the cached results.

Keep dependencies between systems minimal.

Tracer bullet programming involves making many small steps to try to hit your target. Not the same as prototyping – you should intend to keep the code. Don’t always expect to hit your target the first time. Don’t spend months of time calculating the trajectory, determining wind speed, lining up the shot. Make small iterative adjustments to get your code closer to its goal.

The ability to accurately estimate project timeline is really important.

There are a lot of advantages to keeping your data in plain text format. Don’t underestimate human readability for maintenance and debugging. Other formats can be used at optimization time.

Be familiar with the shell commands.

Be very familiar with your IDE and ways it can save you time.

Always use source control.

Embrace the fact that debugging is just problem solving and attack it as such. It’s not a blame game.


More to come later…

Keeping Calm

Book: It Doesn’t Have to Be Crazy at Work

Authors: Jason Fried and David Heinemeier Hansson


There are two main reasons it gets crazy at work:

  • The work day is being sliced into tiny fleeting work movements in an onslaught of distractions
  • An unhealthy obsession with growth at any cost sets unrealistic expectations

Sustained exhaustion is not a badge of honor. It’s a mark of stupidity.

The answer isn’t more hours. Concentrate on less waste not more production. Create an environment with fewer distractions.

Your company is a product and if you want to make a product better you have to keep tweaking revising and iterating. Ask what are the bugs and problems with your company. Work on fixing the bugs.

You’re not very likely to find that key insight or breakthrough idea north of the 14th hour in the day. Creativity progress and impact do not yield to brute force.

There is a fixation on market share. What matters is that you have a healthy business with solid economics that work for you – costs under control and profitable sales.

Revenue goals are fake. They’re artificial targets for the sake of setting targets. It’s an arbitrary number that looms over everything. Nothing ever stops at the quarterly win. The quarter is only the most important goal until the next quarter.

Often morality, honesty, and integrity are compromised to reach these fake numbers.

If you stick with short-term planning you get to change your mind often and that can be a good thing. Planning too far out isn’t worthwhile because the world changes so fast. Adherence to the plan can cause bad decisions and anxiety.

It can be valuable to listen to your discomfort and back off from what’s causing it. Going outside of comfort zone isn’t necessarily a good thing. Depth can be as valuable as breath.

A 40-hour work week doesn’t seem like enough time because we’re not spending the time doing the right things.

People work best when given long uninterrupted blocks of time.

Concentrate on being effective more than being productive. Do the correct work, not the busy work.

The office environment is filled with interruptions that prevent people from doing work. Especially open offices.

Subject matter experts are interrupted frequently with questions in an unpredictable manner. Explorer using office hours for them to handle these interruptions in a predictable manner.

People schedules at Basecamp are private with the idea that taking someone else’s time should be a pain in the ass. Meetings should be a last resort. People need to own the vast majority of their time to do good work.

The green presence icon on chat is an invitation for interruption. We should interpret green as Do Not Disturb.

The expectation of an immediate response is an unreasonable expectation. If someone doesn’t get back to you immediately it’s probably because they’re working.

People need to be able to focus on the work at hand without being interrupted by every little detail that’s going on.

Your company is not your family. The best companies are the ones that help you spend time with your real family.

Leaders need to set good examples of work-life balance. Self-sacrifice trickles down the hierarchy and creates dread and fear.

Every relationship between two people has a trust battery that can either be charged or drained with every interaction.

Bosses shouldn’t expect people to come to them with issues. They need to ask pointed questions like:

  • What’s something nobody dares to talk about
  • Are you afraid of anything at work
  • What do you think we could have done differently to succeed
  • What advice would you give before we start on this big project.

The higher you go in an organization the less you’ll know what it’s really like for those doing most of the work.

The higher you go in an organization the more weight your suggestions have. It takes restraint to not lob ideas at direct reports that will cause them to focus on the idea more than they really should.

Don’t let people sacrifice sleep for sustained long hours. Doing so will hurt productivity and increase stress over time.

Work-life balance means that if work can claim hours after 5 p.m. then life can claim hours before 5 p.m. It doesn’t mean that work will try not to claim hours after 5 p.m. but it still will sometimes.

Hiring should focus on:

  • good people that other people can work with
  • people different than the type of people they already have hired
  • paying someone $1,500 to do a week of example work and then judge the work.

New hires have a ramp up time even when hired into a similar position as their last one. Companies processes and work are all different and there will be a ramp up time

It’s better to nurture and grow your own talent than to try to plunder it from somewhere else. There’s no guarantee that hiring a superstar from another company will yield a superstar at your company.

All people at the same position at Basecamp are paid the same salary, regardless of tenure.

Many so-called benefits of working at companies are bribes to keep you at work longer. For example, catered meals, gyms, fitness programs. Why not just give employees stipends for meals or the gym and let them do it on their own time away from work?

If you’re going to have an open office plan you should have library rules. Full volume conversation should be done elsewhere. If this seems like a big step, try doing it for a single day every week.

Work should not be able to intrude on your vacations

Unlimited vacation policies wind up with people taking fewer vacations. Have limits but be flexible enough to allow people to go over the limits if they need to.

It’s important to clearly communicate to everyone why someone was let go so people don’t make up stories about it. Every time a person leaves Basecamp they or their manager get to send out an email detailing why they are leaving.

Always on chat programs can be a huge distraction. People feel like if they’re not constantly paying attention they’re missing out on something important. If everyone needs to see it don’t chat about it write it up instead.

Deadlines should always be fixed and not move but the scope of them can be downsized at the request of the team working on it. People don’t trust deadlines that constantly move. But they trust being able to narrow the scope and move unfinished things to the next deadline.

Consider not pitching new ideas at meetings but in documents that are sent out to everyone. You’re more likely to get well-considered feedback than knee-jerk reactions.

Consider breaking feature dependencies and shipping individual features when they’re ready and not bundling them with unrelated things.

Don’t try to achieve consensus on everything. Someone should make the decision, explain it, and everybody commits and move forward.

Don’t try to be indiscriminately great at everything. Understand where you can compromise on quality.

Once initial exploration of an idea is over, every week should be closer to it being done not further from it. The amount of questions and unknowns over time should be decreasing not increasing.

Sometimes the right answer is to do nothing and not to force a bunch of changes on people who might be comfortable with the existing system.

It’s important to be able to draw the line at what is enough and not have the opinion that it’s never enough.

Sometimes best practices are not what they claim to be. It’s good to treat them like training wheels and to always question and consider them.

Don’t commit to do things whatever it takes. Have a conversation about what it will take.

Always be on the lookout for getting rid of work that doesn’t need to be done.

You can debate and agonize over an idea forever or you can ship it and see how your customers actually react. We live in a world of iteration.

Avoid making promises for future work. It piles up obligations that drag down everything else.

Imagine every time a customer has trouble there are two tokens that can be taken:

  • one says no big deal
  • one says this is the end of the world.

For whichever token you don’t take the customer will take the other. You want to take the this is the end of the world token so the customer takes the other.

If you don’t have the power to make change at the company level make the change at your local level.

I may have made a mistake.

Book: Mistakes Were Made (but not by me)

Author: Carol Tavris and Elliot Aronson


Cognitive dissonance is a state of tension that occurs whenever a person holds two ideas that are psychologically inconsistent. It produces mental discomfort so our brain finds ways to reduce it.

The more we commit to something (especially things we deem important or irreversible), the more mental gymnastics we’ll do to avoid admitting we were wrong.

Once a decision has been made we’ll do what we need to bolster it, including evangelising it to others. Often, the best time to get good information on a topic is to ask someone researching a decision before they have committed to it.

Violent or aggressive acts aren’t a good form of venting, they set the stage for justifying more violence or aggression.

If we do a good deed for someone we don’t like, we can use our CD behavior to get into the mental state of “If they were such a jerk, I wouldn’t have done this for them, therefore they must be ok.”

You can use this in reverse to ask favors of people who don’t like you.

Experts in fields often have no better than a 50/50 chance of prediction, and CD can be extreme for them because of this.

People with low self esteem also suffer from CD interpreting actions of other people or results of their efforts to show why they don’t have value.

The Pyramid of Choice

Once we’ve made a choice we go down the path of justifying it, often ending up very far away mentally from someone who made the opposite choice.

We all have prejudice blind spots of which we’re not aware.

Often we start making small choices that lead to larger ones and get further away from our initial belief leading us to eventually do something we never would have done initially. Example: Lunch with lobbyist, local golf game with lobbyist, trip to St. Andrews for golf game with lobbyist.

Scientists used to be funded with public money and most research didn’t have patients associated with it (Polio vaccine) but little by little we’ve evolved into a world where most scientific research is privately funded. Results in very minor and questionable improvements.

Lots of privately funded research yields results that are not consistent with unbiased research in terms of safety or effectiveness of products.

Big Pharma spends lots of money on small gifts to doctors offices because it’s been shown to work. Even these small gifts cause doctors to recommend their medications more often.

We invoke stereotypes to justify behavior that would otherwise make us feel bad about the kind of person we are or the kind of country we live in.

Being stressed, frustrated, or tired makes people more likely to express their prejudices.

It’s important to have people in our lives that are willing to puncture our bubbles of self-justification and point out our blind spots.

We rewrite over our own memories to self justify actions or events that happened in the past to make ourselves more favorable

Memory is not like pulling files from a hard drive it is like reconstructing a movie from several still frames and your brain fills in the details at the time of reconstruction. Often it will fill in details that fit your current model of the world and who you are.

We hear stories of people saved by Dolphins nudging them to safety. But we never hear stories of Dolphins nudging people out to sea, because those people die and the story is never hear. So much data we use suffers from this problem.

The criminal justice system is full of CD and many aspects of it reinforce self justification. Cops plant evidence because they’re sure someone is guilty and don’t want them to get off because they couldn’t find evidence. Prosecutors spend an enormous amount of time and energy creating a case against someone and then can’t imagine a world where the person is innocent, even if DNA evidence proves otherwise.

Interrogations use techniques to extract guilt even from innocent people, relying on methods such as lying to innocent people to trigger their own CD.

Americans who live in the North learn about the Civil War as a matter of ancient history in which our brave Union troops forced the South to abandon the ugly institution of slavery and defeated the traitorous Confederates. But most white Southerners tell a different story where the brave Confederate troops were victims of greedy crude Northerners, destroyed our cities and traditions, and are still trying to destroy our state’s rights.

People long to hear “I screwed up. I will do my best to ensure it will not happen again”

Try to look at your own actions critically and dispassionately as if you were observing someone else.

When a friend makes a mistake, the friend remains a friend and the mistake remains a mistake.

Americans tend to think that mistakes mean stupidity.But we need to treat them as a natural part of learning. The more we identify as having “natural ability” at something, the more we are terrified of making mistakes in it.

When I, a decent smart person, make a mistake, I remain a decent smart person and the mistake remains a mistake. I made a mistake, I need to understand what went wrong. I don’t want to make the same mistake again.

Stories of mental excesses, losses, and transforms.

Book: The Man Who Mistook His Wife for a Hat

Author: Oliver Sacks


Dr P lost his ability to visually tell the difference between objects unless they had rather remarkable characteristics even though nothing was wrong with his eyes. However, his skill and talent with music was unaffected and possibly grew stronger as his condition worsened

Jimmie was a 49 year old who lost all memories prior to roughly his 20th birthday.  His short term memory was also totally lost and unless his brain was challenged to stay on a single thread of thought he would lose it within minutes.

Christina lost the ability to feel or sense her own body. Walking became impossible and her hands would often touch or grab things without her knowing it. She only could control her body if looking at it.

A man stopped recognizing his leg as his own and found it repulsive – as one would if waking up next to a dead disembodied leg.

Madeleine, an elderly blind woman had been misdiagnosed early in life as being unable to use her hands and had gone through her entire life having everything done for her and never using her hands. As such she had no concept of them or how to use them. Through rehabilitation she was able to learn how to use them and even became a sculptor.

After a stroke, Mrs S lost the meaning of the concept of left. She couldn’t turn left, observe things on the left side of her body.

Aphasiacs are people who have lost the ability to understand words but can still understand expressions and tone. There also exist people at the opposite pole who can only understand the words and their exact meaning.

Natasha, a 90 year old woman was diagnosed with a form of neurosyphilis that made her more energetic and impulsive.

Mr Thompson, a Korsakov patient, developed memories and created stories in real time to replace the memories he lost and was unaware of doing so.

Mrs. O’C, an elderly woman, woke up one morning hearing Irish songs from her childhood that would never stop. It was difficult to hear conversation with others through the songs.

An elderly woman suffering from Parkinson’s was given L-Dopa and began having extremely detailed memories surface from 40 years earlier that she hadn’t remembered or recalled during the intervening period. After her treatment was stopped, the memories ceased.

An Indian girl of 19 with a malignant brain tumor began entering peaceful dreamlike states where she had visions of her home in India growing up.  The worse the tumor became the longer the states would last until right before she died it was practically impossible to remove her from them.

Stephen D, a 20 something PCP user woke up one morning to having extremely heightened senses, especially his sense of smell. This lasted for several weeks.

Donald murdered his girl while under the influence of PCP and had absolutely no memory of the event until years later he suffered significant brain trauma during a bicycle crash and then all memories of the event came back to him.

Rebecca was clumsy, withdrawn, and stressed when in structured settings but had remarkable skill in acting and theater and was able to find success when focusing on that aspect of her personality.

Martin was able to memorize thousands of operas and had refined musical talent. He was happy when singing or helping orchestras.

A pair of twins were able to name the day of any date in history or list prime numbers despite not being able to calculate in typical methods.

Jose suffered from frequent seizures and was unable to talk but was able to express himself through his drawings in remarkable ways.


I never would have picked up this book myself, it was a gift from my father in law because he enjoyed it so much. And it was supremely fascinating and a very quick read.

We really don’t understand the workings of the brain very well yet, especially when things go wrong. It’s an amazing organ and it seems like it’s capable of way more than people living with a fully functioning brain are able to take advantage of.

We don’t have adequate care of those who don’t have normally functioning brains.

If it weren’t for Nixon, we’d have humans that were born on Mars by now

Book: How We’ll Live on Mars

Author: Stephen L. Petranek


Werhner von Braun was a Nazi SS Officer who was taken to the US after the war and wrote a book called Das Marsprojekt which has been an instrumental piece of work outline the necessary steps for travel to Mars to this day.

Nixon’s decision to scrap the Apollo program in favor of the Space Shuttle program was the turning point of advancing our space exploration capability. The military wanted the Shuttle Program as a way to launch and repair spy satellites.

It’s likely the first humans on Mars are going to be the result of private enterprise, not government agencies.

Mars could be a gateway for asteroid mining, either for rare mineral extraction back to Earth or back to Mars.

Large mirrors in space reflecting more sunlight to Mars’ surface is one of the most feasible ways to warm up parts of the planet and start a greenhouse effect cycle of getting more carbon dioxide and water vapor in the air to build even more heat.

My thoughts:

Even though the book is only four years old, a lot of the dates are already incorrect. None of the private companies are as far along as they predicted they would be. As someone else who is aggressively futurist I can relate to the disappointment of technology not being as far along as I want it to be.

If we had kept NASA’s budget at 4% of government spending and kept up the focus we had during the Apollo program, we’d have humans on multiple planets and moons across the solar system by now, and be awash in rare resources and probably much more advanced technology and energy generation methods. Such a shame.

It was cool reading this after the Red Mars Trilogy to get a bit more hard science and see some real life progress being made on Mars missions.

Don’t upset Vladimir Taneev

Quote from Blue Mars by Kim Stanley Robinson

Do you believe in democracy and self-rule as the fundamental values that government out to encourage? Very well. If democracy and self-rule are the fundamentals, then why should people give up these rights when they enter their workplace? In politics we fight like tigers for freedom, for the right to elect our leaders, for freedom of movement, choice of residence, choice of what work to pursue – control of our lives, in short. And then we wake up in the morning and go to work, and all those rights disappear. We no longer insist on them. And so for most of the day we return to feudalism. That is what capitalism is – a version of feudalism in which capital replaces land, and business leaders replace kings. But the hierarchy remains. And so we still hand over our life’s labor, under duress, to feed rulers who do no real work.

Capital itself is simply the useful residue of the work of past laborers, and it could belong to everyone as well as to a few. There is no reason why a tiny nobility should own the capital, and everyone else therefore be in service to them. There is no reason they should give us a living wage and take all the rest that we produce.

In which one percent of the population owned half of the wealthy, and five percent of the population owned ninety-five percent of the wealth. History has shown which values were real in that system. And the sad thing is that the injustice and suffering caused by it were not at all necessary, in that the technical means have existed since the eighteenth century to provide the basics of life to all.

Notes: This book was published in 1996. Since then the distribution of wealth has tilted even more in favor of the 1% (

I did get an impression while listening to podcasts about the revolutions in Europe in 1848 (starting with that the transition from feudalism to capitalism was fairly seamless for the nobility who went from being the landowners of Europe to the Marxist definition of the bourgeoisie without much loss of influence or power. There’s an argument where you take feudalism, add the Industrial Revolution, shake vigorously, and wind up with modern capitalism.

I’ve read the argument before that our world contains the means necessary to properly feed, shelter, and take adequate medical care of every single human on the planet and its just our misguided priorities that prevent this from happening. I don’t disagree with it but I’d be interested in seeing data about the cost of this. But to counter the potentially high cost of this, could you imagine the potential productivity of a world where every human can focus on their work without having to worry about the costs of food, shelter, and medical care?

Quite the Story Arc

Book: Ball Lightning

Author: Cixin Liu (Translated by Joel Martinsen)


Two of the main characters are greatly affected by events that happened to them as children. Most of the focus of their lives is around dealing with a traumatizing childhood event.

It’s impossible to make scientific or technological progress in civilian areas that won’t  become somehow weaponized for the military. On the other hand, swords can be turned back into plowshares as well.


Just like the Three Body Problem there’s a lot of hard science.

The idea of macro electrons and macro nuclei was fascinating and it leading to the ability for macro fusion was a cool touch.

I really liked the idea that there are weapons potentially more destructive than atomic weapons but not because they’re more blatantly destructive but because they’re able to target the weaknesses of modern societies, such as going after our dependence on technology. The idea that a group could hold the world hostage by pointing  a gun at itself or its own technology was really interesting.

I really want a BrainPal

Book: The Ghost Brigades

By: John Scalzi


(Contains spoilers)

Can’t escape Fate – Dirac ended up becoming Boutin just like he was created to do.

Can escape Fate – Dirac was able to make different choices than Boutin

Love goes beyond boundaries – Dirac loved Zoe

What makes us human?

Is humanity good or evil?

Humans do some really shitty stuff in war.


Super fast and enjoyable read, much like Old Man’s War. It’s fun seeing more of that universe come into clarity and I enjoyed some of the characters from the previous book being present in this one.

This book gives a lot better explanation of why the Colonial Union has a focus on recruiting old people. Given that they don’t have much to lose they’re more willing to volunteer in numbers necessary to fill the ranks of the military. It also leaves the young people alive to colonize, reproduce, and work rather than die off in war.

I like reading about the various alien species and their political and cultural structures like the bug-like Eneshan and their rules of succession.


Don’t hold your Breath(s)

Book: Warbreaker

By: Brandon Sanderson


We have a hard time accepting people of different cultures and religions.

Sometimes fate is avoidable (Vivenna) and sometimes it isn’t (Lightsong).

People can change.

You can’t judge a person by their exterior (Vasher, Susebron)

Countries can be manipulated into war against their own interests and desires.


There’s a really cool magic system in this book – it’s described in very high detail and isn’t like anything I’ve seen before.

How to Make Friends and Fire People?

Book: Powerful – Building a Culture of Freedom and Responsibility

By: Patty McCord


Build the team you need 6 months from now and don’t let yourself be dragged down by the team from 6 months ago.

Retention isn’t a good metric for management.

Think of your business as a team not a family. Expect people to leave as things change.

Be as good at hiring talent as knowing when to part ways with current employees.


This was a quick read and I found it more interesting than a lot of other management books. It’s worth reading again in a few months. I don’t know if I agree with some of the methods of cutting employees loose, I tend to feel like good management can help people transition to new phases and improve their performance without some of the challenges that a high level of turnover causes. But there’s a lot of really good ideas in here that I agree with.

Page 18 – People need to see the view from the C suite to feel connected to the problem solving that must be done.

Page 24 – At most companies, investors on profit sharing calls know more about the company than people working there.

Page 27 – Any employee should be able to name the top five priorities of the company for next six months.

Page 37  – Good employee feedback should be about behavior and be actionable.

Page 57  – Data should not be an end point for decision making but a starting point for understanding and interpretation

Page 62  – Make arguments for the good of the company not for ego or pet projects. Actively seek information that might prove you wrong because you’ll learn from it and make a better decision.

Page 66 – On important issues, Netflix has debates between executives attended by lots of people. Sometimes the executives have to debate from the other person’s point of view. The audience is also empowered to participate and ask questions.

Page 81 – Companies give people half a job they need done because they can’t handle the full job and management isn’t willing to part ways with the person.

Page 94 – Happiness comes from being deeply engaged in problem solving with other deeply engaged people. Not perks.

Page 97 – After their round of layoffs they had really high talent density. It was the best performers who were still around and this made the whole company better.

Page 102 – The entire culture of hiring section was great.

Page 104  – So was the entire HR must be business people section.

Page 114 – And the Account value of people working for you section.

Supplemental: For people who don’t have time to read, theres a YouTube video from Recode’s 2018 Code Conference where she talks about many of the themes from the book.