Commit c7c4abd8 authored by Alberto's avatar Alberto 💯
Browse files

fix: restore books

parent 9a1f7704
title: A Philosophy of Software Design By John Ousterhout
subtitle: ""
date: "2020-10-19T01:21:54.707Z"
lastmod: "2021-05-06T02:01:12.028Z"
author: ""
ShowToc: true
TocOpen: false
draft: false
hidemeta: false
comments: true
description: Every software engineer should understand the difference between Tactical and Strategic programming
disableHJS: true
disableShareButtons: false
disableHLJS: true
hideSummary: false
SearchHidden: false
ShowReadingTime: true
ShowBreadCrumbs: true
ShowPostNavLinks: true
bookAuthor: John Ousterhout
rating: 7
## Overview
I came to know about this book in a Hacker News post and decided to
order it as soon as it was published.
The book proved very useful since the first chapter. Since I read it
I've applied many of its concepts and many times while coding I find
myself thinking about Tactical vs. Strategic programming, two concepts
that really stuck with me and have helped me write better code.
Tactical programming refers to writing and shipping code fast without
stopping too much to think about design. This might be good for fast
prototyping but it is not the correct approach when building products.
Instead we should use strategic programming: plan ahead and design the
system before writing any code.
If you want to know more there's also a [Google Talk by the
## Notes and Highlights
The most fundamental problem in computer science is *problem
decomposition*: how to take a complex problem and divide it up into
pieces that can be solved independently.
If you can visualize a system, you can probably implement it in a
computer program.
Over time, complexity accumulates, and it becomes harder and harder for
programmers to keep all of the relevant factors in their minds as they
modify the system.
Developer should always be thinking about design issues.
Complexity is anything related to the structure of a sotware system that
makes it hard to understand and modify the system.
You can also think of complexity in terms of cost and benefit. In a
complex system, it takes a lot of work to implement even small
improvements. In a simple system, larger improvements can be implemented
with less effort.
Complexity is more apparent to readers than writers.
Your job as a developer is not just to create code that you can work
with easily, but to create code that others can also work with easily.
One of the goals of good design is to reduce the amount of code that is
affected by each design decision, so design changes don't require very
many code modifications.
One of the most important goals of good design is for a system to be
Almost every software development organization has at least one
developer who takes tactical programming to the extreme: a tactical
tornado. The tactical tornado is a prolific programmer who pumps out
code far faster than other but works in a totally tactical fashion.
They are rarely considered heroes by engineers who must work with their
code in the future.
In the tactical approach, your main focus is to get something working,
such as a new feature or a bug fix. The problem with tactical
programming is that it is short-sighted. If you're programming
tactically, you're trying to finish a task as quickly as possible. As a
result, planning for the future isn't a priority.
The first step towards becoming a good software designer is to realize
that working code isn't enough.
Your primary goal must be to produce a great design, which also happens
to work. This is strategic programming.
Another thing to consider is that one of the most important factors for
success of a company is the quality of its engineers. The best way to
lower development costs is to hire great engineers: they don't cost much
more than mediocre engineers but have tremendously higher productivity.
Module depth is a way of thinking about cost versus benefit. The benefit
provided by a module is its functionality.
The best modules are deep: they have a lot of functionality hidden
behind a simple interface.
The smaller and simpler the interface, the less complexity that it
Providing choice is good, bu interfaces should be designed to make the
common case as simple as possible.
Information hiding reduces the complexity in two ways. First, it
simplifies the interface to a module. Second, information hiding makes
it easier to evolve the system.
It is more important for a module to have a simple interface than a
simple implementation.
If a class exports configuration parameters, every system administrator
in every installation will have to learn how to set them.
Configuration parameters also provide an easy excuse to avoid dealing
with important issues and pass them on to someone else. In many cases,
it's difficult or impossible for users or administrators to determine
the right variables for the parameters.
Length by itself is rarely a good reason for splitting up a method. In
general, developers tend to break up methods too much. Splitting up a
method introduces additional interfaces, which add to complexity.
Each method should do one thing and do it completely. The method should
have a clean and simple interface, so that users don't need to have much
information in their heads in order to use it correctly. The method
should be deep: its interface should be much simpler than its
Throwing execptions is easy; handling them is hard.
A good software design loses much of its value if it is poorly
If users must read the code of a method in order to use it, then there
is no abstraction.
title: The Basic Writings of Bertrand Russell
subtitle: ""
date: "2020-09-29T05:02:45.747Z"
lastmod: "2021-05-06T01:52:10.887Z"
author: ""
ShowToc: true
TocOpen: false
draft: false
hidemeta: false
comments: true
description: Notes on some Russell's essays about Education, Politics, Writing, Religion, and Sex
disableHJS: true
disableShareButtons: false
disableHLJS: true
hideSummary: false
SearchHidden: false
ShowReadingTime: true
ShowBreadCrumbs: true
ShowPostNavLinks: true
bookAuthor: Bertrand Russell
rating: 10
## Overview
The following notes are based on a handful of essays from his \"Basic
Writings\": *My Religious Reminiscences, Why I Took to Philosophy, How I
Write, A Free Man\'s Worship, St. Thomas Aquinas, What I Believe, The
Expanding Mental Universe, Why I am not a Communist,*
Throughout the essays, it is clear that Russell thought like a
Scientist. His writing is a means to an end. He starts with a
hypothesis, with a question and provides arguments and examples to prove
or refute his position. In fact, as the editors note, **He adopted a
version of the scientific method as his guide to philosophizing** . And,
as can be summarized by his phrase \"Whatever one may believe to be
true, one ought to be able to convey without any apparatus of Sunday
sanctification\", he always tried to keep as rational and as objective a
mind as possible.
## Notes and Highlights
### Religion
> *Every man would like to be God, if it were possible; some few find it
> difficult to admit the impossibility.*
Russell was born into a very religious family. Both his parents were
forward thinkers but they died early and he was raised by his very
Orthodox grand mother. This must have instilled a rejection and an
obsession with Religion since an early age. In fact, he tells us that
between the ages of 15 and 18 he spent most of his free time thinking
about Religion and trying to understand Christianity arguments.
He became an agnostic and used logic to reason about his position.
For example, with regards to the First Cause---the notion that God was
self-created and everything else is caused by him or we can trace a
chain of events going all the way back to him---he argued that in
mathematics there exist numerical series that have no first nor last
term so the First Cause argument of religion makes no sense.
Put it another way, if everything requires a cause to exist, so then God
must require one as well.
Having said this, and convinced that man *\"is the outcome of accidental
collocations of atoms\"* (a position that reminds me of Carl Sagan\'s
beautiful *\"we are made of stardust\"* statement), he was rational
enough to say that
One can tell he was a scientist and a Logician. He thought deeply about
many Christian dogmas and found in them contradictions and cognitive
A great example is the following:
> *I am sometimes shocked by the blasphemies of those who think
> themselves pious---for instance, the nuns who never take a bath
> without wearing a bathrobe all the time. When asked why, since no man
> can see them, they reply 'Oh, but you forget the good God. '
> Apparently they conceive of the Deity as a Peeping Tom, whose
> omnipotence enables Him to see through bathroom walls, but who is
> foiled by bathrobes. This view strikes me as curious.*
Similar reasoning is applied when talking about prayer. He couldn\'t
understand how if Providence is unchangeable (not sure if this is the
current Christian view) then prayer could not be useful in changing
anything. Personally, I find that prayers can only be seen as a
meditative experience that has no power outside our own mind. Russell
went further and arrived at the contradiction thatIf the world is
controlled by God, and God can be moved by prayer, we acquire a share in
omnipotence. This is clearly impossible since only God is supposed to be
Yet another contradiction can be found when talking about birth-control.
How, Russell argued, does the Church forbid birth control as being
unnatural but does not forbid celibacy. Both actions lead to the same
result of preventing new life to be born.
The most interesting part of his position on Religion though is his view
that *\"fear is the basis or religious dogma\"*. Humans have always
tried to understand Nature and justify Fate, our urge to find some
higher meaning is almost innate, but as Russell argues over and over,
Religious dogmas in their present form do more harm than good.
### Politics
Russell was above all opposed to Wars and was a proponent of free speech
in a way similar to George Orwell. So much so that he was expelled from
Cambridge\'s Trinity College for his opposition to World War I and
because he would not pretend to be a Christian nor avoid stating that he
was an agnostic (having done so would\'ve granted him a Fellowship and
hence prevented his rejection from the college).
In this regard though, it is almost paradoxical that he supported World
War II:
The Second World War I thought necessary, not because I had changed my
opinions on war, but because the circumstances were different. In fact,
all that made the second war necessary was an outcome of the first war.
We owe to the first war and its aftermath Russian Communism, Italian
Fascism, and German Nazism.
He also suggested that revolutions (like the American and French) had
their place but that in order to build *\"the good life, a life of
intelligence, self-control, and sympathy\"* there are no shortcuts but
they\'re a matter of gradual improvement.
As with Religion (and all other topics) he attacked the issues from a
rational and scientific point of view. His framework when studying
politics was based on two questions:
1. Are the theoretical tenets of this political doctrine true?
2. Is its practical policy likely to increase human happiness?
In *\"Why I\'m not a Communist\"* he answer these questions as follows:
I think the theoretical tenets of Communism are false, and I think its
practical maxims are such as to produce an immeasurable increase of
human misery
### Education
Russell was educated at home first by his grandmother and then by a
series of tutors. He said that this served him well because he had
*\"abundant leisure for reflection\"* .
In his view, education is a double-edged sword. While it can do a lot of
great things for the world, it can also be used to indoctrinate people:
*\"by instilling nonsense it unifies populations and generates
collective enthusiasm\"*. One can infer that he was referring to the
rise of Nazism and Communism.
Given his views on Religion, it is no wonder that he also thought that
any notion of superstition or religious dogma was bad when used in
Education . He promoted independent thought and freedom of speech and
went so far as to say that
> *Most of what I learnt at Cambridge had to be painfully unlearnt
> later; on the whole, what I had learnt for myself from being left
> alone in an old library had proved more solid.*
And also that in order to truly learn and reason we should be able to
understand views opposite to ours so he recommended to always seek
people with whom you disagree and reading newspaper belonging to a party
that you don\'t support . (This advice would be very useful in the
current political climate.)
### Writing
Being a such a prolific writer, Russell spent also time thinking about
how to write well. Here is some advice from the essay *How I Write*:
- Try to say everything you want to say in the smallest number of
words in which it can be said clearly .
- Always re-write. He did this focusing on form rather than substance
since he usually found his first draft to be good enough. Personally
though, I always need to rewrite (my first drafts are beyond awful
- *\"Never use a long word if a short will do\".*
- *\"Do not let the beginning of your sentence lead the reader to an
expectation which is contradicted by the end\"*
- It\'s OK to feel a minimum amount of worry and anxiety when writing.
This echoes John McPhee\'s line *\"if your prose seems stillborn
and you completely lack confidence, you must be a writer\" .*
Writing, it seems, never gets easy.
- A writer must find their *\"intimate and almost involuntary
expression\".* Direct imitation is to be cultivated only as a way to
gain familiarity with good prose.
### Sex
Russell was way ahead of his time with regard to sex and sexuality.
Similar to his late parents, he advocated for equality of men and women
and viewed sex just as *\"a natural need, like food and drink\".*
He despised the obsession that Clergymen had with sex and thought their
views of unmarried sex and birth-control as totally unreasonable. In
this respect, he said *\"Most of them condemn birth control. None of
them condemns the brutality of a husband who causes his wife to die of
too frequent pregnancies.\"*
## Useful Resources
- [Russell\'s Prison Letters
- [Russell talks about
- [Why I\'m not a
- [The Basic Writings
title: "Blue Ocean Strategy"
subtitle: ""
date: "2020-10-19T00:27:22.352Z"
lastmod: "2021-05-06T01:56:08.890Z"
author: ""
ShowToc: true
TocOpen: false
draft: false
hidemeta: false
comments: true
description: A thorough study of why and how companies should create their own markets and escape from the competitive “red oceans”
disableHJS: true
disableShareButtons: false
disableHLJS: true
hideSummary: false
SearchHidden: false
ShowReadingTime: true
ShowBreadCrumbs: true
ShowPostNavLinks: true
bookAuthor: W. Chan Kim and Renée Mauborgne
rating: 6
## Overview
Blue ocean: a new market space that hasn't been created yet. If you
create you will own it and dominate it by definition.
Red ocean: The known market space. This is were most companies find
themselves competing in.
If you want to become a successful company then you must create your own
blue ocean and escape competition.
## Notes and Highlights
The book is divided in three parts:
1. Blue Ocean Strategy
2. Formulating Blue Ocean Strategy
3. Executing Blue Ocean Strategy
Part (1) defines what blue oceans are and uses Cirque du Soleil as the
main example to explain it. Cirque du Soleil succeeded because in the
world of circuses it didn't try to compete with others but saw an
opportunity in creating a complete new market by getting rid of
performance animals, and targeting a different audience than traditional
Useful figure:
height="auto" loading="auto"}
Part (2) is all about formulating your Blue Ocean Strategy. The example
used in this case is [\[yellow
tail\]](, an Australian
wine company that by simplifying its wine offering and focusing on only
a few types dominated the US American wine market for a long time.
The key here is to focus on the strengths you already have, look across
your market boundaries, and identify how you can provide value to new
Above all understand that
> **Effective blue ocean strategy should be about risk minimization and
> not risk taking**
Useful figure:
height="auto" loading="auto"}
Part (3) deals with the more practical aspects of going from planning to
action. It goes into a lot of details of how leaders and teams can align
to execute the new strategy.
### (Incomplete) List of Blue Ocean Companies
- **Cirque Du Soleil:** created a new market in the entertainment
industry. Circuses stopped being kids-focused.
- **\[yellow tail\]**: simplified the wine offering, became one of the
most popular wine sellers in the US. Impossible to miss their yellow
kangaroo logo when buying wines at a store.
- **Novo Nordisk**: Stopped focusing on doctors, and started focusing
on users (patients). Created the NovoPen for diabetics.
- **NABI:** (a then) Hungarian bus company. Focused on public
transport. Created better and more efficient buses that city
councils afford.
- **Borders and Barnes and Noble**: added cafés and a whole new
experience to the bookstores. Borders went bankrupt circa 2010.
- **Swatch:** made radical changes to their production methods.
Created cheap and fashionable high-quality Swiss watches.
### Final Thoughts
Together with "Build to Last" by Jim Colins, this book represents one of
the earliest attempts at successfully study how companies can become the
leaders in a particular market not by beating the competition but by
creating a completely new market that they can dominate entirely.
Thinking in terms of blue oceans vs red oceans is useful to understand
what your offering is and should drive your company's strategy.
Another important point that should have been explained more in depth is
that of *value innovation*. The point is that innovation for the sake of
it alone is not enough. Customers don't care if you're using the latest
technology or creating some innovative tech if you're not providing
value to them.
> **Unless technology makes buyers' lives dramatically simpler, more
> convenient, more productive, less risky, or more fun and fashionable,
> it will not attract the masses no matter how many awards it wins.**
At the time of publishing, most of the ideas in this book were
revolutionary. But with the benefit of hindsight there are now better
alternatives to learn about companies and their strategies:
- Zero to One by Peter Thiel
- [Good to Great by Jim
title: Bold
subtitle: "How to go big, create wealth, and impact the world"
date: "2020-09-23T03:31:25.367Z"
lastmod: "2021-05-06T01:46:30.058Z"
author: ""
ShowToc: true
TocOpen: false
draft: false
hidemeta: false
comments: true
description: ""
disableHJS: true
disableShareButtons: false
disableHLJS: true
hideSummary: false
SearchHidden: false
ShowReadingTime: true
ShowBreadCrumbs: true
ShowPostNavLinks: true
bookAuthor: Peter Diamandis
rating: 7
## Overview
In short: I liked it. While I haven't read his first book "Abundance" I like the
optimism. It is nice to read about the potentials of a better world. The guy
knows that we can make the world better, that there are many untapped businesses
that we can exploit. It was the first time I read about crowdfunding and
crowdsourcing in such depth. Good research there, and more importantly lots of
good tips for later.
The book has two big how-to sections which I haven't read. I will read them once
I need them
From the book I got that you need always a system, a set of rules to follow (
check lists!) when making decisions of any kind. Also, you need resilience and
patience. Most projects and ideas discussed in the book take time to develop,
some 10-15 years even.
The key is to do things to impact the world, take money out of the picture.
Money is not the end goal it is just something extra you get along the way!
## Notes & Highlights
"Worlds's biggest problems = World's biggest business opportunities"
Think about waste and waste management. We know that China buys most of the
world's waste, what are they doing with it? Can I disrupt that market? Can we
change the way waste is collected/recycled?
Could we produce something that would enable people to get something out of
waste and reduce the amount they produce?
The Six D's "The six D's are a chain reaction of technological progression, a
road map of rapid development that always leads to enormous upheaval and
Digitize "Anything that becomes digitized hops on Moore's Law of increasing
computational power". Deceptive "The first stages of exponential growth go
unnoticed" Disruptive "Any innovation that creates a new market and disrupts an
existing one". Disrupt or prepare to be disrupted.
Demonetize "Remove the money from the equation". Stop charging for a service,
generate wealth in other ways (think Google) Dematerialize "is about the
vanishing of the goods and services themselves." Kodak example camera -\>
digital camera -\> smartphone ... where's the camera?!
Democratize "democratization is what happens when those hard costs drop so low
they become available and affordable to just about everyone". Latest example: 3D
In summary: Exponential entrepreneurhsip:
- Disrupt
- Give the product for free (demonetize, dematerialize)
- Reach the world (democratization).
"Decreasing prices, increasing performant and the development of far friendlier
user interfaces are making these platforms available to those with a clear
vision of where they want to go"
This bit is annoying because it assumes that some people naturally know where
they want to go and have a vision. I think you learn this through experience.
"The creation of a simple and elegant used interface gives entrepreneurs the
ability to harness this new tool to solve problems, start businesses and most
importantly, experiment"
Moore's Law, Infinite Computing "Every year we produce more computing power than
the sum of all prior years. This overabundance is the beginning of a new era"
"People think that bold projects don't get funding because of their audacity.
That's not the case. They don't get funded because of a lack of measurability"
Clear goals. "Clarity gives us certainty. We know what to do and where to focus
our attention while we are doing it. When goals are clear, metacognition is
replaced by in-the-moment cognition, and the self stays out of the picture" "As
a focusing mechanism, immediate feedback, is something of an extension of clear
goals". [^1]
[^1]:This is deliberate practice. Cal Newport explains this very well and I
think it -- is key to successfully learn anything and build anything. Without
feedback -- there's no progress and, for example, modern day school doesn't
provide too much -- feedback, we need to change it and fast.
"Flow appears near the emotional midpoint between boredom and anxiety, in what
scientists call the flow channel - the spot where the task is hard enough to
make us stretch; not hard enough to make us snap"
"The best people to help you with your next project are those who helped you or
watched you succeed with your last"
Collect laws. Build a system of maxims to guide you through decisions and life.
Peter's Laws
"We need to be alive to stay alive, simple as that"
"The best predictor of future success if past action. It doesn't matter how
small those actions"
"Doing something,g doing anything, is always so much more important than just
talking about it"
"The moment one gets into the 'expert' state of mind a great number of things
become impossible"