18 April 2009

Notes from Alex Martelli's talk @ Pycon 2009

My notes from Alex Martelli's talk @ Pycon 2009: video here.
watched on April 18, 2009
abstraction as leverage
by alex martelli
abstraction is something you can't avoid
abstraction is leverage - by working at the higher level
 you can do a lot with so little (layers & layers)
leverage can crush you if things go wrong
so if you need care to USE abstraction,
 you need double layer of care to PRODUCE abstraction
all abstraction's leak (spolsky's law) -- where you must
 get to some of the level below
often you sometimes want abstractions to leak!
(like distributed filesystems)
abstractions can slow you down -- latest research:
 "to abstract is to procrastinate"; more abstract
 the "todo" is, the more the students will procrastinate
things way in past are more abstracted that more
 recent ones
to achieve, think Concrete: what's the next 1 thing,
 i'm going to do
interaction design: "Joe Blow" vs "the user"
37signals: prefer action over abstraction
all abstraction leak because: "the map is not
 the territory"; before you can abstract,
 you must see the details; before you can withdraw,
 you must stand close; abstract only you know
 all the details (which won't be possible), so
 be flexible and humble!
TCP/IP abstraction leak: designed in an era when
everyone was friendly
Need to understand several layers below and above
(Filesystem: below layers => device drivers,
 above layers => how are other programmers consume
 the apis)
Knuth: programmer is mostly to shift levels of
abstraction from low to high; see things simutaneously
at both low & high level
Jason Fried: copying skips understanding;
understanding is how you grow; you have to understand
why something works or why something is how it is;
when you copy you miss that; (You just copy the high
level abstractions blindly)
Jeff Atwood: don't reinvent the wheel unless you plan
of learning more abt wheels
Bottleneck -- if you remove it you have a glass!
Google App engine -- counting how many reads & writes
Find bottleneck (where everything must go thru) and
monkey patch that; problamatic
App Engine provide hooks to do same thing!
(Q&A: answer: focus on making things easier
 to recover when they break, instead of trying
 to protect everything)