Wednesday, April 28, 2010

That Regular Thang

Community is very important to me. I'm blessed to know a lot of great people in my neighborhood, my city, and around the world. I keep in touch with the far-flung folks via Facebook and such, but the best way to enjoy the local ones is just spending time together. A big part of this is regular get-togethers. Turns out we've got a few such occasions...

When I worked at Seadragon, we all hopped on the "lunch train" every day, for some team-wide social interaction. No topic, no matter how bizarre or risqué, was off-limits except one: you can't talk about work. The team is incredibly tight knit, enjoying each other's company and working well together under stress, and I credit those lunches as being a major contributing factor.

When the office moved from downtown Seattle to Bellevue, we started doing one day a week with no meetings so people could work from home (to offset the new commute burden). A number of us continued the lunch tradition, leaving our homes to have lunch together on that day. Even now, no longer working with the team, I still join in for those weekly lunches.

Another weekly event is dinner and a movie at our house. Friends and neighbors pile into our kitchen and cook and feast together. The grownups engage in all sorts of merriment, while the kids run around crazy. After the kids go to bed, we all settle down in the living room for a movie picked by a different member of the group each week. The merriment continues as we "add our own soundtrack" (as one of the local theater chains admonishes us not to do).

Once every other week, various portions of Live Labs get together at our favorite pub to eat, drink and debate the world's important topics. This pub accepts minors, and Caitlyn has been a part of this regular event since she was 1.

Once a month, my sister and her husband serve brunch to a bunch of friends. We are always sure to attend for the good food and delightful conversation.

There's also the monthly neighborhood trash cleanup, which, as it turns out, has become quite the social event; everyone comes out, picks up some trash, catches up on the news, watches the kids play around together, etc.

We used to have a monthly get-together for the neighborhood at someone's house, which was a great way for everyone to get to know each other as we were all moving in. Now that the neighborhood has matured a bit, we spend time with each other a good deal throughout the month with random interactions on the street, and the formal gatherings don't seem as necessary. In a sense, every day (especially if it's sunny) has become neighborhood get-together day.

Planned or not, there's something wonderful about all these gatherings. By making them regular events, they become a comfortable place for people to come when they can, let their hair down and hang out. If you miss one, no big deal, it'll be on again next week.

This sort of constant, low-key interaction is what makes community strong and life more rich!

Sunday, April 25, 2010

My First Programming Toy

I started using computers when I was nine, and I started programming the same year. You kind of had to know a little programming to get anything done on those computers anyway, and it was a smooth ramp from there to writing real programs.

Caitlyn started using computers when she was two, and both her parents program, so I suspect she'll get into it sooner or later. I'm actually confronted fairly often with how best to introduce someone, not just my own daughter, to the world of programming. Nowadays you can get by on computers just fine without any programming knowledge (though some of the things you can do with Google start to feel a little like code), and "real programming" is done with complicated, and sometimes expensive, tools.

I always point to JavaScript, because it's available in every browser, all you need is a text editor, and you can immediately make interesting, visual things happen. The thing is, how can we make it even easier and more fun?

One of the things that got me (and countless others of that era) started programming was the programming language Logo, and particularly its "turtle graphics" feature. Basically you used simple text directions, such as "move 10" or "rotate 45" to move a little "turtle" around the screen. The turtle had a pen it used to draw as it moved, and you could make all sorts of neat patterns by combining those simple commands into routines.

So, I propose to make an interactive graphics programming environment inspired by turtle graphics, but using JavaScript as the language. It would be a webpage with a large drawing area and a small text entry area. The turtle starts in the middle of the drawing area and moves around as you type directions, such as "move(10)", and press return. If you start a line with "function", you're allowed to write multiple lines, until the ending curly bracket.

In this way you can get started doing real programming, with a real programming language, with immediate visual feedback and lots of room to experiment. Of course I want it to work in both desktop browsers and the iPad Safari, and it needs to be something a five-year-old (assuming basic reading skills) can use.

Actually, this seems like something that should exist already, but I haven't been able to find it. If you know of one, please let me know... otherwise I'll just have to make it.


ContextFree.js & Algorithm Ink: Making Art with Javascript (Aza Raskin)

Kodu (FUSE Labs)

Programming without math (Ken Perlin)

Light-Bot (Armor Games)


Sunday, April 11, 2010

Book Page Interchange

The "Amazon to Seattle Public Library" bookmarklet is pretty spiffy, but what if I want to go the other way? Or how about from Amazon to Goodreads, or WorldCat to Bookmooch? That's going to be a lot of bookmarklets...

What we need is a single bookmarklet that you can activate on a book page on any of these sites, and it'll pop up a panel with buttons for all the other sites. Well, there are hundreds of book sites, so we'll just do the top 10 or so and then maybe have a "more" option. Perhaps you can specify which sites go in your top 10. Anyway, clicking on one of those buttons takes you to the same book, but on that other site, simple as that. Now you're never stuck in one site when you want to be in another.

Of course we can do the same for any kind of entity that has multiple representations across sites, such as music, movies, people, word definitions, etc. Let's start with books, though.

A related problem is when you want to send a book recommendation to someone, which site do you link to? Perhaps our service could also host extremely simple book pages with all those site buttons, plus the author, title and book cover, but nothing else. Your friends (who perhaps aren't using the bookmarklet) can then follow the link to whichever site they prefer. Give these pages supershort URLs, and you've got a twitter-friendly, site-agnostic way to share book recommendations.

Labels: ,