The long way through Software Craftsmanship

In Defense of Tooling

May 30, 2019 - 2 minute read - Comments - tooltoolingdave-dunfieldquotecurriculum

A quote (on a curriculum vitae) that I’ve enjoyed:

I am a firm believer in the value of tools, and often spend significant time at the beginning of a project developing tools specific to the needs of the project. This always pays off in the long run. I use tools to:

  • Perform tasks not otherwise achievable
  • Automate tedious/repetative processes
  • Simplify steps in the build/debug cycle
  • Eliminate “human error” in scanning, translation etc.
  • Access internal information easily and efficiently
  • more … the tools used in a project depend greatly on the project.
  • I am also a big fan of automation. When you automate a process, you not only make it easier and faster to perform, but you also remove variability in the execution of that process. This means fewer procedural errors, a faster development process, and a more stable and reliable product.

My reliance on tools and automation means that you will see me sitting in front of a command line interface (easy to automate) more frequently than graphical one (difficult to automate).

Dave Dunfield

In a way, it reminds me of how Steve Freeman and Nat Pryce try to remove as much uncertainty from a software project in the beginning of the project, not at the end.

Tooling is very important for everyday efficiency.

Self-Study in May 2019

May 1, 2019 - 1 minute read - Comments - self-study-aggregationmay2019archiveashley-madisonbarry-mazurbruce-schneiercompany-valuationdatadata-archivaldata-breachdecisiondecision-makingessayinformationinformation-managementliabilitymemexpersi-diaconispersonal-knowledge-basesecurityspillspin-a-pennystanfordstated-meeting-reporttoxictoxic-assetweb-archive

The Problem of Thinking Too Much

An example of what happens when you think too much. The paralysis that comes from it

Tags: persi-diaconis, stanford, stated-meeting-report, barry-mazur, spin-a-penny, decision-making, decision

Id: e14aba08-7add-11e9-9e23-0242ac110003 Read: Mon, 20 May 2019 09:01:39 +0000

Personal web archives; a report

Creating a personal web archive, based on the tools they created.

a browser extension for storing web pages, a web archive server hosting such snapshots, a(nother) browser extension to query such archives.

Tags: web-archive, memex, personal-knowledge-base, archive, information, information-management, data-archival

Id: 3a681acc-7ade-11e9-a0d7-0242ac110003 Read: Mon, 20 May 2019 09:04:09 +0000

Internet Data Is Rotting

How the internet data is rotting. How it is even important that this rots.

Tags: personal-knowledge-base, archive, data-archival

Id: 61b02a52-7ade-11e9-82fd-0242ac110003 Read: Mon, 20 May 2019 09:05:15 +0000

Data Is a Toxic Asset, So Why Not Throw It Out?

In this essay, Bruce Schneier discusses why having data is a liability. Should only be kept when strictly needed. Also, to keep in mind the cost of keeping the data secure

Tags: security, bruce-schneier, essay, liability, ashley-madison, toxic, data, data-breach, spill, toxic-asset, company-valuation

Id: 16e89556-8220-11e9-8887-0242ac110002 Read: Wed, 29 May 2019 14:43:14 +0000

Self-Study in April 2019

Apr 1, 2019 - 4 minute read - Comments - self-study-aggregationapril20191973actoractor-modeladadvicealexanderalgorithmalternativearchitectureb-treebatch-the-simple-stuffbluekaibookbusycc-langcareer-managementcarnegie-mellon-universityclassicclonecmucodecomparisoncontiguous-time-blocksconversioncoursecreatecstackcursordata-management-platformdatabasedbdelegatedmpdonald-littledrop-unimportant-tasksefficacyefficiencyethicalethicsfeedbackfeedback-loopgitlabgood-enoughgroupgroupthinkhewitthighlightindexirving-janisjames-kilejames-seibeljust-startlewis-carrolllook-aheadmanifestomemsqlmongodbnuodbpasswordpatterpattern-languagepdpplannerploppresentationprioritizeproductivityprojectput-it-offquoteregexregular-expressionremoteremote-workreplresourcesamir-shahseek-clarificationseminalsingle-task-important-itemsslideslides.comsqlsql-serversqlitestartupstrike-when-you-are-hotstructured-programmingtask-jarteamteam-dynamicteam-managementtechniquetooluniversityvalidationvoltdbwalkthroughworkworkshopycombinator

How to validate password with regular expression

Explains the ‘?=’ character in a regex, to validate conditions. Make it ‘.*’ to ‘contain’, rather than ‘startWith’

Tags: password, validation, look-ahead, regex, regular-expression

Id: 2ed5999a-555f-11e9-8bf8-0242ac110005 Read: Tue, 02 Apr 2019 15:51:30 +0000

Unlock honest feedback from your employees with this one word

I’ve read this article about asking for advice instead of asking for feedback and how that helped.

Tags: comparison, advice, feedback

Id: 3ca65d4c-577c-11e9-88ac-0242ac110005 Read: Fri, 05 Apr 2019 08:24:31 +0000


I’ve read this article explaining the dangers of Group think, some solutions.

Defined in 1972 by Irving L. Janis in a book by the same title, it’s more present when the group exhibits these behaviors:

  • A strong, persuasive group leader.
  • A high level of group cohesion.
  • Intense pressure from the outside to make a good decision

Tags: groupthink, team-management, book, group, team, team-dynamic, technique, irving-janis

Id: 6c90065c-577c-11e9-8741-0242ac110005 Read: Fri, 05 Apr 2019 08:25:52 +0000

Busy Person Patterns

This is a book of patterns (related to ‘A pattern language’, by Alexander et al) about Busy People (in a good way).

This is a collection of patterns to help you achieve productivity, efficiency, efficacy.

Explains how the patterns relate to one another, how they interact. Also, a quick reference based on the mood you’re experiencing

Tags: patter, pattern-language, alexander, busy, productivity, efficiency, efficacy, plop, just-start, contiguous-time-blocks, single-task-important-items, put-it-off, seek-clarification, batch-the-simple-stuff, task-jar, strike-when-you-are-hot, feedback-loop, prioritize, delegate, drop-unimportant-tasks, good-enough, james-kile, donald-little, samir-shah

Id: bcd32324-59e3-11e9-9acf-0242ac110005 Read: Mon, 08 Apr 2019 09:50:27 +0000

Data Management Platforms Demystified

This whitepaper explains what a DMP is, how does it convert, etc.

Tags: dmp, data-management-platform, bluekai, ad, conversion

Id: fecb0a0a-5ab8-11e9-b7b7-0242ac110005 Read: Tue, 09 Apr 2019 11:17:00 +0000

Ethical Alternatives & Resources

Some 300 hundred links of ethical products & services

Tags: ethics, ethical, alternative, resource

Id: cbf45e14-5ae6-11e9-a6ff-0242ac110006 Read: Tue, 09 Apr 2019 16:44:52 +0000

Code highlights in

This article explains how to highlight code in the software/site

Tags:, slide, code, highlight, tool, presentation

Id: 81d8a6ee-5c3c-11e9-9583-0242ac110006 Read: Thu, 11 Apr 2019 09:30:55 +0000


This course by the CMU (Carnegie-Mellon University) explains 7 databases in 7 weeks, one per talk.

Talks about SQL, NoSQL (key-value), about speed, about data management

Tags: database, book, cmu, carnegie-mellon-university, course, university, db, mongodb, index, memsql, voltdb, nuodb, sql-server

Id: 683816f6-5c3d-11e9-aadc-0242ac110006 Read: Thu, 11 Apr 2019 09:37:22 +0000

Startup Stock Options – Why a Good Deal Has Gone Bad

An interesting quote:

Valid reasons to work for a startup: - You are a cofounder.

  • You have little experience and you are using this to break into the industry, and get experience on many different > technologies (“wear many hats”).

  • They are working on a very specific problem or using a specific technology that you strongly desire to work on and it’s > difficult to do it anywhere else.

  • You want to work a certain way (remote, on the beach, whatever) and they are willing to go this route.

Invalid reasons for working at a startup:

  • Getting rich off stock options.

  • Making a lot of money in salary.

  • Work / life balance.

  • Stability.

Tags: quote, startup, career-management, ycombinator, james-seibel, work

Id: d074c386-5c3d-11e9-a6ce-0242ac110006 Read: Thu, 11 Apr 2019 09:40:17 +0000

Let’s Build a Simple Database

This is walk-through guide to create a database, in C

Tags: database, create, workshop, walkthrough, c-lang, c, sqlite, clone, project, cstack, repl, sql, algorithm, b-tree, cursor

Id: 8b8ea88e-5848-11e9-b07b-0242ac110002 Read: Sat, 06 Apr 2019 08:47:01 +0000

A Universal Modular ACTOR Formalism for Artificial Intelligence

In this seminal paper, Hewitt describes the actor model.

Full of quotes from Lewis Carroll.

Tags: actor, actor-model, hewitt, quote, lewis-carroll, planner, 1973, pdp, structured-programming, classic, seminal, architecture

Id: b60f9642-6098-11e9-bbfd-0242ac110003 Read: Tue, 16 Apr 2019 22:41:01 +0000

All Remote

The remote manifesto by gitlab.

  • All-remote work promotes:

  • Hiring and working from all over the world instead of from a central location.

  • Flexible working hours over set working hours.

  • Writing down and recording knowledge over verbal explanations.

  • Written down processes over on-the-job training.

  • Public sharing of information over need-to-know access.

  • Opening up every document for editing by anyone over top-down control of documents.

  • Asynchronous communication over synchronous communication.

  • The results of work over the hours put in.

  • Formal communication channels over informal communication channels.

Some tools to make this happen:

  • Faster internet everywhere - 100Mb/s+ cable, 5GHz Wifi, 4G cellular
  • Video call software - Google Hangouts, Zoom
  • Mobile technology - Everyone has a computer in their pocket
  • Evolution of speech-to-text conversion software - more accurate and faster than typing
  • Messaging apps - Slack, Mattermost, Zulip
  • Issue trackers - Trello, GitHub issues, GitLab issues
  • Suggestions - GitHub Pull Requests, GitLab Merge Requests
  • Static websites - GitHub Pages, GitLab Pages
  • English proficiency - More people are learning English
  • Increasing traffic congestion in cities

Tags: tool, gitlab, remote, remote-work, manifesto, work

Id: d71b9822-6b38-11e9-9973-0242ac110003 Read: Tue, 30 Apr 2019 11:12:28 +0000

Books read in 2019Q1

Mar 31, 2019 - 14 minute read - Comments - bookreading2019Q1self-studyaprendicesreading-club

This quarter I’ve focused my efforts on a mix of everything:

  • business books: Traction, The Goal
  • philosophy: Stoicism and personal philosophy
  • some finance: classic: Malkiel, personal finance: Robin
  • some classic psychology: Frankl
  • a classic novel: The Metamorphosis (Kafka)

Read this quarter:

  • Hombre en busca del sentido, el; Frankl; own-it, non-technical
  • Metamorfosis; Kafka; own-it, non-technical
  • Your money or your life; Dominguez, Robin; non-technical, finance, own-it
  • Traction; Wickman; own-it, non-technical
  • How to Be a Stoic: Using Ancient Philosophy to Live a Modern Life; Pigliucci; own-it, non-technical
  • Guide to the Good Life, The Ancient Art of Stoic Joy, a; Irvine; non-technical, own-it
  • Goal, the; Goldratt (+); own-it
  • Random walk down wall street a; Malkiel [Parts I, II, III]; own-it

Note: re+read means I’m re-reading this book. The (+) stands for one-or-more times, as in the regexes.

Note: As a curiosity, I’ve added 30 books to the queue in this quarter, while only reading 8. So the list will naturally grow over time.

El hombre en busca del sentido; Frankl (Man’s Search for Meaning)

In this book, Viktor Frankl relates his experiences and learning at the concentration camp.

One of Frankl’s main claims in the book is that a positive attitude was essential to surviving the camps. Consequently, he implied that those who died had given up

Metamorfosis; Kafka

The Metamorphosis tells the story of salesman Gregor Samsa who wakes one morning to find himself inexplicably transformed into a huge insect and subsequently struggling to adjust to this new condition

Your money or your life; Dominguez, Robin

This book is split in two parts:

  • Introduction to its philosophy
  • Practical advice for implementing said philosophy


In the first part, the authors give your a framework for computing your real hourly wage: (salary - expenses) / (work time*). where: - salary: net income from your job/employment - expenses: monetary expenses needed to maintain said job (e.g., car to commute to work, work clothing, work lunches) - work time*: hours of work + hours of everything related to work (e.g., commuting, shopping for work clothing, rest time when you are very stressed at work)

They explain the importance of doing the things that motivate us, that bring a positive impact to society and to the world

Traction; Wickman

Recommended by Evgeny Predein, who runs Apiumhub following the advice from this book.

A book report can be found here

How to Be a Stoic: Using Ancient Philosophy to Live a Modern Life; Pigliucci

In this book, which was published after Guide to the Good Life (Irvine), there a few twists to this other referenced book.

Has many examples of how the author lives his life according to this philosophy.

Explains the history of Stoicism (from the Stoa Poikile - the painted Stoa [stoa = portico, porch]).

Guide to the Good Life, The Ancient Art of Stoic Joy, a; Irvine; non-technical

Explains the concept of personal philosophy of life. That it is more important to have one than to have the correct one. That many people don’t have one, don’t even know this concept and go their whole lives without wondering if such thing exists.

Tries to adapt the ancient Stoic philosophy to the modern environment. There are a few twists to the Greek & Roman setups (the Greeks mostly valued virtue, the Romans mostly valued tranquility)

Explains the Stoic virtues, some exercises.

Goal, the; Goldratt (+)

Recommended by Evgeny Predein.

A management-oriented novel […]

The main goal of this novel is to teach using the Socratic method. The authors believe this is a good setup for practicing this concept. It also appears inside the novel, when the wife of the main character also references the Socractic dialogues.

In the introduction, the authors also try to explain the purpose of the book: doing science - coming up with hypotheses, experimenting, validating/invalidating them.

Introduces the concept of the mentor (in the form of a hippie business consultant), for someone who is not available all the time, who aims to provide tips for change itself, rather than making the change.

This book has inspired ‘The Phoenix Project’ (which I also read in the past).

Random walk down wall street a; Malkiel [Parts I, II, III]

(notes from 2019-03-23)

This is a practical guide to understanding finances at an amateur investor level.

Explains concepts such as:

  • Efficient Market Theory (EMT)
  • Capital-Asset Pricing Model (CAPM)
  • Beta (systematic risk from CAPM) and unsystematic risk
  • Modern Portfolio Theory (MPT)
  • Technical and Fundamental Analysis
  • Castles-in-the-air vs Firm-Foundation Theories

Explains the background to the current investment scenario: the bubbles, the analysts, the conflicts of interest.

All of that in readable prose, well-connected story.

Also provides a practical guide for the investor, mostly targeted at the US investor (e.g., IRA, Roth IRA, 529s, 401(k))

Spoiler: a random walk is defined as a path in which the next step (to be taken) bears no relationship to the past. This is what the author suggests in relation to the stock prices.

Export from my backlog

backlog (partially sorted):

  • unsorted V
  • The Machine That Changed the World: The Story of Lean Production
  • Haskell Programming
  • Software Architecture in Practice
  • lucha por la desigualdad, la; Pontón; non-technical
  • psicología del dinero, la; Hammond; non-technical
  • Invirtiendo a largo plazo; García Paramés; non-technical, finance
  • Well-Grounded Java Developer, the; own-it
  • Learn You a Haskell for Great Good!; own-it
  • camino al 18J, el; Payne; non-technical
  • Cartas desde la revolución bolchevique; Sadoul; non-technical
  • Java Performance: The Definitive Guide
  • Why programmers work at night
  • Shogun: The Life of Tokugawa Ieyasu; Sadler; non-technical
  • Scrum and XP from the trenches, 2nd edition;
  • Els jueus i Catalunya; Villatoro; non-technical
  • El problema de los tres cuerpos; Liu; non-technical
  • Amazon Web Services in Action; own-it
  • Clojure Programming - Practical Lisp for the Java World
  • Mature optimization
  • XUnit Test Patterns
  • Let Over Lambda
  • The Haskell Road to Logic, Math and Programming
  • Types and Programming Languages
  • Fundamentals of Object-oriented Design in UML
  • Clojure for the brave and true
  • How to Solve It: A New Aspect of Mathematical Method
  • Conceptual Mathematics: A First Introduction to Categories
  • Understanding Computation: From Simple Machines to Impossible Programs
  • Programming in Haskell
  • Programming Languages: Application and Interpretation
  • Doing Math with Python
  • Perfect Software: And Other Illusions about Testing
  • Computability and Complexity - From a Programming Perspective
  • Thinking Forth: a language and philosophy for solving problems
  • Concepts, Techniques, and Models of Computer Programming
  • Bridging the Communication Gap; Adzic
  • Specification by Example; Adzic
  • Cucumber book, the; Adzic
  • Software Architecture for Developers; Brown
  • Object Design: Roles, Responsibilities, and Collaborations
  • RESTful Web APIs
  • RESTful Web Services Cookbook
  • Building Maintainable Software
  • Serverless - Patterns of Modern Application Design Using Microservices (Amazon Web Services Edition)
  • A Pattern Language; Alexander
  • Types and Programming Languages, TAPL; Pierce; own-it
  • Speed Reading Book: Read More, Learn More, Achieve More, the; Buzan
  • Cómo crear mapas mentales (Crecimiento personal); Buzan
  • First things first; Covey
  • What’s best next; Perman
  • problems of philosophy, the; Russell
  • Requiem for the American dream; Chomsky
  • sun also rises, the; Hemingway
  • travels, the; Polo; non-technical
  • Homo Deus: A Brief History of Tomorrow; Harari; non-technical
  • Books by Aristotle; non-technical
  • Books by Plato; non-technical
  • Books by Descartes; non-technical
  • The idea of culture; Eagleton; non-technical
  • Hereditary Intelligence; Galton; non-technical
  • Lean Software Development: An Agile Toolkit; Poppendieck (+)
  • Chaos Monkeys: Obscene Fortune and Random Failure; Garcia Martinez
  • Implementing Lean Software Development: From Concept to Cash; Poppendieck
  • Joel on Software; Spolsky
  • Death March; Yourdon
  • Psychology of Computer Programming, The; Weinberg
  • Introduction to General Systems Thinking; Weinberg
  • Lao Tzu : Tao Te Ching : A Book About the Way and the Power of the Way; Tzu, Le Guin; non-technical
  • Gay Science, the; Nietzsche; non-technical
  • Being Geek; Lopp
  • Finance for Freelancers; Retallick; non-technical, finance
  • Object-oriented software engineering: a use case driven approach; Jacobson
  • Patterns of Enterprise Application Architecture; Fowler; own-it
  • Romeo y Julieta; Shakespeare; non-technical
  • Computer Systems: A Programmer’s Perspective; Bryant, O’Hallaron
  • My Journey to Lhasa: The Classic Story of the Only Western Woman Who Succeeded in Entering the Forbidden City; David-Néel; non-technical
  • Cathedral and the bazaar, the ; Raymond
  • Coding dojo handbook, the; Bache; own-it
  • Making software; Oram and Wilson; own-it
  • Code complete; McConnell; own-it
  • Soft skills; Sonmez; own-it
  • DSLs in action; Ghosh; own-it
  • Purely functional data structures; Okasaki; own-it
  • Working effectively with unit tests; Fields (+); own-it
  • First Nazi, the; Ludendorff; non-technical
  • Greatest story ever told … so far; Krauss; non-technical
  • Master algorithm, the; Domingos; non-technical
  • Invention of Science, the; Wootton; non-technical
  • Tesla: Inventor of the electrical age; Bernard Carlson; non-technical
  • Psychology in minutes; Weeks; non-technical
  • Alan Turing: The Enigma; Hodges; non-technical
  • How to think more about sex; de Botton; non-technical
  • Piccolo manuale di persuasione; Taylor; non-technical
  • arte de la guerra, el; Sun Tzu; non-technical, own-it
  • Piccolo manuale di leadership Confuciana; Adair; non-technical
  • How to Stop Worrying and Start Living; Carnegie; non-technical
  • Uomo - Guida allo stile; Roetzel; non-technical
  • Unwritten Laws of Engineering: Revised and Updated Edition; King
  • Test-Driven JavaScript Development (Developer’s Library); Johansen
  • Test Driven Development: By Example; Beck
  • Arquitectura Java JPA Domain Driven Design; Alvárez, Peláez
  • End of loyalty, the; Wartzman; non-technical
  • Basic Economics; Sowell; non-technical
  • Introduction to Economic Analysis; McAfee; non-technical
  • Patterns of Software; Gabriel
  • Coders at work; Seibel
  • Clean architecture; Martin
  • How to be a stoic - Pugliucci; non-technical
  • Introduction to Object-Oriented Programming, an; Budd
  • Gafas de la felicidad, las; Santandreu; non-technical
  • Ser feliz en Alaska; Santandreu; own-it, non-technical
  • Mochila para el universo, una; Punset; non-technical
  • Gods themselves, the; Asimov; non-technical
  • Panamá papers, the; Obermayer, Obermaier; non-technical
  • Originals; Grant; non-technical
  • Optimism over despair; Chomsky; non-technical
  • SCIENCE OF BREATH: A Practical Guide; Ballentine, Hymes; non-technical
  • Yoga Explained: A New Step-by-step Approach to Understanding and Practising Yoga; Mehta,‎ Arjunwadkar; non-technical
  • Wanderlust: A Modern Yogi’s Guide to Discovering Your Best Self; Krasno; non-technical
  • How to Think About Money; Clements; non-technical, finance
  • By Way of Deception; Ostrovsky; non-technical
  • Printemps des sayanim, le; Cohen; own-it, non-technical
  • Deep work; Newport; non-technical, own-it
  • Hooked: How to Build Habit-Forming Products; Eyal, Hoover; non-technical
  • Irresistible: The Rise of Addictive Technology and the Business of Keeping Us Hooked; Alter; non-technical
  • The Attention Merchants: The Epic Scramble to Get Inside Our Heads; Wu; non-technical
  • Willpower: Why Self-Control is The Secret to Success; Baumeister, Tierney; non-technical
  • Principles of Psychology, the; James; own-it, non-technical
  • Our mutual friend; Dickens; non-technical
  • Crucial Conversations: Tools for Talking When Stakes Are High, Second Edition; Patterson, Grenny, McMillan, Switzler; non-technical
  • Amusing Ourselves to Death - Public Discourse in the Age of Show Business; Postman; non-technical
  • Mastery; Greene; non-technical, own-it
  • Silence in the age of noise; Kagge; non-technical
  • Functional programming simplified; Alexander; own-it
  • Batalla del Ebro, la; Reverte; non-technical
  • Historia de la guerra civil española; Rojo; non-technical
  • Lucha por el poder, la; Evans; non-technical
  • Revolución rusa, la; Pipes; non-technical
  • Holocausto, el; Rees; non-technical
  • Martín Lutero, renegado y Profeta; Roper; non-technical
  • Siglo de la revolución, el ; Fontana; non-technical
  • Història de la revolución rusa; Trotsky; non-technical
  • Dispossessed, the; Le Guin; non-technical
  • Left hand of darkness; Le Guin; non-technical
  • Lathe of heaven; Le Guin; non-technical
  • Books in general – Epstein
  • Affluent society, the; Galbraith; non-technical, finance
  • Philosophy of the Buddha; Bahm; non-technical
  • Tribe of mentors; non-technical, own-it
  • 5 dysfunctions of a team; non-technical
  • Ziglar’s Top Performance; non-technical
  • Pragmatic Programmer (+)
  • High Output Management; Grove; non-technical
  • First Break All the Rules; non-technical
  • Managing for happiness; Appelo; non-technical
  • Meditations; Marcus Aurelius; non-technical, own-it
  • Why budism is true; Wright; non-technical, own-it
  • 7 hábitos de la gente altamente productiva
  • art of readable code
  • Domain modeling made functional
  • Sketchbook handbook; own-it
  • Agile samurai, the
  • Miracle of Mindfulness, the; Hanh; non-technical, own-it
  • No mud, no lotus: The Art of Transforming Suffering; Hahn; non-technical
  • Lean Architecture: for Agile Software Development; Coplien, Bjørnvig
  • Agile IT Organization Design: For Digital Transformation and Continuous Delivery; Sriram Narayan
  • Philosophy of Software Design, a; Ousterhout
  • Hope in the Dark; Solnit
  • Agile!: The Good, the Hype and the Ugly; Meyer
  • Common Stocks and Uncommon Profits and Other Writings; Fisher, Fisher; non-technical, finance
  • Prize: The Epic Quest for Oil, Money & Power, the; Yergin; non-technical
  • So good they can’t ignore you; Newport
  • Creating a Software Engineering Culture; Wiegers
  • Managing Humans: Biting and Humorous Tales of a Software Engineering Manager; Lopp
  • Don’t make me think; Krug
  • Leaders eat last; Sinek; own-it
  • art of the start, 2, the; Kawasaki; own-it
  • Unlimited memory; own-it
  • Selfish gene, the; Dawkins; own-it
  • Public speaking skills for dummies; own-it
  • 365 days with discipline; own-it
  • How to fight; Hahn; own-it
  • 33 strategies of war; own-it
  • Leader who had no title, the; own-it
  • greatness guide, the; own-it
  • Year of happy living, the; own-it
  • 4 hour chef, the;; own-it
  • Finish what you start; own-it
  • Personal MBA, the; Kaufmann; own-it
  • Richest man in Babylon, the; own-it
  • Think and grow rich; Hill; own-it
  • Why Buddhism is true; own-it
  • Wisdom of Hypatia: Ancient Spiritual Practices for a More Meaningful Life, the; MacLennan; non-technical
  • Just enough software architecture
  • Elastic leadership; Osherove; own-it, non-technical
  • Taking smart notes; own-it, non-technical
  • Secure by design; own-it
  • Reset; Sawyer; non-technical, finance
  • Investor’s manifesto, the; Bernstein; own-it, non-technical, finance
  • Splendid exchange, a; Bernstein; own-it, non-technical, finance
  • Birth of plenty, the; Bernstein; own-it, non-technical, finance
  • Simple path to wealth, the; Collins; own-it, non-technical, finance

unfinished (unsorted):

  • Working Effectively with Legacy Code (+); Feathers; own-it
  • Nonviolent communication (+); Rosenberg; own-it, non-technical
  • Introduction to Buddhism: Teachings, History and Practices, an; Harvey; non-technical, own-it
  • Effective Java; Bloch; own-it
  • Functional Programming Patterns in Scala and Clojure; own-it
  • Release It! - Design and Deploy Production-Ready Software; own-it
  • Refactoring (+); Fowler; own-it
  • Leprechauns of Software Engineering (+), the; Bossavit; own-it
  • Domain-Driven Design: Tackling Complexity in the Heart of Software; Vernon (+); own-it
  • Pragmatic Thinking and Learning: Refactor Your Wetware; own-it
  • Readings in Database Systems, 5th Edition; own-it
  • Structure and Interpretation of Computer Programs (SICP); Abelson, Sussmann, Sussmann; own-it
  • La Sociedad De Coste Marginal Cero (Estado y Sociedad); Rifkin; non-technical
  • Odisea; Homero; non-technical
  • Switch: How to Change Things When Change Is Hard; Heath, Heath; own-it, non-technical
  • Cómo leer un libro; Adler, van Doren; non-technical, own-it


  • Mundo nuevo, ahora, un; Tolle; own-it, non-technical
  • Continuous Delivery; Humble, Farley; own-it
  • Java Concurrency in Practice (JCIP); Goetz
  • Thinking fast and slow; Kahneman; non-technical
  • Your money or your life (+); Dominguez, Robin; finance, non-technical, own-it
  • five dysfunctions of a team: a leadership fable, the; Lencioni; non-technical
  • Who rules the world?; Chomsky; non-technical, own-it
  • Random walk down wall street a; Malkiel [Part IV]; own-it

wip (2):

  • Hombre multiorgásmico, el; Chía, Arava; own-it, non-technical
  • Object-Oriented Design Heuristics; Riel
  • 4 pillars of investment, the; Bernstein; own-it, finance, non-technical


  • Hombre en busca del sentido, el; Frankl; own-it, non-technical
  • Metamorfosis; Kafka; own-it, non-technical
  • Your money or your life; Dominguez, Robin; non-technical, finance, own-it
  • Traction; Wickman; own-it, non-technical
  • How to Be a Stoic: Using Ancient Philosophy to Live a Modern Life; Pigliucci; own-it, non-technical
  • Guide to the Good Life, The Ancient Art of Stoic Joy, a; Irvine; non-technical, own-it
  • goal, the; Goldratt (+); own-it
  • Random walk down wall street a; Malkiel [Parts I, II, III]; own-it


  • Stanger in a strange land; Heinlein; own-it, non-technical



  • Prince, the; Macchiavello; non-technical, own-it
  • Nuevo kama-sutra ilustrado, el; Gallotti; non-technical
  • Quien se ha llevado mi queso; Johnson; own-it
  • One minute manager, the; Blanchard; own-it, non-technical
  • En defensa de los ociosos; Stevenson; non-technical, own-it
  • Ladybird Book of Mindfulness, the (Ladybirds for Grown-Ups); Hazeley, Morris; non-technical
  • Art of the start, the; Kawasaki; own-it, non-technical
  • Getting started with NoFap; non-technical
  • Emotional intelligence; Goleman; non-technical
  • Old man’s war; Scalzi; non-technical, own-it
  • Nightfall; Asimov, Silverberg; own-it, non-technical
  • Interface; Stephenson, George; non-technical, own-it
  • Man who sold the moon, the; Heinlein; own-it, non-technical
  • Agents of innocence; Ignatius; own-it, non-technical
  • Fist of god, the; Forsyth; own-it, non-technical
  • Avaro, el; Molière; own-it, non-technical
  • Bogleheads’ Guide to Investing, the; Larimore, Lindauer, LeBoeuf; own-it, non-technical, finance
  • Lazyperson’s guide to investment; Farrell; own-it, non-technical, finance
  • Millionaire next door, the; Stanley, Danko; own-it, non-technical, finance
  • Little Book of Common Sense Investing; Bogle; own-it, non-technical, finance
  • Monje que vendió su Ferrari, el; Sharma; own-it, non-technical
  • Siddhartha; Hesse; non-technical, own-it
  • If you can: how millenials can get rich slowly; Bernstein; own-it, non-technical, finance
  • Odessa; Forsyth; non-technical, own-it
  • Bogle on mutual funds: new perspectives for the intelligent investor; Bogle; own-it, non-technical, finance
  • Perros de la guerra, los; Forsyth; own-it, non-technical
  • avaro y el oro, el; Esopo; non-technical
  • Aulularia; Plauto; own-it, non-technical
  • Alternativa del Diablo, la; Forsyth; own-it, non-technical
  • Guía, el; Forsyth; own-it, non-technical
  • Pied piper; Forsyth; own-it, non-technical
  • Hunt for the Red October, the; Clancy; own-it, non-technical
  • Time to kill, a; Grisham; own-it, non-technical
  • Ética promiscua; Easton, Hardy; own-it, non-technical
  • Checklist manifesto, the; Gawande; own-it, non-technical
  • Team geek (+); own-it
  • Kata de la voluntad; non-technical
  • Obstacle is the way, the; non-technical
  • Guide to stoicism, a; Stock; own-it, non-technical
  • Senior software developer, the; Copeland; own-it
  • Scandal in Bohemia, a; Doyle; own-it
  • Getting things done, …; Allen (+); own-it, non-technical
  • Nature of Software Development, the; Jeffries; own-it
  • Team Geek; Fitzpatrick, Collins-Sussman; own-it
  • Aprendo Yoga; Van Lysebeth; non-technical, own-it
  • Clean Coder: A Code of Conduct for Professional Programmers, the; Martin; own-it
  • ML for the working programmer, 2nd edition [5th chapter only]; Paulson; own-it
  • Lazarillo de Tormes, el; anónimo; non-technical
  • Tom Clancy’s power plays - Politika; Preisler; own-it, non-technical
  • Moon is a harsh mistress, the; Heinlein; own-it, non-technical
  • Tus zonas erróneas; Dyer; non-technical, own-it
  • Peopleware; DeMarco, Lister (+); own-it
  • Phoenix project, the ; Kim, Behr, Spafford; own-it
  • Ética a Nicómaco; Aristotle; own-it, non-technical
  • Book of transformation; Dalai Lama; non-technical
  • Como ganar amigos e influir sobre las personas; Carnegie (+); own-it
  • Oliver Twist; Dickens; own-it, non-technical
  • Building evolutionary architecture; Ford, Parsons; own-it
  • Selfie: How We Became So Self-Obsessed and What It’s Doing To Us; Storr. Just chapter 1: The dying self; own-it, non-technical
  • Sota la cistella; Gasol; own-it, non-technical

Self-Study in March 2019

Mar 1, 2019 - 9 minute read - Comments - self-study-aggregationmarch2019abstractionadviceagileagile-developmentanalogyandroidanti-architecturearchitectureask-hnaustraliabootstrapburtonatorcareer-changecareer-managementchangechasmclientclosedclosed-standardclscomparisonconsultingcontinuation-local-storagecreativitycritical-pathdesigndev-toolseconomic-perspectiveend-user-programmingengineerextensibilityextensionfinanceflexibilityfor-profitfounderfreelancegooglegotifygps-driftgrid-layouthackernewshealthy-eatinghealthy-testinghistoryhooki18nintegration-testkent-c-doddsleaderlean-testingleapfrog-solutionlearningloggingmaintenancemanagementmetaphormichael-pollanmoficationmoney-managementmoney-wealthmythnodejsnotificationnotification-serviceocpopenopen-closed-principleopen-sourceopen-standardpersonal-knowledge-basepolarizedprint-designprofessional-growthprogrammingprogressionproject-managementprotocolproxypublic-speakingquotereflectionreplresourcereturn-on-investmentrevenuereviewroiruleself-hostedside-businessside-hustlesolo-founderspeakspeakingspreadsheetsqlstartuptest-pyramidtestingtesting-pyramidtesting-trophytheorythread-localthread-local-storagetime-managementtime-wealthtlstooltrace-idtracingunit-testunixuserw3wwarcwarchweb-2.0web-3.0web-archiveweb-builderweb-designweb-design-3.0what-three-words

NodeJS logging made right

Explains logging and tracing in nodejs.

Usage of thread-local storage, trace id, continuation local storage.

Tags: nodejs, logging, tracing, thread-local, thread-local-storage, trace-id, continuation-local-storage, cls, tls, proxy, hook

Id: 5bed4596-3f5b-11e9-83e1-0242ac110005 Read: Tue, 05 Mar 2019 15:28:42 +0000

Web Design 3.0: When Your Web Design Really Matters

In Chapter 1, we will find out how Web Design is changing. Also, you will learn about the birth of the new generation of web designers, who are designing web pages in Web Design 3.0.

In Chapter 2, we will talk about website builders that are lagging behind the trends and slowing down the Web Design evolution.

In Chapter 3, you will learn how to create modern web designs quickly and easily in a new way.

Has walk through the different design phases, techniques; both in press (printed) design as in web design.

Explains some web builders.

Explains the concept of the web 3.0:

  • Free positioning.
  • Element overlapping.
  • Breaking the limitations of Bootstrap-like Grids.

States the different needs for webmasters and designers:

Web Designers need:

  • Free positioning
  • Removing table constraints
  • Layers
  • Property Panel for elements
  • Support for Windows and Mac OS

Webmasters need:

  • Clean HTML and CSS
  • Mobile device support
  • WordPress and Joomla support
  • Building websites online


Website builders are lagging behind the rapidly changing Web Design world.

The history of web design tools has involved several transitions. However, progress has stopped. There are numerous signs that the new transition must happen.

There are separate markets for web designers and webmasters. Popular website builders do not support the main features of Web Design 3.0: free positioning, modern grids, and layers.

Tags: comparison, web-design, print-design, web-builder, creativity, metaphor, grid-layout, bootstrap, flexibility, design, web-3.0, web-design-3.0, web-2.0, progression

Id: 5101ce2e-3f5e-11e9-83d9-0242ac110005 Read: Tue, 05 Mar 2019 15:49:52 +0000

Gotify – a self-hosted push-notifications service

Tags: gotify, self-hosted, notification, notification-service, android, open-source

Id: e839c82a-4367-11e9-b34d-0242ac110007 Read: Sun, 10 Mar 2019 19:08:36 +0000

Ask HN: How to speak like a leader, not like an engineer?

Links and resources for speaking like a leader

Tags: leader, engineer, comparison, change, public-speaking, speak, speaking, career-management, career-change, professional-growth, resource:

Id: 1a478fc8-4368-11e9-b657-0242ac110007 Read: Sun, 10 Mar 2019 19:10:00 +0000

ArchiveBox: Open-source self-hosted web archive

Tools for archiving purposes. Has links to other sites:

Tags: burtonator, web-archive, polarized, warch, warc, personal-knowledge-base

Id: 4168161c-436e-11e9-aa0d-0242ac110007 Read: Sun, 10 Mar 2019 19:54:03 +0000

Ask HN: As a freelancer, what’s the best app to track finances?

Describes tools for finance for freelancers. Stresses the importance of time wealth

Tags: time-management, money-management, freelance, tool, ask-hn, hackernews, finance, time-wealth, money-wealth

Id: b74a6696-4c83-11e9-99bd-0242ac110005 Read: Fri, 22 Mar 2019 09:20:21 +0000

What I Learned in My First Year as a Solo Founder

Learnings by a solo founder.

Benefits of having a side project or side hustle

Tags: side-hustle, side-business, learning, reflection, solo-founder, founder, revenue

Id: f0dee42c-5142-11e9-9444-0242ac110006 Read: Thu, 28 Mar 2019 10:19:16 +0000

Write tests. Not too many. Mostly integration.

This is a paraphrasing of some advice for healthy eating: ‘Eat food, not too much, mostly plants.’ (Pollan)

Write tests.

Often I find myself saving time when I put time in to write tests

Not too many: you get diminishing returns on your tests as the coverage increases […]

Mostly integration: as you move up the pyramid, the confidence quotient of each form of testing increases

Integration tests strike a great balance on the trade-offs between confidence and speed/expense

Tags: unit-test, testing, test-pyramid, healthy-testing, advice, integration-test, quote, kent-c-dodds, analogy

Id: d148d774-5144-11e9-94d8-0242ac110006 Read: Thu, 28 Mar 2019 10:32:42 +0000

7 Rules for Eating

In this reference article, Michael Pollan explains his seven rules for eating:

  1. Don’t eat anything your great grandmother wouldn’t recognize as food. “When you pick up that box of portable yogurt tubes, or eat something with 15 ingredients you can’t pronounce, ask yourself, “What are those things doing there?” Pollan says.
  2. Don’t eat anything with more than five ingredients, or ingredients you can’t pronounce.
  3. Stay out of the middle of the supermarket; shop on the perimeter of the store. Real food tends to be on the outer edge of the store near the loading docks, where it can be replaced with fresh foods when it goes bad.
  4. Don’t eat anything that won’t eventually rot. “There are exceptions – honey – but as a rule, things like Twinkies that never go bad aren’t food,” Pollan says.
  5. It is not just what you eat but how you eat. “Always leave the table a little hungry,” Pollan says. “Many cultures have rules that you stop eating before you are full. In Japan, they say eat until you are four-fifths full. Islamic culture has a similar rule, and in German culture they say, ‘Tie off the sack before it’s full.’”
  6. Families traditionally ate together, around a table and not a TV, at regular meal times. It’s a good tradition. Enjoy meals with the people you love. “Remember when eating between meals felt wrong?” Pollan asks.
  7. Don’t buy food where you buy your gasoline. In the U.S., 20% of food is eaten in the car.

Also, four myths:

  1. Food is a delivery vehicle for nutrients. What really matters isn’t broccoli but its fiber and antioxidants. If we get that right, we get our diet right. Foods kind of get in the way.
  2. We need experts to tell us how to eat. Nutrients are invisible and mysterious. “It is a little like religion,” Pollan said. “If a powerful entity is invisible, you need a priesthood to mediate your relation with food.”
  3. The whole point of eating is to maintain and promote bodily health. “You are either improving or ruining your health when you eat – that is a very American idea,” Pollan says. “But there are many other reasons to eat food: pleasure, social community, identity, and ritual. Health is not the only thing going on on our plates.”
  4. There are evil foods and good foods. “At any given time there is an evil nutrient we try to drive like Satan from the food supply – first it was saturated fats, then it was trans fat,” Pollan says. “Then there is the evil nutrient’s doppelganger, the blessed nutrient. If we get enough of that we, will be healthy and maybe live forever. It’s funny through history how the good and bad guys keep changing.”

This can all be summarized as “Eat food, not too much, mostly plants.”

Tags: healthy-eating, michael-pollan, rule, advice, myth, analogy

Id: 30ece1fc-5145-11e9-87de-0242ac110006 Read: Thu, 28 Mar 2019 10:35:22 +0000

Lean Testing or Why Unit Tests are Worse than You Think

This article puts testing in an economic perspective. Calls it lean testing

Also references/paraphrases Michael Pollan’s Rules for eating ().

Creates a testing trophy, a figure to explain the best testing pattern, replacing the testing pyramid

Explains return on investment (ROI) on tests

integration tests provide the best balance of cost, speed and confidence

Integration tests lie somewhere between unit tests and end-to-end tests so they provide the best balance. Therefore, they have the highest ROI.

The main idea is to just not mock so much

Tags: economic-perspective, lean-testing, testing-trophy, testing-pyramid, return-on-investment, roi, critical-path, testing, unit-test, anti-architecture, architecture, maintenance

Id: efe85d00-5147-11e9-87ce-0242ac110006 Read: Thu, 28 Mar 2019 10:55:02 +0000

End-user programming

In this article, the writer explains some of the end-user modifications to programs. Examples include: adding download capabilities to instagram, generating backups for files.

On the other hand, applications (especially mobile) are tightly sealed, not allowing modification or extension. Even FOSS (free, open source software), modification implies the learning curve / entry barrier of having to setup, compile, debug the original program and modifications.

Gives the example of the UNIX command line, as a programming environment. One that provides (one of) the best REPL examples.

Characterizes spreadsheets as ad-hoc databases, programs; mostly created by domain experts (aka subject matter experts), than professional software engineers. Take into account that these hats are non-exclusive: a domain expert can also be a professional software engineer.

The author tries to coin the term “end-user programming” to differentiate it from programming by professional software developers, who try to build general-purpose apps, to be used by thousands of people.

This also means, that a professional software developer can be an “end-user programmer”, when creating solutions for themselves (limited user group), rather than for the general public. Maybe those one-off scripts that we create, are some kind of end-user programs. This is described in the article as well.

Talks of the chasm the user has to cross in order to customize the behaviour of their software. This is related to working in a framework or a library, in the sense of ‘who keeps the control’. In an UNIX, filesystem environment, you keep the control.

References “citizen developers” (

Three qualities for end-user programming: embodiment, living systems, and in-place toolchains

Embodiment: it requires the programmer hold many abstractions in their mind. Related to abstract reasoning. Mentions that many end-users don’t have these abstractions in their mind, but are capable of abstract reasoning in their own domains of expertise. Mentions that via visual representations onscreen, we can help the end-user. An example: preview formula results in a spreadsheet; highlight the cells in a spreadsheet.

Embodiment means, broadly, making elements of the programming experience more concrete and visual

Living systems: interaction with them. Refers to shortening the feedback cycle

“Live programming gives the programmer immediate feedback on the behavior of a program as it is edited, replacing the edit compile-debug cycle with a fluid programming experience.“

But only short feedback loops, but also to change the system behaviour from within, such as the LISP compiler reading and compiling the source code from inside a program.

In-place tool chains

The user should be able to edit their programs without installing additional tools or programs

a Unix shell script is just a series of commands saved into a text file

Meaning that the user is already accustomed to issuing those commands. A script is just grouping those commands.

Gives examples of end-user programming success stories: spreadsheets, SQL, browser dev tools,

Tags: end-user-programming, programming, extensibility, open-closed-principle, ocp, mofication, user, extension, unix, repl, spreadsheet, reflection, theory, history, review, sql, dev-tools, chasm, abstraction

Id: 4490792a-514b-11e9-9861-0242ac110006 Read: Thu, 28 Mar 2019 11:18:52 +0000

Why developers consider Agile development to be nonsense

This article explains how Agile development is apt and indicated for short-term software development, especially for contracting or consulting companies, where the client is external to the team.

Why it does not make as much sense in products/services where there is a leapfrog solution.

Don’t give the customer what they ask for; understand them, and revolutionize their world.

Tags: leapfrog-solution, google, agile, agile-development, comparison, project-management, client, consulting, management

Id: 9035ea3c-514f-11e9-9676-0242ac110006 Read: Thu, 28 Mar 2019 11:49:37 +0000

Why bother with What Three Words?

In this article, the author questions why using a closed protocol for translating geo-coordinates to words.

The author complains that it is masquerading a for-profit, closed algorithm as an open standard.

Also, that the GPS locations are drifting very quickly in some places, therefore the translated address changes, but the local address (e.g., 1 Wall Street), does not.

Tags: gps-drift, australia, open-standard, closed-standard, for-profit, protocol, open, closed, what-three-words, w3w, i18n, startup

Id: 960e6750-5202-11e9-bb40-0242ac110008 Read: Fri, 29 Mar 2019 09:11:07 +0000

Refactoring: split loop + loop/map equivalence

Feb 6, 2019 - 2 minute read - Comments - refactoringsplit-loopsplit-loop-refactoringloop-map-equivalencecodekotlinmultiparadigmfunctional-programmingfpobject-oriented-programmingobject-orientedoooop

We can combine the “Split loop” refactoring technique plus the “Loop / Map equivalence” when refactoring.

Given that it does not matter in which order we apply these operations, we can say that they have the associative property

Chart of the operations

Take the case of a loop doing two things. From there:

  • we can replace the loop for a map (including the two actions into a single map body)
  • we can split the loop into two loops

Take the case of two loops, doing one thing each. From there:

  • we can replace a loop for a map
  • we can replace both loops for maps

Take a map doing two things. From there:

  • we can split the map, into two maps, doing one thing each.

(We’re not specifying the inverse operations)

State diagram of the operations


We want to print all substrings of a given string:

(State1: This uses a single loop, performing two actions)

fun printAllSubstrings(string: String){
  for (i in 0.rangeTo(string.length)) {
    val substring = string.substring(i)

From State1, we replace the loop for a map:

(State2: This uses a map, with two operations)

fun printAllSubstrings(string: String) {
    0.rangeTo(string.length).map {
        val substring = string.substring(it)

From State1, Refactor to split the loop:

(State3: This uses two loops, performing one action each)

fun printAllSubstrings(string: String){
  val substrings = mutableListOf<String>()
  for (i in 0.rangeTo(string.length)) {
    val substring = string.substring(i)
  for (substring in substrings) {

Collapse the first loop into a map:

(This uses a map and a loop)

fun printAllSubstrings(string: String) {
  for (substring in 0.rangeTo(string.length)
                     .map { string.substring(it) }) {

Extract the method to give it a name:

(This uses a map, a loop, and a method to explain the logic)

fun printAllSubstrings(string: String) {
  for (substring in allSubstrings(string)) {

private fun allSubstrings(string: String) = 
    .map { string.substring(it) }

Alternatively, use the method, with a map:

(This uses an explaining method, with a map)

fun printAllSubstrings(string: String) {
    .map { println(it) }

private fun allSubstrings(string: String) = 
    .map { string.substring(it) }

Alternatively, from State3, we can also replace the loop for two maps:

(State4: This uses two maps)

fun printAllSubstrings(string: String){
    .map { string.substring(it) }
    .map { println(it) }