Roberto Alsina: FLOSS Decision Making in Action

If you are rea­ding this the­re is a good chan­ce you are in­vol­ved so­me­how in open sour­ce de­ve­lo­p­men­t, or so­ftwa­re de­ve­lo­p­ment in ge­ne­ra­l. One thing lo­ts of peo­ple ask me when they know I ha­ve lea­d ­this sort of pro­jec­ts for a long ti­me is "how do you de­ci­de things?". To whi­ch I ha­ve all sor­ts of bad an­swers like:

  • "I­t's a con­sen­sus thin­g"
  • "It ha­ppens or­ga­ni­ca­ll­y"
  • "So­me­ti­mes it just ha­ppen­s"
  • "A­nar­ch­y!"
  • "You do what you do"

So, now he­re I ha­ve an AWE­SO­ME exam­ple of FLO­SS de­ci­sion making in ac­tio­n, whi­ch is ... all of the abo­ve.

So­me con­tex­t: Niko­la is a sta­tic si­te ge­ne­ra­to­r, so it deals wi­th rea­ding and wri­ting tex­tual da­ta from disk. I­t's al­so an in­ter­na­tio­na­li­zed pro­jec­t, whi­ch su­ppor­ts mul­ti­lin­gual si­tes and trans­lated da­ta. It al­so run­s un mul­ti­ple pla­tfor­ms, like Win­do­ws, OS­X, Li­nu­x, etc.

And to make that mo­re fun, it al­so wo­rks on Py­thon 2.7, and 3.3 or la­te­r. Whi­ch means it has to hand­le two­ ­di­ffe­rent mo­dels on how to wo­rk wi­th uni­co­de da­ta, in the sa­me co­de­ba­se. And tha­t's not fun. So, we ha­ve be­en ­floa­ting around the idea of de­pre­ca­ting py­thon 2.7. And so, when s2h­c_­johan wa­lks in wi­th a uni­co­de ­pro­ble­m...

14:23:16 <s2hc_johan> I don't have a site with sections, but I tested it for the other case
14:35:42 <s2hc_johan> strange it worked for a while broken again, probably because I've got åäö in it now.
14:35:45 <s2hc_johan> https://github.com/getnikola/plugins/blob/master/v7/recent_posts_json/recent_posts_json.py#L134
14:36:17 <s2hc_johan> if you wrap data with unicode it works, but I'm not sure that works in python3
14:36:37 <ChrisWarrick> s2hc_johan: how do you wrap it with unicode?
14:36:48 <s2hc_johan> unicode(data)
14:37:05 <s2hc_johan> but is that valid in  python3?
14:37:11 <ChrisWarrick> s2hc_johan: this is wrong on so many levels
14:37:16 <ChrisWarrick> s2hc_johan: please don’t do that, ever
14:37:48 <ChrisWarrick> s2hc_johan: This won’t work in Python 3 either.  You must have an actual encoding, and use the decode method.   try: foo = foo.decode('utf-8'); except AttributeError: foo = foo  # python 3
14:38:02 <s2hc_johan> what do you mean, that is like my standard when I get strnage data in, undoce(data) data.encode(whatever) data.decode(whatever) :)
14:38:23 <s2hc_johan> one of them ussually work
14:39:22 <ChrisWarrick> s2hc_johan: unicode() assumes ASCII, it never works right
14:39:32 <s2hc_johan> true
14:39:40 <ChrisWarrick> s2hc_johan: encode/decode with a specified encoding is fine
14:40:00 <ChrisWarrick> s2hc_johan: but you might need a try/except for Python 3 if it could have Unicode data already
14:40:16 <s2hc_johan> I'm a bit confused in this case since the output comes from json.dumps
14:40:34 <s2hc_johan> thought that would produce a unicode object
14:40:51 <ChrisWarrick> s2hc_johan: not necessarily on python 2
14:41:05 <ralsina_> if isinstance(thing, utils.str_bytes): thing=thing.decode('utf8')
14:41:15 <ralsina_> that works in py2 and py3
14:42:12 <ChrisWarrick> easier to ask for forgiveness imo
14:43:07 <ralsina_> maybe we should have helpers in utils enforce_unicode and enforce_bytes
14:43:13 -GitHub[nikola]:#nikola- [nikola] Aeyoun pushed 1 new commit to feed-previewimage: http://git.io/vnqek
14:43:13 -GitHub[nikola]:#nikola- nikola/feed-previewimage 4b79e20 Daniel Aleksandersen: Deprecated RSS_READ_MORE_LINK and RSS_LINKS_APPEND_QUERY...
14:44:58 <Aeyoun> Or upgrade to Py3.
14:45:11 <ChrisWarrick> ++
14:45:47 <Aeyoun> Unicode in Py27 is a nightmare. It tries as hard as it can to kill you at every turn.
14:48:09 -travis-ci:#nikola- getnikola/nikola#6426 (feed-previewimage - 4b79e20 : Daniel Aleksandersen): The build is still failing.
14:48:10 -travis-ci:#nikola- Change view: https://github.com/getnikola/nikola/compare/c4c69c02db34...4b79e20d1ebc
14:48:10 -travis-ci:#nikola- Build details: https://travis-ci.org/getnikola/nikola/builds/81026762
14:48:27 <ralsina_> ok, let's consider py3-only seriously.
14:48:40 <ralsina_> 1) Is there any distro commonly used with py3 < 3.3 ?
14:48:55 <ralsina_> 2) Do we just stop using py2, or we deprecate slowly?
14:49:15 <ralsina_> 3) Do we just start doing py3-only code, or we actively de-hack the codebase?
14:49:21 <ralsina_> That's my 3 questions :-)
14:50:13 <SteveDrees> Unicode is a nightmare
14:50:53 <SteveDrees> different python versions just changes where the pain point is
14:50:53 <s2hc_johan> which one is better isinstance... or hasattr('decode', ..)
14:51:02 <ralsina_> isinstance
14:51:08 <s2hc_johan> oki then
14:51:10 <ralsina_> hasattr is evil in itself
14:51:26 <s2hc_johan> just going to feed the kids then I'll make another pr
14:51:28 -GitHub[nikola]:#nikola- [nikola] Aeyoun pushed 1 new commit to feed-previewimage: http://git.io/vnqJ2
14:51:28 -GitHub[nikola]:#nikola- nikola/feed-previewimage 4c950ac Daniel Aleksandersen: flake8
14:52:13 <Aeyoun> ralsina_: user survey? pip download data?
14:52:33 <gour> ralsina_: create some poll at website/mailing-list about it?
14:53:18 <ralsina_> dude, I offered free shirts and I got only 10 requests ;-)
14:53:30 <ralsina_> so, how many answers do you expect about that sort of thing?
14:53:43 * gour thought shirts are jsut for devs :-(
14:53:47 <Aeyoun> ralsina_: release a unchanged version on pip that is flagged as py3 only. see how many downlaod it versus previous version in same amount of time.
14:53:51 <ralsina_> gour: go add yourself dude
14:54:18 <ralsina_> gour: TO THE SHIRT LIST! I just notced that sounded very rude :-)
14:54:43 <gour> ralsina_: where it is?
14:54:43 <Aeyoun> ralsina_: or one py27 version number and and one version py3 only version number at the same time.
14:55:17 <ralsina_> gour: https://docs.google.com/forms/d/18YFwdgukmpkjr5b8FGEKL0arxPePuLHNsuEa-Gl80D8/viewform?c=0&w=1
14:55:17 <gour> found it
14:56:00 <gour> ralsina_: wonder if xxl is too large or xl is enough
14:56:00 <Aeyoun> ralsina_: american or european sizes by the by?
14:56:03 <ralsina_> Aeyoun: that reflects how many people use py2.7 by reflex. I know *i* do because it's "python" and not "python3"
14:56:20 <ralsina_> Aeyoun: no idea about sizes to be honest... probably american
14:56:21 <Aeyoun> American sizes are … a big bigger. I’m probably a XS/S american but M european. :P
14:56:28 <Aeyoun> *bit bigger
14:56:39 <gour> ok
14:56:57 * gour submitted request
14:57:17 <ralsina_> So, what I would prefer to do is make people use py3 if they can. And it seems to me that pretty much everyone can, regardless of whether they still use py2 by defect.
14:57:26 <ralsina_> by default*, spanishism leaked there.
14:57:52 <ChrisWarrick> technically, using py2 is a defect
14:57:59 <ralsina_> So, if we all agree that most users *could* run nikola in py3... then let's do it.
14:58:02 <Aeyoun> Agreed.
14:58:15 <gour> sites won't stop working :-)
14:58:26 <Aeyoun> ralsina_: act on data not dev agreement?
14:58:42 <ChrisWarrick> guess we could change our docs/webiste to highlight 3.x
14:58:59 <ralsina_> Aeyoun: the only data we'd need is to know how many people have py2.7 and no py3.3
14:59:14 <ralsina_> not how many are *using* 2.7 instead of 3.3
14:59:38 <ChrisWarrick> micro-survey via ml?
14:59:39 <ralsina_> How about: let's announce that, unless lots of people complaint, we deprecate py2 by end of october
14:59:45 -travis-ci:#nikola- getnikola/nikola#6429 (feed-previewimage - 4c950ac : Daniel Aleksandersen): The build was fixed.
14:59:46 -travis-ci:#nikola- Change view: https://github.com/getnikola/nikola/compare/4b79e20d1ebc...4c950ac5e52e
14:59:46 -travis-ci:#nikola- Build details: https://travis-ci.org/getnikola/nikola/builds/81028389
14:59:47 <Aeyoun> Mac is shipping with Py2.7 and no Py3. BUT MacPorts and Homebrew offer painfree Py3 installs.
14:59:58 <ralsina_> ok, mac is a good point
15:00:25 <ChrisWarrick> it’s not like we have Homebrew/MacPorts/Fink-based install instructions for them…
15:00:27 <Aeyoun> ralsina_: we could add a deprecation message every time `nikola` is run and ask people to bitch in a bug?
15:00:32 <Aeyoun> ChrisWarrick: hehe. ;)
15:00:50 <ralsina_> "I see you have python3 installed but I am running on 2.7 ... dude, what's wrong with you?"
15:00:51 <Aeyoun> Or maybe once per 24 hour rather  than every time its run.
15:01:00 <ralsina_> doit timed tasks :-)
15:01:12 <Aeyoun> ralsina_: "Don’t get in the way of progress! Upgrade to Py3 and save a developer’s mind today!"
15:01:32 <ralsina_> "niec unicode you have there, would be a shame something happened to it.. switch to python 3!"
15:01:39 <ChrisWarrick> ralsina_: hey, let’s start with a Google Docs survey on the ML.  One question: what Python version and OS are you using for Nikola? 2.7/3.3/3.4/3.5; Windows/OS X/[other: linux/bsd distro]
15:01:57 <gour> "Free t-shirt foreveryone switching from py2.7 to py3.3"
15:01:58 <ChrisWarrick> ralsina_: Just don’t require a Google account like you did last time.
15:02:00 <ralsina_> Second question: "Do you have python 3.3 or later installed?"
15:02:03 <Aeyoun> How much code can be removed with dropping Py27? Lowers maintenance cost and increases performance. That is also an important datapoint.
15:02:11 <ralsina_> ChrisWarrick: I needed to know who was asking for the shirt :-)
15:02:21 <ChrisWarrick> ralsina_: good point
15:02:25 <ralsina_> Aeyoun: not all that much, really
15:02:47 <ChrisWarrick> Aeyoun: it would need to start with a huge rewrite to remove all of our pointers in nikola.utils
15:03:00 <ralsina_> Aeyoun: there are a number of tiny hacks, which were a pain to get right but they always amount to one if and/or one decode :-)
15:03:26 <ralsina_> We can just turn a bunch of helpers in utils into noops
15:04:52 <gour> py3-only nikola is going to become v8?
15:05:15 <Aeyoun> gour: seems like a likely outcome. you’re following the discussion live.
15:06:34 <ChrisWarrick> if we do v8, we’ll have to merge the early tasks garbage
15:07:03 <ralsina_> Is it technically backwards-incompatible if we just stop working on py2.7?
15:07:21 <ralsina_> gour: welcome to open source software: behind the code.
15:07:30 <gour> ralsina_: :-)
15:07:35 <Aeyoun> Someone call in a documentary crew!
15:07:43 <ralsina_> Aeyoun: we have logs!
15:07:51 <Aeyoun> Oh, wait. This is already logged for prosperity.
15:07:57 <ralsina_> I am totally posting this somewhere as "this is how decisions are made in FLOSS"
15:08:40 <ralsina_> Ok, who creates the poll and who posts it in the blog, and who makes sure it appears on planet, and who sends it to the list?
15:08:49 <ralsina_> I would do it but I have work to do :)
15:08:51 <ChrisWarrick> ralsina_: I’ll do it
15:08:57 <ralsina_> ChrisWarrick: you rock dude!
15:09:01 <ChrisWarrick> ralsina_: should be really simple
15:09:03 <ralsina_> Ok, we have a plan!
15:09:17 <ralsina_> Let's consider the poll results in ... a week?
15:09:25 <Aeyoun> Let the logs show we’re all in favor of this plan of action. ;-)
15:09:29 <ralsina_> aye
15:09:51 <ralsina_> Also: can I do the "shame on you" thing on nikola build? It sounds like fun :-)
15:10:27 <ChrisWarrick> ralsina_: for the python version question: radiobox vs checkbox?
15:10:28 <gour> ralsina_: you can mention that Nikola (Tesla) was always for innovation ;)
15:10:44 <Aeyoun> "You’re using FIVE YEAR OLD SOFTWARE. Update your system."
15:11:00 <ralsina_> Aeyoun: I am totally getting at least 5 different comments there
15:11:01 <Aeyoun> https://en.wikipedia.org/wiki/History_of_Python#Version_release_dates
15:11:05 <ralsina_> ChrisWarrick: checkbox... maybe 2?
15:11:23 <ralsina_> ChrisWarrick: one for python version, one for operating system
15:11:32 <ChrisWarrick> ralsina_: ?
15:11:38 <ralsina_> ChrisWarrick: two questions
15:11:54 <ChrisWarrick> ralsina_: there will even be three questions (py2/3 used, OS, has py3)
15:11:57 <ChrisWarrick> ralsina_: and checkboxes it is
15:12:02 <ralsina_> right
15:12:05 <ralsina_> awesome
15:14:44 <ralsina_> Copied / Pasted for posterity

The­re you go, half an hour la­te­r, we ha­ve a plan to (ma­y­be) de­pre­ca­te it.

Now go vo­te he­re: Should Niko­la su­pport py­tho­n2.7? Gi­ves us da­ta to de­ci­de!

Juanjo Conti: Mayo del 68

En la edición de hoy de Poetas leyendo a otros poetas Leo Pez lee Mayo del 68 de Eduardo Zotto.

En una competencia con el sonidista de la feria del libro, Pez lucha porque sus palabras se escuchen sobre la fuerza del jazz.

Juanjo Conti: Presentación de El puto infierno, de Gonzalo Geller

Hace un rato, en la planta alta de la estación Belgrano, durante la feria del libro, Gonzalo Geller presentó su más reciente novela: El puto infierno.

Hoy no pensaba ir a la feria, pero hice el esfuerzo de llegarme por dos razones:

  • Gonzalo es muy genereso con los autores que edita y siempre les organiza presentaciones de libros. Casi no hace presentaciones para los suyos.
  • Soy fan de una fracción de su obra, la fracción que yo denomino "Novelas con humor" ( ¡La re venganza!, Con el asado, no, El muy maldito, por nombrar algunas) y El puto infierno es la continuación de una de ellas. No me la quería perder.

En la presentación Gonzalo contó la genesis del proyecto y los distintos aspectos que lo moldearon así como una muy interesante teoría sobre el éxito del género "zombies". Luego siguienron 3 lecturas.

Con el asado, no: para abrir el apetito.

El punto infierno: el libro que nos reunió.

El imperio de los feos: el nuevo desopilante proyecto.

Manuel Kaufmann (Humitos): Red Libre

Viajar te abre la cabeza. Constantemente uno está conociendo personas, aprendiendo sobre otros estilos de vida y también entendiendo sus negocios para conseguir dinero y así poder seguir adelante con sus sueños.

También uno se encuentra con personas más estáticas, que trabajan fuerte en un mismo lugar todos los días para implementar una idea en particular en esa zona y así construir una red de contactos entre personas, brindar un servicio o mejorar algo existente, promover la cultura local y revolucionar todo lo que se pueda. Hay de todo. En todo el mundo y hasta en los lugares menos pensados.

La motivación

Durante el último tiempo conocí el proyecto mARTadero en Cochabamba, Bolivia en donde están construyendo un Barrio Hacker y que además aloja al HackLab Cochabamba. En este lugar aprendí muchísimas cosas, desde lo social hasta lo técnico y también su combinación. Su uso adecuado e inteligente de la tecnología. Todo esto, lo sume a mis ideas y empezó a gestarse algo...

Luego, llegamos a La Paz, Bolivia y conocimos a los chicos del r00thouse, un HackLab en el que actualmente están construyendo una Red Mesh desde cero y con muy poco conocimiento en el tema. Han estado estudiando muchísimo los últimos meses y lograron montar dos nodos: conectaron la Universidad con su propio HackLab. Con ellos hablamos sobre el impacto social que esto podría tener y cómo hacer que los servicios actuales sean más visibles. También les comenté todo lo que había aprendido en Cochabamba con la experiencia del Barrio Hacker y el HackLab. Agregué también un punto de vista más social y no tan técnico (que es lo que nos gusta y más fácil nos sale) para acercar la tecnología a las personas no-técnicas, facilitándoles su uso y su entendiemiento sobre las mismas. Así, entendiendo como funciona y su porqué, podrán decidir si les va a ser útil o no.

Hoy me levanté mirando el cerro Calvario en Copacabana, Bolivia y me puse a leer un libro que me prestó Facundo Batista en mi visita al #asadogeek 2015: "Redes inalámbricas en los países en desarrollo". Luego de leer unas 4 o 5 páginas, me hizo un cortocircuito dentro de mi cabeza y me llegó a mezclar todas estas experiencias que habíamos estado escuchando y llegué a un nuevo proyecto de "Red Libre".

La idea

Consiste en armar una red WiFi en las ciudades que visitemos con Argentina en Python y ofrecer diferentes servicios además de dar a conocer el proyecto. Notamos que la mayoría de los turistas que recorren la ciudad, en algún momento, están en busca de WiFi para conectarse con sus amigos, buscar lugares para comer, hoteles o turismo, conocer personas locales y demás. Eso nos pareció un buen punto de partida para dar a conocer, sin esfuerzo, lo que hacemos cotidianamente y así sumar más personas a esta locura.

Pero claro, ofrecer solo eso me parece que era poco y que podríamos sacarle mucho más provecho a una red WiFi. Es por eso que queremos, en principio, tener estos servicios disponibles de forma gratuita para quienes se conecten a esta red (en modo offline):

  • Nuestros blogs (el blog de humitos, Química & Nómada) [1]
  • Sitio web de Argentina en Python
  • CD-Pedia en su formato DVD
  • Chat mediante IRC / Bonjour o similar
  • Buscador de POIs mediante upoi.org
  • Maps.me, OSMAnd y sus correspondientes mapas

Todo esto de forma offline y disponible para todos los que puedan conectarse a la red. Una vez que los usuarios se conecten e ingresen google.com, por ejemplo, en vez de mostrarse el sitio de Google se les mostrará una página con una explicación detallada sobre el proyecto de Red Libre y los servicios que están disponible.

De esta forma, podrían chatear entre los que estén conectados y cercanos, conocerse entre ellos y juntarse a tomar una birra en el bar de al lado. Coordinar para ir a hacer una excursión juntos o lo que se les ocurra que cualquier comunicación pueda brindar. Leer sobre nosotros y nuestros blogs en caso de estar aburridos y tener que hacer tiempo a que salga su bus, leer diferentes artículos de Wikipedia sobre el lugar en el que se encuentran, conocer nuestros proyectos y sumarse a la causa, buscar un montón de información sobre lugares interesantes en la ciudad mediante OpenStreetMap y también llevarse esos datos en su celular para luego consultarlos en modo offline.

Suena interesante, ¿no?

¿Cómo montaríamos esto?

En todas las ciudades hay lugares que son muy transitados por turistas que están buscando donde alojarse, qué comer o bien conocer cuáles son las actividades de esa ciudad. Esos son lugares claves para montar esta red WiFi Libre y dar a conocer nuestros proyectos y también ofrecer un servicio gratuito y de utilidad (además, estaríamos dando a conocer varios proyectos de Software Libre que no son fáciles de acercar al público general). La idea es llegar a esos lugares en auto, conectar nuestro router WiFi (Ubiquiti) a la batería del auto junto con el servidor (RaspberryPi) y su disco externo con los datos. Esto hace que sea totalmente transportable y que podamos alcanzar cualquier lugar de la ciudad [2].

En el lugar que estacionemos el auto, podríamos poner la bandera de Argentina en Python, una mesa, sombrilla y sillas para dar a conocer lo que hacemos, entregar micro-tutoriales, difundir estas herramientas y ayudar a la gente a configurar/instalar las apps en sus celulares. También, si tenemos un evento pactado en esa ciudad, podríamos hacer difusión en este mismo lugar.

Conclusión

Creo que de esta forma estaríamos acercando un montón de servicios y utilidades a muchas personas sin quizás tener interacción alguna en primera instancia. Mostrando el Software Libre como alternativa a muchas herramientas cotidianas que usamos sin tener conciencia alguna sobre nuestros datos y llegar a charla más que interesantes.

Además de darnos una visibilidad más fuerte en la ciudad que nos encontramos y así poder conseguir ayuda y contactos para seguir adelante con nuestras locuras itinerantes :)

Al día de la fecha no tenemos el router WiFi Ubiquiti ni la RaspberryPi que necesitamos. Podés ayudarnos a tomar una decisión sobre qué modelo nos conviene comprar para obtener un mejor servicio, como así también económicamente para comprar estos dispositivos.

Nos encantaría leer/escuchar comentarios y sugerencias sobre qué otros servicios podríamos brindar en esta Red Libre y así acercar más información a usuarios pasajeros.

¡Muchas gracias!

[1] Podríamos tener muchos otros blog también aquí
[2] Incluso, en un futuro se podría disponer de una batería extra para no depender de llevar el auto a ese lugar

Facundo Batista: Magicicada: the evolution of file sync


I spent my first years in at Canonical working in the Ubuntu One project, particularly in what we always called "filesync": the pure file synchronization server (which was propietary at that time), the client, and the protocol (both always open source).

Then, the company didn't push the project anymore, I started to work on other areas, and eventually the project was cancelled. When they cancelled it, they made the promise of opensourcing the server, which will allow to anyone put the full stack to work and have their own personal filesync cloud.

Time passed by, and at some point I got instructions to put daily time on that opensourcing work. I've been working the whole day on this for several weeks, and even more weeks part time, massaging all the code and dependencies for the project to be public. Then the project was released.

Was the project easily usable for anyone to start syncing files? Not really, my goals when working in the project to make it available for everybody were:

  • use only dependencies and libraries from a standard Ubuntu Precise environment and from freely available code from Launchpad
  • "make test" to pass ok, which means that further development can be easily started
  • "make start-oauth" to start and work ok, which means that the server actually works and sync files

However, there's a lot to do for the service to be really used in a production environment where we can put our files and trust it, including but not limited to:

  • keep cleaning the project, lot of quirks and small weirdness to fix
  • make it to store files not in AWS but in the local filesystem
  • (after last item because some internal working reasons involving resumable upload that won't explain here) make it work in Trusty, or even in any modern (Ubuntu or not Ubuntu) environment
  • make it work nicely in a production environment (currently, for example, everytime it starts it uses a fresh database!)
  • simplify it: the server will not longer be used to hold a million users so features like use PostgreSQL in several shards are not worth it anymore
  • and several etceteras

Note that part of this work already started!! Naty Bidart and myself are working actively in some of those points.

Where? Well, with Natalia we already had the Magicicada Project, which was a GUI to interact with the client. So we forked the rest of the projects and naturally put them under that namespace.

So, the whole solution stack currently is:

  • Magicicada Server: the one that "lives in the cloud" and holds the files so all your clients can access them.
  • Magicicada Client: the application that runs in background in each of your computers, uploading/downloading new/changed files from/to the server.
  • Magicicada Protocol: a project with common code between client and server, particularly all the protocol implementation that allows them to talk each other.
  • Magicicada GUI: a small graphical utility that lets you interact and supervise what the client is doing in your computer.


Magicicada

All further work will be done in those projects. If you want to participate please suscribe to the mailing list or say hi in the IRC channel (#magicicada in Freenode). Also, you can file issues for any bug you find or new features/changes you want (be sure to choose the right project: server, client, protocol or gui).

If you're a bzr impaired developer, we have mirrors in GitHub (currently, only for the server, others will be added in the following weeks, ping us if you want any of these to happen sooner).

In any case, you may want to follow the Magicicada twitter account, where will be posting all kind of progress notifications.

Mariano Guerra: Quotes N+1

Some Quotes I had around and wanted to put somewhere.

Navigation implies state. Software that can be navigated is software in which the user can get lost. The more navigation, the more corners to get stuck in. The more manipulable state, the more ways to wander into a “bad mode.” State is the primary reason people fear computers—stateful things can be broken
Most of the time, a person sits down at her personal computer not to create, but to read, observe, study, explore, make cognitive connections, and ultimately come to an understanding. This person is not seeking to make her mark upon the world, but to rearrange her own neurons. The computer becomes a medium for asking questions, making comparisons, and drawing conclusions—that is, for learning.
Many types of context can be naturally expressed in some informative graphical domain, relieving the user from manipulating information-free general-purpose controls.
If the software properly infers as much as possible from history and the environment, it should be able to produce at least a reasonable starting point for the context model. Most of the user’s interaction will then consist of correcting (or confirming) the software’s predictions. This is generally less stressful than constructing the entire context from scratch.
Simplicity. “I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is make it so complicated that there are no obvious deficiencies.” C.A.R. Hoare, The Emperor’s Old Clothes Turing Award lecture (1980), p81. From a practical (and historical) standpoint, we can assume that no complex specification will be implemented exactly. This, in itself, is not a problem. However, multiple, decentralized implementations of a complex specification will be incorrect in different ways. A platform consisting of the union of all possible implementations is thus arbitrarily unreliable—the designer can have no assurance of what a recipient actually receives. For a platform to be reliable, it must either have a single implementation, or be so utterly simple that it can be implemented uniformly. If we assume a practical need for open, freely implementable standards, the only option is simplicity.*

All of our days are numbered, we cannot afford to be idle To act on a bad idea is better than to not act at all. Because the worth of an idea never becomes apparent until you do it.

—nick cave, 20000 days on earth

Mariano Guerra: Quotes N+1

Some Quotes I had around and wanted to put somewhere.

Navigation implies state. Software that can be navigated is software in which the user can get lost. The more navigation, the more corners to get stuck in. The more manipulable state, the more ways to wander into a “bad mode.” State is the primary reason people fear computers—stateful things can be broken
Most of the time, a person sits down at her personal computer not to create, but to read, observe, study, explore, make cognitive connections, and ultimately come to an understanding. This person is not seeking to make her mark upon the world, but to rearrange her own neurons. The computer becomes a medium for asking questions, making comparisons, and drawing conclusions—that is, for learning.
Many types of context can be naturally expressed in some informative graphical domain, relieving the user from manipulating information-free general-purpose controls.
If the software properly infers as much as possible from history and the environment, it should be able to produce at least a reasonable starting point for the context model. Most of the user’s interaction will then consist of correcting (or confirming) the software’s predictions. This is generally less stressful than constructing the entire context from scratch.
Simplicity. “I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is make it so complicated that there are no obvious deficiencies.” C.A.R. Hoare, The Emperor’s Old Clothes Turing Award lecture (1980), p81. From a practical (and historical) standpoint, we can assume that no complex specification will be implemented exactly. This, in itself, is not a problem. However, multiple, decentralized implementations of a complex specification will be incorrect in different ways. A platform consisting of the union of all possible implementations is thus arbitrarily unreliable—the designer can have no assurance of what a recipient actually receives. For a platform to be reliable, it must either have a single implementation, or be so utterly simple that it can be implemented uniformly. If we assume a practical need for open, freely implementable standards, the only option is simplicity.*

All of our days are numbered, we cannot afford to be idle To act on a bad idea is better than to not act at all. Because the worth of an idea never becomes apparent until you do it.

—nick cave, 20000 days on earth

Juanjo Conti: Kowabunga

Contra una pared violentada y recuperada, Gonzalo "Kun" Vega lee Fluviality, un poema que aparece en Kowabunga de Santiago Pontoni (Ediciones Diatriba).

De fondo The Offspring se esfuerza por tapar su voz pero no lo consigue.

Juanjo Conti: Reimprimí Santa Furia

Faltaba una semana para que empiece la feria del libro y Santa Furia, mi libro de cuentos más oscuros, estaba agotado. Tomé la desición de reimprimirlo y por suerte la imprenta cumplió en tiempo y forma.

Ante la pregunta del imprentero, decidí cambiar el laminado de la tapa de mate a brillo y me gusta mucho el resultado.

santa_furia_brillo.thumbnail.jpg

Lo puden conseguir en la Feria del Libro de Santa Fe en el stand de las editoriales independientes: ¡al fondo a la derecha!