M Farid Zidan
Arlington MA ***74
*****.*****@*****.***
Education Bachelor of Science in Computer Science, Boston University, May
1990.
Graduation GPA 3.44.
Skills C++, MFC, STL, SQL & Database Management Systems, ODBC API,
PowerBuilder, HTML, XML and XSLT, Python, multi-threading.
3/03-present ISV/Developer, Zidsoft, Arlington
Develop Windows Client/Server database data comparison and
synchronization application CompareData using Visual Studio
C++, MFC, STL and native ODBC API. Support most of the popular
DBMSs including SQL Server, Oracle, DB2, Sybase, MySQL, etc.
Application is written in C++ front to back including UI,
business logic and backend interface.
. Use native Windows threads to implement heavily-threaded
architecture for enhanced performance. Use critical sections,
events and semaphores for thread synchronization and
messaging. Design and implement application where tasks are
performed in worker threads and UI thread is only used to
update UI; worker thread tasks include parallel data
retrieval, comparison, sorting, filtering, data
synchronization, generate synchronization script, SQL script
generation, saving comparisons as HTML and generating XML.
Implement cancel functionality for all tasks including tasks
that may be blocking executing SQL statement or waiting on
resource handles.
. Use custom-draw, owner-draw, owner data, gdi/gdi+, Windows
controls and Windows theme API to implement application UI to
support both Windows classic theme and Windows themed UI
. Update application UI to be DPI-aware and to support Windows 7
and non-ANSI user locales (including right-to-left locales)
. Use memory device context class to reduce UI flicker
. Design and implement animation of data retrieval, sorting and
progress using gdi+
. Design and implement properties grid UI component to support
embedding comboboxes, method-driven value properties and
static properties.
. Implement create-on-demand interface for UI objects to
minimize user-object/gdi handle consumption whereas the C++
class is created but its corresponding Windows object is
created only when necessary.
. Implement tooltips (ANSI/Unicode) for all applicable UI
objects including indicators, counters, truncated text, etc
and implement in-place tooltips for UI objects as appropriate
. Design and implement font caching singleton font class for
caching and sharing fonts among UI objects
. Implement compound keyboard shortcut keys (two key strokes:
Ctr+K followed by Ctr+M, for example) and implement
hiding/showing MFC application menu by using ALT key (like
IE8). Update MFC message routing to pass messages in an order
that is tailored to the application and where the object that
currently has focus gets first crack at processing the
message.
. Use MSXML xml parser COM object and XML/XSLT to implement data-
driven generation of SQL scripts
. Support ANSI and Unicode data retrieval, comparison,
synchronization, display and conversion by the application.
Interface application to UTF8 Scintilla text editor for text
editing/display and handle both ANSI and Unicode text
. Extensive use of C++ templates to implement framework for
working with compile time and run time database tables and
front end UI. Use functors, singleton, factory templates,
mixin, service classes, inheritance, virtual
classes/Interfaces to consolidate application code to enhance
code reliability and quality. Use custom C++ classes for
application enumeration objects to enforce compile time data
type checking of enumerators and enhance code quality
. Use C++ output streams for generating script previews and
writing to the file system and handling both ANSI and Unicode
data and supporting non ANSI user locales.
. Use STL container classes and algorithms for working with
database resultsets and application objects including building
of topological sort maps, sorting, filtering and breaking of
cyclic dependencies in order to synchronize data in the
correct order
. Design and implement custom classes for working with native
ODBC API for optimal performance for retrieval and update of
database data that is cross-DBMS and is 10 to 100 times faster
than ADO or 4 GL middleware including the use of bound
parameters, prepared sql statements and parameter bind offset
pointers (depending on ODBC driver support for the
functionality). Test application ODBC compatibility with 40+
different DBMS/ODBC drivers
. Update application to 64-bit Windows and target both 32-bit
and 64-bit Windows platforms as native platforms
. Implement memory handling for data retrieval, update and
synchronization with strong exception handling including
retrieval and update of ANSI and Unicode data and retrieval of
blob and binary data in chunks and creation of application
properly aligned data buffers, deallocation and efficient
copying/moving of buffers.
. Implement connection management classes to allow caching and
sharing of database connections and automatic closing of idle
connections
. Partition application into 11 dlls and one exe and separate UI
from business logic to enhance application modularity,
development and compilation/debug cycles
. Implement command line interface to application functionality
including support for internal scheduling of tasks and logging
of application runs and results to the application repository
DBMS
. Convert application from using PVCS version control to IBM
Jazz version control
. Use Sybase PowerDesigner for data modeling of the application
backend repository database for 10+ databases.
1/01-3/03 Senior Software Engineer, McKesson, Newton
Use Microsoft Visual C++ to develop and enhance high volume
data warehouse data loader that uses ODBC to validate and load
data into MS SQL Server, Oracle, and Sybase backends.
Integrate loader with third-party dlls for additional analysis
of loaded data. Create new C++ classes/architecture to
retrieve/update database tables using ODBC and significantly
enhance loader functionality and performance by implementing
logging and caching of lookup data.
5/00-12/00 Programmer/Analyst, Harvard Management Company, Boston.
Use PowerBuilder and Sybase to develop object-oriented
reporting architecture for mutual funds application PAM and
Sybase for the Trusts and Gifts group. Design and implement
data-driven replication of PAM tables into Sybase.
9/97-5/00 Sr Programmer/Analyst, Key Education Resources, Boston.
Use PowerBuilder and PFC with Sybase to develop object-
oriented school support module of client/server system for
maintaining school information. Design and develop
PowerBuilder GUI, Sybase TransactSQL procedures and triggers,
use Erwin for data modeling, integrate PVCS version control
for team-development, develop Python scripts to integrate
development environment, enhance and extend PFC. Merge custom
class library into PFC. Responsible for development standards,
applications, tools, and environment.
1/96-9/97 Client/Server Developer, InfoCellular, Inc. (Sema Group
Telecoms), Marlboro.
Work in team environment on PowerBuilder development of new
client/Server system using PowerBuilder, Oracle and Windows.
Develop reference management, configuration tables, inventory,
file import, and database transaction management modules.
Implement and enhance framework/class library for PowerBuilder
development.
7/94-10/95 Programming Support Programmer, Collaborative Medical Systems,
Waltham.
Design and program in Microsoft Visual C++ and MFC Windows
installation program for external editor interface to M
database system. Program invoice interface between company
internal M accounting system and new Great Plains Dynamics
client/server accounting system.