James Allman | JA Technology Solutions LLC
Custom applications for the work no package fits
If the way your business runs a process doesn't match any product you can buy, and you've patched the gap with a spreadsheet, a manual rekeying step, or an export-and-reimport ritual someone redoes every week, that gap is what custom software is for. I design and build applications that fit how your operation actually works, on IBM i, Linux, Windows/.NET, and the web.
The problem custom development solves
A packaged system does eighty percent of what you need, and the missing twenty percent is the part that makes the business yours. So the work happens around the software: a clerk rekeys orders between two screens, finance maintains a parallel workbook the ERP can't produce, and a temporary Access database from 2014 is now load-bearing.
Each workaround is fragile, undocumented, and invisible to leadership. It costs an hour here, a data-entry error there, and it breaks the moment the routine is interrupted or a step is done out of order. Custom development replaces those rituals with software that does the actual job: an application that captures the order once, a report the system generates on its own, a database with validation and an audit trail instead of a shared spreadsheet anyone can overwrite.
The same order, before and after: keyed into the ERP, rekeyed into a parallel spreadsheet, then exported into a side database nobody owns, versus a single application that captures it once, validates it, and keeps the audit trail.
Before
After
What I build
- Workflow-specific tools and utilities
- Applications that extend or complement existing enterprise systems
- Maintaining, enhancing, and modernizing existing custom applications, including undocumented or hard-to-change legacy code
- Spreadsheet-to-database conversions for workbooks several people depend on
- Web applications connected to existing business logic and data
- Mobile applications for field operations, remote access, and ruggedized handheld devices: including programmable barcode scanners and mobile data terminals
- Reporting applications with interactive data visualization
- Automation of manual processes: data entry, file processing, reconciliation
- Cross-platform applications that work across IBM i, Linux, Windows, and web
How I choose the technology
The technology fits the environment, not the other way around: Java, RPG, and SQL on IBM i; Java, Go, and Rust for cross-platform services on Linux, with Bash, Zsh, and Python for scripting and automation; C# and .NET on Windows, with PowerShell for scripting and automation; native mobile apps for iOS (Swift) and Android (Kotlin), including ruggedized Zebra handhelds and barcode scanners with full EMDK support; and JavaScript and TypeScript with React or Vue for web interfaces, on any platform. I build with longevity in mind, because most custom software stays in service far longer than the project that created it.
See it in action for an example of a modern web application built with the same tools and approach I use for client work.
Existing code, not just new builds
Custom development is as much about the application that already runs your business as the one that does not exist yet. Often the work is inheriting an existing custom system (a VB6 front end, an Access database, a set of RPG programs, a Linux service with no documentation, an in-house tool that has grown brittle and undocumented) and keeping it running, extending it, and modernizing it in place rather than through a rewrite nobody asked for. Reading unfamiliar code and making it safe to change is part of the job.
How an engagement starts
Most custom work starts small: a discovery conversation about the workflow, then a tightly scoped first piece that proves the approach before anyone commits to the whole thing. I would rather ship something useful in week one and expand from there than disappear for three months and hope the spec was right. I review the work and provide a quote before any billable work begins.
Free developer tools
Developers building or extending custom applications can use these free browser-based tools for the everyday utilities that come up during development: pattern testing, auth inspection, ID generation, and query formatting.
- Regex Tester & Builder: test and build regular expressions with live matches
- SQL Formatter: clean up queries into consistently indented SQL
- Connection String Builder: assemble JDBC, ODBC, OLEDB, and ADO.NET connection strings
- JWT Explorer: inspect JSON Web Tokens including header, payload, and signature
- UUID Generator: generate v1, v4, and v7 UUIDs
- Cron Expression Builder: build and explain cron schedules
- Hash Generator: MD5, SHA-1, SHA-256, and SHA-512 for strings and files
- Base64 Encode/Decode: encode and decode text and binary data
Related capabilities
Custom applications often connect with system integration, database development, modernization, custom reporting, and cloud deployment.
Further reading
Off-the-Shelf vs Custom Software: when standard software handles the common case but not the part that makes your business different.
When Your Spreadsheet Should Have Been a Database: the most common trigger for custom application development.
Microsoft Access, Excel, and VBA: when these tools need to become professional applications.