Posts

10 errores que la mayoría cometemos en el trabajo

10 errores que la mayoría cometemos en el trabajo enviar documentación en correos adjuntar documentación en JIRAs no automatizar tests porque no hay tiempo no documentar cosas porque no hay tiempo pensar que documentar es una pérdida de tiempo reinventar la rueda todo el tiempo sobre usar fichero excel para gestionar el proyecto presumir ser ágiles cuando fallamos en todo lo anterior pretender construir soluciones extraordinarias en una empresa de negocios creer que las empresas de negocio les importa la calidad del software 10 errors most of us do at work sending documentation in emails attaching documentation in JIRAs not automatizing tests because there is no time not documenting things because there is no time thinking that documenting is a waste of money reinventing the wheel all the time overusing excel files for project management presuming being agile when we fail on all previous things  pretending to build outstanding solutions in a business company

Java 8 Optional. ¿De verdad hacía falta?

Java 8 Optional ¿De verdad hacía falta una API para tratar nulos? Me surgen las siguientes dudas. ¿Desde cuando tratar con valores nulos dentro de un programa se convirtió en un problema?  ¿Es el temido NullPointerException realmente un problema del lenguage o del programa? ¿Esta el Optional realmente simplificando la lógica del programa? ¿Esta el Optional realmente ayudando a diseñar un programa más robusto? ¿Esta el Optional realmente resolviendo el problema original? Hasta donde yo he podido llegar, no veo ninguna aportación ni a la programación ni al lenguaje el uso del Optional de Java 8. De hecho, lo que si he podido llegar a ver ha sido justamente lo contrario. Donde antes veía simples  if ahora veo sobre-ingeniería, e incluyo utilización de APIs adicionales para tratar con los tales Optional. Después de ver esto, esto es tal y como yo lo veo: La programación es un arte y por lo tanto el tratamiento de nulos también lo es. El Optional es sencillamente más ver

¿Certificarse o no certificarse?

Un colega me preguntó. Vale la pena certificarse?  Yo le respondí así: Creo que es bueno tener certificaciones: 1. Aprendes cosas nuevas seguro. 2. Eres más profesional que antes. 3. Algunas empresas lo requieren. 4. Genera más confianza al cliente. Desde luego una certificación por si sola no garantiza conocimiento ni nada. De hecho, antes de certificarse en algo lo ideal es tener algo de experiencia para aprovechar al máximo la nueva información, "No es lo mismo conocer el camino que recorrer el camino". Segundo hay que estudiar a conciencia si realmente quieres aprender. Solo si has aprendido se puede amortizar una certificación. Para amortizar una certificación primero hay que ponerla en el curriculum. Pero ponerla en el cv por si sola no sirve de nada. Hay que saberla vender al empleador, demostrando que sabes del tema y si es posible poniendo ejemplos reales de cosas que hayas hecho antes. Aquí vale decir de manera relajada, en el momento oportuno, sin presum

Java 9 Process API

Java 9 will come with interesting features . Here is a quick review of the new Java 9 Process API. Use Cases for the Java Process API These are probably some ways how we are using the Java Process API: To Install, configure or to communicate to other programs from Java: For example, I implemented a Java Installer to install the WebSphere Application Server into the system, and then I configure it by running a script coded in Jython executed the wsadmin tool. To install specific Operating System stuff. I didn’t find any other simpler way to install Windows start menu items from Java other than by doing it in a VBScript program. In my opinion, the Java Process API is in general used to integrate Java with other programs or processes. For example. I made a game in Blender and I implemented a launcher in Java. So, from Java I am calling the blender.exe passing the game.blender file as argument. Known Problems and Workarounds There are common issues in Windows when in

Android 3D Model Viewer Open Source

So finally I decided to publish my 3D model Viewer android app on the Google Play Market :) This app is about drawing 3D objects in android using OpenGL ES 2.0; and its Open Source as my other projects, so people can either contribute, start a similar project based on that or just learn how to do it by looking at the source code. Although there is already similar apps on the market and lots of 3D frameworks out there, neither of the published apps are Open Source. So I wanted to learn how 3D works and I think the best way to understand how it works is by looking at how matrices transforms the objects in space and how pixels are drawn to the screen. Thats why this app does not use any third party framework. So far the app serves as a model viewer, but I have some ideas of what can be done with the code; or as I prefer to think of it, mini-3D-framework.  So for example, I am thinking in creating my very first and simple mini-game and I want to do it in 3D as it is a matter I real

Introduction to Software Design Patterns

Image
This is a presentation I did for the company I work Digital Origin. Its an introduction about architecting software solutions using Design Patterns.  Hope you like it. What is a Design Pattern "Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice" - Cristopher Alexander - "Is a general resuable solution to common ocurring problems. It is a description of template for how to solve a problem in different situations" - Wikipedia - Prerequisites & Basic Principles These are the basic principles one should be concerned before applying patterns. Use Object Oriented language Use of Abstraction Use of Encapsulation Use High Cohesion Use Loose Coupling Use Open - Closed priniple Use Separation Of Concerns Use Dependency Inversion Separate vo

How to build a replicated ehcache through firewall and not to die trying

It's assumed that: You already have a java application and you have an ehcache instance running in your program with 1 cache configured to replicate. You want to connect 1 instance to another instance you have in a remote machine The remote machine you are connecting to is located behind a firewall. You have been given access to only 1 port to make an ssh connection to the remote (firewalled) machine. Ehcache uses RMI to connect the remote instances. When the cache in host 1 tries to connect to cache in host 2, RMI opens a new server socket in host 1 to listen for incoming connections from the host 2. The problem here is that these random ports are not accesible to remote hosts because the hosts are behind a firewall. So to fix it, we need to configure ehcache to only use 2 ports. The " remoteObjectPort " does the magic. So we have this ehcache.xml configuration: 1 server port for the ehcache server to listen to other ehcache servers. 1 server port for the e