idiosyncratic/routine

Icon

COBOL Turns 50

Happy golden anniversary, COBOL! Java’s catching up on you!

Filed under: Computer Science, , ,

Plato and Turing Walk into a Bar…

So I was at Pages with a friend last Saturday browsing through some books and oddities while trying to kill some time, and found this book called Plato and a Platypus Walk into a Bar…. The premise of the book seemed intriguing enough, so I impulsively bought it. I’ve always been curious about what Philosophy really is all about besides drooling over the Dalai Lama on a regular basis, so I thought that spending $13 on a paperback beats an $800 course registration for an Intro to Philosophy course anytime.  Here’s one of the “enlightened” jokes from the book:

A seeker has heard that the wisest guru in all of India lives atop India’s highest mountain.  So the seeker treks over hill and Delhi until he reaches the fabled mountain.  It’s incredibly steep, and more than once he slips and falls. By the time he reaches the top, he is full of cuts and bruises, but there is the guru, sitting cross-legged in front of his cave.

“O, wise guru”, the seeker says, “I have come to you to ask what the secret of life is.”

“Ah, yes, the secret of life,” the guru says. “The secret of life is a teacup.”

“A teacup? I came all the way up here to find the meaning of life, and you tell me it’s a teacup!”

The guru shrugs. “So maybe it isn’t a teacup.”

The great thing about the book is that it gives context to the Far Side-y jokes you’ve heard before (and probably didn’t wholly understand like I did…or didn’t) and dissects the philosophy behind it all.  For example, the joke above (if you can call it that) tries to illustrate the principles of Teleology, the metaphysics of trying to explain our purpose in life (with a hint of stoicism). But the more interesting thing is that while I was reading it, I can’t help but connect it as to how some concepts in Computer Science has philosophy written all over it. Take duck-typing as an example:

In computer programming, duck typing is a style of dynamic typing in which an object’s current set of methods and properties determines the valid semantics, rather than its inheritance from a particular class or implementation of a specific interface. The name of the concept refers to the duck test, attributed to James Whitcomb Riley […], which may be phrased as follows:

If it walks like a duck and quacks like a duck, I would call it a duck. [wikipedia.org]

If you’re a philosopher, you might probably pick up some underlying Essentialism in this concept, as illustrated by this comic from the book:

“Why is an elephant big, gray and wrinkled?”

“Because if he was small, white, and round, he’d be an aspirin.”

However, in the case of duck typing, accidental attributes of objects can be perceived as something inherent, and construed as an essential property of the object instead.  The accidental nature of how a duck walks and quacks suddenly becomes inherent in trying to define an object’s “duck-ness”.  This can lead to some problems as illustrated by this point:

In essence, the problem is that, “if it walks like a duck and quacks like a duck”, it could be a dragon doing a duck impersonation. You may not always want to let dragons into a pond, even if they can impersonate a duck. [wikipedia.org]

I guess I shouldn’t be surprised by all of this, given that the topic of philosophy within modern technology has already permeated into mainstream ideology.  Even the fundamentals of Computer Science is embedded in philosophy as exemplified by program correctness proofs and even binary logic.  But the fact that philosophy has influences and applications in language design for example, is mind-bending for me.  Languages embody certain philosophical principles that can change a programmer’s mindset and approach to programming, and problems in general.

And that’s only the beginning. If you want to get your mind blown as to how deep the rabbit hole goes, try reading this and this (the second one’s heavy reading, but it’s worth it at the end).  Maybe this is a thesis in the making.

Silly rabbit, Trix are for kids.

Filed under: academia, Computer Science, philosophy, , ,

It’s official: Bubble Sort is the wrong way to go

In case you need to sort a million 32-bit integers [ youtube link ].

Filed under: Computer Science, obamamania

Where’s the Butterfly in your Code?

We’ve all heard of the proverb that a butterfly flapping its wings in China can cause a tsunami in North America. This butterfly effect can also be “felt” in programming. Small details such as language choices and its API implementations, and even the type of hardware your program runs on eventually adds up. As demonstrated in the second chapter of Spolsky’s Joel on Software, nonchalant implementation such as specifying hard-coded array sizes can eventually lead to bugs and unfortunately into exploits. Now my question is, if this is an all too important fundamental question that everyone building a software system should know, then why isn’t this explicitly taught in programming classes?

Read the rest of this entry »

Filed under: agile and iterative, algorithms, Computer Science

Teach ‘Em While Their Young

Apparently, luring kids into programming are all the rave today. This morning I came across an article from arstechnica (via Digg) about Scratch that makes programming as easy as building LEGO bricks. From the creator of the programmable Lego Mindstorms themselves, Scratch provides an easy-to-use and colorful IDE for kids to do their programming through a drag-and-drop interface. Supposedly, this teaches them basic programming constructs such as if-then-else and loop patterns.

Also, another post from The Third Bit mentions that there’s a NSA-sponsored site for kids. This is all good although I don’t know if the target audience members even know anything about cryptography yet, or let alone pronounce it. Thus, the next time your 3-year old asks you how to decrypt a rainbow table or how quicksort works, you need not to worry.

Filed under: brainwashing, Computer Science, toddlers

“quote”ations

" I would like to change the world, but I don't know where the source code is. "

moi?

Geofrey Josef Flores is a Software Developer at IBM Toronto. He finished hisSoftware Engineering degree at University of Toronto on June 2009. As a frustrated artist he occasionally shoots with his Nikon D40x , and with music inclinations that includes playing guitar and singing. He apparently likes to talk about himself in third person as well.

click!

The Importance of Being Idle Half Chichen Ooops! Kingston Paradise Tulips are a-bloomin' A Day at the Dock