Pick Peat for a Month at the Museum

August 7th, 2010 - 1 Comment »

I’ve submitted my application materials, and launched a web site to help bolster my case!  I want to live in the Museum of Science and Industry in Chicago for 30 days, and I’ll need your help getting there.

Whether or not you have any interest in science, head over to PickPeat.com to learn more about the program, and let me know what you think.

I want to get people excited about discovering how the world works, and I need your feedback. If you like what you see, would you pass this on to people who might be interested!

Thanks!

Ongoing Projects

August 4th, 2010 - Comment »

There’s a lot going on: enough for a long form post. Too much Twitter, not enough blogging!

Viva MSI Chicago

The Museum of Science and Industry in Chicago is hosting a marvelous social experiment: they’re looking for someone to live in the museum for a month.

Living in a science museum for a month, participating in science demos, taking pictures, blogging and tweeting, getting access to places most people don’t get access to — I have completely failed to think of anything more awesome (outside of my immediate family, of course).

MSI Chicago takes the whole thing quite seriously: the application is 14 pages long, with an additional essay and video, due next week. The next round is a phone interview, and the final round is in person, in Chicago.

I’ll be thrilled if I just get a follow up phone call, but winning the contest would make my decade.

Webtrends

I’ve been contracting at Webtrends, working on some cool stuff that may or may not have anything to do with Facebook. Darned NDAs. Regardless, it’s been a great opportunity to work with some really smart, well adjusted people.

Speaking of which, if you’re looking for the opportunity to work with some really smart and well adjusted people, you should check out the Webtrends Careers page. There’s over 30 open positions in engineering, sales, marketing, and other categories.

I’ll be here for another couple of months. If you happen to work at Webtrends, come say hi!

Scala and Haskell

Ahh, the joy of learning new languages. I’m using Scala to prototype and build out Capacity (see below), and tinkering with Haskell to beef up my functional and theory chops.

Scala is pretty sweet. It’s a weird mutt of a language — object oriented, imperitive, functional, scripted or compiled for the JVM, and groks XML as part of the language. It’s fun because it’s so flexible: it’s easy to jump into, and if you’re familiar with the Java universe, you can be immediately productive with all of your existing Java libraries and frameworks.

To a point. The flexibility can also cause some consternation. There are a lot of things you can do with the language that you probably shouldn’t do, particularly when it comes to style. That said, if you hang out and share code with some experienced Scala developers, you’ll pick up good habits and see some really elegant code.

If I can get a few things together, I might be presenting at a PDX Scala event in the near future. I’ll post more here if that happens!

Regarding Haskell — if you’re like me and you don’t have much background in functional programming, getting started with Haskell is like getting smacked in the head with a thick book. Fortunately, it’s also a good book. And, like any significant head injury (or any good book), Haskell will change you.

My first non-trivial Haskell project is a card shuffler that simulates the action of different shuffling techniques — riffles, overhand, piles, etc. The challenge isn’t to write something that randomizes a deck of cards (fairly trivial), but to build a piece of software whereby you can analyze how shuffling works, and how different techniques influence game play.

It’s a great introduction to list manipulation, functional development, lazy evaluation, and the idea of pure functions — a challenge when dealing with randomization (I’m always up for a vigorous discussion of randomness).

Big thanks to Jonathan over at Galois for helping me up the learning curve, and on a slight tangent, if you’re interested in some cutting edge software discussions, check out the Galois Tech Talks. Intimate, detailed, incredibly geeky!

100 Mile Countdown

My last post was about getting off the couch and back on my bike. Since April, I’ve been riding (almost) every day to get in shape for the Harvest Century — 100 miles of rolling hills in the Tualatin Valley.

Current status: 50 mile rides aren’t killing me, and on the flat lands I can keep up a pace of around 14 MPH. I’ve also lost 15 pounds. Gotta work on those hills, but I think I can get there in the next two months!

I’m always looking for people who are interested in riding with me! The next opportunity is the Bridge Pedal — a 40 mile tour of Portland’s beautiful bridges on Sunday the 8th.

Got Capacity?

For the last few months I’ve been working on a new web application — Capacity. It’s a system for helping small business plan products, manage “just in time” manufacturing, and fulfill orders. Right now I’m working with a couple of companies to help define the product and build out the alpha. We’ll probably have real orders flowing through the system by the end of the year, and an official launch in early 2011. But, like all things web and startupy, that’s just a rough estimate.

If you’d like to follow our progress, have an interest in using the system, or are just curious, head over to http://getcapacity.com and sign up for the announcement list.

0 to 100 in 6 Months

June 1st, 2010 - Comment »

On May 1st, I got back on my bike after a ten year hiatus.

I have a goal: completing the Harvest Century in early October.   That’s six months from couch potato, to riding 100 miles (a “century”) in a single day.

I said it, now I have to do it — and I’d like you to do it with me!

The Harvest Century is a fully supported event, which means the route is maintained, and there are regular rest stops with snacks and fluids, plus beer and BBQ at the end.  There are four routes: a 3 mile fun ride, plus 45, 75, and 100 mile routes.  Fun for everyone, even if you’re not gung-ho for the century ride.

As an added benefit, the Harvest Century is put on by Community Vision, a nonprofit organization that provides opportunities to disabled people and their families.  Your registration fee ($40) is tax deductible.

It’s good for you, and the community!

I’m going on Sunday morning rides with people interested in working up to the Harvest Century.  This Sunday (June 6th) we’ll be riding between 30 and 40 miles.  We haven’t determined the route yet, but if enough people are interested in a shorter segment, we can work out a half-way meet up.

There are five months left to get ready.  Interested?  Send me an e-mail at peat@peat.org!

A Deeper Dive on Facebook and Privacy

May 4th, 2010 - 2 Comments »

There’s the problem with my last post (“Privacy on Facebook? Get over it.“)

It’s easy to get on a soap box to scold people who share private information in a public forum, but it can be extraordinarily hard to recover from making an honest mistake in front of the world.

Sometimes, fucking up on the Internet is like peeing your pants during a high school presentation — terribly embarassing, and the butt of jokes for years to come. You didn’t choose to do it, but never the less, there it is. Bummer.

Other times, it’s quite a bit more serious. Your boss sees those pictures of you, and decides it’s time to let you go. An estranged lover finds your e-mail address and starts sending you threatening messages. An abusive family member gets in touch with your kids.

How do you prevent these sorts of situations? What do you do when they happen?

Despite the somewhat flip ending to my last post, it’s not possible to simply hide under a rock. You are interconnected with the billions people who have access to the Internet, whether you’re on it or not.

Preventing these sorts of situations can be simple, but there is no silver bullet. On one hand, we’re all responsible for making reasonable decisions about what we decide to share, and we should do our best to understand the ramifications of how our information could be used. On the other, service providers (such as Facebook) are responsible for being honest about what they do with out information, and should make it as easy as possible for us to manage our privacy on their systems.

Responding to privacy violations is similarly two sided. People who are familiar with privacy issues and the Internet are responsible for helping other people understand and correct the mistakes they’ve made. It’s not a big leap to assume that people who read this fall into that category: we need to look out for our friends and family, and speak up when we see something out of place.

On the flip side, companies that deal with personal information should be responsible for violations that can be attributed to inaccurate policies, poor communication, technical malfunction, or outright malicious behavior. It is not unreasonable for a company to be legally liable for mishandling sensitive data they asked for and have been trusted with — especially when money is changing hands.

It sucks, but bad things happen to good people, often times for reasons that are out of their control. I believe we have a fundamental obligation to give people the opportunity to redeem themselves, and to help those who simply shared the wrong thing at the wrong time.

Your mistakes on Facebook may be recorded in the annals of Internet History — but so are the good things you do.  Take care of yourself, stand up for others, and you’ll probably do alright.

Privacy on Facebook? Get over it.

May 3rd, 2010 - 7 Comments »

I spent a few minutes trying to get this message into under 140 characters for Twitter, but it just didn’t work — forgive me for being long winded.

The uproar about Facebook and privacy is driving me crazy.  How many of you trust web sites to protect your private information? Or, for that matter, any business or organization that isn’t bound by law to keep your information confidential?  Even then, do you read the news about data breaches?

For goodness sakes, you joined a social network, a place where people share things. A social network is where you put things you want other people to see and interact with. It’s where you keep track of what other people are doing. It’s where you can meet new people and learn about new things. These conveniences are provided by people who want to make a grip of money.

If you don’t want something to be seen by the general public (or by a business that makes money by advertising to you), don’t share it. Don’t type it into a form on the Internet.

You know that picture of you being embarassingly frisky at that drunken party several years ago? Guess what — if someone’s going to share that picture and put your name on it, and if it’s on the Internet, Google will find it. The fact that it’s on Facebook and you’ve deleted your account? Irrelevent.

You know that embarrassing Tweet you made about the hot girl who ended up being a dude? Guess what — that’s a bell you can’t unring. It’s just easier to find, now. Quitting Facebook (or Twitter) won’t make it go away.

Hey, maybe you’re just taking a stand against The Man, you know, the ones that can now find out your name and your birthday and the fact that you like to fish. Some things need to stay private, man! Well, stop choosing to put things you don’t want on the Internet, on the Internet. You’ll sleep better. Trust me.

Facebook isn’t there to protect you — their job is to make money, and they’re going to make their money by sharing your interests and your activities with people who want to sell you things. That’s how most of the Internet works, by the way. If you’re feeling indignant about sharing your personal information with anonymous companies and developers, you have two options: Stop sharing things you don’t want to share, or get off the Internet.

Sooner or later you’ll have to reconcile what you do and how you behave with the fact that there are a lot of people watching. Yeah, I read that blog post by the guy who is personally and financially interested in Facebook’s decline. I got indignant for a few seconds as well, until I remembered that Facebook is a powerful and useful tool because they share so much.

The only thing that Facebook could do better is to clarify what gets shared, and when. It’s a pain in the ass to navigate the shifting sands of what’s available in which context, but it’s not that big of a deal. Frankly, if they said that everything was available to everyone, all of the time … I’d stay, I’d continue to share links and stories and pictures, I’d continue to chat with my friends, and I’d be able to sleep soundly at night knowing that everything I’m doing on Facebook would be wide open to the world.

This recent hubbub is a reality check. This is the direction the world is moving. Embrace it!  Use it to do good things for yourself, your family, and your friends!

Or, you can hide under a rock.

We’ll miss you.

Continued here.

Failure of the Fourth Estate

February 7th, 2010 - 3 Comments »

A little while ago I was catching up on the news, and I noticed that every site I visited was publishing celebrity gossip along side significant world events. It’s been bothering me ever since. Why do these two things share the front page of reputable news organizations and aggregation sites?

I suspect the answer is straight forward: they report on the topics that people want to hear about. This is not an unreasonable proposition — why wouldn’t a news organization provide broad based coverage? Shouldn’t the power and influence of the major news networks be used to help people become better informed about the things they care about?

On the front page of every news site there were articles about the Grammy Awards, along side news about the Haiti earthquake. It didn’t sit right. The juxtaposition of wealth and devastation was distasteful, but that wasn’t the problem. The thing that gnaws at me is the editorial decision to present an entertainment event with the same importance as an unfolding humanitarian crisis.

Don’t get me wrong — the Grammys are an important entertainment event. If you’re in the business, it’s a huge deal. If you enjoy following the fashion and social entanglements of the artists and industry, it’s an annual high point. Hundreds of millions (if not billions) of dollars slosh through the financial ecosystem of The Grammys.

Never the less, news about the Grammys is entertainment on the grand scale. Some jobs are on the line for a select few, but for the rest of us it’s simply entertaining — the drama, the spectacle, the fantasy, the occasionally unruly guest. It’s a welcome break from the humdrum of ordinary life, something we click through on our coffee breaks and after work. For the vast majority, participating in the Grammys means watching the television and chipping in to the office pool.

On the other hand, the earthquake in Haiti is a significant world event: hundreds of thousands dead, ruined cities, refugees, poverty, corruption. The relief effort is a very complex task, undertaken by dozens of governments, and hundreds of volunteer staffed aid organizations. Responding to emergencies like the Haiti earthquake is a moral imperative in a civilized world, requiring us to pay attention and contribute what ever it is we’re best able to contribute.

I struggle with the editorial decision to promote entertainment to the same level as moral imperatives.  I think news organizations fail us when they only report on the topics that people want to see, by measuring their success by the number of eyeballs consuming the information. They no longer serve to inform the people about what is important — they simply serve to entertain.

Finding the Grammys on par with Haiti indicates to me that our largest news organizations should simply be considered players in the entertainment industry, not bastions of responsible journalism.

Is this a fair litmus test?

It is a failure of the fourth estate when “all the news that’s fit to print” is printed because they know we’ll read it, not because we need it.

Tagged

How I Learned to Love The Wave

October 23rd, 2009 - 3 Comments »

[Alas, Google Wave, we hardly knew thee!  Google pulled the plug on Wave in early August.  It was fun while it lasted, and I hope it inspires others to build tools that challenge the status quo of how we communicate on the Internet!]

My knee jerk reaction to Google Wave was pretty poor: I fired up a Wave with the person who invited me, and immediately fell into the familiar pattern of instant messaging. It was a little disconcerting to see the other person typing in real time, and kind of a pain to click to start a response to the messages they left. The interface felt clunky, it was embarrassing to correct my writing in front of other people, and I didn’t get the intuitive “ah hah!” moment I was hoping for.

Despite the initial let down, I decided to stick with it for a week, and try to use it for different tasks where I would normally use e-mail, instant messaging, or a wiki. The result?

I love it, despite a couple of rough spots.

The experience that won me over was working with a client on requirements for extending their web application. This is the sort of work I do every day — collaborating with people to determine how and what we’re going to build for them. It’s an organic process, involving considerable back-and-forth discussion and documentation of expectations, assumptions, dependencies, time, and money.

Our approach with Google Wave was to make the leading message the canonical requirements document, with the subsequent messages serving as reference and justification for how and why we made the decisions.  It worked well.

The main thread principally contained questions — we kicked off the session by writing out our initial thoughts and questions into separate messages. Then we regrouped and collaborated on answering those questions in their own threads. When we reached a decision, one of us would record it in the leading message at the top of the wave, while the other gardened the discussion to remove tangental points and highlight the important bits.

It was a fairly intense process, and took a couple of hours to flesh out a fairly complete requirements document for the features we were mulling over. The session was long, but it undoubtedly required less time than if we had followed the usual phone + email + meetings + instant messaging strategy to achieve the same result — and it was easier to reference the original conversation points for how we made our decisions.

The icing on the cake is that we were able to share the discussion with our Wave-enabled colleagues, allowing them to trace our decision making process, and follow up with questions and concerns of their own.

So, I’m sold. I think Google Wave is a useful and practical tool for resolving and documenting complex processes in the real world, and beats the pants off of the traditional multi-channel approach of phone calls, e-mails, instant messages, and wikis.

But, like I said, there are still some rough edges.

The biggest problem is that not everyone has access to Google Wave. Invitations are scarce, and this poses a frustrating Catch-22: People won’t use Google Wave for important documentation and communication until it’s ubiquitous, and it won’t become ubiquitous until everyone wants it for important documentation and communication. Fortunately, I think this is temporary. Google is opening up the invitation spigot a little more every day, and when the source code is released for public consumption, we’ll all be free to set up our own Wave servers.

That said, once you have access to a Wave system, you’ll still have to deal with the learning curve. It’s similar to several tools we already use for online communication, but it’s a fundamentally different beast, and most people will have to thunk around before that “ah hah!” moment arrives. That’s particularly frustrating in a limited, invitation-only environment, where you may not be able to connect with people for meaningful discussions.

All things considered, I think Google Wave is a big step forward in online communication, and has the potential to be a huge win for Google. I can honestly say it has provided real world value for my clients, myself, and my employer. Wave has taken a prominent place in my communication toolbox, along side e-mail and instant messaging. I hope it stays there, and I’m looking forward to the time when I can connect with all of my friends, colleagues, and clients.

Who else has had the opportunity to use Google Wave in a production environment, to solve real world problems?  I’d love to hear how it succeeded or failed, and what techniques other people are using.

PS: If you’re already on board, send me a wave at peatbakke@googlewave.com!

Tagged

The Joy of SimpleDB

September 23rd, 2009 - 3 Comments »

Amazon’s SimpleDB is one of the hardest of their services to understand, despite being one of the simplest.  I think the difficult part is getting over the “database” in the description — we’re prone to start comparing it with the relational databases we work with every day, and unfortunately that’s not a reasonable comparison.

Think of it this way:  SimpleDB is a big hash of hashes that’s web accessible.  That’s basically it.  You get to store arbitrary sets of key-value pairs, each with it’s own unique identifier, in a big bucket in the sky.

Huh.  Interesting.  So where would you use SimpleDB instead of a traditional relational database?

There are two things that SimpleDB handles incredibly well: concurrency, and accessibility.

SimpleDB is designed to stay responsive to queries even when you’re pumping it full of records.  Logging and analysis is a great example of this, and a great example is BrowserMob’s monitoring service.  They poke your site every few minutes to ensure it’s responding — but it’s not just checking to see that your web server is alive, but also monitoring the load time for every object in the page:  images, CSS files, etc.  You can check the status and compare responses over time to see how your site is doing as it gets more popular, and as you change pieces under the hood.  The data from all of the sites they monitor are pumped into SimpleDB, and the results are available for their customers to see in real time.1

That level of concurrency, of accepting a substantial number of simultaneous writes while querying the complete data set, is hard to do, especially when every piece of the data is being indexed.  Most relational databases fall over pretty quick, but SimpleDB keeps on ticking.

The second thing that SimpleDB excels at is being accessible.  It’s available to any device that can talk to the web: your computer, of course, but also phones (even the cheap ones), game consoles (portables too), DVD players, information kiosks, environmental monitors, toasters, etc.  Instead of building a web service around a traditional database, you can save a lot of time, energy, and frustration by using SimpleDB as queryable, web accessible, data storage.2

… But only if your data model works with SimpleDB, of course.  There are some drawbacks, like eventual consistency, no transactions, and weak constraints that make it difficult or impossible to use for many applications.  Never the less, it’s an important tool to have in your toolbox — a complement rather than competition to traditional RDBMSes.

Last week I gave a presentation at “The Act of Making Clouds” on SimpleDB.  I touched on some of these subjects, and although there isn’t an audio track, you’re welcome to check out the deck, below.

1. “real time” defined as within a few seconds; eventual consistency is exactly that.
2. Also check out CouchDB. It’s a web accessible hash of hashes that you can manage yourself!

Giving Away Money

August 31st, 2009 - 5 Comments »

Want some money?  I’ve giving it away, to anyone who wants it.  Seriously.

The twist is that you probably won’t be able to spend it.  I collect paper money from foreign countries, and I have a pile of money sitting in my office that I’m trying to get rid of. They’re duplicates that are already represented in my collection, and since I don’t collect the high priced stuff, it’s not worth trying to divide up and sell on eBay.

So I’m giving it away.

It’s neat stuff.  Paper money from over a dozen countries, spanning the last half century of world history.  It never fails to start conversations with people who are interested in politics, finance, art, or travel.  It beats the crap out of monopoly money.  It’s fun to leave in tip jars.  Kids say “whoa!” and “cool!”

If you’re interested, send me an e-mail with your name and address, and I’ll send you an envelope with 10 different banknotes in it.  Pretty simple.

Free money, for the first 18 people who want it.  Seriously.

Update: I stuffed and sent out a pile of envelopes this weekend.  If you got in touch with me before Friday, you’re getting an extra banknote.  Free money, people!  Come get it!

Update: All the money is gone, but you’re welcome to get in touch if you’re interested in the next batch!

Peat’s Reader on Twitter

June 19th, 2009 - Comment »

I’m posting articles from my daily reading to the @peatsreader account on Twitter.  The pieces are culled from my daily reading of several hundred news feeds, covering photography, architecture, economics, street art, software development, comics, and other odd topics that tickle my fancy or get me thinking.

It’s pretty low flow — 10 to 15 articles per day, and throttled at one tweet per hour to keep things fresh.

This is an experiment in combining three of my favorite activities:  I read voraciously, I enjoy sharing my interests with other people, and I tinkering with software and the Internet for a living.  Between my career and my family, I don’t always have time to blog or tweet or comment on the specific articles I enjoy, so I’ve written a tool that scrapes my reading list and publishes the notable articles for me.

For those of a technical persuasion, here’s how it fits together:

I use Google Reader to consume and organize hundreds of news feeds.  When I see an article I like, I share it on my public feed.  The tool checks the feed for new articles, and every hour one of the shared articles is published to the @peatsreader account.  Hooray for automation!

I’ll be happy to share the Ruby source on GitHub if there’s any interest.  In the meantime, follow @peatsreader and let me know what you think.