Articles

Another Day, Another Language

The smart folks over at Pragmatic Programmers have done it yet again… I’ve bought another book from them; this time it’s Programming Erlang in the wonderful Beta Book format – how wonderful is it that we developers, mostly an impatient lot to begin with, now don’t even have to wait for a book to be published to start reading?.

Nostrils

Aha, Notice the Expando Which Precludes

Mark Pilgrim: The UNSELECTABLE attribute is implemented as an expando. Setting the expando property of the document object to false precludes the functionality of all expandos.

Kxxxx, oh when the jargon on MSDN hits stride and blossoms into complete psychedelia.

What am I Missing?

My recent trip to Microsoft reintroduced me to a few goings on in “The Enterprise”, which is thankfully something of a dim memory for me. The one thing which always seemed like garbage to me is BPEL (and any other XML workflow tool). However there are a bunch of smart people who clearly think that there’s some merit to it.

iStalkr

An interesting web application that recently popped up into beta is iStalkr, a “social feed aggregator” which allows you to add your RSS feeds to your profile (ie, for me that would be this blog, twitter, flickr, last.fm, delicious, and others), and follow your friends’ without the need for manual intervention (since they manage their own lists). Shareable, personal aggregation, I suppose.

Has anyone seen a similar concept? I think it’s pretty neat.

Microsoft Technology Summit 2007

Last week I had a whirlwind trip to Seattle to attend the Microsoft Technology Summit, which was intended as a gathering of a small group of technologists to discuss today’s technology issues and opportunities, as well discuss Microsoft’s role & future direction.

The Good

Overall the experience was pleasant and reasonably educational. The three most enjoyable parts of the conference were:

New Contact Feedback Plugin

James Crisp wrote a nifty Contact Feedback plugin for Mephisto for the new Thoughtworks Studios site. The plugin looks nice, and fills a common need in Mephisto. Also, the Thoughtworks Studios site is extremely well-done. I had seen it before, but didn’t realize it used Mephisto. Major kudos to James Crisp and Thoughtworks!

Kathy and Chris sitting in a tree...

Really hot stuff this Kathy Sierra nonsense. Oh wait, a tasteless pun. Is everyone going to hate me now? Grow up!

I usually don’t wade into political debate because it is full of morons, but it’s the middle of the night and I’m really bored. In fact, annoyed. Like I was with Rails 1.2 (how’s that for continuity!)

Hotkey Plugin

Rails Plugin Name RubyForge Project

hotkey

hotkey

Rails plugin to allow javascript-based hotkey assignments to remote and client-side actions.

Badger

Current Version Gem Name Documentation

  1. 0

badger

View

A library used to generate badge sheets for events, given a PDF template and data for the badges. Uses pdftk.

Your Questions: Amy, how do you learn? | Rails Fire

Your Questions: Amy, how do you learn?

Ang writes:

My question for you is, what sort of process did you use to _learn_,
whether it’s coding chops or design chops…

Did you typically do it on-the-job, or were they usually after hours
experimentation / courses / books / mentors?

How did you find the resources to support learning, etc?

I’m asking because I find that sustained, focused, self-directed
learning can be difficult, and I would love to hear experts like you
talk about how you got through the various stages of learning (Dreyfus
model?).

Thanks very much!

First off, ANg, I had to look up the Dreyfus model on Wikipedia before I could answer your question. While I do read a lot about learning, I had never heard of Dreyfus. It doesn’t seem very proscriptive, does it?

How I learn, the short version

I read, a lot. I read everything. I picked things I loved and devoured every book I could, and I messed around. I played. I designed stuff, I coded stuff, for fun, and to experiment and try out styles and hypotheses. I analyze what I see around me, all the time — design, code, the way people behave. (It’s exhausting, but effective!)

And when I was younger, I spent a lot of time debating, learning, and teaching on Usenet and IRC.

(These days, I just bitch on Twitter, and blog. Times they are a-changin’.)

Four steps required for learning

And, these days, I feel like learning’s a bit more work. Or maybe I’m just tackling more complex, meaty topics.

Your question’s spot-on with what I’ve been thinking about lately, in order to keep learning:

  1. I need to pick one—just one—topic and stick to it
  2. I need to start taking notes again, and
  3. I need to stop stuffing my brain full of so much other crap that there’s no room to breathe—or think (and, therefore, no room to learn)

And, finally:

  1. I need to put it into practice, experiment, fail, succeed, teach, explain, and see if I can justify my positions to other people

Numbers 1 and 4 are the hardest: Focus, and creating intentional practice and exploration. It is so much easier to just read a book, think about it for a little bit, and then pretend I’ve learned something. But that’s just not how it works in reality.

Number 4 also involves other people. That is a critical aspect of it. I have never had a mentor, but I have had a lot of passionate co-learners over the years and wouldn’t have gotten so far as I have without them to point out things I’d missed, and challenge my ideas.

Hello, my name is Amy, and I’m an information addict

I tend towards chaos, information gluttony, and mindless link-clicking. I read too many short articles on a million different topics, instead of settling in at the end of the day with a book of research papers.

I’ve been trying an experiment lately: When I’ve devoted my full attention to one topic, and taken notes for the whole book, I felt like a door opened up in my cluttered-ass head and suddenly there was a sense of an entire world. I internalized what I was trying to learn so much better.

So, basically, I have to learn to be less of an info-pig and realize I can’t eat everything at the world-sized buffet, instead focusing on the couple dishes that I really want.

Yeah, that metaphor’s really stretched to the breaking point.

Are client projects, jobs, or my own stuff more educational?

I’ve rarely had outside projects (read: client projects) that taught me a lot. What other people imagine does not usually go as far as what I would imagine, and pushing yourself hard is the way to learn.

Consulting gigs are also always so practical (otherwise where would they get the budget?) and focused on measurable results. As well they should be. But, because of that, they are not huge learning opportunities for me—except when it comes to how to be a better consultant, which is a huge field of study itself.

Working at the jobs I’ve held has also taught me a lot. When I was given freedom to do my absolute best on something (that is, come up with the solution), I learned a lot about design and code.

When a solution was handed down to me and I was treated like an implementation monkey, not so much.

Job-wise, I also learned a whole helluva lot about how to and how not to run a team and a company. There are very, very few functional teams in this world.

Bottom line

Learning can be hard work — especially once you get past the easy, top-level stuff. But it’s fun hard work, and it’s rewarding. If you’re not frustrated, then you’re not trying hard enough. If you’re not enjoying it, maybe you’re not pursuing a topic you’re really interested in.

Learning does seem harder today because we continually have to choose between refreshing Twitter for the bazillionth time, or deliberately focusing our attention for extended periods of time.

Internal quiet is critical. Twitter is like a Teflon coating for the mind: it makes everything else slide off.

Or at least that’s how it is for me.