Software you can't switch off, replaced and repaired.
Halis Technology is the consulting practice of Chris Grimes, a principal engineer in St. Louis. It rebuilds legacy systems, modernizes codebases, and fixes slow or unstable software for large companies.
Email chris@halistechnology.com
FUNCTION CALC_LT_FEE (
P_BAL IN NUMBER,
P_DAYS IN NUMBER
) RETURN NUMBER IS
V_FEE NUMBER := 0;
BEGIN
-- CHG 03/2004: MIN FEE 25.00
IF P_DAYS > 30 THEN
V_FEE := P_BAL * 0.015;
IF V_FEE < 25 THEN
V_FEE := 25;
END IF;
END IF;
RETURN ROUND(V_FEE, 2);
END CALC_LT_FEE;
export function lateFee(
balanceCents: number,
daysLate: number,
): number {
if (daysLate <= 30) return 0;
const fee = (balanceCents * 15) / 1000;
return Math.max(Math.round(fee), 2500);
}
test.each(recordedCases)(
"same answer as the old system",
(c) => {
expect(
lateFee(c.balanceCents, c.daysLate),
).toBe(c.oldFeeCents);
},
);
The old system is the specification. A rebuilt piece replaces the original only when it gives the same answers on recorded cases. The code is an illustration. The test runs in your browser on 10,000 made-up accounts, with the old system's answers worked out in exact decimals, the way Oracle does it.
What you can hire Halis for
Legacy system replacement
Rebuild an aging system next to the one it replaces, move the data, and switch the business over without downtime. Turning old code into new code is the work LLM tools do best, because every rebuilt piece can be tested against what the original does.
Past work: a contract management system migrated with every record intact, and a new application replacing a legacy system used by research teams worldwide.
Codebase modernization
Keep the system and fix the code. Add the tests it never had, automate the release pipeline, and refactor in small steps that are each checked so behavior doesn't change.
Past work: an enterprise codebase taken from no unit tests to more than 95% coverage, with the testing patterns adopted by the wider team.
Performance and stability fixes
Find the bottleneck or the failure and remove it: batch jobs that run for hours, queries that time out, AWS and Kubernetes deployments that won't stay up.
Past work: transaction processing cut from hours to minutes, and a document management system on Kubernetes stabilized in two weeks after it had blocked earlier teams for two years.
How engagements work
- Assessment
- A short, fixed-price review of one system. It ends in a written plan: what to replace, what to keep, and in what order.
- Project
- A fixed scope and price under a statement of work, delivered in stages you can check as they land.
- Retainer
- A set number of hours each month for a system that is already in production.
Who is behind it
St. Louis, Missouri
Chris has spent 20 years building software inside large enterprises, most recently a Fortune 500 reinsurer, a Federal Reserve Bank, and a global life sciences company.
He led the build of an application that opened a new business line and booked $150 million in contracts in its first quarter, and directed four engineering teams responsible for financial systems that handle billions of dollars a year.
Day to day he works in TypeScript and Node.js, React, AWS, Kubernetes, and Postgres.