Author: Peter Kinmond

Objects I Interact With Most Frequently

I signed up for the Hack Design course which aims to teach design to hackers. The intro exercise for the course was to watch a documentary on design called Objectified which has a bunch of designers talking about their design philosophy and how it relates to the objects they create. The common theme I took from it was how the design of everyday objects (chairs, tables, computers, mobile phones) had a large effect on the behaviour and mood of the user.

It got me thinking: there’s an insanely small subset of objects that I spend the vast majority of my time with. What are these objects, and how satisfied am I with each of them? How much time and effort have I put into making these specific objects a part of my life? Did I just default into using them or did I make a concerted effort to seek them out? It makes sense that the things I spend all of my time with should be awesome and make me happy.

The results were interesting to me. Here they are (with % of hours per week used in brackets):

1. Bed (~30%)
– I love my bed. Last year we splashed out and bought a big pimpin’ King Size Tempurpedic that’s an absolute joy to crawl into each night. Seriously, it feels like a massage. I used to go to hotels excited about the comfy beds and now I’m just like “meh”. Before that we had a shitty $100 Craigslist one that gave you back pain.

2. Office computer (~25%)
– We have big, beautiful iMacs at work that are a joy to use. There’s been a lot written on Apple’s focus on design and how that translates into great products so I won’t go into why they’re so amazing.  I’ll just say that on a personal level a computer that is actually fun to use is a huge help for the productivity of a software engineer.

3. Office chair (~25%)
– Our office chairs are so-so, not great but not terrible. They’re the kind of thing you forget about as soon as you start working but I think this would be one area to improve on.

4. Office desk (~25%)
– We pair program a fair amount, so our office desks are wide and spacious. Overall they’re nice to use. The warp whistle improvement for desks is to get an adjustable height desk so that you’re not sitting down for 8 hours straight. I had one at a previous job and it made me happy every time I moved it up or down. People are happy when they have the power to alter their environment, and the objects that make up that environment are part of that equation.

5. Livingroom couch (5-8%)
– We have a leather couch from Ikea which has served us well since we bought it 5 years ago. I really like sitting on it and love the smooth feel of the leather. My only complaint is that it gets fricking cold at some points in the winter. I’m not sure how design can help there, other than to use a different material.

6. Bike & helmet (~4%)
– I really like both my bike and my helmet. When I bought them I made a conscious decision to finally buy a helmet that fit well and felt good. Before that I’d always thought of a bike helmet as an afterthought but at some point I realized that I wear that damn thing more than any article of clothing I own and that it would behoove me to loathe it less. Now each morning when I put my helmet on before heading out the door I’m happy. It feels like an exoskeleton extension of my head instead of a crude anchor designed to hamper my movement and balance.

So out of the top 6 items I use most frequently, half of them I deliberately sought out (bed, bike, couch) and spent the time/money to get one I would like. The other half are at my office (computer, desk, chair) so I didn’t have any input into buying them.

Google Blockly

One of the great things about going to conferences is the chance conversations you have with people about random topics. Having a few days to cover a bunch of topics in a bunch of sessions creates the space to talk about new things and have a lot of these types of conversations. During a conversation at RubyConf in Denver last month I found out about a Google project called Blockly which has become a bit of an obsession of mine in the month since then.

Blockly is a graphical programming system which allows you to create programs with blocks, programs which can then be translated into the corresponding Javascript or Python. You can extend it by creating custom blocks for it, and if you’re feeling saucy you can even create a language generator which would allow the programs to be converted into another language such as Ruby. 

It’s pretty early days for Blockly and there’s still a lot of changes being made to the core of the code, but it’s already a very cool concept. There’s a demo using mazes which I’ve been particularly interested in – I think it’d be a good way to teach programming basics to kids while still being a fun puzzle game. I’m working on creating a series of mazes to do just that. I’ll post more when it’s complete.

No comments

RubyConf Round-Up

Whew! Just got back from a whirlwind 5 days of RubyConf 2012 in Denver, CO. Overall it was a great conference and I’m glad I made it out there. Here’s a round-up of my thoughts in no particular order:

– between going to sessions, talking to people, and checking out events hosted every night, I was pretty much engaged the entire time. That was both awesome and slightly surprising. With 3 full days of sessions, I expected there would be a bunch of downtime or that my interest would dwindle. However, I brought a few books with me and ended up not even cracking any of them.

– there was a good mix of topics for the conference – it was less Rails-focused and tried to cater to more than 1 group of people – and that diversity of subjects felt refreshing. Other than the keynotes (which were held in a single huge room) there were 3 tracks of sessions, which is great way to ensure that you’ll find at least one subject that interests you for a given timeslot.

– when you consider all the sessions as a whole you can start to see patterns emerge. One of the main themes of the conference was JRuby’s rising popularity. In some ways it felt like a coming-out party.

– I met a lot of great people. The conference did a good job of making time/space for casual conversation and interaction. It was cool meeting people from all over the US and Canada who aren’t all working at Bay Area tech start-ups (not that there’s anything wrong with that). It was cool to hear about people working in research, defence, education, etc. Also, many of them were RubyConf first-timers. I met a guy who said attendance was up 50% from the last one.

– some of my personal favourite sessions included Jim Weirich’s keynote, Aaron Patterson’s session on meat curing/Rails internals, and Chris Hunt’s talk on SOA at Square. The video from the presentations will be posted on this site

Waves Of Knowledge

I’m feeling very inspired having spent Friday and Saturday at GoGaRuCo listening to a group of speakers who largely have more experience and expertise in Ruby/Rails than I do. This is a good thing since it made me question what I’ve doing to up my game. I think that’s one of the main benefits of a conference – to give you a kick in the ass by seeing what other cool things people are working on.

I’ve been using Ruby/Rails as my main focus for over a year now and it seems like the first wave is complete. Wave 1 for Ruby (as for any language) was getting a base level of knowledge combined with practical ability that would allow me to actually do my job and add value day-to-day. Through a combo of pair programming with a great team and individual study, I was able to skill up pretty fast and become a useful member of our team.

I realize, though, that there are still a bunch of holes in my knowledge, especially where Ruby’s concerned. I also realize I stopped working so hard off-hours to learn and became somewhat complacent when I was able to handle the day-to-day. It’s not such a big deal – it feels like a natural ebb-and-flow thing and I wanted to focus on other stuff for awhile. But still… It’s sobering and inspiring in equal parts when you spend some time with people who are hungry and working hard and showing you interesting things.

I’m ready to go on to Wave 2, which is a deeper knowledge of the tools that I’m using. I know how to use a lot of the tools, but I have this inkling that I don’t fully understand how they work. I’m excited for the ride. Many thanks to the GoGaRuCo speakers (Ilya GrigorikSteven! Ragnarök, et al) for inspiring me to push to the next level.

How To Think More Creatively

1. Don’t limit your thinking to things that are currently possible
2. Force yourself to think of more options even if you think you’ve already found the best one
3. Remember that all rules are temporary and artificially created
4. Do thought experiments
5. Don’t limit yourself to savory or sanitized thoughts – let your mind go to dark places
6. Be honest, at least with yourself
7. Think about how changing a single factor would change the possibilites
8. Listen to music
9. Don’t worry about coming up with bad ideas – accept them as part of the process

JavaScript Blitz!

For a long time, my relationship with JavaScript could best be described as “indifferent”. We didn’t dislike each other per se, we just didn’t have any interest in getting to know each other any better. I found JavaScript to be without reason or accountability and she found me to lack focus and commitment.

However, there were signs along the past few years that things were probably going to have to change. But each time it happened, I reluctantly learned just enough to get whatever project I was working on un-stuck.

All this changed when I started at Sharethrough back in June and started working full-time on a (somewhat front-end heavy) Rails app. I could no longer fake the JS funk and expect to be as effective as I needed to be. I was suddenly thrust into the world of jQuery, Backbone.js, Jammit, Underscore, and more recently, 3rd-party JavaScript. So…. I needed to get up to speed, and quickly. I decided that this 6-month span (Jan-June 2012) will be my JS blitzkrieg. I still have a long way to go, but so far so good. Here are the resources I’ve been using:

1. Learning Advanced JavaScript: This is an awesome interactive online tutorial by John Resig that acts a great intro and primer. I’ve probably worked through this 3 times already.

2. JavaScript Patterns: This is the first JS book that actually made sense to me, but if I’m being honest it’s probably the first one that I actually gave the needed attention. Lots of great stuff in here, helps explain why a lot of JS libraries look like they do.

3. Backbone.JS Peepcode Screencast: Specific to the Backbone.js library, but extremely well-done. The teacher really knows his shit and keeps an almost comically high level of enthusiasm throughout the whole thing. Comes with a sample app to give some real-world examples.

Consuming is Boring, Creating is Exciting

I had a great conversation with a friend over dinner. We were reminiscing about how exciting it was the first time we were able to download a full album of music. It was such a rush to see how quickly you could get entire songs, albums – even the entire catalog of albums an artist put out. The novelty of it was insane.

It’s safe to say the novelty of downloading music has worn off. It’s not that there’s not still great music being produced, it’s just that the downloading/consuming part isn’t exciting like it was in the past.

What’s exciting now is the technology that’s available to help us create amazing things. This has been building for awhile – we’ve seen the tools to help us create things get more and more powerful – but it’s really reached an interesting point now. You can now create something with real value – even a company – with almost no initial money investment. All it takes is your time and imagination. And that to me is amazing. Where the action’s at has changed from the consumer side to the creator side.