Skip to main content

Ralsina.Me — Roberto Alsina's website

Jack the Bodiless (Galactic Milieu Trilogy #1)

Cover for Jack the Bodiless (Galactic Milieu Trilogy #1)

Review:

The pliocene ex­ile saga was one of my favourite sci­fi bok se­ries when I was a teenag­er. I had read it all in the wrong or­der be­cause find­ing the books in Ar­genti­na was not easy.

Thanks to goodreads I learned there were a bunch of oth­er books set in the same uni­verse and de­cid­ed read­ing them.

While not as en­joy­able, be­cause these as­sume lots of back­sto­ry, the writ­ing is en­joy­able, and it's fun. I sure would have loved to read these 20 years ago.

Creating a forum the easy way (32 LOC)

This is on­ly the first part of a project to cre­ate the sim­plest (for me) soft­ware fo­rum pos­si­ble.

Here are the fea­tures I wan­t:

  • Lo­­gin us­ing twit­ter / Face­­book / Google / OpenID

  • Un­lim­it­ed num­ber of threads

  • Sup­­port for like / dis­­­like both on threads and on posts

  • Avatars

  • HTML in com­­ments

  • Mail the us­er on replies

  • RSS feeds for threads

You can see it in ac­tion at http://­foro.net­man­ager­s.­com.ar (for a lim­it­ed time on­ly ;-)

And here is the code:

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)

It re­quires Bot­tle and the Dis­qus python API

Of course, there is al­so a bit of tem­plat­ing in­volved, here is main.t­pl and the thread­.t­pl. Since I suck at HTM­L, it us­es Bluetrip CSS and it's more than sim­ple enough to cus­tom­ize.

OF COURSE I AM CHEAT­ING!

This thing is just a sim­ple ve­neer around Dis­qus! More like a blog with com­ments and with­out posts than a fo­rum! But ... what's miss­ing to make this a re­al fo­rum? It work­s, does­n't it? You could even use Dis­qus cat­e­gories to cre­ate sub­fo­rum­s...

All things con­sid­ered, I think it's a cute hack.

And if you wait a few days, this will lead to some­thing much more mag­i­cal!

Full source code at http://­mag­ic­fo­rum.­google­code.­com

About Japan and God and Lilita

As ev­ery­one knows, there was a big quake in Japan, then a Tsunami, then a vol­cano erupt­ed, then a nu­cle­ar plant caught fire. All things con­sid­ered, a re­al­ly crap­py week.

Then again, if I were ja­pa­nese and I had to read id­iots telling me this was be­cause god is pu­bish­ing me be­cause of (what­ev­er the id­iot does­n't like about Japan), I would be sore­ly tempt­ed to find the mo­rons and ... ok, con­sid­er­ing the ja­pa­nese are show­ing they are very rea­son­able peo­ple, prob­a­bly just tell him some­thing po­lite­ly.

OTO­H, I am not ja­pa­nese. Which means I can ex­plain in great de­tail why those who say "maybe it's <what­ev­er> pun­ish­ing | telling japan <some­thing>" are a com­plete waste of oxy­gen.

I will fo­cus on one ex­am­ple, be­cause it's a very spe­cial re­li­gious mo­ron: a pres­i­den­tial can­di­date in Ar­genti­na, called Lili­ta Car­rió.

Here's what she said (s­pan­ish is the orig­i­nal, of course):

"Dios nos es­tá di­cien­do que debe­mos cuidar el plan­e­ta, que no sig­amos de­struyen­do la tier­ra, que vi­va­mos en la ver­dad, en la de­cen­ci­a, en la jus­ti­ci­a, que no use­mos la tec­nología, aunque sea de man­era pací­fi­ca. Hay que leer los sig­nos de los tiem­pos"

"God is telling us that we should take care of the plan­et, that we should stop de­stroy­ing the earth, that we should live in truth, in de­cen­cy, in jus­tice, and stop us­ing tech­nol­o­gy, even if it's peace­ful­ly. We should read the sign of the times".

Let's con­sid­er that lit­tle by lit­tle.

"God is telling us that we should take care of the plan­et"

I must con­fess I am amazed that an almight­ly be­ing is less ca­pa­ble of com­mu­ni­cat­ing ideas than my 3.9 year old kid. When he wants me to play bal­l, he brings the ball and tells me "Dad, let's play bal­l".

On the oth­er hand, god ap­par­ent­ly, to tell us to stop us­ing tech­nol­o­gy, caus­es a se­ries of cat­a­stroph­ic events in the oth­er end of the world, then brings us the news over the In­ter­net (a tech­no­log­i­cal mir­a­cle), so that Lili­ta can di­vine god's in­ten­tions and then re-broad­cast them to us over the ra­dio (of course, an er­ar­li­er tech­no­log­i­cal mir­a­cle).

Now, does that make sense to any­one? I mean, why does­n't god just, you know, say what he means in a rea­son­able man­ner? Be­cause for re­li­gious peo­ple, the fun is in the div­ina­tion. They are act­ing like ro­man priests di­vin­ing the fu­ture in the en­trails of an an­i­mal, ex­cept they are us­ing the life and suf­fer­ing of peo­ple.

Oh, look, suf­fer­ing in Japan, that means we should stop us­ing the Wi­i!

Not on­ly is that ap­proach com­plete­ly against ev­ery­thing chris­tian doc­trine teach­es, from with the virtue of char­i­ty (if god did it to tell us some­thing, by def­i­ni­tion they de­served it!) to the in­junc­tion against di­vin­ing god's mes­sages in por­tents (yes, it is for­bid­den, go ask a priest).

"[­God is telling us] that we should stop de­stroy­ing the earth"

Oh, gee, ok then! OTO­H, maybe a more sub­tle way than half-break­ing ev­ery­thing in a whole coun­try to let us know next time? Please?

"[­God is telling us] that we should live in truth"

Ok, yes, let's do that. I will start by not be­liev­ing in god, who tru­ly does not ex­ist. When you catch up to that we'll ar­gue some more, ok?

"[­God is telling us to] stop us­ing tech­nol­o­gy, even if it's peace­ful­ly."

I would love if this pres­i­den­tial can­di­date did­n't use tech­nol­o­gy be­cause it would mean I would not have to see her sanc­ti­mo­nious stu­pid­i­ty ev­er again. OTO­H, if we would­n't have tech­nol­o­gy, we would prob­a­bly not know about the earth­quake yet. I sup­pose she may have been say­ing "nu­cle­ar tech­nol­o­gy" and this is out of con­tex­t.

OTO­H, num­ber of peo­ple killed by peace­ful nu­cle­ar tech­nol­o­gy since 1950: 1000? 10000?

num­ber of peo­ple killed by earth­quakes and tsuna­mi in the last 5 years: 100000? 200000?

Yes, those are num­bers I just made up, but I am bet­ting they are more right than wrong, so, ba­si­cal­ly, god has killed more peo­ple this week telling us not to use nu­cle­ar pow­er, than nu­cle­ar pow­er has killed in the last 50 years. Not ex­act­ly good com­mu­ni­ca­tion skill­s.

"We should read the sign of the times"

Ok, here it is:

The New York Times

Don't vote for this blither­ing id­iot. She's dan­ger­ous, and prob­a­bly men­tal­ly il­l.

New golfing challenge: PatoCabrera

In the spir­it of the De Vi­cen­zo web browser, I am start­ing a new pro­gram, called Pa­to Cabr­era. Here are the rules:

  • Twit­ter client (no iden­ti.­­ca in the first ver­­sion, but to be added lat­er)

  • Has these fea­­tures: http://­­paste­bin.lug­­men.org.ar/6464

  • Has to be im­­ple­­men­t­ed be­­fore April 4th

  • Smal­l­­er than 16384 bytes (of python code) but may be larg­er be­­cause of art­­work.

Let's see how it works :-)


Contents © 2000-2024 Roberto Alsina