• Author: guille
  • Published: Oct 30th, 2006
  • Comments: 3

How my server works?

rackserverAfter much reading, thinking, testing and looping all over again, I am arriving to an architecture that seems to work pretty well for my needs. Those needs are a personal server to host a few personal and test websites and support the basic needs of a geeky household: mail server, web server, DNS, music server, backup server,…

I was looking for a solution that would give me flexibility for future upgradings and maximum security. As I was not sure about how many servers I would have at my disposal (they are limited by my income and my girl-friend comments) it would have to be flexible with hardware needs. Those included the processor and RAM limits but also the hard drive limits.

After much though, I went to a Linux-VServer solution. This means I took an Ubuntu server distribution and added a VServer kernel. This allows me to
create as many virtual servers as I feel the need to, thus effectively isolating one server from the other and increasing security and mobility. 

On top of that I went for an LVM2 formatted partition. With that I’m able to add an unlimited number of hard drives and resize the different partition sizes as I whish and need.

The advantages of this architecture are many:

  • Need a bit more for logs keeping? No worries, just resize.
  • What about this backup server that is missing some disk space? Buy a 200Gb hard drive, plug it in and give an extra 50Gb for backups.
  • Is your server getting a bit old? Buy a new one, and move the more resource demanding virtual servers to the new one, leaving some on the old server (virtual servers are just too easy to move around).

The first difficult decision I had to make was which one of the many virtualization solutions to choose. There is indeed VMware, Xen, Virtuozzo and many others I have forgotten now besides the VServer project. My needs were simple: I needed something aimed at the X86 that gave me Linux virtualization and minimum overhead. After studying the different options, I left aside the more hardware-expensive but famous packages like VMware and Xen for something that offered a Linux only virtualization. Linux-VServer shares the same kernel among all instances, while allowing the installation of different Linux-only distributions. For my needs it was just perfect.

Then came the more network-design specific questions.

I started to distribute IP addresses among servers depending of their role:

  • 192.168.1.1-9: Those IPs are for proper hardware. my router and my different servers (the ones you can touch :-) ) are all under this range.
  • 192.168.1.10-19: I keep here all my virtual servers.
  • 192.168.1.20-29: I have under those IPs my test servers. When I want to play with an idea, test a new tool or a new concept, I just create a new server and implement it.
  • 192.168.1.30-39: And finally, all my personal computers are here (laptops mainly).

I decided to separate as much as possible the tasks. So I created the following servers:

  • Bind, DynDNS and DHCP: The DNS server is for LAN use, and the DynDNS allows me to update the different domains I have (3 at the moment). The DHCP server is there for my personal laptops, allowing me to have ‘pseudo’-static IP addresses, while allowing friends when necessary.
  • Apache: Is where I run my websites.
  • SVN: All my different svn repositories are here. Each time I start a new project or I have a new client, I make a new one. This allows me to have a cleanly differentiated development cycle for each project.
  • Music: where I use a daapd server to, well, serve my music inside my LAN.
  • Mail: that will host the SMTP server, as well as the POP and IMAP servers. Not implemented yet.
  • Database: MySQL server is running here, as will PostgreSQL and other databases if needed at any moment. I haven’t decided yet where the pgpmyadmin will run though.
  • Backups: My different computers need backup, and a lot of space!

And that’s it right now.

Of course this schema can accept some improvements. For example, right now all the web sites are on the same virtual server, but I intend in the future to install each server in a different CServer instance. As my router has limited NAT capabilities I will need to install a reverse proxy in one of the servers. This will imply that I will have to create an IP range specifically for the different web servers (maybe the 192.168.1.40-49 range?).

Furthermore, so many VServers imply, no matter how little overhead VServer has, a lot of RAM. As my sites run mainly under Django, I will have to find a lighter web server, maybe lighttpd.

My backup server could perfectly accept a more automatic backup strategy. I am fond of a pull backup where the client would not have to think about anything, but it is very difficult to implement. I am looking at flexbackup and seems to be attractive indeed!

To complete this backup strategy, I am loking for a friend that will accept a “backup exchange”. Right now, I do backup the files of my server into an external hard drive. But this is not good enough. With an exchange, I could do a complete backup of my files in a different geographic place, thus minimizing the chance of data loss due to an accident at my home (fire, thief,…), though I think I will not be able to think about that in such moments :-)

Did I over-engineer it? Did I make the right choices? Will it be as easy to migrate as I hope? Only time will tell if I am right or wrong.

Update (31 Dec 2006): My network has changed a bit. I have added a reverse proxy, Nginx.

  • Author: guille
  • Published: Oct 26th, 2006
  • Comments: 4

Adrián’s graduation

adrianYesterday was Adrián’s graduation day. Adrián is my only brother. Not so long ago he was 1m tall and now he’s graduating…

He has studied in the Imperial College, the first generation of biomedical engineers, and quickly understood that it is better to be the boss. And to be the boss, you need to have an economy degree. So he went to the London School of Economics. It is stupid, but such is life :-)

So, of course, I took the opportunity to be with him. And I hope he appreciated it! Because a graduation day in London is far from a resting situation.

First you have to get there. From Madrid it’s almost 3 hours of plane. Plus one hour to get from the airport, another hour to get to London and the 1/2 hour you must be in advance. That’s right, it’s a total of 5h30. 11h both ways. If you add to this that we arrived Tuesday night and left Wednesday afternoon, it makes for a hard day.

Afterwords comes the preparation. The suit, and the graduate dress. Because you must be a pommy to accept to be dressed like that. It’s a bit like getting out from the bath.

And finally the ceremony. You pay £20 to hear how cool their university is, how lucky they are to be from there, and hear for 2 hours some 1000 names in a row, of which only 2 or 3 are meaningful to you, and 1 important.

Thankfully, there is usually only one or two graduation’s in each person’s life. I myself only had one, and had the good fortune not to be able to attend mine (I was some 15.000 km away).

So, my general feelings? The graduation was deadly boring, but the fact of seeing my brother so happy and being able to reunify the family for a day made the trip largely worth it.

Adrián, felicidades!

Update: Some photos of the event can be found here.

  • Author: guille
  • Published: Oct 21st, 2006
  • Comments: 16

Comment and Karma functions in the Django framework

karma_Someone contacted me concerning a previous post I did on this blog. He could not make work the karma part, and had some strange errors.

My problem was, I did not actually implement anything of what I wrote about, so I took the code of my blog and started modifying it. And I made it work.

The first thing I did was to make the comments work. This was surprisingly easy. If you managed to make FreeComment work, for example by following this tutorial , then you only have to change a few lines. To make things easier, I will change the code of this tutorial so we work over a common and known ground:

  • I suppose that your FreeComment work, so you don’t have to update your urls.py nor the settings.py.
  • Change all lines with the word free and take it out. So, get_free_comment_list becomes get_comment_list and get_free_comment_count would becomes get_comment_count.
  • Copy&paste the freeform.html to form.html and free_preview.html to preview.html.
  • Edit the preview.html and change the following parts:
    • <form action=”../postfree/” method=”post”> becomes <form action=”../post/” method=”post”>.
    • Remove any reference to comment.person_name. Comments are posted by known users and do not need a person_name field. Thus, delete the lines:
      • Posted by {{ comment.person_name }}
      • <p><label for=”id_person_name”>Your name:</label> {{ comment_form.person_name }}</p> {% if comment_form.person_name.errors %}{{ comment_form.person_name.html_error_list }}{% endif %}
  • Edit the form.html and change the following parts:
    • <form action=”/comments/postfree/” method=”post”> becomes <form action=”/comments/post/” method=”post”>.
    • Remove <label for=”id_person_name”>Your name:</label> {{ comment_form.person_name }}

And that’s all. Congratulations, you are the happy owner of a Comment blog/gallery/whatever!

Of course, you can further improve this. You can add a title to the comments, the IP they came from, the time they where done, know if they are public, or if they should be removed… have a look at the Comment model to know more about the possibilities.

Now, we are getting to the problem our friend had. How to make the Karma work in Django?

Again, Django surprises me by how simple it is to use. There is a few steps for doing this.

First, create the /comments/karma_vote_accepted.html template. This will have a message saying (oh! surprise!) that the karma vote has been accepted :-)

Something like this should do:

{% extends "base_site.html" %}

{% block content %}
  <div id="wide">
    Your karma's vote for {{ comment.person_name }}'s comment has been accepted.
  </div>
{% endblock %}
Then, we will add the voting URLs to our code. We want to put it in the same place the comments of a given object are displayed:
{% get_free_comment_list for blog.entry object.id as comment_list %}

<h2 id="comments">Comments</h2>
{% for comment in comment_list %}
  <div class="comment_{% cycle odd,even %}" id="c{{ comment.id }}">
    <span class="comnum"><a id="c{{ comment.id }}" href="http://www.guindilla.eu/admin/blog/post/comment-and-karma-functions-django-framework/#c{{ comment.id }}">#{{ forloop.counter }}</a></span>
    <p><b>{{ comment.person_name }}</b> commented, on {{ comment.submit_date|date:"F j, Y" }} at {{ comment.submit_date|date:"P" }}:</p>
    {{ comment.comment|escape|urlizetrunc:40|linebreaks }}
    <p><a href="/comments/karma/vote/{{ comment.id }}/up/">Give karma</a> or <a href="/comments/karma/vote/{{ comment.id }}/down/">take karma</a>.</p>
  </div>
{% endfor %}

That’s it. But let’s make it better. Now we are going to display the total amount of karma for a comment, with how many positive and negative karma each comment has. Again, it’s a one-line solution:

    {{ comment.comment|escape|urlizetrunc:40|linebreaks }}
    <p>This comment has {{ comment.get_karma_total }} points of karma, {{ comment.get_good_karma_total }} positive and {{ comment.get_bad_karma_total }} negative.</p>
    <p><a href="/comments/karma/vote/{{ comment.id }}/up/">Give karma</a> or <a href="/comments/karma/vote/{{ comment.id }}/down/">take karma</a>.</p>

So now it should work. Launch the web server, try it… and it doesn’t. I got an ‘KarmaScoreManager’ object has no attribute ‘objects’ error.

There are indeed a few bugs in the code. Right now, I have sent a message to the django-developers community to confirm if those are really bugs or a misunderstanding of the code. The facts are, I have tested the patch, Tim Baxter has tested it as well (thanks!!) and it seems to work for us.

So, here is the patch:

Index: contrib/comments/models.py

===================================================================

--- contrib/comments/models.py	(revision 3910)

+++ contrib/comments/models.py	(working copy)

@@ -133,7 +133,7 @@

     def _fill_karma_cache(self):
         "Helper function that populates good/bad karma caches"
         good, bad = 0, 0
-        for k in self.karmascore_set:
+        for k in self.karmascore_set.all():
             if k.score == -1:
                 bad +=1
             elif k.score == 1:
@@ -151,9 +151,8 @@

         return self._karma_total_bad

     def get_karma_total(self):
-        if not hasattr(self, "_karma_total_good") or not hasattr(self, "_karma_total_bad"):
-            self._fill_karma_cache()
-        return self._karma_total_good + self._karma_total_bad
+        self._fill_karma_cache()
+        return self._karma_total_good - self._karma_total_bad

     def get_as_text(self):
         return _('Posted by %(user)s at %(date)s\n\n%(comment)s\n\nhttp://%(domain)s%(url)s') % \
@@ -209,7 +208,7 @@

 class KarmaScoreManager(models.Manager):
     def vote(self, user_id, comment_id, score):
         try:
-            karma = self.objects.get(comment__pk=comment_id, user__pk=user_id)
+            karma = self.get(comment__pk=comment_id, user__pk=user_id)
         except self.model.DoesNotExist:
             karma = self.model(None, user_id=user_id, comment_id=comment_id, score=score, scored_date=datetime.datetime.now())
             karma.save()

With this patch applied, you should have no problems giving karma to any comment of your site.

Now comes the big question: If you did it, why is it not in your site? Well… simply because I do not have enough traffic (yet?) to make it worth :-)

Enjoy!

Update 23 Oct 2006:

A conceptual problem peopl
e might have:

Each user can have one and only one vote per comment.

So, if the karma is 0 and you make a positive vote, the result will be 1.
But then, if you change your vote to -1, well, the total will be -1 :-)
Indeed, if you vote with the same user, the comment will not have 2
votes, 1 and -1. But only one vote, either the 1 or the -1.

If we try to give one positive and one negative karma votes with different
users, we’ll (hopefully…) see that the result is zero.

  • Author: guille
  • Published: Oct 18th, 2006
  • Comments: 45

Comer japonés en Madrid

sushiPara todos los amantes de la comida japonesa en Madrid, he conseguido encontrar unas buenas direcciones de restaurantes japoneses en Madrid. Direcciones de calidad y autenticidad.

Bueno, seamos sinceros… me los ha dado un japonés. Es el hijo de un antiguo embajador de Japón en España, luego se supone que sabe de lo que habla y que ha tenido ocasión de probar varios.

Pero lo que realmente nos interesa, o al menos a mí, que formo parte de la famosa generación de los mil-euristas. Se puede comer por menos de 20€!!

Porque claro, está el Ginza, pero a 30€ se sale un poco del presupuesto. Sobre todo teniendo en cuenta que la última vez que fui, a la camarera no se le ocurrió otra cosa que empezar a criticar el arroz español. En japonés, eso sí. La cara que puso cuando la puse en su sitio. En japonés, naturalmente :-)

Bueno, a lo que vamos, que aquí las tenéis, para vuestro placer y disfrute:

  • Janatomo
    Reina 27, 28004 Madrid
    915 215 566
    05/11/2006: El restaurante es muy estiloso, aunque no muy japonés. Nos atendieron relativamente bién y la comida estuvo muy buena. Hay un menu japonés que no está nada mal por 42€… para dos personas. Tienen además una amplia gama de comida japonesa para los que quieran alejarse de los típicos sushis. Lo recomiendo.
  • Naomi
    Ávila 14, 28020 Madrid
    915 722 304
  • Daikichi
    Reina 31, 28004 Madrid
    91 522 2051
    05/11/2006: Fuimos con unos amigos a este restaurante hoy. No solamente no se acordaban de mi reserva (!) sino que el restaurante no tenía muy buena pinta. Olía a fritura y la decoración dejaba un poco que desear. Además el menu era bastante caro (39€ por persona), aunque el domingo hacen 30% de descuento en la factura final. Finalmente nos fuimos a Janatomo.
    18/08/2007: Finalmente le dimos otra oportunidad, y he de decir que esta vez no tuvo color. No sé si porque fuimos con mi mujer que es japonesa, o porque era época baja. La atención fue buena, la comida de calidad, el umeshu de miedo, y el sitio muy agradable y sin olores. Casi gustó más que el Janatomo.

A consumir sin moderación!

Puesta al día, 20/10/2006:

Naturalmente, en cuanto publico algo, me quitan la exclusividad.

Justo hoy ha salido en el diario ADN de Madrid, en la página 6, direcciones sobre los mejores sitios para comer sushis de Madrid.

Naturalmente, nadamos en el estereotipo. Si quereis comer japonés puedo pensar en veinte platos más variados y originales que el chuchi. En efecto, y para los que no se hayan enterado todavía, los japoneses casi no comen sushis, y menos los que nosotros conocemos. ¿Por qué los europeos nos empeñamos en comer sushis? Pues no lo sé…

En fín, que aquí van las direcciones:

  • Sushi-Bar
    La Salud 19, 28013 Madrid
    Menú:11-18€
    Carta: 35€
  • Kabuki
    Av. Presidente Carmona 2, 28024 Madrid
    Carta: 50-60€
  • Sushi-Olé
    Francisco Silvela 71, 28002 Madrid
    Menú:10€
    Carta: 20-30€
  • Donzoko
    Echegaray 3, 28004 Madrid
    Menú:9,5-19€
    Carta: 15-25€
  • Ginza
    Plaza de las Cortes 3, 28014 Madrid
    Menú:14-18€
    Carta: 36€

El único que he probado de estos últimos es el Ginza. Es un buén restaurante, que tiene la ventaja de tener no solamente sushis, sino además una multitud de platos de grán calidad. Aunque, como siempre, la calidad se paga :-)

Puesta al día, 19/11/2006:

Otro restaurante japonés para probar. La decoración parece surealista, pero parece ser que la comida es buena y el precio razonable. En cualquier caso, su página web merece la pena de ser visitada, aunque todavía solo haya la página de inicio.

  • Author: guille
  • Published: Oct 17th, 2006
  • Comments: None

Distribuciones Linux en España, un problema o una ventaja?

penguinEn mi trabajo tengo un punto de vista privilegiado sobre las diferentes actuaciones de las Administraciones con respecto al software libre. Así, miro con admiración los esfuerzos que está haciendo Extremadura por la alfabetización digital.

Sin embargo, dentro del programa de Ciudades Digitales solamente, hay no menos de 3 distribuciones: Tirwal, LinuxGlobal y Daestradix. Eso sin contar con las que se me olvidan, y las muchas distribuciones de universidades, comunidades autónomas y otras entidades.

Algunas personas piensan que eso es bueno. Y puede que lo sea, al menos desde un punto de vista técnico. Personalmente pienso que muchas de esas distribuciones son innecesarias.

En efecto, la variedad es buena, pero ¿hasta que punto? Elegir entre KDEy Gnome está bien. Pero entre 10 o más distribuciones, cual elegir?

A menudo la respuesta más sencilla es “la de tu amigo”. Pero para muchos novatos tanta variedad puede llegar a ser aplastante. Sobre todo cuando muchas se parecen tanto.

En efecto, finalmente todas estas distribuciones fraccionan el mercado y el esfuerzo. Porque, entre nosotros, ¿cuantas personas habrán instalado realmente el Linux de Cantabria? ¿O el de Carlos III? O vallamos más allá, ¿cuantas personas habrán oído hablar de ellas? No sería más eficaz reciclar todas estas distribuciones menores en una distribución española, tal vez con más sabores, pero en un único formato?

Se podría optimizar así no solamente el esfuerzo humano invertido en la creación, sino el impacto de las opiniones de los usuarios (bugs, utilizabilidad,…). Y, finalmente, el dinero del contribuyente.

  • Author: guille
  • Published: Oct 16th, 2006
  • Comments: 2

New business model in Internet

businessI have a friend that is trying to convince me to create something on Internet with him. Anything. But quickly. He has seen the trajectory of the YouTube and he wants to mimic it. He has proposed me many different things. Selling disk space like Amazon does, products, and many many other things.

The problem is, we are both still at the beginning of our careers, have both a job, steady but very limited income, and not much time. Let’s say it would be much more of a side-job, or hobby,  than a real start-up. Thus, nor he nor me wants to invest too much money nor take too many risks.

This has led me to think about the different business models in Internet. There are three main categories of products someone can sell:

  1. Goods: Books, CDs, photo printings,… anything that can be sold can be also found on the Internet. Although they are usually an on-line extension of an already existing company, more and more can be found to e on-line only. Examples are Amazon , El Corte Ingles or Lego. One of the drawbacks they have is the need of an important infrastructure for storage, handling, sending… It is easy to do it for companies that are already on that market, but it is more difficult for a newcomer to create a niche without important investment at the beginning. Another one is that it is hard to extend. Want to sell internationally? You need bigger infrastructures, more people,…
  2. Expertise: Can take the form of consulting, freelance work,… Easy to sell, needs minimum resources, it is ideal for individuals that want to start little and medium companies without an important investment. Indeed, the only thing you need is… well, experience and know-how. And often a computer :-) Their drawbacks are, they take more time to develop and are also limited in scope and scalability. Indeed, freelance often works with word-of-mouth, and it is often difficult to attain the critical mass needed to be able to make a living. The same way, if the grow is important enough, new people will be needed, implying contracts, salary, obligations, and the search of really competent people.
  3. Services: Services are probably one of the largest groups in the Internet Economy. In an intangible world as the Internet, intangible goods are in their environment. Those services can be search engines , dating services, information medias, and any other people find useful. Of course, what people find useful changes with time, trends and technology. In order to create a service, you need expertise and, more important, a niche. Because of their intangible characteristic (often enough they simply run on a server farm) they are very scalable if well though. Probably the most profitable, they are also the hardest to create revenue from. There is two main models in this service environment:
    • Paid services: Pay per use, per subscription, per unit… incomes are mainly from the end user. Of course, the end user can be individuals, companies,…
    • Free services: As it’s name implies it, the user does not pay anything for the service. Other financing procedures must be found. Those can be sponsors, redirecting links, or advertising.

Another important point to be made is the difference between an online company and a company with an online presence. This is one of the most common mistakes. Some companies see their Internet page (or on-line shop) as an extension of their actual business. It is ok, as long as you know you are doing it.

This can be seen among other places in the publishing companies, like newspapers. It is often evident that some newspapers were overwhelmed by the on-line news trend and simply put on their web site their paper edition news. In other cases, paper and on-line versions, although taking their news from the same sources, have independent editorials, each version having a life of their own. Finally, a trend that is appearing little by little in newspapers like the Lawrence Journal-World, where news are first published on-line, commented by the readers, and then the best of them are moved to the paper edition, with any comment that might have been insightful. Indeed, we are facing a complete change of the edition process.

  • Author: guille
  • Published: Oct 14th, 2006
  • Comments: None

Let’s burn some calories!

envigaA cooperation between Nestlé and Coca-Cola has just released Enviga. This marvelous drink helps to eliminate calories. The wonder of technology strikes again!

And how much will it burn? Well… 50 to 100! Yeah, but wait… only if you drink 3 bottles of it.  Some 900ml.

So, to make it clear. Spend the 4 bucks (some 3,2€), and loose as many calories as… the calories contained in between 0,1 and 0,16 hamburger, 1 egg or half a cola. Or, in a more recreational way, the equivalent of 1/2 hour of wild sex.

Sometimes, quantities must be taken with care. Indeed, apples contain cyanide! But will you stop eating them?

The real problem comes from the concept, more and more developed among our society, of the zero-effort slimming theories. First of all, nothing is for free. You pay it in one way or another. Money, health, sweat or effort, to get slim has a price. And usually it’s not money.

And let’s not forget that the ultimate objective should never be to be slim, but to be healthy! And how to be healthy without sport? Do we really want a society of slim but unhealthy people? I don’t think so.

So, let’s stop trying to catch dreams, and let’s just concentrate on the important things.

  • Author: guille
  • Published: Oct 12th, 2006
  • Comments: None

Los Borgia

losborgiaFuí a ver ayer la película de los Borgia. La verdad es que no estaba muy entusiasmado, pero finalmente me lo pasé bién.

Esta película no es la película del siglo. Es entretenida, no está mal hecha, pero sigue teniendo un cierto gusto de amateurisme. Es la falta de experiencia del cine español en este género? Estamos tal vez mal acostumbrados con las americonadas que nos imponen? O realmente la calidad es inferior? Probablemente sea una sabia mezcla de todo lo anterior.

También hay que decir que la película deja algunas respuestas sin responder. Se acuesta Lucrecia con su hermano y padre? Porqué Sancha de Castilla es mulata? Y probablemente la que más he oido sea Son los pechos de Sancha de silicona?

Los Borgia es un tema delicado y al mismo tiempo con mucha chicha. La historia de esta familia valenciana es apasionante. Eran unos amos de la estrategia política, hasta el punto de que Machiavelli se inspiró de Cesar para su libro El Príncipe, uno de los clásicos de la política, y cuya lectura recomiendo asiduamente. Por otra parte, su historia se encuentra llena de sexo, violencia, intriga y misterios sin resolver, todos los ingredientes necesarios para el éxito de una película en los tiempos que corren.

A pesar de eso, han conseguido hacer una película bastante completa con un contenido erótico y violento muy limitado, y con intrigas relativamente bien narradas.

  • Author: guille
  • Published: Oct 6th, 2006
  • Comments: 2

Mobiles para niños de 6 años

imaginarium_movilLeo hoy en Que!

Imaginarium y Movistar sacarán a la venta en diciembre el primer móvil
para niños a partir de seis años, el Mo1, que ayudará a los padres a
enseñar a sus hijos la correcta utilización del teléfono.

Lo que nos faltaba. Ahora incluso los niños tendrán teléfonos móviles.

No nos bastaba con los adultos que hablan a gritos por la calle, los enervantes sonidos de todos los teléfonos encendiéndose en cuanto aterriza un avión, o los timbres de los mensajes recibidos en el cine. Ahora, los niños también se apuntarán a la fiesta.

Es como si estuviera viendo ya los problemas. La profesora quitando el teléfono a un niño pequeño llorando, el abuso del uso del teléfono mientras aprenden a utilizarlo, y lo que es más grave, la adicción creada.

En efecto, lo peor del tema no es que pueda haber cretinos que compren este aparato infernal, sino que los fabricantes han apuntado a uno de los públicos más frágiles e influenciables, los niños, y que nadie ha hecho nada para defenderlos.

Quienes los vean a sus compañeros, querrán otros para ellos. Y, lo que es peor, los que aprendan a utilizar un teléfono móvil se habrán convertido en clientes duraderos. Muy duraderos. Pues nada dura más tiempo que los hábitos inculcados desde niños.

Y entonces viene la pregunta del siglo: Como hemos hecho durante todos estos años sin móviles?

O una que me hago cada vez que recibo una llamada no deseada: Porqué sigo teniendo un móvil, si una de las épocas más felices de mi vida fueron los meses en los que se me perdió el móvil y no lo renové? Mis amigos desesperaron, pero yo viví en un mar de felicidad.

  • Author: guille
  • Published: Oct 5th, 2006
  • Comments: None

First poll

vote_here_womanI’ve closed my first poll today, and I am proud to announce that Django is, by 100%, considered as the best web framework in the world!

Ok… the fact that only 6 people answered might be a hint of how serious the poll might have been. The fact that there’s only private and django posts in my blog might be a second hint about why Django superiority is so extreme.

But still… this poll was my first Django app and, even if thousands of people have done the same app through the tutorial, I am proud of it and, furthermore, happy that 6 persons took the time to actually answer it!

Thank you very much to those persons!

© 2006,2007,2008,2009,2010 Guillermo Fernández Castellanos | Header images by Nick Lobeck