Unlike print and web projects, custom software products are not easily showcased with an image of the cover, text, or a web page. Each of these projects is a unique solution tailored to a specific client's needs, and in all cases, the result is a proprietary solution not shared with others.
Given this consideration, this page does not name clients or expose details with screen captures of software produced, rather provides a general outline of the type of client and the solutions engineered. One exception is a project management system used by Mars Premedia, which is listed last.
To view examples of public software (some open-source), with screen captures and full instructions, see the separate Software section, which offers Adobe Creative Cloud application scripts free to download.
Client: Photography studio post-production
Responsible for continual maintenance of a Photoshop scripting system that automates processing thousands of images for major apparel companies. The comprehensive system, written in Adobe ExtendScript, was originally created by employees of the client who have since moved along. I was hired to become familiar with and maintain the system, and in the years since I have enhanced and expanded its capabilities.
The system manages assets opened in Photoshop, tracking where they are located on servers and executing processes to size, set up, and save final files for delivery to the apparel manufacturer clients. Examples of processes are to copy background layer (initial product shot), mask the layer using a path, and group with default layers needed by retouch operators. Then provide automation to save out a variety of file formats stored into specific folders on the server. A more complex example is to copy and flop initial product shot of eyewear, blur and fade the layer copy, and position below the product to create the semblance of a reflection on a glossy surface. Such tasks are applied to hundreds, sometimes thousands, of images, not only saving untold operator hours but also ensuring consistent results.
The software is continually updated as needs change with each new season of apparel the client is tasked with processing in post-production.
Also developed a native macOS application using Xcode/Swift that imports spreadsheet data of approved images, locates files matching the base names, and then collects the images into client folders for delivery. While collecting images, the application also updates each file’s metadata with keywords from a spreadsheet column for each image.
Client: Magazine publisher
My client was a back-end .NET developer, tasked with getting InDesign to communicate with a database that tracks advertisements submitted for inclusion in a magazine (the ultimate client). My part was to create an InDesign script that connects to the database, and using the result, determines the state of each ad in the InDesign layout document. Work involved forming HTTP requests using ExtendScript socket API and parsing the HTTP responses, comparing the data to InDesign DOM elements, and generating reports that reflect which advertisements are present, and those missing.
Client: Mars Premedia
Concept and design of a single-page web application based on HTML5 and JQueryUI on the client side, and PHP and MySQL on the server side, exchanging data via AJAX. The system is securely accessible from any browser, on any platform, over a local network or connected to the Internet.
This data entry / project management / management information system is used daily by Mars Premedia to track and invoice jobs, prepare estimates, and generate reports. The system has gone through many incarnations and names (Print Data Manager, Prepress Manager) as it was adapted to different employers over time. Originally conceived on a Tandy 100 computer using GW-BASIC, the console application evolved to MS-DOS using QuickBASIC, then C and C++ languages, until at last becoming the modern platform-independent web app that it is today, Project Data Manager, built on JQuery UI, PHP, and MySQL. The application is constantly evolving with new features and added capability as emerging technologies are employed (for example, currently porting PHP back-end to Node.js).
This software represents a truly “single page” web application — the page does not scroll, which would otherwise leave parts of the interface out of view. Every data entry field and action button are constantly visible during use. As the browser window changes size, the interface adapts to maintain a single browser page. Focused on efficient data entry, this is not software intended for a phone’s small screen. And though it could work reasonably well, it is not meant for tablets either. The intent is for intensive data entry using a desktop workstation and full-size screen. Variations better for small screens are always possible but has not been the intent of this particular version of the software.
The design of the code base was always intended to easily adapt to other uses. The interface layout is a group of scrolling lists on the left, showing current job orders, search results, and job templates. On the right is a series of tabs that divide the selected job into areas of concern. New tabs may be added and data entry fields modified as needed to suit other uses. The possibilities are not limited to a specific industry.
As the application is for private use, access is restricted, though a deployment of the application using a demonstration database is available to showcase its capability. Contact William to arrange a demonstration using private credentials.