We provide IT Staff Augmentation Services!

Freelance Developer Resume

5.00/5 (Submit Your Rating)

SUMMARY:

I am a Senior Software Engineer with 30 years of hands on experience, having graduated magna cum laude with my bachelors degree in English. I am well - acquainted with OO design patterns and have used them in developing middleware and client-server applications. I take great pains to make my code as simple as possible and to relieve my code of bottlenecks to achieve fast execution. My greatest strength is in C++, though I am highly proficient in several languages. I have been a participant in the entire software development life cycle.

TECHNOLOGIES:

Programming languages: C/C++, C#, Python,Visual Basic, Java, JavaScript, PHP, Delphi, Intel x86 Assembly, x64 Assembly, gcc

Databases: Oracle, Sybase, MySQL, CouchDB, Redis, MS-Access, Paradox, dBase

Operating Systems: Windows 7 (x86/x64), Vista, 2000/NT/XP/98/95, Ubuntu10.04 and 12.04, Sun Solaris, HP UNIX

Other: Windows Kernel Driver Development, PySphere, Volatility, Hadoop, ActiveX, STL, ATL, COM, MS-Word, Google protocol buffers, AWS

Source Control: Subversion, Mercurial, Git, Visual SourceSafe, Rational ClearCase, cvs, rcs

PROFESSIONAL EXPERIENCE:

Freelance Developer

Confidential

Responsibilities:

  • Installed and configured Tomcat and dSpace for digital archiving and access of library documents online.
  • Configured Apache web server to support an https connection to prevent sensitive information to be sent in plain text. Configured PhpMyAdmin to use only SSL. Set up ssh authentication to be with private key only.
  • Wrote custom script for upload of Excel spreadsheet into MySQL database, eliminating non-English websites from url included in spreadsheet. Documented instructions to create database and load table data on local server.
  • Create website up to upload Excel spreadsheet, parse out duplicates on full record match, and address-zip match. Designed so user could drag an drop from incoming data from existing records in database to modify, replace, or add new record. This was done using JavaScript, JQuery, Ajax, bootstrap, PHP and MYSQL.
  • Created fillable web form based on a Excel spreadsheet for customers to fill out their weekly, monthly expenses and submit them via email for evaluation. This was done using JavaScript.
  • Creating C extension modules for PHP.
  • Building Android apps.

Confidential, Lexington, MA

Subcontractor

Responsibilities:

  • C++ middleware developer to facilitate the passage of data received from ZC706 fpga board installed with Petalinux for monitoring system memory, processes, and hard disk usage to a Python application via RabbitMQ message bus. This was a high performance multi-threaded application requiring realtime precision to the microsecond using pthreads, callback functions, and poll whenever an event occurred on a connected socket .
  • Developer for the Cyber Grand Challenge test team.
  • Developer for a program that required the creation of several Windows kernel and lower-level filter drivers that hid running applications, files, directories, registry keys and walked the VAD tree to discover and modify a privately allocated region of a process's memory. Wrote numerous applications in C, C++, C#, Python, and PowerShell. Most of the C and C++ binaries compiled as both 32-bit and 64-bit binaries to run on 64-bit Windows 7. Part of the purpose behind these drivers and applications was to test the ability to capture the full state of a 64-bit process, as well as a 32-bit one, running in the WoW64 subsystem, including, among many other things, what handles it opened, what files it wrote to, and registry access. For each binary, or in some cases multiple binaries (i.e., client/server), a test case was prepared in Python with PySphere and Volatility to upload and execute the binaries from one or more clean, target VMs. Volatility used memory dumps to compare the original state of the application with the recreated state. Used Mercurial source control system during development.
  • As a developer on the Cyber Genome test team, was a major contributor to the development of Helix in Python and C/C++ and the author of a large percentage of both its Python generator modules, and its malware-function modules in C/C++ . The Python modules descended from the Cmd module to allow a user to specify the combination of functionality to be built with the C++ compiler, MSBuild. Using a modular approach similar to the Metasploit Framework, the numerous C/C++ modules, each exporting one or more functions, could be combined into various ways with other modules to create diverse variants of malware, having the cyber equivalent of similar phenotypes and related genotypes. Using these malware variants that were generated, it was the performers' responsibility to develop the equivalent of fingerprints, digital DNA, for these binaries and to identify relationships between binaries: common family, ancestors, lineage and provenance. This was part of DARPA's effort to develop new cyber-forensic techniques to protect DOD's information and information systems from attacks.
  • Developer for a program testing the detectability of enhanced steganography when applied against various digital formats. Using different length n-grams collected from a large test corpus used as training data, wrote Hadoop MapReduce applications in Java using Eclipse on Ubuntu 12.04 to process multi-terabyte data on large clusters. These applications applied n-gram models to calculate the probability distribution of a next word occurring given histories of the occurrences of particular n-grams in what appeared to be ordinary text files.
  • Developer in a program testing the detection of malware running under Windows XP. Developed both a statically-linked and a dynamically-linked C++ library to establish cyber situational awareness (SA) and other functionality for generating variants of malware. The generated malware, with its given functionality, was used to simulate cyber attacks on a machine. Included in the library were APIs and classes for the hiding of files, process injection, DLL injection, launch on reboot, detection of running applications, running services, and detecting network activity (i.e., IP addresses, source and destination udp and tcp ports, PID number and the application assigned to it). Much of this functionality was to help a malware process avoid detection.
  • Borrowing some code from the Internet to alter the entry point of a compiled binary, wrote a polymorphic engine using C++ and Intel x86 assembly to encrypt the code section of an application each time it was run. For the program above, this tested the detection of running malware generated from a previously encrypted binary. The encrypted application would decrypt itself using the code in the new entry point, run some arbitrary code inserted by the engine, then jump to the old entry point to resume execution. The engine could encrypt any 32-bit application (i.e., notepad.exe) and it would appear completely normal when launched.
  • Took over responsibility for the Windows development of the Lincoln Adaptable Real-time Information Assurance Testbed, LARIAT, extending previously written software used to simulate realistic user sessions based on models developed according to usage patterns for many common services and protocols in an MS Windows environment. In addition to expanding and improving the functionality of the probabilistic actions a simulated user might take for running applications, also created a deterministic version of user sessions for the timing and order of all actions for any given application (i.e. Explorer, PowerPoint, Excel, Outlook, Internet Explorer). This required extensive work on both the LARIAT GINA, as well as the Windows LARIAT client. Later development included expansion of LARIAT for use in Windows Vista, and later Windows 7 with the development of the LARIAT credential provider, which would get loaded in place of the LARIAT GINA on these OSs and load all the required session information for the user sessions. Most relevant skills used were C++, COM, design patterns, Windows OS.

Confidential, Bedford, MA

Senior Software Engineer

Responsibilities:

  • Converted all Sign-On Manager (SOM) UI code that had been written using low-level GDI calls with a new set of classes that use the C++ ATL/WTL libraries;
  • Updated Welcome and Workstation Locked dialogs to support the new thin client version of SOM, such that the dialogs appeared and behaved differently depending on whether the user connected locally or connected via RDP. Designed these dialogs using a combination of the strategy and abstract factory design patterns.
  • Fixed several bugs in Confidential Security Center.
  • Rewrote original GINA used for automation testing of the SOM GINA by QA. This rewrite, which was done using a combination of the strategy and abstract factory design patterns and class templates, enabled QA to test numerous logon scenarios, including negative and cancel scenarios.
  • Wrote C# console applications to unit test various COM interfaces and exported functions for SOM.

Confidential, Wakefield, MA

Custom Development Engineer

Responsibilities:

  • Responsible for the documentation and installation of custom Visual Basic HL7 interfaces for surgical scheduling, preference card maintenance, perioperative documentation, supply chain management, and billing .
  • Built a C# application to upgrade HL7 configuration files to the newer format required by the latest version of the PicisMessenger HL7 interface. This consisted of merging in the new sections, items, calculated items, sub-calculated items, segment counter fields and duplicated fields, adjusting for new field lengths, and special fields. Previous to this undertaking, development would undertake the merge manually for each hospital site that required the upgrade. The upgrade done manually would take anywhere from four to eight hours. This C# application reduced the upgrade to a few seconds, significantly freeing a developer's time to focus on development.
  • Troubleshot HL7 interface bugs as needed.
  • Trained personnel on interface installations, setup, and troubleshooting.
  • Interacted with clients and participated in weekly meetings to get sites configured and running with the interfaces installed.

Confidential, Bedford, MA

Senior/Principal Software Engineer

Responsibilities:

  • Shortly after taking over the project, which had been a year in the making, reduced the overall application startup time from 45 seconds to four seconds. Reduced the simultaneous startup of 35 instances of the application on separate machines in a newspaper production environment accessing the same Oracle server from 2.5 hours to 13 seconds. This was achieved by removing the bottlenecks in the code that had been caused by repeatedly opening data sources to the database where only a single shared data source was necessary, and also repeatedly revisiting the same tables to grab a single row of data. Switching to a shared data source and caching the tables' row data in simple vectors and maps made the code fast code. Having accomplished what was said to be "impossible," crucial accounts for the company were saved.
  • Created a formless interface wherein the ACE ActiveX control was unwrapped and stripped of its GUI interface and converted to a simple COM object called XMLDoc. The XMLDoc control was then integrated into a C# web service. Developed the C# web service such that it would query the Oracle database using the C++ AdEditorSrv COM DLL to get styleset information it needed to load a document via the XMLDoc control. The development of this C# web service also involved the creation of, and firing of, events from the C++ components within the web service. Once the document had been successfully loaded by the web service, it could then be displayed within a web page.
  • Developed a C# web client and PHP web service. The PHP web service was designed to receive changes made to a CVS project locally and to commit these changes on the server in the case where a firewall blocked direct access to the CVS server. After the changes were committed by the service, the client could then checkout the changes to update with the latest comments for the sources locally.
  • Major participant in the development of an alternate XMLStyler which interacted with a C# web service, which would parse the XML in the document and fill a grid control in XMLStyler with its results. Applied OO design patterns where appropriate.
  • Worked closely with the beta engineer and QA in fixing bugs and was the major contributor in developing the best OO design approach for any enhancements which were requested. Successfully eliminated all major bugs in the application. Suggested and applied OO design patterns whenever suitable to do so.
  • Interacted weekly with third party support engineers in discussing and resolving bugs in their software as well as developing effective workarounds in our own for ACE.

Confidential, Lexington, MA

Software Consultant

Responsibilities:

  • Developed a Visual C++ console client for the uploading of deals into OMS from an Excel spreadsheet via FTP or socket. Deals sent via FTP would have a GUID appended to the end of the name to prevent overwriting another file in the destination directory. Deals sent via socket would be wrapped in XML tags. Assisted in the development of the Java socket server for table insert using JDBC on the Unix Sun Solaris side. Successful and failed uploads were backed up on both the Windows client and Unix server side and logged.
  • Assisted in the move of OMS from its current Unix production machine to a certified Unix box, the certified box being required for the supported install of MQ series. Chief responsibilities included writing Unix shell scripts and C programs to locate and update preexisting scripts and configuration files with a changed Sybase server name, domain name, web server and directory structures.
  • Responsible for the install of EBS/Reuters software on a Unix machine in Tokyo for upload of deals in OMS.
  • Responsible for the install of DDN software on a Unix machine in London for upload of deals in OMS.
  • Led weekly meetings for the mentoring of fellow engineers regarding the OMS system.
  • Interacted daily with money market vice presidents, traders, Unix system administrators, and Sybase database administrators to resolve production issues as they occurred.

Confidential, Burlington, MA

Senior Software Engineer

Responsibilities:

  • Built Semiautomatic module for image authentication for customer login to a Windows 2000 server for eTrue.
  • Developed a COM+ pooled object which interacted with a Windows 2000 COM dispatcher service.
  • Wrote dispatcher service, which performed Oracle database table lookups using OLE DB to lookup available service representatives to connect to via Windows sockets. When a service representative responds with a Go/NoGo on authentication, this information is passed back through the socket to the service and then back to the COM object. All of the COM/COM+ objects and services are built using VC++ 6.0 and ATL.

Confidential, Andover, MA

Senior/Principal Software Engineer

Responsibilities:

  • Wrote requirements document and functional design specifications document for the GUI application, CIM 2000, the Custom Install Manager for ViewNow 2.0, then distributed to managers and team for review. Updated this specification document according to suggestions and when needed. Prepared schedule for said application using Microsoft Project. Originated and completed prototype using Visual Basic 6.0. Created simple ATL object interfaces for CIM 2000 with Visual C++ 6.0. Prepared TLB to be used by CIM 2000 for localization purposes and use of system DLLs. Used above TLB to make specific system calls using structures defined in the type library that could not otherwise have been passed or defined using VB with UDTs. CIM 2000 uses the Microsoft Windows Installer (MSI) COM object to access the database and modify its tables via SQL.
  • Implemented a sink in VB for CIM for an interface created in C++. This sink was used for the parsing out of a directory/file name string for a file, which an administrator might want to add to a custom ViewNow installation via CIM. The parsed out folder names would be passed back to the VB end of CIM to be inserted into the MSI Directory table for the open database, assigning a GUID to each as the primary key. This was for the facilitating of rebuilding the directory structure during an install. These folder names would also be used to replicate the structure in the install.
  • Wrote custom actions for ViewNow 2.0 using MSI technology and Visual C++ 6.0. Custom actions correspond to DLL entry points, which accept a handle to the open MSI database. Each DLL resides in the Binary table and is extracted when a custom action is executed.
  • Wrote code to interface with COM in the ViewNow un-install to remove the object store for ViewNow 1.0.
  • Devised sorting algorithm using STL to speed ViewNow un-install application from several hours to four minutes. This was achieved by rewriting the un-install application such that when it first read the two-megabyte installation log, it stored the offsets within the log for each tag in the file that corresponded to a path value that needed to be removed. The offsets were then sorted alphabetically by tag. When the application then needed to read all the data pertaining to a particular tag (which had been written out in numerous places in the log file), the application merely needed to move the file pointer to the respective offset stored in the vector to get the needed information to un-install a particular item. This made for very fast code, for the application did not have to repeatedly read through every line in the log file each time it needed to un-install a particular part of the ViewNow Suite.

Confidential, Burlington, MA

Senior Software Engineer

Responsibilities:

  • Taught in-house classes for the training of operations staff.
  • Worked with external clients and internal resources to develop solutions to requirements between companies.
  • Largely modified RTOS.EXE, an GUI executable built with Visual C++ 1.52 for the extracting of new claims received from providers via the Confidential Provider Network (IPN) 3.0, and for the logging of initial status and audit information for these claims in the All-Payer Access database. RTOS used a provider/payer routing table to determine the destination of a claim received by the server, that is, what clearinghouse or payer to upload the claim to.
  • Created the GUI application, TranTrak, using Visual C++ 4.2 for the parsing of reports received back from clearing-houses. The parsed data would then be logged in the All-Payer Access database for the updating of claims' statuses and the generating of feedback reports/records to providers.
  • Created BatchReply using Visual C++ 1.52. BatchReply is a utility that takes the records generated by TranTrak, creates email messages and places these in the FormConnect queue for later transmitting back to providers.
  • Developed an ActiveX control using Visual C++ 5.0 that duplicated the parsing behavior of TranTrak and logged these entries in an Oracle 7.3 database. This represented the beginning of an effort to port the entire database to Oracle.
  • Designed a GUI Delphi 2.0 application for the recording of provider/payer enrollment and destination information. RTOS uses this information in its processing of individual claims. The application was later upgraded to Delphi 3.0. The application also incorporated an ActiveX control that exposed helper functions, one of them that would display a payer list to select from when entering a new enrollment record.
  • Developed several reports and associated GUI forms using Access 2.0 and 95. Many of these were later ported to Visual Basic 5.0 and Crystal Reports.
  • Wrote a map using Mercator to map the IPN 4.0 tag/values to IPN 3.0 claim records to enable processing of these claims in the All-Payer claims server.

Confidential, Cambridge, MA

Software Contractor

Responsibilities:

  • Updated legacy code for CheckCite for DOS 4.0, that was built using Turbo C 1.0 and Microsoft C 6.0.
  • The purpose of this was so that CheckCite could recognize the new screens of data sent to it via modem from Lexis.

Confidential, Londonderry, NH

Senior/Principal Software Engineer

Responsibilities:

  • Designed the ECM GUI dialogs and the associated code to allow the user to view and change various ECM parameters, for the Windows application, INSITE, using Borland C++ 4.0 and Paradox Runtime Engine 3.0. INSITE is a service tool of Cummins Engine Company sold internationally that reports, monitors and extracts data from, and sets parameters for, truck engines.
  • Consolidated all the error-message help files for all the INSITE ECMs into one help file using ForeHelp to facilitate translating into different languages.
  • Completed INFORM, as principal engineer, using Borland C++ 4.0, OWL, and Paradox 5.0 ObjectPal. INFORM was a GUI application designed to take data that was extracted from an ECM using INSITE and break this data down in averages over a period of weeks, months, quarters, and years. The Borland C++ front end communicated via a dynamic link library and a Windows timers with ObjectPal back end. The ObjectPal code generated reports based on the INSITE data extracted from truck ECMs using parameters passed to it by the C++ front end.
  • Created a DLL that would display a splash screen with a gauge control whenever INFORM was started and then start the Paradox Runtime in the background before INFORM appeared on the screen.

We'd love your feedback!