You've reached the internet home of Chris Sells, who has a long history as a contributing member of the Windows developer community. He enjoys long walks on the beach and various computer technologies.
Tuesday, Aug 19, 2003, 12:00 AM in The Spout
Buffering .NET Console Output
Doing some ad hoc benchmarks, I found that my compute/IO intensive program was significantly slower in .NET than in native C++ (here's a more rigorous test showing the same thing). However, when the IO was taken out (Console.Write), the test showed that the computation in .NET and in native C++ was nearly the same (with C++ still having a slight edge).
My .NET IO code looked like this:
static
void OutputIt(int[] vect) {
for (int i = 0; i < vect.Length; ++i) {
if( i > 0 ) Console.Write(",");
Console.Write(vect[i]);
}
Console.WriteLine();
}
In tracking down this disparity, Courteney van den Berg noticed that, unlike STL IO streams in native C++, .NET Console output is not buffered. A simple manual buffering using a StringBuilder brings the performance of .NET back in line with native C++:
static
void OutputIt(int[] vect) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < vect.Length; ++i) {
if( i > 0 ) sb.Append(",");
sb.Append(vect[i]);
}
Console.WriteLine(sb);
}
Instead of buffering manually, I could have turned on buffered console IO by reopening console output with a buffer size:
static
void Main(string[] args) {
using( StreamWriter bufferOutput = new
StreamWriter(Console.OpenStandardOutput(1024)) ) {
Console.SetOut(bufferOutput);
//
Use Console.Write (via OutputIt)...
}
// Remaining buffered Console output flushed
}
//
Console output now buffered
static
void OutputIt(int[] vect) {
for (int i = 0; i < vect.Length; ++i) {
if( i > 0 ) Console.Write(",");
Console.Write(vect[i]);
}
Console.WriteLine();
}
Why isn't Console output buffered by default? Unlike in C++, which has deterministic finalization, in .NET, console output would have to be manually flushed or closed (closing causes a flush). Failure to do so can cause console output to be incomplete at the end of a program. Notice our careful use of the "using" block in the code above, causing the output stream to be closed at the end of the block and the remaining buffered output to be flushed, even in the face of exceptions. Forgetting to use the "using" block or forgetting to manually flush or close in a finally block, can cause console output to be lost. Rather than imposing the new burden of manually closing the console output, .NET architects opted to turn off buffering by default, while still letting you turn it on at will.
Friday, Aug 15, 2003, 12:00 AM in The Spout
The real goals of marketing?
I've long lamented that I have no clue what the basics of marketing are and therefore I've been at the mercy of actual marketing people whose skill I can't judge. In fact, I so miss this important knowledge in my life that I interviewed for a marketing job at Microsoft (although I was in no danger of getting it). A *long* time friend of mine, Dave Stroble, said that I was too "customer-focused" to be in marketing, anyway, and I should be glad I'm not in that field. When I asked how that could be (isn't customer focus the core of marketing?), he went on to say the following:
"Marketing is not about giving the customer what he wants, or even finding out what the customer wants and trying to get engineering to create it. It's about trying to sell the customer what you already have -- whether that's product, talent, or pre-conceived notions. If the needs of a customer occasionally overlap with an actual product, that's merely random coincidence."Marketing people are customer-focused in the sense of always thinking about why customers aren't buying enough stuff, and how to get them to buy more. You're customer-focused in the sense of caring about what customers need, and helping them accomplish it, even if that doesn't result in selling anything.
"But don't take it so hard. It's not as if I said you were too honest to be a banker, or too smart to be a teacher. (God, what if girls thought you were too handsome to be sexy?)"
While I find this cleverly stated (even though I'm nowhere near too sexy for girls : ), I sure hope this isn't the real goal of marketing. My hope is that it's about taking a solution and letting folks that have the matching problem know so that you can trade your solution for their money and both consider yourselves lucky. Is this a naive view? Anyone with real marketing training want to chime in on the real goals of marketing?
Tuesday, Aug 12, 2003, 12:00 AM in The Spout
I'm no hero
Tuesday, August 12, 2003
In yesterday's post, I did not mean to imply that I was some kind of internal David against the MS Goliath. I am in the majority of employees when I say that I want to keep in mind what's best for the customer. The only issues, really, are what is best for the customer and how can those needs be met within the limits of our resources. We do spend quite a bit of time arguing over those, however. : )
Monday, Aug 11, 2003, 12:00 AM in The Spout
I speak for the trees
After a few weeks at Microsoft, when I was feeling particularly frazzled with my work and travel schedule, Peter Drayton pulled me aside to reinforce what I'd heard before: the first 6 months at MS suck for everyone; after that, you either hate it forever or you can't ever imagine working anywhere else. At that point in my budding MS career, I was leaning towards the former. Peter, having been there, said that he'd gotten a piece of advice that had seen him through.
The advice was simple: have an agenda. The idea is, no matter what projects you work on, no matter what groups you go to, no matter what tasks you're into that day, to have an underlying agenda that pushes you forward and drives your decisions. Businesses call such a thing a "vision statement." Authors call it a "story." Whatever you call it, it's always helpful to have one and here's mine:
"Remember what it's like to not work at Microsoft."
That's it. That's my goal. Of course, as with all things, Dr. Seuss says it better than I can:
"I am the Lorax. I speak for the trees. I speak for the trees, for the trees have no tongues."I consider it my mission to speak for the thousands of developers that I've known and talked to over the years that have no tongue inside Microsoft.
This came up just this morning on the phone with a colleague of mine at MS. He said, "We need to maintain the value of X." I replied, "I don't care about the value of X. I care about enabling our customers to get the most out of our products." Of course, there are hundreds of people concerned with X inside of MS and they would be less than happy that I'd dismissed the value of it, but that didn't matter to me. What mattered was being the kind of developer advocate inside of MS that had helped me when I wasn't there and to be a constant reminder to my colleagues of the needs of those folks.
Since MS was founded by developers and run by developers (which has its pros and cons), I plan on being more successful than the Lorax.Sunday, Aug 3, 2003, 11:41 AM in The Spout
No huggy, no kissy, until I get an RSS feed
Here. The one where I stoop to using a country song to make my point.
Sunday, Aug 3, 2003, 12:00 AM in The Spout
Positive Affirmation
I woke up at Don's house one day last week utterly convinced that I was going to win the lottery that day. It was 6:30a, which is early for me, but I had an 8a meeting (*very* early for Microsofties), so I had set the alarm. Tim, who was also staying at Don's that week and with whom I was sharing a room (separate beds : ) was on Eastern time, so had already accidently woken me at 6a that morning on his way to the door (it's not his fault; I'm too long for the bed and it's a tight squeeze to get past me when I'm I'm in it). I must've had some strong dream between 6a and 6:30a as I lay there in and out of sleep.
The premonition was so strong that I recalled the epilog from one of the first non-comic Dilbert books in which Scott Adams talked about his belief that there were multiple parallel universi and that by process of positive affirmations, he'd moved his consciousness into one that had attained great success in spite of his abysmal drawing abilities (this was before his TV series was canceled).
So, all morning, in classic positive affirmation style, I had "I will win the lottery today" running through my head. It swamped all other thoughts, except those of whether I wanted the annual payment or the lump sum ($25M or $13M, respectively) and how I was going to spend the money.
My first purchase was to be a two-week trip for my entire extended family to Hawaii where we would decide how rest of the money was to be spent. The idea was to devise a plan wherein every adult member of my family could get a life-changing amount of money, e.g. $100K, to use to follow their dreams, but awarded only in a manner that wouldn't actually cause more harm than good (as large sums of money can do [or so I've heard...]). Then, I called my sister-in-law to ask her where, money being no object, she would want to live. I've been looking for houses in her neighborhood lately so that we could be closer ("It takes a village to raise a child.").
Right away, she was suspicious of my question, "Why? Are you going to win the lottery?"
"Yes," I said, confidently.
"Really? How do you know?"
"I woke up with a 'feeling,'" I said, unashamed.
"How often have you had these feelings and they've come true?" she asked, judging her odds.
"Never."
"Oh," she said, disappointedly.
"No. I mean, I've never had a feeling like this before," I corrected her.
"Oh," she said, this time more excited. I've also loved that about my sister-in-law. She's very open-minded. She never once questioned my sanity (out loud), but instead started planning where she wanted to live. Her conclusion is that she'd want a nicer house very close to where she currently live, but basically, that was all. "I like my life," she said.
That was my conclusion as well. I have things that I want to do that aren't likely to generate an income stream, e.g. figure out how money works, but my life is a good one and doesn't need major changes. It was fun to go through the mental exercise and I would certainly have been happy to win the lottery that day, but it's OK that I didn't. That early morning feeling lead to positive affirmation of a different kind.
Sunday, Aug 3, 2003, 12:00 AM in The Spout
No huggy, no kissy, until I get an RSS feed
Before RSS took over, I had a folder named "Daily" which had links to all of the URLs that I surfed to on a daily basis. One problem was that for the sites that changed daily, it was a pain to decide what was new. An even bigger problem was the ones that didn't change daily. Eventually, the pain of surfing to them daily was outweighed by the pleasure I would get when those sites were finally updated. A bunch of my friends' infrequently updated blogs fall into this category (you know who you are : ).
Sure, RSS is useful to track Scoble as he shirks his moving duties, but even more useful to track Tim when he eventually does update his blog. With RSS, I don't have to experience any pain surfing to Tim's blog day after day. Instead, I let SharpReader poll Tim's blog and when it's finally updated, I'll know about it. All gain; no pain.
What that means, unfortunately, is that I only read blogs with RSS feeds, because I've long ago gotten out of the habit of surfing my "Daily" folder. So when Josh Trupin (editor of MSDN Magazine) gave his reasons for being out of the office on Monday, he had to send me an email with a link to the description of his horrific train injury detailed on his blog. As fun a writer as Josh is, I won't go back (unless Google brings me there) 'til he's got an RSS feed. I've been hurt before; now I'm older and wiser and require an RSS feed before I'm willing to wed myself to a blog.
Monday, Jul 28, 2003, 12:00 AM in The Spout
My First .NET Show
In many ways, my list of "My First" articles lately have been written out of duty to all of the developers that have always wanted to work at Microsoft, but haven't yet been able to. I first applied for a job @ MS as a summer intern in 1988. I was turned down while another guy down the hall of my fraternity was accepted. He spent all summer building LCD panels into one giant screen and I spent all summer writing FoxPro code. I wonder if he still works here. I can't for the life of me remember his name. David something...
Anyway, every time some new, fun, cool opportunity comes up, I feel like I have to take it just so that I can share it with the folks that don't yet work here (seems like they're hiring everyone, though, so it shouldn't be much longer : ). This time, I got to be in an episode of the .NET Show. I was to be 15 minutes of code demo after Brad Abrams and Anders Hejlsberg reminded folks that .NET wasn't just about web services. There were all kinds of folks that Robert had on tap to give the demo, but they were all busy, so eventually they got to the last monkey in the barrel and had to settle for me. : )
I flew up this morning and had to call MS information: "Hi, I'm a Microsoft employee, but I'm new. Can you tell me where to go to get the MS Studios?" This in spite of the fact that I'd been there less than two weeks before! (I'm terrible at remembering anything that doesn't have a lot of parenthesis and braces in it). They showed me to Green Room #2, where they had some food waiting, just like I was a real "talent". Maybe the food was really for Brad and Anders. Maybe the food was for Nick Hodapp, Project Manager for Visual C++, who was in the makeup chair when I arrived. Nick was there to remind people that MS is serious about C++ both in the native and managed spaces and to show off the port of Quake II to managed C++.
While I waited my turn in the makeup chair, I watched Brad and Anders do their thing and made sure my demos worked. I was amazed that Robert never stopped the shooting while he did his interview. He did the whole thing in one take, which puts quite a burden on me to get my demo right the first time! I also spent some time eating the Green Room food, IMing my wife (she said to make sure not to use too much blue eye shadow or I'd look "trashy") and giving the makeup artist a talk on the benefits of Wi-Fi (she asked, honest!).
After Brad and Anders were through, they wandered into my makeup session. I've always wanted to meet the creator of C#, but not while having my eyes done... Anyway, Brad and Anders were having a debate about the merits of a new optimization of the .NET framework and it was really cool to see how practical Anders was. I don't know why, but I imagined a guy that could come up with something as clean and simple as C# to be pretty academic. That wasn't the case at all. His view of the debate was that he wanted to see a few uses of a proposed new feature before he even thought about including it, as opposed to judging it on the basis of it's "coolness" as can happen when engineers gather together in groups. That brief chat made me feel better about having him in charge of my favorite programming language.
After having just the right amount of blue eye shadow, I sat up on stage with Robert and Nick and my new friend Bob, who ran the entire shoot. He was like the voice of God, being only heard and not seen from his control room in the bowels of MS Studio. He and I bonded quickly as we settled into the banter of trading insults familiar amongst the wiseasses of the world (now *that* sounds like a cool domain name! : ). Robert was very causal and very smiley, very different from the seriousness he portrays on film. Nick was very polished and gave such a compelling demo of the managed C++ Quake II port that I couldn't help but jump in and beg for more. I, on the other hand, said the word "crack" and mentioned my colleague as he IM'd himself onto my computer screen, both times making Robert roll his eyes at me (off camera, I'm sure). I also went off into la la land once when I answered a question that Robert hadn't asked, causing Nick to jump in with an answer.
All in all, having yourself filmed for posterity was pretty different from giving a talk. It was nice, because I had Nick and Robert to play off of and Robert was very good about moving things along. It was hard because, unlike a talk, there were things that I said that I wished I hadn't merely because they are permanent. Hopefully it went over well as a whole. I don't know if I'll be able to watch it myself. Someone please tell me how it is when it's published next month...
Wednesday, Jul 23, 2003, 12:00 AM in The Spout
Windows XP Remote Assistance Rocks!
I just had a "Windows Moment." I was on the phone with my Dad who has Windows XP and was having trouble. Since he paid for my computer science degree, he assumes that I'll be his tech support. In fact, everyone in my family assumes I'll be their tech support; it's annoying as hell! I don't know how support folks diagnose and fix problems over the phone all day long. More than 5 minutes and I'm ready to say, "How much was that computer science degree, Dad? I'll write you a check."
Anyway, after trying it for about 20 minutes (and failing), I asked him if he had the Remote Desktop settings on his My Computer->Remote tab, thinking that I could use terminal services to solve his problem. Of course, since he was running XP Home, he didn't, but he did have Remote Assistance. So we tried it. And even though he's in the back woods outside of Fargo, ND and on dial-up (isn't this a commercial for Windows XP?), he was able to email me a request for remote assistance (Start->Help->Ask for assistance->Invite a friend to connect to your computer with Remote Assistance) and I was able to connect to his computer (through my firewall!) and solve his problem (half of Office '97 was installed on C: and half on D: and wasn't happy about it at all).
Wow. That's a feature that made my life better.
Wednesday, Jul 23, 2003, 12:00 AM in The Spout
Using GotDotNet Workspaces For Commercial Work
Wednesday, July 23, 2003
When I visit Redmond, I share an office with Andy Oakley, the PM for GotDotNet Workspaces. Workspaces was recently released from beta to v1.0 and when that happened, Andy sent around feedback from users.
Of course, folks love it in general (even some hard-to-please MS internals), but I was surprised to see to some folks were using private Workspaces for their team's main source code base. I shouldn't have been surprised; this makes a lot of sense. Private workspaces provide a protected space for file sharing, discussion, bug tracking and source code control. The last time I set up a commercial software development team, I needed weeks to get all of this picked out, installed and working and I needed an IT guy to keep it running and backed up. I remember hearing about a 3rd party that was going to bundle all of this together for a fee, but never got around to it. With Workspaces, MS already provides the whole team development environment, including VS.NET integration and a web interface, and it's free! Plus, with a private workspace, only folks on your team get access.
IMO, the only big piece that was missing from Workspaces was a way to pull down all of the source onto a build machine for regular automatic builds. For commercial work, this is key. So, Andy, tired of my whining, built a command line tool for pulling down all source from a GDN Workspace (and put it up in it's own GDN Workspace). Personally, I'd be slightly happier if it took arguments from the command line instead of a .config file, but that's easily added from the Genghis CommandLineParser class for those that are interested. Enjoy!
Tuesday, Jul 22, 2003, 12:00 AM in The Spout
My $5 Digital Music Experiment
I *really* want to own my digital songs, so I've been dying for a real site to purchase them one at a time, instead of buying entire albums I don't want or ripping the songs off of the albums I do own. Towards that end, I was excited about BuyMusic.com and immediately spend $4.95 on five Avril songs. Overall, it was not a happy experience.
What I love about BuyMusic.com is the site:
- The web site is very usable and full-featured, making finding, listening to and ordering artists, songs and albums easy
- The price is right: $.99/song and $9.49/album
- I really wanted to immediately find the web service so that I could write a program to go through my wife's bootleg mp3s and purchase them
Unfortunately, I hate BuyMusic.com because of the Digital Rights Management (DRM) experience:
- On one machine, I could listen to all of the songs, but only after a "DRM upgrade" (whatever that means)
- On another machine, I had to do systems administration to play a song (DRM doesn't like it when you're a guest and an administrator in the same account). This is fine for me, because I can chase the error to the web page and do the systems administration on my account, but what about normal people? Then I had to do another DRM upgrade. *Then* I had to log in with my user name and password on *every* song! That means I have to roam around to every machine in my house that might possibly want to listen to the music, because only I know the email/password for the songs I buy. What a PITA!
- I'm allowed three machines? Why? I can take my CDs to any machine in the house and my cars. I want to own this music for life and I *know* I'll have more than 3 machines before the end of it. I tried it on four machines and it didn't turn me away, which is nice, but how long will that last?
- How are these WMA files going to work with my mp3 player? Even if the format works, will the DRM get in the way?
- What about if I download a bunch of songs on my way out the door? If I'm on an airplane, I can't jack into the Internet to obtain the license and there was no "pre-license" batch mode that I could find to save me from obtaining the licenses one at a time
The whole experience made me want to cry. The site was so great, but the playback was *so* hard. Why do I have to be treated like a child? I'm dying to pay for the music I want, but I don't want to be penalized for it. I really wanted to find the inevitable hacking tool to strip the DRM off of the music I downloaded so that I could use it more freely, but what's the point of that? This kind of hacking would break the license agreement and is no better than downloading mp3s (although the the latter is a hell of a lot more convenient).
Thursday, Jul 17, 2003, 12:00 AM in The Spout
My First Visit to MS Studios
I went with Erica Wiechers (.NET Show heart throb) to visit MS Studios today. Ostensively we were there to preview the Applied XML Developer Conference videos, some of which Erica will be turned into MSDN TV episodes. However, as long as we were there, Bob Snyder gave us the nickel tour.
The front entry was even more secure than the normal MS buildings, being encased in wire fencing and not yielding to my badge (we had to be let in from the inside). Once in, it was a big building with lots of open space and fun decorations. I got to see several blueprints of famous imaginary places, e.g. the spaceship from Lost in Space, the Addams Family house and the island from Gilligan's Island. I got to see the two green rooms where "talent" gets ready in the full locker rooms, then relaxes on the coach 'til it's their turn (although neither room is green). I got to see all of the studios, including standing on one of BillG's markers, seeing the set where he interviewed with Larry King and the other set where he recorded his antitrust testimony. I also got to see the set for the .NET Show, which looks like the inside of half of a giant bowl, so that they can blend in custom backgrounds, both physical and logical. I go to see all kinds of cool a/v routing and mixing equipment, putting my one little PC attached to my home theater system seem so pathetic in comparison. I even got to see some live footage of Steve Ballmer that they were filming that day (man, he gets excited when he speaks : ).
In general, I've been getting to see and do a lot of cool stuff here at MS. Recommended.
Monday, Jul 14, 2003, 12:00 AM in The Spout
Alan Cooper's Has A Dream
In addition to bending my head back during my flight lesson, Alan Cooper always manages to bend my brain back, too. Here's a guy that invented drag-n-drop UI development umpteen years ago and he's been in the business ever since, mostly doing interaction design, but lately trying to tackle the problem of software management. His main thesis is that "web designers are called programmers, programmers are called engineers, engineers are called architects and architects are never called." He justifies this statement by comparing architecture to real-world architecture, which is very different from what the IT industry has co-opted the term mean.
For example, in the world of physical buildings, an architect meets with the clients to understand their needs and listens to their ideas. He then designs a building via a series of increasingly specific sessions with the clients to understand what they need and with engineers to understand what can be done. He uses these interactions to produce blueprints to hand off to the engineer. The engineer decides how to build the building, e.g. what materials to use, what to build or buy, what labor is needed, etc. Before we had mass-produced parts and giant spec books describing every material under the sun, this often required experimentation, which would also feed into the production of a more detailed set of plans to hand off to the construction workers, who do the actual building of the structure. While the structure is built, the engineer and the architect checks in to make sure that things are meeting their requirements and, in fact, it's the engineer's job to sign off when it does. Likewise, there are inspectors that check to make sure things are up to code at certain phases of the project.
In the world of software, we've got inspectors, they're called QA staff. We've got construction workers, they're called programmers. We've got engineers, they're called software engineers, even though we have yet to decide what being a "software engineer" means (often it's just another fancy word for "programmer"). We sometimes have architects, but we tend to rely on the combination of engineering and usability folks, most often skipping the usability and most of the contact with the customer altogether.
Alan's view of the world of software is that, because we don't have this very interactive role that really corresponds to the architect very often, non-technical management really has no idea what's going on in the software construction process. Instead, they have to rely on engineers and programmers to tell them things, when they feel like it, and those guys lie (or plain don't know). Likewise, because there is so little architecture, what comes out the other side is often not what the users want anyway.
In Alan's world, architects fill the role between engineers and customers and non-technical management, designing software that users want and communicating what's going on with management. Likewise, engineers design software to spec that works under stress; programmers build software that doesn't crash; QA checks to make sure that this all happens the way it should.
One of the benefits of Alan's view is that before engineering happens, architects figure out in a detailed and thorough way what needs building, handing complete specs to the engineers. Likewise, before programming happens, engineers run the experiments and make the technology and resource decisions before any code is written, passing off details specs to the programmers. These details specs also flow to the QA folks, which uses them along with their own quality standards to make sure that the software is right before it ships.
If this seems silly, think about an inspector signing off on a house before the foundation is poured, a construction worker pouring the concrete before the plans are done or the engineer deciding on the materials of a building before he knows if it's a house or a mall. Software is certainly more fluid than concrete, but it's not so fluid as we like to believe, as evidenced by the number of failed software projects and the cost overruns associated with them.
We think we're doing architect/engineer/programmer now, but Alan disagrees. What we have is software being hand-made by craftsman from the iron age, but reproduced like appliances from the industrial age. What we need is real engineering for the information age. Alan puts it nicely, "We're standing at the front edge of the information age with really sharp tools from the industrial age."
Of course, what Alan's talking about is the standard waterfall method of software design, which is what I learned in software engineering school. So why don't we do it? Because we don't like drawing up blueprints. We like to make the lights go blinky, blinky on the monitor. Building a shed in your backyard is quicker and easier without an architect or an engineer involved, but is that how you want your house built?
Another benefit of this model of architect/engineer/programmer is that it gives non-technical management much more visibility into and control of the process. You may not think so, but this is good. Right now, the only control they have over the process is the schedule. We say, "That'll take two years," and they say, "You've got four months." Why? Because they've been down the "two year" software process before and gotten burned ~100% of the time, whether the software ships late or it doesn't ship at all. At least if they say "four months," they've only lost 1/6th of the money when/if things go bad. If we want to take the giant hammer of schedule out of their hands, we've got to give them something else so that we have the time we know we need to build quality software that we can be proud of.
I don't know if Alan's right or not, but I sure want him to be. As an architect, I want the tools and the opportunity to design something that the customer will want (I've been down the other road before and it never ends well). As an engineer and as a programmer, I want to build something that will be loved and used when I'm done. Isn't that what we all want?
Sunday, Jul 13, 2003, 12:00 AM in The Spout
My First Flight Lesson
Normally a title like "My First Flight Lesson" would be a metaphor for something else because I'm generally much more engaged by mental pursuits than physical ones. However, in this case it's literal; Alan Cooper (the Father of VB) gave me a lesson in his plane (a Piper 6-seater).
Tim Ewald and his wife were staying at my house after the Dev.Conf., so Tim and I and the Sells brothers went to the local little airport to pick Alan up when he flew for an Saturday afternoon lark. When we got there, Alan invited us up for a sight-seeing trip. I volunteered to sit in the back with the brothers, giving Tim the front seat, but Alan insisted that I sit up front in the co-pilot's seat, clearly having something in mind.
After we took off and Alan took us out of PDX airspace at around 2400 feet, he told me to take the yoke because he was turning off the autopilot. After that, he took me through part of a real lesson, including playing with the flaps via the pedals at my feet, banking, trimming, descending, leveling off after a descend and in general, crapping my pants. Flying a plane was not what I expected to do that day, let alone so close to the ground with non-trivial winds and thick cloud cover. Not one do we have plenty of bumps and *sideways* motion to make mere riding a harrowing experience, but I had my boys and Tim in the back with their lives in my hands in the front. I find the sensation beyond my feeble powers of description, but it was fabulous and terrifying and emproudening all at the same time. And at least I had control. All Tim in the back got was the terrifying part!
Alan said that I did well and had a natural ability to keep the nose up (apparently that's a problem for newbies). Luckily, because he didn't want to make the folks in the back puke, he didn't turn off the engine like he said that he would normally do. Apparently there's nothing like cutting the engine to give a new pilot experience with what actually happens (apparently the plane doesn't drop like a brick no matter how many I were to drop in my shorts). Also, he said that normally he'd make me take off and land, but only in a Cessna, which has special landing gear for newbies, whereas had I done poorly on the Piper, I could've caused $200K worth of damage. On the other hand, while I was relieved not to experience the wonder of zero-engine flight or my first landing, I'm disappointed not to have those experiences as well. It was pretty damn cool to have full control in all three dimensions. That is, except when we overflew the helicopter that the tower didn't warn us about and that we didn't see 'til we were over it. Both Tim and I dropped some bricks when that happened...
Friday, Jul 11, 2003, 12:00 AM in The Spout
The Killer App for Web Services
After watching Amazon's amazing presentation at the Dev.Conf., it hit me that Amazon.com is the killer app for web services. Not only are they technically cool, but they have two business models for themselves and their associates built right in:
- I can build a business on their back-end data, selling targeted stuff to my customers, using their services to do all the hard stuff on the back end
- I can use their front-end to sell my own products
Amazon has turned the infrastructure on which they build their own business into a major revenue generator for not only themselves, but for associates. And, if they wanted to take it further, Amazon could provide all of their payment, distribution and storing/querying data as web services for things that weren't even available for sale on Amazon.com, e.g. medical supplies or porn, removing the need to build all of these services yourself. In fact, they're already planning on doing this for payment services.
*That's* what web services are supposed to enable. *Wow*.