Publicaciones sobre nerdness

2011-03-25 02:30

Creando un foro de la manera fácil (32 líneas)

Esto es la primera parte de un proyecto para crear el software de foro más sencillo posible (en cierta forma).

Aquí están algunos de los features que quiero:

  • Login via twitter / Facebook / Google / OpenID
  • Número ilimitado de threads
  • Soporte de like / dislike en threads y en posts
  • Avatares
  • HTML en los posts
  • Que mande mail al usuario si le responden
  • Feeds RSS para los threads

Se lo puede ver en acción en http://foro.netmanagers.com.ar (por un tiempo limitado ;-)

Y aquí está el código:

import bottle
import disqusapi as disqus
import json
shortname = 'magicmisteryforum'
api = disqus.DisqusAPI(open("key").read().strip())

@bottle.route('/', method='GET')
def index():
    msg = bottle.request.GET.get('msg', '')
    threads = api.forums.listThreads(forum=shortname, limit=100)
    print threads[0]
    return bottle.template('main.tpl', threads=threads, shortname=shortname, msg=msg)

@bottle.route('/new', method='POST')
def new():
    title = bottle.request.forms.get('title', None)
    if not title:
        bottle.redirect('/?msg=Missing%20Thread%20Name')
        return
    thread = api.threads.create(forum=shortname, title = title)
    thread_id = thread.__dict__['response']['id']
    # Redirecting to /thread/thread_id doesn't work
    # because threads take a few seconds to appear on the listing
    bottle.redirect('/')

@bottle.route('/thread/:id')
def thread(id):
    t = api.threads.details(thread=id)
    return bottle.template('thread.tpl', shortname=shortname, id=id, thread=t.__dict__['response'])

@bottle.route('/static/:path#.+#')
def server_static(path):
    return bottle.static_file(path, root='./static')

app = bottle.app()
app.catchall = False #Now most exceptions are re-raised within bottle.
bottle.run(host='184.82.108.14', port=80, app=app)

Requiere Bottle y la Disqus python API

Por supuesto que hay un poquito de templates, acá está main.tpl y thread.tpl. Como apesto para el HTML, usa Bluetrip CSS y es sencillo de customizar.

POR SUPUESTO QUE HAGO TRAMPA!

Esta cosa es apenas una capa de pintura encima de Disqus! Más un blog sin posts pero con comentarios que un foro! Pero... qué le falta para ser un foro de verdad? Funciona, no? Hasta se podrían usar categorías de Disqus para crear subforos...

Teniendo todo en cuenta, creo que es un hack bonito.

Y si esperás unos días, esto lleva a otra cosa que es mucho más mágica...

Código fuente completo en http://magicforum.googlecode.com

2011-03-11 01:47

Nuevo desafío golfístico: Pato Cabrera

En el espíritu del web browser De Vicenzo, voy a empezar un nuevo programa llamado Pato Cabrera. Estas son las reglas:

  • Cliente Twitter client (no soporta identi.ca en la primera versión)
  • Con estos features: http://pastebin.lugmen.org.ar/6464
  • Implementado antes del 4/4
  • Menos de 16384 bytes (de python). Puede ser mas grande por iconos y cosas así.

Veremos qué sale :-)

2011-03-05 23:46

De Vicenzo: un mini browser más copado

Parece que hubieran sido solo unos días desde que empecé este proyecto. Ah, epa, sí, fué hace unos días nomás!

Si no querés leer eso de nuevo, la idea es ver cuánto código falta para convertir el motor WebKit de Qt en un browser "en serio".

Para ello, me puse una meta completamente arbitraria de 128 líneas de código. En este momento lo declaro feature-complete (pero buggy).

Los nuevos features son:

  • Tabbed browsing (se puede agregar/sacar tabs)
  • Bookmarks (se pueden agregar/sacar y elegir de una lista)

Esto es lo que ya funcionaba:

  • Zoom in (Ctrl++)
  • Zoom out (Ctrl+-)
  • Reset Zoom (Ctrl+=)
  • Buscar (Ctrl+F)
  • Esconder búsqueda (Esc)
  • Botones de atrás/adelante y recargar
  • Entrada de URL que coincide con la página + autocompletado desde la historia + arregla la URL puesta a mano (agrega http://, esas cosas)
  • Plugins (incluído flash, que hay que bajar aparte ;-)
  • El título de la ventana muestra el título de la página (sin propaganda del browser)
  • Barra de progreso para la carga de la página
  • Barra de estado que muestra el destino de los links cuando pasas el mouse
  • Toma una URL en la línea de comando (o abre http://python.org
  • Multiplataforma (funciona donde funciona QtWebKit)

Y cuanto código es eso? 87 LINEAS.

O si preferís la versión que cumple con la PEP8: 115 LINEAS.

Me atajo antes que alguien lo diga: sí, el motor de rendering y el toolkit son enormes. Lo que escribí es el "chrome" alrededor de eso, igual que hacen Arora, Rekonq, Galeon, Epiphany, y muchos otros browsers.

Es un chrome simple y minimalista, pero funciona bastante bien, creo yo.

Aquí está el demo (buggy):

Mas o menos hace lo que esperaba que se puediera lograr, pero le faltan arreglos.

Para ver el código, vayan a su home page: http://devicenzo.googlecode.com

2011-02-28 21:10

¿Cuanto browser entra en 128 líneas de código?

Hoy, charlando en IRC, traté de encontrar un browser de 42 líneas que escribí hace un tiempo. Lamentablemente el pastebin en que lo posteé estaba muerto, así que aprendí una lección: No es buena idea confiar en un pastebin como repositorio de código.

Lo que me gustaba de ese browser de 42 líneas era que no era el ejemplo típico, donde meten una vista de Webkit en una ventana, cargan una página y te tratan de convencer de que son unos bananas. Esa versión son 7 líneas:

import sys
from PyQt4 import QtGui,QtCore,QtWebKit
app=QtGui.QApplication(sys.argv)
wb=QtWebKit.QWebView()
wb.setUrl(QtCore.QUrl('http://www.python.org'))
wb.show()
sys.exit(app.exec_())

O 6 si lo soportara un poco más feo.

¡Pero igual, el de 42 se veía útil!

This 42-line web browser, courtesy of #python and #qt -- http... on Twitpic

Esos botones que se ven funcionaban correctamente, habilitando y deshabilitandose en el momento correcto, la entrada de URL cambiaba cuando hacías click en un link, y otras cositas así.

Ahí decidí empezar un pequeño proyecto intermitente de code golf: meter el mejor browser que pueda en 128 líneas de código (sin contar comentarios ni blancos), usando solo PyQt4.

Eso tiene un propósito útil: siempre sospeché que si uno asume PyQt como parte del sistema base, la mayoría de las aplicaciones entrarían en diskettes. Esta entra unas 500 veces en uno de 1.44MB (¡así que podés usar los de 360 de commodore sin duplidisk!)

hasta ahora van 50 líneas, y tiene los siguientes features:

  • Zoom in (Ctrl++)
  • Zoom out (Ctrl+-)
  • Reset Zoom (Ctrl+=)
  • Buscar (Ctrl+F)
  • Esconder búsqueda (Esc)
  • Botones de atrás/adelante y recargar
  • Entrada de URL que coincide con la página + autocompletado desde la historia + arregla la URL puesta a mano (agrega http://, esas cosas)
  • Plugins (incluído flash, que hay que bajar aparte ;-)
  • El título de la ventana muestra el título de la página (sin propaganda del browser)
  • Barra de progreso para la carga de la página
  • Barra de estado que muestra el destino de los links cuando pasas el mouse
  • Toma una URL en la línea de comando (o abre http://python.org
  • Multiplataforma (funciona donde funciona QtWebKit)

Faltan tabs y soporte de proxy. Espero que lleven unas 40 líneas más, pero creo que ya es el más capaz de todos estos browsers de ejemplo.

El código... no es tan terrible. Uso muchos lambdas, y los argumentos keyword de PyQt para conectar señales, que hacen que algunas líneas sean muy largas, pero no muy difíciles. Se podría achicar bastante todavía!

Aquí está en acción:

Y aquí está el código:

#!/usr/bin/env python
"A web browser that will never exceed 128 lines of code. (not counting blanks)"

import sys
from PyQt4 import QtGui,QtCore,QtWebKit

class MainWindow(QtGui.QMainWindow):
    def __init__(self, url):
        QtGui.QMainWindow.__init__(self)
        self.sb=self.statusBar()

        self.pbar = QtGui.QProgressBar()
        self.pbar.setMaximumWidth(120)
        self.wb=QtWebKit.QWebView(loadProgress = self.pbar.setValue, loadFinished = self.pbar.hide, loadStarted = self.pbar.show, titleChanged = self.setWindowTitle)
        self.setCentralWidget(self.wb)

        self.tb=self.addToolBar("Main Toolbar")
        for a in (QtWebKit.QWebPage.Back, QtWebKit.QWebPage.Forward, QtWebKit.QWebPage.Reload):
            self.tb.addAction(self.wb.pageAction(a))

        self.url = QtGui.QLineEdit(returnPressed = lambda:self.wb.setUrl(QtCore.QUrl.fromUserInput(self.url.text())))
        self.tb.addWidget(self.url)

        self.wb.urlChanged.connect(lambda u: self.url.setText(u.toString()))
        self.wb.urlChanged.connect(lambda: self.url.setCompleter(QtGui.QCompleter(QtCore.QStringList([QtCore.QString(i.url().toString()) for i in self.wb.history().items()]), caseSensitivity = QtCore.Qt.CaseInsensitive)))

        self.wb.statusBarMessage.connect(self.sb.showMessage)
        self.wb.page().linkHovered.connect(lambda l: self.sb.showMessage(l, 3000))

        self.search = QtGui.QLineEdit(returnPressed = lambda: self.wb.findText(self.search.text()))
        self.search.hide()
        self.showSearch = QtGui.QShortcut("Ctrl+F", self, activated = lambda: (self.search.show() , self.search.setFocus()))
        self.hideSearch = QtGui.QShortcut("Esc", self, activated = lambda: (self.search.hide(), self.wb.setFocus()))

        self.quit = QtGui.QShortcut("Ctrl+Q", self, activated = self.close)
        self.zoomIn = QtGui.QShortcut("Ctrl++", self, activated = lambda: self.wb.setZoomFactor(self.wb.zoomFactor()+.2))
        self.zoomOut = QtGui.QShortcut("Ctrl+-", self, activated = lambda: self.wb.setZoomFactor(self.wb.zoomFactor()-.2))
        self.zoomOne = QtGui.QShortcut("Ctrl+=", self, activated = lambda: self.wb.setZoomFactor(1))
        self.wb.settings().setAttribute(QtWebKit.QWebSettings.PluginsEnabled, True)

        self.sb.addPermanentWidget(self.search)
        self.sb.addPermanentWidget(self.pbar)
        self.wb.load(url)


if __name__ == "__main__":
    app=QtGui.QApplication(sys.argv)
    if len(sys.argv) > 1:
        url = QtCore.QUrl.fromUserInput(sys.argv[1])
    else:
        url = QtCore.QUrl('http://www.python.org')
    wb=MainWindow(url)
    wb.show()
    sys.exit(app.exec_())

2011-02-22 22:45

The Outhouse and the Mall

Wearing the software engineer's hat: Code is the most trivial and the least important part of a feature.

—Michael Iatrou

Michael tweeted that, I replied, he replied, but what the heck, I think sometimes things can be better explained in more than 140 characters, thus this post [1].

So, why the mall and the outhouse? Because when we talk about software and code and features, we are not all talking about the same thing. Imagine if I told you that bricks are trivial. After all, they have existed in their current form for thousands of years, they are pretty simple to manufacture, and have no interesting features, really, except a certain resistence.

Now, suppose you are building an outhouse. Since you are a funny guy, you want to build an actual brick outhouse so you will use bricks to do it.

Now, since bricks are so boring, you may feel compelled to believe bricks are the least important part of your edifice, and that the overall design is more important. Should you carve a moon-shaped hole in the door? How deep should the latrine be?

However, that position is fatally flawed, since if you ignore those trivial, boring bricks, all you have is shit in a hole in the ground. That is because you are considering the bricks as just a mean to your end. You only care about the bricks insofar as they help you realize your grand outhouse vision. I am here to tell you that you are wrong.

The first way in which you are wrong is in that artificial separation between means and ends. Everyone is familiar with the ethical conundrum about whether the ends justify the means, but that's garbage. That'swhat you say when you try to convince yourself that doing things haphazardly is ok, because what you do is just the means to whatever other thing is the end. Life is not so easily divided into things that matter and things that don't.

Your work, your creation is not just some ideal isolated end towards which you travel across a sea of dirty means, trying to keep your silver armour clean. It's one whole thing. You are creating the means, you are creating your goal, you are responsible for both, and if you use shoddy bricks, your outhouse should shame you.

In the same way, if you do crappy code, your feature is demeaned. It may even work, but you will know it's built out of crap. You will know you will have to fix and maintain that crap for years to come, or, if you are lucky, ruin your karma by dumping it on the head of some poor sucker who follows your steps.

I am pretty much a materialist. If you remove the code, you don't have a feature, or software, you have a concept, maybe an idea, perhaps a design (or maybe not) but certainly not software, just like you don't have a brick outhouse without piling some damn bricks one on top of the other.

I always say, when I see someone calling himself a software engineer, that I am merely a software carpenter. I know my tools, I care about them, I use them as well as I can according to my lights [2] and I try to produce as good a piece of furniture as I can with what I am given.

This tends to produce humble software, but it's software that has one redeeming feature: it knows what it should do, and does it as well as I can make it. For example, I wrote rst2pdf. It's a program that takes some sort of text, and produces PDF files. It does that as well as I could manage. It does nothing else. It works well or not, but it is what it is, it has a purpose, a description and a goal, and I have tried to achieve that goal without embarrasing myself.

My programs are outhouses, made of carefully selected and considered bricks. They are not fancy, but they are what they are and you know it just by looking at them. And if you ever need an outhouse, well, an outhouse is what you should get.

Also, people tend to do weird stuff with them I never expected, but that's just the luck of the analogy.

But why did I mention malls in the title? Because malls are not outhouses. Malls are not done with a goal by themselves beyond making money for its builders. The actual function of a piece of mall is not even known when it's being built. Will this be a McDonalds, or will it be a comic book store? Who knows!

A mall is built quickly with whatever makes sense moneywise, and it should look bland and recognisable, to not scare the herd. It's a building made for pedestrians, but it's intended to confuse them and make the path form A to B as long and meandering as possible. The premises on which its design is based are all askew, corrupted and self-contradicting.

They also give builders a chance to make lots of money. Or to lose lots of money.

Nowadays, we live in an age of mall software. People build startups, get financing, build crappy software and sometimes they hit it big (Twitter, Facebook) or, more likely, fade into obscurity leaving behind nothing at all, except money lost and sad programmers who spent nights coding stuff noone will ever see or use, and not much else.

Far from me saying startups are not a noble or worthy endeavour. They are! It's just that people who work on them should realize that they are not building software. That's why code doesn't look important to them, because they are actually selling eyeballs to advertisers, or collected personal data from their users to whoever buys that, or captive public for game developers, or whatever your business model says (if you have one!).

They are building malls, where the value is not in the building, which is pretty ghastly and useless by itself, but on the people in it, those who rent space in the mall, those who will use the mall, the software, the social network, whatever it is you are building.

Twitter is not software, Facebook is not software. If they were, identi.ca and diaspora would be bigger! What they are is people in one place, like a mall is not a real building, but a collection of people under a roof.

So, there is nothing wrong with building malls. Just remember that your ends and your means are one and a whole, that code is important, that without code Facebook and Twitter don't work, and that without people they are a badland, and know what you are doing.

Because the only hard thing in life is knowing what you want to do. The rest is the easy part. And because malls without toilets suck.

[1] If you really want to see the whole conversation, it's here: http://bettween.com/ralsina/iatrou (if anyone knows a better conversation tracker please post it in a comment).
[2] Yet here I am, an Engineering Manager at Canonical. Sorry guys!

2010-11-16 15:38

Vivimos en el futuro.

/static/thefuture.jpg

Neal Stephenson escribió:

había algo nuevo: un globo del tamaño de un pomelo, una representación detallada de la Tierra, flotando en el espacio al alcance de su mano. Hiro había escuchado hablar de esto, pero nunca lo había visto. Es un software de CIC llamado, simplemente, Tierra. Es la interfaz que CIC usa para organizar cada fragmento de información espacial de que dispone - todos los mapas, el clima, planos arquitectónicos, y vigilancia satelital.

Hiro pensaba que si el negocio de la inteligencia funcionaba bien, en unos años tal vez juntara el dinero para suscribirse a Tierra y tener esta cosa en su oficina. Y aquí estaba de repente, gratis...

Y por supuesto, tengo exactamente esa cosa instalada en mi escritorio. No todos los datos que menciona están conectados ahí pero hey, es gratis.

Heinlein escribió de ciudadanos particulares y empresas yendo al espacio. Pensaba que no era cosa de gobiernos. Y yo voy a ver eso. De hecho conozco a alguien que conoce a alguien que conoce a alguien que se pagó un viaje al espacio!

Por supuesto que no hay autos voladores y mochilas cohete (por suerte: que ideas horribles!)

Cual es la diferencia entre Idoru de Gibson y Gorillaz, excepto que es más barato pagarle a músicos que construir inteligencias artificiales? ¿Para qué exactamente serviría una IA? ¿No son mejores y más baratos los turcos mecánicos?

Asimov escribió de una fundación de estudiosos documentando el saber de la humanidad. Nosotros tenemos wikipedia!

Nuestros teléfonos son mucho mejores que los comunicadores de Star Trek (para empezar, el altavoz es OPCIONAL).

Es como si las ideas de la ciencia ficción se filtraran por un purificador y del otro lado saliera lo que tiene sentido. Me gusta vivir en el futuro. Quiero ver como sigue.

Nota: Este post fue idea de @gustavsen

2010-11-12 00:47

La quiniela como inversión racional.

Hay un prejuicio que dice que los pobres juegan a la quiniela porque son haraganes, no pueden ahorrar y son en general idiotas que se perjudican persiguiendo la fantasía de ganar mucho todo junto en vez de ahorrar moneditas. Y es una idiotez.

Cuando estaba en el secundario (13 años), tuve un plan para ganar dinero: jugar a la quiniela. Este era mi plan:

Todos los días jugaría $1. La quiniela pagaba $700 por cada $1 y era con números entre 000 y 999. Mi idea era: si apuesto el $1 que mis padres me daban para caramelos todos los días hay una posibilidad de ganar $700. Con $700 se podía comprar cualquier cosa que un chico de 13 podía querer. Con $1... no tanto.

En este momento debés estar pensando: ¡Qué ganso! Tiene un 0.1% de probabilidades de ganar y paga 700 a 1, es una apuesta perdedora! ¡Cuac!

Empecemos con una simulación sencilla:

import random

n = 476

for tests in range(10000):
    for w in range(1000):
        q = random.randint(0,999)
        if n == q:
            break

    print(w)

Explicación: corre 10000 simulaciones de este proceso:

  • Jugamos todos los días por 1000 días.
  • Si ganamos, paramos.
  • Si no ganamos en 1000 días, paramos.
  • Anotamos el número de parada.

Y lo corrí. Acá hay un gráfico del resultado:

histogram

¿Cuántos perdieron todo? 3699 jugadores de los 10000 nunca ganaron nada.

¿Cuantos perdieron dinero? 5030.

¿Cuántos ganaron dinero? 4967.

2910 jugadores ganaron en menos de 350 jugadas.

3 jugadores salieron exactamente derechos, ganando en la jugada 700. Para ellos fue exactamente lo mismo que ahorrar.

¿Entonces, es una buena idea jugar a la quiniela? Es tirar una moneda. La mitad del tiempo, perdés todo. La mitad del tiempo ganás algo (aunque puede ser muy poco).

Si estás apostando una cantidad lo suficientemente baja que "no te duela", funciona. Tenés una probabilidad del 50% de que sea al menos lo mismo que ahorrar, de un 25% de que sea mucho mejor que ahorrar, y un 50% de que sea peor. Pero perdés muy despacio.

En resumen: no es realmente irracional, por lo menos no mucho más que comprar acciones. ¡Desde ya que es mejor idea que comprar caramelos!

2010-11-03 13:20

Un cuento corto corto de ciencia ficción

Lo escribí para un concurso de la revista New Scientist y pensé, que tanto, capaz que a alguien le gusta. Y no, no lo pienso explicar porque arruina la diversión.

No existe la energía gratis

Ojalá pudiera tomar algo fresco, pensé mientras miraba la arcilla reseca que era antes un pantano. Cerré la escotilla y comenzamos el largo viaje a las estrellas, puteando a cada kilómetro al inventor de la máquina de movimiento perpetuo.

PD: gracias a Juanjo Conti que me ayudó con el final.

2010-10-04 20:45

Como ser un nerd en argentina y no morir en el intento

Intro

Ser un nerd en Argentina tiene muchos problemas. Uno de ellos es que los precios que nos quieren cobrar por casi cualquier chiche electrónico es ridículo.

Otro de los problemas es que el 99% de la gente no sabe como hacer para que no les afanen de esa manera. Y ojo, no hablo de contrabandear, hablo de usar tus derechos y tus recursos legales. Aclaro: no soy abogado, si siguiendo estos consejos vas preso, es cosa tuya, yo digo lo que creo que está bien nomás.

Así que estimados lectores, acá está mi guía para comprar chiches sin tener que empeñar un riñón (que también es ilegal, ya que estamos).

Lo primero que necesitás es paciencia. Algunos de los mecanismos que te voy a contar llevan uno o dos meses, o requieren colaboración de terceros. Pero bueno, somos nerds, resolver problemas es lo nuestro.

Chucherías Chinas

Tengo un bonito microscopio de bolsillo de 80x que me compró mi esposa. Costo? $90. Es un juguete buenísimo, re educativo, y cuando tenía 6 años hubiera dado la figurita difícil (era la tarántula) por uno de estos.

Costo en china? U$S 9.39, con envío gratis

O sea, la mitad. Y como sale menos de U$S 25, de hecho es legal traerlo por correo y no pagás tasa de aduana.

De todas formas, probablemente no tengas que ir a la aduana porque....

Consejo

Cosas chicas == no problem

Normalmente los paquetes de menos de medio kilo casi nunca se quedan en la aduana. Ese dongle bluetooth de U$S 1 te va a llegar a tu casa.

Pero ponéle que pagás la tasa. Con tasa y todo, son U$S 15, o sea $60. Si pasás por la aduana a veces y no te molesta hacer cola un rato (llevate un libro)....

Pero es aún mejor. Porque en http://DealExtreme.com tenés un modelo de 150x por U$S 12! De hecho, tenés 36 modelos de microscopios!

Consejo

El mundo es grande

Comprar las cosas directamente significa elegir de una variedad muchísimo mayor de la que tenés acá. Sumále que encima es más barato...

Por ejemplo, en http://alibaba.com hay algo así como 35000 vendedores de tablets con Android. Alguna te va a servir ;-)

Ahora bien, supongamos que te decidiste y te encargaste algo de China o similar, qué tenés que saber:

  • Guardá la "factura" que te dá el sitio, y la URL del producto.

    La factura suele ser un HTML, imprimílo. Cuando retirás en Aduana lo necesitás. No lo muestres de entrada! Sólo si te lo piden.

  • Andá dispuesto a pagar. Es al cuete discutir. Tené en cuenta que aún con lo de la aduana es barato, y no te hagas mala sangre.

  • Si vas tipo 10:30 suele haber poca gente.

  • Andá tranquilo, llevate algo para entretenerte porque en una de esas lleva un rato. Igual hay sillas, que se yó, no es la muerte de nadie.

Consejo

It's a gift!

Casi todos estos sitios tienen algún servicio de "gift". Te sacan el precio y todo lo que haga que parezca una compra por internet. Aumenta la probabilidad de que llegue a tu casa directo.

Cómo Pagar

La más fácil es PayPal. Si tenés tarjeta de crédito es trivial.

Consejo

Hablá con nerds amigos!

Si no tenés PayPal ni tarjeta internacional, pero conocés alguien que trabaja para el exterior, es muy probable que esa persona tenga saldo en PayPal que no puede sacar. En Argentina, convertir PayPal en dinero es muy caro. Entonces se puede llegar a un acuerdo: se lo pagás al 95% del valor (o lo que arreglen) tu amigo tiene la plata, vos tenés descuento en dealextreme o donde sea.

También podés hacer la compra con la tarjeta de un amigo/pariente y pagarle a él en efectivo.

El amigo que viene de afuera

Sí tenés un conocido que viaja al exterior con regularidad:

  • Podés comprar en USA y que te reciba y traiga las cosas.
  • Hasta U$S 300 (si el que viaja es argentino) no se paga aduana. Se paga el 50% por encima de esa cifra.
  • Si es un extranjero que trae una cosa propia "en uso" y te la vende acá, no creo que tengas que pagar importación (no estoy seguro)

Veamos un ejemplo!

  • Una HP mini comprada acá: $1999, o U$S 500
  • Comprada en USA: U$S 329.
    • Pagando aduana con franquicia: U$S 345
    • Pagando aduana full: U$S 495 (ahí no conviene ;-)

Consejo

Los productos HP tienen garantía internacional

Los Dell por ejemplo: NO. Así que ojo, comprá una marca que te dé service en Argentina. En el caso de Dell tenés que comprar aparte una garantía que te sirva acá. Vos sabrás si te bancás tener una notebook sin garantía (yo sí, si es barata ;-)

Pero que te parecería tener la misma netbook por U$S 180?

Bueno, resulta que HP (y todas las empresas) venden productos "refurbished" o sea reacondicionados. Normalmente no te vas a dar cuenta de nada, tienen un rayón mínimo, o algo así. Hoy la misma netbook estaba a U$S 179.90. Normalmente salen más o menos la mitad. Y vienen con garantía.

Y fijáte que la HP mini por U$S 180, pagando la aduana full... cuesta el 54% de lo que sale la nueva acá. Eso es negocio.

Consejo

La entrega es allá

Normalmente las compras de refurbished hay que hacerlas en USA. Por eso lo de que tiene que ir alguien a recibirla.

Alternativamente hay servicios de reenvío de mercadería, pero no los he usado y no los conozco.

Alternativamente, Ciudad del Este (Paraguay) está muy cerca de Argentina. Y es muy barato comprar electrónicos ahí. Y tenés los U$S 300 de franquicia.

Pero hay más! Un ciudadano paraguayo que visita argentina puede traer ciertas cosas con ciertos límites. Hay que hablar con él y coordinar!

Si no conocés a nadie... bueno, andá de paseo a cataratas! Pasala bien! Y comprate una cámara o lo que sea en la excursión a Ciudad del Este.

Accesorios

No compres accesorios originales. Por ejemplo: la batería original de repuesto de mi eeePC 701? U$S 110, 3 elementos. La "trucha" de 6 elementos? U$S 40.

Consejo

Es ilegal importar cosas que se enchufan

Todo lo que se enchufe a la pared tiene que homologarse y creo que es ilegal traerlo. Si alguien tiene un cargador para su propia notebook por ejemplo, supongo que es legal (así me hice de un cargador para la eee)

Conclusión

Ojalá sirva de algo, si tenés más tips ponelos en los comentarios!

2010-09-08 13:28

Por qué estamos acá.

Advertencia: rant.

Ayer el gobierno argentino anunció que van a regalar 3 millones de netbooks a estudiantes. También anunciaron que les van a dar la opción de Ubuntu o Windows 7.

Por supuesto al rato empezó a circular la típica reacción del lado FLOSS: ¿por qué les dan Windows si Linux es mejor? ¡Es injusto que el gobierno pague Windows!

Mi misión hoy es decirles que crezcan y dejen de actuar como nenes. Estoy acá para decirles que paren de tratar a los demás como bebés.

Creo que lo puedo hacer porque estoy inmunizado contra las críticas de la comunidad FLOSS: soy miembro. Tengo un historial bastante lindo con el software libre y open source, no uso nada excepto Linux hace 15 años.

Y tengo la piel gruesa y no me importa lo que digan los demás a menos que me den motivos y razones para que me importe.

Vengo a decirles que si el único motivo para usar un software es que es el más barato, estás diciendo que ese software es malo.

No sólo quiero que la gente use Linux, quiero que quieran usarlo. Quiero que esperen ansiosos la siguiente versión de Ubuntu o Firefox o lo que sea.

Y el primer paso hacia la excelencia es querer ser excelente. Si al no tener que pagar por Windows ni Ubuntu estamos seguros que gana Windows, entonces Ubuntu tiene problemas y hay que arreglarlos. ¿La gente no lo quiere ni gratis? Entonces hay problemas y encontrarlos es importante.

Pero más importante que encontrar la pieza que falta es ver el agujero donde debería estar esa pieza. La comunidad Open Source se ha vuelto complaciente. Se ha vuelto pagada de sí misma, es un adolescente, seguro de su grandeza e inmortalidad.

Yo no creo en muchas cosas, pero creo en el libre albedrío. Creo que la gente no es idiota, creo que si prefieren Windows, es por algo, hay algo que hace mejor, y creo que sea lo que sea eso (que no lo conozco), se puede encontrar y mejorar y reemplazar, y sumado a otras cosas va a lograr que sea el mejor producto y creo que la gente va a querer usarlo.

Y si no lo hacen... bueno, se dió una pelea honesta, hicimos lo mejor que pudimos, abrimos caminos, creamos cosas interesantes, y los usuarios están mejor que antes aún si no eligieron a nuestro bebé, porque levantamos el nivel general.

Por ejemplo, antes de Linux, Windows era una bazofia mucho peor, y creo que muchas de las mejoras que tuvo fueron gracias a Linux, y estoy feliz que los usuarios hoy tengan un sistema operativo más decente, aunque no sea Linux.

Quiero que la gente use open source porque es asombroso, no porque es barato. Asombroso y barato está bien. ¿Sólo barato? Es una mierda.

Ya que estamos: ¿el constante "usan Windows porque no tienen idea"? Es condescendiente y muy, muy molesto. Y si me moesta a mí, que no soy el blanco de la condescendencia, créanme, molesta mucho más a los usuarios de Windows, y molestar a la gente no la convence de nada, excepto de que sos molesto.

Crezcan, métanle para adelante, empiecen a hacer cosas asombrosas, muestren calidad. Para eso estamos acá, no para ser la segunda marca de otro, no para ser la Goliat cola.

Contents © 2000-2018 Roberto Alsina