Decorating with Children's Books and a Phone Camera

    6 January 2021
    9:09 AM

    I decorated my kids’ room with pictures from their favorite books. This is a guide in case you want to do something similar.

    I started with a set of pictures frames. This way you know the number of pictures you need and the dimensions you’re working with. I picked a set of 9 frames from Home Depot: 13″ squares with an 8x8″ mat opening. I also like the HOVSTA square frames from IKEA that are 9x9″ with a 5x5″ mat.

    Then I needed pictures. I picked a dozen of my daughters’ favorite books (they’re 5, 2, and 2). Ordinarily, I would use a scanner on a work copy machine but my office has been closed for months. Instead of buying a scanner, I decided to try taking pictures using my phone. I was surprised by how well this worked. To get a clean image put the book on a table or counter, use good lighting, hold the pages as flat as you can, and try to avoid reflections and shadows.

    Once I had pictures on my computer I made quick, small, square crops to play the layout using Figma. Figma is a pixel-based tool so I sized everything assuming 20px per inch.

    • 13″ square frame => 260px x 260px
    • 1/2″ black edge => 10px border
    • 8″ inner photo => 160px x 160px

    I added an inner shadow on the photo to simulate a photo mat. This is completely unnecessary.

    figma_layout2.jpg

    This let me plan how it would look ahead of time and make sure the photos and colors went together. Some books have beautiful pictures that just didn’t fit, like A Sick Day for Amos McGee. I also tried to arrange the pictures to minimize clashes and give some directionality: witch flying right is at the top left, Max sailing left is at the bottom right, animals going upstairs in the bottom left, etc.

    My initial plan was to do all the pictures on a white background, which I think would look great—especially with more, smaller frames—but I loved the colors of the pictures and decided to keep them as-is.

    room_on_the_broom_white_bg.jpg

    Once I picked my 9 pictures, I went back to the original files to clean them up a bit. You could probably skip this step and do everything with the tools built-in at Shutterfly and friends. I I have somewhat unhealthy perfectionist tendencies so I spent a few extra hours on the images.

    I used Pixelmator Pro to do some light retouching using the repair tool, curves, and sharpen. Here are the steps I used on each image:

    • crop to a square (I did not resample any of the images)
    • adjust the colors using ML Enhance or curves
    • using the repair tool to fix any issues
    • apply sharpen
    • export to a JPEG

    I started with Pixelmator’s “ML Enhance” auto-correct feature. Sometimes it looked great and I kept the results; other times it just looked weird (probably because illustrations in children’s books have difference color balance than you typically find in photographs).

    If I wasn’t happy with ML Enhance, I adjusted the curves directly. If the picture looked washed out, I used the curve tool to set the page to white and applied a gentle S-curve adjustment to boost the contrast.

    Pixelmator’s repair tool is great and it made it easy to fix wrinkles, bright spots from the photograph, and the edge of pages where I needed a little extra color. I watched this video on using the repair tool. In short, create a new empty layer, select the Repair tool, ensure “Sample All Layers” is selected, and click and drag to repair issues.

    Once I had all the high-quality JPEGs, I got trial prints of a few from Mpix and Shutterfly. I was particularly interested in giclee prints and matte finishes. The prints all looked amazing; it was hard to believe the source image was a picture of a book that I took on my phone.

    sample_prints.jpg

    The deep matte finish from Mpix is gorgeous. It makes the print look more like a page from a book instead of a glossy photo print. Once I put it behind a glass frame, though, I could barely tell the difference, so I went with the cheaper glossy finish ($3.73 for glossy vs. $4.81 for deep matte at time of writing for 8"x8" prints). In retrospect, the giclee prints were probably overkill given the relatively low quality source images.

    pigeon_framed.jpg

    I measured and marked points on the wall to hang the frames. Our house has a mixture of drywall and lath and plaster walls and I didn’t appreciate how hard it would be to be to hang things accurately. If I had to do it again, I would probably try to create a guide on a large sheet of paper and use command strips instead of nails for hanging.

    lucy_with_pictures.jpg

    Overall I was pretty happy with the results and the girls loved the pictures when they saw the room.

    Writing pull requests your coworkers might enjoy reading

    26 July 2017
    9:08 AM

    Programmers like writing code but few love reviewing it. Although code review is mandatory at many companies, enjoying it is not. Here are some tips I’ve accumulated for getting people to review your code. The underlying idea behind these suggestions is that the person asking for review should spend extra time and effort making the pull request easy to review. In general, you can do this by discussing code changes beforehand, making them small, and describing them clearly.

    At this point you may be wondering who died and made me king of code review (spoiler: nobody). This advice is based on my experience doing code review for other engineers at Twitter. I’ve reviewed thousands of pull requests, posted hundreds of my own, and observed what works and doesn’t across several teams. Some of the tips may apply to pull requests to open-source projects, but I don’t have much experience there so no guarantees.

    I primarily use Phabricator and ReviewBoard, but I use the term “pull request” because I think that’s a well understood term for code proposed for review.

    Plan the change before you make a pull request

    If you talk to the people who own code before you make a change, they’ll be more likely to review it. This makes sense purely from a social perspective: they become invested in your change and doing a code review is just the final step in the process. You’ll save time in review because these people will already have some context on what you’re trying to do. You may even save time before review because you can consider different designs before you implement one.

    The problem with skipping this step is that it’s important to separate the design of the change from the implementation. Once you post code for review you generally have a strong bias towards the design that you just implemented. It’s hard to hear “start over” and it’s hard for reviewers to say it as well.

    Pick reviewers who are relevant to the change

    Figure out why are you asking people to review this code.

    • Is it something they worked on?
    • Is it related to something they are working on?
    • Do you think they understand the thing you’re changing?

    If the answer to these questions is no, find better people to review your change.

    Tell reviewers what is going on

    Write a good summary and description of the change. Long is not the same as good; absent is usually not good. Reviewers need to understand the context of the pull request. Explain why you are making this change. Reading through the commits associated with the request usually doesn’t say enough. If there is a bug, issue, or ticket that provides context for the change, link to it.

    Ideally you have written clear, readable code with adequate documentation, but that doesn’t necessarily get you off the hook here. How your change does what it says it does may still not be obvious. Give your readers a guide. What parts of the change should they look at first? What part is the most important? For example, “The main change is adding a UTF-8 reader to class XYZ. Everything else is updating callers to use the new method.” This focuses readers’ attention on the meat of the change immediately.

    You may find it helpful to write the description of your pull request while tests are running, or code is compiling, or another time where you would otherwise check email. I often keep a running description of the change open while I am writing the code. If I make a decision that I think will strike reviewers as unusual, I add a brief explanation to that doc and use to write the pull request.

    Finagle uses a Problem/Solution format for pull requests that I find pleasant. It’s also be fun to misuse on occasion. I don’t recommend that, but I do plenty of things I don’t recommend.

    Make the change as small as possible while still being understandable

    Sometimes fixing a bug or creating a new feature requires changes to a dozen-odd files. This alone can be tricky to follow before you mix in other refactorings, clean-ups, and changes. Fixing unrelated things makes it harder to understand the pull request as a whole. Correcting a typo here or there is fine; fixing a different bug, or a heavy refactoring is not. (Teams will, of course, have different tolerances for this, but inasmuch as possible it’s nice to separate review of these parts.)

    Even if you have a branch where you change a bunch of related things, you may want to extract isolated parts that can be reviewed and merged independently. Aim for a change that has a single, well-scoped answer to the question “What does this change do?”. Note that this is more about the change being conceptually small rather than small in the actual number of files modified. If you change a class and have to update usages in 50 other files, that might still count as small.

    Of course there are caveats: having 20 small pull requests, each building on the previous, isn’t ideal either so you have to strike some balance between size and frequency. Sometimes splitting things up makes it harder to understand. Rely on your reviewers for feedback about how they prefer changes.

    Send your pull request when it’s ready to review

    Is your change actually ready to merge when reviewers OK it? Have you verified that the feature you have added works, or that the bug you fixed is actually fixed? Does the code compile? Do tests and linters pass? If not, you are going to waste reviewers’ time when you have to change things and ask for another review. Some of these checks can be automated–maybe tests are run against your branch; use a checklist for ones that can’t. (One obvious exception to this is an RFC-style pull request where you are seeking input before you implement everything—one way to “Plan the change”).

    Once you have enough feedback from reviewers and have addressed the relevant issues, don’t keep updating the request with new changes. Merge it! It’s time for a new branch.

    Closing thoughts

    Not all changes need to follow these tips. You probably don’t need peer buy-in before you update some documentation, you may not have time to provide a review guide for an emergency fix, and sometimes it’s just really convenient to lump a few changes together. In general, though, I find that discussing changes ahead of time, keeping them small, and connecting the dots for your readers is worthwhile. Going the extra mile to help people reviewing your pull requests will result in faster turnaround, more focused feedback, and happier teammates. No guarantees, but it’s possible they’ll even enjoy it.

    Thanks to Goran Peretin and Sarah Brown for reviewing this post and their helpful suggestions. Cross-posted at Medium.

    Thoughts on one year as a parent

    12 January 2016
    9:09 AM

    (Cross-posted from Medium, a site that people actually visit).

    Around this time last year I spent a lot of time walking around, thinking about all the things I wanted to teach my daughter: how a toilet works, how to handle a 4-way stop, how to bake cookies. One year later, the only thing I have taught my daughter about toilets is please stop playing with that now, sweetheart, that’s not a toy. Babies shouldn’t eat cookies. And driving is thankfully limited to a push toy which has nonetheless had its share of collisions. On the other hand, I can recite Time For Bed and Wherever You Are My Love Will Find You from memory. Raffi is racing up the charts of our household weekly top 40. I share the shower every morning with a giant inflatable duck. It has been a challenge and yet still joyful. Here’s an assorted collection of observations and advice from someone who just finished his first trip around the sun as a parent.

    Advice

    Speaking of advice, I try not to give too much to new parents. They have surfeit of books, family, friends, and occasionally complete strangers telling them what they should and shouldn’t do. I don’t want to be one more voice in that cacophony. The first months with a new child is a struggle, and you have to do whatever it takes to get through them. Sure, there are probably some universals when it comes to babies, but as someone who has done it just once, I’m not a likely candidate to know what they are. I’m happy to tell you what I think, but only if you want to know. Let’s just assume for the rest of this article that you want to know.

    That said, please vaccinate your kids.

    Firsts

    It’s easy to forget how many experiences an adult has accumulated in their decades alive. The first year for a baby is almost nonstop first experiences. Everything that has long since become ordinary in your life is new to a baby: eating solid food, going to a zoo, taking the bus, touching something cold, petting a dog. The beautiful thing is that being a parent makes all these old experiences new firsts for you too. I hope never to forget the first time I watched Samantha use a straw: she sucked on it–like everything else–and then when water magically came out of the straw she looked startled, and then, suddenly, thrilled, as if she were not merely drinking water, but had discovered water on Mars.

    Sleep

    Nothing can prepare you for this. Maybe it’s smooth sailing for some parents, but we were exhausted, completely drained, dead to the world, and whatever other synonyms there are for being tired. Lots of people told us that we would be tired beyond belief, but I think this may not be something that can be communicated with language; it can only be learned through experience. I thought that being an experienced all-nighter-puller in college would be good training for having a baby. It’s completely different. In college you stay up all night writing a paper, turn in the paper, and then it’s OK if you sleep for 36 hours during the weekend. Having a baby is like there’s a term paper due every day for months.

    Breastfeeding

    Breastfeeding is really hard. I don’t know why they don’t work this into more breastfeeding curricula. Caitlin and I took a multi-hour class and I don’t remember this coming up. Just lots of stuff about all the benefits of breastfeeding, how wonderful the bonding is, how the mother will be totally in love with breastfeeding. Nobody wants to attend a breastfeeding class taught by a dude, but if I were teaching one it would go something like this:

    • There are a lot of good things about breastfeeding.
    • By the way, it’s really hard and Mom will probably end up in tears several times.
    • Working with a lactation consultant can be a lifesaver.
    • Formula is not the end of the world.
    • Good luck, happy latching.

    Pictures

    If you want to make a new parent’s day, ask to see pictures of their baby. I tried not to subject people to them, but there’s only so much self-control one can have. I loved it when people asked.

    Stuff

    You end up with so much stuff for a baby. There’s a lot of stuff you don’t need. If you skip that stuff, you’ll still have a lot. Car seat, stroller, bottles, diapers, a bathtub, continually outgrown clothes, more diapers, a crib, a rocking chair. And that’s before you even think about toys and books.

    Here are some of my favorite things that we bought this past year:

    • Halo sleep sacks. They zip from the top to the bottom which means you only have to unzip them partway for late night diaper changes.
    • LectroFan white noise machine. We actually have two–one for baby and one for the lucky napping adult.
    • NoseFrida. I never would have guessed how much fun decongesting your baby would be with this snot sucker.
    • Giant Inflatable Duck. I can’t say I love sharing my shower with this duck, but Samantha loves it, so I kind of love it too.

    One recommendation I make to all my expecting friends is to check out The Nightlight, the baby equivalent of The Wirecutter and The Sweet Home. They don’t give you a spreadsheet of data and rankings, they just tell you what to buy, with a detailed explanation if you care to read it. I did a lot of independent research and ultimately came to many of the same conclusions, so I stopped reading.

    Trivia: the set of clothes and items you need for a newborn is called a layette.

    Dropcam/Nest Cam

    I read something somewhere about video monitors being distracting and got it into my head that we would only use an audio monitor. I didn’t want one more app to hijack my phone. Boy was I ever wrong. First, we live in a small apartment, so the idea that we need radio frequencies to transmit baby sounds across it is ludicrous. Second, I got so much peace of mind from actually seeing what my baby is doing that I highly recommend it. When we were doing sleep training it was a huge help to be able to see that things were “OK”. Streaming live video from my house to the cloud is a bit creepy, but it’s so nice to check on her taking a nap when I’m at work, and being able to rewind 30 seconds and see what just happened is handy. I guess this is how privacy dies: with little, convenient features here and there.

    Other Parents

    Being a parent is like gaining membership to the world’s least exclusive club, but finding out that the club is somehow still great. It gave me a new way to bond with other friends and coworkers who are also parents. I thought (naively in retrospect) that all parents have a sense of this shared camaraderie. As it turns out, though, parents are just a random sample of people which means that some of them are strange or petty or just mean. I was surprised by how many interactions with other parents left me feeling like somehow we were still in high school: cliques at drop-in play areas, passive-aggressive remarks about the strangest things.

    Airplanes

    You could write a Shakespearean tragedy about the Herculean trials of flying with a baby. We rolled the dice a couple times and got lucky but it was exhausting.

    Parental leave

    I had access to a generous paternity leave policy–10 weeks paid–due to California’s progressive policies and my employer’s good will. It’s completely crazy that this isn’t the norm across the U.S. The law of the land is that, if you meet the requisite conditions, you are entitled to 12 weeks of unpaid leave. I cannot understand how the wealthiest country in the world can’t afford to prioritize reasonable family leave policies (and neither can John Oliver, who has a much funnier take on the state of parental leave in America). On top of that, it’s not like new parents are actually doing the best work of their career. I was sleepwalking through my job for weeks even after I got back.

    Politicians say they love families; how about actually helping them out when they need it?

    Joy

    Being a new parent is a struggle, even if you are thrilled to have a child. You lose so much of your previous life: free time, hobbies, spontaneous dining-out, sleeping in–it’s a lot of change. You trade these things in for something new. This new thing is hard to describe in a way that doesn’t sound trite or glib. I’d say it feels like trading some happiness for joy.

    I love being Samantha’s father. The past year has had its share of challenges, but honestly we’ve been so fortunate and I hope that confronting our small share of problems has made me a more empathetic person. Samantha arrived on time, easily, and healthy; we didn’t have the burden of illness or an extended stay in the NICU. We never worried about the cost of diapers or formula; I can only imagine how crushing it must feel not to have what you need to take care of your child. We have had help from so many of our family and friends, help you absolutely need to keep your head on straight. I have a wonderful partner and I don’t know I would get through parenting without Caitlin; I have a new appreciation for single parents.

    Who knows what we’ll teach our daughter this next year, or what she’ll teach us. It has been an incredible journey so far. I can’t believe how many years we get to have. They won’t be non-stop happiness, but I hope they’re as joyful as this first one.


    “Let’s say I wanted to read more tweets about babies. Where would I go?” “You would go to this collection on Twitter.” “That was a hypothetical. No one wants to read more tweets about babies.”

    Ways to communicate with me that are more effective than leaving a voicemail

    6 May 2014
    9:23 AM

    • text message
    • email
    • postal mail
    • Twitter direct message
    • pager
    • skywriting
    • interpretive dance
    • smoke signals
    • drunk carrier pigeon
    • singing telegram
    • sports arena jumbotron
    • tell Suzy to tell Rachel to tell Bill to tell me
    • message in a bottle thrown into ocean
    • give me a telling look
    • send a taxi to pick me up and drive me to the coast where a crewman aboard a ship signals using flag semaphore
    • Western Union
    • telepathy

    Expanded from the condensed version. Hat-tip to @ravi and @av.

    Arrangement in Hefeweizen No. 1

    24 February 2013
    9:14 AM

    Yesterday afternoon I was out with some friends, having a beer at Jupiter, a restaurant in Downtown Berkeley. As I took a drink, I saw a beautiful colorscape at the bottom of my glass.

    Spash of color in a beer glass, #1

    I looked up and realized the color was a reflection of a billboard on the side of the building, advertising the very hefeweizen I was drinking.

    Jupiter Hefeweizen billboard

    I tilted my glass and tried to get a better shot.

    Spash of color in a beer glass, #2

    This one is almost unrecognizable as a glass of beer, but I love the colors.

    The most dangerous part of flying

    23 January 2013
    9:09 AM

    Pilots will tell you that the most dangerous part of flying is takeoff and landing. This is correct, though it’s most dangerous for people who aren’t busy flying the plane. Shortly before takeoff the doors to the aircraft are closed. From this point on the FAA requires passengers to shut off their electronic devices–the primary means of entertaining oneself in the 21st century–until the aircraft has reached its cruising altitude. Your Kindle off, there’s nothing to read. Your iPad off, there are no angry birds to avenge. Your eyes drift towards the seatback pocket, the only remaining source of entertainment until 10,000 feet. Safety card? Boring. Motion sickness bag? Gross. Oh, hello there, SkyMall.

    SkyMall has been in American seatback pockets forever. It has a selection of products from dozens of resellers spread over 100 pages. You can purchase products you find in the magazine by calling 1-800-SKY-MALL, or at skymall.com, both inaccessible from most aircraft.

    Browsing an issue of SkyMall follows a typical path. Initially, your resistance is high. Everything in this catalog is ridiculous. These things are a total waste of space and money. Who wants a $400 bronze sculpture of Superman? A 6-foot tall Yeti garden sculpture? A birdhouse to curb your dog’s barking? If SkyMall were your first exposure to human desire, you would think that people are really crazy for pillows. A typical issue has at least a dozen different pillows. Inflatable pillows, wraparound pillows, NASA space-age cooling pillows, “the most comfortable pillow you will ever own,” a pillow that looks like a tree log “only feeling about a million times more comfortable.” You could also be excused for thinking that humans are gonzo for replica objects from fantasy movies like Aragorn’s sword from Lord of the Rings, Hermione Granger’s wand from Harry Potter, and Gandalf’s staff from The Hobbit. I hope we are not.

    Next you imagine the scenarios behind some of SkyMall’s offerings. A magnetic cup holder that attaches to your ride-on lawnmower or tractor: “Mary, do you remember when I was out mowing last week and I dropped my beer? I found something that could change all that.” A grass turf platform with fire hydrant so your dog has a place to relieve himself in the apartment. “We used to have some many problems with Butch until we bought a fake hydrant for him to piss on.” A cell phone suitable for underwater use up to 100 feet: “What a beautiful triggerfish! That manta ray is so graceful. Hold on–I have to take this call from Gloria in accounting.”

    You find a favorite crazy item. How about this pair of wine glasses that can each hold an entire bottle of wine? It’s perfect for the occasions when you want to impress your guests by serving them a pound and a half of wine. Parties aside, they’re great for any time you want to kick back with a bottle of wine, without the hassle of refilling your glass four, even five times.

    But by the time the plane has taxied and left the ground, your resolve has weakened. Sure, most of the things in SkyMall are useless, but there are a few gems. I have been trying to improve my posture. Here on page 47 is a breakthrough waiting to happen: a velcro harness that I could wear just 30 to 45 minutes a day to train my back. Definitely dog-ear that page.

    I am usually not one for travel clothing, which looks best on people who don’t care how they look. That said, I could really get into these pickpocket-proof pants on page 62. Pockets that are too hard for thieves to open make a lot of sense. I don’t love wearing a money thong on international trips. With these pockets, I could just leave it at home and carry my wallet like a normal person. No, that’s silly. I’m not going to wear the same pants every day of my trip. Oh. They come in three different colors. And shorts. If I rotated them, that could easily be 10 to 15 days worth of pants. How do I get these again?

    I just want the posture harness and five or six pairs of these pickpocket-proof pants, which are actually a great deal at $109. The woman on page 73 looks like she’s sleeping really well with that neck pillow. And you know, it’s not like this phone only works underwater. Obviously I could use it above or below the ocean. I could stop worrying about getting pushed into swimming pools with my phone in my pocket. On second glance, there is a kind of quiet beauty in this bronze Superman. OK, the harness, the pants, the pillow, the Superman–two, my brother loves comic book movies too–the underwater phone and–

    Ladies and gentlemen, you may now use your approved electronic devices.

    What? Where am I? Woah, close one. See you on the way down, SkyMall. Be strong, Ryan.

    There and back again

    24 June 2012
    9:13 AM

    This is the story of how I stole my bike.

    In 2008 I moved to Berkeley, California to start grad school. There are a lot of things that are nice about Berkeley, but driving is not one of them. The city makes having a car painful. Finding parking downtown is a nightmare and enforcement officers can spot an expired meter 2 miles away. Comparatively, biking is glorious. There are racks for parking everywhere. The city has designated certain streets Bicycle Boulevards, which run parallel to major streets, just a block removed from heavy traffic.

    Even though I was on a student budget, I knew I wanted a bike to get around. Eventually I found my new steed, a Kona Dew Deluxe. After tax it set me back $706.86, which is a lot of money but I justified the price to myself because my last bike lasted almost 10 years.

    For 36 days, life was good.

    On September 18, I was running late for my 12:30 class in South Hall. I locked up my bike in the center of campus. Though I had been in the habit of using both a U-bolt lock and a cable lock on the rear tire, I opted in my haste for just the cable. Five hours later, I left the building and walked to the wrong bike rack. “I must have parked it over at that one. Hmm, no, I think I was right the first time. I must have just missed it.” It took a couple trips back and forth before I realized that my bike had been stolen.

    I was devastated. When something is stolen from you it cuts twice: you don’t have it anymore, and you feel dumb for letting someone take it. How could I have been so irresponsible? Why didn’t I just take the extra minute to use both locks? I filed a police report and walked home despondent.

    The next morning things looked brighter. I called my insurance company and learned that my renter’s insurance covered my bike, minus a $200 deductible. (As an aside, my company, USAA was amazing. I faxed them my purchase receipt and they called me to settle the claim while I was still in line at Staples to pay for the fax.)

    Also, this wasn’t my first time at the getting-bike-stolen rodeo. In college I left my bike outside my dorm on a Wednesday afternoon, and come Thursday morning, I found myself walking to class when my bike had, you know, been stolen. Notre Dame has a relatively isolated if large campus–1250 acres, 27 residence halls–so I just resolved to visit every bike rack on campus until I found my bike. This was a slow job, one that would have been aided by the very thing I was searching for. I visited most of them, but I didn’t find my blue Schwinn Moab.

    That Friday afternoon, on the way to anthropology in Hagar Hall, I saw my bike locked up outside another dorm. Locked up? The nerve. I ran to the classroom. “Hey, does anyone here have a bike lock? I need to steal my bike.” Amazingly, someone did, so I rushed back outside and added a second lock to my bike. I rubber-banded a note to the seat:

    Dear bike thief,

    This is my bike. Please remove your lock.

    Regards, Ryan

    A few hours later I returned to find my bike secured with just a single lock–mine–and I rode it home triumphantly.

    Anyway, back to bike #2. On Monday afternoon I was browsing Craigslist when I found a suspicious posting:

    Craigslist Posting for 2008 Kona Dew Deluxe

    It was for an orange Kona Dew Deluxe with a 58cm frame. I stared at the photo trying to discern if this was a coincidence or my bike. Then I noticed a silver kickstand attached to the frame–just like the add-on I had installed. I was pretty sure this was mine.

    I didn’t know how paranoid the person I was dealing with would be, so I tried to be extra cautious. I edited my blog and took down an entry about my new bike. I removed pictures of it from Flickr. Then I sent what I hoped was a really casual email.

    From: Ryan Greenberg
    Date: Mon, Sep 22, 2008 at 5:21 PM
    Subject: 2008 Kona Dew Deluxe - $400 (alameda)
    To: sale-xxxxxxxxx@craigslist.org

    I saw your posting for the Kona Dew Deluxe and I’m interested in buying it. Is it still available? If so, drop me a line via email or give me a call.

    Thanks,
    Ryan

    Like a hunter waiting for prey I didn’t want to make sudden movements that would scare off the seller.

    50 minutes later I got a phone call.

    “Hey, I got your email about the bike,” the person on the other end said.
    “Oh yeah. Is it still available?”
    “Yeah.” OK, stay calm, try to sound like you don’t care if you buy the bike or not, I told myself.
    “Cool. Maybe I can come check it out sometime this week?”
    “How about tonight?” I was surprised how eager the guy on the other end was. We agreed to meet at a gas station in Oakland at 8:00pm.

    My heart started pounding. I needed to find people to go with me to make a pretty shady rendezvous safer. After a bunch of phone calls I picked up Aylin and Mohit, plus our friend Ashkan would meet us there. My friend Nick offered the helpful advice: “Be careful. It would be great if you didn’t die.” Since I agreed, I also brought my checkbook thinking that, if things seemed dangerous, I would just buy the bike.

    When we arrived, I told Mohit and Aylin to hang out in the car. I’d wave to them to get out if it was a match. Then I got out and I met Charles (not his real name), who was selling the bike for $400. He claimed he bought it a few months ago and decided that he didn’t need it anymore. Ashkan posed as my knowledgable bike-savvy friend which was easy because he’s bike savvy. While Ashkan chatted up Charles, I rode the bike in circles in the parking lot to try it out. Then I ducked around the corner of the gas station, jumped off the bike, and flipped it over. There, at the base of the pedal mount was the serial number I had memorized that afternoon: 20920800301. It was mine.

    As I rode back to Ashkan and Charles. I waved to Mohit and Aylin to get out of the car. “Is it yours?” Ashkan asked.
    “Yeah,” I said.
    “OK.” He turned to Charles. “We’re taking the bike.”
    “Great!” Charles said.
    “No, we’re not paying for it,” I said. “This bike is stolen.”
    “What?” Charles said. “No, no, no. I bought this over the weekend at Ashby BART. I paid $100 for it.” I believed him. Charles was a heavy-set guy, and I got the feeling this wasn’t the exact guy who cut the lock. I even felt badly that he was going to be out the money he spent.
    “Yeah, sorry,” Ashkan stepped in. “That’s a risk you take when you deal with people who sell stolen goods.”

    We went back and forth as Charles denied that he had any idea the bike was stolen. “Well, why don’t we give the police a call and have them help us sort this out?” I suggested. I started writing down the license plate on Charles’s pickup truck and all of a sudden he was in a hurry to leave. Then it was just three friends, my bike, and me, at a gas station off I-80 on a Monday night. I drove home euphoric. I had cheated the gods of bicycle theft once more.

    There were a few loose ends to tie up. I called the police and told them that I had recovered my property. I wrote a check to USAA returning the insurance money. I bought a new lock. I don’t want to have to steal my bike ever again.

    3.0 kilotweets

    27 February 2012
    9:09 AM

    In 2007 I created my Twitter account in an Internet cafe in Santiago, Chile because I read on some blog that it was a big deal at SXSW. I spent some time deliberating between the username @ryangreenberg (which I use on a number of other services) and @greenberg. Eventually I decided on @greenberg because it seemed like being short was a big deal on Twitter. Just a few minutes ago I posted my 3,000th tweet on Twitter. Four years and a few thousand tweets later, not only am I still tweeting, but along the way I somehow ended up working for the company. What a ride.

    Profile card on Twitter at 3,000 tweets

    Here’s a Harper’s Index-style look at my first 3,000 tweets:

    • Number of tweets I sent between July 10, 2007 and February 27, 2012: 3,000
    • Number of words written: 53,066
    • Kilobytes of text: 302
    • Median time between tweets: 6 hours, 43 minutes
    • Average time between tweets: 13 hours, 32 minutes
    • Longest time between two tweets: 84 days between tweet #1 (“Finally signing up with Twitter.”) and tweet #2 (“Wondering if there is something ironic about Superman bandaids.”)
    • Most tweets in a single day: 13 on January 2, 2010, a top ten list of the best years of the decade
    • Retrospectively, do I wish I sounded less whiny sometimes: a little.
    • Number of URLs posted: 571
    • Number of hashtags used in tweets: 155
    • Number of @mentions used in tweets: 768
    • Most frequently mentioned people: @MIGreenberg (40), @npdoty (36), @caitearly (21), @michaelischool (20), and @kevinweil (16).
    • Number of OHs and quotes: 211

    Tweet Length

    Graph of distribution of tweet length
    • Number of tweets that are exactly 140 chars: 133 (about 4% of them)

    Punctuation

    • Periods: 4,705
    • Single quotes, apostrophes: 1,839
    • Double quotes: 1,618
    • Commas: 1,560
    • Colons: 1,421
    • Ellipses: 143
    • Em dashes: 110
    • Semicolons: 71
    • En dashes: 14

    Topics

    • Tweets that mention the New Yorker: 18
    • Tweets that mention the Apple or OS X: 47
    • Tweets that mention Twitter: 102

    And here are a few of my favorites.

    My shortest tweet–four characters–is how I let friends and family know my then-girlfriend’s response when I asked her to marry me:

    And the next year when we tied the knot:

    A couple graduations:

    And starting work at Twitter:

    I’m looking forward to the next kilotweet. If you are too, follow @greenberg over on Twitter.

    FBI seizes MegaUpload, loses opportunity

    23 January 2012
    9:23 AM

    Last week the FBI seized the file exchange site MegaUpload through a court order. Previously, users could exchange files too large to email through the service. Now visitors to the site see this message:

    Screenshot of FBI notice at MegaUpload.com

    The significance of a website seized by law enforcement is heightened in light of the controversial SOPA and PIPA legislation currently being considered in Congress. Given the high stakes–the open exchange of information in a free society, government interference with the Internet–I feel compelled to let the people at the FBI know what I think.

    Guys, this is embarrassing. Really amateur hour. Seriously, look at this again:

    Close-up of FBI takedown notice

    Where have I seen a better looking image? I mean, other than every movie ever made that shows a computer screen?

    I don’t even know where to start. Fine, the seals. Any one of these seals by itself is like starting the drive from your own five-yard line. The three together is handing the ball to the other team and carrying them into the end zone. You’re not into football metaphors? OK, a seal crammed full of text like “National Intellectual Rights Coordination Center” is the design equivalent of dividing by zero. All three is taking the limit of bad design as it approaches zero and it evaluates to negative infinity. Math isn’t your thing? No sweat–what I said doesn’t make sense anyway. The point is, the seals are ugly.

    But they’re your logos, you say? I feel badly saying this, but they look like someone just slapped them together at 4PM on Friday after a lunchtime happy hour. Take the right one. It says, “Protection is our trademark.” I’m not a IP genius, but it seems to me like if protection really is your trademark, and you want people to take it seriously, you need to use that symbol. Like “Protection is our trademark™” or maybe “PROTECTION™”. But since you’re not actually selling anything or engaging in trade, maybe it would be more accurate to say that protection is your service mark. You don’t see that little SM enough.

    As if the seals weren’t texty enough already, someone put “FBI ANTI-PIRACY WARNING” on top of the middle one. Is that part of the seal? Operating under the dubious assumption that there’s any design merit to this logo in the first place, the last thing you want to do is cover up your logo. Can you imagine Nike labeling clothes with its swoosh but then covering half of it up with “GARMENT CARE INSTRUCTIONS”?

    Who picked the color scheme for the background? Had this person eaten a hot dog recently? That’s the only way I can figure it out. You can’t even read the complete word “seized” once in this tiled background.

    The cited list of alleged crimes at the bottom is a nice touch, but, guys, what are we doing with the typography here? A big block of bold, italic, centered text. I read the first line and I think, “This is heavy stuff–they’re being changed with Conspiracy to Commit” and then I get confused until I realize that it’s Conspiracy to Commit … Copyright Infringement (18 U.S.C. § 371). I know how to continue reading on the next line, but you’re taking some serious liberties with awkward line breaks.

    Let’s check out the source of the page:

    <html>
    <title>NOTICE</title>
    <body>
    <img src="banner.jpg"/>
    </body>
    </html>
    

    No JavaScript. No AJAX. No CSS. Not even any tables. The image doesn’t have ALT tags. Maybe you’re not worried about Google indexing this page, or visually impaired people being able to read it, but I hope you realize you are just flushing the last 8 years of the Internet down the toilet. Interestingly, you went with the trailing slash that closes empty elements in XHTML but the DOCTYPE is…nothing. Whatever–this stuff is for nerds.

    What we need to focus on is what a colossal missed opportunity this is for you. MegaUpload is down and the notice on the site is getting tons of exposure and when you go there it’s like you’re stuck watching the beginning of a movie forever, or at least that’s what it seems like for those people who paid for the movie and have to watch the FBI reminder to pay for the movie.

    You must plan these operations, right? I mean, it’s not like you just randomly seize private property on a whim. This is a failure of project management. You can’t just bring in a designer at the last minute and expect them to polish your design turd. This is your chance to shine. Go wild. Animation, maybe a Matrix-style flow of numbers in the background. Ominous type. Here are some ideas:

    • The user goes to MegaUpload. The site looks normal. Suddenly, the eagles from your logos swoop in and the cool one with the arrows in its feet starts attacking the site while the other one hangs a banner over it that says “Seized by the FBI” and then jail bars drop down over the entire site.
    • The user goes to MegaUpload. The screen is filled with static like an old television. Then it looks like the screen is flipping through different TV channels. They’re all static. Finally, you get to a channel with a retro-looking message: “Seized by the FBI”. The retro part here probably plays to your design strengths.
    • The user goes to MegaUpload. The site is covered with sheets of brushed aluminum that look very heavy duty. Etched into the aluminum is the message: “Seized by the FBI”.
    • The user goes to MegaUpload. It says “HTTP Error 460” (this doesn’t exist–you would be making it up): “Seized by the FBI”.
    • The user goes to MegaUpload. A video of Rick Astley singing “Never Going To Give You Up” starts playing. When the video finishes, it fades out and is replaced by the text “Seized by the FBI”.
    • The user goes to MegaUpload. Suddenly, a S.W.A.T truck drives onto the screen. Fighter jets fly overhead. Missiles, bombs–BOOM–the screen explodes. DOM elements lie in a heap at the bottom of the screen. Smokes rises from the ashes and all of a sudden you realize it’s forming words: “Seized by the F.B.I.”

    There are probably jQuery plugins that do all these effects already and you could use those as framework to build on. So dust off your copy of Photoshop. Use the mosaic filter. Add some lens flares. Watch Sneakers and Hackers and The Net and The Matrix and Tron and WarGames. Stay away from Papyrus. Then go and take down MegaUpload and put up something amazing. This is your moment: seize it.

    Seen through the lens

    13 September 2011
    9:21 AM

    I took this photo of a red panda at the San Diego zoo last month. Notice anything funny about it?

    Red Panda at San Diego Zoo

    Every person looking at the panda, this photographer included, is seeing it through the lens of a camera. Or on a smartphone LCD screen. It makes you wonder why we are so intent on capturing a moment for posterity that we may never have really seen in person.