The long way through Software Craftsmanship

Iterate with index in clojure

Jul 4, 2015 - 2 minute read - Comments - sampleclojurerubyiteratelanguage-comparisonprotip

Scenario: iterate a sequence (seq) with its index The lines have an implicit line number (starting by 1, in most editors): [1] line1 [2] line2 [3] hello When you read it from file to a variable, it is converted to: ("line1" "line2" "hello") This implicit line number value is not present, therefore you need to assign them one. In ruby, you have this construct: array = ["A", "B", "C"] array.each_with_index {|val, index| puts "#{val}=> #{index}" } Source

Brown-bag session: refactoring legacy code

Jul 1, 2015 - 1 minute read - Comments - refactoringlegacy-codetrainingbrown-bag-sessionclientlegacyslidespresentation

Today I have done a brown bag session about refactoring legacy code. It includes: legacy code definition. There is no agreement about this in the team. the legacy code change algorithm (source is Feathers, Working effectively with legacy code). Plus an example about it. working with legacy code experience with it. The slides are available here (PDF format) We also did a practical session, whose experience report is here

Self-study in July 2015

Jul 1, 2015 - 11 minute read - Comments - self-study-aggregationjuly2015rich-hickeyclojurejava-onepair-programmingcarlos-blerest-apijeff-knupppythonkris-jenkinsbackwards-compatibilityintegration-testjeremy-millerblack-box-testingwhite-box-testingedson-yanagadddjava-eevideorainsbergerintegrated-testintegration-testraul-rojaslambda-calculuspapersantiago-pinotdd-mistaketddmartin-fowlercouplingdesignmockmock-frameworkreadingself-studymeagan-wallerapprenticeship8th-lightpete-mcbreenchristopher-stracheyprogramming-languagetheory1967coursefundamental-conceptsreificationtype-erasureangelika-langerbjorn-tiplingintellij-ideapluginmisko-heverytestabilitytestable-codeclean-codementorrole-modeljoanne-wilsontype-theoryhashcodejavaralf-sternbergdvarianteric-normandfred-zemkesql-2011sqltracking-toolstakipisentryairbrakeraygunstackhunteralex-zhitnitskyblikip-vs-nptheoretical-computationelvira-mayordomodripstatjava-9unsafebackwards-compatibilityrob-austinnp-completelucia-mourayitz-schaffertpptransformation-priority-premisekatalinked-listbig-o-notationdata-structurebenchmarkattila-mihaly-balazsshortcutoleg-shelajevsummer-trainingpaymillxavi-hidalgooutsourcingvasco-duartedominic-krimmeragilepodcastoliver-whitelanguagecomparisonben-nadelbook-reviewrobert-c-martincraftsmanshipmonogamyanalogylocalstorageangularjszero-knowledgeclipperzdanijel-arsenovskic-sharpjava-agenttom-leightonmitocwopen-coursewarejulie-zelenskystanforddmitri-tikhanskijmeterheadless-testheadlessclojure-unraveledandrey-antukhalejandro-gomezradhika-ghosalalgosaurusbozhidar-bozhanovmark-hibberdstreamincremental-streamslidesmike-caulfieldfederationfederated-wikiandrew-montalentiparselyapache-kafkakafkapost-mortem-analysisalgorithmic-complexitybig-oh-notationrecursionclojurescriptmanuel-riveroproperty-based-testingquickchecktest-checkmanuel-chakravartywiptomas-rybingmike-cavalierecory-bergskillrockstarmichael-bernsteinprotocol-bufferprotobufferjsonjosh-szmajdatomasz-nurkiewiczeric-meyerconsidered-harmfulvenkat-subramaniamlambdacohesioncarin-meierjustin-weisspeter-provostkoanmichael-church

I’ve grouped all small posts related to the self-study from July 2015 into a single post Clojure made simple I’ve watched this talk by Rich Hickey at the Java One. It references the talk Easy made simple polymorphism without inheritance; single dispatch on the first parameter Productive pair programming I’ve read this article about pair programming, using the driver & copilot technique, written by Carlos Blé Building Automated REST APIs with Python Investigating QA automation for REST APIs, I’ve read these slides about it

Books read in 2015Q2

Jun 30, 2015 - 2 minute read - Comments - bookreading2015Q2self-study

Books I’ve read this quarter Q2 on 2015: Flow by Mihaly Csikszentmihalyi. Blog posts under the tag flow Growing Object-Oriented Software Guided by Tests by Steve Freeman and Nat Pryce. Blog posts under the tag goos. Read in the ‘@deAprendices’s reading club’. TDD in Java, by Viktor Farcic and Alex García. I’ve reviewed this book. Books started, not yet finished (WIP): The Well-Grounded Java Developer by Benjamin J.

Practical Object-Oriented Design in Ruby: Chapter 1

Jun 29, 2015 - 1 minute read - Comments - reading-clubaprendiceschapterpoodrsandi-metzmichael-feathersrubyobject-oriented-designoodedward-berarddesign-metricschurn

We’ve read the first chapter from the Practical Object-Oriented Design in Ruby, by Sandi Metz. These are the concepts and links brought up during the discussion: Walking on water and developing software from a specification are easy if both are frozen. Edward V Berard, source is Wikiquote Two cited papers on metrics for design: A metrics suite for object oriented design by Chidamber and Kemerer A validation of object-oriented design metrics as quality indicators by Basili, Briand and Melo The video for the ‘churn’ as a measure:

Brown-bag session: Refactoring legacy code

Jun 23, 2015 - 2 minute read - Comments - refactorrefactoringlegacy-codetrainingbrown-bag-sessionclientexperience-report

Today I have facilitated a brown bag session about refactoring legacy code applications, as this is the case with one of the applications we maintain and add new features to. The contents of the session: Briefly exposing the problem to the team, me taking the role of the Product Owner (PO) Ask the dev team to add an easy feature Do it without tests, as it was so simple that they thought they could do it (using mob programming) Ask if they were satisfied by the patch / fix.