1<!doctype html> 2<html lang="en" data-theme-default> 3<head> 4<meta charset="utf-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1"> 6 7<title>Notes on Java, integration and fintech | eLucive</title> 8<meta name="description" content="Practical writing on Java, system integration, databases and financial technology, drawn from systems we actually run."><meta name="keywords" content="software development Zambia, Java development Zambia, Spring Boot development Africa, system integration Zambia, village banking software, net pay calculator Zambia, PAYE calculator Zambia, enterprise software Lusaka"><meta name="author" content="eLucive Software"> 9<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1"> 10<link rel="canonical" href="https://elucive.co/blog"><meta property="og:type" content="website"> 11<meta property="og:site_name" content="eLucive Software"> 12<meta property="og:title" content="Notes on Java, integration and fintech | eLucive"> 13<meta property="og:description" content="Practical writing on Java, system integration, databases and financial technology, drawn from systems we actually run."> 14<meta property="og:url" content="https://elucive.co/blog"> 15<meta property="og:image" content="https://elucive.co/assets/img/og/default.png"> 16<meta property="og:image:width" content="1200"> 17<meta property="og:image:height" content="630"> 18<meta property="og:image:alt" content="eLucive Software: Simple solutions for complicated problems"> 19<meta property="og:locale" content="en_ZM"><meta name="twitter:card" content="summary_large_image"> 20<meta name="twitter:site" content="@elucivezm"> 21<meta name="twitter:creator" content="@elucivezm"> 22<meta name="twitter:title" content="Notes on Java, integration and fintech | eLucive"> 23<meta name="twitter:description" content="Practical writing on Java, system integration, databases and financial technology, drawn from systems we actually run."> 24<meta name="twitter:image" content="https://elucive.co/assets/img/og/default.png"><meta name="geo.region" content="ZM-09"> 25<meta name="geo.placename" content="Lusaka"> 26<meta name="geo.position" content="-15.3875;28.3228"> 27<meta name="ICBM" content="-15.3875, 28.3228"><link rel="icon" href="/favicon.ico" sizes="32x32"> 28<link rel="icon" href="/icon.svg" type="image/svg+xml"> 29<link rel="apple-touch-icon" href="/apple-touch-icon.png"> 30<link rel="manifest" href="/manifest.webmanifest"> 31<meta name="theme-color" content="#FAFBFF" media="(prefers-color-scheme: light)"> 32<meta name="theme-color" content="#14151A" media="(prefers-color-scheme: dark)"> 33<meta name="format-detection" content="telephone=no"> 34<link rel="alternate" type="application/rss+xml" title="eLucive Software Blog" href="https://elucive.co/rss.xml"><link rel="stylesheet" href="/assets/css/main.1f3c696548.css">
34<script src="/assets/js/boot.21b76f5c03.js"></script>
34<script type="application/ld+json">{"@context":"https://schema.org","@type":"Blog","@id":"https://elucive.co/blog#blog","name":"eLucive Software Blog","url":"https://elucive.co/blog","description":"Practical writing on Java, system integration, databases and financial technology, drawn from systems we actually run.","inLanguage":"en-ZM","publisher":{"@id":"https://elucive.co/#organization"},"blogPost":[{"@type":"BlogPosting","headline":"Building Web Apps for Low-Bandwidth, Mid-Range-Phone Reality","url":"https://elucive.co/blog/building-for-low-bandwidth-africa","datePublished":"2025-01-15"},{"@type":"BlogPosting","headline":"Building Financial Software for Zambian Businesses","url":"https://elucive.co/blog/financial-software-solutions-zambian-businesses","datePublished":"2025-01-10"},{"@type":"BlogPosting","headline":"System Integration: The Failure Modes Nobody Budgets For","url":"https://elucive.co/blog/system-integration-best-practices","datePublished":"2025-01-05"},{"@type":"BlogPosting","headline":"Choosing a Web Technology Stack You Can Still Run in Five Years","url":"https://elucive.co/blog/choosing-right-web-technology-stack","datePublished":"2025-01-01"},{"@type":"BlogPosting","headline":"Replacing a Spreadsheet-Based Expense Process","url":"https://elucive.co/blog/expense-management-digital-transformation","datePublished":"2024-12-28"},{"@type":"BlogPosting","headline":"Web Security for Zambian Businesses: What Actually Gets Exploited","url":"https://elucive.co/blog/web-security-practices-african-businesses","datePublished":"2024-12-20"}]}</script>
34<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://elucive.co/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https://elucive.co/blog"}]}</script>
34</head> 35 36<body> 37 38<div class="loader" aria-hidden="true"> 39 <svg class="loader__mark elx-loader elx-loader--stream" viewBox="-50 -50 136 100"> 40 <path class="elx-mark elx-disc" 41 d="M48.97 10.12A50 50 0 1 1 48.97 -10.12L21.43 -37.65A9.25 9.25 0 0 0 8.35 -24.57L28.68 -4.24A6 6 0 0 1 28.68 4.24L8.35 24.57A9.25 9.25 0 0 0 21.43 37.65Z"/> 42 <g class="elx-bars"> 43 <line class="elx-bar elx-bar--1" x1="55.28" y1="-22" x2="74.28" y2="-22"/> 44 <line class="elx-bar elx-bar--2" x1="59.5" y1="0" x2="78.5" y2="0"/> 45 <line class="elx-bar elx-bar--3" x1="55.28" y1="22" x2="74.28" y2="22"/> 46 </g> 47 </svg> 48 49 <p class="loader__label">eLucive</p> 50</div> 51 52<a class="skip-link" href="#main">Skip to content</a> 53 54<svg xmlns="http://www.w3.org/2000/svg" style="display:none" aria-hidden="true"><symbol id="i-arrow-left" viewBox="0 0 24 24"><path d="M20 12H4.5"/><polyline points="10.5 6 4.5 12 10.5 18"/></symbol><symbol id="i-arrow-right" viewBox="0 0 24 24"><path d="M4 12h15.5"/><polyline points="13.5 6 19.5 12 13.5 18"/></symbol><symbol id="i-bluesky" viewBox="0 0 568 501"><path d="M123.121 33.664C188.241 82.553 258.281 181.681 284 234.873c25.719-53.192 95.759-152.32 160.879-201.209C491.867-1.612 568-28.906 568 57.946c0 17.346-9.945 145.713-15.778 166.555-20.275 72.453-94.155 90.933-159.875 79.748 114.875 19.551 144.097 84.311 80.986 149.071-119.86 122.992-172.272-30.859-185.702-70.281-2.462-7.227-3.614-10.608-3.631-7.733-.017-2.875-1.169.506-3.631 7.733-13.43 39.422-65.842 193.273-185.702 70.281-63.111-64.76-33.889-129.52 80.986-149.071-65.72 11.185-139.6-7.295-159.875-79.748C9.945 203.659 0 75.292 0 57.946 0-28.906 76.133-1.612 123.121 33.664z"/></symbol><symbol id="i-browser" viewBox="0 0 24 24"><rect x="2.75" y="4.25" width="18.5" height="15.5" rx="2.25"/><path d="M2.75 9h18.5"/><path d="M6 6.6h.01"/><path d="M8.5 6.6h.01"/><path d="M11 6.6h.01"/></symbol><symbol id="i-calculator" viewBox="0 0 24 24"><rect x="4.25" y="2.75" width="15.5" height="18.5" rx="2.25"/><rect x="7.5" y="6" width="9" height="3.25" rx="0.75"/><path d="M8.25 13h.01"/><path d="M12 13h.01"/><path d="M15.75 13h.01"/><path d="M8.25 17h.01"/><path d="M12 17h.01"/><path d="M15.75 17h.01"/></symbol><symbol id="i-calendar" viewBox="0 0 24 24"><rect x="3.5" y="5" width="17" height="15.5" rx="1.8"/><path d="M3.5 9.5h17"/><path d="M8 3.5v3M16 3.5v3"/><path d="M7.5 13.5h2M11 13.5h2M14.5 13.5h2M7.5 17h2M11 17h2"/></symbol><symbol id="i-chart" viewBox="0 0 24 24"><path d="M3.5 20.5h17"/><rect x="5" y="12" width="3.5" height="6" rx=".8"/><rect x="10.2" y="7.5" width="3.5" height="10.5" rx=".8"/><rect x="15.4" y="4" width="3.5" height="14" rx=".8"/></symbol><symbol id="i-chat" viewBox="0 0 24 24"><path d="M20.5 6.25v8.5a2 2 0 01-2 2H9.75L4.5 21v-4.25h-1V6.25a2 2 0 012-2h13a2 2 0 012 2z"/></symbol><symbol id="i-check" viewBox="0 0 24 24"><polyline points="4.5 12.5 9.5 17.5 19.5 6.5"/></symbol><symbol id="i-chevron-right" viewBox="0 0 24 24"><polyline points="9.5 5 16.5 12 9.5 19"/></symbol><symbol id="i-clock" viewBox="0 0 24 24"><circle cx="12" cy="12" r="8.5"/><polyline points="12 7 12 12 15.5 14"/></symbol><symbol id="i-code" viewBox="0 0 24 24"><path d="M8.5 7.5L3.75 12l4.75 4.5"/><path d="M15.5 7.5L20.25 12l-4.75 4.5"/><path d="M13.5 4.25l-3 15.5"/></symbol><symbol id="i-coffee" viewBox="0 0 24 24"><path d="M4.25 8.5h12.5v5.75a5 5 0 01-5 5H9.25a5 5 0 01-5-5z"/><path d="M16.75 10h1.5a2.75 2.75 0 010 5.5h-1.5"/><path d="M8.25 2.5v2.25"/><path d="M12.75 2.5v2.25"/></symbol>
54<symbol id="i-coins" viewBox="0 0 24 24"><rect x="2.5" y="6" width="19" height="12" rx="1.8"/><circle cx="12" cy="12" r="2.6"/><path d="M6 9.5v5M18 9.5v5"/></symbol><symbol id="i-database" viewBox="0 0 24 24"><ellipse cx="12" cy="5.75" rx="7.25" ry="3.25"/><path d="M4.75 5.75v12.5c0 1.8 3.25 3.25 7.25 3.25s7.25-1.45 7.25-3.25V5.75"/><path d="M19.25 12c0 1.8-3.25 3.25-7.25 3.25S4.75 13.8 4.75 12"/></symbol><symbol id="i-document" viewBox="0 0 24 24"><path d="M14 2.5H6.5A1.5 1.5 0 0 0 5 4v16a1.5 1.5 0 0 0 1.5 1.5h11A1.5 1.5 0 0 0 19 20V7.5Z"/><polyline points="14 2.5 14 7.5 19 7.5"/></symbol><symbol id="i-external" viewBox="0 0 24 24"><path d="M13 4h7v7"/><path d="M20 4 11 13"/><path d="M18 14.5V19a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 4 19V8a1.5 1.5 0 0 1 1.5-1.5H10"/></symbol><symbol id="i-handshake" viewBox="0 0 24 24"><circle cx="9" cy="12" r="5.75"/><circle cx="15" cy="12" r="5.75"/></symbol><symbol id="i-instagram" viewBox="0 0 24 24"><rect x="2.75" y="2.75" width="18.5" height="18.5" rx="5.25"/><circle cx="12" cy="12" r="4"/><path d="M17.4 6.6h.01"/></symbol><symbol id="i-integration" viewBox="0 0 24 24"><path d="M10 13.8a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7L11.5 6.6"/><path d="M14 10.2a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1.5-1.5"/></symbol><symbol id="i-layers" viewBox="0 0 24 24"><path d="M12 2.75l9 4.75-9 4.75-9-4.75z"/><path d="M3 12.5l9 4.75 9-4.75"/><path d="M3 17.25L12 22l9-4.75"/></symbol><symbol id="i-location" viewBox="0 0 24 24"><path d="M19 10.2c0 5.3-7 11.3-7 11.3s-7-6-7-11.3a7 7 0 1114 0z"/><circle cx="12" cy="10" r="2.6"/></symbol><symbol id="i-logo" viewBox="-50 -50 136 100"><g fill="currentColor" stroke="none"><path d="M48.97 10.12A50 50 0 1 1 48.97 -10.12L21.43 -37.65A9.25 9.25 0 0 0 8.35 -24.57L28.68 -4.24A6 6 0 0 1 28.68 4.24L8.35 24.57A9.25 9.25 0 0 0 21.43 37.65Z"/><rect x="47.78" y="-29.5" width="34" height="15" rx="7.5"/><rect x="52" y="-7.5" width="34" height="15" rx="7.5"/><rect x="47.78" y="14.5" width="34" height="15" rx="7.5"/></g></symbol><symbol id="i-mail" viewBox="0 0 24 24"><rect x="3" y="5.5" width="18" height="13" rx="1.8"/><polyline points="3.6 6.6 12 13 20.4 6.6"/></symbol><symbol id="i-moon" viewBox="0 0 24 24"><path d="M20.5 14.6A8.75 8.75 0 019.4 3.5a8.75 8.75 0 1011.1 11.1z"/></symbol><symbol id="i-receipt" viewBox="0 0 24 24"><path d="M5.25 2.75h13.5v18.5l-2.7-1.75-2.25 1.75L12 19.5l-1.8 1.75-2.25-1.75-2.7 1.75z"/><path d="M9 8h6"/><path d="M9 12h6"/></symbol><symbol id="i-rocket" viewBox="0 0 24 24"><path d="M12 2.5c3.4 2.6 5.25 6.5 5.25 10.75L15 16.5H9l-2.25-3.25C6.75 9 8.6 5.1 12 2.5z"/><circle cx="12" cy="9.25" r="2"/><path d="M9 16.5l-2.75 2.4.9 2.6"/><path d="M15 16.5l2.75 2.4-.9 2.6"/></symbol><symbol id="i-rss" viewBox="0 0 24 24"><path d="M4.5 10.5a9 9 0 019 9"/><path d="M4.5 4.5a15 15 0 0115 15"/><circle cx="5.75" cy="18.25" r="1.5" fill="currentColor" stroke="none"/></symbol><symbol id="i-send" viewBox="0 0 24 24"><path d="M21.25 2.75L2.75 9.9l7.6 3.75 3.75 7.6z"/><path d="M21.25 2.75L10.35 13.65"/></symbol><symbol id="i-shield" viewBox="0 0 24 24"><path d="M12 2.75l7.75 2.9v5.6c0 4.9-3.3 8.7-7.75 9.9-4.45-1.2-7.75-5-7.75-9.9v-5.6z"/><path d="M8.75 11.75l2.4 2.4 4.35-4.65"/></symbol><symbol id="i-spark" viewBox="0 0 24 24"><path d="M12 2.75l2.1 6.15 6.15 2.1-6.15 2.1L12 19.25l-2.1-6.15-6.15-2.1 6.15-2.1z"/><path d="M18.75 16.5l.75 2.25 2.25.75-2.25.75-.75 2.25-.75-2.25-2.25-.75 2.25-.75z"/></symbol><symbol id="i-sun" viewBox="0 0 24 24"><circle cx="12" cy="12" r="4"/><path d="M12 2v2.4"/><path d="M12 19.6V22"/><path d="M2 12h2.4"/><path d="M19.6 12H22"/><path d="M4.9 4.9l1.7 1.7"/><path d="M17.4 17.4l1.7 1.7"/><path d="M19.1 4.9l-1.7 1.7"/><path d="M6.6 17.4l-1.7 1.7"/></symbol><symbol id="i-target" viewBox="0 0 24 24"><circle cx="12" cy="12" r="8.75"/><circle cx="12" cy="12" r="4.75"/><circle cx="12" cy="12" r="1"/></symbol><symbol id="i-users" viewBox="0 0 24 24"><circle cx="9" cy="8" r="3.2"/><path d="M3.5 20a5.5 5.5 0 0 1 11 0"/><path d="M16.2 5.3a3.2 3.2 0 0 1 0 5.9"/><path d="M17.6 14.3A5.5 5.5 0 0 1 20.5 19"/></symbol><symbol id="i-whatsapp" viewBox="0 0 24 24">
54<path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347M12.05 21.785h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893A11.821 11.821 0 0020.885 3.488"/></symbol><symbol id="i-x" viewBox="0 0 24 24"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></symbol></svg> 55<header class="header" data-header> 56 <div class="container header__inner"> 57 58 <a class="logo" href="/" aria-label="eLucive Software home"> 59 <svg class="logo__mark" viewBox="0 0 136 100" aria-hidden="true" focusable="false"> 60 <use href="#i-logo"></use> 61 </svg> 62 <span class="logo__text"> 63 <span class="logo__name">eLucive</span> 64 <span class="logo__kicker">Software Solutions</span> 65 </span> 66 </a> 67 68 <nav class="nav header__nav-desktop" aria-label="Main"> <a class="nav__link" data-nav-link href="/#about">About</a> <a class="nav__link" data-nav-link href="/#services">Services</a> <a class="nav__link" data-nav-link href="/#products">Products</a> <a class="nav__link" data-nav-link href="/#work">Work</a> <a class="nav__link" data-nav-link href="/blog" aria-current="page">Blog</a> </nav> 69 70 <div class="header__actions"><button class="palette-hint" type="button" data-palette-open hidden aria-label="Open the command palette"> 71 <kbd>⌘</kbd><kbd>K</kbd> 72 </button> 73 74 <button class="theme-toggle" type="button" data-theme-toggle aria-label="Switch theme"> 75 <span class="theme-toggle__icon" aria-hidden="true"> 76 <svg class="icon theme-toggle__sun"><use href="#i-sun"></use></svg> 77 <svg class="icon theme-toggle__moon"><use href="#i-moon"></use></svg> 78 </span> 79 </button> 80 81 <a class="btn btn--primary header__cta-desktop" href="/#contact"> 82 Start a project 83 <svg class="icon icon--sm icon--arrow" aria-hidden="true"><use href="#i-arrow-right"></use></svg> 84 </a> 85 86 <button class="nav-toggle" type="button" data-nav-toggle 87 aria-expanded="false" aria-controls="site-drawer" aria-label="Open menu"> 88 <span class="nav-toggle__bars" aria-hidden="true"><span></span><span></span><span></span></span> 89 </button> 90 </div> 91 92 </div> 93</header><div class="drawer" id="site-drawer" data-drawer data-open="false"> 94 <div class="drawer__inner"> 95 <div class="container"> 96 <nav aria-label="Mobile"> <a class="drawer__link" href="/#about"> 97 About 98 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-chevron-right"></use></svg> 99 </a> <a class="drawer__link" href="/#services"> 100 Services 101 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-chevron-right"></use></svg> 102 </a> <a class="drawer__link" href="/#products"> 103 Products 104 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-chevron-right"></use></svg> 105 </a> <a class="drawer__link" href="/#work"> 106 Work 107 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-chevron-right"></use></svg> 108 </a> <a class="drawer__link" href="/blog"> 109 Blog 110 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-chevron-right"></use></svg> 111 </a> </nav> 112 <div class="drawer__foot"> 113 <a class="btn btn--primary btn--block" href="/#contact"> 114 Start a project 115 <svg class="icon icon--sm icon--arrow" aria-hidden="true"><use href="#i-arrow-right"></use></svg> 116 </a> 117 <a class="btn btn--outline btn--block" href="https://wa.me/260979068878" target="_blank" rel="noopener"> 118 <svg class="icon icon--sm icon--solid" aria-hidden="true"><use href="#i-whatsapp"></use></svg> 119 WhatsApp us 120 </a> 121 </div> 122 </div> 123 </div> 124</div> 125 126<div class="page"> 127 <main class="page__main" id="main"> 128 129<section class="section section--tight article-head"> 130 <div class="container"> 131 <nav class="breadcrumb" aria-label="Breadcrumb"> 132 <a href="/">Home</a>
133 <span class="breadcrumb__sep" aria-hidden="true">/</span> 134 <span aria-current="page">Blog</span> 135 </nav> 136 137 <div class="section__head mt-md mb-0"> 138 <p class="eyebrow">Writing</p> 139 <h1 class="section__title"> 140 Notes from 141 <strong>the workshop</strong> 142 </h1> 143 <p class="section__intro">Practical writing on Java, system integration, databases and financial technology, drawn from systems we actually run.</p> 144 <p class="mt-sm"> 145 <a class="badge" href="/rss.xml"> 146 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-rss"></use></svg> 147 Subscribe by RSS 148 </a> 149 </p> 150 </div> 151 </div> 152</section> 153 154<section class="section"> 155 <div class="container"> <div class="grid mb-xl" data-reveal-group> <article class="post-card post-card--featured" data-reveal> 156 <div class="post-meta"> 157 <span class="badge badge--accent">Featured</span> 158 <span class="badge">Web Development</span> 159 <span class="post-meta__item"> 160 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-calendar"></use></svg> 161 <time datetime="2025-01-15">January 15, 2025</time> 162 </span> 163 <span class="post-meta__item"> 164 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-clock"></use></svg> 165 5 min read 166 </span> 167 </div> 168 <h2 class="post-card__title"><a href="/blog/building-for-low-bandwidth-africa">Building Web Apps for Low-Bandwidth, Mid-Range-Phone Reality</a></h2> 169 <p class="post-card__excerpt">Most performance advice is written for fast phones on cheap data. Here is what changes when your users are on mid-range Android handsets paying per megabyte, and why we removed the framework from this site.</p> 170 <div class="cluster mt-2xs"> <span class="badge">Performance</span> <span class="badge">Progressive Web Apps</span> <span class="badge">Africa Tech</span> <span class="badge">Web Development</span> </div> 171 </article> </div> 172 <div class="grid grid--3 grid--gap-lg" data-reveal-group> <article class="post-card" data-reveal> 173 <div class="post-meta"> 174 <span class="badge">Financial Technology</span> 175 </div> 176 <h2 class="post-card__title"><a href="/blog/financial-software-solutions-zambian-businesses">Building Financial Software for Zambian Businesses</a></h2> 177 <p class="post-card__excerpt">What actually changes when you write financial software for Zambia: statutory deductions that are not what most payroll engines assume, mobile money as a first-class payment rail, and decimal arithmetic you cannot afford to get wrong.</p> 178 <div class="post-meta push-down"> 179 <span class="post-meta__item"> 180 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-calendar"></use></svg> 181 <time datetime="2025-01-10">January 10, 2025</time> 182 </span> 183 <span class="post-meta__item"> 184 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-clock"></use></svg> 185 6 min read 186 </span> 187 </div> 188 </article> <article class="post-card" data-reveal> 189 <div class="post-meta"> 190 <span class="badge">System Integration</span> 191 </div> 192 <h2 class="post-card__title"><a href="/blog/system-integration-best-practices">System Integration: The Failure Modes Nobody Budgets For</a></h2> 193 <p class="post-card__excerpt">Connecting two systems is easy on the happy path. What costs time is duplicate deliveries, partial failures, and the hour the other end is down. Here is how to design for those from the start.</p> 194 <div class="post-meta push-down"> 195 <span class="post-meta__item"> 196 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-calendar"></use></svg> 197 <time datetime="2025-01-05">January 5, 2025</time> 198 </span> 199 <span class="post-meta__item"> 200 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-clock"></use></svg> 201 5 min read 202 </span> 203 </div> 204 </article> <article class="post-card" data-reveal> 205 <div class="post-meta">
206 <span class="badge">Tech Insights</span> 207 </div> 208 <h2 class="post-card__title"><a href="/blog/choosing-right-web-technology-stack">Choosing a Web Technology Stack You Can Still Run in Five Years</a></h2> 209 <p class="post-card__excerpt">Why we build back ends on Java and Spring Boot, why this site has no framework at all, and how to tell which of those two situations you are in.</p> 210 <div class="post-meta push-down"> 211 <span class="post-meta__item"> 212 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-calendar"></use></svg> 213 <time datetime="2025-01-01">January 1, 2025</time> 214 </span> 215 <span class="post-meta__item"> 216 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-clock"></use></svg> 217 6 min read 218 </span> 219 </div> 220 </article> <article class="post-card" data-reveal> 221 <div class="post-meta"> 222 <span class="badge">Business Automation</span> 223 </div> 224 <h2 class="post-card__title"><a href="/blog/expense-management-digital-transformation">Replacing a Spreadsheet-Based Expense Process</a></h2> 225 <p class="post-card__excerpt">Why expense claims break down at around thirty people, what an automated system actually has to do to fix it, and the failure modes that make replacements stall.</p> 226 <div class="post-meta push-down"> 227 <span class="post-meta__item"> 228 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-calendar"></use></svg> 229 <time datetime="2024-12-28">December 28, 2024</time> 230 </span> 231 <span class="post-meta__item"> 232 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-clock"></use></svg> 233 5 min read 234 </span> 235 </div> 236 </article> <article class="post-card" data-reveal> 237 <div class="post-meta"> 238 <span class="badge">Web Security</span> 239 </div> 240 <h2 class="post-card__title"><a href="/blog/web-security-practices-african-businesses">Web Security for Zambian Businesses: What Actually Gets Exploited</a></h2> 241 <p class="post-card__excerpt">Not an OWASP recitation. The handful of weaknesses that account for most real compromises of small business systems here, and what fixing each one involves.</p> 242 <div class="post-meta push-down"> 243 <span class="post-meta__item"> 244 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-calendar"></use></svg> 245 <time datetime="2024-12-20">December 20, 2024</time> 246 </span> 247 <span class="post-meta__item"> 248 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-clock"></use></svg> 249 5 min read 250 </span> 251 </div> 252 </article> </div> 253 254 </div> 255</section> 256 257<section class="section section--tight"> 258 <div class="container"> 259 <div class="cta" data-reveal="scale"> 260 <h2 class="cta__title">Have a problem worth solving?</h2> 261 <p class="cta__text">Tell us what you are trying to fix and we will reply with an honest view of whether we are the right people for it.</p> 262 <div class="cta__actions"> 263 <a class="btn btn--primary btn--lg" href="/#contact"> 264 Start a project 265 <svg class="icon icon--sm icon--arrow" aria-hidden="true"><use href="#i-arrow-right"></use></svg> 266 </a> 267 <a class="btn btn--outline btn--lg" href="https://wa.me/260979068878" target="_blank" rel="noopener"> 268 <svg class="icon icon--sm icon--solid" aria-hidden="true"><use href="#i-whatsapp"></use></svg> 269 WhatsApp us 270 </a> 271 </div> 272 <p class="cta__note">eLucive Software · Lusaka, Zambia</p> 273 </div> 274 </div> 275</section> 276 277 </main> 278 279<footer class="footer"> 280 <div class="container"> 281 282 <div class="footer__grid"> 283 284 <div class="footer__brand"> 285 <a class="logo" href="/" aria-label="eLucive Software home"> 286 <svg class="logo__mark" viewBox="0 0 136 100" aria-hidden="true" focusable="false"> 287 <use href="#i-logo"></use> 288 </svg>
289 <span class="logo__text"> 290 <span class="logo__name">eLucive</span> 291 <span class="logo__kicker">Software Solutions</span> 292 </span> 293 </a> 294 295 <p class="footer__text">Simple solutions for complicated problems. We build Java and Spring Boot systems, integrate the software you already run, and ship web applications people enjoy using, from Lusaka, for Zambia and beyond.</p> 296 297 <div class="stack mt-md"> 298 <p class="footer__detail"> 299 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-location"></use></svg> 300 Lusaka, Zambia 301 </p> 302 <p class="footer__detail"> 303 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-clock"></use></svg> 304 Monday â Friday, 08:00 â 17:00 CAT 305 </p> 306 <p class="footer__detail"> 307 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-mail"></use></svg> 308 <a href="/cdn-cgi/l/email-protection#573e39313817323b22343e2132793438"><span class="__cf_email__" data-cfemail="e1888f878ea1848d9482889784cf828e">[email protected]</span></a> 309 </p> 310 </div> 311 </div> 312 313 <nav aria-labelledby="footer-explore"> 314 <h2 class="footer__title" id="footer-explore">Explore</h2> 315 <div class="footer__links"> 316 <a href="/#about">About</a> 317 <a href="/#services">Services</a> 318 <a href="/#products">Products</a> 319 <a href="/#work">How we work</a> 320 <a href="/blog">Blog</a> 321 <a href="/#contact">Contact</a> 322 </div> 323 </nav> 324 325 <nav aria-labelledby="footer-products"> 326 <h2 class="footer__title" id="footer-products">Products</h2> 327 <div class="footer__links"> <a href="https://vib.elucive.co" target="_blank" rel="noopener"> 328 Village Banking System 329 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-external"></use></svg> 330 </a> <a href="https://netpay.elucive.co" target="_blank" rel="noopener"> 331 Net Pay Calculator 332 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-external"></use></svg> 333 </a> <a href="/products/payroll">Payroll & HR</a> <a href="https://elections.elucive.co" target="_blank" rel="noopener"> 334 Zambia Election Tracker 335 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-external"></use></svg> 336 </a> </div> 337 </nav> 338 339 <div> 340 <h2 class="footer__title">Get in touch</h2> 341 <div class="footer__links"> 342 <a href="/cdn-cgi/l/email-protection#127b7c747d52777e67717b64773c717d"><span class="__cf_email__" data-cfemail="1970777f76597c756c7a706f7c377a76">[email protected]</span></a> 343 <a href="https://wa.me/260979068878" target="_blank" rel="noopener"> 344 +260 979 068 878 345 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-external"></use></svg> 346 </a> 347 <a href="/rss.xml"> 348 RSS feed 349 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-rss"></use></svg> 350 </a> 351 </div> 352 353 <div class="cluster mt-md"> <a class="social" href="https://wa.me/260979068878" target="_blank" rel="noopener me" 354 aria-label="eLucive Software on WhatsApp (+260 979 068 878)" title="WhatsApp: +260 979 068 878"> 355 <svg class="icon icon--sm icon--solid" aria-hidden="true"><use href="#i-whatsapp"></use></svg> 356 </a> <a class="social" href="https://x.com/elucivezm" target="_blank" rel="noopener me" 357 aria-label="eLucive Software on X (@elucivezm)" title="X: @elucivezm"> 358 <svg class="icon icon--sm icon--solid" aria-hidden="true"><use href="#i-x"></use></svg> 359 </a> <a class="social" href="https://bsky.app/profile/elucivezm" target="_blank" rel="noopener me" 360 aria-label="eLucive Software on Bluesky (@elucivezm)" title="Bluesky: @elucivezm"> 361 <svg class="icon icon--sm icon--solid" aria-hidden="true"><use href="#i-bluesky"></use></svg> 362 </a> <a class="social" href="https://instagram.com/elucivezm" target="_blank" rel="noopener me" 363 aria-label="eLucive Software on Instagram (@elucivezm)" title="Instagram: @elucivezm"> 364 <svg class="icon icon--sm" aria-hidden="true"><use href="#i-instagram"></use></svg> 365 </a> </div> 366 </div> 367 368 </div> 369 370 <div class="footer__bottom"> 371 <p>© 2026 eLucive Software. All rights reserved.</p> 372 </div> 373 374 </div> 375</footer> 376</div>
vendor: 108 bytes, line 376
376<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
376<script src="/_vercel/insights/script.js" defer></script>
vendor: 1 bytes, line 376
376
377<script src="/_vercel/speed-insights/script.js" defer></script>
377 378
379<script src="/assets/js/theme.60abae174e.js" defer></script>
vendor: 1 bytes, line 379
379
380<script src="/assets/js/nav.c9e459e6c6.js" defer></script>
vendor: 1 bytes, line 380
380
381<script src="/assets/js/reveal.3cc66a1def.js" defer></script>
381<script src="/assets/js/palette.353cc89133.js" defer></script>
vendor: 1 bytes, line 381
381
382<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"42455e76c526445782085ebeb1712f94","r":1,"spa":2}' crossorigin="anonymous"></script>
382 383</body> 384</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.