The long way through Software Craftsmanship

Self-Study in July 2018

Jul 1, 2018 - 3 minute read - Comments - self-study-aggregationjuly2018analogyawsbarbonilistaburn-outburnoutcareercareer-managementchesterton-fenceclientcloud-scalecollaboratorconsultingcontractordatabasedavid-bonilladeliverydependencydevelopmentdiscoverydummyexactly-once-deliveryfacebookfixgerard-meszarosgogolanggoosgrowing-object-oriented-softwarehacker-newshaskellhealthhistoryhypekafkakeith-leeksuidlearninglewis-menelawslisticlelucas-di-ciocciomanagementmessagemessage-deliverymockmonadnotificationoaooonboardingonce-and-only-oncepartpeoplepolicyprocessproductive-haskell-barproductivityproject-managementpsychologypyramidrelationshiprick-bransonrocksdbsabbaticalsegmentslack-timesteve-freemanstubtest-doubletime-managementtiptooltopicuuidvertical-slicexunitxunit-patternxunitpatterns

The Haskell Pyramid

I’ve read this article on how the productivity for Haskell is achieved: not using the topics discussed on social networks (monads, functors, laws, lenses, etc) but using more basic tools

Tags: haskell, productivity, lucas-di-cioccio, learning, development, tool, monad, hype, pyramid, productive-haskell-bar, bar

Id: 454f53fc-7dd6-11e8-8208-0242ac110003 Read: Mon, 02 Jul 2018 08:59:47 +0000

El verde más verde

I’ve read this article on how to structure creative projects (e.g., UX, programming) by professionals, as told by David Bonilla.

Tags: david-bonilla, bonilista, project-management, slack-time, sabbatical, vertical-slice

Id: ef00176e-7ddc-11e8-a33b-0242ac110003 Read: Mon, 02 Jul 2018 09:47:29 +0000

How to Fix Burnout as a Developer

I’ve read this article on burnout and how to fix it: Stop working so much. Prioritize your health. Try something new. Patience is key. Talk to your loved ones.

Tags: lewis-menelaws, burnout, burn-out, productivity, listicle, career, psychology, management, time-management, career-management, health

Id: 40d68542-7dff-11e8-89f2-0242ac110003 Read: Mon, 02 Jul 2018 13:53:09 +0000

Ask HN: What is the first thing you implement at a new company?

I’ve read this article on the first things that people do when joining a new client. Mentions the Chesterton’s fence: You don’t want to change something until you understand why it’s there in the first place.

Tags: chesterton-fence, hacker-news, contractor, client, onboarding, fix

Id: 9003a91a-7dff-11e8-a366-0242ac110003 Read: Mon, 02 Jul 2018 13:55:22 +0000

The Fallacy Of Chesterton’s Fence

I’ve read this article on the Chesterton’s fence. > don’t ever take a fence down until you know the reason why it was put up

The author explains that the walls (or contracts, or clauses, or practices) were put in place to cover for a specific need. Do not assume that this need does not exist now, before understanding what the need was in the first place.

Tags: chesterton-fence, keith-lee, consulting, tip, analogy, discovery, process, people

Id: 736e269e-7e00-11e8-ac4a-0242ac110003 Read: Mon, 02 Jul 2018 14:01:43 +0000

A brief history of the UUID

A brief history of UUID: of how it was developed, why, and a new library in go called ksuid Explains the origins of networked computers (as opposed to personal computers without any networking) in the 1980s. Also explains the origins of the UUID, some algorithms for generating them.

Tags: ksuid, uuid, golang, go, rick-branson, history

Id: c20e6ac4-8fe5-11e8-b54e-0242ac110003 Read: Wed, 25 Jul 2018 08:36:00 +0000

Delivering billions of messages exactly once

Explains how this company (segment) has solved the problem of delivering the messages once and only once (OAOO), using RocksDB, Kafka, UUIDs. Deployed to AWS, lowers the cost of the previous system (memcached-based). Impressive numbers: 1.5 TB worth of keys stored on disk in RocksDB a 4-week window of de-duplication before aging out old keys approximately 60B keys stored inside our RocksDB instances 200B messages passed through the dedupe system Also explains in depth how RocksDB works

Tags: rocksdb, facebook, database, once-and-only-once, oaoo, message, exactly-once-delivery, delivery, message-delivery, kafka, uuid, client, aws, segment, topic, cloud-scale

Id: 962c0c26-8fe6-11e8-bf2c-0242ac110003 Read: Wed, 25 Jul 2018 08:41:55 +0000

Object Collaboration Stereotypes

This post describes the relationships between two objects: Dependencies are services that the object needs from its environment so that it can fulfil its responsibilities. Notifications are other parts of the system that need to know when the object changes state or performs an action. Policies are objects that tweak or adapt the object’s behaviour to the needs of the system. Parts are components in the implementation that are not controlled from outside the object after being set.

Tags: dependency, notification, policy, part, collaborator, relationship, steve-freeman, goos, growing-object-oriented-software

Id: f7e738c8-8fe6-11e8-89be-0242ac110003 Read: Wed, 25 Jul 2018 08:44:39 +0000

Mocks, Fakes, Stubs and Dummies

Bibliography for mocks, stubs, fakes, dummies, spies.

Tags: mock, stub, test-double, dummy, xunit, xunit-pattern, gerard-meszaros, xunitpatterns

Id: ea7281ee-9012-11e8-bd95-0242ac110003 Read: Wed, 25 Jul 2018 13:59:15 +0000

Books read in 2018Q2

Jun 30, 2018 - 11 minute read - Comments - bookreading2018Q2self-studycoduranceaprendicesreading-club

Read this quarter:

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

  • Quien se ha llevado mi queso; Johnson; own-it, guillem
  • One minute manager, the; Blanchard; own-it, non-technical, guillem
  • 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, guillem
  • Getting started with NoFap; non-technical
  • Emotional intelligence; Goleman; non-technical

Quien se ha llevado mi queso

I’ve read this fable explaining the little story of two mice and two lilliputians that end up without any cheese. The story is about how they react to the lack of cheese, how they were used to finding cheese, fighting for it.

The morale of the story is about change and how to deal with change.

More about it here: https://business-book-summary.blogspot.com.es/2008/10/who-moved-my-cheese.html

Wisdom in a Nutshell from Who Moved My Cheese?

  • Anticipate change.
  • Adapt quickly.
  • Enjoy change.
  • Be ready to change quickly, again and again.
  • Having Cheese makes you happy.
  • The more important your Cheese is to you, the more you want to hold on to it.
  • If you do not change, you can become extinct.
  • Ask yourself “What would I do if I weren’t afraid?”
  • Smell the Cheese often so you know when it is getting old.
  • Movement in a new direction helps you find New Cheese.
  • When you move beyond your fear, you feel free.
  • Imagining myself enjoying New Cheese, even before I find it, leads me to it.
  • The quicker you let go of old cheese, the sooner you find New Cheese.
  • It is safer to search in the maze than remain in a cheeseless situation.
  • Old beliefs do not lead you to New Cheese.
  • When you see that you can find and enjoy New Cheese, you change course.
  • Noticing small changes early helps you adapt to the bigger changes that are to come.
  • Read the Handwriting on the Wall
  • Change happens. They keep moving the Cheese.
  • Move with the Cheese and enjoy it!

One-minute manager

I’ve read this book on management, the story of a young man looking for guidance in the one-minute manager.

The gist of it is RPG: Reprimand, Praise, Goal (Setting). All of that done in one-minute increments.

In case the goal setting does not happen by your manager, it’s your task to ask for it, so you can achieve your goals, rather than try to guess what your line manager is expecting from you.

The praising is an easy, cheap, straightforward way to encourage employees to keep doing what they’re doing.

The reprimand is the way of delivering feedback that can help change the employee behaviour.

Ladybird Book of Mindfulness, the (Ladybirds for Grown-Ups)

I’ve read this collection of (sarcastic) reflections about mindfulness, illustrated with classic British images.

En defensa de los ociosos - An apology for idlers

I’ve read this book, containing three main essays plus some experiences.

The first, defending the idlers of society, explaining the benefits of doing nothing but enjoying life.

The second, exposing true love, the effects on people.

Getting started with NoFap

I’ve read this book about the dangers of abusing PMO (porn, masturbation, orgasm), the downsides, how to fix it (reboot), what effects said reboot can have in your mind and body.

Inteligencia emocional - Emotional intelligence

I’ve read this book by goleman on the topics that are included in the emotional intelligence.

Why it is so important to develop this kind of intelligence and how it compares to other kinds.

Export of the database:

backlog (partially sorted):

  • unsorted V
  • The Machine That Changed the World: The Story of Lean Production
  • Haskell Programming
  • Software Architecture in Practice
  • The five disfunctions of a team: a leadership fable; Lencioni
  • 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
  • Thinking fast and slow; Kahneman; non-technical
  • 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: Using Ancient Philosophy to Live a Modern Life; Pigliucci; 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
  • Your money or your life; Dominguez, Robin; non-technical, finance
  • 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
  • https://www.amazon.com/Schopenhauer-Cure-Novel-Irvin-Yalom/dp/0060938102/
  • https://www.amazon.com/How-Schopenhauer-Through-Mid-Life-Crisis-ebook/dp/B00QXNB5PC/
  • Books in general – Epstein
  • Affluent society, the; Galbraith; non-technical, finance
  • Philosophy of the Buddha; Bahm; non-technical
  • Tribe of mentors; guillem, 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, guillem
  • Managing for happiness; Appelo; non-technical
  • How to be a stoic - Pugliucci; non-technical
  • Why budism is true; Wright; non-technical
  • 7 hábitos de la gente altamente productiva
  • Como ganar amigos e influir sobre las personas; Carnegie (+); own-it, guillem
  • art of readable code; guillem
  • Domain modeling made functional; guillem
  • Sketchbook handbook; guillem, own-it
  • Agile samurai, the; guillem
  • 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

unfinished (unsorted):

  • 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
  • Como leer un libro; Adler, van Doren; non-technical, own-it

next (2):

  • Who rules the world?; Chomsky; non-technical
  • 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
  • Meditations; Marcus Aurelius; non-technical, own-it

wip (2):

  • Continuous Delivery; Humble, Farley; own-it
  • Ética a Nicómaco; Aristotle; own-it, non-technical

done:

  • Prince, the; Macchiavello; non-technical, own-it
  • Nuevo kama-sutra ilustrado, el; Gallotti; 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
  • 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
  • Tus zonas erróneas; Dyer; non-technical, own-it
  • 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
  • Peopleware; DeMarco, Lister (+); own-it
  • 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, guillem
  • Team geek (+); guillem, own-it
  • Kata de la voluntad; guillem, non-technical
  • Phoenix project, the ; Kim, Behr, Spafford; own-it
  • Obstacle is the way, the; guillem, non-technical
  • Guide to stoicism, a; Stock; own-it, non-technical
  • Quien se ha llevado mi queso; Johnson; own-it, guillem
  • One minute manager, the; Blanchard; own-it, non-technical, guillem
  • 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, guillem
  • Getting started with NoFap; non-technical
  • Emotional intelligence; Goleman; non-technical

rejected:

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

lists:

Testing a component that includes randomness

Jun 15, 2018 - 6 minute read - Comments - testingrandomnesstddjavacodesnippet

Context

We have been tasked with designing a component to generate secrets for two-factor authentication (2FA), to ensure that the you also own that other ‘channel’.

It has to be secure enough to pass to verify a user, meaning no other user should be able to impersonating another one by guessing the secret.

Solution

A first solution that he have implemented is to provide a 6-digit pin code.

The solution (in java) is straightforward: get a Random to generate ints for you.

public class PinCodeFactory {
    private Random secureRandom = new SecureRandom();

    public PinCode aNewPinCode () {
        return new PinCode(secureRandom.nextInt(1_000_000));
    }
}

public class PinCode {
    public final String value;

    public PinCode (final String value) {
        this.value = value;
    }
}

Note: this is not the final solution; it does not include package, imports; might not even compile. Take it as pseudo-code.

Now that we this “obvious implementation” in mind, how can we test drive it?

Let’s start with the requirements:

  • the numbers are always six digits
  • they should be pseudo-random

We can test the first by taking one of them and verifying that it has six digits.

First requirement: type of pin code

The problem with that is that the SecureRandom gives random data. Now, the test will be passing, but later in the future, the build will break as this implementation has (some) defects. If you keep generating pin codes, you will get one as “123”, as per the definition of the nextInt method.

Easy. You add a base amount to always make it in the six digits. But, are you affecting the distribution of the pseudo-random generator? At this time, I’m not even sure. Don’t make me think too much. To make it easier, let’s pad the numbers with zeros on the left:

@Test
public void the_numbers_are_left_padded_with_zeros () {
    verifyEachOf(pinCodes(100), pincode -> assertThat(pincode.length(), is(6)));
}

@Test
public void the_numbers_do_not_contain_spaces () {
    verifyEachOf(pinCodes(100), pincode -> assertThat(pincode.contains(" "), is(false)));
}

Now that these tests are failing, I can focus on finding a simple implementation that satisfies them.

A passing solution:

package com.example;

import com.example.Pincode;

import java.net.URI;
import java.security.SecureRandom;
import java.util.Random;

public class PinCodeFactory {
    private Random secureRandom = new SecureRandom();

    public PinCode aNewPinCode () {
        return new PinCode(String.format("%06d", random.nextInt(1_000_000)));
    }
}

But, if you execute these tests long enough, they will fail. Because of the underlaying randomness of the code. We don’t want to modify the design of this class, as we started with “wishful programming” (reference, reference), specifying the desired public API, to later fill the implementation details.

A possible solution to this randomness is to consider the random a ‘setting’ aka policy that I can later override. But only for the test. We don’t want to make the API more complicated, so we will offer a protected method for ‘friends’ to use, but not for everyone:

package com.example;

import com.example.Pincode;

import java.net.URI;
import java.security.SecureRandom;
import java.util.Random;

public class PinCodeFactory {

    private Random random;

    public PinCodeFactory () {
        random = new SecureRandom();
    }

    public PinCode aNewPinCode () {
        final String payload = String.format("%06d", random.nextInt(1_000_000));
        final PinCode pinCode = new PinCode(payload);
        return pinCode;
    }

    protected void setGenerator (final Random generator) {
        this.random = generator;
    }
}

(Note: this is the final version)

(Note: in java, the SecureRandom implements the same API as Random –in fact it is a child class– so we prefer accepting the parent class.)

In this way, the test can always set the random seed to a fixed value. Therefore, the numbers will be stable and the behavior is no longer random, but controlled.

This is just one way how you can test components that have randomness: eliminating it without affecting the public API.

Second requirement: the pin codes don’t repeat

Even if this requirement cannot be met with enough requests (because with enough requests, you will repeat a six-digit code), finding no repeated codes in 100 consecutive pin codes is enough. The user has to input the exact code they received, so the chance of repetition is quite low.

@Test
public void there_are_no_repeated_with_the_given_seed () {
    final int desiredProofSize = 100;
    verifyAll(pinCodes(desiredProofSize), pinCodes -> assertThat(pinCodes.size(), is(desiredProofSize)));
}

This test is passing from the beginning with the fixed seed 1L. But, if you enlarge the desiredProofSize to 1000, it does not pass anymore.

A note about process

We did not get much value of test-driving (TDD) this code, as the knew the desired API from the beginning, we had a clear implementation in mind and only a few cases left to iron out. Just test-first was enough in this case.

Conclusion

One way how you can test components that have randomness: eliminating it.

Do not use TDD (or any other tool) as an end in itself. Use it as a tool.

Appendix

All code can be found here

As a local copy:

//File PinCode.java
package com.example;

import java.util.Objects;

public class PinCode {
    public final String value;

    public PinCode (final String value) {
        this.value = value;
    }

    @Override
    public boolean equals (final Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        final PinCode pinCode = (PinCode) o;
        return Objects.equals(value, pinCode.value);
    }

    @Override
    public int hashCode () {
        return Objects.hash(value);
    }

    @Override
    public String toString () {
        final StringBuffer sb = new StringBuffer("PinCode{");
        sb.append("value='").append(value).append('\'');
        sb.append('}');
        return sb.toString();
    }
}
//File PinCodeFactory.java
package com.example;

import com.example.Pincode;

import java.net.URI;
import java.security.SecureRandom;
import java.util.Random;

public class PinCodeFactory {

    private Random random;

    public PinCodeFactory () {
        random = new SecureRandom();
    }

    public PinCode aNewPinCode () {
        final String payload = String.format("%06d", random.nextInt(1_000_000));
        final PinCode pinCode = new PinCode(payload);
        return pinCode;
    }

    protected void setGenerator (final Random generator) {
        this.random = generator;
    }
}
//File PinCodeFactoryTest.java
package com.example;

import org.junit.Before;
import org.junit.Test;

import java.util.Collection;
import java.util.HashSet;
import java.util.Random;
import java.util.function.Consumer;

import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;

public class PinCodeFactoryTest {

    private PinCodeFactory pinCodeFactory;

    @Before
    public void setUp () {
        pinCodeFactory = new PinCodeFactory();
        pinCodeFactory.setGenerator(new Random(1L));
    }

    @Test
    public void there_are_no_repeated_with_the_given_seed () {
        final int desiredProofSize = 100;
        verifyAll(pinCodes(desiredProofSize), pinCodes -> assertThat(pinCodes.size(), is(desiredProofSize)));
    }

    @Test
    public void the_numbers_are_left_padded_with_zeros () {
        verifyEachOf(pinCodes(100), pincode -> assertThat(pincode.length(), is(6)));
    }

    @Test
    public void the_numbers_do_not_contain_spaces () {
        verifyEachOf(pinCodes(100), pincode -> assertThat(pincode.contains(" "), is(false)));
    }

    public void verifyEachOf (final Collection<String> pincodes, final Consumer<String> assertion) {
        for (final String pincode : pincodes) {
            assertion.accept(pincode);
        }
    }

    public void verifyAll (final Collection<String> pincodes, final Consumer<Collection<String>> assertion) {
        assertion.accept(pincodes);
    }


    private Set<String> pinCodes (final int desiredProofSize) {
        return Stream.generate(() -> pinCodeFactory.aNewPinCode().value)
                .limit(desiredProofSize)
                .collect(Collectors.toSet());
    }
}

Self-Study in June 2018

Jun 1, 2018 - 25 minute read - Comments - self-study-aggregationjune201810x20172faacceptance-testingaccesibilityactivityagileaiai-winteralfred-northalison-birraneallcountjsamazonandy-gavinanton-arhipovapiappappleapplicationaptitudearchiveartificial-intelligenceassemblerattackerattentionattention-heistattitudeattitude-vs-aptitudeattribute-based-cryptographyattribute-fingerprintingauthorautodidacticautodidactic-iterationawsbackupbehemothbelongingbertrand-russellbest-tool-for-the-jobbiasbillbirthdaybjorn-bensonblindnessbonilistabookbook-reviewborilloboringbraillebraille-readerbreathingbrett-mckaybrian-goetzbridget-kromhoutbrowserbugbug-bountyburner-phonebusinessbusiness-valuecabcalendarcanary-testcareercareer-managementcase-statementcertificate-pinningcfochaptercharity-majorschatbotchris-wellerchristian-birdchristian-charukiewiczchromeciocity-bikeclassificationclauseclean-codeclojurecodecode-fatiguecode-reviewcombinatorcomfort-zonecommand-query-responsibility-segregationcommentcommunicationcomparisoncompilercomplexitycomputabilityconcentrationcone-of-uncertaintyconfigurationconsumercore-businesscore-competencecostcountermeasurecoursecqrscrackercrash-bandicootcross-border-flightcrudcrypto-currencycryptographyctodan-luudan-mckinleydan-weinrebdatadata-analyticsdata-structuredata-visualizationdavid-bonilladavid-hilbertdavid-nolendavid-porterddddeep-learningdefectdefinitionderek-comartindesigndesign-staminadesktop-appdesktop-publishingdevelopmentdevicedevopsdigital-sabbathdisabilitydockerdomain-driven-designdonn-felkerdori-reuvenidrew-gallatindruckerdynamic-typingearl-barreconomyeditingelizabeth-saunderselmencryptionequalityeric-normanderic-raymondestimateethereumethiceulaevan-jonesexampleexecutionexerciseexperience-reportfake-datafatiguefearfeature-by-abstractionfeature-togglefebin-jamesfeedbackfeminismfinite-gamefiodar-sazanavetsfizzbuzzflightflowfocusforecastformattingfortranframeworkfree-resourcefree-tierfree-trialfrontendfulfillmentfull-disclosurefunction-compositionfunctionalfunctional-languagefunctional-programminggadgetgamegame-developmentganganngarbage-collectorgary-hamelgendergeneralgenerative-adversarial-neural-networkgitgit-lfsgithubgithub-lfsgogoalgolanggooglegoolgraphqlgrayson-kooncegreg-younggregor-trefsguardian-syndromeguessinghackerhackinghacking-backhappinessharvard-business-reviewhbrhelphigher-order-functionhmrchofhomehoney-pothoneypothonsshhousehtmlhtml5httphttpsibmicoideide-supportideaidentity-based-cryptographyimageimaginaryincompleteness-theoreminequalityinfinite-gameinfinite-listinformationintegrationintegration-testintellij-ideainternational-flightinternetinterviewinventioninvestoriterationjames-haguejanitorjason-brownleejavajava-9java-eejavascriptjdkjdk-9jeronimo-palaciosjetbrainsjim-birdjobjohn-belljohn-henryjohn-ivejohn-mccarthyjohn-zadajoshua-fairfieldjrejustine-arrechejvmkaren-mcgranekatakate-mckaykent-beckkevin-bourrillionkeybasekiller-appknowledgekodakkotlinkurt-godelkurt-goedellabellambda-calculuslanguagelaptoplaunchlawlawrence-paulsonlazy-listleanleanpublegalitylexnetlfslibrarylicenselifelisplisp-dialectlisp-machinelist-processinglmilong-articlelow-techlynne-tyem-expressionmachinemachine-learningman-in-the-middlemanagementmapmarc-chernoffmaria-scrivenermark-reinholdmartin-fowlermathematicsmathias-verraesmatthew-greenmattias-geniarmcaleermeanmediameditationmediummentormercermeta-researchmfamicroservicemike-hearnmike-kruzeniskimindmlmmapmonetizationmoneymoney-managementmonolithmonte-carlomonte-carlo-tree-searchmoocmoses-sohnathan-epsteinnative-appneil-irwinnet-neutralitynetflixneural-networknew-yorknew-york-citynick-leenick-rosenernnno-estimatesnpmnpm-moduleobject-orientationoleg-shelajevom-nexton-demandoodopen-apiopen-sourceopenbsdoperationsoptimizationoracleorganizationpairingpasswordpattern-matchingpaul-grahampauseperformancepet-projectphilosophyphonepillarplain-textpodcastpositionpotter-stewartprahaladprincipia-mathematicaprivacyprivate-keyproductproduct-managementproduction-readyproductivityprogrammerprogrammingprojectproject-managementpropertyprovenproxypsychologypublic-keypublishingpull-requestpull-request-fatiguepurposeqsmqualityquantitative-software-managementquincy-larsonquoterrafe-colburnrantreadingrebecca-holmanrebel-labsrecovering-programmerred-bookrediscoveryreflectionreframereleaserelease-managementrelease-trainremoteremote-toolremote-workreportreportingresearchresourceresponsible-disclosurerestrewardricardo-borillorichard-stallmanright-to-repairriskrisk-identificationrmsrobert-puttrolersarubikrubik-cuberyan-dahls-expressionsabbathsaint-syndromesalarysamer-bunasandi-metzscalascandalscreen-readerscrumsecuritysecurity-alertself-helpself-publishingself-studysequenceserverservicesexismshamirside-projectsimplicitysimulationskillsmart-contractsmartphonesocial-mediasoftwaresoftware-engineering-dailysoftware-qualityspainspanishspringstacked-pull-requeststarbucksstarter-kitstartupstatic-typingsteve-mcconnellstoragestorytellingstreamsunsurprisingsven-johannsymbolicstaxitddteamteam-managementteammatetechnical-debttechnical-valuetechniquetechnologytelegramtendigitesttest-datatest-driven-developmenttestcontainerstestingtheoremtim-wutimetime-managementtips-and-trickstodd-schneidertodo-listtooltoolchaintrainingtranscendencetrisha-geetrustlesstuukka-ojalatype-systemtypescriptuberto-barbiniudi-dahanukunknownunknown-unknownususer-centricuxvaluevavrvenkatesh-raovisionwalled-gardenwatchwebweb-appweb-serverwomenwomen-in-techworkwork-husbandwork-spousework-wifewysiwygx0rzyash-ranadivezemnmezzero-turnaroundzheng-gao

[Don’t look, don’t tell]()

I’ve read this bonilista by David Bonilla on what strategies companies use to deal with security and defects.

Explains full disclosure, responsible disclosure and bug bounties.

Tags: david-bonilla, bonilista, security, full-disclosure, responsible-disclosure, bug-bounty, reporting, hacker, cracker

Id: a1a6925a-7958-11e8-a87f-0242ac110002 Read: Tue, 26 Jun 2018 15:50:21 +0000

[La vida de las ideas]()

I’ve read this bonilista by David Bonilla about the value of the ideas and what differentiates a good idea from a good execution from a good outcome

Tags: david-bonilla, idea, startup, execution, value

Id: c72f3522-7958-11e8-935c-0242ac110002 Read: Tue, 26 Jun 2018 15:51:24 +0000

Why re-frame instead of om next

I’ve read this article by Eric Normand on why he chose to write a course on clojure front-end framework

Tags: eric-normand, clojure, david-nolen, frontend, framework, reframe, om-next, comparison, course, mooc

Id: ea43a380-7959-11e8-bd3b-0242ac110002 Read: Tue, 26 Jun 2018 15:59:32 +0000

[LexNET: el software que nunca debió existir]()

I’ve read this bonilista by David Bonilla on the software called LexNET and the scandal around it

Tags: david-bonilla, lexnet, bonilista, software, scandal, spain

Id: 1aa20256-795a-11e8-9b39-0242ac110002 Read: Tue, 26 Jun 2018 16:00:53 +0000

[40]()

I have read this bonilista by David Bonilla explaining some of the things he has learned from 40 years of experience in life. Explains some of his fears and how he has solved them.

Tags: david-bonilla, bonilista, birthday, reflection, fear, money, money-management

Id: 296a433e-795a-11e8-981e-0242ac110002 Read: Tue, 26 Jun 2018 16:01:18 +0000

[La lucha por la Red]()

I’ve read this bonilista by David Bonilla on the net neutrality in Spain and in the European union.

Tags: david-bonilla, bonilista, net-neutrality, internet

Id: 395a8984-795a-11e8-9102-0242ac110002 Read: Tue, 26 Jun 2018 16:01:45 +0000

A machine has figured out Rubik’s Cube all by itself

I’ve read this article explaining how an AI has solved the rubik cube by itself. The team, including McAleer, has used a technique called “autodidactic iteration: a way for the machine to create its own system of rewards.

Tags: rubik, rubik-cube, ai, autodidactic-iteration, autodidactic, reward, mcaleer, artificial-intelligence, deep-learning, monte-carlo, monte-carlo-tree-search

Id: 0cb8305c-7a1d-11e8-9823-0242ac110002 Read: Wed, 27 Jun 2018 15:16:22 +0000

[La tienda]()

I’ve read this bonilista by David Bonilla on how more and more investors are deciding to do it only on profitable startups rather than a more global strategy

Tags: david-bonilla, bonilista, investor, startup

Id: 6735c620-7a1d-11e8-a2e9-0242ac110002 Read: Wed, 27 Jun 2018 15:18:53 +0000

I’m not a woman in tech

I’ve read this article by Maria Scrivener on how she does not consider herself a woman in tech. She prefers to lose the labels and just be considered her, herself. Advocates for being inclusive rather than exclusive

Tags: feminism, women-in-tech, maria-scrivener, women, label, equality

Id: 7e2fbffc-7a1d-11e8-bbd2-0242ac110002 Read: Wed, 27 Jun 2018 15:19:32 +0000

PASSWORD SECURITY ALERT

I’ve read this article by David Porter in which they alert their users that their database has been leaked, therefore some passwords are at risk.

The passwords were hashed and salted, not stored in plain text, but those who share a password across services could be at risk.

The attack has been successful given that a developer didn’t have two-factor authentication (2FA) on their github account and the company was using GitHub LFS (git large file system) to store database backups

Tags: david-porter, backup, storage, configuration, github, 2fa, plain-text, password, security, security-alert, lfs, git-lfs, github-lfs

Id: 97212f3c-7a1d-11e8-bdcd-0242ac110002 Read: Wed, 27 Jun 2018 15:20:14 +0000

Matthew Green

I’ve read this article by Matthew Green on the ideas presented by Shamir in 1984: Identity Based Cryptography (IBE), Attribute Based Cryptography (ABE)

Tags: rsa, matthew-green, cryptography, identity-based-cryptography, attribute-based-cryptography, shamir, public-key, encryption, private-key

Id: a942bf96-7a1d-11e8-b122-0242ac110002 Read: Wed, 27 Jun 2018 15:20:44 +0000

Starbucks should really make their APIs public

I’ve read this article by Nick Lee in which he explains how he has reverse-engineered the Starbucks API so you can connect to it from another device (not only phones, with the app installed)

Tags: certificate-pinning, tendigi, nick-lee, security, man-in-the-middle, proxy, api, attribute-fingerprinting, open-api, starbucks

Id: b3ffb61e-7a1d-11e8-a08c-0242ac110002 Read: Wed, 27 Jun 2018 15:21:02 +0000

Feature Toggles are one of the Worst kinds of Technical Debt

I’ve read this article on the ups and downs of using feature toggles.

Especially with long lived branches and feature by abstraction

Tags: feature-by-abstraction, feature-toggle, canary-test, jim-bird, technical-debt

Id: dbb1ff46-7a1d-11e8-b40e-0242ac110002 Read: Wed, 27 Jun 2018 15:22:09 +0000

TestContainers: making Java integration tests easy

I’ve read this article on how to start a new docker container from Java code (using a junit @rule).

Using the library TestContainers

Tags: testcontainers, rebel-labs, anton-arhipov, test, docker, image, integration-test, testing

Id: f13f63bc-7a1d-11e8-a6a2-0242ac110002 Read: Wed, 27 Jun 2018 15:22:45 +0000

Code Health: To Comment or Not to Comment?

I’ve read this article about comments in code: where to use them and when not to

Tags: dori-reuveni, kevin-bourrillion, comment, clean-code

Id: 15740b0c-7a1e-11e8-9169-0242ac110002 Read: Wed, 27 Jun 2018 15:23:46 +0000

Saints and Traders: The John Henry Fable Reconsidered

I’ve read this article on the guardian syndrome and the Saint syndrome.

Explains the story of John Henry, who died right after winning a drilling contest with a machine.

Explains the finite game and the infinite game.

Tags: finite-game, infinite-game, saint-syndrome, guardian-syndrome, comparison, philosophy, venkatesh-rao, john-henry

Id: 5228464e-7a1e-11e8-9125-0242ac110002 Read: Wed, 27 Jun 2018 15:25:28 +0000

Stacked Pull Requests: Keeping GitHub Diffs Small

I’ve read this article on using a technique (stacked pull requests) to keep pull requests small and get more feedback, more comments from teammates, therefore reducing the code review fatigue. By Grayson Koonce

Tags: grayson-koonce, fatigue, code-fatigue, pull-request, pull-request-fatigue, stacked-pull-request, technique, comment, feedback, teammate, team

Id: 6e3df860-7a1e-11e8-ba6a-0242ac110002 Read: Wed, 27 Jun 2018 15:26:15 +0000

I hate almost all software

I’ve read this article by Ryan Dahl on the focus of the software and the inherent complexity of today’s software

Tags: ryan-dahl, complexity, software, rant

Id: 7ab3fcd4-7a1e-11e8-9590-0242ac110002 Read: Wed, 27 Jun 2018 15:26:36 +0000

The Real Reason for Developers’ Salaries Stagnation

Im this article, the author speaks of developer salaries related to their skills, proficiency, area of interest and role. Also about the real purchasing power stagnation.

Tags: salary, skill, role, position, money, career, career-management, fiodar-sazanavets

Id: a4e26bee-7a1e-11e8-ac68-0242ac110002 Read: Wed, 27 Jun 2018 15:27:46 +0000

What is a “10x” Programmer?

I’ve read this article about makes a good programmer, under the label of the mythical 10x programmer.

There are two different groups of things in the list: things you are/have (skills) and things you do (actitudes). On the former, writing code (good, business code that is correctly organized, architected, designed), to know a lot. On the latter, ownership for the project (implication, care), teaching and learning from others.

Tags: 10x, author, productivity, skill, attitude, aptitude, attitude-vs-aptitude, nathan-epstein

Id: e5d53f46-7a1e-11e8-9097-0242ac110002 Read: Wed, 27 Jun 2018 15:29:35 +0000

I’ve read this article by Donn Felker on the effect that the Internet is having on consumers: they now decide when to consume the resources, instead of passively waiting for the resources to appear.

This is the suggested explanation for on-demand video vs television, podcasts vs radio

Tags: podcast, on-demand, consumer, internet, donn-felker

Id: f7f8a73a-7a1e-11e8-836d-0242ac110002 Read: Wed, 27 Jun 2018 15:30:06 +0000

Don’t Know What You Want? Improve These 7 Universal Skills

Personal Effectiveness: Learn how to maximize the results you can get during the 16–18 hours you’re awake. Get more done — effectively. Communication: We think we’re all master communicators. But the truth is that we suck. Communication is both art and science. And our ability to work with others depends on it. Negotiation: You negotiate all the time. With your spouse, kids, parents, teachers, friends, co-workers, managers, etc. Learn to get the best deal for all parties. Persuasion: Learn how to get what you want in an ethical way. Physical Strength & Stamina: Getting stronger is a skill. Pull your own weight. It’s something every human should be able to do. Flexibility: Sitting all day long behind your computer or in your car turns you into a stiff being. Learn how to stretch your hips, lower back, hamstrings, and calves — the most common weak points of desk workers.

Tags:

Id: 0862fbca-7a1f-11e8-83fb-0242ac110002 Read: Wed, 27 Jun 2018 15:30:33 +0000

Your Concentration Training Program: 11 Exercises That Will Strengthen Your Attention

I’ve read this article by Brett & Kate McKay on exercises for training the attention

Tags: brett-mckay, kate-mckay, training, concentration, exercise, focus, attention

Id: 14f5e064-7a1f-11e8-be86-0242ac110002 Read: Wed, 27 Jun 2018 15:30:54 +0000

The Great Attention Heist

I’ve read this article by John Bell, John Zada on the current war for attention, what they call the ‘attention heist’: publishers fight for your attention, selling it to third parties. The more they can lure you to spend your (finite) attention with them, the higher the profits.

They talk about two kinds of attention: short span and long span. Reading news is the first while reading a book or a long article is the second one.

They mention unplugging (i.e., a “digital sabbath”) to help improving the level of concentration

(this was a book review, of ‘The attention merchants’, by Tim Wu)

Tags: john-bell, john-zada, attention-heist, attention, app, smartphone, book-review, tim-wu, book, sabbath, digital-sabbath, long-article

Id: 3f41e6ec-7a1f-11e8-85fc-0242ac110002 Read: Wed, 27 Jun 2018 15:32:05 +0000

How to read more books

Tags: mathias-verraes, reading, tips-and-tricks, self-study, training

Id: c451a048-7a1f-11e8-82f7-0242ac110002 Read: Wed, 27 Jun 2018 15:35:49 +0000

Serving 100 Gbps from an Open Connect Appliance

I’ve read this article on how Netflix has optimized their servers to be able to send TLS content at 100 Gbps, using openbsd.

Tags: netflix, openbsd, performance, optimization, drew-gallatin

Id: dc8f92dc-7a1f-11e8-818a-0242ac110002 Read: Wed, 27 Jun 2018 15:36:29 +0000

RebelLabs Developer Productivity Report 2017: Why do you use the Java tools you use?

Tags: java-ee, spring, kotlin, java, jvm, scala, clojure, productivity, rebel-labs, oleg-shelajev, zero-turnaround, 2017, report, comparison

Id: 1c603222-7a20-11e8-8f75-0242ac110002 Read: Wed, 27 Jun 2018 15:38:16 +0000

Why paper is the real ‘killer app’

I’ve read this article by Alison Birrane on how working on a low-tech device is different than on a high-tech device (e.g., taking notes on a paper sheet vs on a laptop). On how it stimulates different parts of the brain. The multiple uses of the paper as compared to the narrowness of the apps.

Tags: alison-birrane, killer-app, comparison, media, social-media, gadget, low-tech, technology, smartphone

Id: 2ac58bdc-7a20-11e8-a82d-0242ac110002 Read: Wed, 27 Jun 2018 15:38:40 +0000

Self-Study Guide to Machine Learning

Tags: self-study, machine-learning, jason-brownlee

Id: 388125f6-7a20-11e8-aae6-0242ac110002 Read: Wed, 27 Jun 2018 15:39:04 +0000

[Breaking Up the Behemoth]()

I’ve read this article by Sandi Metz explaining how applications evolve, and what we might do if we’re unhappy with the results using: Design Stamina Hypothesis (Fowler), Procedural vs Object-Oriented Code and X.

Tags: ood, object-orientation, sandi-metz, martin-fowler, design-stamina, quality, behemoth, monolith

Id: 457003ea-7a20-11e8-a3ff-0242ac110002 Read: Wed, 27 Jun 2018 15:39:25 +0000

10 Hard Things to Start Doing for Yourself

I’ve read this self-help article on how to help yourself by doing hard things:

Start letting go of unnecessary ideals Start putting your heart and soul into the things you do Start stretching yourself just beyond the edge of comfort Start taking more deep breaths, so you can mindfully collect more lessons for the long run Start side-stepping senseless drama Start staying true to your values and convictions Start looking for silver linings Start focusing inward more often Start embracing your humanness and giving yourself more credit Start taking the next small, insignificant step (one at a time, every day).

By Marc Chernoff

Tags: marc-chernoff, self-help, meditation, breathing, comfort-zone, help

Id: 53a89846-7a20-11e8-abd1-0242ac110002 Read: Wed, 27 Jun 2018 15:39:49 +0000

Happiness is overrated — finding deep meaning in life comes down to 4 ‘pillars’

I’ve read this article about what life is about: not happiness but four pillars: belonging and purpose, transcendence and storytelling storytelling helps people create meaning because it allows people to create, edit, and transform the story of their lives

Tags: happiness, life, fulfillment, pillar, belonging, purpose, flow, transcendence, storytelling,, chris-weller

Id: 9737002a-7a20-11e8-a864-0242ac110002 Read: Wed, 27 Jun 2018 15:41:42 +0000

It’s time to kill the web

I’ve read this article that explains the background of the web and how it wasn’t designed to support applications but documents. Explains the downsides and security profile of a webapp as compared to a desktop/native application. By Mike Hearn

Tags: comparison, web-app, application, app, desktop-app, native-app, mike-hearn, security, html, html5, javascript, web

Id: a3e1c936-7a20-11e8-8fbe-0242ac110002 Read: Wed, 27 Jun 2018 15:42:04 +0000

How to Stay Focused When You’re Working from Home

I’ve read this article on structuring your workday while being at home (remote work).

Some tips:

  1. Structure for success
  2. Schedule your day: when it’s work-related time and when not
  3. Set boundaries

By Elizabeth Grace Saunders

Tags: remote, remote-work, hbr, harvard-business-review, elizabeth-saunders

Id: b2ddd326-7a20-11e8-9af5-0242ac110002 Read: Wed, 27 Jun 2018 15:42:29 +0000

Cognitive Biases in Programming

I’ve read this article that explains some cognitive biases (prejudices of our mind) while programming:

  1. Hyperbolic Discounting: Going for an immediate payoff instead of a delayed larger one
  2. IKEA Effect:Overvaluing your own solutions to a problem, and thus in contrast undervalue other solutions. Also called the “Not-Invented-Here (NIH) Syndrome”
  3. Premature Optimization: Optimizing before you know that you need to.
  4. Planning Fallacy: Optimistically underestimating the time required to complete a task
  5. Recency Bias: Placing higher value on recent events than ones that occurred further in the past

We can never completely eliminate our biases, by being aware of how it is affecting us, we can somewhat mitigate the problems it causes.

By Yash Ranadive

Tags: yash-ranadive, bias, programming, mind

Id: c8742b18-7a20-11e8-b36f-0242ac110002 Read: Wed, 27 Jun 2018 15:43:05 +0000

Keybase launches encrypted git

I’ve read how to encrypt git repositories using keybase

Tags: keybase, git, encryption, security, private-key, public-key, storage, archive

Id: dcd43756-7a20-11e8-b0ee-0242ac110002 Read: Wed, 27 Jun 2018 15:43:39 +0000

General and Surprising

I’ve read this article about how information can be classified as general vs specific and surprising vs unsurprising. How it’s best to find a small surprising general thing.

Tags: paul-graham, surprising, general, information, classification

Id: f611b626-7a20-11e8-8172-0242ac110002 Read: Wed, 27 Jun 2018 15:44:22 +0000

I built a server-less Telegram bot over a weekend and here’s what I learned

I’ve read this article on creating a telegram chatbot for a specific purpose. Connects two people (first one subscribes, then the other asks for help and the first is contacted) so the first helps the second. By Moses Soh

Tags: telegram, chatbot, app, moses-soh, side-project, pet-project, project

Id: 25b1e5d6-7a21-11e8-a838-0242ac110002 Read: Wed, 27 Jun 2018 15:45:41 +0000

Reviewing Ethereum Smart Contracts

I’ve read this article about how to review ethereum contracts and a concrete example of an attack to a smart contract

Tags: ethereum, smart-contract, crypto-currency, ico, trustless, security, code-review

Id: 5d73322c-7a21-11e8-8e1a-0242ac110002 Read: Wed, 27 Jun 2018 15:47:15 +0000

Keep Calm and Carry On - Scaling Your Org with Microservices

I’ve read the slides of this presentation by Bridget Kromhout and Charity Majors about organizations and microservices: the main problem is the communication

Tags: charity-majors, bridget-kromhout, microservice, organization, communication, devops

Id: ea81381c-7a21-11e8-b418-0242ac110002 Read: Wed, 27 Jun 2018 15:51:12 +0000

Guía al movimiento #NoEstimates

I’ve read this article by Jeronimo Palacios, giving an overview of the no estimates movement.

Tags: no-estimates, jeronimo-palacios, agile, scrum, estimate, forecast, management

Id: f6c70a98-7a21-11e8-a896-0242ac110002 Read: Wed, 27 Jun 2018 15:51:32 +0000

Core competence

I’ve read this article describing what a core competence is and how can we find out if a competence is considered core or not.

Tags: economy, definition, core-competence, core-business, management, prahalad, gary-hamel

Id: 01a58660-7a22-11e8-b4f8-0242ac110002 Read: Wed, 27 Jun 2018 15:51:50 +0000

How I stopped procrastinating, learned to code, and launched my first product

I’ve read this article explaining some tips and tricks to launch a side project. By Lynne Tye

Tags: lynne-tye, tips-and-tricks, product, side-project, launch, business, lean, startup, product-management

Id: 0e85e3f2-7a22-11e8-b818-0242ac110002 Read: Wed, 27 Jun 2018 15:52:12 +0000

When are Citi Bikes Faster than Taxis in New York City?

I’ve read this article by Todd Schneider analysing how city bikes compare to taxis in New York city.

Good analysis, using a Monte Carlo simulation, written in R. Good data visualization.

Tags: todd-schneider, data-visualization, map, city-bike, taxi, cab, new-york, new-york-city, comparison, data, data-analytics, monte-carlo, simulation, r

Id: 18bc20c0-7a22-11e8-9209-0242ac110002 Read: Wed, 27 Jun 2018 15:52:29 +0000

Java 9 and IntelliJ IDEA

I’ve read this article by Trisha Gee about upcoming features to IntelliJ Idea 2017.3, centered around java 9 features

Tags: trisha-gee, java-9, jdk-9, java, jdk, intellij-idea, ide, ide-support, jetbrains

Id: 23b8350e-7a22-11e8-a9f3-0242ac110002 Read: Wed, 27 Jun 2018 15:52:48 +0000

Learn from your attackers - SSH HoneyPot

I’ve read this article on how to setup a honey pot machine using honssh. By Robert Putt

Tags: robert-putt, honey-pot, security, honeypot, honssh, attacker

Id: 2e36336e-7a22-11e8-9424-0242ac110002 Read: Wed, 27 Jun 2018 15:53:05 +0000

To type or not to type: quantifying detectable bugs in JavaScript

I’ve read this paper commentary by Adrian Colyer (on a paper by Zheng Gao, Christian Bird, Earl T. Barr) on a study that tries to reproduce fixes for defects based on the dynamic to static typing system.

both Flow and TypeScript are pretty good, and conservatively either of them can prevent about 15% of the bugs that end up in committed code.

It’s interesting to see these effects quantified:

Running the binomial test on the results shows that, at the confidence level of 95%, the true percentage of detectable bugs for Flow and TypeScript falls into [11.5%, 18.5%] with mean 15%.

Also, some recommendations for the future: for typescript and flow to be compatible for more gains.

Original paper: http://ttendency.cs.ucl.ac.uk/projects/type_study/documents/type_study.pdf

Tags: zheng-gao, christian-bird, earl-barr, typescript, javascript, flow, bug, defect, type-system, dynamic-typing, static-typing

Id: 398cc606-7a22-11e8-b33c-0242ac110002 Read: Wed, 27 Jun 2018 15:53:24 +0000

How Artificial Intelligence Can Be Used For Password Guessing

I’ve read this article by Febin John James on how neural networks can learn from the leaked passwords and try to guess passwords for existing users

Tags: febin-james, ai, artificial-intelligence, generative-adversarial-neural-network, gann, gan, nn, neural-network, guessing, password

Id: 44fe19ae-7a22-11e8-8e06-0242ac110002 Read: Wed, 27 Jun 2018 15:53:43 +0000

Chrome to force .dev domains to HTTPS via preloaded HSTS

I’ve read this article by Mattias Geniar explaining the having the new Chrome redirecting .dev domains to https means that people using said .dev for local development will have to either provide a https server on their machines or change to another domain

Tags: mattias-geniar, chrome, http, https, server, development, test, machine

Id: 509c472c-7a22-11e8-81d7-0242ac110002 Read: Wed, 27 Jun 2018 15:54:03 +0000

Six Ways to Functional FizzBuzz with Vavr

I’ve read this article by Gregor Trefs about solving the fizzbuzz kata using vavr, importing some concepts from functional programming

Tags: functional-programming, gregor-trefs, vavr, case-statement, pattern-matching, functional, kata, fizzbuzz

Id: 6866497a-7a22-11e8-af91-0242ac110002 Read: Wed, 27 Jun 2018 15:54:43 +0000

More Women Take on Role of CFO — at Home

I’ve read this article on how women act as CFO of their houses (managing 30% of the world’s wealth), how they teach money and meaning to their children.

Tags: money-management, cfo, women, gender, home, house

Id: 74f60720-7a22-11e8-a9a3-0242ac110002 Read: Wed, 27 Jun 2018 15:55:04 +0000

The Internet of Things is sending us back to the Middle Ages

I’ve read this article by JOSHUA A.T. FAIRFIELD on the right-to-own, right-to-repair and property.

On the difference in the real property of a smartphone vs a car. On the imaginary, they are the same, but in contractual terms, there is a big difference.

Tags: joshua-fairfield, right-to-repair, bill, law, property, smartphone, eula, license, clause, imaginary

Id: 80c233ee-7a22-11e8-8743-0242ac110002 Read: Wed, 27 Jun 2018 15:55:24 +0000

An In-Depth Guide to Personal Cybersecurity

I’ve read this guide to personal security in the net, by Nick Rosener. Examples include 2fa, password management, app security, phone security, etc

Tags: nick-rosener, 2fa, mfa, password, security, phone

Id: 92c637d4-7a22-11e8-baba-0242ac110002 Read: Wed, 27 Jun 2018 15:55:54 +0000

Como generar “fake data” en nuestros tests de aceptación

I’ve read this article (in Spanish) by Ricardo Borillo on using and generating fake data for our tests

Tags: ricardo-borillo, borillo, fake-data, npm, npm-module, acceptance-testing, test, test-data, spanish

Id: a0be3cd8-7a22-11e8-a5aa-0242ac110002 Read: Wed, 27 Jun 2018 15:56:17 +0000

Making Crash Bandicoot – GOOL – part 9

I’ve read this article by Andy Gavin on making a lisp for games, an embedded language inside another language.

GOOL prefers the power and maintainability of a lisp rather than the raw power of a lower-level programming language

Tags: andy-gavin, lisp, gool, crash-bandicoot, game, game-development

Id: 46ffc936-7a23-11e8-882f-0242ac110002 Read: Wed, 27 Jun 2018 16:00:56 +0000

History of Symbolics lisp machines - Rebuttal to Stallman’s Story About The Formation of Symbolics and LMI

I’ve read this article by Dan Weinreb on the history of lisp machines, the AI winter and the rebuttal of some stories by Richard M. Stallman

Tags: dan-weinreb, lisp, symbolics, rms, richard-stallman, lisp-machine, lmi, dan-luu, ai-winter, ai

Id: 5174beda-7a23-11e8-bf1e-0242ac110002 Read: Wed, 27 Jun 2018 16:01:14 +0000

free-for-dev

I’ve read this list of (free) resources for programmers

Tags: free-resource, resource, service, amazon, aws, free-tier, free-trial, github

Id: 5bd0ece6-7a23-11e8-8014-0242ac110002 Read: Wed, 27 Jun 2018 16:01:31 +0000

Every Programmer Should Know

I’ve read this page on things a programmer should know

Tags: github, programmer, knowledge

Id: 67c8032c-7a23-11e8-9ab7-0242ac110002 Read: Wed, 27 Jun 2018 16:01:51 +0000

Haste Makes Waste When You Over-Staff to Achieve Schedule Compression

I’ve read this article by Quantitative Software Management (QSM) on how software projects are affected by the size of the team producing it, with charts and based on previous investigation

Tags: research, meta-research, quality, software, software-quality, qsm, quantitative-software-management

Id: 72b999a8-7a23-11e8-b831-0242ac110002 Read: Wed, 27 Jun 2018 16:02:10 +0000

Hacking back considered harmful?

I’ve read this article by x0rz, a security researcher, on hacking back

active countermeasure that result in limiting the attacker capabilities

And whether it is ethical to do it, even if it were illegal

Ethics is knowing the difference between what you have a right to do and what is right to do. — Potter Stewart

Tags: x0rz, security, hacking, hacking-back, ethic, legality, law, quote, potter-stewart, countermeasure, attacker

Id: 7d3d216a-7a23-11e8-8d31-0242ac110002 Read: Wed, 27 Jun 2018 16:02:27 +0000

Kurt Gödel—Separating Truth from Proof in Mathematics

I’ve read this article by Keith Devlin on Goedel’s work, especially on the Incompleteness theorem

Tags: kurt-godel, kurt-goedel, incompleteness-theorem, bertrand-russell, alfred-north, principia-mathematica, david-hilbert, mathematics, theorem, computability, philosophy

Id: 8bda1c3c-7a23-11e8-b1cb-0242ac110002 Read: Wed, 27 Jun 2018 16:02:52 +0000

ML for the working programmer, 2nd edition - chapter 5

I’ve read this chapter, to better understand finite and infinite data structures. Talks about streams (called sequences in ML), HOFs, lambda calculus. The book is by Lawrence Paulson

Some of my examples are in

Tags: book, chapter, lawrence-paulson, ml, sequence, hof, lambda-calculus, combinator, stream, lazy-list, data-structure, infinite-list, higher-order-function, function-composition

Id: 97e67a7a-7a23-11e8-bc72-0242ac110002 Read: Wed, 27 Jun 2018 16:03:12 +0000

how to hack the uk tax system, i guess

I’ve read this investigation of how a security investigator found a security defect in the UK tax system page and the process of reporting it and seeing it fixed

Tags: zemnmez, open-source, uk, hmrc, responsible-disclosure

Id: a4263c08-7a23-11e8-86c0-0242ac110002 Read: Wed, 27 Jun 2018 16:03:33 +0000

Indirect Sale-Value Models

I’ve read this article on models for selling/monetising open source. By Eric S. Raymond

Tags: eric-raymond, open-source, monetization

Id: b0788d3a-7a23-11e8-82df-0242ac110002 Read: Wed, 27 Jun 2018 16:03:53 +0000

I’ll never bring my phone on an international flight again. Neither should you

I’ve read this article by Quincy Larson on what happens when you bring your phone over to the US

Tags: us, phone, privacy, quincy-larson, international-flight, cross-border-flight, flight, device, laptop, burner-phone

Id: bc93aaf0-7a23-11e8-8ffe-0242ac110002 Read: Wed, 27 Jun 2018 16:04:14 +0000

Remote Starter Kit

I’ve read this page detailing some tools for a remote position

Tags: remote, remote-work, remote-tool, tool, starter-kit

Id: cfe1bdfe-7a23-11e8-b024-0242ac110002 Read: Wed, 27 Jun 2018 16:04:46 +0000

Moving Java Forward Faster

I’ve read this article by Mark Reinhold, explaining his proposal for a faster java release train, changing from every two years to every six months.

Tags: release, mark-reinhold, release-management, release-train, java, sun, oracle, brian-goetz, jre, jdk

Id: dc842498-7a23-11e8-8b35-0242ac110002 Read: Wed, 27 Jun 2018 16:05:07 +0000

Keeping a tidy life

I’ve read this article by Justine Arreche on how she manages her productivity tools: calendar, todo list; for all the activities in her life

Tags: justine-arreche, productivity, management, calendar, todo-list, activity, time-management

Id: e799c860-7a23-11e8-9f75-0242ac110002 Read: Wed, 27 Jun 2018 16:05:26 +0000

To Understand Rising Inequality, Consider the Janitors at Two Top Companies, Then and Now

I’ve read this article by Neil Irwin on inequality, explaining the professional career of two janitors at two different companies, in a different period of time.

Tags: neil-irwin, inequality, kodak, apple, janitor, mercer, drucker, management, career-management, career, cto, cio

Id: f66efafe-7a23-11e8-ae3d-0242ac110002 Read: Wed, 27 Jun 2018 16:05:51 +0000

Episode 8: Interview with Ryan Dahl, Creator of Node.js

I’ve read [the transcription of] this interview, to Ryan Dahl.

In it, he describes his view of Node.js and how it is not well-suited for building massive web servers, but could be appropriate for web applications

Tags: ryan-dahl, go, microservice, web-app, interview, podcast, web-server, go, golang

Id: 03cbbfca-7a24-11e8-927a-0242ac110002 Read: Wed, 27 Jun 2018 16:06:13 +0000

The Recovering Programmer

I’ve read this article by James Hague on the user-centric vision and how he faces the problems related to programming

Tags: programming, user-centric, vision, game, assembler, james-hague, recovering-programmer

Id: 0db84e2c-7a24-11e8-ac3c-0242ac110002 Read: Wed, 27 Jun 2018 16:06:30 +0000

We Who Value Simplicity Have Built Incomprehensible Machines

I’ve read this article by James Hague on examples of libraries that went wrong. How we should have said ‘no’ early on instead of accepting it. A blog post about simplicity

Tags: james-hague, simplicity, library, complexity, example

Id: 192eae72-7a24-11e8-bc6c-0242ac110002 Read: Wed, 27 Jun 2018 16:06:49 +0000

Rapid release at massive scale

Tags:

Id: 24c02266-7a24-11e8-bddd-0242ac110002 Read: Wed, 27 Jun 2018 16:07:08 +0000

Having a “work wife” or “work husband” is good for your career

I’ve read this article by Rebecca Holman explaining what is a work spouse (i.e., a trusted equal to bounce off ideas, discuss, advance together). Not a mentor, not a trusted boss, not someone reporting to you.

Explains some of the benefits of finding that role.

Tags: rebecca-holman, work-wife, work-husband, work-spouse, team-management, work, job, pairing, mentor

Id: 3136db02-7a24-11e8-b84e-0242ac110002 Read: Wed, 27 Jun 2018 16:07:29 +0000

REST APIs are REST-in-Peace APIs. Long Live GraphQL.

I’ve read this article about GraphQL and its comparison to REST APIs

Tags: graphql, rest, api, data, comparison, samer-buna

Id: 3df70628-7a24-11e8-9c3c-0242ac110002 Read: Wed, 27 Jun 2018 16:07:51 +0000

History of Lisp

I’ve read this paper by John McCarthy explaining the history of lisp

Tags: john-mccarthy, lisp, invention, language, list-processing, s-expression, m-expression, data, code, lisp-dialect, fortran, ibm

Id: 492eebb4-7a24-11e8-bcec-0242ac110002 Read: Wed, 27 Jun 2018 16:08:10 +0000

Software development 450 words per minute

I’ve read this article in which Tuukka Ojala explains how his tools for a (blind) software developer: the screen reader, the browser, the braille reader

Tags: tuukka-ojala, blindness, accesibility, browser, screen-reader, braille-reader, braille, disability

Id: 54e4e076-7a24-11e8-abd6-0242ac110002 Read: Wed, 27 Jun 2018 16:08:29 +0000

Compare your efforts: 30 vs 3000 LOC for very simple MEAN app

I’ve read this article that explains the difference between business value and technical value: a feature for the business could be very valuable but technically costly; also the other way around: they are independent variables.

Also explains that some value in development can be obtained quicker by using a framework, such as the tool that allcountjs provides: 30 lines to generate the equivalent business features to 3000 lines

Tags: allcountjs, mean, comparison, crud, framework, javascript, frontend, productivity, business-value, technical-value, cost

Id: 5eea69ce-7a24-11e8-8842-0242ac110002 Read: Wed, 27 Jun 2018 16:08:46 +0000

GitHub Integration

I’ve read this article explaining how to integrate leanpub with github: write your book (e.g., in markdown) and store it in git, then publish automatically to leanpub

Tags: leanpub, github, integration, self-publishing, publishing, book, tool, toolchain

Id: 699d067e-7a24-11e8-9962-0242ac110002 Read: Wed, 27 Jun 2018 16:09:04 +0000

WYSIWTF

I’ve read this article by Karen McGrane explaining the desktop publishing and the difference between writing and formatting for the web. Also, inline editing

Tags: karen-mcgrane, editing, formatting, desktop-publishing, medium, wysiwyg

Id: 7b5f342c-7a24-11e8-b858-0242ac110002 Read: Wed, 27 Jun 2018 16:09:34 +0000

What I’m talking about when I talk about TDD

I’ve read this article by Uberto Barbini in which he describes his re-discovery of TDD as a tool to design

Tags: uberto-barbini, tdd, rediscovery, kent-beck, test-driven-development

Id: 866b41b2-7a24-11e8-9c54-0242ac110002 Read: Wed, 27 Jun 2018 16:09:52 +0000

SE-Radio Episode 273: Steve McConnell on Software Estimation

Sven Johann interviews Steve McConnell about software estimation and planning.

Talks about intrinsic risk management and extrinsic risk management

Explains that you should manage the risk so the most uncertain is tackled in the beginning. At the retro (following the demo), you get risk identification (as root cause analysis based on not delivering as expected)

The goal of Agile was not to be able to change all the time, but to adapt to change

Embrace change

Tags: cone-of-uncertainty, agile, project-management, risk, sven-johann, steve-mcconnell, iteration, scrum, risk-identification

Id: 9c543506-7a24-11e8-8c9b-0242ac110002 Read: Wed, 27 Jun 2018 16:10:29 +0000

Software Psychology with Bjorn Freeman Benson

I’ve listened to this podcast on psychology

Tags: software-engineering-daily, bjorn-benson, psychology, walled-garden

Id: a90cf1ac-7a24-11e8-a69e-0242ac110002 Read: Wed, 27 Jun 2018 16:10:50 +0000

Using CQRS to Make Controllers Lean with Derek Comartin

I’ve listened to this podcast on CQRS

Tags: cqrs, derek-comartin, command-query-responsibility-segregation, greg-young, udi-dahan, red-book, ddd, domain-driven-design, podcast, software-engineering-daily

Id: b2056db6-7a24-11e8-97d3-0242ac110002 Read: Wed, 27 Jun 2018 16:11:05 +0000

Elm In Production: 25,000 Lines Later

I’ve read this article by Christian Charukiewicz explaining how he started a new project and a new feature in Elm. How he explained this new technology to his teammates and how it is going now.

Explains the pros and cons for the language.

Tags: christian-charukiewicz, elm, compiler, experience-report, frontend, functional-language, functional-programming

Id: bc6e1190-7a24-11e8-b19a-0242ac110002 Read: Wed, 27 Jun 2018 16:11:23 +0000

Growing Up with Alexa

Tags:

Id: c2416c52-7a24-11e8-b692-0242ac110002 Read: Wed, 27 Jun 2018 16:11:33 +0000

Jony’s Patience

I’ve read this article by Mike Kruzeniski explaining part of John Ive career at Apple and explaining part of the design process the Apple Watch had.

Tags: ux, design, apple, watch, john-ive, mike-kruzeniski, career, career-management

Id: cb789e76-7a24-11e8-bdb2-0242ac110002 Read: Wed, 27 Jun 2018 16:11:48 +0000

The Four Month Bug: JVM statistics cause garbage collection pauses

I’ve read this blog post by Evan Jones as an example of unknown unknown

Tags: evan-jones, unknown-unknown, java, mmap, garbage-collector, pause, unknown

Id: d4b6a596-7a24-11e8-b245-0242ac110002 Read: Wed, 27 Jun 2018 16:12:04 +0000

The pleasure of building big things

I’ve read this article explaining that big projects take time to be created.

The temptation is all around us, to accelerate feedback loops, create products more quickly, release earlier. That has the tension of being ‘half-baked’ products, that have not achieved the minimum level of loveable feature and, thus, not used.

Tags: time, focus, rafe-colburn, product, lean

Id: dddee4c6-7a24-11e8-b11f-0242ac110002 Read: Wed, 27 Jun 2018 16:12:19 +0000

Choose Boring Technology

I’ve read this article by Dan McKinley about how choosing boring (i.e., well-proven) technology can help you focus on your company goals and how ‘the best tool for the job’ is not always the case, as the job depends on who you ask: developers, ops, business.

Tags: dan-mckinley, boring, technology, proven, production-ready, development, operations, focus, business, goal, best-tool-for-the-job

Id: e91565cc-7a24-11e8-8849-0242ac110002 Read: Wed, 27 Jun 2018 16:12:38 +0000

Exclusive: Here’s The Full 10-Page Anti-Diversity Screed Circulating Internally at Google [Updated]

I have read this document

Tags: google, scandal, sexism

Id: fe723d14-7a24-11e8-ab5c-0242ac110002 Read: Wed, 27 Jun 2018 16:13:14 +0000

Check Your Work

Tags:

Id: 172e94e2-7a25-11e8-86cc-0242ac110002 Read: Wed, 27 Jun 2018 16:13:55 +0000

Self-Study in May 2018

May 1, 2018 - 2 minute read - Comments - self-study-aggregationmay2018

Research Shows a Simple Way to Increase Your Engagement at Work

I’ve read this article By Michael Parke, Justin Weinhardt:

We found that increasing your engagement and productivity at work could be as simple as making a plan for the day

They talk about two types of planning: time management and contingent planning. The latter is about considering possible disruptions or interruptions they may face and a plan to tackle them (if they happen).

They argue that the latter is less frustrating than the former based on the non-accomplished tasks in the former. That the former is less effective when facing a high level of interruptions, as compared to the latter, equally effective no matter how many interruptions.

They suggest contingent planning for the days with high expected interruptions, time planning for the rest. But always use planning, for higher output, happiness at work

Tags: engagement, work, productivity, michael-parke, justin-weinhardt

You May Hate Planning, But You Should Do It Anyway

I’ve read this article by Elizabeth Grace Saunders. In it, she points that:

  • Planning will trigger pain — at least initially
  • Things tend to go better when you plan
  • Planning becomes the canary

She suggests that planning can help you become more productive, even considering the sunk cost of planning itself.

Tags: elizabeth-saunders, planning, hbr, management, time-management, plan