The Developer's Resource & Community Site
Some MORE signs that you may be taking COM too seriously...
Monday 10th April:
Submitted by Aravind Corera:
- Your weekly beach volley ball matches are between teams named 'Proxies' and 'Stubs'.
- You read 'ATL Internals' while waiting in line for the next ride at Universal studios
- You are locked outside your house without your keys and the sticky note at the door reads 'CoLockObjectExternal' when your wife gets back.
- You ask your bank if they can send your monthly balance statements in XML format.
- You return your neighbour's telephone call saying it was an interapartment callback.
- You ask your cable television company if they support Channel Hooks.
- You decide to do some detective work by night and call yourself the IMallocSpy.
- Your kid asks you what a female Ox is called and you reply ‘OXID’.
How did the chicken cross the road?
- NT 5.0 Chicken: Will cross the road in June. No, August. September for sure
- OS/2 Chicken: It crossed the road in style years ago, but it was so quiet that nobody noticed
- Win 98 Chicken: You see different coloured feathers while it crosses, but cook it and it still tastes like ... chicken.
- Microsoft Chicken (TM): It's already on both sides of the road. And it just bought the road.
- OOP Chicken: It doesn't need to cross the road, it just sends a message
- Assembler Chicken: First it builds the road ...
- C Chicken: It crosses the road without looking both ways
- C++ Chicken: The chicken wouldn't have to cross the road, you'd simply refer to him on the other side
- VB Chicken: NZHighways!TheRoad.cross (aChicken)
- Delphi Chicken: The chicken is dragged across the road and dropped on the other side
- Java Chicken: If your road needs to be crossed by a chicken, the server will download one to the other side. (Of course, those are chicklets)
- Web Chicken: Jumps out onto the road, turns right, and just keeps on running
- Gopher Chicken: Tried to run, but got flattened by the Web chicken
- Newton Chicken: Can't cluck, can't fly, and can't lay eggs, but you can carry it across the road in your pocket !
- Cray Chicken: Crosses faster than any other chicken, but if you don't dip it in liquid nitrogen first, it arrives on the other side fully cooked.
- Quantum Logic Chicken: The chicken is distributed probabalistically on all sides of the road until you observe it on your side
If you want to add your own 'signs that you might be taking COM too seriously', email them to [email protected].
COM objects in a microwave ?
Clearly, a microwave is an object by itself. So, if you put objects into it, that's a perfect example of containment.
Now, suppose you actually *turn it on* (that happens, some people actually *use* the stuff they buy -- this is of course rather strange to us software engineers, as we only use the stuff we create ourself). At some level of energy absorption, you will find leaks every now and then (memory leaks no doubt).
At an even higher level the vtables will start to degrade and eventually all function pointers float through the microwave, resulting in a couple of huge, strangely formed vtables containing all function pointers of all interfaces. This stage is sometimes referred to as 'dual'.
If you are brave enough to endure the dual stage and you stubbornly keep the microwave turned on, you will observe a strange phenomena: the molten interfaces will sift through the case and re-hydrate in open air, forming new vtables that you can actually touch from the outside. You now reached aggregation (you also found out why not to use it -- you just ruined your microwave, remember ?).
Some microwaves (the industrial strength ones) can handle aggregation and keep on heating. In the end, the whole object mumbo-jumbo explodes. The door of the microwave slams open, the molten objects fly through the room (missing you by only half an inch) and crunch into the opposite wall. After cooling down, they kind of fall back into shape, leaving a nasty stain on the wall (almost alike to the ones you see in some tubs).
And, the end of the day, when your wife comes home and inquires about the mess on wall, you smile serenely and say: "that ? I just marshaled an object by value ..."
- Henk de Koning
This Just in..
This just in...the Microsoft Research department has announced the next version of COM+, dubbed QCOM, or Quantum COM. This new specification is based on, and is a natural extension of, the next version of Microsoft's Windows OS, QWindows, which, Microsoft claims, will support quantum computing. Following is a list of some of the new features of QCOM:
- You'll never know where you QCOM object is or how fast it's being marshalled across the network at the same time.
- A change in the state of a QCOM object may cause another QCOM object to instantaneouly change state on another machine for no apparent reason.
- IUnknown's QueryInterface may or may not give you the requested interface pointer. This depends upon the current state of the QGUID.
- No security levels or protocols exist in QCOM since any security blanket can easily be breached by a quantum engine.
- You can choose not to install QCOM on QWindows, but even in a vacuum QCOM interfaces will occasionally pop up.
- All interfaces inheriting from IDispatch are now in a continual superpositional state. Therefore, the default dual interface on your QCOM object is all of the dual interfaces ever created in the universe at one time (this is a major benefit for scripting clients).
- You now receive QCOM events before they are even created.
- It is inherit in QCOM for HTTP tunneling to work correctly. In fact, sometimes, once in a great while, your QCOM interface will smash through a firewall on a Unix box and become a Perl object on the other side. Therefore, SOAP is no longer necessary.
Microsoft expects the release date of QCOM to coincide with QWindows on April 1st, 2001.
Credit: Jason Bock
How Do I know if I hired the wrong COM developer?
(by AnthonyToivonen — [email protected])
- Keeps referring to interfaces as "Thingies".
- 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".
We Three Monikers
(To be sung at parties.)
(This should be sung to the tune of 'We Three Kings of Orient are...')
We Three Monikers of Microsoft say hi
Bearing Lollipops Out of Our Sides
Registry Entry, Path and URL
Following yond'r object
Oh-oh Moniker of class and moniker of file
Moniker of item trails behind
Display name leading, still proceeding
Guide us to the right object
Born a coclass in Microsoft labs
His Class I D to seek him intact
There for ever, ceasing never
Until the final Release()
Files by name to offer have I
My Persistance leaves objects in sight
Path I select, bind to object
Instantiate him, the storage right
Items are mine, their meek existence
Lovingly tendered by moniker-to-left
Active they became, Sealed in display name
The right path they do present
Glorious now, behold him startup
Object and interface with two lollipops
Client app sing: 'QueryInterface'
'DebugAssert' the system replies
(note to editors: Class I D is intended
to have the spaces in - it's a play on the
original words) (either Gold I bring
or Myrrh I bring - I forget which)
With many thanks to Simon Robinson, whose other talents can be seen on his website!