Home

Small world

  • Jan. 2nd, 2008 at 7:52 PM
cat - after teo rus, bad post!, sleepy goth, crossroads, money, mikage: go deeper, treason and plot, raahhhr!, asuka, O RLY? YS RLY!, bitch please, Angry Young Meredith, fat bob's novel, rose window, space hog!, sup fruits, oh really?, me!, gunpowder, doom, needs head!, native habitat, dehydrated water, brave, serious
There's a post up on BoingBoing today (ok, yesterday for me) about open vs. closed search algorithms, suggesting that the search algorithms used by Google, Yahoo et al are bad because of their lack of transparency. It invokes a comparison to an important concept in computer security: "security through obscurity" is dangerous because an effective encryption scheme should be equally hard to break whether you know the internals of the algorithm that generated the ciphertext or whether you don't.

I think comparing this to search is a bad (or at best misleading) idea, and expounded on this in the comments. But I'm far more entertained by the fact that the two best comments on the post so far come from two sources with whom I am tangentially familiar, albeit from totally different directions: [info]jrtom and [info]radtea. Small damn world!

It's Friday somewhere

  • Dec. 17th, 2007 at 5:49 PM
cat - after teo rus, bad post!, sleepy goth, crossroads, money, mikage: go deeper, treason and plot, raahhhr!, asuka, O RLY? YS RLY!, bitch please, Angry Young Meredith, fat bob's novel, rose window, space hog!, sup fruits, oh really?, me!, gunpowder, doom, needs head!, native habitat, dehydrated water, brave, serious
As usual I am probably the last one to notice, but just in case I'm not: Script.aculo.us fucking owns.

Sometime in the reasonably near future I want to arrange, um, everything I have been thinking about in the last week and a half into an essay, the thesis of which is: if you are a Web 2.0 coder, learning Lisp will make you a much better Web 2.0 coder. No, really. And not just because of what Paul Graham had to say about his experiences starting Viaweb (short version: back during the early days of Web 1.0, they built one of the first truly agile web applications -- hell, quite possibly the first web application full stop -- and one that could have justifiably been called a Web 2.0 app if we'd had AJAX back then). I do not have time to expound on this right now, but I leave you the following points to mull over while I get my house in order:
  1. Dynamic HTML lives and dies by the DOM. If your code spends a lot of time modifying innerHTML members, you are doing it wrong. Javascript makes it easy, blissfully easy, to manipulate your content by manipulating its structure -- adding, removing and altering elements and their attributes by type and value.

    The DOM is a tree, and here is the Big Secret Insight about trees: trees are lists. Trees are dead easy to represent as nested lists, and if you can think in Lisp then you think in trees all the time anyway. Use trees. Learn Lisp.
  2. Remember my enormous long rant about C++ functors from a few weeks ago? Remember the part where I talked about "functions as first-order data"? Javascript treats functions as first-order data. You can create, modify, assign and replace functions at runtime. Yes, you heard me right: self-modifying code. The hardest thing about self-modifying code is getting your head around the fact that yes, it exists, and yes, you can do it. Go get comfortable with it. Learn Lisp.
More later.

On a more pleasant note...

  • Nov. 7th, 2006 at 2:03 AM
cat - after teo rus, bad post!, sleepy goth, crossroads, money, mikage: go deeper, treason and plot, raahhhr!, asuka, O RLY? YS RLY!, bitch please, Angry Young Meredith, fat bob's novel, rose window, space hog!, sup fruits, oh really?, me!, gunpowder, doom, needs head!, native habitat, dehydrated water, brave, serious
... woot.com had the Roomba Discovery 4220 SE on special yesterday for $150 plus $5 shipping, so I did a little budget-checking and decided it was time to start establishing my robot vacuum cleaner army. (Ever since the Bluetooth-enabled Roomba cockfight at ETech back in March, I've been thinking it would be cool to get a bunch of Roombas and write flocking and swarming algorithms for them, then bring them to a conference, have them lock onto some poor bastard's Bluetooth cellphone or PDA, and watch while cackling hysterically.)

I could only afford one, but one is enough to start playing around with the Serial Command Interface. I'm pleased that the SCI manual shows a Python code fragment for changing the baud rate, but all the commands are bit-level, power-this-pin-for-this-long/send-this-opcode-and-data-packet instructions. It doesn't appear that anyone's written a higher-level API (at least not in Python, though the Illinois Roomba Lab (!) at UIUC has a C++ one). (And why would I want a Python Roomba API? Because then any Nokia S60 phone becomes my Bluetooth-Roomba-army control platform. I love you, Python interpreter. Muahahaha.)

(Note to self: in that case, do we open up a need for encrypted channels between cellphones and robots? Should I draft an RFC for SRCP, the Secure Roomba Control Protocol? "Man-in-the-middle" takes on a whole new meaning when the attacker is somewhere in the room with you!)

Anyway, one robot vacuum cleaner does not an army make, but it'll be a neat sidekick. I need a naming convention for robot vacuum cleaners!