Archive for category Computers

You Just Can’t Make This Stuff Up

Posted by on Thursday, 4 October, 2007

My conspirator Fitz and I have given a talk (about 12 times now!) called “How to Protect Your Open Source Project From Poisonous People”. (You can see the slides or watch the video.)

And today, we found an actual poisonous person in the Wild! His posts are textbook-classic; we should bottle him up and show him to Summer of Code students.

The scenario: a guy found some javascript bugs and/or confusing behaviors on a Google product. So he came to the mailing list that provides tech-support for the service and enumerated his complaints. The problem is, his attitude was so condescending and full of bile, he ended up attracting more attention to himself than to the bugs. If you search the net, you can see that this guy hangs out on various javascript lists, and does seem to be a javascript guru of some kind, so his criticisms are probably legit (and valuable!)… but putting on my psychologist hat, it’s pretty clear that his primary goal isn’t to report bugs. His goal is to get people riled up. I guess some people get a kick out of that.

Let’s examine his posts by beginning with what a reasonable, respectful person would say, and then compare that to what this person actually said.

What he meant to say

Hey folks, I found a lot of bugs when using this service. Is this the right place to report them?

What he actually said

This is the worst interface in history. Who designed this miserable thing?

Yes, this is actually how he started the thread. No actual bug reports, just a trolling insult to get people’s attention. Eventually after people posted some “OMG what a jerk” responses, he comes back:

What he meant to say

These bugs have frustrated me and made me not want to use the service. […] Here are some bugs I found: […] I’m suprised these bugs are present, given Google’s reputation for building web applications.

What he actually said

I’m sure I won’t [use the service]. I tried it out once and realized it was a typical piece of Google incompetence. […] For starters: [list of bugs] […] And as usual for Google, JavaScript errors appear randomly. How is it that a company this large that relies on the Web for everything can’t find competent Web developers? It boggles the mind.

Notice that he’s unable to simply enumerate the problems: he attempts to directly insult Google (and its employees) at every opportunity.

When somebody asks him to please “go elsewhere and spare us these useless, trolly comments”, his reply makes it clear that he’s deliberately looking for a fight. Rather than apologize for his attitude, he tells the person to screw off and asserts that he has the right to be a jerk anywhere, anytime:

I you don’t like it, then ignore it and read the next post. I’ll post where I feel like it.

When someone else (nicely) points out that his ranting just makes him look like an idiot, his response indicates that he thinks of his initial post as a sort of “gift” to the rest of us:

I posted one sentence to express my displeasure. Subsequent posts were replies to queries for details as Google’s clueless developers clearly wanted some direction. I’m sure they are glad I clued them in on some of the more odious aspects of this thing.

The guru has expressed his displeasure, and fired a shot across our bow! We better beg him for his thoughts… thank goodness he’s here to help us!

I’m proud the response from Jason, our lead UI developer. He completely ignores the troller’s attitude, and addresses only the criticisms themselves in a technical discussion. This is the proper way to deal with such folk: rather than feed the energy beast, extract bug reports calmly. If it becomes clear that no more bug reports are forthcoming, then simply detach from the conversation. These sorts of people just wither away when they’re no longer able to drum up attention.

Text Adventure

Posted by on Monday, 6 August, 2007

I wrote a text adventure. For a contest. It was fun. (You remember text adventures, right? Like Zork?)

The contest was to write ‘the beginning of a larger text adventure’. I was one of seven entries. If you want to try it out, you can download it from my interactive-fiction web page.

And Likewise…

Posted by on Tuesday, 31 July, 2007

…don’t code like my brother!

The Beginning of the End

Posted by on Wednesday, 20 June, 2007

Back in the 80’s, when I was in high school, I remember being introduced to PC clones. The whole PC third-party market was relatively new; IBM was the big dog, releasing new PCs (XT, AT, etc.) while a bunch of manufacturers sort of trailed behind and produced bits of cloned hardware you could use to build your own machine. I was particularly interested in tracking the progress of graphics standards. First IBM released “CGA graphics”, which was about 320×200 resolution. The manufacturers cloned it and started selling CGA cards. Then IBM later released “EGA graphics”, which was higher resolution and more colors. Again, the DIY market cloned that too… as well as the final “VGA” cards that IBM produced.

But then, something weird happened. This was the beginning of that famous shift where IBM started to fall, and lost its leadership position. I remember hobbyists starting to get impatient with the VGA standard, wanting higher resolution than 640×480. So the clone market started inventing ‘super VGA’ cards running at 1024×768 resolution… all incompatible chipsets and standards, of course… but at least there was interesting competition. Meanwhile, a year later, IBM released “XGA” as their own 1024×768 standard. And everyone ignored it. Why? It was technically inferior to the other SVGA standards (it used interlaced scanning, if I recall correctly.) I remember thinking to myself, “Wow, this is a big deal. It’s the beginning of the end for IBM.” And I was right! Many years and downsizings later, IBM managed to scrape through, but nobody thinks of them as a leading hardware manufacturer to imitate anymore. They’re lean, mean, and mostly about consulting these days. A different company.

Well, I just had that same moment again, reading this slashdot article. Microsoft releases Vista, and nothing happens. People aren’t upgrading. Nobody cares. Nobody wants it. Users are sick of the game. Microsoft is now begging users to upgrade.

Read my… er, blog: this is the beginning of the end for Microsoft.

At the BSDCan Convention

Posted by on Tuesday, 29 May, 2007

I spent two days at the BSD Canada conference with Fitz. In case you weren’t aware, BSD is another open-source Unix-like system, much older than Linux, but today pretty much eclipsed by Linux’s popularity. It’s got a real elegance to it as a “whole system”, and oftens performs best as a super-secure, specialized server operating system. The geeks at this conference are the geekiest of them all รขโ‚ฌโ€ those for whom Linux is too mainstream. ๐Ÿ™‚

We had a nice time, but we were a bit quiet. It’s a small crowd that knows each other very well and have a long history together. Definitely a friendly bunch, but Fitz and I simply aren’t BSD hackers, so there’s not a whole lot of geeky tech conversations we can share.

An interesting talk we watched was about OpenCVS. The OpenBSD guys felt that CVS wasn’t broken enough to justify the pain of moving to new system. Subversion felt too complex and ‘kitchen sink’ for them, and too difficult to secure. However, CVS became unmaintained, and the CVS codebase was a huge mess. Their response was to reimplement CVS from scratch and maintain it themselves! They’re not yet self-hosting, but they’re getting close. There was quite a bit of skepticism from the audience in the Q&A after the talk.

A great part of the trip was getting to meet Poul-Henning Kamp, the guy who (despite his tremendous contributions to open source software) is best known for his bikeshed email, which we’ve mentioning for years in the Subversion community and in our Poisonous People talk. We had a nice long conversation with him about community dynamics in open source, and in particular how different projects tend to organize themselves. We also got a nice photo taken with him, and he’s wearing an excellent t-shirt!

Google Services You Didn’t Know About

Posted by on Friday, 11 May, 2007

Ok, so before you start making accusations, let me state that this blog represents the opinions of me, not my employer. My employer did not encourage me to write this post; I’m writing it out of honest enthusiasm for my company. You can accuse me of imbibing Kool-Aid, but if you know me, I’m not really that sort of person. I’ve definitely worked at companies before where I have not been particularly enthusiastic or proud of the products. Google’s corporate mission, though (“organize all information, make it accessible and useful”) really excites me. There are so many amazing products we have, and they just keep multiplying. Whenever I’m talking with family and friends about working at Google, they’re inevitably surprised by some service I mention: “So I was using Google [blah]…” … “What? I didn’t know Google had [blah]!”

So, because so many family/friends read this blog, this my opportunity to raise awareness about cool Google services you should be using, but might not have known about. The general theme here is that Google gives you the opportunity to put your entire ‘digital life’ — any information your produce/share/consume with anyone else — into their “cloud” of infrastructure, so that it’s always available from any computer you sit at.

Here’s a list of services I use all the time.

  • Web Search. Duh. This is what everyone uses already.
  • Gmail. Access your email from anywhere (web browser, mobile phone)… a lot of you probably use this too.
  • GTalk. Instant messaging. This works with your existing chat program, or inside Gmail, even, and shares your Gmail contact list.
  • Maps. See any location on earth, zoom in. Locate businesses. I’ve entirely stopped using the yellow pages now. (Also, if you really want your mind blown, try the Google Earth application, which goes into even more detail!)
  • Calendar. Put your schedule up, accessible from anywhere. Share it with people, invite them to appointments.
  • iGoogle. A custom home page. When you open your web browser to Google, all of your important information is there: local weather, sports, stocks, news feeds, games, etc. There are hundreds of ‘gadgets’ you can put on your home page… most of the services in this list have ‘gadget’ boxes you can embed onto your homepage!
  • Docs & Spreadsheets. If you’re collaborating on a Word or Excel document with a friend, stop emailing it back and forth. Instead, just let the thing live on Google, and invite any number of people to come edit the thing via the web.
  • Reader. If you read lots of blogs or news feeds, you can aggregate them all into one place and access from any browser. This is how I track my friends’ blogs.
  • Picasa Web Albums. Upload albums of digital photos to share with the world. I especially like this service because it does not require your friends to create an account (or log in) to see the photos! If you usue Windows, the normal Picasa program is a free download that organizes all your photos on your own computer, before you upload them.
  • Notebook. Take notes on sites as you surf around the web. Any sort of URL, text, or image can be copied to you notes, and the notebook is even cooler when you access it as a plugin to your web browser. Just click in the corner of your browser, and up pops your notebook!
  • News. Google searches through hundreds of news sites, groups similar articles together, and then presents an “summary” overview for you. It’s a really amazingly neutral way to track world news. When a big piece of news happens, I love to see the same story covered by ten different sources, all next to each other.
  • Desktop. Let Google index all the files on your personal computer. Then, when you do Google searches, it shows you stuff on your own machine too!
  • Toolbar. Add the Google toolbar to your web browser. It will make your life easier. Trust me.
  • Alerts. Interested in some obscure, specific subject? Tell Google, and it will act like a personal Press person. Everytime a new web page or blog post mentions your subject, you’ll get an email about it. It’s what allows me to keep track of what random people are saying about Subversion on the internet.
  • Code. If you’re an open-source programmer, put your project up on the project hosting service (which my team manages!). Or learn how to use the various Google services to write your own applications.
  • Groups. Hundreds of forum discussions. You can read them over the web, or you can subscribe and interact as a mailing-list. This is how I keep up with the interactive fiction community.
  • Sketchup. Download this program for free, and make amazing 3D models of stuff. It’s like CAD for the layman; I used it to plan furniture in my house.

Here’s a list of other cool services that I don’t use, but you might still love.

  • Blogger. Log in, create a blog. Anyone can do it!
  • Video/YouTube. Upload your movies to share with people.
  • Finance. Detailed analysis of stocks and companies. Cool interactive widgets.
  • Scholar/Patent Search. Search scholarly papers, or the whole body of U.S. Patents.

There’s so much stuff Google offers… okay, let the fanboy comments begin. ๐Ÿ™‚

Obligatory Whiny Post

Posted by on Wednesday, 7 March, 2007

I know that I usually blog about things that excite me, but it just wouldn’t be a blog if there weren’t some sort of rant every now and then, right?

Let me vent about some miscellaneous pet peeves.

  • Digital photo albums:

    I love getting invitations to view friends’ online photo albums as much as the next guy, but it really annoys me when I go to the site and see 100 photos that are clearly nothing more than a thoughtless dump of someone’s digital camera. I don’t want to see blurry photos. I don’t want to see 12 pictures in row that are 99% identical. It’s called a photo album, folks. You know, an album? Like, choose the good photos and put them in a book on your coffee table? Don’t waste my time by making me comb through your ugly contact sheet while trying to spot an interesting photo. Please, put some thought into what you display!

  • Notice people around you:

    Pay attention to your surroundings when in public places; it’s not the place to be self-absorbed — you can do that at home. Don’t block the aisle with your cart in the grocery store while you browse a shelf. If you’re going to stand on the escalator, move to the right so others can pass. (I don’t care if it’s you first time on the subway, notice that everyone around you is standing on the right, climbing on the left? Pay attention to the convention!) When boarding a train, let people off the train before trying to push your way in, you insensitive clod.

  • Learn how to ask for help:

    When asking for help with software in a public forum (like an email list, or chat room), provide complete information. It’s useless to say, “I’m trying to do [general vague task], and I’m seeing an error message that says [some vague recounting of error text]. What is wrong?” It then becomes a game of 20 questions. Those of us trying to help have to repeatedly pull information from you: what exactly did you type? what exactly did you see as output? how did you configure things? Please don’t make us play this game. We can’t read your mind, and it’s a waste of time to have us repeatedly interrogate. Instead, gather up all of the information that describes your environment and what you’ve done, and present it all up front when you ask for help. We need to see literal transcripts of what you’re doing, not vague descriptions of the task.

Our “Poisonous People” Talk…

Posted by on Wednesday, 31 January, 2007

When Fitz and I were visiting Google Headquarters in Mountain View last week, we gave a tech-talk to the public… one which we given many times before at conferences. Only this time, it was recorded and posted on Google Video. Enjoy!

The Spatula System

Posted by on Sunday, 14 January, 2007

My good buddy Ben Gross is researching group dyamics, and asked me if there was a good writeup anywhere of the “Spatula System” that my friends and I have been using to track food credits. We couldn’t find one, so I agreed to briefly blog about how it works.

It all started back in 2000, when I worked in a small office with my friend Karl Fogel — just the two of us. Every day we’d go out to lunch and take turns treating each other. Lunch was always about $10 per person, so on Monday I’d spend $20 for both of us, on Tuesday Karl would spend $20, and we’d keep alternating like that. Eventually it got hard for us to remember whose turn it was to buy lunch each day, so we grabbed a spatula from the office kitchen, and kept it on our desks. Whoever had the spatula on his desk had to buy lunch that day. When we’d return from lunch, we’d simply move the spatula to the other person’s desk.

This worked for a year, but then we got a third person (Mike Pilato) in the office. We started moving the spatula in a circuit around all three desks, and we now spent $30 when it was our turn to treat the group to lunch.

Then we hit a snag.

What happens if somebody doesn’t come to work on a certain day? Does that person simply get away with only spending $20 on lunch? It didn’t seem fair.

So our response was to essentially reinvent the concept of currency. Our currency units were simply called “lunch points”, and each point was worth “about $10”. We started keeping track on a whiteboard of how many imaginary lunch points each person had. We all started at 0 points. If I treated Karl to lunch, then I’d gain 1 lunch point, and Karl would lose a lunch point. My positive currency total (+1) meant that “I was owed a lunch by someone” and Karl’s negative total (-1) meant that “Karl owed a lunch to someone.” If Mike then treated all of us to lunch the next day, he’d gain two lunch points, and Karl and I would each lose a lunch point.

What this currency system gave us was flexibility. It was now perfectly fine for random combinations of people to treat each other to lunch, in any order at all… as long as the points were all tracked. It also allowed us to pass debts around transitively: person A might owe person B a lunch, but person B might owe C a lunch, so in theory then, person A really owes C a lunch. Yikes! Intsead of trying to keep track of these specific debts individually, our currency system automatically allows person B to just ‘drop out’ of the system. Why? Person B starts at 0 points, goes to +1 when he buys lunch for person A, and then loses a point when C buys him a lunch. Voila, person B is back at 0 points, meaning he neither owes — nor is owed — by the community. And there was no need to track who specifically owed who.

So these days, we just keep track of points in a Subversion repository which you can browse. Anytime anyone treats any number of people to food, we check the file. Whotever has the lowest point total (typically negative points) ends up treating the group and gaining a bunch of points back all at once. By following this algorithm, debts tend to get equalized gradually over time. It’s pretty neat. (And of course, running ‘svn log’ gives us a complete history of shifting points!)

To be clear: I don’t think this system is particularly profound. As I already mentioned, we simply reinvented the idea of currency, and found a new appreciation for why it’s such a useful concept. It effectively anonymizes all transactions between people, yet still accurately tracks each person’s contribution to (and reward from) society.

Geek Chic

Posted by on Saturday, 9 December, 2006

I love my new wristwatch. It’s cool.

No, really. It’s cool.