Software Developer

I am a C and C++ programmer with over 25 years of experience of software development. I have a strong track record of using my C++, UNIX and SYBASE skills to help clients in different industries. I have also developed my own innovative software for crossword solvers and crossword constructors on Microsoft Windows platforms using Borland C++Builder.

I am always interested to hear from clients who need my programming skills. I'm willing to commute to client sites in Northeastern Pennsylvania and the southern tier of New York, or do telecommuting work. I am a permanent resident of the US. Please contact me if you would like to work together on a project.

Crossword Software Development

TEA Crossword Helper

TEA Crossword HelperTEA Crossword Helper finds clue answers based on known letters and other information, such as letters that might be anagrammed. It was developed in 1992 and now has thousands of customers worldwide.

The power of TEA comes from its pattern language, which I devised as an extension of conventional regular expression matching. Simple concepts such as template matching, anagram matching, choice lists and letter variables can be combined in a variety of ways to help solvers find the right answer.

TEA also functions as a Dictionary and Thesaurus and comes with the WordNet® database, Webster's Revised Unabgridged Dictionary and many other resources.

My other objectives for the product were comprehensiveness and performance: TEA now has over a million words and phrases and continues to be expanded as new answers come to light, but only takes around 1 second to search the entire list.

TEA is written in C++ using Borland C++Builder and runs on Windows XP and Windows Vista. It uses the Borland Object Windows Library (OWL), Visual Component Library (VCL), and the Win32 API.

Sympathy Crossword Construction

Sympathy Crossword ConstructionSympathy Crossword Construction is used to make crosswords. It was first released in 1994 and has revolutionized the crossword creation process, allowing constructors to create higher quality results in less time.

Sympathy supports all the major types of crossword and allows constructors to fill their grid in several different ways: its automatic filling algorithm uses innovative datastructures to give lightning fast fills; you can also fill interactively, for precise selection of answers. It has unparalleled support for thematic crosswords, catering for all of the standard gimmicks such as misprints and rebuses; you can also restrict answers based on TEA's patterns.

Sympathy gives you fine control over the grid image, allowing you to change the appearance of text and graphics as necessary for thematic crosswords. It has been used for almost all Listener Crossword grids for many years and serves the needs of several other crossword series.

Sympathy also helps constructors at the clue writing stage: it incorporates clue databases, allowing you to automatically use available clues for an answer, avoid reusing previous clues, or just refer to back to them; the Wordplay Wizard (also available as a separate application) tool helps you write cryptic clues.

Sympathy is written in C++ using Borland C++Builder and runs on Windows XP and Windows Vista. It uses the Borland Object Windows Library (OWL), Visual Component Library (VCL), the Win32 API and SQLite.

Main Skills

C (9 years)
C++ (11 years)
UNIX (HP-UX, Solaris 2, SunOS, Linux) (11 years)
SYBASE (SQL, stored procedures, isql, Open Client, Open Server) (4 years)
Microsoft Windows NT4, XP and Vista (6 years)
X Windows (6 years)
OSF/Motif (2 years)

Other Skills

Languages
HTML, SQR, Shell (sh, csh, ksh), perl, lex, yacc, awk, nroff, assemblers

Libraries
Rogue Wave Tools.h++ and DbTools.h++, STL, Win32 API, Borland OWL, VCL, SQLite

Tools
Borland C++Builder, Rational Rose

Techniques
Object-Oriented Analysis and Design, Use Case Approach, Unified Modelling Language

Consultancy Projects

My most recent consultancy clients were:

MCI WorldCom October 1998 - April 2000
Role: Analyst Programmer
Development of phone call rating, billing and reporting components in CSB - a Telecommunications billing system based on a SYBASE database. Analysis and implementation of the UK National Code and Number Change strategy. Development of Stored Procedures using SQL, use of isql and SQR; programming in C and C++ on HP-UX UNIX, interfacing to SYBASE Open Client and Open Server.

Credit Suisse First Boston Bank July 1998 - October 1998
Role: Consultant
Development of a S.W.I.F.T. interface, middleware classes and data feed conversion modules for the PowerRec back office reconciliation system, based on a SYBASE database. Development of Stored Procedures using SQL, use of isql; programming in C++ and perl on Solaris 2 UNIX, interfacing to RogueWave DbTools.h++, Tools.h++ and S.W.I.F.T. via the ST400 Parallel Application Interface using DECnet TLI.

Global Markets IT, Midland Bank plc January 1997 - December 1997
Role: Analyst Programmer
Full life-cycle development of GME Phase 2 - a system for collecting, maintaining and distributing Interest Rate curves, based on a SYBASE database, with background processes on HP-UX and an NT user interface. Object-Oriented Analysis and Design with the Use Case Approach, Unified Modelling Language and Rational Rose; Database Design and development of Stored Procedures using SQL, use of isql and SQR; programming in C++ on HP-UX UNIX, interfacing to RogueWave DbTools.h++, Tools.h++, Reuters and Telerate via Teknekron TIB.

Nomura Research International - Europe July 1996 - October 1996
Role: Analyst Programmer
Development of modules for calculating and displaying Funding Allocation and Cost of Carry figures - part of the Middle Office functionality in the Strategic Project, based on SYBASE. Programming in C++ on Solaris 2 UNIX; development of Stored Procedures using SQL, use of isql.

Lehman Brothers Inc June 1994 - June 1996
Development of the LAURA international fixed income Trading System, based on SYBASE; specializing in GUIs (browsers and entry screens) and external price feeds to Reuters and Bloomberg. Programming in C++ on SunOS UNIX and Solaris 2 UNIX, interfacing to X Windows and the OI C++ library, Rogue Wave Tools.h++, ToolTalk, Reuter SSL, DB-Library, Open Client and Open Server; development of Stored Procedures using SQL, use of isql.

LIFFE January 1994 - April 1994
Role: Analyst Programmer
Design and development of a prototype GUI front end for the ATS options Trading System. Programming in C++ on Solaris 2 UNIX, interfacing to X Windows and OSF/Motif; use of UIM/X.

AMP Group Ltd August 1993 - December 1993
Design and development of ICL's TANKERPower, an Oil Industry application for scheduling road tankers, using an ORACLE7 database. Programming in C++ on Solaris 2 UNIX, interfacing to X Windows and OSF/Motif; use of X/Designer and SQL*PLUS.

Digital Equipment Company Ltd November 1992 - July 1993
Role: Unix Analyst/Programmer
Consultancy to third party software developers porting applications to OSF/1 UNIX on DEC Alpha AXP workstations. Programming in C and C++; interfacing to X Windows and OSF/Motif. UNIX Device Driver porting.