Alpha's Manifesto

A black and white figure's thought-hive

Code Katas

El por qué de practicar y ejercicios para hacerlo

Algún tiempo atrás JM nos había compartido un artículo sobre TDD Katas que básicamente explicaba qué son y por qué valen la pena. En dicho artículo Kata – The only way to learn TDD Peter Provost nos explica la mecánica básica tras la enseñanza de los Katas, una forma fácil de poner a práctica nuestros conocimientos teóricos.

No mucho tiempo después encontré el sitio de CodeKata, aplicado a una serie de metodologías más general, a aprender a desarrollar en distintas disciplinas o ámbitos. El artículo de Code Kata – Background tiene una buena introducción a lo que puede encontrarse en el resto del sitio.

¡A poner esas habilidades a practicar!

Exploit exercises

Exploit this!

Parecido a los laboratorios de seguridad, hace poco me encontré con un sitio llamado Exploit Exercises, un sitio web que dispone de guías y máquinas virtuales que podemos bajar para probar y aprender sobre escalado de privilegios y corrupción de memoria en entornos Linux.

Soy un zorrinito inseguro.

Link del día: Cosmos (C# OS)

Cosmos es un proyecto opensource hosteado en Codeplex, que se trata de un sistema operativo completo construido en C#. Como tal, podemos deducir que no corre realmente de forma nativa en una máquina, sino sobre la plataforma .NET, pero creo que merece su atención como proyecto de extrema complejidad. No he visto el código, pero no dudo que mucho se podrá aprender de eso con solo mirarlo. Aparentemente, también hace utilización de extensas capabilidades de Visual Studio para un buen debugging del mismo, con lo que también es un buen ejercicio para aprender de esta herramienta.

Soy un zorrinito emulado.

UPDATE 3/1/2012 12:00 PM: Andrés agrega en los comentarios hablando de Singularity, un proyecto similar también en código managed (IL), pero no construido enteramente sobre eso, sino que tiene un kernel hecho en Assembler y un par de drivers hechos en C++. Aparentemente, este sí calificaría como un sistema operativo completo, ya que puede correr de forma independiente.