Book Review Rework - Justin Friedman

This book was at the top of the list when I was compiling The Founder Book Club. I was drawn in by it’s claim to be a non-traditional business advice book.

These are my key take aways from each chapter.

  • Don’t plan too much
    • Worry about reality testing before you have a product
    • Improvisation is better than Long term planning
    • Future is uncertain
  • Skip the hype
    • Learn from success, not failure
    • Don’t be a workaholic
    • Run a sustainable business, not a “startup”
    • You don’t need to Sell (“exit strategy”)
  • Actually Do Stuff
    • Don’t worry about qualifications, get started
    • Doing anything is better than nothing at all, act now
    • “Ideas are cheap and plentiful”
    • Make time for your work
    • Use small lists of tasks, big lists are overwhelming
    • When things aren’t working, step back, don’t do more
    • Launch when things are “good enough”
  • Be Selective
    • Do something unique and significant
    • Solve your own problem
    • Focus on your values, don’t try to be everything
    • Remove excess stuff, distill/curate…
  • Quality Conscious
    • “Build half a product, not a half-assed product”, don’t spread too thin
    • Avoid mediocre messaging and communications
    • Use constraints to increase quality, maximize what you have
  • Be Steady
    • Don’t take outside money, unless necessary
    • Don’t grow too quickly
    • Be frugal and minimalist, don’t overestimate costs
    • Stay lean so you can pivot quickly
  • Adjust your focus
    • Focus on big picture early on, details come later
    • Solve lasting problems with your product, not fleeting ones
  • Be Creative
    • Build side products from by products
  • Communicate well
    • Avoid abstract language, write/draw to ensure all parties agree
      … more to come

New Years Wishes

I’m grateful for 2017. I started the year with wishes and most were granted. :)

The change of the Calendar year is an aribitrary occasion to start new goals, so I won’t set concrete goals today.

Instead, I spend time reflecting on my Values and Priorities, they influence my behavior and reactions to external situations.

No Goals?

New Years Resolutions seem quite self-defeatist to me. The act of announcing goals to others may improve chance of success through social accountability. But I haven’t found this useful in my case.

The Future is Uncertain

I project a probability curve of things likely to happen and overlay another contentment curve over it. The intersection of the curves is the area where wishes are fulfilled. It is a process of aligning expectations with Reality.

The World is dynamic probabilities. Many decisions are attempts at improving the odds of the gamble. Certainty is a spectrum, not binary (though we don’t like to think this out loud). The annual renewal of one’s will against the world seems overly “Self-efficacious”. It’s more humble to throw Wishes or Prayers.

Given that things unfold as they actually (not just typically) do, it makes sense to “hope for the best, not be perturbed by the worst”. Beyond the stoic repose, I (the automaton) also have some control over my own automaton.

There are moments where I can experience self-programming:

For example, the experience of choice happens when I have to introspect on personal values when making decisions where I can’t rely purely on objective metrics.

Simplified Values

The practice of defining and ranking my values has given me some clarity. I experienced less dissonance in 2017 than most previous years (as far as I can recall) because I had an accessible reference point for why I do what I do.

A conscious value hierarchy eases decision making

It makes sense to take today’s “temporal landmark” as an opportunity to revisit Values.

What is most important?

The autonomous part of the Body/Mind is a lot like an organization. It can be led from the top by setting abstract guidelines. There is no need to assert artificial goals on the system, a healthy mind will continually “suggest” short/long term goals that are thematically coherent to the larger set of values.

Goals self-generate from integrated values

In my case, my new goals start to form when I retrospectively analyze my decisions from the past year. This practice gives me much clarity when faced with trade-offs and when placing my bets.


In 2017, I worked very hard at my job and my projects, spent lots of time/energy in cultivating relationships and the outcome was very acceptable :P.

I had also wished to become healthier but did not engage in the necessary behaviors. I prioritized other things (finishing projects, spending quality time, social engagement…) over the bio-physical (regular sleep/exercise and stuff).

Looking ahead, I would like to reap in the fruit of stability sown this year and shift my focus to Health and Well-being. No gym memberships or social commitments, just a serious acknowledgement of an “overlooked” part of Life.

I’m grateful for this uniquely human meta-cognitive capacity that grants me the experience of “subjective autonomy”.

Happy New Year


Hedonic Optimization

It’s a well-assumed fact that most sentient beings naturally prefer pleasant mental states over unpleasant mental states. Following the premise that most objective goals have subjective shifts of experience as their ultimate end, most of us probably value the rewards of our goals (be it a spiritual end or base pleasure) as much as its objective measurable result.

As we’ve gain understanding about the inter-relations of Physical phenomenon, we’ve aspired to master methods of manipulation for our utilitarian gains. This is the instrumental view of Scientific knowledge.

Science of Mental State

If our “neuromancy” advances, the science of mental state may shift the general focus to internal optimization. Would hedonic manipulation devalue objective ends? Engineering our aesthetics and value hierarchies to artifical ends.

This isn’t news. We’ve done this with drugs for a while but the effects have been temporary. More brain science can scale this to a larger but also “socially acceptable” practice that can shift the common Consciousness.

Leads me to the following thought:

Far-future projections presume that Human nature and values will remain stable or change at historical rates. In all honesty, we have no inductive basis for prediciting what a Self-Engineered human will want or do. At best, we can project derivation of Values based on trends… yet it is quite likely that we could fare far from Nature.

Easier to play God by painting the World than to change it.

An Alternative Answer for Fermi’s Paradox

Perhaps our current aspirations are an arbitrary but finite stage in Species Development (defined here as powers of objective manipulation). These values may last shorter than the time it takes to develop sufficient Physics for Interstellar exploration.

In the small chance that there exists another biological species (as we know it) that is psychologically similar to us and shares our exploratory drive, the values that power the technological advancements have to persist for a sufficiently long time for them to reach out to us.

In short, like Alchemy, seeking out others could become “unfashionable” as a species progresses. Aesthetic goals ( like the ones practiced by Yogis ) may simply replace our want to manipulate matter.

Just another addition to my restful position that we don’t really know what the future entails. #HailHume

Micro programming tasks

There is a case to be made for specialist programmers. It would be cool to find an expert exchange where highly specialized folks can market their highly specialized skills and get paid for very specific tasks.

I’ve faced an issue at work where we’ve needed help with an open-source library/framework and needed more support than StackOverflow / GitHub issues. The company was willing to pay in the hundreds of dollars to get an expert to intervene.


A niche market place (like UpWork but much simpler) where developers can get paid to tackle problems that are very specific to them. The client would post a well-defined problem (with IP filtered out), and the specialist can solve them as a customer service agent would solve a support ticket. An HIT platform like Mechanical Turk but specialized for small programming tasks.

Reward cycles with goals

2 distinct reward patterns
Result-oriented people seem to delay their gratification until a specific objective goal is reached. They generally tend to be pragmatic and willing to make compromises to meet self-imposed deadlines.

Process-oriented people enjoy their short-term and frequent “dopamine bursts” from tackling tactical challenges. These people tend to have idealistic tendencies, they can delay completion to meet a “near-perfect” solution.

The former do well as Entrepreneurs and Managers. The latter camp as Creatives and Workers.

I identify with the result-oriented side and seek a complementing partner who is more process-oriented.


A founder / project dating site that emphasizes personality trait matching.

Lazy Implementation of Flow Chart Logic in JS

Using a full-blown Tree data structure seemed kind of an overkill for one of my projects.
It is a simple app that prompts the user binary questions (Yes / No) and provides a conclusion based on a flow chart.

The purpose is to make a complex flowcharts more accessible by translating the steps into a series of user prompts.

I was supplied a visual flow chart by my partner, I looked at BPMN for representing the logic but it seemed like an overkill for my small projects.
There were a few other JS libraries I played around with but they also seemed a little far fetched.

So I decided to make a simple workflow processor myself. A JS hash with semantic keys to denote hierarchy between elements.

A flow chart can be represented as follows

1_A - Root -> A
1_A_B - Root -> B // Terminal node
1_A_A - Root -> A -> A
1_A_B - Root -> A -> B

The processor looks for matching keys to descend down the hierarchy. Essentially, it is an oversimplified representation of something like a nested JS object.

Fail smart

There is a trending notion that repeated failure is a foundation for learning. But repeated failure can also damage one’s self-efficacy and lead to learned helplessness. Failed attempts should be followed by a thorough detached evaluation of the potential causes of the failure. It is important that this process remains impersonal so that failure isn’t automatically associated with one’s self-image.

While it is true that the probabilities of success increase with repeated attempts (…drops in Monkey Playwright analogy), motivation is finite and can marginally decrease with each incident. This isn’t a general rule, my caution my not apply to people who have sufficient “grit” and insight to make the best of the experience. But for most and myself, blindly relying on odds (keep going at it until you get it right) can do harm.

I re-assess my self-estimation periodically to see if it aligns with reality. It is not immune to the distortions of the mortal mind but serves well as a guideline for setting goals.

There is no sure way to know what we can do without trying/failing, our models fail short of the real thing. Experiments carry risk so discernment is important.

Elastic Self

Experiences have led me to a “phenomenological discovery” that confirms the Buddhist notion of Anatta ( the lack of a stable irreducible subject ). However, the absence of a “core self” does not invalidate the existence of my ever-changing ephermal self. If anything, I feel the ego is more dynamic and treated with “objective discernment”.

Illusory as it maybe (in the metaphysical sense), having a sense of self is necessary to meaningfully act in the world. An ego-less person would be troubled with changing masks and playing characters to act in the world. But endurance is needed for long-term action and requires a denser psychological stratatum that can persist through time.

At minimum, I must elevate my perspective and self-interest contextually in order to act with meaningful conviction.

For the young person (like me) who seeks to produce in the world, I think it is wiser to mend one’s ego to be elastic than to lose it.

Wrote an answer about this a while back:

WP-CLI Command for Cleanly Removing Unused Plugins

My testing WP-Admin ends up being bloated with unused plugins/themes every now and then.

Going through each one and clicking uninstall is not very efficient so I wrote this little bash script that works with WP-CLI.

Dry Run:

wp plugin list --format=csv --fields=name,status | grep 'inactive$' | cut -d ',' -f 1 | echo

Final wipe

wp plugin list --format=csv --fields=name,status | grep 'inactive$' | cut -d ',' -f 1 | xargs wp plugin uninstall


# List all plugins and their statuses
wp plugin list --format=csv --fields=name,status  \

# Select strings that end with inactive
| grep 'inactive$' \

# Select the first column from a comma delimited string
| cut -d ',' -f 1 \

# Combine lines into a single line of arguments for following command
| xargs \

# Properly uninstall (calling all the hooks) and delete plugins
wp plugin uninstall


Every Dev Should Have A Personal VPS

VPS (Virtual Private Servers) are very inexpensive now a days. You can get small instances for less than $10/mo from most popular providers, and some services go as low as $20/year.

Here are some reasons for running at least one VPS.


Having root access to a server gives you the flexibility of hosting many web applications. A personal website, a portfolio, a showcase of your dev work, a blog… could run from the same VPS using Virtual Hosts, and in many cases a DigitalOcean 512MB Droplet can handle the load fine.

SSH Proxy

If you need to restrict access to your development web servers using IP-based rules, you can establish an SSH tunnel on your local computer to route browser traffic through SSH.

Personal VPN

You can create a personal VPN network to route traffic from many devices through your server and connect to your home devices when you are away.

Static IP

If you travel frequently and attempt to login to secured sites (Banks, Facebook, Gmail …) , some sites might suspect impose inconvenient security measures for suspicious activity. This can get annoying for the remote developer.

Having a stable IP tied only to your device makes it easier for you to put IP-based restrictions on your services, and to monitor usage.

Analytics Noise

If you visit a production site often it can skew your analytics. You can filter your dev IP to exclude traffic.

Public Connection Security

If you use public Wi-Fi, there is a risk of Man in the middle attacks if you don’t limit your interactions to HTTPS. A personal VPN can have strong encryption.

Other Benefits

You learn about UNIX, SSH, Firewalls and cloud technologies.