The long way through Software Craftsmanship

Brownish Greenfield Gilded Rose Kata

Apr 18, 2016 - 3 minute read - Comments - formulationkata-formulationkatagilded-rosetrikitrokmanuel-riverogreenfieldlegacy-codebobby-johnsonterry-hughes

(This formulation has been copied and adapted from Bobby Johnson and Terry Hughes’s repository)

Formulation

Hi and welcome to team Gilded Rose. As you know, we are a small inn with a prime location in a prominent city ran by a friendly innkeeper named Allison. We also buy and sell only the finest goods.

Unfortunately, our goods are constantly degrading in quality as they approach their sell by date. We have a system in place that updates our inventory for us. It was developed by a no-nonsense type named Leeroy, who has moved on to new adventures.

Your task is to rewrite the system using an old class, that already exists. First an introduction to our system:

  • All items have a SellIn value which denotes the number of days we have to sell the item
  • All items have a Quality value which denotes how valuable the item is
  • At the end of each day our system lowers both values for every item

Pretty simple, right? Well this is where it gets interesting:

  • Once the sell by date has passed, Quality degrades twice as fast
  • The Quality of an item is never negative
  • “Aged Brie” actually increases in Quality the older it gets
  • “Sulfuras”, being a legendary item, never has to be sold or decreases in Quality
  • The Quality of an item is never more than 50, however “Sulfuras” is a legendary item and as such its Quality is 80 and it never alters.
  • “Backstage passes”, like aged brie, increases in Quality as it’s SellIn value approaches; Quality increases by 2 when there are 10 days or less and by 3 when there are 5 days or less but Quality drops to 0 after the concert
  • “Conjured” items degrade in Quality twice as fast as normal items

Your task is to create the system from scratch, with only a restriction: you must use the class Item that Leeroy developed. This class is:

  • unmodifiable, if you do, a goblin in the corner who will insta-rage and one-shot you as he doesn’t believe in shared code ownership. This prohibition applies to modifying it, deleting it, adding new methods, deleting methodts, changing visibility of stuff, etc
  • cannot be inherited, if you do, a goblin in the corner who will insta-rage and one-shot you as he doesn’t believe in code inheritance

The Item class can be found in many programming languages in Emily Bache’s repository. You are looking for the class / type Item

Happy katas and happy koding. Please be careful with the goblin!

How to start

  • Create a new repo
  • Find the class Item in this repo
  • Use TDD to develop the functionality. Remember, Item will stay as it is.
  • Have fun

Acknowledgements

Thanks to @trikitrok for the idea, Bobby Johnson and Terry Hughes for allowing me to copy and modify their kata.

Faster site generation with a native Octopress 2

Apr 17, 2016 - 2 minute read - Comments - metaoctopress-2octopressnative-octopressrakefilereinventing-the-wheel

Note: this article is an answer to a previous one, about the same topic: a tool for a faster site generation while developing / writing articles, using octopress 2.

Introduction

Octopress 2 packs, out of the box, some tasks to speed up the site generation while you’re writing articles:

Isolate a post:

# usage rake isolate[my-post]
desc "Move all other posts than the one currently being worked on to a temporary stash location (stash) so regenerating the site happens much more quickly."
task :isolate, :filename do |t, args|
  stash_dir = "#{source_dir}/#{stash_dir}"
  FileUtils.mkdir(stash_dir) unless File.exist?(stash_dir)
  Dir.glob("#{source_dir}/#{posts_dir}/*.*") do |post|
    system "git update-index --assume-unchanged #{post}" unless post.include?(args.filename)
    FileUtils.mv post, stash_dir unless post.include?(args.filename)
  end
end

Integrate with the rest of the posts:

desc "Move all stashed posts back into the posts directory, ready for site generation."
task :integrate do
  posts_dir = "#{source_dir}/#{posts_dir}/"
  Dir.glob("#{source_dir}/#{stash_dir}/*.*") do |post|
    FileUtils.mv post, posts_dir
    full_path = "#{posts_dir}/#{post.split("/").reverse.first}"
    system "git update-index --no-assume-unchanged #{full_path}"
  end
end

Usage

(at the folder where the Rakefile is located)

  • isolate the selected file. Specify the pattern to keep.
rake isolate["draft"]
  • write the new content
  • commit to git
  • integrate with the rest of the files
rake integrate
  • git push

Conclusion

When I needed this tool, to speed up my feedback cycle, I didn’t find any that did this job, so I created a small tool for this same purpose. Unfortunately, there was one, so close to my nose that I could not find it. I was reinventing the wheel.

It is better to switch to a tool that has been tested by more users, that has received the community’s approval than a custom-made tool.

Self-Study in April 2016

Apr 1, 2016 - 8 minute read - Comments - self-study-aggregationapril2016readactionagilealan-schergeralberto-menaanalysisanders-ericssonangel-medinillaannouncementappleapplicationattackautomationautonomyavdi-grimmbonilistabootcampbreachbrian-knappbruce-schneierbrute-forcebuck-herouxbugbug-countburnoutbusinesscareerchangecode-retreatcodingcommentcomparisoncontinuous-learningcontractorcorbett-barrcorporateculturecraftsmanshipdan-luudan-pinkdave-gerhardtdavid-bonilladefectdefect-countdefinitiondeliberate-practicedeploymentdesigndev-bootcampdeveloperdeveloper-bootcampdeveloper-qualitydevelopmentdevopsdillon-forrestdomaindriftdynamically-typedemployeeentrepreneurshipexpertexploitfbifilefilesystemfirsthandfrancho-jovenfranklin-chengarbage-collectiongcgdcrgeniusgeofencegeofencinggitgithubgithub-pagesgogo-memory-modelgolanggrowth-trajectoryhackinghakyllholidayhome-officehugohypothesisimprovementincremental-generationinfographicinnovationintelligencejacob-shriarjavajekylljekyll-3jim-birdjobjob-vs-careerjon-yaujooqjuergen-hoellerjvmkai-weikaizenkent-beckkerrick-longkingkotlinlaboratorylanguagelawlearninglistlong-life-learninglukas-edermalcolm-gladwellmark-maundermartin-fowlermasterymastery-autonomy-purposemetameta-readmichael-ibarramichael-williamsmicroservicemindmossack-fonsecamossack-fonseca-breachmotivationmythnetflixnguyen-dinh-quanoctopressoctopress-2octopress-3officeoraclepassionper-malmenpeppep-20performancepersonal-developmentphil-haackpluginpolicypracticeprocrastinationprocrastinatorproductivityprofessional-developmentprogrammingpurposepythonquadtreequalityquotereactionreactive-programmingread-on-readrefactoringreleaseremoteresiliencerevolution-sliderrisk-appetiteroman-coedorpsrtrees2s3sandjar-kozubaevscratch-refactoringsecurityself-investmentside-projectsocial-mediaspanishspeedspringssgstartupstatic-site-generatorstatically-typedstockphotostorystrategystudentsubcategorysuccesssusanna-bergswizec-tellertalentteam-managementtedted-talktim-urbantime-managementtiptip-and-tricktom-johnsontravistweakuberunlimited-vacationvacationvideovulnerabilitywebappwebcastwordpressworkzaragozazen

Deliberate Practice: What It Is and Why You Need It

I’ve read this article by Corbett Barr on what is deliberate practice and why it is needed to become an expert in a given domain field.

The four essential components:

  • Motivation
  • Tailored (practice)
  • Feedback
  • Repetion

Tags: corbett-barr, deliberate-practice, expert, practice, anders-ericsson, talent, professional-development, career

10 Features I Wish Java Would Steal From the Kotlin Language

I’ve read this list of features that the Kotlin Language has that would be an improvement for the Java language. By Lukas Eder

Tags: list, lukas-eder, kotlin, java, comparison, language, jooq

How we built Uber engineering’s highest query per second service using Go

I’ve read this post by Kai Wei on a microservice they’ve built using Go.

Explains the reasons for choosing that algorithm for geofencing, the performance they’re achieving, and the architecture.

Tags: uber, go, microservice, performance, geofence, geofencing, rps, go-memory-model, kai-wei

Unwinding Uber’s Most Efficient Service

I’ve read this article by Buck Heroux commenting on the decisions of Uber for building the geofencing microservice (above read).

Explains the different alternatives for algorithms in this problem space and has implemented them in go. Provides a benchmark for comparing those, including a profiling session.

Tags: s2, quadtree, rtree, brute-force, geofence, geofencing, uber, comment, buck-heroux, go, read-on-read, meta-read

Lawful Hacking and Continuing Vulnerabilities

I’ve read this article by Bruce Schneier on the stance the FBI is taking in regards to vulnerabilities discovered in Apple’s devices.

Tags: bruce-schneier, apple, security, fbi, vulnerability, exploit, law, hacking

A Side Project Helped Jumpstart My Career — Life Learning

I’ve read this article by Dave Gerhardt on how making a side project happen affected his life and his skills.

Some of the reasons for doing it include:

  • It forces you to figure stuff out
  • The only way to learn is by doing
  • It gets your brain working on something other than your job
  • You have to create your own network
  • You are the CEO

Tags: long-life-learning, continuous-learning, side-project, dave-gerhardt, drift, professional-development, personal-development, business, career

Fun Jekyll Tricks

I’ve read this article by Brian Knapp where he explains some tips and tricks of jekyll (in which octopress is based on): speed, deployment, subcategories inside the blog, _data, _includes.

Tags: brian-knapp, jekyll, octopress, tip-and-trick, improvement, subcategory, meta, automation, deployment

La ola que llega

I’ve read this bonilista by David Bonilla, where he explains (in Spanish) the ‘contractor’ phenomenon arriving to Spain, 2-3 years after being in other countries and the effects that this could have both for workers and companies.

Tags: bonilista, david-bonilla, contractor

10 razones por las que este sábado deberías ir a un code retreat

I’ve read this list of reasons for attending a code retreat, by Francho Joven, who I met in the Global Day Of Code Retreat (GDCR) ‘15 in Zaragoza

Tags: francho-joven, list, zaragoza, code-retreat, gdcr

Meaningful Work through Passion, not Genius

I’ve watched this talk on the importance of hard work and how it can be mistaken as genious. By Malcolm Gladwell

Tags: malcolm-gladwell, passion, genius, work, time-management, productivity, career, mastery-autonomy-purpose

How to ask your wife for permission to spend $250,000 on a domain name

I’ve read this article by Jon Yau on how they started StockPhoto.com, buying a $250,000 domain name.

Tags: startup, domain, stockphoto, jon-yau

Sorry, developer bootcamps: I was wrong

I’ve read this article by Dillon Forrest on the topic of developer bootcamps. Explains why developers should not be threatened by recent graduates of these programs and describes how people pursuing these programs usually are:

  • Intelligence
  • Risk appetite
  • Resilience
  • Self-investment
  • Entrepreneurship
  • Growth trajectory

Tags: bootcamp, developer-bootcamp, dev-bootcamp, dillon-forrest, intelligence, risk-appetite, resilience, self-investment, entrepreneurship, growth-trajectory

The JVM and Java Garbage Collection

I’ve watched this webcast about how the JVM garbage collection works. By Michael W Williams

Tags: michael-williams, oracle, webcast, jvm, garbage-collection, gc,

Files Are Hard

I’ve read this article on why software that writes on files is difficult, based on the different filesystems that are below, and the operating system. Written by Dan Luu.

Uses software product to find bugs in filesystems

Tags: filesystem, file, dan-luu, analysis

Contrata a un fracasado con ilusión inquebrantable

I’ve read this article by Alberto Mena (in Spanish) on what are the qualities that define a good programmer:

  • humility
  • failure
  • illusion
  • hard work

Tags: alberto-mena, spanish, team-management, success, developer, quality, developer-quality

Don’t react

I’ve read this article by Avdi Grimm on how the action vs reaction attitude. Why to prefer the former.

Tags: action, reaction, social-media, avdi-grimm, productivity

FTP is so 90’s. Let’s deploy via Git instead!

I’ve read this guide on how to deploy using git. By Kerrick Long

Tags: kerrick-long, git, deployment, webapp, application, devops

Job vs Career: 10 Key Differences You Need To Understand

I’ve read the infographic and the article by Jacob Shriar on what differentiates a job from a career

Tags: jacob-shriar, infographic, job-vs-career, comparison, job, career

The Secret To Employee Motivation

I’ve read the infographic and the article by Jacob Shriar on what motivates employess: mastery, autonomy and purpose. A direct reference to Dan Pink’s “The puzzle of motivation” TED talk.

Tags: jacob-shriar, motivation, employee, infographic, mastery, autonomy, purpose

The puzzle of motivation

I’ve watched this TED talk by Dan Pink on what motivates us: intrinsic vs extrinsic motivation.

Also about the gap that exists between what science knows and what businesses propose.

Tags: ted, ted-talk, video, dan-pink, mastery, autonomy, purpose

Applying a ceiling to the bug count

I’ve read this interview, written by Susanna Berg, on how King has reduced the amount of bugs in their backlog using an agile technique, measuring and setting a limit.

Tags: susanna-berg, king, agile, bug, bug-count, defect, defect-count, per-malmen

Coming up in 2016: Spring Framework 4.3 & 5.0

I’ve read this announcement of Spring’s new release, 5.0, which will require java 8 and will turn most of the features into the reactive programming paradigm. By Juergen Hoeller.

Tags: juergen-hoeller, spring, reactive-programming, release, announcement

Why offices are where work goes to die

I’ve read this article by Swizec Teller explaining the downsides of working in an office as compared to working remotely.

Tags: swizec-teller, remote, home-office, office, comparison, time-management

The Myth of the Passionate Developer

I’ve read this article by Michael Ibarra on what are the implications of being a passionate developer, how it affects your tasks and what are the factors to a job.

Tags: michael-ibarra, passion, development, job, motivation, myth

Mossack Fonseca Breach – WordPress Revolution Slider Plugin Possible Cause

I’ve read this article by Mark Maunder, which describes an hypothesis on how the Mossack Fonseca breach could have happened. Also describes and shows how to breach a Wordpress installation with a vulnerable Revolution Slider plugin.

Tags: mark-maunder, security, breach, mossack-fonseca-breach, mossack-fonseca, hypothesis, attack, plugin, revolution-slider, wordpress

Tim Urban: Inside the mind of a master procrastinator

I’ve watched this TED talk from Tim Urban on how the procrastinator’s mind works, exemplified by his own career.

Tags: procrastinator, procrastination, mind, time-management, tim-urban

PEP 20 – The Zen of Python

I’ve read the PEP20, the zen of python, with special attention to this:

Explicit is better than implicit.

Tags: pep-20, pep, python, zen

Why I switched from Octopress 2 to Hugo

I’ve read this article by Franklin Chen on the change he made on the static site generator (SSG) he used. He considered hakyll, octopress, jekyll, hugo. Was decided between hakyll and hugo for their speed but, finally, decided to use hugo for their bigger community.

Tags: franklin-chen, comparison, ssg, static-site-generator, hakyll, octopress, jekyll, hugo, change, speed, statically-typed, dynamically-typed, golang, performance

Why incremental regeneration in Jekyll 3.0 is such a big deal

I’ve read this article by Tom Johnson on one of the new features that jekyll 3.0 brings: incremental generation. How this can speed up the generation

Tags: tom-johnson, incremental-generation, speed, performance, octopress-2, octopress-3, jekyll-3

Hugo, S3, Travis CI, oh boy!

I’ve read this guide by Alan Scherger on how to set up a specific stack for developing and deploying a static site blog.

Tags: alan-scherger, static-site-generator, ssg, travis, hugo, s3

Deploy your blog to github pages automatically using Hugo and Travis

I’ve read this article by Roman Coedo on how to deploy a hugo blog to github pages, using travis.

Tags: roman-coedo, travis, hugo, github, github-pages, ssg, static-site-generator

Improve Octopress with Advanced Tweaks & Tips

I’ve read this list of tips on how to improve the octopress (2) installation. By Nguyễn Đình Quân.

Tags: nguyen-dinh-quan, octopress-2, tip, tweak

Laboratorios

I’ve read this article by Ángel Medinilla, about laboratories to use a percentage of company time to investigate, innovate, learn and improve.

Tags: angel-medinilla, team-management, time-management, innovation, strategy, improvement, kaizen, laboratory, craftsmanship, spanish

What Refactoring is, and what it isn’t

I’ve read this article by Jim Bird, where he splits some practices into refactoring and not refactoring. Draws the line between these two different activities.

Also cites scratch refactoring.

Tags: jim-bird, scratch-refactoring, refactoring, martin-fowler, kent-beck, definition, quote, design

Pitfalls of Unlimited Vacations

I’ve read this article by Phil Haack on the github, travis and netflix policies about unlimited vacations and the effects they have on the employees.

Also about minimum vacation periods, (paternity) paid leave.

Tags: phil-haack, unlimited-vacation, holiday, vacation, team-management, burnout, github, travis, netflix, policy

Cultura Corporativa

I’ve read this article by Ángel Medinilla about the corporate culture, and how “hanging a highly interchangeable sentence on a wall” does not represent it.

Tags: angel-medinilla, corporate culture, spanish

What It’s Really Like to Learn to Code

I’ve read this article that explains firsthand how it is to learn programming for a novice student,even with a strong financial background and having completed a university degree. By Sandjar Kozubaev

Tags: sandjar-kozubaev, learning, programming, student, firsthand, coding, story

Books read in 2016Q1

Mar 31, 2016 - 1 minute read - Comments - bookreading2016Q1self-study

Books I’ve read this quarter1:

Books started, not yet finished (WIP):

Books I want to finish:

Books that have entered the queue:

Learning paths that have entered the queue:


  1. The ending date of the quarter is the same as the publication date ↩︎

Self-Study in March 2016

Mar 2, 2016 - 7 minute read - Comments - self-study-aggregationmarch2016readabstract-data-structureadoptionadtagileambitionanalogyanalysisautomationbecodeweekbemben-orensteinbenedict-fritzblogbook-comparisonbook-reviewburnoutcapacitychristopher-buiclean-codecodecationcodingcodurancecohesioncoman-hamiltoncomparisoncontinuation-stylecraftsmancraftsmanshipcsscss-architecturecss-methodologyculturedaniel-irvinedeath-marchdeductive-learningdeep-workdeliberate-practicedeploydesigndesign-level-cohesiondesign-problemdesk-surfingdetaildevopsdlc-cohesiondomain-specific-languagedslduncan-stuartedward-yourdonessayestjetsyexclusive-orexperienceexperience-reportfeminismfibonaccifragile-test-problemfullstackgarbage-collectiongiving-up-tddgroup-belongingheinz-kabutzhireholidayhypothesisiain-taitian-sommervilleimplementation-patternsimprovementin-companyinductive-learninginternalizinginterviewintpintroductionivan-fraixedesjamis-buckjavajaxenterjemima-kissjessica-livingstonjobjoe-richardsonjohn-allspawjohn-rawlsjoseandreslabellambdalarry-constantinelawlaw-of-ruthless-prioritizationlazinesslearn-to-programlearninglearning-cyclelearning-processlistmachine-learningmagic-bullet-problemmagical-thinkingmanagementmartin-fowlermaturity-levelmetametaphormotivationmyers-briggs-typenon-strictnessoctopressoffice-cultureonboardingpaul-grahamperfectionpersonalpet-projectplaipomodoroproblemprocessprocess-theoryproduct-managementproduct-strategyproductivityprogramming-languagepsychologyq-and-aquotereactive-programmingred-black-treerefactoringresponserich-mironovrobert-martinrobin-rendlerubysandro-mancusosarah-tavelsassschemeshallow-workshippingshriram-krishnamurthisimplificationslacksmc-cohesionsoftware-designsoftware-economicsspamspammerstorystrictnesstddteachingteamteam-managementteammateteamworktechniquetestable-design-problemtime-managementtip-and-tricktnstaafltype-soundnessuncle-bobuser-experiencevacationveil-of-ignorancevincent-partingtonvlogwarfarewolfgang-goerlichworky-combinatorycyeray-darias

Learning Programming Isn’t That Hard, Deep Work Is Hard

I’ve read this article by Benedict Fritz on two types of work (i.e., deep and shallow) and how programming is of the deep type. He links the difficulty of learning to program to the difficulty of practicing deep work.

Tags: analogy, benedict-fritz, deep-work, shallow-work, learn-to-program, psychology

BeCodeWeek by Yeray Darias

I’ve read this category of posts by Yeray Darias about his BeCodeWeek, a desk-surfing experience at BeCode.

Publishes one entry per day detailing his activities: working for an open-source library, discussions, etc

Tags: becodeweek, yeray-darias, desk-surfing, experience, experience-report, analysis

BeCodeWeek by Yeray Darias

I’ve read this category of posts by Yeray Darias about his BeCodeWeek, a desk-surfing experience at BeCode.

Publishes one entry per day detailing his activities: working for an open-source library, discussions, etc

Tags: becodeweek, yeray-darias, desk-surfing, experience, experience-report, analysis

Tracer Bullets

I’ve read this page about tracer bullets, an analogy from the military warfare to a software project.

Serves the purpose of adjusting the aim of the cannon to better reach the target.

Tags: analogy, metaphor, warfare, management

Cohesion - the cornerstone of software design

I’ve read this article by Sandro Mancuso on the topic of cohesion. Describes the 7 types of cohesion, as described in Structured Design1, from worst to best:

  • Coincidental cohesion
  • Logical cohesion
  • Temporal cohesion
  • Procedural cohesion
  • Communicational/informational cohesion
  • Sequential cohesion
  • Functional cohesion

and about Design-Level Cohesion:

  • Coincidental relation (R1)
  • Conditional relation (R2)
  • Iterative relation (R3)
  • Communication relation (R4)
  • Sequential relation (R5)
  • Functional (R6)

Tags: cohesion, codurance, edward-yourdon, larry-constantine, list, sandro-mancuso, software-design, design-level-cohesion, smc-cohesion, dlc-cohesion

Etsy CTO Q&A: We Need Software Engineers, Not Developers

I’ve read this interview with John Allspaw, where they explain the onboarding experience for new hires at Etsy, the DevOps philosophy and the need for engineering skills, more than developer skills. This can be exemplified in the need to know more, defining the boundaries of your job and finding the right tool for the job.

Tags: devops, interview, q-and-a, john-allspaw, etsy, onboarding, hire, team-management, deploy

Frequency Reduces Difficulty

I’ve read this article by Martin Fowler on why we should repeat things that are difficult for us:

  • Perfectioning the technique
  • Internalizing the details
  • Easing its automation

Tags: martin-fowler, automation, process, perfection, internalizing, technique, detail, process-theory, agile

Lambdas are confusing

I’ve watched this video where Coman Hamilton from JAXenter interviews Dr. Heinz Kabutz about Java’s lambda syntax. Cites the problem with exceptions, generics, method overloading.

Tags: java, lambda, coman-hamilton, jaxenter, heinz-kabutz, problem

https://www.youtube.com/watch?v=WcHom1eVhi4&feature=youtu.be

El full-stack developer en 2016

I’ve read this article by Jose Ignacio Andrés about the job descriptions of 2016.

El principal valor de un full-stack es poder simplificar el trabajo a los demás miembros del equipo.

My translation:

The main value of a full-stack developer is to be able to simplify other teammates' work

Tags: teamwork, teammate, fullstack, simplification, work, team-management, jose andres

I am a software craftsman

I’ve read this article by Daniel Irvine about calling yourself a craftsman or not. He says that if you adhere to their values, you should.

Tags: craftsmanship, label, daniel-irvine, craftsman, group-belonging

Teaching Programming Languages in a Post-Linnaean Age

I’ve read this paper by Shriram Krishnamurthi where he explains the need for books like PLAI:

  • lack of paradigms in new languages, and its separation (or lack of)
  • design of languages cheaper and cheaper these days
  • rigor level in publications
  • inductive and deductive learning

Notes

post-Linnaean refers to the Carl Linnaeus:

He is known as the father of modern taxonomy

Tags: inductive-learning, deductive-learning, dsl, domain-specific-language, type-soundness, continuation-style, garbage-collection, reactive-programming, scheme, plai, teaching, programming-language, shriram-krishnamurthi

Lazy Ruby

I’ve read this article by sonnym about using ruby’s lazy (non-strict) features, detailing an example with Fibonacci’s sequence.

Tags: laziness, strictness, non-strictness, ruby, fibonacci, comparison

Jessica Livingston

I’ve read this essay by Paul Graham about his co-founder at the Y-combinator: Jessica Livingston. She was considered the Social Radar at YC

The essay also talks about the non-existent separation between working hours and not and about her implication and personality.

Tags: jessica-livingston, paul-graham, y-combinator, feminism, yc, essay

Four Laws Of Software Economics (Part 1)

I’ve read this article by Rich Mironov on why the development team will never be big enough (because of economics, because there are more things to be done than time to do them, so we have to prioritize them) and about the communication problems between the dev team and the client(s).

Also talks about the general personality of clients and devs and task prioritization

Tags: exclusive-or, magical-thinking, tnstaafl, management, agile, team, capacity, death-march, estj, intp, software-economics, product-strategy, law-of-ruthless-prioritization, law, rich-mironov, slack, myers-briggs-type

You Should Take A Codecation

I’ve read this article by Ben Orenstein explaining what is a codecation and what he’s done in the two codecations he’s taken.

Tags: codecation, ben-orenstein, vacation, holiday, coding, shipping, in-company

Giving Up on TDD

I’ve read this article by Ian Sommerville about the problems he’s found while doing TDD, mainly about design, but also about being conservative in the amount of tests you allow yourself to break while refactoring.

Tags: tdd, ian-sommerville, refactoring, problem, design-problem, design, giving-up-tdd

Giving Up on TDD - answer

I’ve read this article by Robert C. Martin on the common issues for people adopting TDD:

  • The Fragile Test Problem
  • The Design Problem
  • The Testable Design Problem
  • The Magic Bullet Problem

This article is an answer to another by Ian Sommerville.

Tags: tdd, uncle-bob, robert-martin, adoption, ian-sommerville, fragile-test-problem, giving-up-tdd, design-problem, testable-design-problem, magic-bullet-problem

Seek out jobs with fast learning cycles

I’ve read this article by Sarah Tavel on learning on the job and how fast these learning cycles can happen at companies at different stages of maturity.

So if you’re thinking of changing jobs, or taking your first, my advice: find a place with a fast learning cycle, and a steep learning curve.

Tags: learning, job, hypothesis, sarah-tavel, learning-cycle, maturity-level, learning-process, product-management

Clean Code Vs. Implementation Patterns

I’ve read this comparison of Clean Code vs Implementation Pattern books, by Vincent Partington.

In it, the author explains the differences in style in both books, and how they compare to others.

Tags: clean-code, implementation-patterns, comparison, book-review, book-comparison, vincent-partington

Stuck in Traffic vlog #103 - New Spammer Techniques

I’ve seen this vlog entry on machines fighting machines (exemplified with the spam producing and filtering) and how some spammers are trying more direct techniques focusing on higher-value targets, sometimes even handcrafting messages and modifying them every few units.

Tags: wolfgang-goerlich, spam, vlog, spammer, machine-learning

Becoming A Finisher

I’ve read this article by Christopher Bui where he explains that projects that are too ambitious stall your productivity and make you lose your focus.

Tags: christopher-bui, pomodoro, time-management, productivity, motivation, ambition, paul-graham, quote

Hanging around with red-black tree implementations: the beginnings

I’ve read this article by Ivan Fraixedes where he details the progress of implementing a red-black tree, and also his motivation for doing it.

Tags: ivan-fraixedes, red-black-tree, abstract-data-structure, adt, deliberate-practice, pet-project

Some Tools for Faster Blogging in Octopress

I’ve read this article for tips and tricks on how to blog faster with octopress. Written by Duncan Stuart.

Tags: duncan-stuart, blog, improvement, meta, octopress, tip-and-trick

The veil of ignorance

I’ve read this article by Adam Morse on how not being on the top of the skills performance can affect your design and your user experience. Also, references the concept of “The Veil of Ignorance”, a concept by John Rawls.

Tags: john-rawls, veil-of-ignorance, user-experience, design

To Smile Again – Recovering from the paralysis of burnout

I’ve read this article by Jamis Buck on his story of burnout, what symptoms had on him and how he got out of it.

Tags: burnout, jamis-buck, psychology, productivity, personal, story, analogy

Beyond email: could startup Slack change the way you work?

I’ve read this article on Slack’s office culture, with their diversity, policies and values after a high people growth in a short period of time. By Jemima Kiss

Tags: culture, office-culture, slack, jemima-kiss

Slack: Work This Way

I’ve read this article, a response to my above read, about the office culture at Slack.

Tags: iain-tait, response, slack, office-culture

BEM 101

I’ve read this introduction to a CSS style called Block, Element, Modifier methodology (BEM).

In it,

  • a block is a top-level abstraction of a new component
  • Child items, or elements, can be placed inside and these are denoted by two underscores following the name of the block […]. modifiers can manipulate the block so that we can theme or style that particular component without inflicting changes on a completely unrelated module. This is done by appending two hyphens to the name of the block […].

By Joe Richardson, Robin Rendle et al.

Tags: joe-richardson, robin-rendle, bem, css, css-methodology, introduction, css-architecture, sass


  1. Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design by Yourdon and Constantine. ↩︎

Tip: using tortoise credentials in git CLI

Mar 2, 2016 - 1 minute read - Comments - githow-totipclitortoisegit

TortoiseGit part

  • Go to a repo
  • right button, Settings
  • Git -> Credential
  • Add a creadential
  • Config type: global
  • Helper: wincred

Sync once using your HTTPS password

CLI part

Open the $REPO/.git/config and add

[credential]
	helper = wincred

Remote git operations should not ask for credentials anymore