• HTPC automatic workflow for Movies and TV Shows

    Watching Movies and TV Shows from online streaming sources is a pain, as you depend on the availability of the your ISP network and current status of the stream provider. Furthermore, you don't always have an internet connection available when you want to spend some time in front of the TV. So downloading it it's a much better way to go in order to avoid this issues (giving that you have to anticipate a little bit to get downloads finished).

    BTW, PopCorn Time is a recent solution that works pretty neat: it streams video directly fetched from torrent sources. I recommend giving it a try.

  • From Node.js back to Java

    During last year, I had the chance to work as CTO of a startup, working mainly within MEAN stack. I was happy, the technology I was working with was in a great hype and its community grew bigger and bigger with lots of projects popping up everywhere.

    Java vs Node.js

    But life is continuously changing, and I started to work in a new company within Java/JEE technologies. I was back to my first days as a professional computer engineer. Java ecosystem is huge, and there are some well established tools that you must control if you want to progress as Java developer. But Java -the language- is getting older, and newer languages are more expressive and require less boiler plate code (don't get me wrong, JVM is a great platform, and probably the best one for enterprise applications). Even with the recent release of Java 8, which introduced Lambdas and some functional style capabilities, I still feel like writing too much, or at least much more than with other languages.

  • Who is who in computer science

    Who is who?I have problems remembering people's names. Really, I'm not good at it. And that's no exception with computer technology. That's why I've written this post, to try to improve and persist those names in my head. Let's see who is who in nowadays computer science.



    Kent Beck (wikipedia, twitter) - XP, Agile, TDD
    martin_fowlerMartin Fowler (wikipedia, twitter) - OOP, Agile, TDD

    Robert Cecil Martin - Uncle Bob (wikipedia, twitter) - Software Craftmanship, Agile Manifesto
    j-b-rainsbergerJ. B. Rainsberger (wikipedia, twitter) - Agile
    Mike CohnMike Cohn (wikipedia) - Scrum
  • Node.js blog: NodeGeek

    Javascript is an old well-known friend that is growing rapidly and gaining traction since Node.js, a command line Javascript interpreter based on Chrome V8 Javascript Virtual Machine, was published. Its community is building great stuff, and more and more companies are moving into this stack, with a high success ratio.


    NodeGeekLuckily for me, for my last two professional years I have been involved in one way or another with it, been able to relearn the language and discover its framework. And since not long ago, I've been writing articles for a new site where I could focus about this amazing programming stack:

    Until this very moment I have post some quite successful posts related to its history or its package system, and many more are almost ready to be published.

    So if you are interested in this technology I would suggest you to subscribe to its mailing list in order to be noticed for latest published posts. Or follow its twitter account! And if you think you could collaborate with this project, don't hesitate to contact me!

  • Javascript Allongé: a review

    javascript_allongeJavascript Allongé@raganwald is one of the more refreshing coding books I have read in a big while. Usually when I face a programming language book, I skip the beginner chapters (if I already know the language, of course) and go directly for the juicy ones, but with this one I tried to follow it from end to end because I read some comments on twitter telling that the way basics are explained, become a really solid base for the language, so I gave it a chance.

    And they were right! This book is not the usual Learn the language in 24 hours or something like that. It's actually a very sharp and deep reading about Javascript and function composition.

    The way the author explains how to create really simple functions and use them to build more complex ones just blowed my mind. The resulting code is so clear and easy follow that is almost impossible to imagine a better way to express that functionality.

    This book is a total recommendation if you deal with Javascript in your day-to-day. I bought a digital copy in Leanpub, but recently the author made it opensource, so you're free to get a copy of it:

  • RaspberryPi shutdown button

    Last Friday I got some spare time (finally!) and, with the help and tools of my friend Alfredo, we placed a button in the RaspberryPi case so, when I push it, a custom command its executed on the RaspberryPi, like for example, a clean system shutdown.

    First lets start with some pictures of the final result:

  • Madrid - OpenSpace Persistencia

    Persistencia ha sido el tema tratado en el OpenSpace que se ha realizado en las oficinas de tuenti. Hemos podido hablar sobre temas como NoSQL, ActiveRecord, BD basados en grafos, geoespaciales, ... entre otros muchos. Ha habido mucho debate, con muchas opiniones, pero sobre todo muy buen ambiente.

    Muy interesante la charla que ha dado la gente de tuenti sobre como gestionan la persistencia. Es de agradecer la claridad y transparencia con la que han participado.

    Dar las gracias a @borillo por el esfuerzo en la organización del evento y a tuenti por ofrecer sus oficinas para el evento.

    Os recomiendo que en cuanto tengáis la oportunidad, acudáis a un OpenSpace siempre resulta una actividad muy gratificante y en la que seguro aprenderás algo nuevo.

  • Javascript Promises Pattern in plain Javascript

    In the previous post I gave a glimpse of the Javascript Promises Pattern (JPP). Now we are going to take a more in deep look into it and implement our (simplified) version of this pattern.

    First of all, let's sow the code I we defined works: we had three operations (to make the example simpler, they all share the same code, but this is not a requisite), each of them expecting a set of arguments which are processed by an asynchronous operation. The result of this asynchronous operation will be feed to the next operation, and so on until we achieve processResults function that will handle the final result. This is a refactored version of the code exposed in the previous post:

    function operation(params) {
      var promise = new Promise(this)
      async_task(params, function() {
        // ...
      return promise;
    function processResults(results) {
      // ...
    operation1 = operation;
    operation2 = operation;
    operation3 = operation;

    Every operation creates a promise object that will be returned as result of the invocation to the operation. Furthermore, this promise object is used to store the future value that will result from the asynchronous call. This value is stored in the promise object using the resolve method.


    This line is were all the magic is done: we invoke the first operation, which returns a promise object, and over this object we are invoking the then method, passing a function as its argument, which will be invoked when the promise object is resolved. Then we repeat this invocation to the then method in order to chain more callbacks, each of them being invoked by successive promise resolve invocations.

    This may appear simple, but it's kind of tricky: we pretend to receive the results of every operation as argument of the following callback. That works ok for operation1, but promises objects from operations 2 and 3 still don't exist so there is no way to attach those promises to its correspondent callback. In other words, invoking the then method of the promise object doesn't actually invoke operation2 and operation3 (in fact, the parameters they need are still not available). What really happens is that they are chained into the operation1 promise object.

    operation1: return promise1
    -> invoke then (operation2): return promise1
    -> invoke then (operation3): return promise1

    So how does JPP resolve this? Well, the trick can be discovered paying attention to the instantiation of the promise objects: we passed this as first argument, which in fact turns to be global object Window for promise1 and operation1 promise object for the promise2 and promise3 instantiations. That's because resolve method invokes callbacks functions applying itself as the current scope. Maybe it's easier to see in code:

    function Promise(promise) {
        if (promise instanceof Promise) {
            return promise;
        } else {
            // this is a new promise chain
            this.callbacks = [];

    Having this idea clear, we can try to develop our own implementation for this pattern. We already have defined the constructor function, let's go for the then and resolve methods:

    Promise.prototype.then = function(callback_ok) {
            ok: callback_ok
        return this;
    Promise.prototype.resolve = function() {
        var callback = this.callbacks.shift();
        if (callback && callback.ok) {
            callback.ok.apply(this, arguments);

    As we said, then just store the function to call when the resolve method is invoked. resolve then just pops the callback function to invoke, applying current promise object (this) as its scope, so when the next operation tries to create a new promise object, it gets the actual promise object instead of a new one, which turns to be the one used to define the chain of callbacks.

    Well, better than to read code to understand it, is to play with it, so here you have a fiddle ready to go. It's a litlle more complex implementation than the exposed here, because I defined a reject method, but the main idea stands.

    I would love to hear feedback from you about the pattern itself or the implementation, so don't hesitate to post comments!

  • Javascript Promises Pattern - 101

    I am sure you have heard about the javascript Promises Pattern, but if you haven't, here is a quick and simple definition: a promise or future is an object that represents a future result, not yet obtained or calculated (here you have a more complete definition). In fact, what is really nice about it is that allows you to define callbacks for async code in and more elegant and readable way.

    But wait a moment, what's the problem with the actual callbacks system? Well, they work, but they become a big mess when you try to chain two or more of them, resulting in a code looking like a pyramid. Let' see an example.

    Suppose you have several async operations: operation1, operation2 and operation3 and they must be execute in strict sequence, that is, operation 2 must wait for operation1 to finish and so on. The resulting code will look like something like this:

    operation1(params1) {
      async_task(params1, function() {
        operation2(params2) {
          async_task(params2, function() {
            operation3(params3) {
              async_task(params3, function() {
                // here we have the results of the three operations

    This code is, at least, hard to follow and thus to understand (and in my opinion quite ugly), but it has been the common way to deal with asynchronism in javascript... until now. Look how the same code would look like using Promise Pattern:

    function operation1(params1) {
      var promise = new Promise()
      async_task(params1, function() {
        // ...
      return promise;
    function operation2(params2) {
      var promise = new Promise(this)
      async_task(params2, function() {
        // ...
      return promise;
    function operation3(params3) {
      var promise = new Promise(this)
      async_task(params3, function() {
        // ...
      return promise;
    function processResults(allResults) {
      // ... 

    Here you can clearly see that there are three different operations, that don't appear to be tight one to another. The chainability of the three functions is established in the last line of code, making it clear with a glimpse that every operations depends on the result of the previous one, and thus, they must be executed in strict order. This line is the key of the Promise Pattern and it works because every operation return a promise object. We'll deep into this in further posts.

    This code can be heavy refactored, but I prefer to keep it like this to make it easy to understand how promises work. Anyway, I think you will agree with me that this code is much elegant and easy to understand than the previous one.

    So far, so good. In further posts I will show you how to easily implement this pattern in plain javascript, and we will deep into the tricks that promises use to make this code work. By the moment enjoy using the implementations provided by the main javascript libraries (much more powerfull than the one we will create) like jQuery's deferreds (they are the same concept as promises).

    See you in following posts!

  • Retrospectiva 2012

    31 de Diciembre, otro año más. Y uno nuevo a punto de llegar.

    En mi caso es fácil resumir 2012 en un par de palabras: cambio y aprendizaje. Ha sido un año en el que profesionalmente he tomado un cambio de dirección y del cual estoy realmente satisfecho, aunque en su momento fue una decisión díficil, sobre todo por el momento de crisis en el que nos encontramos. Y es que este cambio me ha hecho aprender. Mucho.

    Ha sido el año en el que he descubierto el Agilismo como técnica de trabajo, y que me ha permitido conocer muchos otros puntos de vista, distintos y muchos de ellos muy interesantes. Y esto me ha permitido hacerme una auto-crítica (o retrospectiva) de la cual puedo sacar una idea muy clara: más cambio. Y es que, pesar de las técnicas que he podido descubrir y de las tecnologías que he podido aprender, solo he encontrado una constante: Nunca dejes de aprender, lo que hoy sabes, cambiará, y debes estar preparado. No le tengas miedo y abrázalo como un reto constante.

    Esto es más cierto, si cabe, en la informática, ya que el cambio ocurre en plazos realmente cortos, y los cambios que avecinan parecen no ser pequeños. ¿Quién me iba a decir a mi en Enero de este año que terminaría habiendo hecho formaciones sobre Agilismo y Scala y que el hype tecnológico a finales de año se centraría en HTML5 y  Javascript? No way... pero así es, y la verdad es que es un mundo realmente emocionante el que nos espera este próximo año.

    Aunque sin duda el cambio más importante que he experimentado este año no se puede definir en palabras:

    Izan - 2012 / 10 / 11 Izan - 2012 / 10 / 11

    ¡Feliz año 2013!

  • Valencia - Global Day of Coderetreat 2012

    Creo que la mejor forma de iniciar este post es felicitando a los organizadores (@borillo, @xaviuzz, hay que reconocer que os lo habéis currado) y dando las gracias a peerTransfer por hacer de host para este evento de forma totalmente altruista.

    Una pena para aquellos que no hayan podido asistir: ha resultado ser un evento muy dinámico, con opiniones y puntos de vista muy variados e interesantes y, sobretodo, divertido.

    El problema a resolver (Conway's Game of Life), aunque simple en principio, ha dado mucho juego, y aunque un pomodoro no es suficiente para implementar una solución completa, ni mucho menos, ha sido la excusa perfecta para practicar pair programming, TDD y ya de paso, poner en práctica algún nuevo lenguaje y herramientas.

    ¿Qué más se puede esperar de un Sábado de programación por el mero placer de programar y aprender?

    Y ahora a ver si consigo implementar una versión del juego medianamente completa, que al final me he quedado con las ganas. ¡Esto es puro vicio!


  • Functional Programming & Scala course finished

    Coursera Functional Programming has not been my first experience in an online course, but it has been the most satisfying by far. Many people were interested in it, and I think it created a great hype, not only in the course forums but in social networks like twitter. People all around the world were interacting in the same course, creating really interesting conversations and discussions about the subject. Really nice.

    Technically speaking, the course has consisted in an introduction Functional Programming principles and a more in deep look to the Scala language. But, in my opinion, one of the key points in this course was the lessons format: between 1 hour and 1.5 per week of video and slides from the professor Martin Odersky and one home assignment.

    The difficult of the assignments were in crescendo, making them a really funny challenge every week (I remember a couple of days staying up until really late at night because I was in flow with the current assignment and didn't want to stop it).

    In conclusion, high quality content, teacher and classmates, really interesting stuff about FP and Scala and, more important, a really satisfying experience (nothing compared to the online course I took at the UNED, and for what I paid a considerable amount of money).

    PD: Did I mention that this Coursera FP & Scala course was for free? Thank you very much Coursera and Pr. Martin Odersky (and stuff)!

    Looking forward to a continuation course!


  • Recipe: From SVN to Git without pain

    Are you already in love with Git? I'm pretty sure of that, that's the reason why you are reading this, huh?

    These are the steps you should follow to migrate an existing SVN repository to a Git one:

    1 - Create a file where you will map SVN users to Git users, following this pattern:

    svn_user = git_user

    This is the one I created to migrate some SVN repositories from Google Code:

    $ cat authors_mapping_googlecode
    dpecos = Daniel Pecos Martinez
    (no author) = Daniel Pecos Martinez 

    The author (no author) is required to match some commits made by Google in the SVN repository creation process.

  • Blog rollback

    A couple of months ago I took the decision to reset my blog and start it again from the beginning, creating a more professional computer technology oriented content. I wrote some technical articles and I feel really proud of them, but there was something left, some place where I could write about my thoughts or anything I would think it would deserve it.

    Some days ago I make a quick revision of a backed up previous blog where I found some articles I liked very much, some of them with several comments, containing really interesting stuff, and some others that were really crap articles. I started thinking that maybe the restart of the blog was not a good decision, that what my blog really needed was a good clean up and not a complete reset. And that's what I've been doing for a couple of days, recovering articles that I feel are interesting or that made me feel in some special way when I wrote them.

    Now I am proud to present this refurbished version of my previous blog and the more recent one. It contains technical content, personal stuff, opinion articles and more written in Spanish and English. To make this change more noticeable, I have decided to give it a new name: dpmWare, just my stuff, nothing else (just to show the influence of my recent blog Debug yourself! Simply code, just that). I'm also planning to apply a new style to the site so maybe you'll see some changes in a few days.

    Of course I will continue writing technical articles and finish some series of articles still pending. I hope you will enjoy these articles at least as much as I enjoyed writing them.

    Daniel Pecos Martinez

    PS: Happy new year 2012!

  • Git-SCM (Part 2)

    In a previous post, we have seen what Git is and its main characteristics. Now, we'll go more into detail about its functionality and we'll see what a usual day working with Git looks like.

    But before, some initial concepts:

    • Repository: A working tree of files and directories which can be versioned, keeping track of every single modification made over the working tree, been able to move forward and backward in its history.
    • Branch: it is an alternative image of the repository, keeping track of its own history of modifications. A repository has a main branch called master, and it can have an undefined number of branches, some of them may be copies of remote branches and the default name for the upstream repository is origin. The current branch of the working copy can be always referenced as HEAD.
    • Commit: it is a concrete state of a branch, containing the modifications made to the entire working tree since the previous commit in the history, as well as author information and timestamps. It can be identified by its SHA hash, but a name or tag can be associated to it in order to make thing easier.
    • Merge: it is the process of integrating changes or commits of two different branches. This integration is automatically carried by Git, if there are no conflicts between commits.
    • Push: the changes committed in a local branch into a remote branch.

    These are the basic concepts we are going to use in the rest of this post. Now let’s start with the fun!

  • amCharts Javascript Tutorial: Parsing dates and styling up the chart

    Recently I began a collaboration with amCharts, writing some tutorials for their blog. This is my first contribution, and you can find the original post in amCharts blog.


    I hope you'll enjoy my first tutorial about this great graphs library! And, of course, feedback is wellcomed!

  • HTTP connection + HTTP Authenticacion + Proxy + SSL

    Many times during your life as a java developer, you will face the situation of retrieving some resources using an HTTP connection. At first, it will seem easy, but probably some problems will arise such as:

    1. Needing to use an HTTP Proxy (maybe authentication would be required)
    2. Establishing an HTTP authenticated connection
    3. Connecting to a server that uses SSL self-signed certificates

    I'm sure you will quickly find the Apache Commons solution: commons-httpclient. In this article I will show you some code that, I hope, will ease you the  resolution of the previous obstacles using this great API from Apache.

  • Git-SCM (Part 1)

    One of the key tools of a software project development is the repository where it's hosted. During my experience as software developer I have been working with several flavors, such as Visual SourceSafe, CVS, Mercurial, and of course, SVN. But latetly I have found this little jewel called Git.

    Git was initially developed by Linus Torvalds as a result of an unsuccessful research to replace the propietary SCM BitKeeper, used back in 2005 in the Linux Kernel project (kinda strange that the opensource star project was hosted with a propietary software, huh?). Back then, the ability to freely use BitKeeper was withdrawn by its copyright holder, so Linus was forced to find a replacement for it. He was looking for a VCS with a high performance in the process of applying patches and keeping track of the changes, but he didn't find any opensource solutions that fitted his requirements, so he started the developement of Git (as he says on Git's Wikipedia entry, Git was named after himself, because he considers himself an "egoistical bastard, and I name all my projects after myself"; git is the British English slang word for an stupid or unpleasant person).

    That's why its main characteristics are oriented to help the development and management of a huge, distributed and collaborative project like the Linux Kernel. These are the most noticeable of them:

    • Strong support for non-linear development
    • Distributed development
    • Efficient handling of large projects
    • Cryptographic authentication of history
    • ...

    But for me, the most shocking one is its decentralized structure in distributed development: there is no need for a central repository where all commits are sent by the people working in the project (but still, it is recommended to use a main branch for that purpose).

    In following posts I will explain how to use Git in the lifecycle of a software project and how can it improve our performance.

  • Nuevo foro de fotografía: enfocas.es



    En origen, ENFOCAS, está formado por un grupo de amig@s de Castellón, unidos por su pasión hacia la fotografía. El foro en sí, nace como punto de encuentro de quienes como nosotros, sientan la necesidad de compartir esta afición, a través de las imágenes que podamos aportar, junto con los comentarios, dudas, informaciones de interés o cualquier otro aspecto que pueda surgir a lo largo de su vida.

    No pretendemos ser ningún referente, tan solo queremos disponer de una parcela de la red para poder compartir nuestra pasión por la fotografía, con quienes quieran acercarse a él, y lo hagan de forma respetuosa hacia las obras, aportaciones y opiniones de los demás.

    Precisamente en este talante de respeto hacia las aportaciones, grandes o pequeñas, y de las opiniones de sus componentes, esperamos que surja un foro vivo y participativo, donde  el propio foro, su estructura, su estilo  sea fruto de la participación de quienes lo componemos.

    Por último, no podemos evitar tener presente en nuestro pensamiento, que la comunicación a través de Internet, aún siendo deseable y de gran importancia, no puede ni debe suplir, en la medida de lo posible, un contacto directo y personal. Tratamos, pues, de conseguir una participación más cercana, buscando fomentar la presencia activa a través de puntos de encuentro, ya sean mediante KDD´s en nuestra comunidad o fuera de ella, si fuera posible, y a través de todos aquellos birrings que nos permitan compartir unos momentos de amigable camaradería y conversación.

  • GNU HttpTunnel: Como saltarse un proxy HTTP

    Creo que es la primera vez que posteo sobre una aplicación, pero creo que en este caso merece la pena hacerlo. Se trata de GNU HttpTunnel, una pequeña aplicación que crea un túnel HTTP sobre el que podemos meter cualquier servicio. ¿Ventajas? Pues que al ser HTTP, si nos encontramos en una red que solo tiene salida a Internet mediante un proxy HTTP, con esta aplicación (y un PC fuera de la red), podemos salir de la red con el servicio que más nos interese.

    HTTP Tunnel

    Aquí va el chuletario:

    En el PC al otro lado del proxy (fuera de la red) ejecutamos:

    $ hts -w -F host_remoto:puerto_remoto puerto_local_servidor

    y en el cliente (detrás del proxy) ejecutamos:

    $ htc -P ip_proxy:puerto_proxy -F puerto_local_cliente ip_servidor:puerto_local_servidor

    Por ejemplo, si quisiera crear un tunel HTTP para el SSH que tengo en mi servidor de casa (cosa muy útil, por si tuviera que abrir nuevos túneles ;-)), tendría que ejecutar el siguiente comando en dicha máquina:

    $ hts -w -F localhost:22 7022

    lo cual crearía un tunel a la expera de conexión en el puerto 8022 del servidor (este puerto tendría que hacerlo accesible desde internet, en caso de que nos encontremos detras de un router sin NAT), y en la máquina desde la que me quiero conectar ejecuto:

    $ htc -P ip_proyx:80 -F 22 ip_servidor:7022

    de forma que ahora al conectarme al puerto 22 de la máquina local, realmente me estoy conectando al puerto 22 del servidor de mi casa.

    Pues espero que os sea útil!

    Un saludo!

    Más info:

  • Adiós Gloria

    Me ha costado bastante escribir este post, pero finalmente creo que el recuerdo lo merece.

    Gloria Martínez

    Como homenaje, se están recogiendo firmas para dar su nombre a una de las aulas del ESTCE: http://homenajeagloria.uji.es/

    El pasado 14 de abril de 2009 falleció nuestra compañera y amiga Gloria Martínez. Gloria fue una de las profesoras encargadas de poner en marcha en 1991, fecha de su creación, los estudios de informática en la Universidad Jaume I. Desde entonces ha estado involucrada, muy activamente, en todos los aspectos tanto organizativos como docentes de dichos estudios. También fue una de las personas más destacadas en muchas de las actividades extraacadémicas de esta Universidad como son, por ejemplo, las jornadas iParty, o el grupo de Amnistía Internacional de la UJI. Además, también destacó a nivel nacional como impulsora de la Asociación de Enseñantes Universitarios de Informática (AENUI) de la cual era Coordinadora en el momento de su fallecimiento.

    Muchas de las personas que tuvimos relación directa con Gloria, tanto estudiantes como profesores y amigos, consideramos que ha dejado una gran huella allí por donde ha pasado y desearíamos que su memoria no se olvidase fácilmente en el lugar al que dedicó gran parte de su energía. Para ello, todas las personas abajo firmantes, solicitamos que se dé su nombre a una de las aulas de la ESTCE donde ella desarrolló su actividad docente.

    Gloria, gracias por enseñarme como lo hiciste y ser como fuiste. Tus clases son de de los mejores recuerdos que mantengo de la universidad. Gracias.

    (Si alguien quiere saber más sobre cómo era ella, aquí dejo la dirección de su blog donde posteaba con frecuencia: http://servidora.blogspot.com/)

  • 2009: Odisea con el funcionariado

    Tiemblo cada vez que tengo que tratar con un funcionario, es como si te echaran una maldición:

    • De entrada tienes pocas esperanzas de poder hacer el trámite a la primera, sin que te toque volver n-mil veces a tratar con el/la individu@ en cuestión.
    • Una vez te decides a intentarlo, siempre te queda la duda de si ir al edificio público en el que ejerce su profesión o si acudir directamente a la cafetería de al lado (lo cual me hace reflexionar si su profesión es aquella por la que recibe un sueldo, o la que ejerce donde pasa la mayor parte de su jornada laboral... puede ser un tema de reflexión bastante interesante).
    • Por último, si has tenido suerte, los astros se encuentran en la conjunción adecuada y encuentras al funcionario en su sitio, tienes que poner la sonrisa más agradable para que el/la personaje, con su cara de estreñido (o de "deja de joderme, que yo a ti no te voy a buscar a tu trabajo y me pongo a darte por el culo"), se digne a darte un trato poco despreciable y a conseguir un mínimo de información, que con suerte, puede llegar a ser hasta útil (porque hay veces que se contradicen, o mejor aún, se dedican a pasarse la pelota, osea tú, de unos a otros).

    Posibles motivos de que esta gente se comporte de este modo:

    • Porque no les gusta lo que hacen: pues tuvieron que estudiar bastante tiempo y disputárselo entre muchos para conseguir lo que tienen, por lo que estoy más que seguro que conocían lo que se iban a encontrar (tal vez, con toda la idea, de tocarse las pelotas durante los restos).
    • Porque el sentimiento de seguridad y de ser intocables en el trabajo les hace descuidarlo: poco más que decir, si no rindes cuentas a nadie y tampoco te motiva lo que haces, es obvio que cada vez lo vas a hacer peor y con menos ganas (siempre existe la posibilidad de que se dejen el trabajo, pero también existe la posibilidad de que llueva hacia arriba).

    Concretando, todo esto se solucionaría eliminando la permanencia asegurada de un funcionario en su puesto de trabajo e implantando unos controles y seguimientos de los rendimientos de su trabajo. ¿Por qué no se hace? Pues porque seguramente lo tendría que tramitar un funcionario y es probable que se le fundieran los sesos al intentar averiguar qué impresos son necesarios.

    Como bien dice mi padre, un funcionario es alguien que hace un esfuerzo en un momento de su vida y se pasa el resto de ella descansando. O como dice un amigo funcionario, que entran a las 8 al puesto de trabajo, pero trabajar nunca se sabe a qué hora se comienza (igualito que en mi empresa :-( )

    Y es que francamente, ¿quién no ha pensado que la tarea que realizan 5 funcionarios administrativos la podrían hacer perfectamente 1, como mucho 2, personas trabajadoras como cualquiera? Da la sensación que cuando entran les hacen un test de aptitud y a los que lo superan les rechazan para el puesto (de hecho, el amigo que he comentado justo antes, fue acusado de trepa por sus compañeros funcionarios porque rendía demasiado :-o !?!?!?!?! :-o ).

    Nota: he intentado referirme concretamente a funcionarios de caracter administrativo, de los que te atienden tras un mostrador o mesa, aunque, por sorprendente que parezca, estoy convencido que hay funcionarios de gran calidad tanto personal como profesional, por lo que tampoco es correcto generalizar.

  • Ingeniero informático, to be or not to be?

    Desde hace un par de semanas está circulando una convocatoria de huelga para los ingenieros informáticos. Según comentan en la web, esta huelga se debe a la exclusión de las titulaciones de Informática de las propuestas de en las que se proponen los títulos habilitados para ejercer distintas profesiones. Concretamente se atribuyen a la Ingeniería en Telecomunicaciones muchas (por no decir prácticamente todas) las funciones que ejerce un Ingeniero Informático. Según comentan en dicha web, el Ministerio de Educación justifica esta decisión argumentando que:

    "La informática se trata de una materia transversal, por lo que no puede concentrarse en una titulación concreta"

    La cuestión es que se está levantando mucho revuelo (en parte con razón) y está ciruclando mucha rumorología que hace poco bien. Como bien explica Enrique Barreiro (profesor de Ingeniería Informática en la Universidad de Vigo) en esta web, hay dos problemas que se están mezclando en toda esta rumorología:

    1. El diseño de los nuevos títulos adaptados al Espacio Europeo de Educación Superior, y
    2. La regulación de la profesión (que se nos asignen las atribuciones que ejerzamos).

    (En esta imagen tenéis un resumen light de lo que comentan)

    Dos problemas diferentes pero relacionados, y es que al parecer la adaptación no se ha llevado a cabo para el proceso de Bolonia debido a que la informática no es una profesión regulada. Entonces, ¿por qué no se regula la profesión de informática? Básicamente porque les resulta caro a los empresarios. Y es que ahora mismo el intrusismo laboral de nuestro sector es común, y lo peor, ampliamente aceptado por todos nosotros. ¿Os imagináis a un chaval que se haya leido un libro de arquitectura proyectando edificios? Claro que sí, por poder claro que puede y seguro que hay algún genio que es capaz de hacerlo, pero ¿se lo construirían sin una firma de un arquitecto? Claramente no.

    En informática no es raro encontrar químicos, telecos, matemáticos, físicos, aficionados o cualquier otra cosa. Seguramente sean perfectamente capaces de realizar el trabajo que realizan, gracias a la experiencia adquirida y la formación no homologada que hayan recibido, pero esto sería impensable en otros sectores como Derecho, Industriales o Medicina (por capaz que fueras de desarrollar la tarea).

    En resumen, mi inquietud personal es: ¿Por qué se me considera menos ingeniero que a un industrial? La respuesta es sencilla: por que no nos hacemos valer, triste pero cierto. No tenemos conciencia de grupo, somos individualistas por lo que nuestro poder sindical es nulo. Además, por lo mismo, no tenemos un Colegio Oficial que defienda la profesión, al contrario de como ocurre con otras profesiones.

    En fin como buen informático no me queda otra que la resignación (o hablando claro, bajarme los pantalones y que me hagan lo que quieran que yo seguiré tragando lo que me toque)... Triste pero como no lo hagas, a la puta calle que seguro que hay otro informático detrás de ti (aunque tampoco es necesario que sea informático) que por menos dinero que lo que tu pides, tiene los pantalones más abajo.

  • GDD MAD 2008... ¡Estuve allí!


    Fue un día agotador, pero valió la pena. Mucha gente, mucho nivel (no tanto en los talleres, pero bueno) y muy buen ambiente. No voy a hacer más resumenes acerca del evento (ya he leído unos cuantos en un rato), simplemente recomendar que si tenéis la posibilidad de asistir al GDD MAD 2009 no dejéis pasar la oportunidad.

    Temas principales sobre los que se hablaron:

    • Android (tema estrella sin duda)
    • Chrome
    • AppEngine
    • Gears
    • Opensocial

    A continuación os dejo un enlace al álbum en flickr con las fotos que tomé.

    ¡Un saludo!

  • ¿Look & Feel? ¿Qué es eso?

    L&F de varias aplicaciones en WinXP

    Éste es el aspecto de varias aplicaciones ejecutándose en Windows XP. Como se puede ver en la imagen últimamente las empresas optan por una diferenciación en cuanto a aspecto de la ventana (Look & Feel), perdiéndose la integración a la que estábamos habituados con el sistema operativo. De hecho, en la captura de pantalla, la única aplicación que mantiene el L&F de Windows XP es el Explorador de Ficheros.

    Y tú qué opinas acerca de ésto: ¿es bueno? ¿es malo? ¿te la suda?

  • Google anuncia Chrome

    Tras varios años de rumorología acerca de si Google iba a publicar un navegador web propio o no, finalmente se ha aclarado: su nombre es Chrome. Será un proyecto opensource basado en WebKit de Apple (el motor de renderizado de Safari) y según comentan, incluye un motor Javascript escrito desde cero, con el fin de mejorar el desempeño tanto en tiempo de ejecución como en consumo de memoria, con respecto a los navegadores que actualmente hay en el mercado. Otras características que incorpora son la navegación anónima, un sistema "Speed Dial" como el de Opera o una barra de autocompletado basada en el buscador.

    ¿Qué es lo que pretende Google con esto? Según ellos, aportan innovación de cara al usuario, aunque personalmente lo que quieren conseguir es convertir al navegador en un sistema operativo (bueno, a lo mejor es un poco exagerado, pero sí en una fuente completa de aplicaciones), ya que supongo que uno de sus puntos fuertes será el poder ser ejecutado sin barra de herramientas ni menús, al estilo de Prism de Mozilla, consiguiendo que las aplicaciones web tengan un aspecto de aplicación de escritorio. Además, con la inclusión de Gears en Chrome, se ofrece la posibilidad de que las aplicaciones web almacenen datos en el propio navegador, abriendo un gran abanico de posibilidades para la tecnología web.

    Como nota curiosa, comentar que Google ha utilizado su estilo característico en la publicación de Chrome utilizando viñetas de cómic para ello.

    Habrá que ver cómo afecta esto a los otros grandes navegadores y que implicaciones creará en el desarrollo de aplicaciones web. Renovarse o morir...

    Enlace a noticia en EstiloHacker.com

    ACTUALIZACIÓN (02/09/2008 @ 23:05): El sitio ya está disponible... ¡a bajar!

  • Debian vs. Ubuntu

    ¡30 minutos! Eso es exactamente lo que he tardado en instalar Ubuntu con incluso más funcionalidades de las que tenía en mi Debian.

    ¿Por qué este cambio? Bueno, supongo que la edad tendrá algo que ver y uno ya no tiene tanta paciencia como antes. Y es que en mi humilde opinión, disponer de un sistema Debian con todo correctamente configurado, resulta una tarea tremendamente tediosa, además de que si deseas estar un poco al día con los programas que tienes instalados, te implica estar en una versión testing o unstable de Debian, con el riesgo que ello conlleva.

    Concretamente y por poner un ejemplo de lo último que me había ocurrido con mi Debian sid: tenía que asistir a unos talleres de programación, y tuve disponible toda la tarde anterio al día en cuestión, por lo que decidí actualizar el sistema.

    Actualizo, y pierdo el driver propietario de NVidia (que lo instalé yo por mi cuenta ya que Debian no lo incluye y Compiz es un gustazo del que no se puede prescindir una vez lo pruebas). Total que lo reinstalo y resulta que la versión de gcc que hay ahora en el sistema es una superior a la que utilicé para compilar el kernel en su día, por lo que no me deja compilar el módulo de nvidia. Solución: recompilar el kernel, y ya de paso, actualizarlo a la última versión disponible, que, casualidades de la vida, da errores de compilación con la versión nueva del gcc. Mi gozo en un pozo.

    Opto por downgradear el gcc a la versión que tenía previamente, y además me quedo con la versión que utilizaba hasta el momento del kernel, pero seguía con el problema del módulo nvidia, por lo que vuelvo a intentar compilar el kernel, pero en este caso sin actualizar las fuentes. Compila todo sin problemas ¡uff!

    Reinicio, y veo que no tengo conexión inalámbrica. Bueno, no es problema ya que el módulo lo compilo por separado, así que lo hago y lo cargo, pero por lo que sea, no consigo conectar a mi red wifi configurada con WPA (que en su momento ya me costó unas 3 o 4 horas configurar) :'(

    Finalmente y tras rehacer toda la configuración que ya hice en su día, consigo volver a conectar. ¡Todo listo y actualizado para el taller!

    Pues bien, llego al taller, me dan la configuración para conectar a la red WPA y no lo consigo, que no cunda el pánico... Solución tumbar y levantar la interfaz wifi sucesivas veces (como durante unos 30 minutos) hasta que finalmente consigo IP, todo esto sin tocar configuración sino simplemente repitiendo el proceso una y otra vez. A todo esto, los compañeros de mesa arrancan su Ubuntu, y con un pequeño desplegable seleccionan la red wifi y meten user/password y a trabajar :-o

    Sinceramente, situaciones como ésta te hacen plantearte si realmente merece la pena dedicar tantísimo tiempo a la configuración de un ordenador, en detrimento de tiempo de uso. Está claro que no está mal conocer cómo hacer estas cosas a "bajo nivel", pero llega un punto que resulta excesivo.

    En resumen, ahora mismo soy un novato total en Ubuntu, aunque es realmente parecido a Debian, por lo que no creo que me cueste adaptarme (aún así, si tengo en cuenta todo el tiempo ahorrado en configuraciones, por el mero hecho de haber optado por Ubuntu, creo que dispongo de tiempo más que de sobra para adaptarme).

    PD: Soy usuario de Debian desde hace aproximadamente 8 años (allá por el 2000 instalé mi primera Potato) y por el momento la voy a mantener en mi servidor, que cariño todavía me queda hacia Debian.

    ¡Un saludo a todos!

  • ¡Feliz aniversario BASIC!

    El 1 de Mayo de 1964 se ejecutó el primer programa en BASIC. Los creadores de este lenguaje de programación, los profesores John G. Kemeny y Thomas E. Kurtz del Dartmouth College, hace 44 años ejecutaron por primera vez un código escrito en BASIC (Beginner's All-Purpose Symbolic Instruction Code).

    Los creadores de BASIC

    La búsqueda de un lenguaje potente y sencillo de usar (por aquellas fechas se solía utilizar Fortran y Algol) comenzó en el año 1956, con el fin de facilitar a sus estudiantes el aprendizaje de los métodos de programación.

    Posteriormente en 1975, Paul Allen y Bill Gates adaptaron este lenguaje a los computadores personales. Como resultado, BASIC fue ampliamente utilizado y evolucionado hasta hoy en día (Visual BASIC .NET).

    Personalmente, éste fue el primer lenguaje que utilicé para desarrollar mi primera aplicación medianamente grande, un tablero de parchís (cuando lo miro hoy en día me da hasta vergüenza. no utilicé ni una sola función y todo el código estaba lleno de GOTOs). Para ello utilicé un intérprete de QuickBasic. Qué tiempos aquellos...

    ¡Felicidades BASIC!

    PD: ¿Y tú con qué lenguaje distes tus primeros pasos en el mundo de la programación?


  • JavaServerFaces, Spring WebFlow y Struts Tiles, todo en uno

    ¿Mezclar la versatilidad de JSF con la definición de flujos de negocio de SWF, todo ello con una estética semejante gracias a Tiles? Pues es posible, aunque resulta realmente tedioso y complicado para aquel que es relativamente nuevo a algunas (más bien todas) de estas tecnologías del mundo Java JEE.

    A esto es a lo que me he dedicado la última semana de trabajo, a intentar comprender el funcionamiento y buscar por Internet la forma de poder conjugar estas tres tecnologías. He conseguido hacerme una idea del complejo funcionamiento de JSF, SWF me ha sorprendido gratamente por la gran potencia que se consigue con tan pocas líneas de código, y Tiles, aunque ni tan avanzado tecnológicamente ni tan sorprendente, ofrece unas posibilidades de diseño visual que unifica toda la aplicación web con tan solo unos poco ficheros.

    Espero poder publicar un tutorial con los pasos a seguir y las aclaraciones necesarias lo antes posible.


  • ¿Por qué sigo con Debian?

    La verdad es que ni yo mismo lo sé. Si por lógica fuera, ya haría un tiempo que estaría trabajando con otra distribución más simple y en la que la configuración de los dispositivos no ocupase varios días, realizando cientos de búsquedas por Internet y leyendo varios foros.

    Pero la realidad es que aquí sigo, peleando con el apt-get y actualizando contra la versión unstable de esta distribución.


    Y tampoco será por falta de alternativas: he probado OpenSuse, Gentoo, Ubuntu, y pese a tener muchas ventajas sobre Debian, les faltaba algo... Puede que sea esa sensación de control y orden, o bien un cariño adquirido durante nuestras largas horas de pelea, pero la verdad es que por más que lo intento no soy capaz de dejarla.

    ¿Os pasa esto también a vosotros?

  • El escritorio del futuro

    Ésto me lo acabo de encontrar navegando por internet. La verdad es que es muy impresionante:

    Se trata de un sistema semejante a un escritorio físico, de los de verdad. Tendremos una especie de mesa con los documentos, los archivos sobre ella. Con el ratón podremos moverlos de un lado a otro de nuestra mesa virtual, y gracias a diversos gestos, podremos agruparlos, apilarlos, ordenarlos, moverlos, y multitud de opciones de la Vida Real, pero con nuestro ordenador y de un modo virtual.

    Este escritorio virtual lo está desarrollando BumpTop, y por ahora es un prototipo que tiene muy, muy buena pinta. Estaremos informados acerca de actualizaciones y nuevos lanzamientos, ya que la cosa parece que va a ser más que sobresaliente.

    Fuente: http://xataka.com/archivos/2006/06/23-lo-que-sera-el-escritorio-del.php

    ¿Para cuándo lo tendremos en nuestros Linux? Yo me muero de ganas ;-)

  • Mundo Java

    Desde hace cosa de unas semanas, el mundo Java está cambiando notablemente. Por un lado, Sun publicó Java EE 5.0, junto con Sun Application Server 9.0, primera versión estable del proyecto Glassfish, que pretende implementar un Application Server libre para la especificación de JEE 5. En esta nueva versión se ha incluido, a parte de un cambio de la nomeclatura para las versiones, la especificación de EJB 3.0, Java Persistence API, una mejora en el desarrollo de webservices o JSF entre otras características.

    GlassFish Project

    Por otra parte, Sun también anunció en la JavaOne 2006 un cambio de licencia de distribución para el JDK y el JRE (DLJ - Distributor License for Java), a fin de que las distribuciones de Linux que, hasta el momento rechazaban incluirlos en su distribución, cambiaran de parecer, aunque por el momento dicho cambio no está causando los efectos que Sun esperaba. Inicialmente fue RedHat la que mostró sus reticencias, uniéndose posteriormente Debian, la cual sí que incluyó paquetes para Java en un primer momento en sus versión experimental.

    Lo que sí parece claro es que por fin Sun está redirigiendo su filosofía y se está orientando más hacia el software libre. Según se comenta, no cabe duda de que Java se convierta en un proyecto libre, la cuestión en estos momentos es cuándo y cómo. Ese momento será seguramente uno de los más importantes, si no el que más, en mucho tiempo de la historia de Java.

    Creo que va a ser hora de ponerse en serio con la certificación y volver a los libros, a pesar de la pereza que da el hacerlo. Todo lo bueno requiere un pequeño sacrificio ;).

  • Hipocresía Total o Semana Santa

    Acaba de terminar la semana en el que mucha gente se auto-inflije castigos a fin de contentar o conseguir el favor de la deidad en la que creen. Es curiosa esta tradición y lo mucho que se sigue por los medios de comunicación. Hay gente capaz de hacerse auténticas animaladas, como clavarse unos clavos en pies y manos o flagelarse la espalda (cuanto más sangrienta quede, mayor y mejor es tu fervor religioso).

    Luego, a parte de las lesiones auto-inflijidas existe también la costumbre de cargar a cuestas entre varias personas enormes trozos de madera decorado con costosos vestidos y alguna que otra joya, los cuales representan a su dios (o hijo) local y exhibirlos por su barrio, mientras que el resto del vecindario se dedica a cantar a dichos maderos y a llorarles rogando algún favor.

    Lo curioso de todo esto es que, si no tengo mal entendido, se supone que el dios cristiano es bondadoso, por lo que no parece muy lógico ofrendarle con el sufrimiento propio. Es más, según creo lo que se debe hacer es tener fe y seguir los mandamientos (aunque algunas de las interpretaciones que da la Iglesia de ellos son un poco más que lastimosos), por lo que parece que crear ídolos de madera costosísimos y arrastrarlos delante de todo un gentío emocionado de ver lo gran creyente que eres no va muy en concordancia con compartir los bienes con los pobres, la humildad y el amor al prójimo (no creo que alguien que sea capaz de hacerse eso, pueda luego ser capaz de tratar medianamente bien a otros).

    Aún así, si al menos la gente que hace todo esto fuera de la misma forma durante el resto del año, pues aún tendría un poco más de sentido (que seguiría siendo bastante incomprensible), pero es que la gran mayoría de la gente luego ni se acuerda de lo religioso que demostraron ser la semana santa anterior. Luego no me extraña que la gente llore cuando da la casualidad de que llueve (que falta hace, por otra parte) el día en el que iban a desfilar, teniendo que suspenderlo. Pobrecillos, les tocará esperar otro año para sacar el madero a ventilar.

    Pero lo que más me intriga de todo es que si se supone que la Santísima Trinidad son Uno solo, ¿cómo se explica que cada barrio tenga su propio Cristo y/o Virgen y que además el propio sea mejor que el ajeno? Toda una curiosidad religiosa ;-)

  • Magdalena a la valenciana

    Parece que alguien ha tenido la original idea de que el mejor final para los sensacionales y espectaculares monumentos que son las gaiatas es... ¡¡¡¡el fuego!!!!

    Ahora lo único que queda es que se salve algún ninot ;-)

  • Reencuentro después de 11 años

    Ese es el tiempo que hacía que no nos encontrábamos los compañeros de 8º de EGB del colegio Izquierdo. Sí que me había encontrado con alguno de ellos alguna vez, pero no así como anoche, todos juntos recordando las muchas anécdotas que vivimos durante aquellos años.

    Conforme me acercaba al punto de encuentro, me iba encontrando más y más nervioso, pensando en quién y cómo encontraría y si los reconocería (11 años es muuuucho tiempo), pero cuando llegué allí pude ver que la mayor parte de compañeros y compañeras que había tenido estaban bastante cambiados, pero la mayor parte eran reconocibles. No acudieron algunos de los que me hubiera gustado volver a ver, pero espero que no pase mucho tiempo hasta que me los encuentre por ahí.

    Bueno, tampoco me voy a poner ahora a describir cómo fue la noche. Simplemente quería agradecer a todos los compañeros que siguen ahí a pesar del tiempo y de la distancia su cariño y complicidad.

    Una noche genial. Espero que no tardemos otros 11 años en repetirla.

  • 2005 New Year's Eve at London

    ¡Feliz año 2006!

    Un poco tarde, pero por fin he terminado la entrada que quería escribir sobre el viaje de nochevieja a Londres :-D. Es un pequeño resumen de lo que hemos hecho durante el viaje:

  • Web 2.0

    Es el término de moda en los entornos de programación web: AJAX, consistente en la interacción de las tecnologías JavaScript, HTML/CSS y XML. Aunque en sí misma esta conjunción resulta bastante reciente, las tecnologías implicadas son ya viejas glorias entre los programadores.

    El concepto básico en el que se basa esta técnica de programación es bastante simple: cuando se produce un evento en el navegador web que está mostrando el código HTML, en vez de realizar una petición HTTP al servidor, tal y como se suele realizar normalmente, se crea un objeto JavaScript XMLHttpRequest, encargado de realizar dicha petición, la cual devolverá unos datos que serán pasados al manejador del evento que se haya definido.

    Sencillo ¿verdad?. La gracia del tema (puesto que hasta ahora lo único que se ha hecho es complicar lo que antes se hacía de forma sencilla) es que la petición HTTP y la ejecución del manejador del evento se realizan en un segundo plano y de forma asíncrona, de forma que el efecto producido por el evento es percibido por el usuario sólo cuando la comunicación con el servidor ya ha terminado. Además, no resulta necesario realizar una recarga del código HTML, ya que es el propio manejador javascript el que edita el árbol DOM de la página web, lo que a efectos de interfaz resulta en una web dinámica que responde a eventos sin repetidas esperas entre cargas de páginas.

  • Google ofrece IM/Jabber

    Pues parece ser que los tan sonados rumores de que Google iba a ofrecer un servicio de mensajería instántanea se han hecho realidad. Es más, también se ha confirmado que utiliza el protocolo Jabber, lo cual supondrá un fuerte empujón a esta tecnología libre. El nombre con el que se ha bautizado este servicio es Google Talk.

    Podemos ver que ofrecen un cliente, por el momento únicamente para sistemas Windows, con el cual podremos realizar tanto conversaciones vía texto o vía voz.

    El único inconveniente es que por el momento sólo aquéllos que dispongan de una cuenta de correo GMail podrán probar el nuevo sistema de IM.

    Podemos seguir los comentarios que se realicen en Barrapunto y en Slashdot.

  • ¿Alcohol = Diversión?

    El Sábado por la noche, camino de vuelta a casa sobre las 6 de la mañana, después de una noche de fiesta con los amigos, pasaba por delante de la biblioteca de Rafalafena, desde donde se podía observar el cielo totalmente despejado (cosa bastante normal en las noches con viento, como fue ésta), teniendo una visión impresionante de la constelación Cassiopea justo encima del edificio de la biblioteca. No sé muy bien por qué, pero esa situación activó el «modo meditación» durante el resto del camino, lo que me hizo pensar en un concepto que se suele dar por supuesto y es el asociar el alcohol con la diversión.

    Lo curioso del tema no es que el beber alcohol implique diversión (que si se controla bien, en la mayoría de los casos suele ser así) sino la dependencia e incredulidad que se genera en el «bebedor festero habitual».

  • Magdalena Vítol y sus daños colaterales

    Al final todo lo bueno llega a su fin, y las fiestas de la Magdalena no han sido una excepción. Tras 10 días de frío y sufrimiento por pasarlo bien, volvemos a la rutinaria vida del trabajo diario. En general han estado bastante bien, aunque como siempre, he acabado bastante "quemado" con la organización y lo elitistas que pueden llegar a ser, pero bueno, prefiero no escribir sobre ello, no creo que ni tan siquiera lo merezcan.

    Aunque lo que sí que voy a denunciar es la fatal organización que hubo durante el acto de la Magdalena Vítol, el cual tras retrasarse durante casi tres cuartos de hora, se extendió casi una hora más, gracias a una pobre actuación teatral, en la cual no se tuvo en cuenta el estado meteorológico (que no es que acompañara mucho) y que casí hace acabar a una actriz que estaba colgada en un globo-luna, acabar en la punta del Fadrí. Pero lo peor estaba aún por llegar cuando a los organizadores les dio por lanzar un mini-castillo de fuegos artificiales hacia el público lo que produjo la consecuente avalancha de gente y sus correspondientes heridos y daños colaterales. Además, y para más inri, una carcasa cayó justo al lado de donde estabamos nosotros, causando una escena un tanto dantesca. Las consecuencias, pues mi amigo Héctor con una ampolla en el cuello, Guillermo oliendo a pollo quemado y yo con un par de quemones en la chaqueta. El resto de gente que venía con nosotros creo que salió más o menos intactos, salvo por el mal rato pasado.

    Creo y espero que será dificil de mejorar en próximos años, aunque si hay algo que no deja de sorprenderme año tras año son los organizadores y sus geniales ideas festivas. A ver con que nos premian en el 2006.

  • Sospechas conspiracionistas

    Hoy he podido escuchar y ver en diversos medios de comunicación el anuncio de que la NASA realizaba el lanzamiento de su última misión espacial, Deep Impact, que transportará una nave cuya misión será estreyarse con el cometa Tempel 1 a una velocidad de nada menos que 37.000 km/h. El aplastante suceso ocurrirá el 4 de Julio del presente año, a una distancia 431 millones de kilómetros, un poco lejos para que cierto país pueda usar la explosión como si de fuegos artificiales se tratasen para celebrar la fiesta nacional que acontece el mismo día.

    Según la NASA, esta misión despierta el interés científico ya que se supone que el cometa está compuesto por los materiales primigéneos que formaban el sistema solar, por lo que se desvelarían muchos secretos aún por descubrir. Si a esto le añadimos que no se sabe si el cometa quedará totalmente destruido a causa del impacto, o si únicamente se creará un pequeño cráter del tamaño de un campo de fútbol y de unos 10 pisos de altura, obtenemos lo que puede ser una de las experiencias científico-espaciales más populares del año que comienza.

    La inquietud surge cuando uno comienza a darle vueltas a unas cuantas ideas ...

  • Fin de Año en Benidorm

    ¡Feliz año 2005 a todo el mundo!

    Hoy mismo he llegado de pasar este mini-puente de fin de año en Benidorm con los colegas de Benicassim. La verdad es que no ha estado nada mal el fin de semana, a pesar de haber trabajado hasta instantes antes de coger el coche, aunque hubiera sido mejor ir un poco más descansado y salir un poco más tarde el Domingo, ya que tuvimos que dejar las habitaciones sobre las 10 de la mañana, por lo que el Sábado tuve que acostarme no muy tarde para poder conducir en condiciones a la mañana siguiente (mejor no arriesgar con el coche).

    En total éramos 8 personas: Rafa, César, Alejandro, Julen, Natalia, Noelia, Carlos (que vino un día más tarde y se fue uno antes con Noelia) y yo, repartidos en dos habitaciones de 4 (Rafa, César, Alejandro y Carlos en una y Julen, Natalia, Noelia y yo en la otra). La verdad es que el hotel estaba muy bien para el precio que nos dieron, ya que el viaje al final me ha salido por unos 90 € aproximadamente, incluidos estancia, entrada a las discotecas Penélope, KM y Hacienda (antes Pachá), comida y gasolina. Muy bien de precio, sin lugar a dudas.

    En cuanto al ambiente, sencillamente genial. Sólo vi una ambulancia en toda la noche y no se vio ninguna bronca en ninguna de las discotecas, cosa realmente extraña. La gente por lo general te felicitaba el año, aunque probablemente fuera por lo pedo que iban.

  • Inicio astrofotográfico

    Ya llevaba tiempo tratando de empezar con la astrofotografía con webcam, pero entre unas cosas y otras siempre lo dejaba para otro momento. Al final el pasado día 6 de Junio me decidí a intentarlo.

  • Mono: ¡Hola Mundo!

    Para retomar de nuevo la marcha del blog, he decidido comenzar mostrando algunos ejemplos de programación en C#. Por el momento os dejo el obligatorio programa para todo aquel que empieza con algún lenguaje.

    Hola Mundo!

    using System;
    namespace HolaMundo {
       public class HolaMundo {
          public static void Main (string [] args) {
             Console.WriteLine ("Hola Mundo!");

    Sencillo, ¿verdad? Tiene mucha semejanza con Java, exceptuando que las palabras reservadas difieren y que Java no posee el concepto de espacios con nombre o NameSpaces, entre otras.

    Bueno, prometo que el próximo ejemplo será más interesante que éste.

  • Funcionamiento de .NET

    En los artículos anteriores hemos hablado de conceptos como CTS, CLI (CLS), IL o JIT, los cuales pueden resultar bastante confusos. A continuación daremos una aclaración del significado de cada uno de ellos, y explicaremos su función dentro de la plataforma .NET, para lo cual se hará una explicación más a fondo de su funcionamiento.

  • Pasado, presente y futuro de Mono

    En este artículo os comentaré un poco de historia sobre la evolución de la tecnología .NET y del proyecto Mono, que a pesar de su corta existencia, ha sido un proyecto muy vivo, y en el cual han participado y participan muchas personas de todo el mundo.

  • ¿Qué es Mono?

    Mono (http://www.go-mono.com) es la implementación libre de la tecnología .NET, capaz de correr en Linux, sistemas *NIX, MacOS, y Windows. Gracias a este proyecto, los usuarios de sistemas *NIX podremos contar con los últimos avances en lo que a tecnología del software se refiere.