

Hernán Wilkinson
Passionate Programmer, Coach and Co-Founder of 10Pines and FAST
Programador apasionado, Coach y Co-Founder de 10Pines y FAST
Buenos Aires, Argentina
Actions
Passionate programmer. Smalltalk lover. Founder of 10Pines and FAST (Argentine Foundation of Smalltalk). Professor of the FCEyN at the UBA. Teaches OO and Agile techniques at the university and the industry. Key Note Speaker of many national and international conferences. Contributes to many Smalltalk opensource projects. Promotes self organized organizations and agile methodologies. You can follow him in Twitter at @hernanwilkinson
Programador apasionado. Lic. en Ciencias de la Computación de la UBA. Fundador de 10Pines y de FAST (Fundación Argentina de Smalltalk). Profesor de la FCEyN de la UBA. Enseña el Paradigma de Objetos y Técnicas Agiles en la universidad y la industria. Key Note Speaker de congresos nacionales e internacionales. Contribuye en proyectos opensource de Smalltalk. Promueve las organizaciones auto organizadas y las metodologías ágiles. Lo pueden seguir en @hernanwilkinson
Links
Area of Expertise
Topics
The importance of Encapsulation and why not to break it en
Tired of dealing with anemic classes? Looking for ways to manage the ripple effect of changes in your code? Want to master how to properly distribute responsibilities among objects?
In this 2-hour hands-on lab, we’ll dive into what encapsulation truly means, how it differs from information hiding, the issues that arise when encapsulation is broken, and how to prevent them. Through hands-on exercises in the programming language of your choice, you’ll gain the skills to strengthen your codebase and enhance your design practices.
Content:
- Definition of Encapsulation: Understanding the core concept.
- Encapsulation vs. Information Hiding: Differences and similarities explained.
- Why You Shouldn’t Break Encapsulation: Impact on design integrity and maintainability.
- How to Avoid Breaking Encapsulation: Best practices and alternatives.
- Practical Exercises: Apply the concepts in real-time.
- Programming Languages and Encapsulation: How different languages implement and relate to encapsulation.
Say goodbye to null en
Do you want to say goodbye to null errors? Are you interested in exploring alternatives to null, making your code more robust? Curious about why programming languages use null and how they are evolving in this regard?
In this 2-hour hands-on lab, we'll answer these questions, dive into various alternatives to using null, and discuss when each is most suitable depending on the programming language. And that's not all—through hands-on exercises, you'll gain a practical understanding of the problem and its solutions.
Null was introduced by Tony Hoare to represent partial functional relationships in Algol 60. He called it later "the billion-dollar mistake."
In this hands-on lab, we'll explore conceptually why using null/nil is problematic, the issues it creates, and the various ways to avoid it. We'll do this through practical exercises in the programming language of your choice.
Content:
- Conceptual Overview: Understanding why null/nil leads to issues.
- Historical Context: The origins and intent behind the creation of null.
- What Does Null Mean?: A deep dive into its significance.
- Five Alternatives to Avoid Null/Nil: Pros, cons, and when to apply each.
- Practical Exercises: Hands-on activities for each solution.
- Null/Nil Verification as a Parameter: How to handle it effectively.
- Null vs. Nil: Differences in syntax and object-oriented approaches.
Repeated Code: Symptoms, Issues, and How to Eliminate It en
Tired of the repeated code of your system? Want to understand what repeated code really means and the different ways to eliminate it? Ready to leverage automated refactorings to clean up your codebase?
Repeated code is a common symptom of poor design, often leading to significant headaches when maintaining or modifying a software system. In this 2-hour hands-on lab, we'll explore what repeated code means from the conceptual point of view, why it should be removed, the benefits of doing so and the technique to do it. We will use programming exercises in your favorite programming language to practice.
Content:
- What Is Repeated Code?: Understanding the concept.
- Disadvantages of Repeated Code: Why it’s harmful and how it impacts maintenance.
- Process for Eliminating Repeated Code: Step-by-step approach to remove repeated code.
- Code Parameterization Using Closures/Lambdas
- Limits to Removing Repeated Code: Knowing when to stop.
Programación, Belleza y Pasión en
¿Qué hace "feliz" a un desarrollador de software? ¿Es simplemente realizar una entrega en tiempo? ¿Es que no haya errores en el código? ¿Nos alcanza con que el código sea generado por una supuesta "Inteligencia" denominada "Artificial"?
Sabemos que el desarrollo de software es una actividad humana única, donde las relaciones humanas y la actividad grupal influyen de manera decisiva en los resultados. Por eso, en tiempos donde pareciera que todo puede ser reemplazado por lo artificial, vale la pena preguntarnos cómo podemos valorar aún más la dimensión humana de nuestro trabajo.
El desarrollo de software tiene rasgos ingenieriles y científicos, pero pasamos por alto otro igual o incluso más relevante: el rasgo artístico, y, sobre todo, las emociones que despierta en nosotros. Este aspecto artístico es el que más descuidamos, sin embargo tiene un impacto profundo y duradero en la felicidad y la motivación de quienes desarrollamos software.
En esta charla hablaremos de la pasión que impulsa nuestro trabajo y de la belleza que podemos encontrar en lo que creamos, en definitiva, del arte de programar. Porque sí, cuando hay pasión y hay belleza, hay arte.
Reflexionaremos sobre qué hace que un programa sea más bello que otro, y cómo influye esa belleza —tanto en el resultado como en el proceso de desarrollo— en nuestra propia felicidad. Veremos cómo estos elementos alimentan (o destruyen) la pasión con la que ejercemos este oficio.
Creando diseños que nos enseñen en
Uno de los mayores desafíos del desarrollo de software es hacer diseños que nuestros compañeros puedan entender. Para eso, loa mejor solución es crear diseños "que nos enseñen" qué están representando del dominio de problema y cómo debemos usarlos.
En esta charla veremos heurísticas de diseño que nos ayudarán a crear ese "diseños que con enseñen", todo por medio de ejemplos prácticos desarrollados utilizando TDD
From legacy code to a well design and tested system using automatic refactorings and TDD en
In this workshop you will learn how to refactor a badly design system that uses anemic clases, that is coupled with the database and has really low cohesion, to an automatically tested, decoupled from the database and well design system just using automatic refactorings guided by tests.
We will not only learn basic refactorings such us rename or extract and inline method, but also more complex ones such as extract method object, introduce parameter object, generalize declared typed and so on. But most importantly, we will learn how to chain basic refactorings to produce big changes in the design of our software.
We will also practice and apply good design heuristics that will guide us through the refactorings that we will make, guided by the automatic tests we will write before making any change.
The workshop is available for Java, Kotlin and C# programming languages. In the case of Java, Eclipse or IntelliJ can be use as IDE, in the case of Kotlin, IntelliJ is required and for C#, VisualStudio with the Re-Sharper plugin is required.
La Belleza del programa, la Felicidad del Programador en
¿Qué hace "feliz" a un desarrollador de software? ¿Es simplemente realizar una entrega en tiempo? ¿Es que no haya errores en el código? ¿O es sólo el sueldo que cobra a fin de mes?
El desarrollo de software es una actividad única, particular y por eso nos cuesta tanto entenderla y categorizarla. Tiene características ingenieriles y científicas, pero también artísticas, y es justamente esta última la que más se descuida y que sin embargo tiene el impacto más importante y duradero en la felicidad y psicología de los desarrolladores de software.
En esta charla hablaremos de temas que solemos minimizar o negar por completo en el desarrollo de software. Hablaremos de la belleza de lo que construimos, de su estética y por lo tanto del "arte de desarrollar software", porque sí, si hay belleza, hay arte.
Analizaremos qué define que un programa sea más bello que otro y cómo influye la belleza de lo que hacemos, y de cómo lo hacemos, en nuestra felicidad.
¡Vengan preparados para cuestionar el status-quo del desarrollo de software y buscar nuevas formas de trabajar mejor!
La Felicidad del Programador, su impacto en la productividad y cómo lograrla en
Conocemos qué hace "feliz" a un desarrollador de software? ¿Es simplemente realizar una entrega en tiempo? ¿Es que no haya errores en el código? ¿O es sólo el sueldo que cobra a fin de mes?
Es importante hacernos estas preguntas porque todos sabemos que cuando la gente es feliz en lo que trabaja, es más productiva, y los desarrolladores de software no son la excepción.
El desarrollo de software es una actividad única, particular y por eso nos cuesta tanto entenderla y categorizarla. Tiene características ingenieriles y matemáticas, pero también artísticas, y es justamente esta última la que más se descuida y que sin embargo tiene el impacto más importante y duradero en la felicidad y psicología de los desarrolladores de software.
En esta charla hablaremos de temas que solemos minimizar o negar por completo en el desarrollo de software. Hablaremos de la belleza de lo que construimos, de su estética y por lo tanto del "arte de desarrollar software", porque sí, si hay belleza, hay arte. Veremos que hay belleza en la ingeniería y hasta en las matemáticas, y que es bueno empezar a hablar de belleza y de arte en el desarrollo de software. Al hacerlo, repensaremos nuestra posición de líderes para que con pequeños cambios en lo que priorizamos y permitimos de los desarrolladores de software, logremos grandes mejoras a nivel productividad.
¡Vengan preparados para cuestionar el status-quo del desarrollo de software y buscar nuevas formas de mejorar la productividad!
LiveTyping - A pragmatic typing approach for dynamically typed languages en
Adding type information to dynamically typed languages has become a "new feature" in those languages lately. Most solutions are based on type annotations that imposes programmers to explicitly add type information in the code, something that those programmers are not used to do.
LiveTyping uses a different approach. It lets the computer do the hard work of adding and maintaining type information without polluting the source code with it, showing types when the programmer needs it and using them to improve the tools.
Having type information in a dynamically typed language helps in the accuracy of tools such as code completion, automatic refactorings, and many others.
LiveTyping is implemented in Smalltalk and it's been in production for more than five years. A Ruby prototype has been developed also.
Micro-Workshop: Encapsulamiento en es
¿Estás cansado de usar clases anémicas?¿Está buscando cómo controlar el efecto onda de los cambios que haces? ¿Querés aprender a distribuir bien las responsabilidades entre los objetos? ¡Entonces este micro-workshop es para vos!
Veremos qué significa encapsular, qué diferencias hay con information hiding, qué problemas genera romper el encapsulamiento y cómo evitarlo.
Lo haremos por medio de ejercicios prácticos en el lenguaje de programación de tu elección.
MicroWorkshop: No usar null en
¿Querés decirle adios a los errores por usar null?
¿Querés saber qué alternativas hay para no usar null y así tener código robusto?
¿Querés saber por qué los lenguajes de programación usan null y cómo están evolucionando al respecto?
En este micro-workshop responderemos estas preguntas, veremos las distintas alternativas a usar null, cuándo conviene usar cada una dependiendo del tipo de lenguaje de programación y mucho más.
Todo con ejercicios prácticos en el lenguajes de programación de tu elección y que te ayudarán a entender el problema y sus soluciones
Towards a synthesis of software design based on understanding "What Modeling with Software is" en
Domain Driven Development emphasizes that the software is a model, but what does it really mean for software "to be a model"? How does that definition impact in what we understand by "good design"? What are the differences of our models with the ones of other professions and how they impact in the design and development we do?
Current trends in software development and the design of many class libraries and frameworks show that we still don't fully understand what modeling means and how that impacts our profession at a technical, administrative and human level.
In this talk we will try to synthesize the basics of software design from understanding what modeling with software is. We will see how it affects our designs the way we interpret the problem domain, how to map it to our model, how to represent the pass of time on it and the importance for our models to teach us how to use them.
From that synthesis we will derive, using practical examples, a set of very simple but powerful design heuristics that will change the way you design software forever.
Micro-Workshop: Encapsulamiento en es
¿Estás cansado de usar clases anémicas?¿Está buscando cómo controlar el efecto onda de los cambios que haces? ¿Querés aprender a distribuir bien las responsabilidades entre los objetos? ¡Entonces este micro-workshop es para vos!
Veremos qué significa encapsular, qué diferencias hay con information hiding, qué problemas genera romper el encapsulamiento y cómo evitarlo.
Lo haremos por medio de ejercicios prácticos en el lenguaje de programación de tu elección.

Hernán Wilkinson
Passionate Programmer, Coach and Co-Founder of 10Pines and FAST
Buenos Aires, Argentina
Links
Actions
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top