Seattle Area Ice Cream
If you are in the Seattle area, go there. Go there now. Stop reading this, go. I'm serious, why are you still reading? Go.
If you are outside the Seattle area, come visit so you can try this place. It is worth it.
If you are in the Seattle area, go there. Go there now. Stop reading this, go. I'm serious, why are you still reading? Go.
If you are outside the Seattle area, come visit so you can try this place. It is worth it.
As part of my career gyrations in the recent past (which is one of the reasons I've been writing so little here) I've been having coffee with a lot of people. Combined with our long weekend in Portland, I've had a chance to sample some coffees and form opinions.
Victrola Coffee has an excellent and well deserved reputation. When I drink coffee at a cafe these days I normally have a machiatto or an americano, depending on whether I think the place is likely to be any good or not. The machiatto at Victrola was silky smooth, it was all I could do to not interrupt the conversation and run back to the counter to order five more immediately.
A new bakery has opened in Kirkland called The French Bakery. You'll never guess what they serve. The coffee there was quite Italian style, and good for that. My guess is that they use Illy beans, but a review says they have beans flown from Bologna. Um. Okay. Did they fly them in green and roast them locally, or are they just trying to make sure they're not fresh?
In Portland we had a Stumptown Coffee Roasters shop in the hotel (Ace Hotel) we were staying at, and it also has a well deserved good reputation (and one for taking themselves a little too seriously). Their style is more Pacific Northwest.
With espresso drinks you can go a few different directions with the taste, one is the Italian style which is usually smooth with a bite (from robusta beans), the PNW style which is a very dark roast to give the bite in a different way, or totally smooth. Over the past week I've now had a sample of a very good cup of each, and it has been great. My wife keeps asking me to decide which one is better, but when they're totally different styles the comparison doesn't work too well.
My darling beautiful adorable witty wife who CAN'T MAKE UP HER MIND pointed me at the Mount Saint Helens Volcano Cam, for all your doomsday obsession needs. Now you don't have to wonder if a flood of hot molten mud is booking its way over to your house, you can know. Which, as anyone my age can tell you, is approximately 50% of the overall battle.
Google just announced Google App Engine, and certainly (driven by Robert Scoble) that has been running like wildfire around the blogosphere. It solves some very interesting problems, and does it in a slick way, but it also creates some questions.
Google App Engine solves the following problems that I can see:
And it solves these in great ways that make sense, leveraging the resources that Google can bring to bear on the problem, and preventing the developers from having to reinvent all the infrastructure. Awesome.
Let's look at the problems that Google Web Toolkit solves:
As you can see, these frameworks, both from the same company, are basically non-overlapping in the problems they solve. Imagine a combination, where you can easily create a GWT application and deploy it to App Engine! In some ways GWT is solving the client side of the big picture problem of writing web apps, and App Engine is solving the server side, with GWT doing some of the heavy lifting to allow seemless communication between them.
This is nirvana. Until they integrate them, Google has a big hole in their developer story. Once they get that tied together it will be amazingly difficult to compete against it.
I want to use Bootcamp to run both XP and MacOS on this new MacBook Pro. Sounds reasonable, right?
Unfortunately, when I click on Bootcamp's "Install Windows" button and it reboots (with the XP install CD in the drive) it spins the drive a bit, then leaves the screen blank with the cursor blinking in the upper left... and nothing else happens. Ever.
Bad CD drive? I don't know, it can actually see it and see the contents while I'm running MacOS, so that much seems to be okay.
So disappointing, isn't this the product that is supposed to Just Work?
I finally pulled the trigger on getting a new laptop (haven't bought one for myself for about 10 years, all since then have been work provided). After agonizing and reevaluating and weighing options for about four months I finally decided on one of the new MacBook Pro 15"s.
I'm going to blog stream-of-consciousness on my impressions. First my background: My parents bought a Mac back when they first came out, and I grew up playing with it. I got myself a PC as soon as I could afford one (early in high school, I think) and ran a BBS, programmed PASCAL, etc. on it. I grew to dislike the Mac because it wasn't really something you tinkered with, and all the fun stuff was happening on the PC or the Commodore 64 or my brother's Amiga.
In college I went hardcore into the whole UNIX thing, and played around with Linux pre-1.0 kernel.
My first job out of college was at Quark, working on Quark Publishing System. I arrived there my first day and was informed I was a Mac programmer. Although I became quite good at using them, I grew to hate them as only a programmer back in those days could.
Alrighty, so, first the anticipation. I left work early and was absolutely giddy picking it up. I haven't looked forward to opening a toy this much in a long time. The packaging was very well done and solid, pulling it apart was like unwrapping a present. Very few components, which I think is genius. A couple cables, a small book, and the laptop. That's it. I don't feel like a packaging warehouse threw up in my office.
Booting it took a little longer than I expected, but once it got going... It makes the Windows OOBE experience look like a pile of puke someone has taken a little spritzer can of water to, to make it look shinier. Holy crap.
I'm at the Welcome screen, and it has: To begin, select the country or region you're in, then click Continue. And it only shows 6 countries, with a Show All check box. So much better than the standard Exhaustive List By Default.
The Wireless screen is similarly useful yet minimal. It just shows you the list of networks it finds (and Other Network), and asks for a Password. That said it did a horrible job with my very complex WSA2 key, and I had to join a WEP network first.
Can I skip the Apple ID/Registration crap? I don't see how to avoid it, even though it says on the screen that "The warranty for your Apple product does not require you to register the product." I can't find a way around this. Is Apple trying to piss me off?
Everything was incredible with the setup until they started pushing their services and registration and didn't give me a way out. Now I feel sleezed.
What can I say, she was... awesome.
The set mixed songs from the new CD with old classics, often one for one. She was clearly more in tune (ha ha) with the audience than she was outside last year at the winery, and she fed off the love and gave it back in spades.
A few classic songs caused everyone to erupt into applause after just a few notes, and not necessarily the ones you'd expect. The crowd really knew her work and let it show. She sang the songs from Hymns of the 49th Parallel that we were really hoping for. _Hallelujah_ got its own standing ovation.
And she was having fun. Playing with the songs, making jokes, huge smiles as she felt appreciated. It was a great concert to be at.
Two encores, both of which added depth to the overall performance and didn't just pander to a greatest hits selection type of thing.
Wow.
The opener did a very good job, he is a solo pianist which makes it a hard sell but he had a definite style and it was very good music.
First of all: Best. Birthday present. Ever.
And it isn't even done yet. My wife is, at this point, just hanging in there, hoping to survive until after the kd lang concert.
I was at work this morning early so I could leave early, wanted to get to the Jazz Alley early enough to ensure an excellent seat. We've seen Holly live many times, but we've always had to drive to Canada to do it. We half expected them to throw a border crossing in the middle of downtown Seattle just to make it feel like a real Holly Cole concert.
We were there very early, an hour to be exact. This stunned several of the employees, but never mind that, we were first in line. They work on a reservation system: you decide whether you're there for dinner or cocktails (the dinner patrons get better tables), and what time your reservation is for (not everyone gets in first thing, in the hopes of not overwhelming the wait staff I assume). We got a 6pm dinner reservation, and were the first people waiting at the door, so we walked in with the hostess and picked the best table, sitting against the stage right in front of where Holly would be singing.
My wife deserves a medal for putting up with me at that point, and the look on her face made it clear she knew this. She took a bunch of photos, one of which is in this post.
Everyone in the band was wearing a suit type of a deal, including Holly. She was also wearing glasses, which I don't remember from the last time. They got off to a rocky start, not in terms of everyone else on the planet, but them (they're normally a very, very tight band). I think that it was the first stop on their new tour, which explains it fully. As the set went on they got better and better.
There were a number of times where it looked like she was going to break down. I honestly don't if anyone else could see it (maybe the guy right next to me), because she was extremely professional and it was hard to notice the catch in her throat or the tears in her eyes, but they were there.
About halfway through she dedicated Me & My Shadow to her dog of fourteen years (who must have died fairly recently), and at that point I fully understood. It is a testament to her professionalism that she made it through all those songs and it was that hard to detect. Right after Me & My Shadow she changed to Moonglow, which I think was also in memory, she just said she really felt like singing that song.
They ended the main set with I Can See Clearly Now, and it was pure awesome. That was the song that the guy at the Cherry Creek (Colorado) audio store played for us to test the speakers I had that I thought were blown, he put on her CD and said this would tell us for sure. We loved it so much we bought a copy immediately and were hooked from that point on.
Encore was a new one she said she hadn't recorded yet (You Have A Secret? I think that was the name) and Ain't It A Kick In The Head, with some great solo work from all the musicians.
It was a wonderful concert, and even better for me because being so close and seeing her like that, I feel like I got a fuller appreciation for her as a person who is performing rather than just a performer.
I've been thinking about how software is built, and why small nimble teams seem to outperform massive teams on a regular basis, both in terms of getting interesting products to market and mind-share. You would think that a bigger company with more resources, more stability for its employees, and significant infrastructure should be able to move faster, but it is taken for granted in the industry now that that isn't the case.
I believe it comes down to two core issues which have huge effects by themselves and also interact with each other to amplify those effects: Communication, and Ownership.
Software development is all about effective and efficient communication. The requirements needs to be created, turned into a product design which then needs to turn into technical design, that needs to be turned into code and tests, the results of the tests and other usage are turned into bugs which are then triaged, investigated, and resolved. One the appropriate level of quality is achieved, the product is shipped.
In a team of one, there is no communication overhead. That one person determines what problems the product will solve, how to solve them, how to implement that solution, tests it themselves, and fixes problems that meet their own quality requirements. When she feels satisfied that everything is good to go, she releases the product via whatever channel is appropriate, gathers user feedback and fixes issues, releases updates, etc. In the case where she is also the only user, she can determine precisely what is worth fixing and how fast that needs to happen, and act on that.
In that degenerate case, there can be no miscommunication or misunderstanding... well, unless there is some sort of multiple personality disorder thing going on.
If you get beyond that, the cost of communication is now added. The other extreme is an everything-by-committee situation:
A large marketing team goes out and gathers customer requirements for a potential product. They gather their results, negotiate with upper management, go back and forth many times to make sure everyone is in agreement. There is a VP review, where the busy executive who in theory was being kept up to date on everything going on throws everyone a curve ball, because in fact he had not been keeping up to date on anything. He's very busy, can't read every email, is scheduled 10-12 hours a day in meetings and doesn't have time in the day to prepare for them (unless they're with management higher up the food chain than him, of course), so the entire proposal is actually brand new.
Yes, I could go on a rant about executive reviews and their cost alone, but I won't.
You can see where that's going, let's skip ahead. Specs are created, and now they need to be reviewed by assorted management, every other PM on the team, every tester, every developer. In this spec review, the way to make the time worthwhile is to try to differentiate yourself from your peers by explaining, mostly, why none of it will work. Due to miscommunication and misunderstanding, the spec itself will never fully address the product requirements (which never fully address the real customer problems), and will fall short in some places and add extraneous stuff in others, and only a few of these issues will actually be found during review.
Some developer is assigned to implement the spec, so they create a technical design, and... have to get it reviewed by every PM, tester, and developer on the team. See above. The technical design will naturally not implement the spec exactly, it will fall short in some places and go beyond the scope in others. Some of those issues will be found in review.
The tester takes the spec (and technical design) and creates a test plan, but again the communication overhead means it will get farther away from testing for what should have been the product requirements in the first place.
The rest is left as an exercise for the reader, but the main point I'm making is that the more communication that has to happen at each step of the process, the more miscommunication and misunderstanding will warp the product. This is the classic game of telephone, where a simple message at the beginning of the line gets warped beyond recognition by the time it reaches the end.
When considering team structure, processes, tools, policies, etc. the overriding concern should be the total team communication overhead.
I can readily tell when a team has major communication issues but doesn't know how to solve it, and they often work hard to make it worse. Any time I see a team declaring parts of the day or certain days of the week for No Meetings, I know they're getting totally bogged down in over communication.
When people reflexively add more process (forms, Excel spreadsheets, approval processes, etc.) because of misunderstandings or miscommunications that caused major issues in the past, and what they're actually doing is making the whole thing worse by adding to the problem that caused the issues.
My theory on why Pair Programming seems to work so well (when it does): because it simplifies the communication structure for that part of the team. You rarely have Pair Programmers who constantly need to check in with other parts of a larger team, they are a self contained unit and the point of it is to have them there to double check each other, so everyone else leaves them alone. It isn't that it is ideal, it is that by creating an accepted pattern with a relatively low communication overhead cost all the more expensive and hazardous models are avoided.
So it comes down to this: Pick the team size, structure, tools, processes, and policies that are the best fit for the product you are creating, and make those decisions based on minimizing the communication overhead overall. There is no one correct answer, there is no one perfect team size or set of processes, it requires skill and experience to know what is best, and even then it will likely change over the course of the project.
Making changes is fine, as long as the act of making those changes doesn't create more communication overhead than the changes themselves are meant to fix.
Effective, efficient communication is crucial to a successful product, but most of what happens is not even close to that. Minimizing overall communication overhead and focusing energy on what is truly valuable maximizes the productivity of the whole team.
I'm going to say something heretical now, hopefully I won't get blacklisted from the industry for it:
Passion is overrated.
More to the point, passion is used in most cases as a substitute for what should be the most important thing, a well designed structure of ownership. In many cases the people you're hiring don't have any real say in what's going on, but are expected to do great things anyway. That's not really possible, and yet managers have seen people do it anyway, even in environments that are poisonous to initiative and creativity. Those who rise above it and make it happen are extra passionate about what they're working on (or working in general), and so the manager naturally assumes that hiring passionate people is the win.
That's not the right fix, the best fix is to fix the poisonous environment so even people who aren't Type A personalities can make the same impact. This is pretty classic W. Edwards Deming stuff, you're looking at a problem and blaming the people for all your woes, but it isn't the people, it is the environment/process.
Microsoft Classic was an organization that empowered the rank and file to make the critical product decisions, and the job of the management was to clear obstacles for them. This meant that the responsibility was clear: if you own this feature, you own it. You can get input from others, but the final decision rests with you.
If you don't actually own the decision, then your customer is not the product's customer, but rather the person or people who do own the decision. You're trying to make them happy, not the end user. If you combine this argument with my views on Organization Entropy, you can very quickly see what direction this takes any product.
The interaction of these two issues only compounds both. A bad ownership model will cause significant communication overhead as the person who has the responsibility but not the authority attempts to convince those who have the authority what the right decision is.
When the ownership model is particularly bad it can create a need for everyone involved in even the most minor details to feel like they need to be directly involved in the decisions for those details. This can get worse when someone is passionate, but not informed.
Finally, the ownership model directly dictates a lot of the communication that is required to create a product, and what patterns that communication will have.
(This is a heavily edited version of an email I sent to a very close friend, posted with her permission)
When my wife and I lost our cats I tried to put into perspective the amount of our lives we had shared with them (11 years and 14 years respectively), and I thought about how the first 5 years of life barely count for the person themselves (although they certainly count for the adults raising and caring for them). You're still learning the basics of having a body and mind, learning to form memories, work the different parts of the body, going through a bunch of basic behavioral development stages. I don't think my earliest memory is that far back.
Prior to being a teenager you're starting to socialize, learn the basics about the world, about yourself, and setting the stage to develop a real personality. Some of this counts, but I claim you're not you yet, you're a pre-you, trying to determine who you really are.
In the teenage years there's a lot of exploration and more learning, trying to differentiate from parents, trying out a number of different personalities to see which one feels right, different social groups, different experiences. Wanting desperately to be an adult but not being one. You're starting to get a real education, but it isn't truly practical at this point, just the basics.
The 20s is about really starting to be yourself, developing a personality (or for some, still trying to find it), learning what it really means to be an adult and trying to adapt to that world. Making the fundamental transition between what you thought the world would be like and what it really is, and trying to adjust to live there. Here you're getting a real education you can actually put to use, both formal and in real world experience.
The 30s are about (not for everyone, of course) becoming comfortable in the that world, and comfortable in being oneself. You've found a spot, although it may not be comfortable you know what it is and how it works. You know who you are, and are comfortable with that. You make adjustments to your situation and personality but it isn't about wholesale change like it was in the teens and 20s. You're now truly you for the first time.
What I've heard recently and find fascinating is that some consider the 40s the time for women to really shine. You're not just truly you, you're not just comfortable in your life, you're now comfortable making your life what you really want it to be. You spent your 30s figuring out who you are and what you really want, and in the 40s you are confident and powerful enough to go get it. Many of the most successful businesswomen really explode onto the scene in their 40s.
The 50s is supposed to be when men do the same. I haven't figured out yet why we're delayed that way, but again there seems to be a pattern. I think men hold on longer to what they think society says is success, so in their 40s they really make a break for that, and in their 50s figure out what it was they really wanted all along and change and go for that path instead. Speculation.
After that is almost unpaved territory. 40 used to be old, now I don't really even think of 50 as old. Around 60 is the starting point. A lot of that is because of health. By the time I'm 60 stuff that's deadly today won't be, things that are untreatable now will be easily prevented, and as they get a deeper and more real understanding about how our bodies work we'll be able to be much healthier, more active, and happier for a lot longer.
I turn 36 in two weeks. I claim that I have been really myself for a little over 20 years of that. So between now and 60, even though I won't double my age from the womb, I'm going to more than double my actual real life experience, and in fact that experience will be more lived and more important than the previous 36 years. Further, I think the 20 years I'll have after that will be great (maybe better), so that's more than two more full lifetimes of great experiences ahead, with a very real chance of more beyond.
I don't know what that time will hold, but there's too much of it to take it for granted or give it up because I'm too old or middle aged or things aren't what I wanted them to be today. When I really thought about all of this I started rededicating myself to my life. I'm exercising a lot, trying to get back into shape for health and generally feeling good. I'm eating a lot better, losing weight. I'm getting back on track with yearly physicals, immunizations, preventative testing, etc.
I want the next 20 years to be the best in my life, and the 20 after that to be even better.