Realidad absoluta y creencias

Hoy en el trabajo tuvimos una discusión bastante interesante y acalorada que empezó con temas religiosos y terminó con temas filosóficos. La religión de por sí despierta muchas opiniones fuertes tanto a favor como en contra, y siempre es un poco controversial—por no decir contraproducente—debatir este tema.

La idea con la que terminamos, y pienso que ambos lados pudieron acordar, es sobre el significado de la realidad absoluta y la realidad relativa. En este post trato de definir ambos conceptos según mi entendimiento, y plantear mi opinión sobre cómo encajan las religiones, y hacer unas cuantas críticas en el camino. Bienvenidas las críticas y comentarios. :-)
Read More »

Demoscene

It still surprises me that not many people working in, or have interest in, IT have been introduced to what is probably the best fusion of tech and art, ever since the invention of the modern day PC. I’m talking, of course, about the demoscene. To spare you the click out, here’s a definition from Wikipedia:

The demoscene is a computer art subculture that specializes in producing demos, which are non-interactive audio-visual presentations that run in real-time on a computer. The main goal of a demo is to show off programming, artistic, and musical skills.

debris. by farbrausch

From a technical standpoint, the creations are nothing short of impressive. You see, in the majority of demos, no bitmap textures or pre-rendered music are ever used. Rather, all textures are procedurally generated by the CPU and delivered directly to the graphics card, and the music is also synthesized in real-time. This leads to demos that are minuscule in size (usually less than 100kb, some even as little as 4kb). This limitation was in part because the programmer wanted to push his skills to the test and use as little resources as possible, but mostly it was because of hardware limitations of early 80s PCs.

From the artistic side, demos are quite spectacular as well. Original animation, music and 3D modeling, all envisioned by the programmer. :-D The demoscene just might be the geekiest of all arts.
Read More »

Immediate knowledge

I am certainly not the first one to suggest this idea, so pardon my ignorance, since I currently have little resources to do a proper research. But the idea is this…

At some point in humanity’s near future, we will cease to have the need for traditional education systems that have been in place for thousands of years.

Nowhere have I seen this concept better exemplified than in the classic sci-fi film “The Matrix” (1999). In the scene where Neo and Trinity have to take off a roof in a helicopter, the matrix’s operator Tank sends an electronic signal directly to Trinity’s brain, and, seconds later, Trinity was able to fly the helicopter without previous training or knowledge.

Here’s the clip in question: Can you fly that thing?

I am willing to take this a step further and suggest that what we now know as schools, and the method and duration of teaching, will no longer be relevant given sufficient technological advancements.

Think of it this way: Google and Wikipedia alone have given us free, unrestricted access to knowledge that is a) available to anyone at anytime, anywhere in the world, and (perhaps more importantly) b) increased the speed at which we acquire information by amounts that were unprecedented 50 years ago, let alone 500 years ago.

This trend of ever increasing speed to access information (producing knowledge) will undoubtedly increase in the future.

Moreover, though, with further technological advancements, our limited human ability to process information will also improve. Whereas now we are limited by how fast we can read (and further limitations such as language, comprehension, etc.), the effectiveness of our brain to link information together, and the ability to store this information, in the future we might have different means altogether for absorbing knowledge itself.

We might be able to directly populate our brain with pre-linked information blobs, store this information in places we wouldn’t be able to reach by traditional methods (thus enlarging our storage capacity), and even introducing at the same time pre-built memories (such as muscle memory) about this information, so that we could mimic what we currently learn from practice alone.

This is how education as we know it will cease to be relevant. No longer will you need to invest 10 years of your life to study medicine, when you could spend a much smaller amount of resources and “buy” this knowledge in one, or several (literal) knowledge transfer sessions.

In case this “free as in speech” concept catches on globally, all of humanity’s knowledge will be available to everyone for free. People will be charged solely for the purchase of “knowledge transfer hardware”. This situation will produce a truly globally-connected civilization formed by super-humans, where the knowledge of anyone on the grid is immediately and seamlessly available to anyone else.

The ramifications of this are mind-boggling…

When can we expect to achieve this state? Given we don’t annihilate ourselves before, I would set it sometime before the 23rd century, with the first simple prototypes already functioning in the 2nd half of our current century.
Read More »

Arch on coLinux

I’ve recently gotten tired of working in Cygwin‘s slow environment and was looking for something faster and more faithful to a true Unix system. I knew virtualization was an option, but didn’t want to sacrifice the accessibility and speed of working with a native application (yes, even in seamless mode).

Enter coLinux: essentially a port of the Linux kernel for Windows that lets you run Linux apps natively in Windows. colinux-archI’ve come across it from time to time in the past few years, and even noticed the impressive andLinux and Portable Ubuntu systems running on top of it. However, I was reluctant to try them out mainly because I didn’t want/need a full-blown graphical distro and Windows wasn’t nearly as enjoyable to use for long periods of time as 7 is today.

Come November 2009, I became increasingly allergic to the usual shortcomings of Ubuntu (X and Intel drivers are to blame, mostly) and I installed the retail version of Windows 7. Cygwin has always been a bittersweet solution for me, what with the (lack of) speed, protection and other inconsistencies; in general, it was very clunky, especially considering my favorite console program stopped working in Windows 7 and I had to use Cygwin with cmd.exe (ugh).

So I decided to try coLinux for the first time, and attempt to install my favorite distro: Arch Linux. This would give me a lightweight, console-only, pure Linux environment, happily co-existing along all my Windows apps. I couldn’t be happier with the prospect.

What follows is a little guide I wrote for myself to document the process, in the hopes I can help someone out as well. It guides you through the process of installing coLinux, building a brand new Arch Linux filesystem image, and performing the necessary configuration and updates. At the end, you will have a fully updated version of Arch Linux running inside Windows 7 (and probably previous versions also). So, let’s get started.

Read More »

Finished the Koans!

I spent the last few days going through the Ruby Koans I mentioned in my previous post, and I stand by my initial opinion that it’s easily the best and quickest way to get into the language. I had too much fun doing them, and know much more Ruby than when I began. :D The best part is that this knowledge is bound to stick longer than anything I’ve ever read about it before, simply because I was learning through practice (fun!) rather than reading (boring!).

Here is my solution to the last of the more complex puzzles in the set. I’m only posting this one as it’s the only one of the “project” Koans I did completely by myself. The others were done with some assistance from the Google knowledge base. :-P

# about_proxy_object_project.rb
class Proxy
  attr_accessor :messages

  def initialize(target_object)
    @object = target_object
    @messages = []
  end

  def method_missing(method_name, *args, &block)
    @messages << method_name
    @object.send(method_name, *args, &block)
  end

  def called?(method_name)
    @messages.include? method_name
  end

  def number_of_times_called(method_name)
    @messages.select {|meth| meth =~ /#{method_name.to_s.sub(/\?/, '\?')}.size
  end
end

I knew line 20 was ugly (nested regexps… :-S) and that there had to be a cleaner way. Sure enough, I found this, which is pretty much what I had, only without the brain fart of using the match method. :-/

Some minor criticism for the Koans:

  • I feel blocks should’ve been dealt with more thoroughly. They’re one of the most distinguishing aspects of Ruby, that is often challenging for beginners. Strings and classes got a deservedly broad explanation, but I think blocks should have been given more attention, because of their importance and broad usage.
  • There’s a small bug with Ruby 1.9 in about_strings.rb (method test_single_characters_are_represented_by_integers). The ?<char> syntax for finding the ASCII code was removed in 1.9 and <char>.ord must be used instead. Meaning ‘a’.ord and not ?a. Not a big deal, and it’s a quick fix, but it threw me off for a few minutes. Serves me right for not using the standard 1.8 version.

All in all, I’m very happy with my results. I know I’ll be going back to the solutions for reference in the future, and the learning process was invaluable for me.

Although I’m still awfully green with the language, I feel like I have enough base to begin tackling AWDR. As a sidenote, I’ve decided it’s best for me to learn Rails first, instead of the framework du jour (which might or might not be “better”), simply because it’s the single most popular Ruby project. Having used a few MVC web frameworks in the past, I might feel more at home than with others that don’t necessarily force the paradigm. I think that when I get some experience with RoR, I’ll know enough Ruby to explore other options and see what I like best.

2010 will be a great year! :D

Learning Ruby

As I’ve stayed mostly out of the web programming revolution, I’ve lagged behind some of the good technologies we have now, and have mostly been occupied with Python, and the application side of programming.Ruby logo

One of the biggest trends currently is Ruby, which—while not being a web language exclusively—was made tremendously popular by the strong community around it and the gazillion different web frameworks and other cool things built on top of it.

I have long been wanting to give it a shot, and am finding it to be a thrill to play around with, although I have to admit it being much more challenging than Python for me. I think this is mostly because of the bigger emphasis on functional programming, which I never used to its full potential with Python, or any other language.

Aside the requisite reading of why’s (poignant) Guide to Ruby, keeping The Ruby Programming Language as a reference, and plenty of online tutorials, I have recently discovered a great set of tools for the aspiring Rubyist: Ruby Koans.

After setting the appropriate environment, the tools guide you in a TDD-fashion through most of what Ruby has to offer, and the amazing thing is that you learn by doing, not by reading. The code is beautifully written, and it is really the best resource for learning Ruby that I’ve yet encountered. Best of all, you get that immediate satisfaction every TDD developer craves for after making a change and seeing a test pass successfully, yet none of the “difficulties” with writing the tests. It’s like a mini cocaine hit, after which you keep wanting to go fix the next test. :D I’m lovin’ it! *snort*

Thanks to Evan Light for pointing it out in his recent post.

Eight reboots later…

…And I have upgraded to Windows 7 Ultimate x86 Final and Ubuntu 9.10 “Karmic Koala”.

Things I’d like to see/do more of:windows_ubuntu

  • Keep my data separate from the operating system. I keep separate partitions for all my documents and files. On Ubuntu this is simply a matter of having a /home partition and using it as much as possible (always make sure to keep configuration files under ~/ when possible and binaries elsewhere).
    On Windows, this is a bit trickier. In order to move “Program Files”, “Users” and other directories from the main partition (C:\), you need to create special symbolic links to point to the new locations. This is done by using an often overlooked feature of the NTFS filesystem: junctions. I followed this handy guide to perform the procedure today, and it worked wonderfully. Having “C:\Program Files” as a junction will work flawlessly with most applications, but keep in mind that some Windows updates might refuse to install. This was never a big deal for me (it’s 2-3 updates at most), yet the benefit of having your files on a separate partition more than make up for it.
    Other than that, most of my personal and important documents are already on Dropbox. This is something I’d like to do more of: store all my files online and be able to get them back at any time and access them from anywhere. Alas, Dropbox is not quite there yet, but these services are cropping up all over the place, and I’m sure that seamless backup and restore from the cloud will be a common procedure in the future.
    Keeping this separation gives you the flexibility to perform fresh OS installations without having to worry about the placement or backing up your data. Doing a clean install today I had much less to think about because of this separation, which is why the installation went so smoothly.
  • Read More »

“A Universe From Nothing” by Lawrence Krauss

A fascinating talk about the origins, state and future of the universe by Lawrence Krauss, a brilliant theoretical physicist, author and professor, given at this year’s Atheist Alliance International convention.

Some quotes and moments I liked very much, with their time in the video:

  • Every atom in your body came from a star that exploded. [...] You are all stardust. [...] So forget Jesus—the stars died so that you could be here today. [link]

  • The Universe is flat. It has zero total energy. And it could’ve begun from nothing. [link]

    Just… whoa. Yes, we have evidence that we live in a flat universe. And with the LHC, we will be able to see a creation of a universe from absolutely nothing. I can’t even begin to get my head around this…

  • This tells us that we’re more insignificant than we ever imagined. If you take the Universe—everything we see: stars, and galaxies and clusters—everything we see… if you get rid of it, the Universe is essentially the same. We constitute a 1% bit of pollution, in a universe that’s 30% dark matter and 70% dark energy. We are completely irrelevant. Why such a universe in which we’re so irrelevant would be made for us is beyond me. [link]

  • xkcd #171 makes an appearance!
  • And the great closing statement about infinity, Richard Feynman, religion and probability. [link]

Such an inspiring talk. I really wish I knew more physics and mathematics, to be able to work on such essential problems as the mystery of the place we live in. But luckily, we have these genius minds to do the work for the rest of us. Yes, even for the ones who don’t “believe” in the truth. We have these men and women to thank for not living in the stone age anymore. It sickens me that they’re not universally praised and get to be our civilization’s leaders, presidents and decision-makers. Seeing as they have a genuine interest in advancing mankind, they’d certainly do much better than the unqualified nutjobs we ourselves put up there. </rant>

Some constructive criticism for a change…

Ten thousand cars are exported on a daily basis from manufacturing plants in the U.S. alone. Yes, I made that figure up, but you can be sure it’s a shitload of cars. All those cars have to go somewhere, and most end up being sold to countries whose road transport system is—in the parlance of our times—FUBAR’d.Traffic light for bikes.

So what is the cheapest, easiest way to solve (or start solving) the transportation problem of a 3rd-world-country?

If you answered “build more roads and tunnels”, sorry, but that’s definitely not the cheapest. It might solve the problem on the short-term, but eventually you’ll be in the same place as before.

My humble opinion is to follow the footsteps of other smarter and more civilized nations: use bicycles. Yes, those two-wheeled, human-powered vehicles that were invented two fuckin’ centuries ago. They produce no waste, burn calories, and don’t chug expensive fossil fuels. It can’t get better for an underdeveloped country that has no oil of their own.
Read More »

Audiogalaxy: the P2P music revolution

Little bit of history

Back in early 1999, I was just finishing elementary school. My family had recently acquired our very first PC and the Internet proved to be much less boring than I had expected it to be. I was just getting into listening rap music and the MP3 audio format was by then widely adopted over the older MP2 (and the hugely popular MIDI files) as the main online distribution format for music. Put those three things together (Internet, whole new genre of interest and MP3) and it was a recipe for great summer vacations. ;)

Shawn Fanning hadn’t yet fucked up online file sharing, John Williams was our generation’s Beethoven, and Dr. Dre was still not loving police. Life was peachy, man. Apagones aparte. :-|

Read More »