Skip to main content

Ralsina.Me — Roberto Alsina's website

Posts about programming (old posts, page 76)

La Importancia de los Dedos en el Pensamiento Informático

Pen­sar con cosas que no sean el cere­bro es descal­i­fi­ca­to­ri­o: vos pen­sás con el cu­lo, vos pen­sás con el pene. Es una vari­ante de hac­er cualquier cosa con la parte in­cor­rec­ta del cuer­po, porque yo es­cri­bo con los co­dos, el­la pro­gra­ma con las patas, etc. Tal vez por eso me sien­to in­có­mo­do cuan­do em­piezo un proyec­to nuevo, porque sien­to una pi­cazón in­de­cente de em­pezar a pe­gar­le a las teclas con las yemas, co­mo si las ideas de co­mo im­ple­men­tar cosas no salier­an de mi cabeza, co­mo si bro­taran de mis de­dos, co­mo si fluy­er­an por mis bra­zos, co­mo Pal­pa­tine elec­tro­cu­tan­do a Darth Vader, con esa pre­po­ten­cia Arl­tiana de no poder con­ver­sar sino ti­pear en orgul­losa soledad pro­gra­mas que encier­ren la vi­o­len­cia de un cross a la mandíbu­la, y "que los eu­nucos bufen".

Y no, no es la man­era ide­al de hac­er las cosas, sospe­cho, en el mis­mo sen­ti­do que cha­par en la primera ci­ta o to­car ese cu­lo con­sen­ti­do en el primer lento de Air Sup­ply fueron de­ci­siones que parecieron bue­nas en el mo­men­to pero mu­chos hemos vivi­do para lamen­tar, pen­sar de­masi­a­do con los de­dos pro­duce códi­go de mier­da, co­mo era de mier­da el novi­az­go que em­pezó en aquel asalto, pero es real­mente códi­go de mier­da si es códi­go que ex­iste com­para­do con el teóri­co novi­az­go con la chi­ca que no quiso bailar con un­o? No, es códi­go co­pado, es códi­go gau­chi­to, es códi­go con savoir faire.

Pen­sar de­masi­a­do es some­terse al wa­ter­fall in­te­ri­or, que es el pe­or wa­ter­fal­l, y sí, a ve­ces he pen­sa­do un pro­gra­ma muy lenta­mente du­rante cin­co años, de­ján­do­lo madu­rar en mi in­te­ri­or co­mo una Tahi­na spectabilis que flo­rece ca­da cien años, pero re­cuer­den que la flor que pro­duce huele co­mo un cadáver y la plan­ta muere in­medi­ata­mente. Los proyec­tos maduros son proyec­tos pu­drién­dose, es un equi­lib­rio fi­no que no cualquiera puede cam­i­nar, no so­mos to­dos Philippe Pe­tit, no sabe­mos cruzar de una torre a la otra so­bre una so­ga, nos cae­mos co­mo King Kong, trepa­dos a una torre que no en­ten­de­mos pen­san­do en Jes­si­ca Lange.

La pro­gra­mación no es prog rock, no es Lark Tongues in As­pic, pro­gra­mar es, el 90% del tiem­po, los mis­mos cu­a­tro acordes de Sheena is a Punk Rock­er, cam­bi­a­dos de lu­gar, más rápi­do o más lento, mien­tras hacés temas de dos min­u­tos porque tu pa­pá no te quiso cuan­do eras chico, es recor­dar que el primero se tira, co­mo el mate, que el primero te lo re­galan el se­gun­do te lo venden, que por eso el primero lo re­galás, el se­gun­do lo hacés boni­to y lo re­galás tam­bién, que cara­jo.

Y mien­tras tan­to, es­cuchen "Co­mo sal­va­jes" de At­taque 77, que du­ra tres min­u­tos, te da ganas de salir a patear bol­sas de ba­sura por la calle, y es un cuen­to de sci­fi me­di­ana­mente de­cen­te, no per­fec­to, pero mu­cho mejor que el que no es­cribiste.

I am now using almost an IDE

I have long been a pro­po­nent of sim­ple text ed­i­tors.

Not for me was emac­s, with its mul­ti­tude of modes and mag­i­cal elisp code to do ev­ery­thing.

Not even vim with its mul­ti­tude of ex­ten­sions achiev­ing mag­i­cal pro­duc­tiv­i­ty with three key­strokes.

Not even would I use the ubiq­ui­tous jet­brains IDE with mag­ic refac­tor­ing that writes code on its own.

No, for twen­ty years or so I have writ­ten my code us­ing a plain text ed­i­tor. Un­til re­cent­ly, that meant kwrite. Not even kate. Kwrite, the one that is slight­ly more pow­er­ful than notepad.

But then I got a new job, and ev­ery­one us­es an IDE so I start­ed think­ing... I must be miss­ing some­thing.

Be­cause if ev­ery­one is do­ing it dif­fer­ent­ly from you, then one of the fol­low­ing things is like­ly to be true:

  • ev­ery­one is wrong
  • it's pure­ly an opin­ion thing and it does­n't mat­ter much
  • you are miss­ing out

You know you are old once you as­sume the first. Since I am go­ing through some sort of weird mid life cri­sis I am forc­ing my­self to choose the last op­tion most of the time. So, I start­ed try­ing out stuff. Which is why I no longer use bash. Or uni­ty. Or KDE. But those are sto­ries for some oth­er bon­fire, this one is about my text ed­i­tor midlife cri­sis.


It's huge. And slow. Like, re­al­ly slow. And the ex­ten­sion qual­i­ty is very un­even. For ex­am­ple, all the ter­mi­nals felt wrong.

Once it start­ed drag­ging af­ter be­ing open for a cou­ple of days... well, I re­moved it and smug­ly went back to my old work­flow.

And then I tried...


The ex­ten­sion qual­i­ty was soooo much bet­ter! And some are just awe­some. The way you can choose a vir­tualenv in­ter­preter for a project is awe­some.

Com­pared to Atom it's down­right snap­py!

The on­ly things I did not like were:

  • So much mag­ic in place, some­times things on­ly worked in the IDE.
  • Too slow to start, so I still had to use a plain text ed­i­tor for ca­su­al ed­it­s.
  • At one point, things start­ed to rot, and func­tions that had been work­ing fine start­ed to mis­be­have.

So then I had my goldie­locks mo­men­t...


I was ex­pect­ing to hate it. It's called Vis­ual Stu­dio! It comes from Mi­crosoft! It's elec­tron-based like Atom!

Yet, I loved it at first sight.

Not go­ing to go over many de­tails be­cause I am not in the busi­ness of con­vinc­ing peo­ple of things but here are some of the high­light­s:

  • Good python sup­port, in­clud­ing vir­tualen­vs, for­mat­ting, au­to­com­plete, refac­tor­ing, de­bug­ger, etc.
  • Good Go sup­port.
  • Nice ter­mi­nal gad­get! Ctr­l+click to open files men­tioned in the ter­mi­nal!
  • Good mark­down/reSt sup­port in­clud­ing pre­views
  • The "com­pared to work­ing tree" view is ge­nious
  • If you run "vs­code some­file" in the ter­mi­nal, it opens in the cur­rent vs­code.
  • The set­tings mech­a­nism and UX are a great idea.
  • It's fast enough
  • The UI is fair­ly min­i­mal, so most of the time it will look like my pre­vi­ous work­flow used to look: two text files open side by side.
  • Test run­ner in­te­gra­tion is neat.
  • In Ubuntu you can install it as snap install vscode --classic ... takes all of 30 seconds. And it's updated forever.
  • Lots and lots and lots of de­cent qual­i­ty ex­ten­sion­s.

So, all in all it does all the things I liked from the IDE side of the uni­verse while not mak­ing the things I liked from text ed­i­tors less con­ve­nien­t. And that's why I use it now.

How I Learned to Stop Worrying and Love JSON Schema



This post op­er­ates on a few shared as­sump­tion­s. So, we need to ex­plic­it­ly state them, or oth­er­wise you will read things that are more or less ra­tio­nal but they will ap­pear to be garbage.

  • APIs are good
  • Many APIs are web APIs
  • Many web APIs con­sume and pro­duce JSON
  • JSON is good
  • JSON is bet­ter if you know what will be in it

So, JSON Schema is a way to in­crease the num­ber of times in your life that JSON is bet­ter in that way, there­fore mak­ing you hap­pi­er.

So, let's do a quick in­tro on JSON Schema. You can al­ways read a much longer and sure­ly bet­ter one from which I stole most ex­am­ples at Un­der­stand­ing JSON Schema. lat­er (or right now, it's your time, la­dy, I am not the boss of you).


So, a JSON Schema de­scribes your da­ta. Here is the sim­plest schema, that match­es any­thing:

{ }

Scary, uh? Here's a more re­stric­tive one:

  "type": "string"

That means "a thing, which is a string." So this is valid: "foo" and this isn't 42 Usually, on APIs you exchange JSON objects (dictionaries for you pythonistas), so this is more like you will see in real life:

  "type": "object",
  "properties": {
    "street_address": { "type": "string" },
    "city": { "type": "string" },
    "state": { "type": "string" }
  "required": ["street_address", "city", "state"]

That means "it's an ob­jec­t", that has in­side it "street_ad­dress", "c­i­ty" and "s­tate", and they are all re­quired.

Let's sup­pose that's all we need to know about schemas. Again, be­fore you ac­tu­al­ly use them in anger you need to go and read Un­der­stand­ing JSON Schema. for now just as­sume there is a thing called a JSON Schema, and that it can be used to de­fine what your da­ta is sup­posed to look like, and that it's de­fined some­thing like we saw here, in JSON. Cool?

Using schemas

Of course schemas are use­less if you don't use them. You will use them as part of the "con­trac­t" your API prom­ises to ful­fil­l. So, now you need to val­i­date things against it. For that, in python, we can use json­schema

It's pret­ty sim­ple! Here is a "ful­l" ex­am­ple.

import jsonschema

schema = {
  "type": "object",
  "properties": {
    "street_address": {"type": "string"},
    "city": {"type": "string"},
    "state": {"type": "string"},
  "required": ["street_address", "city", "state"]

    "street_address": "foo",
    "city": "bar",
    "state": "foobar"
}, schema)

If the da­ta does­n't val­i­date, jsonchema will raise an ex­cep­tion, like this:

>>> jsonschema.validate({
...     "street_address": "foo",
...     "city": "bar",
... }, schema)
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
  File "jsonschema/", line 541, in validate
    cls(schema, *args, **kwargs).validate(instance)
  File "jsonschema/", line 130, in validate
    raise error
jsonschema.exceptions.ValidationError: 'state' is a required property

Failed validating 'required' in schema:
    {'properties': {'city': {'type': 'string'},
                    'state': {'type': 'string'},
                    'street_address': {'type': 'string'}},
     'required': ['street_address', 'city', 'state'],
     'type': 'object'}

On instance:
    {'city': 'bar', 'street_address': 'foo'}

Hey, that is a pret­ty nice de­scrip­tion of what is wrong with that da­ta. That is how you use a JSON schema. Now, where would you use it?

Getting value out of schemas

Schemas are use­less if not used. They are worth­less if you don't get val­ue out of us­ing them.

These are some ways they add val­ue to your code:

  • You can use them in your web app end­point, to val­i­date things.
  • You can use them in your client code, to val­i­date you are not send­ing garbage.
  • You can use a fuzzer to feed da­ta that is tech­ni­cal­ly valid to your end­point, and make sure things don't ex­plode in in­ter­est­ing ways.

But here is the most val­ue you can ex­tract of JSON schemas:

You can dis­cuss the con­tract be­tween com­po­nents in un­am­bigu­ous terms and en­force the con­tract once it's in place.

We are de­vs. We dis­cuss via branch­es, and com­ments in code re­view. JSON Schema turns a vague ar­gu­ment about doc­u­men­ta­tion in­to a fac­t-based dis­cus­sion of da­ta. And we are much, much bet­ter at do­ing the lat­ter than we are at do­ing the for­mer. Dis­cuss the con­tract­s.

Since the doc­u­ment de­scrib­ing (this part of) the con­tract is ac­tu­al­ly used as part of the API def­i­ni­tions in the code, that means the doc­u­ment can nev­er be left be­hind. Ev­ery change in the code that changes the con­tract is ob­vi­ous and re­quires an ex­plic­it rene­go­ti­a­tion. You can't break API by ac­ci­den­t, and you can't break API and hope no­body will no­tice. En­force the con­tract­s.

Fi­nal­ly, you can ver­sion the con­trac­t. Use that along with API ver­sion­ing and voilá, you know how to man­age change! Ver­sion your con­tract­s.

  • Dis­cuss your con­tracts
  • En­force your con­tracts
  • Ver­sion your con­tracts

So now you can stop wor­ry­ing and love JSON Schema as well.

Creating Languages For Dummies


I don't have the usu­al pro­gram­mer's ed­u­ca­tion. I stud­ied math­s, and then dropped out of that, and am most­ly self­-­taugh­t. So, there are some parts of pro­gram­ming I al­ways saw weari­ly, think­ing to my­self that I re­al­ly should go to school to learn them. One re­mark­able such area is pars­ing and im­ple­ment­ing lan­guages.

Well... sure, school is al­ways a good idea, but this is not that hard. In this ar­ti­cle I will ex­plain how to go from noth­ing to a func­tion­ing, ex­ten­si­ble lan­guage, us­ing Python and Py­Pars­ing. If you are as scared of gram­mars, parsers and all that jazz as I used to be, come along, it's pret­ty sim­ple,

Read more…

FLOSS Decision Making in Action

If you are read­ing this there is a good chance you are in­volved some­how in open source de­vel­op­men­t, or soft­ware de­vel­op­ment in gen­er­al. One thing lots of peo­ple ask me when they know I have lead this sort of projects for a long time is "how do you de­cide things?". To which I have all sorts of bad an­swers like:

  • "It's a con­sen­­sus thing"

  • "It hap­pens or­­gan­i­­cal­­ly"

  • "Some­­times it just hap­pen­s"

  • "A­n­ar­chy!"

  • "Y­ou do what you do"

So, now here I have an AWE­SOME ex­am­ple of FLOSS de­ci­sion mak­ing in ac­tion, which is ... all of the above.

Some con­tex­t: Niko­la is a stat­ic site gen­er­a­tor, so it deals with read­ing and writ­ing tex­tu­al da­ta from disk. It's al­so an in­ter­na­tion­al­ized pro­jec­t, which sup­ports mul­ti­lin­gual sites and trans­lat­ed da­ta. It al­so runs un mul­ti­ple plat­form­s, like Win­dows, OS­X, Lin­ux, etc.

And to make that more fun, it also works on Python 2.7, and 3.3 or later. Which means it has to handle two different models on how to work with unicode data, in the same codebase. And that's not fun. So, we have been floating around the idea of deprecating python 2.7. And so, when s2hc_johan walks in with a unicode problem...

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>
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:
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:
14:48:10 -travis-ci:#nikola- Build details:
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:
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:
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:
14:59:46 -travis-ci:#nikola- Build details:
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>
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

There you go, half an hour lat­er, we have a plan to (may­be) dep­re­cate it.

Now go vote here: Should Niko­la sup­port python2.7? Gives us da­ta to de­cide!

Contents © 2000-2020 Roberto Alsina