The Many Challenges of a (Software) Architect

Software Architecture is a fascinating subject. The objective of a solid architecture for a system is to generate an underlying structure that is separates components in a meaningful way, but at the same time, is flexible to allow the system to grow in capacities and functionalities. That it’s performant, reliable and scalable within the required parameters, but it’s as easy to work with as possible. Even worse than that, the work is to do that at the same time that a myriad of other competing priorities are being done, new functionalities are… Read More

Do not spawn processes on users requests

I’ve been playing recently an online game that has recently launched, that uses the following idea. When a user starts a match, it spawns a process in the server that acts as the opponent, generating the actions against the user. The game had a rough launch, with a lot of problems due it being played by a lot of people. And, IMHO, a lot of the problems can be traced to that idea. I see it’s a seductive one. If a user generates an interaction with the service that takes time (for example, a match for… Read More

Compendium of Wondrous Links vol VIII

More great reads! About code creation It seemed like a good idea at the time. How tech decisions done at some point in time can have a big impact much much later. Unfortunately, this is unavoidable, developing software is based in dealing with imperfect information all the time. Fear Driven Development. Dealing with different languages is difficult in programs (and otherwise). Seven Laws of Sane Personal Computing. Great compilation of Python libraries that deserve to be widely used. Debug like Sherlock Holmes. One of my favourite ways of thinking on debug is: “Once you eliminate the… Read More

Compendium of Wondrous Links vol VII

Here we go again… This time I’m loosely grouping them, it has been a while and there are so many things! The best programming advice I ever got, which actually is about the worst advice, being reverted. The social dynamics of code review. While code review is very useful, is also important to put the stress on the proper parts. As feedback in general, it needs to be constructive and tactful. The Future of Programming. This is an incredible way of giving a presentation, and the best of all, the form adds a lot to… Read More

Respect Driven Development

I think that one of the most overlooked components on any sane company culture is Respect. That’s probably true also for any relationship, also outside work environment, but I think is usually forgotten when nice places to work are described. When I look back about the things that bothered me the most, most of them are related to disrespect, even in relatively minor form. It can be personal disrespect or not respecting the work itself or even the customers. Probably because is something engraved, it’s easy to take for granted when it exists, and… Read More

Agile important bits

There is a lot of Agile talking and I think it has reached a point where it is, if not standard, at least a common way of doing software. But, even if there is a lot talking about Agile methodologies, and companies telling that the are doing Agile, are they really doing it? I’m not so sure. When relating to Agile, I always come back to the source, which is the Agile manifesto. I really like its simplicity. Let me copy it here We are uncovering better ways of developing software by… Read More

Requests per second. A server load reference

As there seems to be a lot of misconceptions about what Big Data, there are also not really a good baseline to know “how much is high load”, specially from the point of view of people with not that much experience in servers. If you have some experience dealing with servers, you will probably know all this. So, just for the sake of convenience, I am going to do some back-of-the-envelope calculations to try to set a few numbers and explain how to calculate how many requests per second a server can hold…. Read More

Rockstar programmer and Rockstar teams

There has been some discussion about the so-called Rockstar Programmer. You know, that awesome engineer (also called 10x engineer) that can produce what 10 other, average engineers can. This post by Scott Hanselman[1] fueled some discussion on Hacker News. What has been overseen about the original post is that he advocates about 10x teams. That resonates a lot, because I think that we should agree that, while there is people with potential to be ninja programmers, that’s not something that can be achieved without the proper care on the environment. A good… Read More

Mis cachivaches para trabajar

Siempre hay un cierto interés por conocer el equipo y programas que otros desarrolladores usan para trabajar. Ya que uso ciertas cosas “raras” (al menos poco frecuentes) y tras escuchar el último podcast de “El amuleto de Yendor”, que comentaban algunos de estos temas (especialmente teclados). Como introducción, me dedico principalmente a programar en Python, así que el entorno está adaptado a eso. Como este post está quedado muy largo, empiezo con el hardware (ordenador, trackball, configuración de teclado y teclados) y continuaremos en otro post con el software. Ordenador Desde hace un… Read More

Think a little about the readers of your web site

This is a translation of a post by Ricardo Galli about some of the lessons he has learned on Menéame, a social news website in Spanish similar to Digg. I wanted to share some of the concepts with my co-workers, but I thought that it could be interesting to translate the complete work and share it with the whole world 😉 Any English errors are my own. I will also like to thank David Brodigan for help me reviewing the English version. Bored of having to wait more than 5 seconds to display a blog’s page? Annoyed… Read More