Programando una extensión de Google Chrome

Escribir una extensión para cualquier aplicación que lo soporte suele ser tan complicado como detallada sea la documentación que ofrece. En el caso que nos ocupa, Google Chrome, la documentación es bastante completa aunque haya que navegar por distintos negociados de la web de desarrolladores de Chrome para encontrar todas las piezas. Y una de las […]

Be careful what and how you “optimize”

Sometimes we tend to over-engineer our code. Just because we think it will look smarter, or run faster, or be more canon-compliant. Let’s take, for example, this function that gets a value from the server and translates it into a class name to apply to an element. angular.module('widgetTransactionsFilters', []) .filter('transactionType', function() { return function(input) { […]

The toString conundrum

Last week, in the course of a technical job interview I was asked this question: How to make console.log(test.plus(6).minus(4)) return 9. The first part, chaining functions, is trivial. As you (should) know, you just need to return the object in each chainable method. function Counter (numInitial) {       this.counter = numInitial;       […]

Lo que hay debajo

La mayoría de los frameworks modernos utilizan algún tipo de atributo añadido a los elementos para indicar como dibujar o que controlador asignar a dicho elemento. Por ejemplo, en jQueryMobile y en bootstrap se utilizan los atributos “data-“ para indicar roles, estilos, etc.; de la misma manera, en AngularJS se asignan atributos con el prefijo […]

Legacy code is dragging you down

Legacy is, usually, a nice word until you apply it as an adjective to your work. Then it becomes a hideous monster lurking in the shadows behind your compiler waiting to chop off your head. Or the performance of your app. Let’s take an example: an app that uses some library directly ported from C# […]