Google employee Bharat to Larry Page, co-founder of Google, during the early days of the company:

“Larry, why do you say you want to do research?” he said to Page. “You are such a tiny group!” Page’s answer was surprising and impressive. Looking at things from a different perspective could lead to unexpected solutions, he said.

Source: “In The Plex: How Google Thinks, Works and Shapes Our Lives” – Steven Levy, 2011

Where am I now?

It has been two year since my Google Code-In participation in 2010, and today the 2012 grand-prize winners were announced.

That event help me as a milestone my life. I look back to it, to remember what I achieved when I hardly had any programming skills.

What happened in 2 years professionally?

  • I am proficient now in Ruby and JavaScript, and learned a dozen different programming languages.
  • I worked with start-ups, companies and awesome clients, gathering the important social skills I hadn’t had before, and getting to know the frustrations working with bad clients, freaky time-schedules and bad pay, so-called “experience”.
  • Launched various projects.
  • Continuous contributions to Open-Source.
  • I write better code, but it still sucks, just less than before.

Still I feel mediocre. I feel like I could have contributed more, learned more languages, met more cultures, played less games, studied more for college, done more ambitious projects.

Though, I firmly believe, fighting mediocrity has been the most important challenge I have picked up ever since I know that I am just as any other guy, and that I am fully motivated to kick ass.

Byte for Byte.

Tigo Paraguay HSPA/3G APN Configuration

Very recently I bought a Nexus 4 with Android and applied a custom OS to it, namely CyanogenMod. Unluckily while doing that upgrade I have lost my APN configuration to access HSPA/3G networks, and as I had a hard time retrieving the needed information for getting things working again, I am sharing the configuration with everyone (as of today).

Just add a new APN from settings, with the following fields:

  • Name: TIGO PY
  • APN: internet.tigo.py
  • Authentication type: None
  • APN type: default

I hope this may be helpful to someone.

Thoughts about life and the universe

Do we really have to design our lifes’ around working for other people? Why do we work for other people anyways? Do we need to work to give our life sense? What is the sense of life?

The 100.000 stars experiment made me think about how unnoticeable we are in respect to the universe. Our planet forms such an itsy-bitsy, bitsy, bitsy, bitsy, bitsy, bitsy, bitsy, (..etc.) tiny part of this whole – that I ask myself: would it really matter if our planet, our sun, OUR ENTIRE SOLAR SYSTEM would not exist to the universe? The answer is probably, no.

Yet, it is remarkable that intelligent life in form of humans, us, has evolved on a sphere of elements with its own gravitation and atmosphere, our earth.

If we scale our existence to the scope of the universe, then we are just an infinitesimally small part of it. Still, we DO form a part of it. Still, we exist.

The before-mentioned experiment also made me think about time. Einstein proved years ago that time is not a definite unit. A second in other parts of the universe could represent a year, or maybe a millisecond. Still, we all are being assigned a part of that time.

We built rockets to land on the moon, satellites and telescopes to explore the universe around us. We know about different types of stars, and know that our sun is not the only star and by far not the biggest nor the smallest.

Scientists learned that our sun is constantly growing with time. We also learned that stars are created and die. Still, we exist.

With all these facts being known we have been assigned a time and place in this gigantic universe.

Knowing this, why so many of us choose to spend their limited time doing things they don’t like? Why do we choose to work for a boss who pays us miserably? Sometimes we are not being given the choice, take for example Africa’s population, you say. You’re right.

Why we think of the now, and not of the things ahead? We know that life in a few million years will be impossible as the sun expands. It does not affect us now, but it will affect all life eventually.

Shouldn’t we who live in the now, act about tomorrow?

Using SSPullToRefresh in iOS 6

While working with RubyMotion on a client project, I needed an elegant solution to implement a Pull-To-Refresh view in my application, and SSPullToRefresh has a simple API, which I prefer over other solutions.

The problem I encountered with the library is that SSPullToRefresh depends on Automatic Reference Counting which simplifies memory management in iOS, but the library hasn’t been updated to support iOS 6.

During compile I got errors with the message

dispatch_release() is forbidden for ARC–code.

Gladly, there already is a pull request (which has not yet been merged).

Checking the diff shows that it’s all about one line.

[gist id="4083254"]

So, I forked away, applied the patch. It works great. :-)

If you use cocoapods to manage dependencies, you can add the following line to your Rakefile:

[gist id="4083258"]

EDIT: The fix has been merged into upstream master.

Show latest commit ID in Rails

I find it useful to display the current git commit ID of my application:

In your application’s Gemfile add the grit gem, which is a Ruby wrapper for git, and run Bundler.

If you deploy your web application via Capistrano and git, then you can put the following in your app/helpers/application_helper.rb:

[gist id=3679774]

Make sure the repo you are deploying to is non-bare. If you are not sure about that, in the project’s directory run:

[gist id="3679892"]

If you see a SHA-1 Hash, life is good.

Now in your template you can add the helper anywhere you like – most people prefer to put that info in the footer:

[gist id="3679825"]

How easy was that!

Hello Tmux

iTerm 2 for Mac is a pretty advanced terminal emulator with a lot neat features like window splitting, tabs and notifications, and I dearly love it.

Today I made the small jump to try something bigger: Tmux

Tmux is a terminal multiplexer, which

[..] enables a number of terminals (or windows), each running a separate program, to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached.

Installation was trivial with these instructions:

[gist id=1297707]

and the Arch Linux wiki page about Tmux helped me to get started.

This (Tmux) in combination with vim might turn out to be a very productive combination. I’ll definitely keep you up-to-date, and let me know about your experiences with Tmux.

ROCK’N ROLL, TUX!