Readymades

I was at the SF MoMA this past weekend – and if you’ve ever been, you’ll (hopefully) know that in their standing collection is a set of art from a number of particularly interesting artists, one of whom (Duchamp) is known best for a work photographed here. This is Fountain:

It’s a urinal. It’s a run-of-the-mill, yes-he-really-did, urinal. Made into art (and thus deserving of a spot inside the MoMA) simply by declaring it as such.

Of course, some amount of reputation was required to pull that off, and some other, more traditionally respectable work had to be done to acquire said reputation, but in the end – he’s able to pull something someone else technically “made,” and enhance it for his own purposes.

In the software world, there are those who seem to find it unthinkable to use off-the-shelf products to help with the engineering process in-house. While this attitude has certainly led to plenty of innovation (thank you for Cassandra, BigTable, etc), these special cases seem to really only be the extreme of the “there’s nothing out there just for us” attitude. And, I suppose, to play devil’s advocate, in their situation, off-the-shelf tools probably aren’t quite right for their incredibly unique case. (Or maybe they just had too many engineers and not enough game-changing projects?)

In any case. One of the things I’m getting used to at Aardvark – and starting to really appreciate the wisdom of – is utilizing existing and established solutions when necessary. We need bug/ticket tracking? There’re tons of solutions out there – done! Better log analysis? Found, installed, done. System and cluster monitoring? Perhaps not entirely ideal, but good enough – done. It lets the team know what we need to know, and gets us free to focus on what we really need to get done – the core product and infrastructure.

I joined a conversation this past weekend with a couple of people just starting to get their startup off the ground, and they were embroiled in a CouchDB vs MySQL debate – are relational databases really outdated, or are document-based databases just overhyped? Which is the better to start with for their startup? My answer – whichever makes your actual job easier. There are lots of cool toys out there, but there’s a careful risk vs. reward tradeoff you have to make – and when you’re focused on startups, can you really afford an awkward risk down the line with your data or architecture?

I suppose this is a long, elaborate rephrasing of “Worse is Better.” Take shortcuts and the quick, easy, established route to change the world, first – then figure out how to make it happen better.

Too many ideas!

I need a brain recorder. Not a notepad, or a voice-recognizing to-do list, or an iPhone app I can access anywhere, but a straight-up biodevice that hooks up to my brain and, when I realize I’m thinking a semi-coherent and somewhat interesting thought that needs a little more munching on, jots it down somewhere for me.

This summer, I’ve been exposed to more down time than I’ve ever been used to – part of it has been due to the necessary delays that come along with the joys of public transportation, some of it is from the copious amounts of walking I’ve been doing (to the grocery store, to and from work, to BART), and some of it is late at night after I get home. (Digression: that down time I’m not OK with – email me to hang out if you’re free!) And in this down time (actually, often when I should be focusing on other things), little thought bubbles pop up around my head:

I wonder what the weather is like in Boston, and (when it’s cold and windy here in SF) how much I actually appreciate seasons on the East Coast,

I wonder why there are so many people scattering so many elementary grammar and spelling mistakes in their emails (“Lot’s”? Come on.),

I wonder about companies and focus and HR people and women (more blog posts along the way),

I wonder about relationships and priorities and what other people are doing this summer.

So somehow, in my mind and for this blog, I’ve been queuing up quite the list of things to think about and blog about. I haven’t, however, found the impetus or time (because I’m thinking up too many other thoughts? :)) to actually do so. So here’s a promise – there are interesting things to come.

Found in abundance in San Francisco

(modeled after Crystal’s found in abundance in hong kong:)

  • Steps and hills (sometimes – steps in hills!)
  • Hardwood floors and aged wooden moldings
  • Fashion ensembles, in ….. interesting taste
  • Vintage boutiques and used book stores
  • Dogs and wide streets
  • Timbuk2 bags, Elvis Costello glasses, flannel!
  • Coffee mugs

Oozing with charm – I love this place!

whoa! tcpdump

Interesting UNIX trick of the week:   $ sudo tcpdump -s0 -i en1 -A

(via unixjunkie)

Why I like “awful” television

Thanks to various bittorrent site memberships, I manage to keep up (or catch up) with a solid number of television shows. There’re a few, though, that I tend to downplay in discussion – but always come out, guns blazing, to defend the merits of. Tonight my champion is GRΣΣK.

Exaggerated social stereotypes and brief flashes of cheesiness aside, Greek contains surprisingly sharp writing – and humor that sneaks up on you. Once you accept that you’re watching a television show about Greek life in college (and with that, the knowledge that it’s going to be about college students and the frivolities that surround them), you actually start to care that the nerdy protagonist is able to rush the freshman athlete he cares about, and that the little sister-big sister relationship is patched up.

Absent (mostly) is the overwrought teenage angst and eye-rollingly complex drama of Gossip Girl – gone are the repeated and unbelievable plot twists of Heroes (is Sylar dead or is he not?)… Greek is a largely feel-good television show about human heroes that stay good but make mistakes, real-life villains that have their own agendas but have human streaks, and entertainingly realistic awkward situations between collegians.

Sometimes the existential questions are best left to Battlestar Galactica, the moral, to Law & Order, the supernatural-meets-coming-of-age, to Buffy the Vampire Slayer. It’s nice to just enjoy a television show for the sake of the characters and the chuckles. A cute snippet from an earlier episode:

Rebecca, having discovered her emerging interest in women, is discussing a new love interest with a known gay acquaintance, Calvin.
R: Hey! Wait up! [cooing] So… how are youu?
C: Rebecca, do you even know my last name?
R: It starts with a T. N? R!
C: One lesbian kiss and it’s like you’re just one of the gays, huh?

R: Oh Cal. Not every gay person has to go through a self-loathing shame spiral before coming out.
C: Well then – welcome to the team! Our uniforms come in lavender for the boys and denim for the girls. [walks off]
R: … Your last name starts with an S!

Social responsibility, and what is “good”?

What would you do if you had enough money to not have to work? I recently said I’d still pursue software development – it’s exciting and fulfilling and interesting and I’d still want to find a way to contribute intellectually to the tech world.

The person I responded to (let’s assume he/she is male for pronoun simplicity) was less than enthused with my answer – once given a means to support himself financially, he would wrap things up and go find a way to help people in a third-world / struggling country.

So here’s my question: is it selfish to want to pursue your own interests over some greater good / social responsibility? His goal in life is to work in order to prepare for retirement, after which he plans to find a way to help others. But the world needs people to also continue their own careers, advance their fields. So who decides who does what? Are you only allowed to be selfish and focus on your own career if you’re simply blind to all the suffering going on in the world?

I understand that everyone has some sort of obligation to better humanity – but who’s to say to what extent? Should everyone who is able and aware stop pursuing their dreams (additional point – can dreams be selfish? I suppose they can – but then why don’t we push social responsibility to kids as much as “dream big, you can achieve anything”?) to serve others? How do you decide who has to give up their dreams (to be the best X, to achieve Y) for the betterment of some other society? Or – is helping other people automatically going to trump the fulfillment of achieving any of the previously identified dreams?

I’m conflicted. Frankly, startups, new media, and technology rank much higher on my list of interests than poverty and hunger. Does that mean that, hands down, I’m a selfish person for not caring about others? Does that mean all interests are ranked – some interests are inherently better or less selfish than others? Does being concerned about poverty and racial issues mean that you’re a better person than those who care about the environment? Or gender issues? Or socioeconomic issues within the US, versus those outside?

At what point do we start drawing the line and saying, “you don’t care enough about X. You’re being selfish”? Isn’t this a slippery slope – creating these strict definitions for “caring about others” and judging people based on it? By these definitions, I can care extensively about and for others in my life to the extreme and still be considered selfish. Can you set bounds within which caring is irrelevant? If you always deliver soup to sick friends – must you also donate and be involved in Red Cross / Salvation Army work to be a good person?

I don’t know where to draw the line.

MIT 6.001 and the new curriculum

A recent post about the death of 6.001 caught my attention earlier today, and I’ve been stuck composing this blog post in my head for awhile.

As one of many MIT Course 6 students who took 6.001, I’m crushed they’ve been changing the curriculum. When it happened, student speculation ran along the lines of – enrollment in Course 6 has been dropping since the introduction of Course 20 (Biological Engineering). And because 6.001 was so heavily CS-oriented, the department didn’t want to continue losing the set of students who were turned off by the lack of hands-on appeal – so they wanted to make the class more accessible and exciting to the largest number of students.

While, from what I’ve seen and of 6.01, the class lacks not only the pure coolness of Scheme versus Python, but also 1) the ability to even the playing field for students, regardless of their previous programming knowledge, 2) the radically different way of thinking about computer programming that Scheme and SICP provided, and 3) an actual solid grounding in thinking about problems computationally and breaking them down. (One of the upsides I think I would have appreciated, however, is the ability to put an industry-relevant language on my resume. “Scheme” got a lot more raised eyebrows than job offers.)

What MIT offers now for those looking for CS grounding is an “intro intro” course called 6.00 – a class required for Course 20 but not for Course 6, and a class designed specifically  to teach students how to think computationally and design software programs. 6.00 covers CS basics from recursion to performance to basic Big-O notation. Part of me wishes this class was included in the required curriculum, and part of me thinks it would be too easy / a waste of time for those who have programmed in the past.

I wonder whether this argument boils down to – how should students learn? By learning the basics and theory (math, physics, basic CS classes like 6.001 / 6.00), or by exciting students first by offering hands-on classes and lots of options (6.01, removing 8.02, the E&M class, from the General Institute Requirements, etc.). Unfortunately, the latter approach feels like MIT is relaxing its standards for its students – trying to make things exciting now so that students stick with the program, instead of building a solid foundation for later… and if that’s true, it’s not a trend I’m comfortable with.

For more discussion – the original Hacker News thread here (which actually links the article at the top of this post. How circular!)

Edit: A great point (from a MIT ‘08 sitting right in front of me in class, incidentally) made in an identical thread a month+ ago –

I think there’s something else here, implicit in Sussman’s comment, that’s important. MIT was founded on a philosophy of practicality, and everything else is secondary. If you couple that with the belief that fundamental computer science is the most efficient way to enhance practical software engineering, Scheme was a wonderful choice…

Python (and, frankly, a number of the scripting languages-turned-mainstream) combines this clarity of computer science with a practicality that Scheme never had. If you can convey 95% of the basic ideas in Python, and you can also open the door to learning how to deal with 3rd party code, you’d be a fool not to. It was never about programming purity anyway, so there’s no reason to mourn the passing of Scheme. It’s progress.

Product.good -> people.good?

In tech and the startup world, there are tons of options – new startups spring up every day with “the next big thing” – or “the ____ killer,” or “____ for [insert platform here],” or “____ meets ____, AGGREGATED!!”

So when something really cool comes around – it seems to make sense to want to jump on board and share in their (or your expectation of their) success. But when you know little about the actual team you’d be working on, and conventional wisdom seems to put “the people” at the top of the list when considering school / workplaces / environments in general, how do things play out?

I like to think that good people want exciting projects. A good developer wants stimulating work, and once put in an environment with that stimulus taken away (either by a boring project or, for example, being bought out by a company which stifles the exciting parts), they’ll find a new place to play out their cool ideas.

So I think instead of worrying whether product.good > people.good or people.good > product.good… I’ll stick with product.good implies people.good (with the converse unfortunately not always being true, without good management / vision / etc). Here’s to the future.

Powered by WordPress with GimpStyle Theme design by Horacio Bella.
Entries and comments feeds. Valid XHTML and CSS.