Please Note - Your Browser is not a recent Version of Microsoft's Internet Explorer
This site may not display correctly in your Browser.
To download a free copy of Internet Explorer please visit
http://www.microsoft.com/windows/ie/downloads/critical/ie6sp1/default.asp

Click your Browser's Refresh/Reload button to eliminate this message.

 

RAFAEL E

   Software Structures, Inc.
            A Texas, USA Corporation
            Member of the Houston, Texas Better Business Bureau.

Home
Up
CurrentNetResume
current_resume
current_long_resume
current_skills
CoverLetters
academic_resume

RAFAEL E. PENA, Ph.D.

SENIOR PROGRAMMER, GROUP LEADER AND TRAINER / INSTRUCTOR

3200 South Gessner, Houston, Texas 77063

rpenaphd@SoftwareStructures.com

www.SoftwareStructures.com

(713) 781-6633

 

 

(Last Updated: February 3, 2003)

 

 

Principal Keywords: C++, CSharp (C#), ATL, COM / COM+ / DCOM, MFC, Visual Basic, Visual Studio .NET, ASP.NET, ASP, ADO.NET, ADO, .NET XML (Extensible Markup Language) Classes, .NET XML Web Services, SQL Server 2000, SQL Server CE, MSMQ, COM+ Queued Components, MTS, Windows 2000 DDK, Windows NT DDK, OLEDB, ADO, Windows XP, Windows 2000, Windows NT, Windows CE, CE.NET (CE .NET), Pocket PC.

 

I specialize in WIN32 Microsoft operating systems, especially Windows 2000 Server (Professional) and Windows NT (Server), both User-Mode (Win32) and Kernel-Mode (DDK).  My recent work involves ASP and ASP.NET, Microsoft .NET technologies, their interoperability with COM+, .NET XML Web Services and ADO.NET XML-aware classes.  I also have significant work with Microsoft COM+/DCOM based technologies for distributed processing in (wireless) intra-nets and over the Internet.  This includes Transient COM+ Event Subscriptions, COM+ Queued Components, MSMQ (Microsoft Message Queue Server) and MTS (Microsoft Transaction Server).

 

 

 

SOFTWARE DEVELOPMENT AND PROJECTS

 

 

A FACILITY THAT USES INTERNET SOCKETS TO MONITOR AND CONTROL SOFTWARE PIRACY.

Programmer, for Software Structures, Inc. Houston, Texas.  January 2003.

Keywords: ASP.NET, ADO.NET, CSharp (C#), C++, Microsoft Visual Studio .NET, Visual C++ 6.0, MFC (Microsoft Foundation Classes), Windows Sockets (Winsock), .NET Socket classes: Socket, TcpListener, TcpClient.

Summary:

- Client software retailed from the server web site is packaged with a unique identifier (GUID).

- At timer controlled intervals the client attempts to establish a socket connection to the server.

- When the server is listening for client connections, client-identifying information is received to verify License Agreement compliance.

 

 

MSN-CHAT WHISPER ADVERTISEMENTS BLOCKER: AN ONLINE PRODUCT OF WWW.FEWDOLLARSOFTWARE.COM.

Programmer, for Software Structures, Inc. Houston, Texas.

September, December 2002.

Keywords: C++, Visual C++ 6.0, COM (Component Object Model), ATL (ActiveX Template Library), MFC (Microsoft Foundation Classes), ASP.NET, ADO.NET, CSharp (C#), Paypal Instant Payment Notification (IPN), Visual SourceSafe, Windows XP / 2000 / NT.


 

SOFTWARE DEVELOPMENT AND PROJECTS  (continued)

 

 

Summary:

- New MSN Chat Whisper windows are subclassed.

- Whisper windows whose message contains Internet URLs or any one of a list of user-specified phrases are dismissed before the user sees or interacts with the window.

- The list of user-specified phrases may be edited in a separate dialog.

 

 

PIANO PLAYER TEACHER: A MIDI DRIVEN PIANO INSTRUCTION SOFTWARE FACILITY.

Programmer, for Info-Tek Associates, Inc. Costa Mesa, California.

October - November 2002.

Keywords: C++, Visual C++ 6.0, MIDI (Musical Instrument Digital Interface) Sequencing and MIDI File I/O, COM (Component Object Model), ATL (ActiveX Template Library), MFC (Microsoft Foundation Classes), MFC Document-View Architecture, Visual SourceSafe, Windows 2000 Professional.

Summary:

- A MIDI file is read to structured RAM.  This is the Document in MFC's Document-View Architecture.

- Two GUI views of the music are implemented: the Notation Staff window and the Keyboard window.

- At playtime an indicator moves horizontally across the Staff to mark the presently playing tones.  The Staff view scrolls automatically.

- At playtime the Keyboard view shows depressed keys corresponding to the played tones.  Playing Hands are also shown executing the required fingering of the music.

 

 

TABLETOUCH: A HTTP-BASED DATA TABLE VIEWER AND EDITOR.  AN ONLINE PRODUCT OF WWW.FEWDOLLARSOFTWARE.COM.

Programmer, for Software Structures, Inc. Houston, Texas.  June - July 2002.

Keywords: ASP.NET, ADO.NET, CSharp (C#), JavaScript, Microsoft Visual Studio .NET, ODBC .NET Data Provider.

Summary:

- A .NET Web Service on the remote data server accesses tables using classes in .NET's ODBC Data Provider add-on component.

- The user interface on the client browser is provided by an ASP.NET Web Form.

-  TableTouch supports:

  -  Arbitrary connection strings and WHERE clauses in SELECT statements.

  -  Viewing, Editing and Updating remote table records.

  - Local View Sorting on any column while preserving the SelectedItem record
marker.

  -  Multiple persistent control settings for each value of the remote data server URL.

  -  Persistent Web Form scroll position across post-backs to the GUI server.

  -  Tooltip based help strings with lag time and timeout.

-  Deployed for sale from www.FewDollarSoftware.com.

 


 

SOFTWARE DEVELOPMENT AND PROJECTS  (continued)

 

 

AN E-COMMERCE WEB SITE (WWW.FEWDOLLARSOFTWARE.COM) THAT USES WWW.PAYPAL.COM FOR INTERNET ONLINE PAYMENTS

Programmer, for Software Structures, Inc. Houston, Texas.  April - May 2002.

Keywords: ASP, ASP.NET, CSharp (C#), VBScript, JScript, ADO, Microsoft Visual InterDev 6.0, Microsoft Visual Studio .NET, Microsoft Access 2000, ODBC, Paypal Instant Payment Notification (IPN).

Summary:

- ASP based database support via ADO and ODBC.

- Please visit www.FewDollarSoftware.com

       

 

A SERIAL COMMUNICATION API AND TROUBLESHOOTING A CE.NET EMULATED DEVICE INTERACTING WITH A SECOND COMPUTER CONNECTED TO THE CE DEVICE HOST

Programmer, for Heron Solutions Ltd. United Kingdom.  February - March 2002.

Keywords: CE.NET (CE .NET), Platform Builder 4.0, Visual Studio .NET, .NET Smart Device Extensions.

Summary:

- From CE.NET, CreateFile() caused an uninformative exception to be thrown. I solved the problem.

-      Developed a simple serial communication API.

 

 

TRANSDBG. A MTS / COM+, MSDTC TRANSACTIONS TRACE VIEWER-DEBUGGER.  AN ONLINE PRODUCT DOWNLOADABLE FROM WWW.FEWDOLLARSOFTWARE.COM.

Programmer, for Software Structures, Inc. Houston, Texas.  February 2002.

Keywords: C++, Visual Basic 6.0 (VB), Visual C++ 6.0, COM/COM+ (Component Object Model), ATL (ActiveX Template Library), MFC (Microsoft Foundation Classes), MTS (Microsoft Transaction Server), MSDTC (Microsoft Distributed Transaction Coordinator), Windows Installer SDK, ORCA *.msi Editor.

Summary:

- Every Transaction enabled COM object (or VB class) registers itself with the TransDbg facility by issuing a call into an in-process DLL TDProxy.dll.

- At run-time a Dialog reports system wide transaction activity of all such registered COM objects.

- For each object, TransDbg traces the receipt by the object's transaction Resource Managers of calls made to them by the Distributed Transaction Coordinator.

- The calls traced are: PrepareRequest(), CommitRequest() and AbortRequest().

-      TransDbg also facilitates the debugging of various transaction failure scenarios by allowing the user to artificially abort any one or various registered transactions.

 

 

TONAL MUSIC WRITER - THE TONAL GRID. A MIDI SEQUENCER AND SOFTWARE TOOLS FOR THE ANALYSIS OF MUSIC BY THE RULES OF TONAL MUSIC COMPOSITION. 

Programmer, for Software Structures, Inc. Houston, Texas.  October 2001 - February 2002 (in progress), September 2000 - August 2001, December 1998 - February 1999, February - March 1997.

Keywords: C++, CSharp (C#), Visual Basic 6.0 (VB), Visual Studio .NET, Visual C++ 6.0, .NET XML Web Services, SQL Server 2000, ADO.NET, MIDI (Musical Instrument Digital Interface) Sequencing and MIDI File I/O, COM/COM+


 

SOFTWARE DEVELOPMENT AND PROJECTS  (continued)

 

 

 (Component Object Model), COM+ LCE (Loosely Coupled Events), ATL (ActiveX Template Library), MFC (Microsoft Foundation Classes), SAX2 (Simple API for XML), Visual C++ 1.52 (16 bit), ActiveX Automation into 16 bit Windows under NTVDM (NT Virtual Dos Machine), PowerTracks Pro Audio DLL API, Cakewalk MIDI FX (MIDI Effects Filters, Mfx Sdk), Shared Memory Mapped Files, Visual SourceSafe, Windows 2000 Server.

Summary:

- Visual Basic classes implemented in an ActiveX DLL manage the user interface.  Use of an ActiveX DLL for the GUI manager allows GUI components to receive COM+ LCE's (Loosely Coupled Events) generated elsewhere in the system.  Microsoft's MSFlexGrid control is used for the "Tonal Grid".

- The Music data structures are handled in a normal DLL linked to the VB GUI.  That DLL is accessed via a single command-driven entry-point.

- ATL classes were written which provide required MIDI functionality: Sequencing of MIDI messages to the sound generating device, and MIDI file I/O.

- The MIDI Sequencer class posts windows messages to an ATL control that owns a windows timer.  Timer events trigger COM Connection Point events that are received by the GUI Visual Basic executable.  VB is thus able to synchronize its display of played tones with the currently generated sound.

- The sequencer plays tones as they are inserted into the grid.

- Snap-to-Grid drag-drop is supported.  Tones are played by the sequencer at each snap to a grid-cell.  If the movement is vertical in the grid, the dragged tone is played at the pitch corresponding to its new location.

- To draw cell images (Music Tones), MSFlexGrid offers a per-cell .CellPicture property, which may be set to reference a COM object implementing a Microsoft documented interface IPictureDisp.  I implement IPictureDisp in an ATL COM object that also supports easy changes to image attributes such as color.  From the VB6 code it is easy, involving only a small code snippet, to change the color of a tone dependent on its being dragged or played.

- The MSFlexGrid control does not support a per-grid-cell .ItemData property helpful in tracking the state of each grid cell.  Because this application uses the grid to display tone images rather than text, the per-grid-cell .ForeColor property is used in lieu of .ItemData.

- A dedicated ATL DLL provides a COM interface to access static diatonic information concerning tone degrees, intervals and chords built from them.

- The music analysis component is proxied by .NET classes that execute in event synchronized dedicated threads for independence and improved performance.

- SQL Server 2000 music-rule tables drive the music analysis.  Each table record specifies which run-time analysis function to call and parameters to be used for the call.

- For improved run-time execution speed, the music-rules tables are actually read at compile time.  ADO.NET classes are used to read from the tables generating source code that is compiled into a rules DLL.

- The analysis component is structured for remote execution: it is implemented by a .NET XML Web Service.  For development and/or improved performance the Analysis Web Service DLL may also be linked as a local in-process server to the GUI VB6 client.

- The music analysis component generates a XML analysis report file using .NET XML and ADO.NET classes.  This file is returned to the .NET proxy executing on the GUI VB6 client machine.  The .NET proxy fires COM+ LCE events to inform the GUI VB6 client analysis results for feedback to the user.


 

SOFTWARE DEVELOPMENT AND PROJECTS  (continued)

 

 

A FACILITY THAT GENERATES POCKET PC DATA ENTRY SCREENS FOR ANY SQL SERVER 2000 TABLE. SQL SERVER CE - SQL SERVER 2000 MERGE REPLICATION. 

  Programmer, for Software Structures, Inc. Houston, Texas.  September 2001.

Keywords: SQL Server CE, ADOCE 3.1, Pocket PC, Handheld PC, Windows CE, SQL Server 2000 Replication, Embedded Visual Basic 3.0, Embedded Visual C++ 3.0, Microsoft Embedded Visual Tools, Windows CE Platform SDK, Platform SDK for Pocket PC, Visual Studio .NET, CSharp (C#), ADO.NET.

   Summary:

     - From a Visual Studio .NET project (Code Generator) ADO.NET classes SqlDataReader and DataTable are used to extract the schema of a given SQL Server 2000 table, published for merge-replication.

     - .NET's StreamWriter class is used to generate an Embedded Visual Basic 3.0 Pocket PC project file (.ebp) and form file (.ebf).

     - The Embedded Visual Basic 3.0 Pocket PC form file (.ebf) supports a dialog consisting of a TabStrip, a Frame window per Tab, and a MenuBar.

     -      Parameters specified to the .NET Code Generator, determine the number of Tabs on the TabStrip and the number of labeled data-entry TextBox controls per Frame.  One TextBox control per SQL Server 2000 table column.

     - The MenuBar has buttons to manage the SQL Server CE subscription to the SQL Server 2000 merge-replication publication, including synchronization, and also buttons to access the local Pocket PC copy of the replicated data using ADOCE 3.1.

     - All the required Pocket PC code is automatically written by the .NET Code Generator.

 

 

A GENERIC COM SERVER OBJECT HIERARCHY AND C++ CLASSES FOR PROCESS-SHARED ACCESS TO MEMORY MAPPED FILES (SMMF) WITH COM+ EVENT NOTIFICATIONS TO TRANSIENT AND PERSISTENT SUBSCRIBERS. XML SHARED MEMORY MAPPED FILES AND VISUAL BASIC CLIENTS ARE ALSO SUPPORTED.

Programmer, for Software Structures, Inc.  Houston, Texas.  September 2000, December 2000.

Keywords: File Mapping, ::CreateFileMapping(), COM/COM+ (Component Object Model), Visual Studio .NET, SQL Server 2000, ADO.NET, .NET XML Web Service, VB (Visual Basic 6.0), ATL (ActiveX Template Library), MFC (Microsoft Foundation Classes), C++, Visual C++ 6.0, Visual SourceSafe, Windows 2000 Server.

Summary:

-      Singleton COM objects are anathema to COM+.  However good design often requires that structured data in RAM be server-owned and shared by multiple clients.  In situations where it is known that the server COM object will be instanced only on a single machine, the usual case, that server object may be designed as a COM+ compatible wrapper (not a singleton) providing access to a single copy of the data in shared-memory.

- The Server Object hierarchy is driven by type awareness and is implemented using COM aggregation.  The base object knows the data simply as a byte stream whereas a 'derived' object (that COM aggregates the base object) is aware of the data as an instance of a user-defined type.  This separation facilitates reuse of base object code.

-      Multiple clients each in their own process space share access to the typed data when they instance the 'derived' object.


 

SOFTWARE DEVELOPMENT AND PROJECTS  (continued)

 

 

- The base object defines an Event-Interface that is registered with the COM+ LCE (Loosely Coupled Event) subsystem.  The base object fires a method call in that Interface: SharedMemoryHasBeenModified() when any client writes to shared memory.

-      Clients who want to receive that event notification may implement the Event-Interface and activate a COM+ Transient Subscription to themselves to receive those events.

- For XML shared memory mapped files, SQL Server 2000 tables are used to define the SMMF base object and derived object data structures.  Using ADO.NET classes the corresponding XML Schema Definition (XSD) files are generated from the table definitions.  For the interface to COM, "C" header files are generated from the XSD Schema definitions using Microsoft's XML 3.0 implementation of SAX2 (Simple API for XML).  The type information is also available to .NET components via CSharp (C#) classes created with the Xsd.exe utility also reading from the XSD files.  Finally, at run-time the information in the XML shared memory mapped file is processed using a technique based on .NET XML Serialization classes.

 

 

SYSTEM SOFTWARE FOR A WIRELESS NETWORK OF PALM-SIZE WINDOWS 2000 AND WINDOWS CE COMPUTERS. LAND WARRIOR.

Senior Programmer and Architect, for Pacific Consultants, LLC. Mountain View, California.  January 2000 through July 2000.

Keywords: COM/COM+, ATL, MFC (Microsoft Foundation Classes), OLE DB, SQL Server 7, Oracle8 Lite, SQL (Structured Query Language), COM Aggregation, Pipes, MultiThreading, Error Logging, Memory Leaks, Windows Hooks, C, C++, Templates, Visual C++ 6.0, Windows 2000 DDK (Device Driver Kit), NuMega SoftIce Debugger for Windows 2000, Windows CE Toolkit for Visual C++ 6.0, USB (Universal Serial Bus), CAN (COTS Controller Area Network), Windows Sockets, Visual SourceSafe, Windows 2000 Professional, Windows CE.

Summary: Some of my writings and contributions:

- In support of OLE-DB access to SQL Server tables, a C++ class CLWVariant derived from MFC's COleVariant that extends the realm of implicit type conversions performed by the overloaded .Attach() and .Detach() member functions.  Using this facility explicit variant type information (VARTYPE vt) was removed from the code.  Modification of the type of a table column now requires only a code modification of the corresponding OLE-DB consumer-object accessor header file.  The compiler handles the rest.

- To hide the COM complexities of (COM) client-side access to table data, a C++ template class CLWVariantLWServerClientHelper<....>.  Corresponding to any rectangular (rows x columns) area of a SQL Server table, this template outputs a client-side array of Variants containing the table data.

- A (COM) client-side template class CLWClientControlWithTable<....> which automates the COM mediated initialization of client display controls.  For ComboBoxes the template's constructor requires sufficient information to generate SQL statements to initialize the list and edit sub-controls.

- A facility based on three classes: CLWClientItemData, CLWSMngrCmdItemData, and CLWClientPrepareAndIssueLWSMngrCmd that implements a mapping (in a mathematical sense) of the information content of client-side screens onto a (COM) server-side (variable sized) array of CLWSMngrCmdItemData structures.


 

SOFTWARE DEVELOPMENT AND PROJECTS  (continued)

 

 

 This facility allows server-side processing of user input bypassing the COM complexities that such processing on the client-side would otherwise require.

- A hierarchy of server-side templates: class CdboXxxxSimpleWhere<....> and class CdboXxxxMultiRecord<....> : public CdboXxxxSimpleWhere<....>.  These classes templatize the OLE-DB accessor classes and simplify and systematize the manipulation of recordsets obtained from more complicated SQL select statements.

- A server-side ATL COM object class CLWTable able to access any table for generic I/O operations with no need to code explicitly for column types, column names, etc.

- The OLE-DB accessor classes used by the system is ATL Wizard generated for access to SQL Server 7 tables.  The server-side table manipulation code is based on these SQL Server 7 accessor classes.  Considerable effort was committed to identify minimal modifications of the accessor classes and

  direct SQL Server <-> Oracle 8 Lite table transformations that would permit the same body of code to execute against a Oracle 8 Lite implementation of the database.

- The group was writing code to run against hardware that was not yet available.  I wrote a MFC Dialog that, via NT Named Pipes, emulates the expected behavior of kernel mode device drivers for that hardware.

- A hierarchy of threading (thread owning) classes based on class CLWThread having the following features:

1.    Easy relocation of the thread's activity to some other executable.  This flexibility is partly supported by an optional loose coupling to adjacent threads synchronized by named dispatcher event objects and NT Named Pipe mediated cross-thread communication.

2.    An optional named heart-beat event that may live in its own (sub-)thread.  This (sub-thread) feature is useful in situations where the main CLWThread thread is expected to block for significant periods of time.

3.    Any invocation of the destructor: ~CLWThread() will -properly- terminate the thread (and sub-thread, if it exists).

4.    CLWTread derived classes are quite simple. The required complexities have been coded into the base class. The only significant feature provided by the derived classes is the ThreadFunction().

5.    The base-class code uses only SDK calls. Neither MFC nor ATL are required.

- A set of smart pointer templates and classes designed to trap memory leaks due to unreleased COM objects.  Four smart pointer classes that share client-side reference count information were written.  The four classes derive from _com_ptr_t<....>, CComQIPtr<....>, CComPtr<....> and _variant_t.  This facility is able to trap unreleased COM objects which adhere to the COM rule stating that any QueryInterface() for IUnknown on a given COM object instance should always return the same address.

- An error logging class CLWErrorLog for system wide tracking of error conditions both on Windows 2000 and Windows CE machines.  Supports single or multiple concurrent log files.  The software manipulates enumerated error qualifiers so that the information is binary in the code but readable in the log file(s).  A set of preprocessor macros was written to facilitate and encourage use.

- Initial work developing a WriteFile(), ReadFile() user mode API for both ends of a proprietary USB line connecting the Windows 2000 and Windows CE


 

SOFTWARE DEVELOPMENT AND PROJECTS  (continued)

 

 

  machines.  The intent was to hide the implicit master-slave assumptions built into the USB protocol and drivers so that either machine could initiate a transfer of information.

- Land Warrior 0.6 hardware includes a CAN (COTS Controller Area Network) bus attached to a serial port of the Windows 2000 machine.  Independent circular buffers in Kernel (system) memory are used to manage the data stream belonging to each device attached to the bus.  I modified to completion an existing Windows 2000 kernel mode device driver to support user mode registration to each device.  I also wrote a user mode API supporting independent asynchronous overlapped I/O to each attached device.

- A required third-party software library was generating error message dialogs that could not be disabled.  I wrote a WH_CBT windows hook that attaches itself to local threads only and uses Thread Local Storage (TLS) to keep thread specific information.  On a HCBT_CREATEWND notification received for an offending window, the window is subclassed and later during window creation, before it shows, it is dismissed with a click event posted to its 'OK' button.

 

 

A VISUAL BASIC ACTIVEX CONTROL AND SUPPORTING OUT-OF-PROCESS ATL OBJECTS WHICH SERVE ADO RECORDSETS ASYNCHRONOUSLY USING MSMQ UNDER MTS TRANSACTIONS

Programmer, for Software Structures, Inc.  June 1999 through December 1999.

Keywords: VB, ActiveX Template Library, ATL Service, NT Service, ActiveX Data Objects, OLE DB, MFC (Microsoft Foundation Classes), STL (C++ Standard Template Library), Microsoft Message Queue, Microsoft Transaction Server, DCOM+ (Distributed Component Object Model), C++, Visual C++ 6.0, Visual Basic 6.0, Visual SourceSafe, IIS 4.0 (Internet Information Server 4.0), Windows NT Server 4.0.

Summary:

- A multi-threaded (Free-Threaded) ATL Service serving a COM object for Message Queue(s) management and administration and additional threads on which local tables are accessed to satisfy ADO data requests.

- STL and MFC library support.

- VB ActiveX DLL’s serving standard VB written COM automation objects and/or MTS components (both on the server and client sides of the code).

- Mtx.exe processes executing MTS component packages and interfacing to the MSMQ API from both the C++ and Visual Basic bodies of code.

 

 

A OS/2 WARP 4 EMULATOR (PARTIAL SUBSET) FOR WINDOWS NT / WIN32 (STARTRAX, EWAVE)

Senior Software Architect and Programmer, for ADC Labs, Inc.  July 1997 - April 1999.

Keywords: MFC (Microsoft Foundation Classes), WIN32 SDK, MultiThreading, Drag-Drop, DirectSound, MMSystem, Btrieve DBMS, C++ / C Language, Visual C++ 6.0, Visual SourceSafe, Windows NT Workstation 4.0.

Summary:

- Partial functionality of approximately 300 OS/2 functions and roughly 400 OS/2 window messages and notifications was emulated, primarily in MFC derived classes.

-  Approximately 110 OS/2 Dialog resources were converted to Win32.

- Heavy multithreading with thread pooling and queuing.


 

SOFTWARE DEVELOPMENT AND PROJECTS  (continued)

 

 

A C++ CLASS LIBRARY FOR DEVELOPMENT OF WINDOWS NT 4.0/3.51 KERNEL-MODE DEVICE DRIVERS AND A KERNEL-MODE TRACING DEBUGGER

Programmer, for Software Structures, Inc.  June - October 1996 and intermittent through June 1997.

Keywords: Windows NT 4.0 DDK (Device Driver Kit), MFC (Microsoft Foundation Classes), OLE Automation, Visual C++.

Summary: The library was written in support of work on a NT Virtual Device Driver that buffers run-time Debug-traces generated by multiple, concurrent NT Kernel, WIN32 and Virtual DOS Machine (NTVDM) (Windows On Windows 16 bit) threads.  The Debug-trace information is read by a WIN32 MFC application that displays the call-indented traces in a listbox.

 

 

A FACILITY TO DYNAMICALLY (FORCE AT RUN-TIME) MFC-SUBCLASS ANY WINDOW ACROSS WINDOWS NT PROCESS BOUNDARIES

Programmer, for Software Structures, Inc.  December 1996.

Keywords: MFC (Microsoft Foundation Classes), Microsoft Visual C++ Summary:

Summary:

-  Consists of 11 specialized C++ classes (5 are MFC-derived) distributed in 5 DLLs (Dynamic Link Libraries) with support from my MFC Extension Class
Library (see software Development Item below).

- The facility reads Performance Data from the Windows NT Registry, injects a MFC DLL application into the address space of the target Server-process, subclasses the server's main window, and delegates window message handling to a separate Client-process via MFC-derived classes for inter-process memory sharing and thread synchronization.

- The Server code need not be re-linked to my facility.  All operations are performed dynamically at run-time, without any server cooperation.

 

 

PORTED A UNIX SYSTEM TO WINDOWS NT 3.51, WIN32 SUBSYSTEM

Programmer, for Bailey Network Management Systems, Inc.  October - November 1996.

Keywords: Microsoft Visual C++, Sockets, Pipes, Shared Memory, X-Windows events.

Summary:

- Over a dozen executables communicating via sockets, pipes, shared memory and X-Windows events were compiled under Microsoft Visual C++ 4.1 and linked to NutCracker (Data Focus, Inc.) for Unix-Kernel emulation and also to X-Windows server, and to GPHIGS (Open Productivity Graphic Systems) for graphics.

- Win32 named pipes and memory mapped files.

 

 

AN EXTENSION CLASS LIBRARY TO THE MICROSOFT FOUNDATION CLASSES (MFC).

MORE THAN 70 NEW OR MFC DERIVED CLASSES

Programmer, for Software Structures, Inc.  January 1996 - June 1996 and intermittent through June 1997.

Keywords: Microsoft Visual C++ for Win32, MFC.

Summary:

-  Currently consisting of more than 70 new or MFC derived classes.


 

SOFTWARE DEVELOPMENT AND PROJECTS  (continued)

 

 

- The following three items characterize the design of this library:

1.  Programs written for the Microsoft Windows family of Operating Systems (OS) execute as multiple-entry-point subroutines of the OS. MFC based programs must additionally respond as subroutines of the Application Framework.  Because of this multiple-entry-point character of event-driven code, a truly reusable class library must be written to alert a programmer of any "missing events" in a reuse of the library.  My extension library accomplishes this by instancing class CSxEnforce member variables (m_...), one per event-category required or expected by each base-class.  Base-class construction determines which events are required in order to deliver a programmer's functional specifications.  In a reuse of the library, a programmer naively derives from the class library making sure to specify all desired functionality to the base-class constructors.

2.    Having satisfied the compiler and linker, one or more trial runs will identify any not-received events, which the library will flag during destruction of the corresponding CSxEnforce variable.

3.    Base-class constructors accept a bit-masked long integer calling parameter, via which programmers specify desired base-class functionality.  The indicated bits are named using enumeration constants.  Two significant advantages are offered by such a design: (i) The code automatically documents which sections of it implement each functional characteristic.  All cooperating code sections are found by a global search of the name of the corresponding enumeration constant.  (ii) The proliferation of derived classes that alter the behavior of a base-class in some small way, is kept to a minimum.  Also, the occasional need for multiple inheritance is diminished.

4.    Virtually all library classes implement their own behavior.  Since the MFC message routing system does not inform each class of the occurrence of each event, my library routes to each class the occurrence of any relevant events.  In many cases this is accomplished taking advantage of ClassWizard's ability to generate resource Id handlers.

 

 

AN OIL FIELD ACCOUNTING SYSTEM (TOW) UNDER COBOL AND VISUAL BASIC GUIs FOR

WINDOWS 3.1, WINDOWS NT 3.51 AND OS/2 WARP 3

Lead Programmer and Designer, for VertiComp, Inc.  June 1994 - October 1994, March 1995 - January 1996.

Keywords: C++ / C Language, Visual Basic, MKS Kornshell, VBX (Visual Basic Control), Oracle 7 OCI (Oracle C Interface), ODBC 2.1 SDK, Watcom Embedded SQL 4.0, Microsoft Visual C++, PWB, Watcom C/C++ 10.5.

Summary:

- I wrote 12 DLLs (Dynamic Link Library), 2 EXEs (Windows Executable), 1 VBX and very many Visual Basic .bas modules and .frm forms.

-  Designed, developed and trained VertiComp programmers in technology required to port the user interface of a large existing Cobol application to a client/server environment against Oracle 7 (OCI), ODBC 2.1 and Watcom SQL 4.0.

- Object oriented techniques were applied to the Visual Basic code in order to maximize code sharing between dynamically instanced ("Inner"-) Forms (.frm).  Form-Sensitive I/O is supported by a body of DLL "and" VB code which is entirely Form-Insensitive.


 

SOFTWARE DEVELOPMENT AND PROJECTS  (continued)

 

 

- A VBX was written which supports data sharing and VB Event-firing between multiple VB executables.

-  Multiple-language display of user-interface strings was achieved using Windows string-table resources.

- A Kornshell facility was written to automate link-time Form and resource files modifications required to serve language strings for all VB Forms from a single DLL.

- A dynamic-SQL DLL interface to the DBMSs (Oracle 7 OCI, ODBC 2.1, WSQL 4.0) was written in order to hide complicated DBMS-specific I/O mechanisms from the Cobol and VB GUIs and other DLLs.

- A DLL facility supporting per-Cursor I/O to a local cache was written which may be configured for asynchronous I/O managed by a dedicated windows executable.

 

 

A GENERIC LIBRARY AND FACILITY FOR DEVELOPING VISUAL BASIC (or WINDOWS) USER INTERFACES FOR DOS PROGRAMS RUNNING IN A VIRTUAL 86 DOS-BOX UNDER 386 ENHANCED MODE WINDOWS 3.1.

Programmer, for Software Structures, Inc.  Feb. - May 1994; Feb. - March 1995.

Keywords: C++ / C Language, 80x86 16- & 32- bit Assembler Language, VXD (.386 Virtual Device Driver), VBX (Visual Basic Control), Visual Basic.

Summary:

- A pair of .386 Virtual Device Drivers and supporting Interrupt Service Routines (ISR) were written to post messages across virtual machine boundaries and to access Virtual Machine Manager (VMM) Services from either a V86 DOS-Box or the Windows System machine.

- A Visual Basic control (.vbx) was written to map Windows received V86 messages into VB's Event Space.

-  Complicated messages are passed through pointers to structures defined in the V86 machine, made addressable from the Windows System machine.

 

 

A REAL-TIME TSR MONITORING SYSTEM, WHICH DISPLAYS AND REPORTS ALL 8086 INTERRUPT-VECTOR ACTIVITY IN A DOS MACHINE.

Programmer, for Software Structures, Inc.  March - February 1993; November 1993 – February 1994.

Keywords: C++/C Language (TSR’d: Terminate-Stay-Resident), 80x86 Assembler.

Summary:

- A single interrupt handler installs itself on all PC interrupt vectors.

- Able to trace into-and-from all hardware and software interrupt handlers, irrespective of whether interrupt parameters are passed in registers or on the stack.

- For PC Text Mode, a Int 10h handler was written which on-the-fly repositions screen output in order to preserve the monitoring system's real-time tracing windows.

- System control and displays may be obtained under DOS or under WINDOWS, across DPMI Virtual Machines.


 

SOFTWARE DEVELOPMENT AND PROJECTS  (continued)

 

 

A C++ MACRO FACILITY WHICH AUTOMATICALLY GENERATES CODE FOR DEBUG-TRACING OF C++ CLASS, DATA AND FUNCTION MEMBERS.

Programmer, for Software Structures, Inc.  September 1993 - October 1993.

Keywords: C++/C Language, MKS Kornshell, 80x86 Assembler.

Summary:

- An environment of C/C++ preprocessor macros was written which when used to declare and define C++ Classes, generates member function debug-tracing Entry/Exit reporting code together with automatically generated assembly Language functions to report class-data values by member name, for all data types.

- The system relies in part on a Kornshell "h2inc" (*.h to *.inc) facility which, working in conjunction Microsoft Assembler's h2inc.exe, converts C++ declared Class information into assembly language macros and code.

- All generated output is call-level-indented.  Overloaded functions are distinguished.  Function entry/exit is reported quantifying the origin of the function call.  Data member values are reported in any specified (i.e. declared) type.  Output may be sent to DOS, BIOS, or WINDOWS.  The facility may be TSR’d.

 

 

A PC/WINDOWS 3.1 BASED SYSTEM FOR REMOTE CONTROL OF LOGIN ATTRIBUTES FOR NEW USERS IN A MULTI-PLATFORM CLIENT/ (UNIX, NETWARE, NET-GATEWAY, SYBASE, ORACLE) SERVER ENVIRONMENT.

Programmer, for Tenneco Gas, Inc.  March 1993 - August 1993.

Keywords: Microsoft C Language, ANSI C Language (on UNIX), MKS / UNIX Kornshell, Visual Basic, Netmanage's Newt/Chameleon TCP/IP socket library, Netware 4.0 SDK and Client API for C.

Summary:

- In a single operation, the system installs new users on any number of Netware, UNIX, Net-Gateway (on OS/2), Sybase, or Oracle (on UNIX) servers.  Synchronized user installation on identically configured UNIX "backup" server-pairs is also supported.

- Visual Basic code accesses Netware Connection and Bindery Services through a command-driven DLL interface to the Netware 4.0 SDK, CLIENT API FOR C.

- Visual Basic code accesses all other servers through a command-driven DOS executable running in a Virtual 86 DOS-Box, under Windows.

- From the DOS executable, using Novell's LAN WORKPLACE FOR DOS TCP/IP, UNIX and Oracle servers are accessed with Novell's Remote Shell (rsh.exe) while Net-Gateway and Sybase servers use Sybase's ISQL (isql.exe).  Before remote shelling, DOS standard handles stdout and stderr are redirected to files that collect output and error information.

- On UNIX servers, user attributes are manipulated by root owned Shell Scripts and ANSI C executables.  Oracle servers are accessed using SQLDBA command files prepared by the UNIX Shell Script, which manipulate tablespaces, tables, privileges and users.

- System Procedure calls directly issued from ISQL manipulate logins, databases, groups and users on Sybase servers and logins, connections, transaction groups and remote procedure calls (RPCs) on Net-Gateway servers.

- I also designed a Windows DLL-based Telnet interface between Visual Basic applications and UNIX or OS/2 hosted servers, using Netmanage's Newt/Chameleon TCP/IP socket library.

- The entire system is command-driven with full checking and reporting of any remote or local error conditions.


 

SOFTWARE DEVELOPMENT AND PROJECTS  (continued)

 

 

A GENERIC TSR DYNAMIC GRAPHING UTILITY WHICH GENERATES REAL-TIME ON-SCREEN PLOTS OF NUMERICAL RESULTS AS THEY ARE BEING WRITTEN TO A DISK FILE.

Programm