January 20, 2000 Fun

In defense of the VB Programmer

> ––-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.


Don Box
ATL Mailing List

December 1, 1999 Fun

Abort, Retry, Ignore

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.

Anon

Welcome to Attila! November 1, 1999 Tools

Welcome to Attila!

Attila GDI sample
(Jim Murphy likes Attila and GDI a little too much…)

Welcome to Attila

Attila stands for “ATL for Applications.” Attila is a set of extensions built on top of ATL to provide application-level services in the same flavor as MFC. Towards that end, Attila uses a lot of the same notions as ATL, e.g. heavy use of templates, static binding and reliance on the compiler and the linker doing their job.  Also, in the flavor of ATL, Attila is under-documented and requires a lot of user investment to make use of it. However, once you do, we think you’ll find the flexibility and efficiency worth it. If you don’t, you haven’t lost much, ’cuz Attila is free. Enjoy.

Disclaimer

Attila isn’t a class library. Some of the headers depend on some of the others. Some are stand-alone. You are free to pull in the pieces of Attila that you need and leave the rest alone. Most of the headers were built by different folks and while every effort was made to keep things consistent by choosing ATL design techniques, everyone does things there own way.

This work is the work of the individuals involved and does not represent any contribution of their respective employers. You are under no obligation to use any of Attila at any time, but if you do, please abide by the License.

License

Attila is copyright (c) 1999-2000 by its contributors.
All rights reserved.
No warrantees extended.
Use at your own risk.

You may use Attila in your product in compiled form without royalty.
You may not distribute Attila in source code form without the express written consent of the contributors.

The official home of Attila is http://www.sellsbrothers.com.

Installation

The current Attila bits are located at attila.zip. Download and unzip them into the folder of your choice (making sure to preserve path names). Make sure to add the Attila include directory to your compilers include path. For example, if you unzipped Attila into the c:\attila directory, add c:\attila\include to your compiler’s include path. You can check to make sure you did this right by building any of the samples in the samples folder.

Support

Please do not send Chris Sells or any of the other contributors personal email complaining about Attila. Also please do not post Attila bug reports to any other mailing list, e.g. DCOM or ATL. If you like, you can submit bugs to the Attila Hit Squad mailing list (but only if you’re a member). Nobody there is under any responsibility to fix anything in Attila, but you might shame someone into it. A much better way to contribute to the life of Attila is to submit the fix along with the bug report. Or even better, join the Attila Hit Squad mailing list and fix bugs submitted by others.

Official Attila Contributors

Who Did What

  • Chris did a lot of the initial framework.
  • Justin did CMsgTranslator.
  • Ed did CRegPreferences and CRegWindowSerializer.
  • Curt did the common dialogs and restructured and added AX support to property pages.
  • Matt and Shawn did work on the coolmenus and coolbars.
  • Simon did the multi-SDI stuff.
  • Joe did the command UI routing support.
  • Anthony did the command routing.
  • Rodrigo and Jim did the GDI wrappers.
  • Jorge did the Doc/View stuff.
  • Brad did the DDX/DDV support.
  • Shawn did CSimpleList.

Documentation

You might find some implementation notes for Attila in the docs folder, but you probably won’t. If you have any documentation you’d like to submit, we’d love to have it.

Samples

Check the samples.htm file in the samples folder of the Attila distribution. You can build all of the samples from the command line using the buildall.cmd batch file in the samples folder.

CComSingleInstanceModule

  • Uses Single_Instance_App as the DDE application name, preventing more than one single instance ATL application from running at a time. DDE application name should be based on something unique to the application, e.g. the module name.

SdiDocView

  • No MRU.

MdiDocView

  • None of the MDI accelerators work, e.g. ctrl-tab.
  • There seems to be a lot of glue code in CMainWindow that could be hoisted to a base class.
  • No MRU.

LookOut

  • Left pane needs work.

History

  • 8/14/00, Various property sheet enhancements.
  • 1/28/00, Simulated PSN_APPLY for Wizards and PSN_APPLY for modeless propsheets bug fix.
  • 12/8/99, CSimpleList and bug fixes.
  • 11/29/99, Bug fixes.
  • 11/25/99, Bug fixes.
  • 11/10/99, DDX/DDV and bug fixes.
  • 11/1/99, Bug fixes.
  • 11/1/99, Beta release.
Still_Life_with_Aggregate October 25, 1999 Fun

Still_Life_with_Aggregate

Still Life with Aggregate

Built using online Lite-Brite.

Jason Whittington
Private DevelopMentor Mailing List

October 6, 1999

Spirit of the IUnknown

(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
Private DevelopMentor Mailing List

July 30, 1999 Fun

Computer synthesized song to liven up your day…

I just like the idea of a computer singing… If you’ve seen 2001, you’ll recognize the tune.

Windows Telephony Programming: A Developer’s Guide to TAPI June 27, 1999 Books

Windows Telephony Programming: A Developer’s Guide to TAPI

The Book

This page is dedicated to my book, Windows Telephony Programming: A Developer’s Guide to TAPI, from Addison-Wesley. If you’d like to order a copy, you can do so from Amazon.com .

The Table of Contents

  • Prologue: The Story of Windows Telephony
  • Windows Telephony Architecture (excerpted here)
  • Assisted Telephony
  • Making a Call
  • Telephony Framework
  • Answering a Call
  • Call Management
  • Telephony Service Providers
  • The Future of Telephony

The Source

This source code has been run and tested on Windows 98, Windows ME, Windows NT 4.0, Windows 2000 and Windows XP and supports TAPI versions 1.4 through 3.1. I have not touched this source code in years and can no longer support it unfortunately.

VS.NET Sample Source | VC6 Sample Source (previous version)

Here’s vc6mfc42.dll (zipped) if you need it.

TAPI Explorer

I built the TAPI Explorer (tExplorer) to allow me to understand the various capabilities of the telephony devices installed on my system when I was developing TAPI applications and writing my TAPI book. It grew into a utility for showing all line, address and phone capabilities as well as other TAPI settings, e.g. country codes, telephony locations, service providers, etc. If you’re running into TAPI errors that you don’t understand, TAPI Explorer will help you work through them.

This source code has been run and tested on Windows 98, Windows ME, Windows NT 4.0, Windows 2000 and Windows XP and supports TAPI versions 1.4 through 3.1. I have not touched this source code in years and can no longer support it unfortunately.

VS.NET tExplorer Source | VC6 tExplorer Source (previous version)

Real Programmers… April 19, 1999 Fun

Real Programmers…

Contributed by Liliya Yakupova:

Real programmers code in binary.
Tommy Riddle had this to say: “Actually, real programmers don’t need the enter key- they just type in 00001101.”
 
4/19/1999

← Newer Entries Older Entries →