“programming”
41 posts under this tag.
When they arrived in his office and Abir explained the concept for what is now called the decoder, Carbonell was floored by its elegance. “In the few weeks that followed, I kept wondering, ‘Why didn’t I think of that? Why didn’t the rest of the field think of that?’ Finally I said, Enough of this envy. If I can’t beat them, join them.”
I’m floored too. (And envious!) What Meaningful Machines lyrically calls «flooding» in a recent Wired article, Me Translate Pretty One Day, is a stunningly beautiful translation algorithm, baffling in its simplicity.
Though if it’s simple to state and understand, it’s only because it relies on operations on a terrifying (computational, mathematical) scale. (Like the first time one invokes inside a theorem, say, the set of all possible sets, there’s a mixture of fright and awe—we can barely believe our moxie to write such thoughts.) In a very real way, the algorithm is written in Moore’s law language and if it escaped us all it’s mostly because our words are so shy, so inadvertently constrained by past assumptions.
Ah! How exciting! Machine language translation is on the horizon.
Ah, the ever-recurring techno-myth: a dirt-cheap educational contraption to revolutionize third world children’s education. I can’t even remember when I heard about it first. I was thrilled though, enthused. But then with the undelivering years went my excitement. For one thing, the deployment plan is based almost entirely on governments, which is a nonstarter. More importantly, there might be better options. Cellphones are already a phenomenal worldwide success, even in the poorest countries, and that’s because they’re tangibly, immediately useful. A recent Economist article, Splitting the Digital Divide, mentions other less obvious but intriguing options.
And yet, reading yesterday’s New York Times article, For $150, Third-World Laptop Stirs Big Debate (yup, there’s been some price adjustment), made me think again of the amazing possibilities that can unfold from a personal mobile computer in the hands of a child. Blame it on Neal Stephenson’s The Diamond AgeAM with its amazing book-machine, the Young Lady’s Illustrated Primer —every self-learner’s wet dream.
At any rate, it seems to me that (save actual existence and deployment) the crucial factor for success will be software and so, for what it’s worth, here’s a promise: If and when Negroponte’s brainchild ever sees daylight, I shall stop whatever I’m doing, for three months, to develop mindblowing educational software for it. There, I said it.
As a lapsed gamer myself, Nintendo’s new strategy—simplicity, in several senses—makes a lot of sense and strikes me as a major step in the evolution of our tech gizmos. Since a 1995 Gameboy, the DSWP is the last handheld console that I remember caring for (and that’s mostly for that intriguing Brain AgeWP game).
Jon Aquino, father of YubNub, is onto something with his idea of deep software:
..a class of software that is so rich in potentially useful features that even after years of use there is still more to be discovered.. And these aren’t useless features that bloat the product—rather the software is so mature and has been worked on by so many for so long that there is so much in it to explore.
To my constern, I could only venture Vim, Mathematica, and some tentative candidates to his growing list, so please pay his post a visit and contribute.
There was on the thread, though, one nomination to the title of deep software that I simply can’t skip, because I happen to agree that the nominee is one of the best pieces of software there has been (and its author build it when he was, get this, eighteen; see Rolling Stones article on him) and because the nomination itself is just damn good writing.
...over the past few months I’ve become convinced that there were only two really revolutionary pieces of non-game software released in the 1990s that completely dictated what followed in their fields. One was NCSA Mosaic, and it doesn’t really fit into your criteria. The other one almost certainly does, though you don’t realise it until you really start exploring. Also, it’s not “productivity” software in the same sense as the others, but I think it’s inspired just as much creation.
Okay, enough with the hyperbole. Have one guess, and then click here.
Time is turning yet again: a beloved CIMAT teacher just send me one more of his one-every-24-months email, my 2nd out-of-school anniversary is around the corner (September 14), and today I found, via Joel1, that Rails just celebrated its second anniversary itself (yup, we were born to the web around the same date).
Let’s share a brief moment of guilty pleasure for proving them wrong, then move on to the longer lasting pleasure of simply sticking to it for our own sake. And have understanding for those conditioned by past disappointments to classify all that is new and ripe with passion to be uninteresting, to be all hype, no calories.
We’re past the point of infatuation, this is love, and love is inclusive. Happy birthday Rails, happy birthday Railers.
...and this is one of the best.
In academia, in industry, and in the commercial world, there is a widespread belief that computing science as such has been all but completed and that, consequently, computing has matured from a theoretical topic for the scientists to a practical issue for the engineers, the managers, and the entrepreneurs..
I would therefore like to posit that computing’s central challenge, ”How not to make a mess of it,” has not been met. On the contrary, most of our systems are much more complicated than can be considered healthy, and are too messy and chaotic to be used in comfort and confidence. The average customer of the computing industry has been served so poorly that he expects his system to crash all the time, and we witness a massive worldwide distribution of bug-ridden software for which we should be deeply ashamed.
For us scientists it is very tempting to blame the lack of education of the average engineer, the shortsightedness of the managers, and the malice of the entrepreneurs for this sorry state of affairs, but that won’t do. You see, while we all know that unmastered complexity is at the root of the misery, we do not know what degree of simplicity can be obtained, nor to what extent the intrinsic complexity of the whole design has to show up in the interfaces. We simply do not know yet the limits of disentanglement. We do not know yet whether intrinsic intricacy can be distinguished from accidental intricacy.
To put it bluntly, we simply do not know yet what we should be talking about.. The moral is that whether computing science is finished will primarily depend on our courage and our imagination.
Edsger W. DijkstraWP, Communications of the ACM, Mar 2001, Vol. 44, No. 3
This is from Douglas Crockford’s Survey of Javascript (never program JS without your Crockford!). I thought it quirky at first, surprisingly helpful later. (Emphases added.)
The && operator is commonly called logical and. It can also be called guard. If the first operand is false, null, undefined, ”” (the empty string), or the number 0 then it returns the first operand. Otherwise, it returns the second operand. This provides a convenient way to write a null-check:
var value = p && p.name; /* The name value will
only be retrieved from p if p has a value, avoiding an error. */
The || operator is commonly called logical or. It can also be called default. If the first operand is false, null, undefined, ”” (the empty string), or the number 0, then it returns the second operand. Otherwise, it returns the first operand. This provides a convenient way to specify default values:
value = v || 10; /* Use the value of v, but if v
doesn't have a value, use 10 instead. */
Short-circuit logical operators are a well-known, simple idiom in several languages, but they can sometimes be confusing to read, specially when nested. What I want to point out here is that next time you have to go through code that uses them, try reading them as guard or default, as the case may be. You’ll grokEE them immediately, trust me.
Isn’t it striking, the power of names?
I love deadlines. I love the whooshing noise they make as they go by…
— Douglas Adams WP
Oh boy, can you hear the whoosh yet again? For the first deadline (August 5) my excuse was mostly several huge, polished posts (1, 2, 3) that I just started pouring out possessedly one afternoon after another. For the second deadline (August 12—yesterday!), well, no excuse other than that I’m in thrall with Domburi, and despite sleepless nights (day? night? they’ve lost all meaning to me), I’m happily obsessing with details and trying all sorts of innovative things. I’ve reached a strange state of scripting satori: I’m writing HTML through Javascript like no one has before. I swear it’s so weird and powerful that in a way it’s funny. It’s big stuff.
So yes, it’s better to think of my previous Road Map as broad guidelines for what’s to come. Just trust me, when Domburi’s finally out (August 31), it’ll be heart-breakingly beautiful. Till then and thanks for keeping in touch.
I don’t know exactly when or how the thought came into my mind but this morning the epiphany was there: wouldn’t it be cool to see Gmail’s half MB Javascript source1 a la matrix code viewIY? Indeed it would, and so for the next half hour I became a man posessed. It was amazingly easy (“ya sabiendo es facil”) to hack it up in JS and it makes for an interesting screensaver.
When I finished I realized it would be really easy to make my makeshift Matrix code generic and so here’s a quick stab at it. Type whatever text you want matrixified and a new window will (hopefully) popup with it. (Though be warned, it’s pretty rough, unpolished code and it’ll surely be too slow if you don’t have a fast computer.) Anyway, enjoy.
Next time you see Gmail,
think,
|