Angel \”Java\” Lopez on Blog

May 24, 2014

TDD: Links, News And Resources (14)

Previous Post
Next Post

Let’s Code: Test-Driven JavaScript

Crisp’s Blog » Good and Bad Technical Debt (and how TDD helps)

pinocchio — extensions for the ‘nose’ unit testing framework

The Land that Scrum Forgot – Scrum Alliance

Steve Freeman

Mistaeks I Hav Made

Growing C++ Software Guided by Tests

Slow Tests are the Symptom, not the Cause – Re-factor

Tidalwave – Blog

Testing code is simple – Saving the planet, one website at a time

Introducción al TDD (con JS) y porque no hay que evitarlo « Me.log( … )

Test First | 8th Light



Beyond Test Driven Development | Liz Keogh, lunivore

A Case Against Cucumber | 8th Light

(7) Marco Antonio González Gómez-Caro – Google+

Duplicated Test Code & High Coupling – Software People Inspiring

Behavior Driven Development

My Links

Stay tuned!

Angel “Java” Lopez

May 23, 2014

TDD: Links, News And Resources (13)

Previous Post
Next Post

Brian Swan tells us why Mocks suck on Vimeo

ScotRUG Talks – Brian Swan Inside Out TDD on Vimeo

ScotRUG Talks Matt Wynne Outside-in TDD on Vimeo

LA Ruby Conference 2013 It’s not your test framework, it’s you by Robbie Clutton, Matt Parker – YouTube

Applying the transformation priority premise to Hanoi Tower’s kata

Presenter First
Organizing Complex GUI Applications for Test-Driven Development

Robert Martin compares GOOS outside in approach with his inside out approach – Google Groups!msg/growing-object-oriented-software/GNS8bQ93yOo/-MsDlyUGe84J

what’s the london school of tdd? at My Agile Education

Vincent Tencé | Simple Web Development In Java

TDD, where did it all go wrong – YouTube

What is BDD and why should I care? on Vimeo

Stub your data access layer; it won’t hurt – The Code Whisperer

Moq Rebirth #1 – YouTube

Google Testing Blog: Testing on the Toilet: Test Behavior, Not Implementation

Tea-Driven Development :: Half-arsed agile

8LU: Advanced Concepts in TDD on Vimeo

My Links

Stay tuned!

Angel “Java” Lopez

May 20, 2014

TDD: Links, News And Resources (12)

Previous Post
Next Post

tdd – How deep are your unit tests? – Stack Overflow

tddeo | Screencasts para mejorar tus tests y tu código

Introducing the software testing ice-cream cone (anti-pattern) | WatirMelon

Seguridad Agile: Mutation Testing Framework

RomanNumerals Ruby Kata – TDD – YouTube

George Dinwiddie’s blog » Why I Practice TDD

CodeKata: Kata Twenty One: Simple Lists

Books you should read « El blog de Carlos Ble

Client Side TDD with JQuery and QUnit – Ruby on Rails Consultants Based in Boston, MA

JavaScript Test-Driven Development (TDD) with QUnit

unit testing – QUnit vs Jasmine? – Stack Overflow

TDD com QUnit

Ruby Programming/Unit testing – Wikibooks, open books for an open world

Carlos Ble. TDD – YouTube

Assert First

Moq: Mocking in C# 3.0 – Ayende @ Rahien

testdrivendevelopment : Message: Classic/mockist discussion

PythonTestingToolsTaxonomy – Python Wiki

Test Driven Development With Python

TDD in Python in 5 minutes | Web Builder Zone

Beginning Test-Driven Development in Python | Nettuts+

Clean architecture / never test the GUI ? – Google Groups!topic/clean-code-discussion/A6sJQjnwvnA

My Links

May 19, 2014

TDD: Links, News And Resources (11)

Previous Post
Next Post

More links about an important topic in agile programming, a hard skill that improves the making of a software

Can TDD Help Reduce Integration Time? | James Grennings Blog

Elixir is for programmers

StudiesOfTestDrivenDevelopment – Agile Bibliography

Matt Sears | Minitest Quick Reference

Kickstart your next project with a Walking Skeleton – Code Climate Blog

Concordion – Technique

Code Kata

Expectations by jaycfields

Reused Abstractions Principle (RAP) – Software People Inspiring

When Should You Think? | 8th Light

Test-Driven Development. A Cognitive Justification? – Steve Freeman

Using No Mocks to Improve Design « Arlo Being Bloody Stupid

learn Scala with TDD – Stack Overflow

How Scala promotes TDD

TDD is a Path


Should you TDD on a Lean Startup? — Tech Talk — Medium

So Long, and Thanks for All the Tests

XP Epsiode


TDD, Architecture & Non-Functional Goals – All Of These Things Belong Together – Software People Inspiring

Jeremy Pollack of on Test-driven Development and More

the middle hexagon should be independent of the adapters | silk and spinach


My Links

Keep tuned!

Angel “Java” Lopez

April 26, 2014

Applications Creating Applications

I was working in different approaches to make programs create more programs. This post is a brief review of the path I took in the past years/months/weeks, and that it is still work in progress. I think they are interesting ways of doing programming, to be explored.

Dynamic Applications

The idea is to describe an application (entities, some relations, some code), and run it in a web runner that knows how to interpreted the application definition. I wrote a first implementation for past year Knockout competition:

More info at Dynamic Applications in Node.js.

The application could be described in a simple structure (in this example, a simple JavaScript object that can be serialized to JSON). The same structure could be interpreted and run by different host applications: a web application, an SPA, a mobile app, etc. And it could be used as a seed to generate code in a “concrete” technology, like Sinatra, Express+MongoDB, etc.

Code Generation

One of my preferred topics. I created tasks, templates and free models to generate applications in Express, and in other technologies (Sinatra, Django, Flask, PHP, all work in progress). I have implementations in C#, Ruby and Node.js. But my latest work is on Node.js:

You can have a simple example in:

Screenshots of a simple generated application:


And I’m working on creating an online site where you can describe the application (the free model, the features, databases, entities, web framework to use) and then download the generated application code.


In the project:

I describe each application as a set of cards (a deck). A card can have simple values, or a another card or deck. For example, a card could have an id, a name, a title to be displayed, and additional info. A card could have another deck of cards as a property (ie an Chemical Elements card could have a deck with one card by element). They can be rendered in different context: a web application, a web application as a Single Page Application, a mobile app (in Phonegap, or native). One thing is the structure and content of a card, and another thing is the render of a card. The later depends on the context of the host application.

A simple example

var model = {
    title: "My Deck",
    cards: [
        { title: "Card 1", text: "This is the card 1" },
        { title: "Card 2", text: "This is the card 2" },
        { title: "Card 3", text: "This is the card 3" }

Another sample, with screenshots:

A card content could be a simple text, a long text, an URL, an image, or a widget to be displayed by the hosted application (ie a Google Map). The card description could be static or could be generated on the fly (ie, a feed could be transformed to a card/deck, or it could be retrieved from a REST API). A card could have partial content (id, title), and a resolver can retrieve the rest of its content, using the id (ie, a card could represent a Wikipedia Page, and the id would be the URL; the resolver downloads the page content, and complete the card, if needed).

More fun is coming.

Keep tuned!

Angel “Java” Lopez

April 5, 2014

Always Be Coding

Filed under: Open Source Projects, Programming Languages, Software Development — ajlopez @ 10:49 am

As a professional software developer, we should pursue to be better programmers. One activity I adopted some years ago, is: "Always Be Coding”. Every day, write a piece of code. Try something new. Improve something old. Open your brain. Explore a new path. Learn a new language. Practice TDD every day. Push for simplicity. Start a simple project “Hello world” using new technology or operating system. Write a simple web site using the new web framework in the block. If you write C# or Java, try Ruby or Clojure. If you use Ruby on Rails, try Sinatra, or make a switch to Python and Django. If you like Lisp, try ClojureScript for a web project. If you like Smalltalk, try Pharo and Seaside. If you are a programming language geek, go for Rust, Go, Dart. If you write ASP.NET MVC for a living, try SignalR, then Node.js and Socket.IO. Change your editor. Change your programming language. Or write your own.

Even if all these languages, technologies, libraries, and frameworks are not in your “daily work”, the new insights are welcome. And the constant practice makes the master. If you keep the brain open, new ideas could fertilize your mind and your skill toolbox. In our profession, the change is the only constant. Altought there are other things to practice, “soft” skills, teamwork, you (and me) should be trained every day.

So, to put my money where my mouth is, every day I write a piece of code, in public and non-public projects. Partial evidence:

That’s is my public commitment: to write code every day. To learn something new, to practice an skill, to explore a new way of doing things. Always be coding

More fun is coming.

Original photo from

Keep tuned!

Angel “Java” Lopez

February 22, 2014

Make It Work, Make It Right, Make It Fast

Filed under: Programming, Software Development, Test-Driven Development — ajlopez @ 5:05 pm

Years ago, I read this statement, applied to software development:

”Make It Work, Make It Right, Make It Fast”

I don’t remember the source. It is attributed to Kent Beck, but apparently, there are precedents. Read:

In the last decade, I started to understand the three-part statement, and I really think my software development skills were improved adopting this way of doing programming. Somehow is related to TDD (Test-Driven Development) but there are different things, and can be applied in a wider context. Let review what I think about each part, and how I apply them everyday.

Make It Work

Yes, instead of trying to do “THE RIGHT” thing from the beginning, I put my effort in having a working thing (a function, a method in a test, a use case branch, a user interface and experience). I don’t bother about the inner improvements, or about applying all the patterns from the book. I write code that works. Simple, working code. Following this advice, I can write simple code, and I can start to understand the underlying problem. If the product is use case branch (not a full use case), the working output  can shed light on the business model, and even end user feedback can be applied in early stage.

However, if I tried to do the right thing, I could waste my time and effort in something that is not what the project needs.

There is an special case: “make it work” is an essential of TDD second step, make the test go green.

Make It Right

Only when I have a working piece of software, then I’m back to improve it. Removing code duplication, applying the patterns in context (not only the patterns by the book), exploring new implementations. This is the opportunity to decrease or to remove any technical debt, any relic of toxic code. If something is convolute, go and write more straightforward code.

When the product is code written with TDD, I apply this advice at refactoring step. TDD workflow and cycle helps me to have a controlled technical debt amount. And having all the tests, now I can explore with confidence alternative internal implementations, without pain. It is really a creative step. Some programmers think that TDD puts a damper on creativity, but on the contrary, I see this two steps as a form of exercise it.

Make It Fast

Only then I worry about the speed of execution. There are so many factors that can influence it, that I only take care when a have a clear and working implementation. If you tend to write code in the previous phases thinking “this code is faster code”, stop doing that. I don’t know if a method is faster enough or not, without having a clear use case that needs performance improvement, and without having speed measured before optimization. Don’t optimize what it’s not measured.

Sometimes, I met project with the wrong decisions already done: someone added stored procedures, because “stored procedures are faster”, without any evidence of such assertion, without any performance suite that could support the statement. And then, a convoluted stored procedure, with lot of domain logic, start to emerge in the middle of the system. Even worse: without any test.

So, after practicing these precepts in my personal and professional projects, I’m a big proponent of following them. It is a pleasure to see how an idea grows up until become a concrete and solid library or system.

More fun is coming.

Keep tuned!

Angel “Java” Lopez

August 24, 2013

TDD: Links, News And Resources (10)

Previous Post
Next Post

Proficiencies of TDD « Arlo Being Bloody Stupid

Pithering About » Clojure at a Bank – Testing

25.3. unittest — Unit testing framework — Python v2.7.5 documentation

Beck Testing Framework

Isolating Code under Test with Microsoft Fakes

J.B. Rainsberger: “Integration Tests Are A Scam”

A Set of Unit Testing Rules

Desarrollo Dirigido por Pruebas Práctico

Don’t mock types you don’t own – dave^2 = -1


Curso | Pablo Morales’s Blog

Unit Testing Horror Stories

jbalmert/goos-by-chapter · GitHub

sdegutis/stories · GitHub

Test driven development in C

Observations on the Play! framework | James Gregory’s Blog


Aprendiendo TDD |

Interfacing with hard-to-test third-party code

TDD myths: the problems | Schneide Blog

My Links

Keep tuned!

Angel “Java” Lopez

August 1, 2013

TDD: Links, News And Resources (9)

Previous Post 
Next Post

James Shore: Blog: Lets-Play

Aprendiendo TDD |


The Pragmatics of TDD | 8th Light

The Start-Up Trap | 8th Light

Manning: Effective Unit Testing

Unit Testing in Ruby, Java and .NET – The Art Of Unit Testing – Test Reviews

Unit Testing in Ruby, Java and .NET – The Art Of Unit Testing – Test Review Guidelines

Seguridad Agile: TDD mental en ambientes hostiles

catwell/fakeredis · GitHub

Redsmin/redis-lua-unit · GitHub

TDD/BDD, Architecture and Frameworks « El blog de Carlos Ble

Preparando los Dioses Procesadores del Grid para una Gema | Space Apps Challenge Ecuador 2013 – YouTube

Andrés N. Robalino – Cola | Desarrollo Guiado por Pruebas (Feria Play 2012 Guayaquil-Ecuador) – YouTube

Esquema, Algoritmo y Artefactos a tener en cuenta en TDD parte II | Aprendiendo TDD

Esquema, Algoritmo y Artefactos a tener en cuenta en TDD | Aprendiendo TDD

Los 10 mandamientos de TDD-Scrum Bolivia

Behavior-driven Development with Selenium WebDriver | Packt Publishing

Exceptions with Ruby |

My Links

Keep tuned!

Angel “Java” Lopez

July 10, 2013

Scalability: Links, News And Resources (7)

Filed under: Links, Scalability, Software Architecture, Software Development — ajlopez @ 3:47 pm

Previous Post

What Does Your Webserver Do When a User Hits Refresh? — Ecommerce Blog by Shopify

VMware vFabric GemFire: High Performance Data Management for Cloud-Based Applications

Indeed Engineering Blog » Blog Archive » From 1 to 1 Billion: Evolution of a Document Serving System

Scaling Node.js Applications | Colin J. Ihrig’s Blog

Facebook kisses DRAM goodbye, builds memcached for flash — Tech News and Analysis

Splout SQL
MapReduce, using Pangool, from Spain

Pomelo home

NetEase/pomelo · GitHub
Game development with Node.js

Scaling Facebook Engineering

(10) Needle in a haystack: efficient storage of billions of photos

Fully Loaded Node – A Node.JS Holiday Season, part 2 ✩ Mozilla Hacks – the Web developer blog

Structure:Data | GigaOM Events

My Links

Keep tuned!

Angel “Java” Lopez

« Newer PostsOlder Posts »

Create a free website or blog at