My Projects
Here is a small sampling of some of the projects that I have developed and am working on.
Desktop Applications
-
- Drag and drop PDF files onto this app to run optical character recognition on them. Produces both plain text and searchable PDF output.
-
- Converts PDF files with tabular data into spreadsheets.
Mobile Applications
- Comic Checklist
- A checklist to help you keep track of your comic collection.
- iOS
- Android Full Version, Lite Version
Development Tools
PHP
Xataface
Xataface is a PHP application framework that I built originally in 2005 to simplify the process of building data-driven applications. It allows you to set up a fully-functional database application with only a few lines of code and it gives you the flexibility to customize the application’s look and behaviour in any way you choose.
Modules
The following is a selection of modules that I have developed to extend the functionality of Xataface.
- Tagger Widget
- Adds a widget that allows you to add/remove related records directly inside the new/edit form.
- Github Repo
- Email
- Adds a “Send Email” action to selected tables that allows you to send mail-merge emails to any found data-set in the application.
- Github Repo
- Translation Memory
- Adds translation memory and improved translation form for Xataface applications that are configured to be multilingual.
- Github Repo
- Google Maps Widget
- Adds a “map” wiget that allows you to select a map location and view port in the edit form that will be displayed on the view form – and accessible from the database.
- XLS Export
- Export data sets in XLS format (since Excel sucks at importing CSV properly)
- CKeditor Widget
- Adds a CKeditor (WYSIWYG HTML editor) widget for use in applications.
- Summary Reports
- Generate aggregate reports on result sets. Useful for finding averages, sums, and other aggregate data.
- Github Repo
- Switch User
- Allows you to create a mechanism for administrators to log in as other users in the system.
- Github Repo
- Depselect Widget
- Adds a “select” widget that can be dynamically linked to other widgets so that its options change depending on the values selected in other fields of the form.
- Subversion Repo
- CAS Authentication
- Adds support for Yale’s Central Authenticaiton Service
- HTTP Authentication
- Adds support for basic HTTP authentication
- LDAP Authentication
- Adds support for LDAP authentication
- Filemaker Export
- Export result sets as Filemaker XML that can be easily imported into a filemaker database. (Haven’t used this since Filemaker 7, so it may require some tweaking to work on newer versions).
- Shopping Cart
- Adds shopping cart functionality to Xataface apps. It allows you to treat some records as products, that can be added to a cart and purchased.
- Ajax Upload Widget
- Adds a widget to upload files using AJAX.
- Subversion Repo
- Calendar
- Adds a full interactive calendar view to Xataface apps.
- Subversion Repo
- Checkbox Filters
- Adds a block that can be used to filter the current result set using checkboxes.
- Date Picker
- Adds the jQuery datepicker widget to select dates on the edit form using a calendar interface.
- HTML Reports
- Enables administrators of a Xataface application to design reports using a WYSIWYG HTML editor. These reports can then be run by other users on any found set in the prescribed table of the report.
- Github Repo
- PDF Reports
- Enables administrators of a Xataface application to design PDF reports using a WYSIWYG editor. Reports can then be run by other users on any found set in the prescribed table of the report.
- Scaler
- An output caching module for helping deal with extreme loads.
- UITK
- A javascript toolkit with some useful user interface abstractions.
- Test Runner
- A module for writing and running Xataface unit tests – both PHP and Javascript tests.
- DataGrid
- Adds an editable grid view to a Xataface application.
SWeTE
SWeTE is a reverse HTTP proxy that provides dynamic inline translation. This means that you can easily convert a website from one language into another by simply setting up a SWeTE proxy site with a translation memory.
Java
- Java Objective-C Bridge
- A light-weight library that allows you to call Objective-C code from Java.
- Mirah ANT Task
- ANT task for compiling Mirah source code. This wraps a
<javac>
call so that it supports compiling both Java and Mirah source files in the same source path with circular dependencies.
- ANT task for compiling Mirah source code. This wraps a
- Mirah Netbeans Module
- Mirah Netbeans Module
- PDF Clown CJK Fonts Library
- Adds support for generating PDFs with Chinese, Korean, Japanese (and other unicode) fonts using the PDF Clown library.
Codename One
I have been working with Codename One quite a bit since 2012. I have submitted a number of patches and have implemented functionality in the core. I have also developed a number of libraries for it. A small sampling of those libraries follows:
Libraries
- CN1ML Netbeans Module
- Netbeans module that allows you to design templates for your Codename One UI components using a variant of HTML.
- Offline iOS Build Tool
- Netbeans module that allows you to build your Codename One applications for iOS offline.
- CN1 Sockets
- Cross-platform sockets library for Codename One
- CN1 Data Access Library
- Implements data access objects for Codename One to make it easier to interact with SQLite databases.
- CN1 Offline Maps
- Allows you to bundle map tiles with your application so that your app can browse the map while offline.
- Requires companion application CN1TileConverter to generate the tiles.
- CN1 aChartEngine
- A library for drawing charts in Codename One.
- You can check out the demo application for sample source.
- CN1 FontBox
- TTF Font support for the CN1Pisces library.
- CN1 Pisces
- A 2D graphics library for Codename One.
- CN1 JSON
- An alternate JSON library.
- CN1 JTar
- Library for reading and writing tar archives.
- CN1 Regex
- Regular expression support for Codename One
- Mirah Macros for Codename One
- A project that includes Mirah language macros that simplify Codename One app development.