You may or may not know it, but I'm a big poker fan. For a while, I thought
about quitting my job and being a
Texas Holdem
poker player. I've studied a stack of poker books and every once in a while,
I get to be at a table when there's a "moment" -- somebody gets cocky and gets
beat in just the way they deserve. I've been the cocky guy and I've been the guy
that does the beating. Here's an example with poker brat Phil Hellmuth of what
I'm talking about:
I love seeing Phil get trounced here, but the only thing that makes me wonder
is, why is Dragomir so upset? I can't help but gloat when I get to beat someone
like that. : )
From left to right, Ted Neward, Rocky Lhotka, Chris Sells's cardboard cutout
and his electronic image projected to building 33 in Redmond, WA from Lake
Oswego, Oregon, Patrick Cauldwell and Scott Hanselman.
From Keith Pleas, Microsoft Patterns & Practices "Open Source in the
Enterprise" panel organizer
Wed, 10/11/2006 6pm
On the left, you see Lt. Uhura with her wireless Bluetooth headset (although
I'm not sure of the made and model). On the right, you see me with mine (the
Nextlink Bluespoon AX). I've waited all my life to be as cool as the folks
on Star Trek and now it's finally happened! I'm ready for my replicator,
transporter, tricorder and Holodeck now...
This is what Don Box's 12-year old son thought a good last minute costume
would be when trick-or-treating the Indigo halls of Microsoft suddenly seemed an
imperative. I guess this is the consequence of having a life-sized cardboard
cutout readily available...
I decided to go a little meta for this year's XML DevCon:
10. Top 10 List of Top 10 List of Top 10 List Ideas (a little too meta�)
9. Top 10 Reasons that XAML Uses XML (Couldn�t figure out a good
representation of gradients in EDI)
8. Top 10 Secrets of the CLR (�Boxing� was almost called �Richtering�)
7. Top 10 Members of the XML Community Least Likely To Fit In At Burning Man
(I don't want to see Doug Purdy showing up at the ice tent in his thong...)
6. Top 10 Members of the XML Community Most Likely To Fit In At Burning Man
(Wasn�t Rory born at Burning Man?)
5. Top 10 Similarities Between Team America Characters and XML Community Members
(XML: Heck yeah!)
4. Top 10 Reasons That Raw XML Programmers Exhibit More Animal Magnetism
Than, Well, Anyone Else� (Tim Ewald is really all the evidence we need...)
3. Top 10 New Enterprise Features in Visual Studio Orcas (Clippy: �It looks like
you�re designing an insurance agency schema. Can I help you with that?�)
2. Top 10 Reasons Democrats Are More Likely To Be XML Programmers Than
Republicans (89% of the angle brackets should not go to the top 1% of
programmers!)
1. Top 10 Reasons That The Red Sox Are Going To Kick Butt! (Just pandering to
the crowd...)
Chris Sells (with help from Scott Hanselman, Tim Ewald, Matt Powell and
Scott Bloom)
Applied XML Developer's Conference
Friday, October 20th, 2005
I've spent the last 8 months driving me wife to get rid of a ton of her stuff
so that we could use more than the front 2 inches of every drawer, cupboard and
closet in the house (of course, it's her stuff that I find to be extraneous : ).
Yesterday, while she was on her 2nd night of working 3 12-hour night shifts in a
row, I sent her the following email (yes, that's just the kind of nerd
that I am):
From:
Chris Sells [mailto:csells@sellsbrothers.com] Sent: Thursday, August
19, 2004 10:51 AM To: 'Melissa Sells' Subject: Moving the
shiny stuff above the frig?
Melissa, can I move the stuff above the
frig that we never use into the attic?
The "shiny" stuff above the fridge is all kinds of silver and pewter that we
never, ever use but must keep because someone in one of our
families looked at it once a long time ago. Plus, who knows, the Pope could
visit to try to convert us back. This was her complete reply after 25 hours of
work, 6 hours of commute and 6 hours of sleep over 2 days:
From: Melissa
Sells [mailto:msells@sellsbrothers.com] Sent: Friday, August 20, 2004 8:27 AM To: 'Chris Sells' Subject: RE: Moving the shiny stuff above the frig?
Is there
something that you feel you need to put above the fridge? Are you planning
on letting a midget live up there? Because I think that if you are going to
let a midget live in the house, they have a right to have a room with a
window or something. In that case, you should have them move into the
cupboard under the counter in the laundry room and we can knock out a space
for a window. It would also be a lot easier for them to get to without
having to rig up some sort of ladder, as that would just take up more of
your precious space. On the other hand, living above the fridge would give
them easy access to the food, and we could have a string with a roll up
ladder rigging. Although having easier access to the fridge may make them
over eat and they may get wedged up in the space over the fridge, be unable
to escape and then we will have to explain why we have that strange odor in
the kitchen.
Is there any doubt why I love her? : )
Chris Sells
Posted: Friday, August 20, 2004 11:27am
Personal Email
My web log brings all the nerds to the yard,
and I'm like: "mine's better than yours".
Damn right, it's better than yours!
I can link you, but I have to charge!
My web log brings all the nerds to the yard,
and I'm like: "mine's better than yours".
Damn right, it's better than yours!
I can link you, but I have to charge!
I know you want it;
the thing that makes me,
what the geeks go crazy for.
They lose their minds..
the way I whine.
I think it's time:
la la, la, la, lah
Post it up.
la la, la, la, lah
The geeks are waiting.
la la, la, la, lah
Post it up.
la la, la, la, lah
The geeks are waiting.
My web log brings all the nerds to the yard,
and I'm like: "mine's better than yours".
Damn right, it's better than yours!
I can link you, but I have to charge!
My web log brings all the nerds to the yard,
and I'm like: "mine's better than yours".
Damn right, it's better than yours!
I can link you, but I have to charge!
I can see you're on it.
You want me to teach thee,
techniques that freaks these boys.
It can't be bought;
it's just my marketing wrought.
(Track-back if you're smart)
la la, la, la, lah
Post it up.
la la, la, la, lah
The geeks are waiting.
la la, la, la, lah
Post it up.
la la, la, la, lah
The geeks are waiting.
My web log brings all the nerds to the yard,
and I'm like: "mine's better than yours".
Damn right, it's better than yours!
I can link you, but I have to charge!
My web log brings all the nerds to the yard,
and I'm like: "mine's better than yours".
Damn right, it's better than yours!
I can link you, but I have to charge!
Oh once you get involved,
everyone will look this way, so,
you must maintain your charm;
same time maintain your click-through,
just get the perfect link.
Feed what you have within;
RSS is cheaper than ink.
The geeks pick up your scent.
la la, la, la, lah
Post it up.
la la, la, la, lah
The geeks are waiting.
la la, la, la, lah
Post it up.
la la, la, la, lah
The geeks are waiting.
My web log brings all the nerds to the yard,
and I'm like: "mine's better than yours".
Damn right, it's better than yours!
I can link you, but I have to charge!
My web log brings all the nerds to the yard,
and I'm like: "mine's better than yours".
Damn right, it's better than yours!
I can link you, but I have to charge!
Don "XML" worked a
little PhotoShop magic on a poster for a movie that I loved growing up (it was
one of two record albums I had and I listened to it over and over and over):
This is a recipe that I sent in for the O'Reilly title "Gastronomy for
Geeks". It was handed down to me by my grandfather at our cabin on the lake. He
was into manly food that sticks to your rips and left the more delicate dishes
to my grandmother.
Ingredients
1 15oz can of cream-style corn
1 15oz can of non-cream-style corn (drained)
2 cups of crushed saltine crackers (although other crackers and even
potato chips work well)
3 eggs
1 cup of milk (scant)
1 tablespoon of butter or margarine
Number of Servings
9 normal human servings or
3 hungry developer servings
Directions
Grease 7" cake pan (or nearest equivalent, Grandpa wasn't picky)
Mix cream-style and drained non-cream-style corn together in mixing bowl
Spread 1/2 of the corn along the bottom of the cake pan
Spread 1/2 of the crackers over the layer of corn
Repeat for one more layer of corn and crackers
Beat eggs and milk together for 2 minutes in a mixing bowl (preferably
the corn mixing bowl, which should now be empty, to save on dishes that need
washing)
Put egg/milk mixture over the layers of corn and crackers, using a fork
to poke holes in the layers to allow egg/milk mixture to seep into all
crevices
Drop button (or margarine) in dots over the top
Bake at 350 for one hour or until top is golden brown
Bake at 200 for 30 more minutes for rustic Grandpa goodness
Let cool for as long as you can stand to wait, cut into pleasing shapes
and serve
Chris Sells
Submitted for O'Reilly's "Gastronomy for Geeks"
Tue 3/4/2003 8:44 AM
Brad Abrams
make Jeffrey Richter and me stand in front our of
"software legend"
stand-up cut outs yesterday so that he could take a picture. I've already gotten
crap from my new team at MS for being one of these guys. I assume it's the shock
and awe... : )
Here's the SellsBrothers Beaverton Area Little League team looking very serious. Notice the SellsBrothers logo on the hats. Having your own company definitely has it's perks. : )
Here's the SellsBrothers team looking more natural.
It all started with a bet that my new marketing guy could meet his promised numbers by a certain date. Figure 1 shows me reading his results report at VSLive 2003. Figure 2 shows the audience deciding if that was good enough. Figure 3 shows him taking a pie in the face as revenge by engineers for the missed promises of marketing guys everywhere.
Figure 1: Reading the marketing results report to the audience
Figure 2: The audience deciding whether the marketing guy had lived up to his promises
People often ask what is meant by Marketing. Perhaps the following analogies will help clear it up:
You see a gorgeous girl at a party. You go up to her and say, "I'm fantastic in bed." That's Direct Marketing.
You're at a party with a bunch of friends and see a gorgeous girl. One of your friends goes up to her and pointing at you says, "He's fantastic in bed." That's Advertising.
You see a gorgeous girl at a party. You go up to her and get her telephone number. The next day you call and say," Hi, I'm fantastic in bed." that's Telemarketing.
You're at a party and see a handsome man. You get up and straighten your dress. You walk up to him and pour him a drink. You say, "May I," And reach up to straighten his tie brushing your breast lightly against his arm, and then say, "By the way, I'm fantastic in bed." That's Public Relations.
You're at a party and see a gorgeous girl. She walks up to you and says, "I hear you're fantastic in bed." That's Brand Recognition.
You're at a party and see a gorgeous girl. You talk her into going home with your friend. That's a Sales Rep.
Your friend can't satisfy her so he calls you. That's Technical Service.
You're on your way to a party when you realize that there could be gorgeous women in all the houses you're passing. So you climb onto the roof of one situated in the middle and shout at the top of your voice, "I'm fantastic in bed!". That's Spam.
You hear about women like this but never meet one. That's False Advertising.
Created by unknown Contributed by Asaf Shelly Thu 2/13/2003 6:50 AM
My friend and fellow DevelopMentor instructor, Craig Andera, is not only enormously dedicated, but is very interested in pushing the envelope on post-dot-bomb advertising space. When he heard that he could make money on each "hit," Craig started spending a lot of time in bars and other seedy areas around town.
sttto "Mamas Don't Let Your Babies Grow Up To Be Cowboys" by Willie Nelson
Chorus: Mama don't let your babies grow up to be computer boys Don't let them keyboard and drink at Starbucks Make 'em be doctors and lawyers and such Mamas don't let your babies grow up to be computer boys They'll always stay home and they're always alone Hackin' is all that they'll love
Computer boys ain't easy to love and they're harder to hold And they'd rather give you some code than diamonds or gold Star Trek communicators and pocket protectors And each night begins a new day And if you don't understand him and he don't ignore you He'll be addicted to porn
Chorus
A computer boy loves shiny new gadgets and four-donut mornings High-speed connections and trackballs and NeverWinter Nights Them that don't know him won't like him and them that do Sometimes won't know how to take him He's not wrong he's just different and his brain won't let him Do things to make you think he's right
waka waka bang splat tick tick hash caret quote back-tick dollar dollar dash bang splat equal at dollar under-score percent splat waka waka tilda number four ampersand bracket bracket dot dot slash vertical-bar curly-bracket comma comma crash
Serdar Kilic
win_tech_off_topic@yahoogroups.com Sat 5/18/2002 6:32 PM
I think it *is* elvish... let me put my laptop in the fire. Ah yes, I can read it clearly now:
One Desktop to rule them all, One Desktop to find them One Desktop to bring them all, and in the darkness bind them in the land of Redmond, where the shadows lie
A friend of mine stumbled over this in the Microsoft source code:
// Function: RunCommandEx
// Synopsis: runs the given command in the current session, more robust
// than RunCommand
// Arguments: none
// Returns: S_OK if success
// History: October 3, 2000 - created [name withheld to protect the guilty]
HRESULT RunCommandEx(LPCWSTR szCmdLine) {
DWORD dwTry = 0;
HRESULT hResult = S_OK;
// try run command 3 times at most
while (dwTry<4) {
hResult = RunCommand(szCmdLine);
if (hResult!=E_FAIL) {
// we succeeded
break;
}
dwTry++;
}
if (dwTry==4) {
ATLTRACE(L"COuld start the command even we tried 4 times\n");
ASSERT(FALSE);
}
return hResult;
}
That's not quite my definition of robust, but oh well...
"Steal this song right off my page." You can find it at http://www.ferncrk.com/jittin.html. Use only in well ventilated area. Do not expose to open flame.
Platform for sale or rent who cares where all the others went no more pointer, pushes, pops or peaks I ain't got no memory leaks I wrote ten lines of C# today I was more productive than yesterday I'm a programmer of mean by no means I'm a king of the code
I feel sorry for those guys at Sun DOTNET has got them on the run But when I hear Scott McNeally whine I say stick your VM where the Sun don't shine Most folks agree VB DOT NET Is the best version of Java that we've seen yet I'm a programmer of mean by no means I'm a king of the code
You C guys think all this stuff is new A friendly runtime that hides the goo I'm a VB guy, better watch out for me 'cause I've been writing managed code since 93 Database code's busted -- no time to cry Patch it all to the newest API I'm a programmer of mean by no means I'm a king of the code
New waves they come and go so fast COM was love, but love don't last If COM was love than what's DOTNET It's love without the cigarette DOTNET will be here till we all get bored Then we'll throw it away and invent DOT-ORG I'm a programmer of mean by no means I'm a king of the code
Wild Side
Bill G came from Seattle WA Spread .NET across the USA Plucked out pointers on the way Shaved ref counting - started sporting GC He said Hey babe take a walk on the wild side Hey babe take a walk on the wild side
Chris Sells never once threw one away In the end, he had to pay and pay An object here, and object there Memory is the place where they say Hey Chrissie, take a walk on the wild side I say hey babe, let's going back home and finalize
And the .NET girls go Do do do do do do do do do do do do do do do do do do do doooooooooooooooo ah
<break>The musical stylings of Francesco Balena</break>
Jon Flanders came from out of the heartland With ASP he's was everybody's darling But he never lost his head Even when they told him COM was dead I said hey Jon, take a walk on the wild side I believe they call it Interop-O-cide
Brian Randell came and hit the streets Hoping .NET would bring inter-language peace He hates it when those bigots say C#'s for work, VB's for play I say hey Brian, take a walk on the wild side It's curly braces that make your code bonafide
My friend Don Box, he's just coding away Though he was James Joyce for a day Yeah I guess Don's pretty smart But he mistakes his code for art I say Hey Don, take a walk on the wild side You're just a liquor salesman, it can't be denied
And the .NET girls go ....
And the .NET girls go Do do do do do do do do do do Do do do do do do do do do do Do do do do do do do do do do Do do do do do do do do do do Do do do do do do do do do do
Bill G and the Feds
Sung to "Bennie and the Jets"
Hey kids - you wanna see a scene-o Let's watch Billy Gates get it on with Janet Reno We're talking anti-trust now - so stick around Gonna rack legal bills that know no bound Hey Joel Kline he's on the case Oh man he's so spaced out B-B-B-Bill G and the Feds Billy he's so silly and litigical The center of a courtroom scene He's got those Harvard roots, class action suits You know I read it in a magazine - oh yea B-B-B-Bill G and the Feds
Hey kids, go crank up your browsers You're in for nasty weather, gonna make you wet your trousers We're gonna stifle competition with such as sense of ease Gonna bring those bastards from Netscape down to their knees Hey Judge Jackson, have you heard this case Oh man, his ruling was so spaced out B-B-B-Bill G and the Feds Billy he's so silly and litigical The center of a courtroom seen He's got those Harvard roots, class action suits You know I read it in a magazine - oh yea B-B-B-Bill G and the Feds
Bill G, Bill G, Bill G, Bill G and the Feds... Bill G, Bill G, Bill G, Bill G and the Feds...
DevelopMentor's Conference.NET Sung by the .NET Band on the Runtime August 15, 2001
Chris riding The Incredible Hulk roller coaster in FLA in 2000. Notice the "COM is Love" t-shirt. I really wanted to say something funny or ironic in the title of this picture, but words failed me. Got one?
Dia Hamilton said: "so this is love" (which immediately made me think of
"What is Love?" and laugh)
Once upon a platform tired, while my code was stranded, mired in a pool of leaky pointers running up the mem'ry load, while I started to debug it, suddenly I screamed "Oh f*** it!", and decided to just chuck it in the hallway guest commode. Then discovered: managed code.
Ah, distinctly I remember, bugs caused by a private member, and later having to call AddRefs and Releases by the busload, These things, they fill me with regret, time wasted on pointer management, Now, simply Fire And Forget! Oh the freedom newly bestowed! Thank you, thank you, managed code.
Of course the bloat is sometimes scary, and IL can be kind of hairy, And there's this Tower of Babel thing that is threat'ning to explode. I mean, Perl and Python and Eiffel and all the scripting langs are just a ball but please, for God's sake, NOT COBOL! Java, even, but not THAT toad, running in my managed code.
I traded in my GIT and SCM, my registry (which was kind of dumb) and in return I got C# and the CLR, my new abode. And VS7, though often crashing, as a tool is really smashing. I shan't bore you by rehashing the gifts .NET has bestowed. Just be grateful: managed code.
I spoke at a college last week for a friend of mine who's an adjunct professor (Cal Caldwell). During the talk, one of the male attendees bolted <sigh>, but on his way out, trusted sources say that, when sighting a young coed whom our our bolter was clearly interested in engaging with in some way, he said, "Hey! Do you know who's in there? Chris Sells!" Clearly this young man was misguided in his attempt, but I'm glad to hear that someone thinks that using my name will help in attracting members of the opposite sex. It's never worked for me... : )
In Japan, it is said, the impersonal and sometimes unhelpful Microsoft error messages have been replaced with Japanese haiku poetry. Maybe in the next upgrade to our Windows...
Your file was so big. It might be very useful. But now it is gone.
The website you seek Cannot be located, but Countless more exist.
Chaos reigns within. Reflect, repent and reboot. Order shall return.
Aborted effort. Close all that you have worked on. You ask far too much.
Windows NT crashed. I am the Blue Screen of Death. No-one hears your screams.
Yesterday it worked. Today it is not working. Windows is like that.
Stay the patient course. Of little worth is your ire. The network is down.
A crash reduces Your expensive computer To a simple stone.
Three things are certain: Death, taxes and lost data. Guess which has occurred.
You step in the stream, But the water has moved on. This page is not here.
Out of memory. We wish to hold the whole sky, But we never will.
Having been erased, The document you're seeking Must now be retyped.
I ate your Web page. Forgive me; it was tasty And tart on my tongue.
First snow then silence This thousand dollar screen dies So beautifully.
The Tao that is seen Is not the true Tao, until You bring fresh toner.
With searching comes loss and the presence of absence: "My Novel" not found.
See how in Haiku All error messages are Somehow more peaceful
Richard Blewett
Ian Griffiths George Shepherd Internal Mailing List Wed 2/28/2001
Portland, OR, August 8, 2000 According to an article appearing in tomorrow's Wall Street Journal, DevelopMentor has developed a new technology for creating software applications. Attached is a photo of this technology in beta test at DevelopMentor's Portland Satellite office. DevelopMentor's device is attached to a user and using the latest LFM technology it auto-generates complete software applications. Evil Genius, Chris Sells, DevelopMentor's Senior Programmer, co-invented the technology with their Security Guru, the Prince of Darkness Keith Brown. Says Sells; "[our] new technology holds great promise for future generations of code warriors."
Dear MFC::CString You were such a beautiful thing I miss you so much CComBSTR is painful to touch WTL may restore my churning (out string manipulating code).
The family pet dies. The best explanation you can give the children is "Fluffy's reference count finally reached zero."
You've mailed more than three written petitions to the city council of Enumclaw, Washington requesting that the town prefix its name with an 'I'.
Your wife has a rather irritating habit of QI'ing you for IMowsTheLawn, despite the fact that for years you've been returning everything from E_NOINTERFACE to RPC_S_SERVER_TOO_BUSY.
The best thing about the new generation of wireless internet devices is that you will be able to receive the DCOM and ATL mailing lists from almost anywhere.
Part of your IPO research strategy involves calling the company's engineering manager on the phone and demanding a detailed explanation of apartments and threading.
The party you threw to celebrate the introduction of asynchronous RPC calls in Windows 2000 was significantly more expensive than your wedding reception.
Last Summer's family vacation to Redmond, Washington.
All those emails you've sent to Chris Sells trying to convince him that "ATL Internals" would make a really great movie.
> -----Original Message----- > From: Russ Huffman [mailto:russ@DEVAUTHORITY.COM] > Sent: Thursday, January 20, 2000 8:39 AM > To: ATL@DISCUSS.MICROSOFT.COM > > Don't we already have a "bunch of programmers who have no > idea about how the underlying systems work"? I think they > are called VB programmers... ;)
I hate to break this to you, but I've met a lot of VB programmers trapped in the body of a C++ programmer. Unfortunately, many development shops place a lot of peer pressure on people to reject their yearnings to stop using semicolons and memory allocators. It's sad, but VB programmers today are where US Blacks were in the 30's and gays were in the 50's. We have yet to see the "Rosa Parks" or "Stonewall Riots" for VB programmers.
BTW, I have been preparing a keynote address in case I am ever asked to keynote a VB-friendly conference. If you want to look at a draft, go to http://www.develop.com/dbox/dream.htm[ed: MLK's "I have a dream" set to VB music]
...I have been to VB7. I've seen the promised land. I may not get there with you...
DB
PS: Last time I checked, all programmers have selective ignorance. I know nothing about 3D graphics. I know a lot about COM. VB gets under people's skin because one can be ignorant of computer architecture and ASM and still get a lot done.
Once upon a midnight dreary, fingers cramped and vision bleary, System manuals piled high and wasted paper on the floor, Longing for the warmth of bed sheets, Still I sat there, doing spreadsheets: Having reached the bottom line, I took a floppy from the drawer. Typing with a steady hand, I then invoked the SAVE command But got instead a reprimand: it read "Abort, Retry, Ignore."
Was this some occult illusion? Some maniacal intrusion? These were choices Solomon himself had never faced before. Carefully, I weighed my options. These three seemed to be the top ones. Clearly, I must now adopt one: Choose Abort, Retry, Ignore.
With my fingers pale and trembling, Slowly toward the keyboard bending, Longing for a happy ending, hoping all would be restored, Praying for some guarantee Finally I pressed a key -- But on the screen what did I see? Again: "Abort, Retry, Ignore."
I tried to catch the chips off-guard -- I pressed again, but twice as hard. Luck was just not in the cards. I saw what I had seen before. Now I typed in desperation Trying random combinations Still there came the incantation: Choose: Abort, Retry, Ignore.
There I sat, distraught, exhausted, by my own machine accosted Getting up I turned away and paced across the office floor. And then I saw an awful sight: A bold and blinding flash of light -- A lightning bolt had cut the night and shook me to my very core. I saw the screen collapse and die "Oh no -- my database", I cried I thought I heard a voice reply, "You'll see your data Nevermore."
To this day I do not know The place to which lost data goes I bet it goes to heaven where the angels have it stored. But as for productivity, well I fear that it goes straight to hell And that's the tale I have to tell Your choice: Abort, Retry, Ignore.
(sung to the tune of "Spirit of the Radio" (Rush, "Permanent waves")) Words (c) Jason Whittington, 1999
Begin the day with a simple call, A function unobtrusive Loads the module that's so elusive And a matching context means no marshal goo
Off on your way from the factory Interfaces at your fingers QueryInterface gets to you a new one Just Release the pointer when your object's through
Transactional objects crackle with life While they Service SOAP calls from some ASP Giving their feedback on the final outcome Making a call to Abort or Set Complete
All this machinery so that you can use it Is still quite closely guarded CreateInstance will get you a new object from the factory (yeah the factory)
One likes to believe that it's easy to use it, But the threading models and getting pointers marshaled shatters the illusion of transparency
the CLSID to marshal was requested by the S-C-M... F-T-M! Cookies, From the GIT For Safety! Ohhhh....For Safe-ty!
Jason Whittington Wed 10/6/1999 5:32 PM Private DevelopMentor Mailing List
10. They have� Who�s cooler, Captain Kirk or Captain Picard? 10. We have� Who�s cooler, Jim Springfield or Christian Beaumont?
9. They have� teleporters. 9. We have� IMarshalByValueImpl.
8. They have� Q, an all-powerful being at one with the Universe. 8. We have� Don Box.
7. They have� Data, a logical being often confused by the illogical reactions of those around him. 7. We have� Chris Sells � �Why can�t you just rewrite all of your MFC code?�
6. They have� The Computer, programmed to give canned responses to commonly asked questions. 6. We have� Keith Brown � �Check the Security FAQ.�
5. They have� Worf, a dark, imposing figure obsessed with security. 5. We have� Keith Brown.
4. They have� tight-fitting body suits. 4. We have� conference t-shirts too small for the �big-boned� programmer.
3. They have� Ensign �Jones,� the down-trodden crew member who always gets the worst of every encounter. 3. We have� MFC.
2. They have� the phaser, a weapon too dangerous for the untrained. 2. We have� the �Free Threaded Marshaler� checkbox.
1. They have� Klingons � brutish creatures constantly fighting against the common good. 1. We have� VB programmers.
In ATL did Chris Beaumont A stately macro wrap decree Where threads free and apartment ran (Class factories seen not by man) To hide from busy programmers Details from A to Z.
For those who know the guts of COM Or read Sells/Rector's weighty tome: AddRef, QI, or SysFreeString, We write no code to do such things. The templates, though daunting, give us support To skip to matters of more import.
Why must we know the details, then? Perhaps the wizard's all we need. A monkey could code the middle tier It's 3-2-1--discipline's optional here! Our C plus world has been VB'd.
But soon after macros start to fly The wizard-wielders return to cry: --What happened to data on this thread? --Is that a proxy, or direct instead? They ignored the chance to know Why GP faults now lay their code low.
Stuart Halloway stu@develop.com Wed 3/17/1999 6:23 PM DCOM Mailing List
Would you, could you, dynamic_cast? Not if I want my code to last. Cast not via C++, because in COM we proxy must. Else cross apartment my code will die, I should have known to use QI.
If not now this thread does end, More verses I will write and send.
And because the thread was resurrected, dispite Stu's dire warning:
DO NOT MIX CASTS AND COM TYPE DISCOVERY
Would you, could you, dynamic_cast? Not if I want my code to last. Cast not via C++, because in COM we proxy must. Else cross apartment my code will die, I should have known to use QI.
I do not use dynamic cast- It assumes a local C++ class! More than that it assumes in fact, With composition you'd still be whacked. Nor would I cast back up the chain, Tearoffs can make this shortcut vain. All the casts are language features, COM forbids the tricky creatures.
If type discovery is what you need, ALWAYS ALWAYS USE QI! and let me end this screed.
Stuart Halloway stu@develop.com Thu 4/8/1999 4:26 PM DCOM Mailing List
Writing QueryInterface Approaches the unreal For those who think and feel In touch with some reality Beyond the interface
Casting this to IUnknown Won't work with MI This code is really hacked One must use a static_cast To keep QI intact
Living the COM lifestyle The universal dream For a distributed team Those who wish to be Must focus on the integration Get on with the distribution The real intention The underlying theme
Coding up some IDL With help from Chris Sells And writing Windows Shells I can't believe that CORBA Is a long-awaited friend
All the world's indeed the net And we write all the objects Programmers and deployers Each another's client Inside the Internet
Living the COM lifestyle The universal dream For a distributed team Those who wish to be Must focus on the integration Get on with distribution The real intention The underlying theme
I feel like singing (on the lines of Lennon's "Imagine"):
Imagine there's no MFC its easy if you try ATL all around us The code would be so nice Imagine all the developers living life in peace... You may think I'm a dreamer But I'm not the only one...
Matt Pietrek posted a great x86 poem on his site that I just have to share.
[ed: I had a brush with fame recently at the WinDev West in September of '99. I was speaking right after Matt and as I was approaching the podium and Matt was still picking up his stuff, he said, "Hey, Chris. I wanted to talk to you about something." This completely blew me away. To me, Matt is one of the greats. As far as I'm concerned, he's right up there with Charles Petzold (the one person I've ever met with whom I was completely tongue-tied) and Don Box. And to think -- Matt actually knew who I was and wanted to talk to me about something! I knew that Matt dabbled in COM a little and I was preparing myself to answer some picky COM or ATL question, when he said, "You're the only one who's ever complained about the missing x86 poem link on my site. I have some other funny stuff you might want to post, too." Well, let's just say that I was a bit let down...]
"A COM/ATL developer here was ordered by the project architect (an incidentally company co-owner) to create and interface with one method that would return a LONG value representing the "this" pointer in the COurApp object (names changed to protect the guilty). Check out the name that the developer gave the interface, knowing that it doomed a future developer (this is an Exe Server) to a meltdown when they try to use the pointer they get back on a remote machine when accessing the server OOP."
// -------------------------------------------------------------
// IDontWannaDoThis: This is a temporary (hopefully) interface
// that is used to retrieve a this pointer to the COurApp
// singleton.
// -------------------------------------------------------------
[
object,
uuid(18BABEAE-ABC2-11D2-8A6F-0090270D84CA),
helpstring("IDontWannaDoThis Interface"),
pointer_default(unique)
]
interface IDontWannaDoThis : IUnknown
{
[id(1), helpstring("method GetThis")]
HRESULT GetThis([out, retval]LONG* pThis);
}
[ed: Can somebody ask Charlie Kindel to add this interface to OLEVIEW?]
And as if that weren't enough, John Connah queries: "Does pirated COM software support the IPatch interface?"
Insists that migrating to NT5.0 is a bad idea because the going rate for a rental-threaded apartment is $640.00 a month plus utilities.
Comes into work one morning dressed as a cowboy and claiming to be "The new marshaller in town".
Wants to know how to tune his TV to the "RPC Channel".
Stands up in design meetings, grabs his crotch, and proclaims "Yo! Marshall this! Am I right?".
Names one of his interfaces "IKnown" and claims that any object that doesn't implement it is doomed to eventually fall victim to a "COM Identity Crisis".
Spends 2 hours in front of a whiteboard trying to prove that by taking the integral of the GUID generating function, one can discern the total surface area of the application's UI in pixels.
Pronounces GUID as "gooeey dee".
P.S.
Here's a picture of the t-shirt that Microsoft produced for their 1999 Dallas TechEd that leverages Tony's idea without giving him credit, asking him permission or even notifying him. You lawyers should be able to support you in your retirement with this one, Tony!
BTW, here's one more sign that you've hired the wrong COM programmer (do you think CAT scans will become a normal part of the interview process?):
Anthony Toivonen Fri 4/16/99 1:07 PM DCOM Mailing List
This page is copyright (c) 1995-2009, Chris Sells. All rights reserved. No
warranties extended. Some assembly required. Void where prohibited. You may
link to this site freely from your own site. You may quote small excerpts from
this site, but please include a link to the original source on this site.