Translate

lunes, 8 de febrero de 2016

Como empezar con Clojure


Una forma es leyendo algo de lisp o common lisp. Otra es siguiendo este post que esta por demás interesante:

https://www.twilio.com/blog/2016/02/getting-started-with-clojure.html

Lenguajes de programación más solicitados y mejor pagados



Bueno ya publique esto cientos de veces, pero es bueno recordar las implicancias que esta tomando la programación funcional y si no me creen vean este post, sobre todo la parte que indica:

A pesar de su poca frecuencia, los lenguajes mejor pagados son: 

1.-Lisp 

2.-F# 

3.-Haskell 

4.-Scala 

5.-Clojure 

6.-Erlang 

7.-Lua 

Dejo link: http://www.taringa.net/post/info/19148330/Lenguajes-de-programacion-mas-solicitados-y-mejor-pagados.html




De programador a project manager


Volví un tanto reflexivo de las vacaciones, dado que escuche como tantas veces la frase, "si asignas las tareas de project manager a tu mejor programador, perderás un buen programador y obtendrás un pésimo project manager" y sin duda esto es así. Es decir sin capacitación de project manager, no obtendremos un buen project manager, ni de un programador, ni de nadie. En muchos casos no son tareas o decisiones que las pueda tomar cualquiera.

Sumo a esta problemática, lo que pasa por estos lares, que si sos un muy buen técnico no podes seguir creciendo con este sombrero, tarde o tempano tenes que transformarte en project manager. Que a mi entender es algo muy tonto dado que no hay peor cosa en el mundo que trabajar de lo que no te gusta.

Pero, ¿porque las empresas se empeñan en transformar programadores en project managers? En principio porque da buenos resultados. Si si, a pesar de todo lo que dije anteriormente. Es necesario que un project manajer tenga conocimiento técnicos. Con los cuales puede validar estimaciones, soluciones. Discutir con el cliente, ver que necesitan los desarrolladores.

Tal vez ustedes lo han sufrido, no existe nada más patético que tener que explicar una estimación a una persona no técnica y que esta persona sin ninguna idea te rechace la estimación solo porque es mucho tiempo.

Por lo tanto esta bueno que el project manajer sea técnico, pero no nos olvidemos que debe recibir mucha capacitación, no se puede pasar de programador a project manager de la noche a la mañana. También podemos optar por hacer un paso gradual donde el programador se le van delegando tareas de project manager de a poco y de menor dificultad.

Y a la vez las empresas deberían dar oportunidad de seguir en la carrera técnica. La idea sería la carrera de programador debería tener una bifurcación en la cual uno podría elegir que perfil toma su carrera.

No es nada fácil más que nada en empresas pequeñas, pero creo seriamente que es donde deberíamos tender.

miércoles, 3 de febrero de 2016

Java Browser Plugin van a ser deprecados en Java 9

Se lo que están pensando, los applet de java ni se usan. Pero créanme se usan y mucho. Todos los que tengan un desarrollo en java con esta tecnología han visto como cada vez nos pedía nuevos carteles de seguridad como anunciando la muerte de los applet.

También tenemos que ver que implicancias tiene con JavaFX. Saben algo?

Los que lo usan a ponerse a migrar!!

Dejo link:
http://www.infoq.com/news/2016/01/java-plugin-eol

Aprende a codificar en code.org



Code.org es una organización que promulga el aprendizaje de programación.

Ahore cuenta con un apartado en castellano. A la vez se puede aprender jugando, es decir podes aprender a programar jugando a minecraft o con startwar o con algún otro juego.

Esta muy bueno te invito a que visites la pagina.




Dejo link: https://code.org/learn

domingo, 31 de enero de 2016

Introducción al Business Intelligence y al Big Data

Otro curso gratuito recomendado, que ya esta por empezar!!

Este curso pretende ser una introducción al Business Intelligence (BI). Se presenta que es un sistema de BI, cuál es la arquitectura de estos sistemas, cuáles son las metodologías principales de Business Analytics (el Clustering y la Clasificación), y cuáles son las tendencias actuales en el área del Business Intelligence.




Les dejo link:
https://miriadax.net/web/introduccion-al-business-intelligence-2-edicion-

Try Python

La gente de codescholl nos regala un curso sobre python, de la misma modalidad de "Try ruby". Sin más les dejo más info:

COURSE DESCRIPTION

​Explore the basics of Python and learn what it means to store and manipulate numbers and words as well as make decisions with your program.

COURSE OVERVIEW

  1. Level 1 Try Python Badge

    LEVEL 1 FREE LEVELBirds & Coconuts 2 Videos | 6 Challenges

    Get started with Python by calculating how many swallows it takes to carry a coconut.
  2. Level 2 Try Python Badge

    LEVEL 2 FREE LEVELSpam & Strings 2 Videos | 7 Challenges

    ​Learn how to store characters in a string to combine, dissect, and slice words.
  3. Level 3 Try Python Badge

    LEVEL 3 FREE LEVELConditional Rules of Engagement 2 Videos | 7 Challenges

    Explore conditionals in Python to see how your program can make important decisions.

martes, 12 de enero de 2016

Que es React?


Si, si voy a hablar de otra librería javascript: React.js. Lo se, hay muchas librerías javascript. Como existe gente que crea otra y como hay gente que la estudia. no lo se. Pero lo que si se es que cuando el mundo parecía solucionado con Angular, apareció Rect.js que hizo ruido y si hizo ruido algo tendrá.

React es una librería Javascript de código abierto para crear interfaces de usuario, la idea es que sea una herramienta para las webs single-page  (que en castellano serían las web que se ejecutan en una sola pagina). Es mantenido por Facebook, Instagram y una comunidad de desarrolladores independientes.

React nos ayuda a modificar datos de forma dinámica. Su objetivo es para ser sencillo, declarativo y orientado a componentes. React utiliza el patrón MVC, y puede ser utilizada conjuntamente con otras librerías Javascript como AngularJS.

En otros post voy a seguir hablando de este fabuloso framework.

Dejo link: https://facebook.github.io/react/
y en español: https://github.com/jlobos27/react-espanol

lunes, 11 de enero de 2016

Linux Mint 17.3 "Rosa" ya se encuentra en todos sus sabores



La ditro Linux Mint 17.3 "Rosa" ya se encuentra para descargar tanto para mate como para cinnamo, Xfce y kde.

El sábado se lanzo la versión xfce y kde, completando así todos los saberes de Mint. Si bien no es una versión que traiga muchos cambios, es bueno mantenerse actualizado.

Para la próxima versión mint va a tomar como base Ubuntu 16.04 LTS. Linux Mint 18 con nombre en clave ‘Sarah’ llegará posiblemente hacia finales de mayo o principios de junio. Este va a tener nuevas meta: renovar el aspecto visual del escritorio, que falta le hace.

Los usuarios de Mint estamos agradecidos y esperamos un gran año para la distro.

Dejo link:
http://blog.linuxmint.com/?p=2978
http://blog.linuxmint.com/?p=2977

jueves, 7 de enero de 2016

Swift le gano a Objective-C en el indice TIOBE.



Todos recuerdan el indice TIOBE, es un indice que muestra los lenguajes más usados y en el mes de diciembre Swift paso a Objective-C.

Que tiene de especial esta noticia?

Bueno, es la primera vez que queda claro que el publico esta más interesado en Swift, que en Objective-C y me parece natural. Por lo tanto si queres programar en la plataformas de Apple, ponete a estudiar Swift.

Dejo link:
http://www.infoq.com/news/2016/01/swift-overtakes-objective-c

Ubuntu GNOME 15.10 fue liberado


En el mundo del software libre existen muchas cosas muy buenas, pero Ubuntu y gnome son una joya.Y ahora podemos verlsa juntas.

Ubuntu GNOME trae un nuevo detalles, los cuales se pueden ver en el video:


miércoles, 6 de enero de 2016

Elixir 1.2 se viene con muchas mejoras!!


José Valim ha anunciado la versión 1.2 de Elixir, el lenguaje funcional dinámico que corre en la plataforma Erlang.

Elixir 1.2 trae mejoras, bug fixing y mejoras en la performance y necesita la versión 18 de Erlang o superior.

Entre las mejorar podemos nombrar:
Se agrega nuevas formas para lo aliases/imports/require, ahora podemos hacer multiples alias por ejemplo:  alias MyApp.{Foo, Bar, Baz}
Se agrego nuevo soporte para matas
Además, las variables también se pueden utilizar como patrones con el operador pin.
Elixir v1.2 introduce el operador "with" que permite resolver patter matching de forma más resumida.

Dejo link:
http://elixir-lang.org/blog/2016/01/03/elixir-v1-2-0-released/

martes, 5 de enero de 2016

Los Mejores Proyectos Open Source 2015

Me gustaría compartir un interesante post donde lista los mejores proyectos del 2015, esto de mejor es muy subjetivo. Pero me parece que esta bien.

Los proyectos que a mi entender son muy interesantes:

  • Spark
  • R
  • Blender
  • git
  • Vagrant
Cual falto? A mi entender faltaron muchos por ejemplo: 
  • Unity
  • Akka
  • play
  • Angular
  • etc...
Que opinan? Cual falta?


Dejo link: 


domingo, 3 de enero de 2016

GOA, a Go-based HTTP Microservice Framework


El lenguje de google no se toma respiro y sigue creciendo. Ahora tengo el agrado de presentar a GOA, que es un framework hecho en Go y que permite definir servicios a través de un DSL y luego se genera el código y la documentación.

Veamos un ejemplo:

package design

import (
        . "github.com/raphael/goa/design" // "dot" imports make the DSL easier to read.
        . "github.com/raphael/goa/design/dsl"
)

var _ = API("winecellar", func() { // The API function defines an API given its name.
        Description("The winecellar service API")
        BasePath("/cellar")        // Base path or prefix to all requests.
                                   // Can be overridden in action definitions using an
                                   // absolute path starting with //.
        Host("cellar.goa.design")  // Default API host used by clients and Swagger.
        Scheme("http")             // Supported API URL scheme used by clients and Swagger.
        Scheme("https")            // Scheme("http", "https") works too
})

var _ = Resource("Bottle", func() { // Define the Bottle resource
        DefaultMedia(BottleMedia)   // Default media type used to render the bottle resources
        BasePath("/bottles")        // Gets appended to the API base path

        Action("show", func() {              // Define the show action on the Bottle resource
                Routing(GET("/:bottleID"))   // The relative path to the show endpoint. The full path is
                                             // built concatenating the API and resource base paths with it.
                                             // Uses a wildcard to capture the requested bottle ID.
                                             // Wildcards can start with : to capture a single path segment
                                             // or with * to capture the rest of the path.
                Description("Retrieve bottle with given ID")
                Params(func() {              // Define the request parameters found in the URI (wildcards)
                                             // and the query string.
                        Param(               // Define a single parameter
                                "bottleID",  // Here it corresponds to the path segment captured by :bottleID
                                Integer,     // The JSON type of the parameter
                                "The name of the bottle to retrieve", // An optional description
                        )
                })
                Response(OK)                 // Define a potential response
                Response(NotFound)           // An action may define any number of responses.
                                             // Their content is defined through ResponseTemplates (not shown
                                             // in this simplistic example). Here we use the default response
                                             // templates defined in goa.
        })
})

var BottleMedia = MediaType("application/vnd.goa.example.bottle+json", func() {
        Description("A bottle of wine")
        Attributes(func() {
                Attribute("id", Integer, "ID of bottle") // Attribute defines a single field in
                                                         // the media type data structure given its
                                                         // name, type and description.
                Attribute("href")                        // The default type for attributes is String.
                Attribute("name", String "The bottle  name", func() { // Like with API, Resource and Action an
                                                         // attribute definition may use an anonymous function
                                                         // as last argument to define additional properties.
                        MinLength(1)                     // Here we define validation rules specifying a
                        MaxLength(255)                   // minimum and maximum number of characters in a bottle
                        // name.
                })
                Attribute("color", func() {              // Descriptions are optional.
                        Enum("red", "white", "rose", "yellow", "sparkling") // Possible field values
                })
                Attribute("sweetness", Integer, func() {
                        Minimum(1)                       // Minimum and maximum int field values.
                        Maximum(5)
                })

                View("default", func() {                 // Views are used to render a media type.
                        Attribute("id")                  // A media type can have one or more views
                        Attribute("href")                // and must define the "default" view.
                        Attribute("name")                // The view simply lists the fields to render.
                        Attribute("color")               // It can also specify the view to use to render
                        Attribute("sweetness")           // fields whose type is itself a media type
                                                         // (the "default" view by default). Not used here.
                })
        })
})

Parece cimplejo a simple vista pero pensemos que estamos codificando y documentando un servicio REST.

A la vez este framework se encuentra documentado en Go academy.

Dejo link:
https://blog.gopheracademy.com/advent-2015/goaUntanglingMicroservices/

miércoles, 30 de diciembre de 2015

Feliz navidad y prospero año



Como todos los años quiero desearles feliz navidad y prospero año. Nos seguimos leyendo en le 2016.