RSSAmplifier

Blog

Manuel Cerón's Blog

A blog mostly about programming languages, programming in general and free/open source software.

ceronman.comRSS feed ↗77 posts

Latest posts

Ceronman IV

Este blog se ha mudado de nuevo. Esta es la cuarta mudanza. También me di cuenta de que este blog ya cumplió los 21 años (es una pena que se me pasaran los 20). Y sí, es cierto que los últimos años han estado bastante escasos de contenido, pero bueno, el blog todavía respira y no se muere hasta que se muera. Durante la mudanza me dio nostalgia leer muchas de las cosas que he escrito a lo largo de…

Types and self-documenting code in Rust

During the past months, I’ve been lucky to have the chance to write more Rust code for work and also for fun. Rust continues to be an interesting and fun language for me. Not everything is perfect, of course. Today I wanted to write about something that has bothered me since day one. It’s definitely not a huge problem, more like a slight annoyance, but I wanted to write about it anyway because it…

My experience crafting an interpreter with Rust

Last year I finally decided to learn some Rust. The official book by Steve Klabnik and Carol Nichols is excellent, but even after reading it and working on some small code exercises, I felt that I needed more to really understand the language. I wanted to work on a small project to get some hands-on experience, but most of my ideas didn’t feel very well suited for Rust. Then I started reading the…

Is Rust a Functional Language in Disguise?

This is something I’ve been asking myself while learning Rust. Yes, I know that this sounds like a weird question to ask as it’s no secret that Rust has huge influence from the functional programming world. Closures, iterators, pattern matching, algebraic data types; these are features inspired by FP languages, so obviously you can do functional programming with Rust. But that’s not really my…

Perl 6: Giving with One Hand and Taking with the Other

I’ve been programming Perl full-time for almost two years now. The reason is my new job, where 99% of back-end our code base is Perl. Before that, I had not written a single line of Perl, so the language has been a new experience for me. I think Perl is actually better than its reputation. It is pleasant to write most of the time. I also love to see and understand how many cool features in other…

A powerful unused feature of Python: function annotations

Something I’ve always missed when using Python (and dynamically typed languages in general) is nice tooling support. C# and Java have powerful IDEs that can improve your productivity significantly. Some people say that IDEs are a language smell . I disagree, IDEs are a truly valuable tool and the “nice language or IDE” statement is a false dilemma . The problem with dynamically typed languages is…

Aaron Swartz

Ha pasado ya más de un mes desde que Aaron Swartz falleció. Aaron fue un activista que dedicó gran parte de su vida a defender nuestros derechos. Su muerte fue verdaderamente lamentable. Quise hacer un pequeño tributo a Aaron. Decidí traducir y subtitular su emotiva conferencia sobre “How we stopped SOPA” en F2C 2012: La traducción la hice poco a poco en ratos libres. Si alguien encuentra…

Ludum Dare 25

Last week I participated in Ludum Dare , one of the most popular game making competitions out there. The idea is to write a game in 48 hours. You have to create everything in those 48 hours. That includes graphics, sounds and code. This time the theme was “you are the villian”. I tried to participate before but failed to finish something. This time my primary goal was to finish a game, even if it…

Beyond Javascript part 2: Dart and Typescript

I was glad to see the release of Microsoft TypeScript last week. After Google with Dart, it’s nice to see one more big player trying to create new languages for client side web development. I’ve been playing with Dart for a while and TypeScript really impressed me. In terms of syntax, I feel that TS got some bits much better than Dart. Anders Hejlsberg has a true talent for language design. Some…

CoffeeScript: less typing, bad readability

I’ve used CoffeeScript for a few months now. Coming from Python, I felt that CoffeeScript was more concise than Javascript, so I decided to use it for a few small projects. Initially, it was a nice experience, but then I gradually realized that, while writing CoffeeScript code was very pleasant, reading it wasn’t so. I started to notice that it was hard to read my own code a few months later. It…

Beyond Javascript: Coffeescript

During this year I’ve introduced my self into the world of front-end web development. I’ve never been a fan of the web as a development platform, but I have to admit that the web seems to be the unavoidable platform of the future. During my adventures with web development, I had to deal with Javascript, of course. My opinion about this language is not different from almost everyone else’s: It’s a…

Reducing eye strain

Reducing eye strain I usually program for several hours a day. I often end up with eye strain caused by looking at the screen for hours without a break. I’ve been experimenting with different things to see how I can reduce this problem. Here I want to share 4 tips I’ve discovered to reduce eye strain when programming for a long time: 1. Use a color scheme with light background. Dark color schemes…

Nuevo Blog

Este es mi nuevo blog. Es el tercero que empiezo. El primero lo empecé en 2004 y lo cerré en 2006 para mudarme al difunto freaks-unidos.net, donde empecé el segundo. Después de siete años, el sitio cayó y parece que no volverá a levantarse, así que decidí abrir este nuevo blog. Me queda pendiente publicar las antiguas entradas en algún lado. La temática del blog será la misma de siempre, temas de…

Super Mario Bros

Hace unas semanas se celebró el aniversario 25 de Super Mario Bros. Hace unos días, alguien preguntó en StackExchange en qué lenguaje de programación estaba escrito. En Reddit surgieron varios comentarios interesantes : Hi, I am a NES programmer! It is actually not that hard if you grok manual memory management. The 6502 instruction set is simple (but not at all orthogonal) and the NES has a lot…

Humble Indie Bundle

The Humble Indie Bundle es un experimento bien interesante. Varias compañías desarrolladores de videojuegos independientes han decidido vender cinco de sus juegos en un sólo paquete. Lo interesante es los clientes pueden pagar lo que quieran por el pack de cinco juegos. Desde un centavo de dólar hasta el infinito. Además de eso es interesante ver que los juegos no tienen DRM, se pueden descargar…

La Web

En estos días hubo una discusión en el blog de Sergio sobre la web. Sergio escribió por qué le gusta la web. Yo iba a responder ahí, pero lo que escribí se me alargó y además quería revivir el blog, así que decidí publicarlo aquí. Primero voy a dar una descripción de lo que, a mi juicio, es la historia de la web. Esto no está precisamente en orden cronológico y puede tener errores si mi memoria ha…

Optimizing a Python Program

These days, I’ve been optimizing a Python program I wrote. Optimizing is a fun task, but very difficult. Most of the time, the first solution I think is even worse than the previous situation. I need more experience. Some processes were too slow in my program and I realized it was because I was performing too much disk I/O operations. I thought a solution could be read more data in memory and…

Summer of Code: Lunar Eclipse Final Report

I had a lot of fun participating in the Google Summer of Code. As I said before, I worked improving Lunar Eclipse, an open source visual designer for Silverlight/Moonlight. This is what I achieved during the summer: Tools & Handle Support : I worked on editing support for the following Silverlight Elements: Circle, Ellipse, Rectangle and Square: These are the basic boxed shapes. Previous…

Python vs C#: Queries

One of the most beloved C# 3.0 features is Linq. Linq brings great power to C#, it allows you to easily write structured queries over collections or remote data sources. Now with C# is possible to make queries as easy as with other languages like Python. I decided to compare the way you make queries with C# and with Python. I found a great page showing 101 Linq examples, I decided to write Python…

Segunda Guadec

A menos que algo extraordinario ocurra, este año asistiré por segunda vez a GUADEC. La primera vez, en Birmingham, la pasé muy bien. Esta vez será en Estambul, lugar que, según he escuchado, es uno de los más bellos en el mundo. Estoy muy emocionado por este viaje. Muchas gracias a la Fundación GNOME por patrocinar gran parte de mis gastos.

Summer of Code

I’m participating in the Google’s Summer of Code of this year! I was selected for the Mono Project. I’m going to work on a Visual XAML Editor for Moonlight called Lunar Eclipse. LE was started months ago Alan McGovern (from MonoTorrent). My work is to improve it and make it shine!. My mentor is the famous Miguel de Icaza This is going to be a hell of a fun summer!

Distributed Version Control

Actualmente se está dando una avalancha de migraciones desde sistemas de control de versiones centralizados ( Subversion ) hacia sistemas distribuidos. Prácticamente todos los grandes proyectos de software libre o ya migraron o están en discusiones sobre la migración o están usando sistemas paralelos. A diferencia de lo que sucedió con Subversion, donde también hubo una avalancha de migraciones…

PyBotLearn

PyWeek is finished. Unfortunately, I didn’t have enough time for it this year, so I’m almost a DNF. The theme for this year was Robot . My idea ended up being more like an application than a game. I wanted to create an educational environment for teaching programing to children. Something similar to Logo. The idea was to build a game where your could program a small robot. It should be interactive…

Effective Text Editing

I saw the video 7 Habits For Effective Text Editing 2.0 that arhuaco recommended months ago. I was tempted to start learning Vim, but after thinking for a while, I came to the conclusion that there is no good reason for learning Vim. I still don’t get why people likes Vim that much. Most of the features that Bram Mooleenar showed in the video have been present in other tools for years and, in my…

Involúcrate+GNOME

Last week I went to Lima (Perú) to attend Involucrate+GNOME . I really had a good time. Special Thanks to Diego , who invited me. Of course, I’ve got everything what I’ve seen in peruvian tv for years and never had the opportunity to taste. Inca-Cola, Chicha Morada, Cremolada, etc. I also verified that no one can eat a Margarita cookie as a normal cookie, leafs must be eaten first 😛 Photo Stolen…

Game bits

Making an Indie MMO I found the video of Daniel James ‘s presentation for the Game Developers Conference Independant Game Summit. Very interesting. I’m impressed to see how Puzzle Pirates was made by only six people. There are also various interesting tips for MMO developers out there. Igda scholarships Igda will award 25 scholarships for the Game Developer Conference 2007. It will be in San…

PyWeek Ended

PyWeek is over. It was absolutelly fun!. My final entry is not what I would call a finished product, but it’s not bad. A couple of hours before the challenge end, the pyweek.org server went down. We had to send a md5 sum of our final entries to one of the event’s coordinators via e-mail. Screenshot of my game: My code and a log of my progress in PyWeek Entry Page .

PyWeek

Tomorrow, I’m going to participate in the fifth edition of PyWeek . PyWeek is a challenge in which participants must develop a video game in one week using Python . I like the idea because it brings a possibility to finish a project and have some fun by the way. Some of the games created during PyWeek are really awesome. It’s amazing the fact that they were made in only one week. My favorite games…

Vala

These days, a lot of people on GNOME planet are talking about Vala , a new programming language aimed to facilitate the development of applications and libraries for the GNOME platform. Vala is very similar to C#, but what is interesting about it, is that it’s perfectly integrated with the Glib/GObject object system. The compiler translates the Vala source code into C. It uses GObject to…

Dolor de cabeza con Python

Un problema de usar lenguajes dinámicos es que, al no tener etapa de compilación, no es posible detectar muchos de los errores sino hasta que se lanza alguna excepción mientras el programa se ejecuta. Un problema peor es cuando por alguna razón el error no produce una excepción y el programa termina funcionando erróneamente si dar ninguna pista sobre dónde puede estar el problema. Examinen este…

Scratch

Quedé impresionado con Scratch , el nuevo lenguaje para introducir a los niños en la programación desarrollado por el MIT Media Lab. Lo bueno es que es libre (Licencia MIT), aunque sólo está para Mac y Windows, pero dicen que ya lo están portando para el X0 del proyecto OLPC. ¡Que bacano sería ser niño y tener este juguete!

Mas rápido, pero mas lento

En estas vacaciones de diciembre, fui a visitar a mi familia en Medellín. Mi tía Patricia tenía un viejo computador portátil Toshiba Satellite Pro 440 CDT que ya no usaba y decidió regalárselo a mi Papá. Es un portátil que ya tiene sus 11 años, pero, dado que mi papá escasamente usa el PC para leer y escribir correos electrónicos, navegar por Internet y de vez en cuando escribir una carta, le…

MonoHotDraw

Por estos dias estoy programando MonoHotDraw, que es el séptimo intento por hacer una librería de diagramación para MonoUML . Se llama MonoHotDraw porque está basado en el diseño de HotDraw y JHotDraw . MonoHotDraw está escrito en C# con Mono y usa varias herramientas de Gnome : Gtk , Cairo , Pango , etc. Aquí hay un video de una aplicación que estoy escribiendo para una tarea de universidad que…

El tercer puesto

Este artículo me encantó. Algunas citas: And while it’s true that in many industries there is a correlation between market share and profitability, one doesn’t necessarily lead to the other. A recent survey of the evidence on market share by J. Scott Armstrong and Kesten C. Green found that companies that adopt what they call “competitor-oriented objectives” actually end up hurting their own…

Error en Mono

Hoy, mientras trabajaba en MonoCanvas, estaba husmeando en el código de Mono , cuando por casualidad me di cuenta de un error que, al parecer, nadie había notado. El operador de inequidad != entre dos objetos del tipo System.Drawing.RectangleF estaba implementado de esta forma: public static bool operator ! = (RectangleF r1 , RectangleF r2 ) { return ( r1 . X != r2 . X ) && ( r1 . Y != r2 . Y ) &&…

DebConf8 en Colombia

No soy adepto de ninguna distribución de Linux. Generalmente me gusta saltar de una en una buscando las cosas buenas y las cosas malas de cada una. Por supuesto que también he probado Debian. Muchas veces me gusta quejarme de los innumerables defectos de Debian, aunque más que todo es sólo para molestar a Santago , Alerios y otros debianitas. En las pasadas Jornadas de Software Libre, durante el…

De vuelta a la vida

Después de mucho tiempo, vuelvo a la vida. Hace más de tres semanas mi PC se quemó. Un transformador de energía cerca de mi casa explotó y causo una gran descarga de energía que fue lo que causó el daño. El análisis post-mortem me dice que las cosas pasaron así: Una fuerte corriente eléctrica entró por las líneas de la energía, sin embargo, mi regulador de voltaje hizo su trabajo correctamente,…

El Efecto Evento de Software Libre

El otro día, discutiendo en el canal #gluc de freenode, decíamos que la comunidad del software libre tiene un comportamiento bastante peculiar y que los eventos de software libre generan un impacto más allá de lo que normalmente se podría pensar. El canal del gluc originalmente fué un canal sólo para el GLUC, pero últimamente se ha convertido en uno de los canales más populares de la comunidad del…

Jornadas de Software Libre

Qué montón de tiempo sin escribir. Después de llegar de Medellín, en dónde la pasé de maravilla, llegué a comenzar clases y terminar de ayudar en la organización de las Jornadas de Software Libre aquí en Popayán. Las JSL terminaron ayer y debo decir que todo salió muy bien. El evento estuvo bacanísimo. Vino gente de muchas partes del País: Bogotá, Medellín, Cali, Pereira, Pasto, Bucaramanga, entre…

Tres meses, tres eventos

Estos meses que vienen van a estar llenos de eventos en la comunidad del Software Libre en Colombia. Entre el 18 y 21 de Agosto son las Jornadas de Software Libre aquí en Popayán. Creo que el evento va a estar bien bacano, varias personas van a asistir y van a haber actividades diferentes a las conferencias que lo van a hacer muy interesante. Algunos piensan hacer una mini-debconf, otros han…

Elephants Dream

En estos días me bajé Elephants Dream , también conocido como el Proyecto Orange . Elephants Dream es un cortometraje de animación 3D realizado exclusivamente con software libre. Blender es la principal herramienta utilizada, pero también se necesitaron otras utilidades como GIMP , Inkscape y CinePaint . Elephants Dream ha sido financiado por la Fundación Blender y el Netherlands Media Art…

Modificando Gaim

Uso Gaim para manejar todas mis conversaciones de mensajería instantánea. Me gusta tener todas las conversaciones en la misma ventana, no importa de qué red sea. Gaim me permite tener mis conversaciones de IRC, MSN, Yahoo y Google en la misma ventana. Sin embargo, hay algo que siempre me ha molestado de usar Gaim como cliente de IRC: No se puede ver en la lista de usuarios quién está ausente o…

El Canvas más rápido del oeste

Esta semana Mario y yo hemos estado trabajado para optimizar al máximo MonoCanvas . La idea es lograr un rendimiento similar a Dia . Creo que hasta el momento se ha avanzado bastante. Yo he estado portando lo que ya estaba de GDI+ a Cairo directamente. Mario está haciendo una re-implementacion usando widgets de Gtk#. Lo interesante de este enfoque es que se aprovecha toda la lógica, ya bastante…

Edición de Vídeo Digital en Linux

Estoy adentrándome en la edición de vídeo digital con Linux y software de código abierto. Hasta ahora la experiencia no ha sido la mejor. A Linux le falta bastante para convertirse en una plataforma decente para edición de vídeo digital. Sin embargo, el futuro pinta bien, al menos se ve que hay trabajo en la dirección correcta. Hasta ahora he hecho pocas pruebas de edición de vídeo con Linux. El…

JDK 6 (Mustang) GTK+ Look and Feel

Durante estos días decidí probar la versión beta de Java 1.6 , apodada “Mustang”. Según había leído por aquí y por allá , esta nueva versión traerá varias mejoras en cuestión de las interfaces gráficas Swing. La idea es que Swing tenga una apariencia más parecida a las interfaces nativas dependiendo del sistema operativo en el que se estén ejecutando. Me gusta mucho esta idea, y desde el principio…

Fedora, Aiglx y Xgl

Hace unos días escribía sobre los pros y los contras de Ubuntu y Fedora. Bien, creo que ahora tengo un nuevo punto a favor y también en contra de Fedora. Una de las cosas que más me atrajo a Fedora desde el principio, fue que es una distro que siempre está probando cosas nuevas e interesantes, siempre está bleeding the edge . Una de las cosas que destaco del Proyecto Fedora es proyectos como…

Herramientas para Python

Por estos días que he estado trabajando bastante en DeStar , estuve buscando algún buen IDE para programar en Python . Hasta ahora he estado programando con JEdit , un excelente editor de textos que poco tiene que envidiarle a Emacs o Vim y que es muy fácil de usar. La combinación de JEdit con gnome-terminal , Pdb y PyLint es bastante cómoda, sin embargo, quería probar algo un poco más integrado,…

Detesto los paquetes – Parte 2

Definitivamente creo que la forma en que se están manejando los paquetes de software en las distribuciones de Linux es uno de los más grandes problemas que tiene la adopción del Software Libre en el escritorio. Y cuando hablo de las distribuciones de Linux hablo de todas, incluyendo Debian y Gentoo que se jactan de tener los mejores sistemas de paquetes. Me molesta que cada distribución tenga un…

Revelando

Hace unas semanas me inscribí en un curso de fotografía que estaba dando el Foto Club de la Universidad . Desde hacía varios semestres quería inscribirme en el curso, pero no había tenido tiempo, este semestre tampoco tenía, así que me tocó decidirme e inscribirme como sea, ya que de otra forma nunca lo iba a hacer. En fin, el curso es a la antigua, con cámaras analógicas manuales, yo he estado…

Desocupandose un poco

Llevo bastantes días sin escribir nada. La verdad es que los últimos meses han estado bastante ocupado, por un lado estoy viendo varias materias en la universidad , de la cuales dos son especialmente consumidoras de tiempo: Telecomunicaciones 1 y Electrónica 1. Telecomunicaciones me quita tiempo porque el curso es básicamente el mismo que CCNA 1 y 2 que dan en la Academia Cisco , la cuestión es…