Entradas

Rust

Hace años que sigo a Rust  [aquí] , un lenguaje de programación promovido por Mozilla. La primera impresión, fue que pecaban de ambiciosos. La segunda también. Mientras tanto, Google ha creado y desarrollado rápidamente otro lenguaje de programación de ámbito muy  similar (Go  [aquí] ). Todo empezó con un proyecto personal de un empleado de Mozilla, que posteriormente fue adoptado por esta empresa. Es un lenguaje nuevo, moderno y espectacular. Algunas características interesantes: Compilación nativa Tipado estático fuerte con inferencia de tipos y tipos genéricos. Casi nada. Multiparadigma, Funcional, imperativo, OOP, concurrente... Inmutable por defecto Tareas ligeras con control de errores independientes Pattern matching Funciones de primera clase Closures Funciones dentro de funciones Pero lo más destacable es: Seguridad Fiabilidad Concurrencia Y es especialmente difícil juntar estas palabras, aunque hay casos de especial éxito...

Etiquetas frecuentes en el blog

Estas son algunas etiquetas que preveo utilizar frecuentemente en las reflexiones de este blog. Educación infantil Conceptos básicos Conceptos escalables Tecnología Lenguajes de programación Genios Software libre Metodologías Procedimientos Efecto xxx Falacias Son independientes (¿es más "cool" y técnico decir ortogonales?) Educación infantil Muchas veces me pregunto qué cosas nos enseñan en el cole. Está bien pruebas de memoria con datos poco prácticos, muchas veces sin sentido y casi siempre inconexos. Pero está bien en una medida pequeña, como ejercicio mental. La memoria es importante, somos nuestra memoria, pero lo que deberíamos aprender es a utilizar datos de la memoria, para entender, razonar y aprender a pensar. Aunque en ocasiones me refiera a conceptos importantes que sorprendentemente y desgraciadamente no hemos aprendido en el cole, en esta etiqueta colocaré también ideas y conceptos que todo educador de niños (padres, profeso...

Lenguaje elixir y José Valim

José Valim es uno de los desarrolladores del core de Ruby on Rails. Ahora también está trabajando en un fascinante proyecto llamado elixir  ( http://elixir-lang.org/ ) y Dynamo Elixir es un fantástico lenguaje de programación para la máquina virtual Erlang. Concurrencia, paralelismo, escalabilidad horizontal, fiabilidad (todo esto gracias a la Erlang VM), interesante sintáxis y metaprogramación (elixir). Con este lenguaje, está construyendo Dynamo. Un prometedor "toolkit" web centrado en la escalabilidad (horizontal, siempre horizontal), rendimiento, fiabilidad, sencillez  (erlang es fantástico para estas tareas, ver  http://www.chicagoboss.org/ ) Déjale a José Valim explicar cómo se montan sistemas potentes, escalables, fiables... José Valim - Let's talk concurrency (Railsberry 2012) EFL Kraków 2012 - Jose Valim http://vimeo.com/12614561 http://vimeo.com/53221562 http://vimeo.com/40440473 Keynote: Writing your own programming language to understand R...

Entrada, salida y estado

Por ser sencillos, solemos olvidar algunos conceptos básicos. Recuerdo que mi tío me explicó qué era un ordenador cuando yo era peque. En aquel entonces eran máquinas poco comunes, desconocidas y misteriosas. Tenía unos cartones con diagramas y dibujos que representaban la idea básica de una computadora. Un ordenador, recibe una entrada, la procesa y genera una salida. Evidente y sencillo. Queda otro detalle vital. La salida, puede no ser resultado de la entrada inmediata. Quizá la salida sea consecuencia de la última entrada y de... algunas anteriores. El estado. Desde una pequeña función o método de un puñado de líneas de código, un módulo, un objeto, closures, componentes, procesos o servicios; hasta los grandes sistemas informáticos de bancos, el CERN, gigantes sistemas con millones de líneas de código... Todos tienen una entrada, una salida y gestionan el estado. El estado es enormemente común, pero no imprescindible. Cuando un proceso computacional realiza s...

Tecnologías divertidas

Lo que más me divierte, es aprender (más incluso que montar en bici). Cualquier tema vale, mientras consiga aprender... Casi de forma continua tenemos oportunidades de aprender cosas. En informática y tecnología, tenemos la oportunidad de aprender muchas cuestiones lógicas, especialmente gracias al software libre . show me some techs Pulsa el botón, y aparecerá una lista, no completa ni exhaustivamente ordenada de las tecnologías que utilizo y con las que me me divierto.

MemSQL

De su página web... http://www.memsql.com/ MemSQL places data into memory and translates SQL into C++ for the utmost optimization in query execution. This enables MemSQL to write and read data at incredible speeds, and by offering a relational interface, you can unify the data you’d normally store in a short-lived medium—cache or key-value store—and place it directly into a database along with your existing data. Get rid of custom code and caches that slow down your engineering teams. MemSQL is the fastest way to ingest large volumes of data while simultaneously analyzing that data in real time. With the power to arrive at answers and actionable insights in seconds, you can adapt and adjust your business processes in concert with fluctuating conditions. by elevating your data into memory MemSQL  is 30x faster than conventional disk-based databases MemSQL  offers a fully relational interface   you can achieve unprecedented speeds previo...

Software libre

Sólo puedo decir cosas muy buenas del software libre. Le debo mucho. Aunque esta entrada sea larga, no es más que una reducida visión del software libre. No hablaré de los tipos de licencias, ni de las 4 libertades, ni de cómo empezó. Sólo algunas observaciones relevantes en el mundo de la empresa y el software libre. He trabajado y utilizado software privativo. Alguno era de gran calidad. También he trabajado con software libre de enorme calidad. Este último modelo, me da más tranquilidad. "Killer applications" No es que tengamos algunos sistemas extraordinarios en el ecosistema del software libre, es que gran parte de las aplicaciones más populares, utilizadas, críticas y vitales, son software libre. GCC El compilador o colección de compiladores. Multitud de lenguajes de programación, multitud de plataformas de hardware, multitud de sistemas operativos... ¿Quién puede rivalizar con este supercompilador? Linux Sistema operativo bastante popular. Utilizado sin ...