Tuesday, March 29, 2011

Announcing Rogue Editing & Design

Hey, folks; Susan here, to let you know that I've launched a new site for my knitting and generally yarn-related activities! I may still post non-yarn-related things here on Two Piece Set, although as you've noticed traffic is pretty low around here these days, so I don't expect you to hold your breath. Instead, follow me over at www.RogueEdits.com, especially if you're looking for a tech editor or some fun new knitting patterns!

Here's what the new site offers:

Note that I still don't accept Google-related questions on my personal sites, either here or at the new site. For anything Google-related please contact me and/or my co-workers through our Help Forum.

Tuesday, January 25, 2011

New Year's resolutions & OKRs

Hello, 2011!

Every quarter at Google we write these things called OKRs: Objectives & Key Results. Each individual has OKRs, each team has team-level OKRs, and Google itself has company-wide OKRs. Objectives are big-picture things that you want to accomplish: achieving world peace, making users happy, becoming an awesome roller derby skater. Key results are measurable ways that you will quantify your progress toward said objectives. Key results for achieving world peace might include reducing the number of people killed weekly in conflict zones by x%, or reducing nuclear weapons stockpiles by y%. Key results for becoming a rollergirl might include getting onto a roller derby league, or getting your 25-lap time down to ≤ 4 minutes.

There are several things I like about the OKR system. It not only requires you to set goals for the quarter, but to think about why you're picking those goals. What objectives are you trying to achieve? Just making a to-do list of things you need to finish this quarter doesn't ensure that those things are meaningful. Listing objectives first, and then KRs based on those objectives, forces you to think about where you want to go before you think about how you want to get there.

At the end of each quarter, we grade each of our KRs from 0.0 to 1.0 depending on how well we met each goal. Setting measurable KRs is important because then you can grade them quickly and objectively, unlike a qualitative goal such as "Get better at [blah]" (what does "better" mean? How do you know when you've reached it?). If your key result was to write 5 blog posts and you only wrote 3, you score a 0.6. Easy. Average each set of KRs to see how well you met each objective, and average all your KRs to see how well you met your goals for the quarter.

But maybe the thing I like the best—especially when I start to think about OKRs outside of the workplace—is that you're supposed to set stretch goals. At Google, if you're performing well and meeting expectations, you should be hitting ~0.7's on your OKRs. Fully meeting an OKR (scoring a 1.0) means you went above and beyond and accomplished something extra special. This encourages people to set aggressive goals and to try to achieve more than they think is likely. It's actually looked down on if you get too many 1.0's too many times in a row—it means you're not setting aggressive enough goals for yourself.

I used to make New Year's resolutions in the half-assed way that many of us do: as an overly-optimistic wish list of what I'd like to become in the next year (more fit, more successful, less stressed), rather than a list of things I intended to achieve. I'd think big but inside I secretly wouldn't expect myself to be able to achieve that much, so I'd never seriously try to reach the goal. The problem with New Year's resolutions is that we see them as binary: in December, you can either say "I achieved that resolution this year," or "I did not achieve it." If you resolved to go to the gym 3 times/week and at some point you missed a week or two, you've already failed that resolution and there's less incentive to keep going for the rest of the year: even if you go 3 times/week for the rest of the year, you won't have fully met your resolution. This type of black-or-white assessment of goals practically guarantees that you're setting yourself up for disappointment.

For the last several years I've set something that's closer to "New Year's OKRs." They're stretch goals, and I think of "optimum performance" as scoring 0.7 on them. If I resolve to go to the gym 3 times/week and I miss a week or two, I'm still scoring a 0.96 on this goal, which is damn good! In fact, I could miss 13 weeks (hey, stuff happens) and still score 0.7 and feel good about myself. I've also noticed myself setting more and more measurable goals, such as "Design & publish 4 knitting patterns" rather than just "Design more patterns." It feels really good when you can score a solid 1.0 on a goal and know that it's not just because you're allowing yourself an overly-generous interpretation of "more" or "better." I still set qualitative goals too—be less judgmental, take the bus—but I feel like the score-things-as-OKRs-rather-than-resolutions perspective has helped me feel like I can set aggressive goals for myself and actually expect myself to follow through on them. Now, even if I feel guilty about slipping up on a resolution, that one slip isn't able to derail my ability to follow through on the resolution for the rest of the year and to feel good about my accomplishments at the end.

Here are some of my New Year's OKRs for 2011:

  • Finish knitting 3 sweaters
  • Design & publish 1 sweater pattern
  • Knit 11 shawls
  • Buy more often from independent yarn dyers
  • Get my unfinished knitting projects under control (I'd like to have ≤ 3 at the end of the year. Don't ask how many I have right now!)
  • Be less judgmental
  • Take the bus to work in the summer

What are yours?

Monday, December 6, 2010

Urban Craft Uprising recap

Every time I go to a street fair or art fair I get a bunch of great business cards from the merchants & crafts people, expecting to blog about it... and then never do. Today I'm rectifying that with a recap of my two (yes, two!) days spent at Urban Craft Uprising this weekend!

Well, maybe not a recap. More like a shopping list for the future. :-) I got a lot of great Christmas gifts from the vendors, but of course there's always so much more you want to buy than you can really justify. Happily, there were a ton of people at Urban Craft Uprising and it was really great to see so many supporting our local artists and craftsters!! It almost makes one optimistic about making a living in the handmade business.

I did most of my shopping on Saturday, but was so impressed with the vendors that I came back early on Sunday to wait in line for a swag bag. My two hours in the cold ended up being well worth it.

Here are some of the vendors that most caught my eye:

  • Imps & Monsters (Justin Hillgrove)
    Very cute & unique prints & paintings. A lot of his work has a dark or lonely quality to it, but then you'll find one that you can't help but smile at. I may or may not have gotten a few of these as Christmas presents. :-)
  • Texture
    Comfy, classic, casual-chic clothing made in Bellingham. After ooh-ing and aah-ing over the booth on Saturday, I went back on Sunday and got this irresistible skirt. Their palazzo pants looked pretty cozy, too.
  • Belle Epoch
    OMG feathers! This was another booth that I drooled over on Saturday and came back to on Sunday. They collect molted feathers from fowl and make them into rockin' jewelry and hair accessories. From long & dramatic to irresistibly iridescent, their stuff is eye catching in every form.
  • Queen Bee
    Everyone I know was drooling over her baby-soft faux leather bags and their beautiful embroidery. I was lucky enough to get this adorable coin purse in the swag bag I got on Sunday (squee!). When I went over to thank her I think she giggled at how excited I was. :-)
  • The Sprinkle Factory
    Jewelry that looks like CANDY! This stuff was seriously adorable and looked good enough to eat. They have all manner of rings, necklaces, clips, charms, etc. that look like cookies, cakes, lollipops, sushi, donuts, and more. I got my mom a cute necklace that I think her kids will like (she teaches at an elementary school).
  • Foamy Wader
    Delicate, sophisticated gemstone jewelry. I got a koi necklace here for someone who hopefully doesn't read this blog. :-P
  • Jewels Curnow
    I liked these folks' gemstone rings, and had an interesting chat with Robbie. This full lotus ring was one of my favorites. They also had these cool rings where the stone is set off to the side so it looks like it's sitting between your fingers.
  • Mermaid Empire (Rachel Rader)
    Rachel makes these great little flowers out of polymer clay—her earrings & brooches in particular grabbed me. I love her use of color—she stacks three or four gradations of color together to create a lot of depth in such small objects. I love combination of solid colors so this was right up my alley.
  • Bella Sisters
    Painfully adorable jackets. They take thrift store jackets & vests and make them into new, stylish, you'd-never-recognize-it fashion items by adding felt appliqués, lace, bustles, embroidery, and awesomeness. I didn't even look at the prices because I knew it would only make me sad... it was all lovely and oh-so-hip.
  • Slow Loris
    Screen printed clothing of all colors & shapes. This rockin' polo shirt dress caught my eye immediately. I'm not really into the bicycles, though, so I discovered that the base garment (minus the screen printing) is on sale for $17 right now...

Sooooo now you know what to get me for my birthday (you've got two weeks!). ;-)

Wednesday, November 3, 2010


This pattern has moved to http://www.rogueedits.com/patterns/fondue-hat/.

Tuesday, December 22, 2009


This pattern has moved to http://www.rogueedits.com/patterns/joey-hat/.

Friday, August 7, 2009

Karo Socken

This pattern has moved to http://www.rogueedits.com/patterns/karo-socken/.

Saturday, June 6, 2009

S3 Performance Benchmarks

Over the last couple of weeks we've been working with S3 to read data to power real-time user query processing. So we've made a lot of optimizations and measurements of the kinds of performance you can expect from S3.

S3 Throughput: 20-40MB/sec (per client IP)
20 MB/sec is the neighborhood for many small objects, with as much as 40 MB/sec for larger objects. We're pushing a lot of parallel transfers and range queries on the same objects. Each request is only pushing about 200 KB/sec. I don't think I've ever seen a single connection push more than 5 or 6 MB/sec. I'm assuming this is partly S3 traffic shaping. So this should scales well if you've lots of clients.
S3 Response Time: 180 ms
We're pulling from EC2 (just across the hall from S3?) We've seen response time range between 8ms (just like a disk!) and as long as 7 or 8 seconds. But under 200ms is quite reasonable to expect on average. We're pushing a lot of parallel requests (thousands per second across our cluster, with hundreds on individual machines).
Parallel Connections to S3: 20-30 or 120
20-30 roughly maximizes throughput, 120 roughly maximizes response time. S3 seems to do some kind of traffic shaping, so you want to transfer data in parallel. If you're hosting web assets (e.g. images) at S3 this is less of an issue since your clients are widely distributed and will hit different data centers. But if you're serving complex client data requests pulling data from S3 at just a few servers, you might be able to structure your app to download data in parallel. Do it with 20-30 parallel requests. More than that and you start getting diminishing returns. We happen to run more than that (perhaps as many as 100 per process, with as many as 1000 per machine) because we're focusing on response time, rather than throughput.
S3 Retries: 1
We do see plenty of 500 or 503 errors from S3. If you haven't, just wait. We build retry logic into all our applications and typically see success with even just one or two retries with very short waits. I should recommend exponential back-off (that's what the Amazon techs say in the forums). So if you're making more than one or two retries, start waiting a second, then two, then four, and so on. I'd bail and send yourself an email if you don't get a 200 OK after four or five retries and a minute of waiting. But maybe retry the first one right away, it'll work 9.9 times out of ten :)

If you're getting different results, do let me know :)