A cross-platform application database software consultant with an obsession for data integrity (not losing data) and data security, as well as an interest in improving simplicity.
Worked with some other languages: Objective-C, C#, CoffeeScript, TypeScript
Past experience with agile development at an informal level.
Contributed improvements to modern frameworks such as Apache Cordova (was PhoneGap), React Native, and Node.js
HISTORICAL: Learned programming at 10 years of age; self-taught 6502 assembler at 11; educated in mechanical, electrical, and computer engineering; event-driven programming for over 20 years.
Open source work
Under direct ownership
- github:brodybits/prettierx - a fork of Prettier which supports some additional wanted features
- github:brodybits/create-react-native-module - a tool to create a React Native library module or native view component, with a single command
- github:react-recompose/react-recompose - an updated fork of Recompose ("utility belt for function components and higher-order components")
- github:brodybits/react-primitives-input - adds a cross-platform Input element to react-primitives for React Native and react-native-web
- github:brodybits/react-primitives-scrollview - adds a cross-platform ScrollView element to react-primitives for React Native and react-native-web
- github:brodybits/react-universal-xp - a universal interface to React Native and react-native-web, as an alternative to react-primitives
- github:brodybits/react-primitives-core - another alternative to react-primitives that includes support for Input and ScrollView elements react-native-web, as an alternative to react-primitives
- cordova-sqlite-storage - widely used SQLite storage component for Apache Cordova on Android, iOS, and Windows, available under permissive MIT license
- cordova-sqlcipher-adapter - version with SQLCipher encryption support included, available under permissive license terms
- cordova-sqlite-evcore-extbuild-free - enhanced version of cordova-sqlite-storage with Android platform implementation mostly reimplemented in C for major improvents in performance and memory resource usage, available under GPL V3 or commercial license options
- github:storesafe/cordova-plugin-sqlite-evplus-ext-common-free - based on cordova-sqlite-evcore-extbuild-free with support for extra-large result data for Android and resource usage enhancements for iOS (available under GPL V3 or premium commercial license options)
- github:brodybits/cordova-sqlcipher-evplus-ext-build-free (unstable) - based on github:storesafe/cordova-plugin-sqlite-evplus-ext-common-free - with SQLCipher included for encryption support (available under GPL V3 or premium commercial license options)
- cordova-sqlite-evmax-build-free - based on github:storesafe/cordova-plugin-sqlite-evplus-ext-common-free - with support for storing super-large data batches on Android (tested beyond 1 million records) (available under GPL V3 or super-premium commercial license options)
- github:brodybits/react-native-sqlite-plugin-legacy-support - updated port of cordova-sqlite-storage to React Native
- github.com:cordova-ccafix/cordova-plugin-client-certificate-support - support for client certificate authentication on iOS and Android
- github:xmldom/xmldom - issued releases for security other bug fixes
- Apache Cordova - helped with some urgent maintenance releases; community support via GitHub
- jasmine-node - maintenance of the legacy github:mhevery/jasmine-node project that is still in use by more than 19,000 dependents
Other major contributions
- github:prettier/prettier - updates to pass type checking via TypeScript compiler with JSDoc comments; updated some dependencies; other minor refactoring
- github:lelandrichardson/react-primitives - a couple minor fixes
- github:nodejs/node - resolved a few build warnings in December 2016
- github:andpor/react-native-sqlite-storage - React Native SQLite component that was based on cordova-sqlite-storage
- github:grommet/grommet#3029 - porting of the Grommet framework to react-primitives for seamless support of use over web and React Native
Cross-platform mobile app consultant, Brodysoft LLCDecember 2017 - present, Providence, RI
Cordova SQLite plugin enhancements to avoid possible data corruption
- Patched commercially licensed plugin versions to avoid a minor data corruption issue that was discovered to be lurking in SQLite 3.35 (this was fortunately not needed in the permissively licensed plugin versions) ref:
- sqlite.org/forum/forumpost/ac6086ecde66f1c4 - info received in response to a followup question by Chris Brody
- Updated all supported Cordova SQLite plugin versions to activate "defensive" flag for all database connections ref:
- Added an EXTRA DURABLE build setting to improve robustness against corruption in all plugin versions, as discussed in: github:storesafe/cordova-sqlite-storage#736
- Implemented workaround for a transaction problem discovered with multi-page apps, with potential data loss: github:storesafe/storesafe/cordova-sqlite-storage#666
Customer-specific Cordova SQLite plugin features
- New BLOBFROMBASE64 function to help store binary image data in a consistent manner for Android, iOS, and Windows
- New cordova-sqlcipher-evplus-ext-build-free version (see above)
- New plugin version with support for SQLCipher and PouchDB, including a workaround needed for null characters in generated keys
- Enhanced UPPER and LOWER functions to support EU characters
- Support browser-based testing using SQL.js
- Improved error reporting with additional diagnostic information on Android and Windows
- Internal optimizations for large SQL batches
- Client certificate authentication support for iOS, as discussed in github:johannes-staehlin/cordova-client-cert-authentication#5
- Contributions to React Native ecosystem (see above)
Remote software contractor, NewNetMarch 2017 - November 2017
- Implementation and automatic testing of rule-based GSM address conversion enhancements to SMS (text message) router.
- Specification and design of SMS router enhancements to support rule-based Unicode character conversion feature for both store-and-forward and inter-operator messaging paths.
- Reproduction, analysis, and resolution of other software issues using Perl-based systems testing environment.
Freelance software consultant, Brodysoft LiteHelpersSeptember 2014 - December 2017, Amsterdam
Customization and other client projects for Cordova:
- New BASE64 function needed to select MBTiles image data from sqlite with a consistent API on Android, iOS, and Windows.
- Promise-based API wrapper to support the needs of a client using the Oboe.js library.
- Enhancement to cordova-plugin-download-manager to support concurrent downloads on iOS.
- Reimplementation of Android sqlite batch processing in C for improved performance, available under GPL and commercial license options. The commercial license was sold to multiple customers, with and without other customizations.
- Integration of sqlite plugin for offline storage and data synchronization with an existing mobile mapping application.
- Special version with support for use within web workers.
- Priority support to deal with special characters on iOS.
- Pro-bono solution for memory issue with large SQL batches on Android, available to others under GPL V3 and commercial license options.
Cordova/PhoneGap sqlite plugin for Android, iOS, and Windows:
- Consistent API across all supported platforms, based on the W3 SQL API specification.
Provided in response to some limitations of the standard WebKit SQL library:
- Low database limits (was 5 MB, now about 20 MB);
- WebKit SQL library not working consistently for all Android device versions;
- Cordova-provided mechanism to synchronize WebKit SQL database with iCloud and other backup mechanisms is prone to failure upon app or device crashing.
- Free and commercial support.
- Version to support SQLCipher on Android, iOS, and Windows UWP (desktop and mobile)
Senior software consultant, NewNetAugust 2012 - September 2014, Amsterdam
- Enhancements to the SMS router to support routing of mobile-originated traffic to multiple SMSCs with priorities and weights.
- Addition of IP SMS gateway with IMS (SIP) to existing SMS router.
- Maintenance and new feature development for GSM SMS products.
- Coordination with teams in multiple countries.
Freelance programmer, BrodysoftJanuary 2012 - July 2012, Amsterdam
Rapid development of a consumer mobile app for iPhone and Android using JQueryMobile and PhoneGap:
- Included PhoneGap plugins for local notifications, localization (translation), and native sqlite interface for iOS and Android.
- Use of native sqlite interface on IOS to ensure the user data integrity in backups by iTunes and iCloud.
Senior software consultant, TekelecJune 2011 - December 2011, Amsterdam
- SMS router enhancements for signature insertion: adaptation of existing Text Insertion Engine to include signature that may be configured by the user; adaptations of SMS Segmentation and Reassembly to handle extra segments between GSM and SMPP.
- Enhancement of auto-reply mechanism to work with SNMP configuration attributes and router event logging.
Freelance consultant, Instant AppsJuly 2010 - March 2011, Amsterdam
- Rapid exploratory development of web-based applications on systems such as the Google App Engine: Developed a demonstration of instant messaging on the Google App Engine in Python within 3 days.
Software innovation engineer, AcisionJune 2007 - April 2010, Utrecht area (greater Amsterdam area)
- Custom instant messaging (IM) gateway cluster between IMPS and SMS.
- Created an interface between the C++ code and Java-based MSRP entity.
- Rapid replacement of HP SIP messaging interface with open-source library.
- Added external application interfaces for message submission, delivery, and feature services over SOAP XML interface.
- Provided seamless support for GSM SMS messaging between a user on a GSM network and the SIP/IMS (IP Multimedia Subsystem) network.
Senior software engineer, LogicaCMG WN (predecessor to Acision)April 2004 - June 2007, Utrecht area (greater Amsterdam area)
- Integration of SS7-over-IP components with SIP-enabled message application server.
- Specification, development, and integration of SS7-based mobile messaging components for the interoperation of GSM-based mobile messaging devices.
- Addition of CDMA WEMT (Wireless Enhanced Messaging Teleservice), which uses 3GPP GSM-SMS User Data Header (UDH) parameters to enable concatenated messages and other GSM Enhanced Messaging Service (EMS) features.
- Control of newer CDMA SMS message optional parameters such as Language Indicator and Call-Back Number by O&M (operations and maintenance) interface.
Consultant, LogicaCMG WNJanuary 2003 - March 2004, remote (USA)
- Integration, installation, and upgrade of multi-network SMS systems.
- Multi-network SMS systems for GSM, TDMA, and CDMA.
- Custom installation and upgrade jobs for Latin America and major partners.
Senior software engineer, CMG (a predecessor to LogicaCMG)October 1998 - December 2002
- Interface Compliancy Statements & system requirements specifications for new GSM, CDMA, and TDMA SMS features.
- Development, customization, and on-site network integration of new CDMA SMS interface for China and USA.
- Rapid development of a replacement for licensed ANSI-41 (IS-41) SS7 mobile application layer in response to performance issues in the field, which enabled much faster development of custom features for the Chinese market.
- Rapid development of two-way mapping between mobile directory numbers and ANSI-41 mobile identification numbers, which worked the first time after overnight installation on a live network in Latin America and was used in all other markets for TDMA & CDMA SMS.
- Development and field testing of TDMA SMS interface in Latin America.
Software engineer, FujitsuJuly 1996 - October 1998, San Jose CA
Telecommunications network management (TNM) of fixed-line telecommunications networks and network elements:
- CORBA modelling and management of newer Fujitsu network elements.
- Graphical management of subscriber line connections.
- Prototype of shelf-view and cross-connect view in Java to demonstrate similar capabilities to the existing C++ version.
- Maintenance and new features for network map, shelf, and cross-connect views in the Stanford-originated InterViews GUI framework. Evaluation of integration with newer-generation Fresco GUI framework.
Software and computer engineer, Sanders (later bought by BAE)November 1994 - June 1996
- Modelled and developed real-time applications for innovative network protocols: Scalable Coherent Interface (SCI) inter-processor connectivity enhancements and embedded systems communications over Myrinet.
- Worked on visualization of high-performance computation applications over X-Windows.