Older blog entries for maragato (starting at number 41)

I love infographics

Everybody loves infographics.[citation needed] Make one about stacked $100 bills and you know I’ll just have to post about it. Check out A visualization of USA debt for nice infographics to help make sense of how enormous the debt situation of the US is. The one below is just a sample.

115,000,000,000,000_USD.jpg">

Syndicated 2011-07-23 01:41:49 from ~robteix

Very cool video on the Space Shuttle Program

After three decades, the Space Shuttle is finally retired. Check out the video below for a bit of history. I thought the video so well done! In a little over 8 minutes it gives you a feeling of how much happened already. Also, stop to think about this for a minute: 30 FUCKING YEARS.

Most nations who tried to launch payloads into space failed miserably and still haven’t achieved it. And yet, THIRTY years ago the Shuttle started operation.

What’s next? NASA is now helping private enterprises develop the capability to fly people to the ISS so it can buy flights commercially. How long will it take? No one knows. And none of the companies is working on anything like the shuttle, so the future for now looks like it’s going to be on heavy-rockets.

Syndicated 2011-07-22 16:56:24 from ~robteix

“¿Por qué están todos hablando inglés?”

I’ve been spending an insalubrious amount of time on Google +. I managed to plump for a pretty good group to follow and as a consequence I’ve been getting consistently interesting content. As for myself, I mostly I post in English. A couple of days ago, I posted something most inconsequential and it would have been an unreservedly unremarkable post wasn’t it for the fact that it was geolocated in Cordoba, Argentina, which caused it to attract the attention of people nearby. In the middle of the comments, someone asked, in Spanish: “why is everyone speaking English?” That was a fair question and it touched something that has bugged me in the past.

Some part of my brain must miss the good old times of hunting and gathering as I ended up as a nomadic man—albeit one who doesn’t hunt and at most gathers food from grocery stores, so there might be a flaw in my theory. My rootless nature made me move a lot. This and the nature of my work caused me to make friends in several places other than my native Brazil[1].

We’ve already established that I communicate in Portuguese. Working at a US-based multinational as well as with open source, I also use English quite a bit—and my aforesaid rootlessness has taken me to inhabit the beautiful state of Oregon in the past. Oh and did I mention I am currently putting in a tour of duty in Argentina?

The Myth of the Tower of Babel

The Myth of the Tower of Babel

The result of all of this—in blatant contrast with the pre-Tower of Babel times when everybody obviously spoke English—is that I communicate daily in multiple languages. There isn’t a day—well, weekday—I don’t have to speak Spanish, Portuguese, English and French with someone or another. And that is fine and actually quite nice: you do lose languages if you don’t use them. Not like riding a bike, I suppose. Regardless, it is not a problem to communicate 1:1 in those languages. But what about 1:many conversations?

Blogging is a clear example. Should I blog in Portuguese as some keep telling me I should? I cannot reasonably expect my non-Brazilian readers to understand Portuguese. If I write in French, my Quebecer friends will be happy but what about the rest? Nationalistic rants aside, English is an international language nowadays, just as Latin and French once were. Aside from very few people, the vast majority of the people I know can understand English and that’s why I use it most often than any other.

Ideally, one would use their own native language and computer translation would do the rest. Unfortunately we are not there yet. I will admit that computer translation is getting better and better and it is fairly good if you write clear, short sentences. And it will get better. But I am skeptic that we will ever get to the point where the algorithms will be able to deal with subtleties, innuendos and all the puns that make up human interactions.

The way I see, I currently have a few options –

  • I write in Portuguese, as the ever vigilant Brazilian crowd demands it. That would soothe the wrathful nationalists who believe me a Traitor Of The Fatherland™. But it also limits my already limited audience; not good.
  • I write multiple versions of the same thing in each language. That would begin to feel like actual work, not fun. Also, having tried that in the past, I’ve learned that after I was done with the first version, the others never came out naturally.
  • I write in English. Sure it makes me a bootlicking lackey of the imperialist Yankees in the eyes of the insecure, but it also helps me reach pretty much everyone I know.

But using English is not a perfect solution either. For once, I am obviously not a native speaker and thus have an imperfect and narrow vocabulary. As well, I don’t share the cultural experiences that help define the subtleties of English. And finally, there are heaps of topics that just feel wrong in English: such as local—as in Brazilian—topics. It just feels weird.

Back to Google+, I have created Circles for Portuguese and French, but these are not much valuable until Google comes up with some system of set arithmetic that would allow me to say something to the effect of “Post this to members of Circle X who also happen to be members of Circle French.” Until then, English is my best bet.

[1] Experience tells me that I am required to point out that we, cheerful Brazilians, speak Portuguese, not Spanish.

(Image Credit: <a href=”http://www.flickr.com/photos/thomasthomas/“>ThomasThomas</a>, Creative Commons)

Syndicated 2011-07-13 19:32:22 from ~robteix

Fighting the IT overlords

Years ago, I needed an external direct Internet connection out of a lab. The first solution was to call a broadband provider and install a DSL line, but the IT department was trying to stop labs from adding more such external lines and started pushing its own solution.

Setting it up was complex because the people working on the infrastructure had never heard of this. I believe I was their Guinea Pig. As well, requesting changes was always difficult because it required second level support and the first level staff didn’t know what I was talking about.

One day I decided to document the process to help future generations. For my own amusement, I started writing it as a letter for “future occupants of the lab” where I detailed this big mistery of our ongoing, silent war against a dreadful enemy: the IT department. Later, when I was moving to a different job, I added other things to that document that I thought important in the day to day operations of a lab like that. The final document was nearly 100 pages long and had this cover page saying “To the future lurkers of Roberto’s Lair.” I did re-read the document a couple of years after I left that job and found it in some archive. It was poorly written, filled with typos and with fragrant errors. But I had fun writing it.

That was many, many moons ago.

Recently I had an exchange with someone online. The guy said he thought my name was familiar but we ended up not figuring out where he might know me from. Until today.

    From: [REDACTED]
    Sent: Friday, June 24, 2011 1:58 PM
    To: Teixeira, Roberto S
    Subject: I knew I knew you!
    Robert
                     I knew I knew you! I had to check it to make sure I was right and I think I was. Aren’t you the guy who wrote the document about the IT overlords? We have two copies of that document here with lots of annotations bt we still use them. I need to scan and send them to you.
    [REDACTED]

I’d love that.

Syndicated 2011-06-24 19:48:11 from robteix.com

Anagramizer, a simple anagram solver in Go

This weekend I took the family to celebrate Father’s Day away from town. We went around getting to know parts of the province we live in and never been to.

We came back yesterday and the plan today was for a nice, calm day at home (it’s a holiday of some sort here.) Then I got engaged in a game called Hanging with Friends, a mix of the traditional hangman with a bit of Scrabble.

Since English isn’t my first language, I have a limited vocabulary, which leaves me at a disadvantage against my English-speaking friends. I can handle the “hangman” part of the game where I have to guess the word my friends come up with; but when it becomes “Scrabble” and I’ve got to form words using only a given set of letters and still make them difficult enough that a native English speaker will have problems figuring them out, then it’s tough.

An itch that needed some scratching. Enter Anagramizer.

When I woke up this morning, I decided to write a little program to help me. You call it cheating, I call it having a bit of nerd fun.

Being that I’m currently in love with Go, I decided to write in that language and it was really easy and quick to do it. It took me about half an hour to write the program that did what I needed. But then…

I succumbed to the temptation and started adding bells and whistles. Admittedly it was mostly for my own amusement and trying stuff in Go, but by the time we were leaving for lunch, the program had more options than the KDE audio volume utility (see what I did just there?)

I decided to make it available to anyone who wants to play with it. It served its purpose of entertaining me for about half a day :)

It’s now available on Github and released under a BSD licence.

Syndicated 2011-06-21 00:18:27 from Roberto Teixeira's blog

Euler 9 in Go

This was surprising to me. For fun I picked one of the Euler algorithms I played with in the past and rewrote it in Go. The idea was to rewrite it idiomatically to see how different things might look. Nothing else. The very first thing I did was to get the exact algorithm and rewrite, no idiomatic changes.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main
 
import "fmt"
 
func isTriplet(a, b, c int) bool {
        return a * a + b * b == c * c
}
 
func main() {
        for a := 1; a < 1000; a++ {
                for b := a + 1; b < (1000 - a) / 2; b++ {
                        c := 1000 - a - b
                        if isTriplet(a, b, c) {
                                fmt.Println(a * b * c)
                                return
                        }
                }
        }
 
}

What surprised me is that this thing runs in 0.005s, which is faster than the Python implementation and very close to the one in C. It surprised me because this wasn’t really supposed to happen. The Go compiler isn’t well optimized, especially compared to compilers with a many-years headstart.

Syndicated 2011-06-14 15:30:06 from Roberto Teixeira's blog

How to set up Emacs on Windows

Just so I have it documented somewhere for future reference, here’s how to quickly set GNU Emacs up on Windows.

  1. Download it from http://ftp.gnu.org/gnu/emacs/windows/
  2. Unzip it to, say, C:\emacs or something like that
  3. Set the environment variable HOME to C:\emacs and include C:\emacs\bin to the PATH
  4. If you want to have a “Open with GNU Emacs” option on the context menu, just create a registry file (call it emacs.reg or whatever.reg) with the contents below and double-click it to import it into the registry.
1
2
3
4
5
6
7
8
REGEDIT4
[HKEY_CLASSES_ROOT\*\shell]
 
[HKEY_CLASSES_ROOT\*\shell\emacsmenu]
@="Open with &GNU Emacs"
 
[HKEY_CLASSES_ROOT\*\shell\emacsmenu\command]
@="C:\\emacs\\bin\\runemacs.exe \"%1\""

Et voilà! As well, for my preferred colour scheme, we need to use color-theme from http://www.nongnu.org/color-theme/ and set it up in your .emacs file:

1
2
3
4
5
(add-to-list 'load-path "c:/emacs/.emacs.d")
(require 'color-theme)
(color-theme-initialize)
(when (display-graphic-p)
  (color-theme-subtle-hacker)

Syndicated 2011-06-13 18:38:49 from Roberto Teixeira's blog

Best closing line ever

I didn’t get to watch the Golden Globes ceremony. To be honest, it’s not really the kind of show I enjoy. But completely by chance I tuned in right at the very end, when host Ricky Gervais said the show was over and started his own thanks. And he closed with –

And thank you god for making me an atheist.

While my facial muscles were still working of forming the smile, my head was already wondering how the quote would sit with some of the theists who would be watching. I immediately started a search on Twitter and the very first tweet I found was –

“TY God for making me an atheist” now that was just bad taste!

The tweets that followed were more or less equally divided between those very similar to the one above and others agreeing with me that this was the best closing line ever.

I wonder how you can possibly consider it bad taste though. I mean, if you’re an atheist, the quote is just funny. If, however, you believe in a god, then he’s just thanking it for something. He might as well have said, “thank you god for making me a comedian.”

You can’t really have it both ways. Either god doesn’t exist or god exists and made Ricky Gervais an atheist. Actually, there are other alternatives, but the people who would be offended belong to the team that believes in a personal god who does this kind of things.

Syndicated 2011-01-17 17:30:18 from Roberto Teixeira's blog

That’s how you make atheists

A recent Pew poll in the US shows that agnostics and atheists seem to know more about religion than the rest of the population. That’s not really a big surprise as previous similar polls shows similar results.

But even if it’s not a big surprise, it can still seem strange to many. To me, the best explanation I’ve been able to come to is beautifully summarized by American Atheists’ president Dave Silverman, for the New York Times:

I have heard many times that atheists know more about religion than religious people. Atheism is an effect of that knowledge, not a lack of knowledge. I gave a Bible to my daughter. That’s how you make atheists.

CNN has a test with 10 questions from the survey. I can’t tell if those are the easiest ones or randomly picked, but I found it extremely easy. Got 10 out of 10 right.

Syndicated 2010-09-28 15:44:26 from Roberto Teixeira's blog

Euler 15 in Python

This one isn’t even funny…

Starting in the top left corner of a 2×2 grid, there are 6 routes (without backtracking) to the bottom right corner.

How many routes are there through a 20×20 grid?

Your first thought would be to generate the routes, but for a 20×20 grid, those amount to BILLIONS and you’d try to do it recursively too! Forget it.

But if you have some CompSci-level math background, though, you’ll remember this one–reading The Art of Computer Programming, Vol. 4 also helps. It’s a matter of combinatorics and if we take w for the width and h for the height, all we need to do is calculate,

\frac{(w + h)!}{w!h!}

and that’s it. I didn’t even write a program for this, instead using Python’s interactive shell, but just for the same of completeness, here’s a “program” to calculate the possibles paths in a 20×20 grid.

1
2
3
import math
w = h = 20
print math.factorial(w + h) / (math.factorial(w) * math.factorial(h))

That’s it.

Syndicated 2010-08-07 22:39:27 from Roberto Teixeira's blog

32 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!