The long way through Software Craftsmanship

Self-Study in August 2016

Aug 1, 2016 - 3 minute read - Comments - self-study-aggregationaugust2016read2faaaron-kraussagileamazonbill-sourourbindingcareerconfconferenceconstdegreedevin-coldeweydevopses2015eventual-consistencyexperiencefull-stack-developerfunctionhand-signalsholberton-schoolinterview-processjavascriptjosip-franjkovicjuan-hernandezkyle-younglead-devlessons-learnedlifecyclemaryam-labibnistoccupy-movementon-callopinionpair-programmingpivotalprofessional-careerrace-conditionregulationrestrest-apiryan-alexandersecuritysemicolonsmsspanishstylesylvain-kalachesyntaxtddtdzteamtemporal-dead-zonetitleuniversityus-nistvarweb

Lessons in Agile: Six Months at Pivotal

I’ve read this article by Maryam Labib where she explains what she has learned in the last 6 months at Pivotal: how to pair program, how to TDD and some good practices to be a better developer.

Tags: maryam-labib, pivotal, career, professional-career, tdd, pair-programming, team, lessons-learned, experience

Hacking verbal communication systems

I’ve watched this talk by Ryan Alexander on what kind of systems humans use to communicate and how to improve them. Explains the hand signals at Occupy movement (called (Occupy movement hand signals)[https://en.wikipedia.org/wiki/Occupy_movement_hand_signals])

Tags: conference, ryan-alexander, lead-dev, conf, hand-signals, occupy-movement

Ni titulitis, ni cuñadismo (Spanish)

I’ve read this article about the regulation or no regulation of the programmer trade, by Juan María Hernández

Tags: regulation, opinion, title, degree, university, juan-hernandez, spanish

Are Semicolons Necessary in JavaScript?

I’ve watched this video by Kyle Robinson Young on whether semicolons are necessary in javascript and why he purposely does not use them, to teach people how to do it. Suggests going for a month with the opposite way (write / don’t write) to see how it feels and take an informed decision.

Tags: javascript, semicolon, style, syntax, kyle-young

Race conditions on the web

I’ve read this article by Josip Franjković on the race conditions that can happen using REST APIs, related to eventual consistency matters.

Tags: eventual-consistency, josip-franjkovic, race-condition, rest-api, rest, web

NIST declares the age of SMS-based 2-factor authentication over

I’ve read this article by Devin Coldewey, where he explains that the US NIST has published a draft that suggests using SMS for two-factor authentication in a different way: check that they are real phones and not VoIP to reduce the tampering with.

Tags: devin-coldewey, 2fa, sms, nist, us-nist, security

My Interviews with Amazon

I’ve read this article by Aaron Krauss, where he explains his experience interviewing with Amazon at Seattle. Explains the whole process and insights from some phases.

Tags: aaron-krauss, amazon, interview-process

DevOps Students Learn the Value of Uptime With 3 a.m. Calls

I’ve read this article about the practices related to “on call” at Holberton School and their students.

Tags: sylvain-kalache, holberton-school, on-call, full-stack-developer, devops, agile

Constant confusion: why I still use JavaScript function statements

I’ve read this article that explains the comparison of declaring functions in javascript (ES2015 and above), with the short notation for a function. By Bill Sourour.

Cites the temporal dead zone (TDZ):

[…] JavaScript binds the declaration of “sayHelloTo” — reads it first, puts it at the top, and creates a space in memory to hold its value — but it doesn’t set “sayHelloTo” to anything until it reaches it during execution.

The time between “sayHelloTo” being bound and “sayHelloTo” being initialized is called the temporal dead zone (TDZ).

Tags: tdz, temporal-dead-zone, bill-sourour, javascript, es2015, function, const, var, binding, lifecycle

AWS Kinesis Zombieland

Jul 28, 2016 - 1 minute read - Comments - aws-kinesisawsciberadoworkshopworkshop-notesnotes

I attended a workshop on AWS Kinesis, called AWS Kinesis Zombieland by Javi Moreno at capside.

Notes

AWS Kinesis Zombieland

  • muy importante escoger bien la clave de particionado (id de shard)
  • KPL librería de kinesis que te permite hacer batching, timeout, …
    • la otra se llama KCL.
    • KCL permite mantener estado
  • cuando te pidan una app de big data, pregunta para qué lo quieren, lo mismo que con cualquier proyecto de software
  • latitud = Y, longitud = x
  • el canal se llama stream, la capacidad se llama shard
    • el shard sólo permite 5 lecturas por segundo, 2MB/s
  • usar el shard como buffer
  • usar la clave de particionado como algoritmo de agregación
  • cada vez que tienes una tabla en dynamodb, tienes que poner una alerta de throughput
  • nota: lo que no puedes hacer es guardarlos todos y luego procesarlo. no tienes potencia para todo eso

Preguntas:

  • ¿cómo se calcula el id del shard?

Self-Study in July 2016

Jul 4, 2016 - 8 minute read - Comments - self-study-aggregationjuly2016read10x2faagentagilealexander-yakushevanalogyandroidanswerassemblerasynchronousatsauthenticationbaasbackend-as-a-servicebasecampbeginnerben-halpernbig-companybill-sourourbinarybookbook-editingbook-publishingbook-writingbuscareercareer-securitycarin-meiercate-hustonclean-codeclojureclojure-gazettecommunicationcomparisoncompensating-actioncomputerconversation-patterncopy-pastecorrelation-idcvdan-kimdavid-dilldebuggerdeveloperdhheconomyefficiencyelton-minettoemployeeemployerend-of-the-internetenglisheric-ellioteventevent-loopevolving-articleexception-handlingfaasfunction-as-a-servicegiovanni-aspronigithubgoogle-summer-of-codegregor-hohpegsocguideguidelinehackintoshhiringignacio-segurainterviewinvestmentjason-gormanjason-zimdarsjavascriptjeff-halljobjob-interviewjob-marketjob-offerjob-securityjurgen-appeloken-mazaikakotlinlambdalanguagelawlearn-codinglimitationlistlove-of-languagemacmacintoshmasha-diminskymbassmfamike-robertsmike-rundlemobile-backend-as-a-servicemolly-wilsonmonotaskingmulti-factor-authenticationmultitaskingnativenodejsnon-nativeobject-calisthenicsofaofficeone-factor-authenticationonline-votingpandocparadoxpci-guruphppolicyportugueseproductprofessional-careerquincy-larsonrecruiterrecruitmentrelated-to-articleresumeretryrobert-martinrubyscaled-agilesecurityserverlesssmall-companyspanishstartuptddtime-managementtip-and-tricktooltwo-factor-authenticationunbeateable-programmeruncle-bobunitaskingunstoppable-programmerverena-von-pfettenwebworking-environmentwrite-off

Until the End of the Internet

I’ve read this article by Jason Zimdars explaining the “end of the internet” policy at Basecamp: they will make everything possible to keep the services running for existing customer until the end or until the last customer uses it.

Tags: policy, end-of-the-internet, jason-zimdars, basecamp, product

How Agile Principles Can Fund Your Start-Up

I’ve read this article by Jurgen Appelo explaining how the agile values can help you negotiate funding for your startup: instead of negotiating with each investor, agree on a formula and invest in many small rounds, instead of a big one. This works both ways: for buying and for selling.

Suggests using a base plus the amount of sales in the last year * a percentage.

Tags: jurgen-appelo, investment, startup, agile

How I fell in love with a programming language

I’ve read this article by Dan Kim on the feelings of love and comfort he feels when he’s programming in Kotlin, for Android. Tells the story of DHH and the love of Ruby as a similar one.

Tags: dan-kim, dhh, ruby, love-of-language, kotlin, android

Book writing for the busy programmer

I’ve read this article by Carin Meier on what tools she found useful for writing, editing and publishing a science fiction book she was writing for her daughter.

Tags: tool, pandoc, carin-meier, book, book-writing, book-editing, book-publishing

one-, two-, and three-factor authentication

I’ve read this article by Jeff Hall, that explains the factors in multi-factor authentication.

Tags: jeff-hall, ofa, 2fa, mfa, one-factor-authentication, two-factor-authentication, multi-factor-authentication, pci-guru, security, authentication

Scaling Agile: A Law And Two Paradoxes

I’ve read this article by Giovanni Asproni about agile.

Fundamental law of scaling: Scaling up amplifies the bad and makes the good more difficult.

First paradox of scaling: Most projects are scaled up because they don’t fulfill the prerequisites for scaling.

Second paradox of scaling: Projects fulfilling the prerequisites for scaling have a lesser need to scale.

Giovanni Asproni

Also goes on to explain ten prerequisites for scaling.

Tags: scaled-agile, agile, giovanni-asproni, paradox, law

Carta abierta a ese empresario que no encuentra talento

I’ve read this article by Ignacio Segura reacting to a previous article about job offer and demand. Ignacio explains how the job market can be modeled and how workers have found ways of selling their time to the best price.

Tags: ignacio-segura, analogy, job-offer, job, job-market, economy, spanish

David Dill: Why Online Voting Is a Danger to Democracy

I’ve read this interview to David Dill on why the online voting is not a good idea and we should stick to paper as the golden rule for voting processes.

Explains how difficult is to convince people of the technical limitations and the massive incentive it would be to hack into election systems / services.

Tags: interview, david-dill, online-voting, limitation

Clojure Gazette - TDD in Clojure on Android

I’ve read this interview to Alexander Yakushev, about his Google Summer of Code and the project he is currently working on: Clojure-android

Tags: interview, clojure-gazette, alexander-yakushev, google-summer-of-code, gsoc, clojure, tdd, android

What Will GitHub Be in 5 years?

I’ve read this article that describes the current state of Github business and the possible solutions in the upcoming five years. By Ben Halpern

Tags: ben-halpern, github, economy, startup, investment

Serverless Architectures

I’ve read this evolving article by Mike Roberts on what is and is not Serverless: [mobile] backend as a service or function as a service.

Converts some n-tier applications into serverless ones, expliciting that this is only a way of doing it, not necessarily the way he would do it

Tags: faas, baas, mbass, function-as-a-service, backend-as-a-service, mobile-backend-as-a-service, serverless, evolving-article, mike-roberts, lambda

Big co. vs small co. & job vs. career stability

I’ve read this article by Cate Huston on the career and job stability that big companies and small companies can offer:

Job security means that you know you will keep getting a paycheck from $company. Career security means that you know you can get another job, and develop yourself and your career in the way that is meaningful to you.

Tags: job-security, cate-huston, big-company, small-company, career-security, career, professional-career

Copy. Paste. Code?

I’ve read this article by Bill Sourour on the different point of view of solving questions in coding many years ago compared to nowadays.

Also explores the concept of copy pasting code without understanding it, explaining that the endgame is writing good code that works and is easy to change.

Tags: copy-paste, bill-sourour, clean-code, comparison

Why so many developers hate recruiters

I’ve read this article by Quincy Larson on how recruiters for the IT sector work and how to work with them for your best possible outcome.

Tags: career, professional-career, recruitment, recruiter, agent, hiring, quincy-larson

Every time someone posts one of these “coding is over” essays on Medium, they undo a good chunk of…

I’ve read this article by Quincy Larson on why we should not tell others about their choosing of learning programming, and every time we do, some doors close.

Tags: answer, learn-coding, related-to-article, quincy-larson

29 Behaviors That Will Make You An Unstoppable Programmer

I’ve read this list of tricks to become a be a better programmer. By Ken Mazaika

  1. Use Google very aggressively.
  2. Maintain an obnoxious amount of stick-to-itiveness.
  3. Acknowledge that micro-decisions matter.
  4. Acknowledge that most major decisions don’t matter that much.
  5. Always use the right tool for the job.
  6. Understand that code is cheap.
  7. Evaluate technologies based on all their merits.
  8. Say “I don’t know.”
  9. Always analyze the clues found in error messages.
  10. Know the difference between a premature optimization and a show-stopping optimization that NEEDS to happen.
  11. Take responsibility for your mistakes.
  12. Become a power-user of your development tools.
  13. Know how to use Vim (at least a little bit).
  14. Never accept freelance work in an unfamiliar technology.
  15. Don’t count the number of hours.
  16. Absorb massive criticism with ease.
  17. Pair program with people with more experience.
  18. Always code review your own work first.
  19. Recognize that the hard part of freelancing isn’t writing the code. It’s everything else.
  20. Identify and resolve bigger issues.
  21. Dive into large open source projects to bring your features to life.
  22. Skip a lot of meetings.
  23. Know when it’s time to give back.
  24. Be capable of writing bad code.
  25. Let other people know that you’re working late without being a jerk.
  26. Act as a leader, not a boss.
  27. Go play foosball.
  28. Learn under pressure.
  29. “Move fast and break things.”

Tags: ken-mazaika, list, unbeateable-programmer, unstoppable-programmer, efficiency, 10x, tip-and-trick

Como melhorar seus códigos usando Object Calisthenics (Portuguese)

I’ve read this article about object calisthenics, with an example in PHP. By Elton Minetto

Tags: object-calisthenics, elton-minetto, php, portuguese

Read This Story Without Distraction (Can You?)

I’ve read this article by Verena von Pfetten on the effects on multitasking in our daily lives. Also comments on the movement of monotasking or unitasking, which is the opposite of multitasking: doing one thing at a time.

Underlines the benefits of monotasking and how this is related to mindfulness and psychological benefits.

Tags: multitasking, monotasking, unitasking, verena-von-pfetten, time-management

Debuggers are a wasteful Timesink

I’ve read this article by Robert C. Martin on why we shouldn’t use debuggers

Tags: uncle-bob, robert-martin, debugger, tdd

Taming the steamroller: how to communicate compassionately with non-native English speakers

I’ve read this article by Molly Clare Wilson on tips on how native English speakers can simplify their communication so it is easier for non-native speakers to understand them. Provides guidelines for situations involving ‘speaking and presenting’, ‘meetings’, written form ‘email, text, chat’ and about correction each others English.

Tags: molly-wilson, english, communication, native, non-native, guideline

Blue. No! Yellow!

I’ve read this interview with Robert C. Martin on the productivity increases that different languages provide to the programmer. He says that no language can provide an effect as big as binary to assembler and that we’re currently searching the Holy Grail.

Tags: robert-martin, uncle-bob, language, comparison, assembler, binary, clojure

It’s Time Development Teams Chose Their Own Working Environments

I’ve read this article by Jason Gorman on how takes the decision of working environments and why having other options are financially available. How developers should be in charge of their own working environments.

Tags: office, working-environment, jason-gorman

Building My $1,200 Hackintosh

I’ve read this guide on how to build a powerful hackintosh. By Mike Rundle

Tags: mike-rundle, hackintosh, macintosh, mac, computer

The Practical Guide to Becoming a Professional Web Developer

I’ve read this article by Bill Sourour on how to become a web developer. Explains all kind of resources, from learning javascript, deciding on being a frontend of backend developer, which language to choose, how to find a job, getting experience.

Tags: bill-sourour, guide, career, beginner, developer, web, professional-career

Why Hiring is So Hard in Tech

I’ve read this article by Eric Elliot on how to tackle job interviews, both from the side of the employer and the employee.

Tags: eric-elliot, job-interview, employee, employer, cv, career, professional-career

Learn Node.js with Brigadier Fluffykins Part II: Events, EventEmitter and the Event Loop

I’ve read this article by Masha Diminsky on the architecture of javascript and nodejs. Explains the event-driven architecture, the events and the event loop.

Tags: masha-diminsky, bus, nodejs, javascript, bus, event-loop, event

You in 6 seconds: how to write a résumé that employers will actually read

I’ve read this article that suggests how to customize your cv for maximum engagement from interviewers / head hunters and to make the most of the 6 seconds they (allegedly) spend looking at your cv. Also explains some techniques for preparing the interview, about the cover letter, etc.

Tags: quincy-larson, cv, resume, career, professional-career, ats

Starbucks Does Not Use Two-Phase Commit

I’ve read this article by Gregor Hohpe explaining how Starbucks is modeled in terms of asynchronous interactions and the actions for exception handling: write-off, retry, compensating action.

Also mentions Conversation pattern and Correlation ID.

Tags: gregor-hohpe, conversation-pattern, correlation-id, analogy, asynchronous, exception-handling, write-off, retry, compensating-action

Books read in 2016Q2

Jun 30, 2016 - 1 minute read - Comments - bookreading2016Q2self-studybuilding-microservicesrelease-it

Books I’ve read this quarter1:

Non-technical:

Books started, not yet finished (WIP):

Books I want to finish. Usually come from another quarter:

Books that have entered the queue:


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

Stability terms from "Release it!", a quote

Jun 26, 2016 - 1 minute read - Comments - bookquoterelease-itmichael-nygard

In Release It!, terms related to stability:

  • transaction: is an abstract unit of work processed by the system
  • mixed workload: is a combination of different transaction types processed by a system.
  • system: the complete, interdependent set of hardware, applications, and services required to process transactions for users
  • stability: resilient system keeps processing transactions, even when there are transient impulses, persistent stresses, or component failures disrupting normal processing
  • stress (to the system): is a force applied to the system over an extended period.
  • impulse: is a rapid shock to the system.
  • a material changes shape when stress is applied. This change in shape is called the strain.
  • The original trigger and the way the crack spreads to the rest of the system, together with the result of the damage, failure mode.
  • crumple zones: areas designed to protect passengers by failing first. called crackstoppers

All of these are quotes from the book.