Polyglot hacker & Architect


I was reading the intro to Ender’s Game and Orson Scott Card talks about how influent authors’ impact materializes.

He says that, for example, Tolkien fans routinely veiledly rewrite their literary hero. That we all already knew. He also points out a more cunning observation: some authors mimic their idols’ ability to make stories that feel “fresh”.

I found this intriguingly remarkable. It had a very “meta-meme” ring to it. We’re not only making art eternal by copying it, we’re making the way we make art eternal. Every level of abstraction is evolvable, not just the end result.

Another not-so-tangible conclusion, is that genetics is just a way to encode admiration and imitation into ours species.

Short End

So, I kinda blogged daily lately. I didn’t quite enjoyed it as much as I thought I would. Two and a half reasons:

  • It would always be an afterthought in the day. I would only remember I hadn’t written right before bed. Doing something in this setup was always unpleasurable. Yes, yes, I know. Make habits and whatnot. Still, that’s how it went so far.
  • I really didn’t like not polishing my writing. I like to edit my stuff. I don’t always get to a perfect state but at least I get somewhere where it’s readable. However, doing it everyday would eat up a sizable chunk. In most shorts I’ve written and let myself edit them, I took about fifteen minutes to write and one hour re-reading, correcting mistakes, moving ideas around to have a better reading flow, etc. Editing. This is not really a sustainable pace.
  • The half reason is not having a subject before writing. This bothers me but hasn’t been much of a hinderance. Every time I let my thoughts flow into sentences, a pattern — and therefore a topic — emerges quickly. Still, it bothers me because I like to write stuff that deserves to be written about, not just some random ramblings. We all have twitter for that.

Still, I mustn’t let this deter me from writing. I still believe I have to exercise my writing skills and express my opinions more frequently. However, the “short article a day” method wasn’t helping me that much. I have to devise a new rhythm for myself. Without making any promises, I’m aiming for 2 articles a week. It’s more important to keep the flow than to have a rigid method.

Let’s see how this goes.

Short 6: It’s debatable, dear Watson.


I love and hate to talk about taste. What is, exactly, to have taste? Most say taste is just a set of preferences. And they also argue that taste isn’t open for debate. Fruitful debate, that is.

I could not disagree more. In my not-so-humble opinion, to have taste is to have the ability to both: identify the characteristics of something and, evaluate how well they perform a certain set of goals.

This effort hasn’t to be deliberate nor conscious. In fact, I think most people’s taste is mainly emotional (as in Malcolm Gladwell’s Blink interpretation of gut feeling). It’s hard to inspect something so intractable as emotions, let alone discuss. Sometimes, there aren’t even enough nouns in our languages to describe them. However, as always, something being difficult doesn’t mean it shouldn’t be done. Quite on the contrary: solving difficult problems typically wields good rewards.

My reasoning for this particular definition comes from, as a software engineer, repeatedly comparing solutions to a problem at different times of my life. Some of those times, specially when there has been some time since I solved it, my evaluation of what is the solution changes. Why? Why do I, when faced with the same context (and the problem is part of the context here), change parameters? Or, by the same reasoning, dig my commitment to a certain solution even deeper? I have found that — and this is purely empirical with no data whatsoever to back it up — I become aware of more and more facets of the problem. Every time I try something out, I have to bear the pains that solution inflicts and some of these pains obviates something I haven’t before contemplated. And, in further evaluations, I will carry this fresh scar that these fresh pains have ripped on me [1]. If I was to solve only one problem over and over again, I think my axis of evaluation wouldn’t grow much. However, lessons learnt doing one thing spill to everything else you do (assuming you’re sufficiently smart to correlate stuff). As so, every time I solve a problem, even if it’s a repeated one, I get a new opportunity to test how well my solution evaluation system has worked. How my scars have prevented me from getting any more scars.

The very same reasoning for this particular definition also comes from, as a whisky drinker, repeatedly drinking the same whisky at different times of my life. I have tasted other whiskies in the mean time and, surely enough, it’s easier to recognize some slight figment of taste. Easy enough that I can now direct the effort of tasting to other, less explored nuances. Repeated and diverse tastings of whisky teach me how to better savor it because I get more at ease with identifying the various elements in its taste. It’s pretty much the same train of thought. The difference is that you get drunk, provided enough whisky.

To avoid or pursue something, you have to recognize it. It might not be a conscious recognition at first, though. Bringing this recognition from unconscious to consciousness make you able to talk about it. This transition is the hardest part in developing taste. It’s identifying the characteristics of something, as I said before.

So, we nailed the first part. The second part, evaluating how well something performs a certain set of goals, is somewhat easier. The hard part is deciding what’s the correct set of goals and their relative importance. It’s when our preferences, or beliefs, meddle in.

For example, I, when developing software, value

  1. effectiveness (accounting getting finished in time);
  2. maintainability;
  3. efficiency.

There are those who disagree with me. Some wouldn’t consider maintainability (or have it further down the list). And, thus, this influences their work. Knowing the right order is very debatable. People can make money/products either way. They might argue that being successful is the right gauge. However, even if we pin down this definition of success (money, downloads, clicks, whatever), we have so many other non reproducible factors in the process that we’re always comparing apples and trucks.

Let’s try something simpler, less debatable. Food. One’s preferences on food are not up to debate. They’re intrinsically always successful. I like spicy, you don’t. That’s ok. However, there’s also lots of intersections: most people like sweets. Theoretically, If we identify all the flavors and nuances of taste in some delicious dish and we also know what some person’s preferences are, we can pre-determine how good they’ll think that dish really is for them. We can identify success a priori, as per their definition of success.

The lack of fruitful debate in taste lies solely on the preferences or beliefs. Everything else is, surely, very debatable.

Inspired by Day 30: Carving A Lens.

[1]: Some call this experience. But don’t get hung up on this word, as it’s also too vague to be discussed. Focus on the scars.

Short 5: Setups

You have to setup yourself for success.

It’s getting really hard to make you to the “post a day” commitment. But, how? Alex seems to pull it off so good. Ok, while I can bet it’s not easy on him, I can say he got one thing right: he did it in the morning. I’m not the morning guy. But still, letting this daily duty linger in my list until the very last moment is not doing me any good.

It’s important to have the right setup. If not, even worse than not having a frictionless environment, you’re making yourself a serious target for procrastination. Don’t do it now, it says. You’re not in the right mood. You don’t have a subject to write about. You’re way to tired to produce anything other than crap.

While all of these might me be true, you have to ignore this whimsical voice. It’s always the same thing when you’re trying to do anything that you don’t particularly like. To those who think you have complete and solid control of your willpower, I can make you see this very clearly in just one word: “diet”. It’s not easy on anyone. The trick is to think once, at the start, at the commitment, and only let yourself think after the hard work is done. If not, the loudest voice will be procrastination. Even so, you want to think about what you’re doing. But, listening to yourself at the wrong time, you’re just setting yourself up to fail.

Make sure you sculpt the landscape as much as you can to make things easy on you. Don’t listen to temptatious muses. Taking the first couple of steps takes willpower. Making it uphill takes perseverance. Only give yourself permission to stop after you’ve climbed over that crag. The moment you stop, it’s downhill from there.

Short 4: Skipped heartbeat

I really like meditation. Like many things in the “zen way” (whatever that may be, I think that concept has had it meaning over-butchered by pop media), its lessons aren’t to be taken literally.

It’s really easy to meditate. Find a comfortable place where you can lie down, or sit, comfortably. Close your eyes. Relax your body as much as you can. Now, focus your awareness on your feet (or another peripheral part of your body). Relax it. Move you awareness to an adjacent part and relax that one too. Do this until you’ve successfully relaxed your entire body. Then, pause your senses and awareness for a moment, and concentrate solely on your breathing. If you can concentrate on nothing at all, so much the better. Let yourself linger in this state and follow it wherever it may lead you.

On first sight, it really seems like an easy recipe for attaining the answer to life, universe and everything else. However, it’s a ridiculously hard challenge. First off, your mind wasn’t trained to stay still. Like a child, it’s always an elephant in a china shop. Constantly stumbling thoughts over another thoughts; and when it settles down, there’s always something in the corner, alluringly shining, longing for unrestrained attention. And off it goes. Have you ever tried relaxing while trying to look out for a kid that, “accidentally”, drank your whole mug of coffee? Yeah, you get it. Relax. Right.

But even when you do get over such enormous challenge of just relaxing on your own, you have the “concentrate on your breathing part”. The mischievous child is none the quieter. Ok, maybe a little. You did, actually, tame it just enough for you to relax. But that’s it. While you have that child to take care of, it’s going to be hell to concentrate on your breathing.

Ok, I just painted a really grim picture. However, there are some of us who did manage to educate themselves into not being such rambling rattling thinkers and did actually get around to meditate. How? They didn’t quit. And, more important than that, they kept at it lightly.

When your thoughts drift into the next shinning thing, it takes a while for you to become aware that you drifted. When you do, allow yourself to return to your effort. Just that. No self-incriminating talk. No “Damn it! Drifted again! I suck at this!” That won’t help you regroup. You know what really helps you regrouping? Just regrouping. Forget the rest. That’s already done. You’ve already drifted. Nobody cares. You’ve done no harm and nobody is keeping score (they would run out of algarisms).Get back to what you were doing. If you share this experience with someone else, they’ll probably just make a brief metal smirk and tell you “Yeah, that happens. Don’t mind it. It will get better with practice.” You just have to get back on your bandwagon. Just do it. Again, if it’s still not how you’d like it to be. That’s how you get good at things. That’s the recipe. Meditation is good exercise to get better at any and every thing, in a way.

Next time you fumble at something, do the same thing as when your heart skips a beat: keep beating.

Short 2: Theoretically

Pre scriptum: I might make some scientific errors in this article, but I think the point still stands. Don’t the dragged too much if you find something inaccurate.

In theory, theory and practice are the same.
In practice, theory and practice differ.

We’ve all heard some variation of this. I found it to be fundamentally flawed. Well, at least the theories it applies to have to be. A theory is just a mental model of how something works. It’s particularly useful to do experiments in your head and predict the outcome. At it’s core, it’s in dear contrast with doing, or experimenting, if you will.

So, we have mental model in order to predict and explain how things will or have worked. But, according to the second premise and most people’s experience, this isn’t always the case. I find this completely explicable in “discovering” sciences, those in which you study something to better understand it. For example, all the chemistry formulas you learned in high school are designed to be applicable in vacuum and in a closed system. Why? Unless we have a big obvious deviation from the ideal conditions, if you tried to account all the other factors, you would be lost in a sea of inevitably irrelevant factors. And all that only to raise your accuracy very lightly. If you’re nowhere near the ideal conditions, the result is meaningless.

Theories usually have a context, and only try to explain things in light of that context.

This is all fine and dandy on what I have called “discovering” sciences. However, when you’re dealing with “creative” sciences, those were you build cognitive stuff, a world that exists only in our thoughts (I think programming is such an example. It’s surely the one I know best), this is completely unacceptable. You’re doing all this in your head. While you might not completely foresee the practical amalgamation of combining all the concepts you have thought of, the models you produce to explain or express them can, and should, be accurate. Why wouldn’t they? You invented the whole god damned thing in your head! You have no Higgs bosson to discover. Worst case scenario, you invented one for your concept system! You, by definition, already know it all!

Theories about pure concepts, created by men and existing only in our thoughts, can and should be accurate.

However, it would be presumptuous of anyone to think they would get it right at the first try. You have to mature things, experiment with them. As the ideas unfold into concepts and into systems of interacting concepts, you begin to see and feel how well that world works. Only after enduring such trials you know you have concepts worth modeling. Even then, you might not fully grasp the available reasonings to their fullest and furthest. Even so, those you do understand and can clearly visualize should be part of the theory you build for your model. It’s better to have a theory saying “I can’t predict this and that part of the problem” than to have the pretension of knowing it all. Or, even better, be humble enough to say something like “I can’t really predict, but expect something along these lines.” That way, you provide guidance without inducing in error.

Theories can, and should, be modest enough to cover only subject they are good at. It’s ok to formulate a theory for a particular subset of the whole problem or to provide only some coarse grained expectancies.

If your theory breaks, it doesn’t have to be a bad theory. You might only have an overeager theory, for example. Back up, analyze what happened and re-scope the theory. Don’t try to explain what you can’t explain. Facts can’t be wrong. You don’t have to understand it all. If you have the pretention to explain something, define the scope and the breaking points. Without them, you’re just waiting to be surprised by unforeseeable shortcomings of your formulation.

One of the most obviously disappointing aspects of computer science’s theories are their unwillingness to consider the human aspect of it. Some of them fail terribly at considering they will be used by humans. Humans that aren’t really good at doing repetitive stuff. Nor at sustaining highly intricate cognitive efforts. Nor at foreseeing all the consequences of their acts.

All in all, what I think I’m saying is: theories should be rated by their usability. I would argue that I prefer a usable theory than a super complete and accurate one.

Short 1: Braver

It’s not easy to get into someone’s life. You have to be relevant, add value, be pleasant or useful in some way.

One of the most obvious examples of this hardship is advertisement. Online ads, in particular, have been under severe fire for several years. People just don’t want them. We have written several browser plugins to get rid of them, for example. We don’t mind that, sometimes, it’s just a poor guy trying to make some money just to pay the servers. Servers that are delivering you a free product he built on his free time. A bit too selfish, yes. Still.

We don’t care. Nor should we.

We are valuable, potentially. We are nothing more than our behaviors, what we choose to do with our time. Time spent looking at some bass ackwards, flashy, and horrible gif is, consequentially, just a waste of character.

We have to be very careful not to allow ourselves to pursue our habits mindlessly. We’ve engraved them in our routine for a very good reason (hopefully), but we must keep ourselves in check. Have you ever stopped to ask yourself: Why do I, every single day, do this? And why do I do it in this particular manner? Even if you can’t really recall what made you sought such comforting repetition, can you still justify it to yourself?

Don’t keep things in your life that you, while looking yourself strait in the eyes, can’t justify.

Exempli gratia. There has been time that I would hang to reading all RSS feeds I found valuable. Even those that only had a good article once. (Ok, if it took just one good article to get into my reading list, it must have been pretty darn good.) My rationale would be that, if this source of information has already produced substantially interesting content, it’ll probably produce some more; and I really want to read good content.

Eventually, being swamped with feeds full of nothing, I had to cut back on the crap I was reading. My method was to, if I caught myself more than once thinking I would have better spent my time looking at lolcats, I would unsubscribe. Unconditionally. I could re-add them later, but not keep them. I figured that, if that source was relevant enough to be followed, it would pop again into my radar (through Twitter, Facebook, or something else).

This has worked flawlessly. I now have more time to spend on discovering stuff that might be really good. I do it in the time I used to spend on making sure that, those who were once beneficial, still are.

And, remember: this is about time, not RSS feeds.

Inspired by Linkages

Short 0: Give yourself permission

I recently began following Alex’s effort to write daily. I’ve been quite enjoying his writing and I got envious.

I enjoy writing myself and would like to do more of it. However, my priorities or plain old procrastination generally get in the way. Since a while ago, I’ve been trying to force myself to write. Just as an exercise, I gently tell myself. You’ll never get good at what you don’t practice enough. Just a quick knack at a time. Like reposting a video or commenting on something you’ve thought of and liked.

It hasn’t quite worked, and you can see in the archives. However, when I read Alex’s about page, I immediately liked how he tailored the way he communicated his self commitment to himself.


  • Unambitious
    Just write, god dammit! Worry about being good after being something.
  • Low effort
    Don’t think too much about what to write. Just grab a topic from some RSS entry or write about some train of thought you had and was vivid and relevant enough for you to still remember.
  • Allow yourself to fail
    Like many others have said before me, not tolerating failure is not allowing progress.

Whatever you do, you have to let yourself do it. This is something that I have already learned lots of times in my life and, after I’ve read his about page, I want to learn once more.

So, there you have it. This is an homage to Alex’s effort that I hijacked and turned into my own daily writing effort.

Browser = Native: Boot2Gecko

About my previous post, Mozilla already had a leg up.

Native on the browser. Browser on the native. I’m not quite sure.

I was watching Google I/O 2011: HTML5 versus Android, where two fellows try and contrast why you should do a mobile or/and a native app, and the three main points that stuck with me were:

  1. Do a proper web app when you’re showing content (or maybe a bit more than that). Proper means responsive. Responsive not only to screen size, but also all other device characteristics or capabilities that enhance the user experience.
  2. Do native stuff for native stuff. It doesn’t make much sense to build an Android home screen replacement as a web app. No, Active Desktop, you were never good.
  3. Do native stuff when the current web technologies aren’t quite there yet. Like, accessing the barometer on your mobile. They also talked about being more energy-consumption friendly, integrated with the whole device ecosystem (other apps and whatnot), having stuff on the background (e.g., music players), hard performance demands, et cetera.

This last point doesn’t have to be so. Why don’t we define an “outland”, where browsers are allowed encouraged to expose as much as they can about the underlying software and hardware? We already (sort of) did this with USB and plug-ins. Why not accessing USB devices from the browser? Code is just, well, code. If you can expose it in C, why not invite the javascript engine to the party? And, since HTML has always been about retro-specs, this would also be the perfect segway for weeding out standards.

Tell me one good reason that makes me not want to do this.

PS: However, for me, the web/native choice comes down to:

  • If content is king, do a web app. Hands down. You’re bound to have a web site, anyway. You might as well go the not-so-extra mile and make it pleasant for browsers/devices of any creed, belief, or opinion.
  • If experience is even more important, I would say to begin by considering a web app (which is always nice for prototyping) but try to draw the line in the sand early. When (and why) are you willing to spend those significant engineering hours to get that extra finesse? Sometimes, it very obvious. You’re not going to wait for WebGL to mature for you to implement a game. You’re going native straight off the bat.