Friday, August 31, 2012

Books I read (January - August 2012)

January
- Estructura de la informació. UOC. (2nd time)
- Estructura i tecnologia de computadors. UOC. (2nd time)

February
- Working Effectively with Legacy Code, Michael Feathers
- La acabadora, (Accabadora) Michela Murgia

March
- Thinking in C++, Volume 1, 2nd edition, Bruce Eckel
- Refactoring: Improving the Design of Existing Code, Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts

April
- Midnight's Children, Salman Rushdie

May
- En el último azul, (Dins el darrer blau) Carme Riera
- El etrusco, (Turms kuolematon) Mika Waltari
- La soledad de los números primos, (La solitudine dei numeri primi) Paolo Giordano
- Teoria d'autòmats i llenguatges formals I. UOC.
- Estructura de computadors. UOC.

June
- White teeth, Zadie Smith
- Estructura de computadors. UOC. (2nd time)
- Teoria d'autòmats i llenguatges formals I. UOC. (2nd time)

July
- Design Patterns: Elements of Reusable Object-Oriented Software, Gamma, Helm, Johnson and Vlissides

August
- The Mythical Man-Month: Essays on Software Engineering, Frederick P. Brooks
- Firmin, Sam Savage

Sunday, August 26, 2012

Interesting Talk: "Who Ever Said Programs Were Supposed to be Pretty?"

I've just watched a talk by Brian Foote in which he wonders if clean or beautiful code makes sense in a bottom-line obsessed business world:
I think that it's full of common sense and it also describes a very real problem.

Wednesday, August 22, 2012

About Education and Learning

I found this post:
Here's why consistency is terribly overrated in corporate education
in The learning generalist blog very interesting and inspiring.

It also contains links to two great talks:

Articles and Posts read

Inspiring
Changing Pace
3D-Printed Magic Arms
Why Explore Space?
It’s Not Always “All Or Nothing”

Learning and software craftsmanship
Trivial
Craftsmanship and When Not To Refactor
Quiet: The Power Of Introverts In A World That Can't Stop Talking
A Critique of the Pomodoro Technique
Letting go of old strengths
A few comments on the Alan Kay interview, and especially patterns
Bicycle skills
La importancia de la práctica deliberada
Back To Basics #1 - Software Should Have Testable Goals
Software Apprentices Will Need Insights, Not Buzzwords
Computer Algorithms: Heap and Heapsort
Make Technical Debt Explicit
Functional Programming in 2012 … time to learn something more?
Test driving an event driven design
Software idioms
Sentences to ponder

Agile and Lean
Looking For Leaders In All The Wrong Places
Omitted activities
El fin del principio de autoridad

Entrepreneurship and Management
Programmer Moneyball
España no es país para autónomos
Si quieres saber cómo trabajo, pregunta a mis proveedores
Accountability
Developers held Accountable without Authority

Online books and courses
C/C++ Software Development with Eclipse
Functional Programming Principles in Scala
97 Things Every Software Architect Should Know

Developing Software in Spain
Memorias de un expatriado: sobre el futuro del sector informatico, la crisis continúa
Get that job at Google
Get That Job at Facebook

Spain and Europe
¿Hora de hacer las maletas? Un repaso a las oportunidades que hay fuera
Reformas y recortes educativos: una evaluación muy preliminar
El paro sigue al alza en Andalucía y Canarias pese al turismo
La solución de Alemania para acabar con el paro: salarios de 400 euros
No todas las familias españolas se endeudaron; ni lo hicieron al mismo nivel, ni para los mismos propósitos.
El éxodo de médicos y enfermeras se duplica por los recortes sanitarios
En la mente del corrupto
Esclavos
España debe salvarse a sí misma

Tuesday, August 14, 2012

Ports and Adapters

In Growing Object-Oriented Software, Guided By Tests its authors explain how they grow systems a slice of functionality at a time. As the code scales up, they need to structure the functionality so they can continue to understand and maintain it. They use two principal heuristics to guide this structuring:
  1. Separation of concerns.
  2. Higher level of abstraction.
They state that, when applied consistently, these two forces push the structure to something similar to Cockburn's "ports and adapters" architecture.

These are the links I'm reading to find out what this "ports and adapters" (or hexagonal) architecture is about:

Interesting Talk: "Fractal TDD: Using tests to drive system design"

@remosu and I are currently reading the book:
Growing Object-Oriented Software, Guided By Tests
by Steve Freeman and Nat Pryce.

So far, I've found that their approach to TDD and end-to-end tests and their ideas about object-oriented design are really interesting.

I've just watched this great talk:
in which one of the authors of the book, Steve Freeman, comments several of the ideas in the book and his experiences applying them in big projects.

PS: I posted about another Steve Freeman's talk some time ago.

Wednesday, August 8, 2012

Articles and Posts read

Learning and software craftsmanship
Software Development and Security
SOLID by example
Let's Not Call It "Computer Science" If We Really Mean "Computer Programming"
Success Criteria
Your Coding Philosophies are Irrelevant
Another argument in favour of TDD
Ten Commandments of Object Oriented Design
Beyond Test Driven Development
Testing with Mocha
Visualizing recursion
«No intentes hacer lo que no dominas»
Game Developers: Remember Priority #1
The less the code, the better
Books hold most of the secrets of the world.."
La cultura de la distracción
Software albatross
Your job is trivial. (But I couldn’t do it.)
How not to go insane while working from home
Old school developers - achieving a lot with little
How GOF Brought my Understanding of Object Orientation to Another Level

C++
C preprocessor tricks

PostgreSQL
PostgreSQL Rising

Agile and Lean
The Art of Agile Development: Pair Programming
Definition of Done and Acceptance Criteria
The art of misdirection
Late Night Thoughts On "It Works For Me"
Retrospective Principles
Goals of a Retrospective
The Wrong Impression about Retrospectives

Entrepreneurship and Management
¿Cómo está el panorama de desarrollo de aplicaciones móviles actual? el informe Developer Economics 2012 nos da algunas pistas
Your Operational Configuration

Science
Cheetah, el robot guepardo de Boston Dynamics capaz de correr casi a 30 km/h
¿Qué importa más en la carrera académica, los conocimientos o los conocidos? (segunda parte)
Proponen un detector de materia oscura direccional basado en ADN
Mixed Signals: Smart Phone Sensors Recruited to Deliver Indoor GPS
En 2014 toda la investigación financiada con dinero de la UE deberá ser de acceso abierto
La Comisión Europea apoya el acceso libre a los resultados de investigación científica

Education
Teaching is a Form of Compression

Developing Software in Spain
#debate10: Una oportunidad para una nueva cultura
Maldito el pais que necesita heroes

Spain and Europe
Sobre el retraso económico de España y el libro de Acemoglu y Robinson (Una respuesta de Regina Grafe)
Why are Germans So Stubborn? de Uwe Reinhardt, Princeton
Primero, los deberes nacionales
Pobre puede ser cualquiera, o casi
Ya somos griegos

ETIS en la UOC: Asignaturas del pasado semestre

Hace ya unos meses hablaba del nuevo semestre que comenzaba en ETIS en la UOC. Ahora que terminó el semestre y tengo un poco más de tiempo, llegó el momento de hacer una retrospectiva y de analizar las asignaturas.

De nuevo, tuve que dejar una de las asignaturas, Matemàtica Discreta, porque entre el trabajo y los pet projects que estoy haciendo con @remosu no me dió tiempo de seguirla. Aunque ya en mi anterior retrospectiva había llegado a la conclusión de que mi límite estaba en 15 créditos por semestre, en el último momento me dejé llevar por un impulso y cogí tres asignaturas pensando que podría con todo. Fue un error.

En el lado positivo, este semestre saqué de nuevo matrícula de honor en dos asignaturas. Estas son mis impresiones sobre estas dos asignaturas:
  • Teoria d'autòmats i llenguatges formals I
  • Esta asignatura me la habían recomendado varios compañeros de trabajo, y tenían razón, es muy bonita. Me costó entender algunas partes del temario, y tuve que dedicarle mucho tiempo. Aún habiendo obtenido buenos resultados, creo que todavía no acabo de entender del todo bien algunos conceptos de la asignatura.
    El temario de TALF I es bastante corto pero no se la debe subestimar por ello, ya que en ella se ven conceptos que lleva su tiempo entender. Creo que el camino se allana bastante si se consigue aprobar la evaluación contínua porque, en ese caso, el temario que entra en la Prueba de Validación se limita a los temas que entraron en las PACs: aproximadamente un 80% del temario de la asignatura. Ir al examen final es más complicado porque entra el 100% del temario y algunas partes son bastante duras.
    Para hacer las PACs usé sólo el material de la asignatura, que es un poco escaso, y un montón de horas. Supongo que si hubiera mirado PACs y/o exámenes de años anteriores me hubiera ayudado. En cada PAC ponía que el tiempo estimado de realización eran tres horas, pero para algún apartado de la segunda PAC (el de gramáticas) me pasé más de 5 horas... No hay que agobiarse porque la cosa mejora con la práctica. Antes de hacer la PV, ya era capaz de resolver rápidamente ejercicios similares a los de las PACs.
    Para preparar la PV me lei de nuevo toda la teoria. Este repaso general me sirvió para acabar de entender cosas que no había comprendido bien cuando hice las PACs. Después hice todos los ejercicios de autoevaluación relacionados con los temas que habían salido en las PACs e hice unos cuantos exámenes (sólo los problemas relacionadas con las PACs). Esto me llevó unos tres días y medio (no tenía más).
  • Ampliació d'estructura i tecnologia de computadors
    Esta asignatura es la continuación de Estructura i tecnologia de computadors. Tiene dos PACs y dos prácticas, una obligatoria con la que puedes conseguir hasta un 70% de la nota práctica, y otra opcional con la que puedes conseguir lo que falta para el 100%.
    El tema que me fue más útil para el trabajo fue el estudio de la jerarquía de memoria, y en especial de la memoria cache. Los materiales de la asignatura están disponibles en el OCW de la UOC
    Las prácticas consistieron en escribir programas con partes escritas en ensamblador y partes escritas en C. A partir de cosas que aprendí resolviéndolas salieron varios posts de este blog (este, este y este). Si quieres ver el código de las prácticas, está publicado aquí y aquí.
    Los profesores colgaban cada semana ejercicios teóricos y prácticos que había que resolver en unos 5 días. Si uno tiene tiempo, está muy bien hacerlos porque vas desarrollando poco a poco los conocimientos que necesitas para hacer las PACs y las prácticas. Yo no hice ninguno de los ejercicios porque no tuve tiempo, con lo que, luego tuve que hacer las PACs y prácticas a contrarreloj.
    Para preparar el examen, rehice todos los ejercicios de las PACs, hice los ejercicios teóricos semanales y miré algunos exámenes de años anteriores. También repasé la solución oficial de las prácticas.
    La asignatura no es muy difícil, quizás, lo más complicado es cogerle el truco al ensamblador.
Me costó mucho esfuerzo simultanear estas asignaturas con el trabajo, las lecturas técnicas y mis pet projects con @remosu, pero, mirando hacia atrás, creo que valió la pena.