
<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Localhost KE]]></title><description><![CDATA[Compiled from prod. Served from Nairobi.]]></description><link>https://jkitsao.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!V_p0!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff16dee9a-6878-4c33-8b0d-6ea25a979562_1024x1024.png</url><title>Localhost KE</title><link>https://jkitsao.substack.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 23 May 2026 09:37:17 GMT</lastBuildDate><atom:link href="https://jkitsao.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Jackson kitsao]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[jkitsao@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[jkitsao@substack.com]]></itunes:email><itunes:name><![CDATA[Jackson kitsao]]></itunes:name></itunes:owner><itunes:author><![CDATA[Jackson kitsao]]></itunes:author><googleplay:owner><![CDATA[jkitsao@substack.com]]></googleplay:owner><googleplay:email><![CDATA[jkitsao@substack.com]]></googleplay:email><googleplay:author><![CDATA[Jackson kitsao]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[East Africa's First Computers.]]></title><description><![CDATA[The First Computers in East Africa and what became of them.]]></description><link>https://jkitsao.substack.com/p/east-africas-first-computers</link><guid isPermaLink="false">https://jkitsao.substack.com/p/east-africas-first-computers</guid><dc:creator><![CDATA[Jackson kitsao]]></dc:creator><pubDate>Tue, 07 Apr 2026 15:11:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c9e5f1b7-5e8f-48ae-a554-b2c15d00cc80_1746x932.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>With Artemis II finally heading back to the moon after 54 years, it is hard not to look back at the tech that started it all. The Apollo era ran on <a href="https://www.computerhistory.org/revolution/memory-storage/8/253">Core Rope Memory</a>, tiny magnetic rings hand-woven with copper wire to hardcode instructions into the guidance computer. Hand-built, physical, and almost impossibly brave.</p><p>But digging into that era pulled me somewhere unexpected. Somewhere closer to home.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://jkitsao.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Localhost KE! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>While NASA was literally weaving memory by hand to reach the moon, the first computers were arriving on the shores of East Africa. The East African Railways was unboxing machines built on that exact same generation of technology. We were stepping into the computer age using the same state of the art that was powering the Space Race.</p><p>But what problem was so big it needed a computer to solve it? In East Africa in the 1960s, the answer was sitting on the railway.</p><div><hr></div><h2>The Railway and the Ledger Problem</h2><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/677d2cc1-4630-475e-820f-fd848c199f39_800x599.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/add260a5-25bd-41cc-93b0-411ec17f8b0b_782x600.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58ef5abf-bf08-414f-9359-9ff5822e1432_800x584.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/60e3c2dc-cafe-43fa-b7f4-b99e321f9455_640x449.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c322c497-587f-49a8-8c75-bc46fdc67907_620x768.jpeg&quot;}],&quot;caption&quot;:&quot;EAR&amp;H operated one of the most complex logistics networks in sub-Saharan Africa.&quot;,&quot;alt&quot;:&quot;East African Railways locomotive&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/222895ee-fe74-4838-bcc3-5939f3048d14_1456x1210.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p><em><br></em>The East African Railways and Harbours Corporation was formed in 1948, consolidating the Kenya and Uganda Railways and Harbours with the Tanganyika Railway under the East African High Commission. To understand why it existed, you need a short detour into the Treaty of Versailles.</p><p>When Germany lost the First World War in 1919, it lost its colonies. German East Africa, which had included what is now Tanzania and Rwanda and Burundi, was carved up and distributed as League of Nations mandates to the surrounding colonial powers. Britain absorbed the mainland territory, renamed it Tanganyika, and found itself administering a railway network that connected awkwardly to the ones it already ran in Kenya and Uganda. The 1948 merger was the administrative tidying up of that inheritance.</p><p>By the time computing became relevant to EAR&amp;H, the organization was running rail lines from Mombasa on the Indian Ocean coast through Nairobi and up into Uganda, harbour operations at Kilindini, inland shipping on Lake Victoria, Lake Kyoga, Lake Albert, and stretches of the Nile. It was one of the most complex logistics operations in sub-Saharan Africa, and it employed tens of thousands of people across three territories, each with their own pay grades, overtime rates, allowances, and schedules.</p><p>Payroll, in other words, was a nightmare.</p><p>The tools available for dealing with that nightmare, before computers arrived, were punched card accounting machines. The lineage of these machines runs directly back to <a href="https://en.wikipedia.org/wiki/Herman_Hollerith">Herman Hollerith</a>, who in 1889 patented a tabulating machine that recorded data as holes punched into cards roughly 18 centimeters long and 8 centimeters wide, with 80 columns and 12 rows of possible punch positions. The holes could represent letters or numbers. The cards could be fed through sorters, collators, and tabulators, which were electromechanical monsters driven by motors of three or four horsepower, their logic implemented entirely through gears, wheels, clutches, and wiring panels that an operator would reconfigure for each new job.</p><p>These machines could add and subtract. They could sort. They could print. They could not multiply or divide, not reliably. There was an EAM machine called a multiplier that used vacuum tubes to perform multiplication, but vacuum tubes burned out, and when you had hundreds of them processing thousands of billing cards, the failure rate was a practical problem that defeated the purpose.</p><p>Two companies had grown from Hollerith&#8217;s original patents. In Britain, the British Tabulating Machine Company, BTM, had been manufacturing its own machines since 1920. In the early 1950s it merged with a rival called Powers-Samas to form International Computers and Tabulators, ICT. In the mid-1950s, ICT East Africa set up its Nairobi operation on the second floor above the Boero car dealership showroom, directly opposite the Donovan Maule Theatre. Boero sold Fiats. ICT sold the future.</p><p></p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0eeb5767-f957-47a0-b2f8-e526f8ca46bf_192x272.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0d9036b-04a0-4ec6-b980-aee2c811ea9e_193x283.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/30b51250-fa99-424a-ae91-6d4cd79e0e4a_1060x2048.jpeg&quot;}],&quot;caption&quot;:&quot;Originally the headquarters for ICT (East Africa) currently Starehe, Kenyatta Ave, Nairobi&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec1ee66c-128b-462d-a5a4-347208775aec_1456x474.png&quot;}},&quot;isEditorNode&quot;:true}"></div><div><hr></div><h2>The First Real Computer in East Africa</h2><p><em>[ ICT 1202 console at EAR&amp;H] </em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9SOQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cd2ff-beb7-4d3c-a468-c33cba05c28d_850x572.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9SOQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cd2ff-beb7-4d3c-a468-c33cba05c28d_850x572.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9SOQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cd2ff-beb7-4d3c-a468-c33cba05c28d_850x572.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9SOQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cd2ff-beb7-4d3c-a468-c33cba05c28d_850x572.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9SOQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cd2ff-beb7-4d3c-a468-c33cba05c28d_850x572.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9SOQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cd2ff-beb7-4d3c-a468-c33cba05c28d_850x572.jpeg" width="850" height="572" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/376cd2ff-beb7-4d3c-a468-c33cba05c28d_850x572.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:572,&quot;width&quot;:850,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:94375,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jkitsao.substack.com/i/193018925?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cd2ff-beb7-4d3c-a468-c33cba05c28d_850x572.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9SOQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cd2ff-beb7-4d3c-a468-c33cba05c28d_850x572.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9SOQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cd2ff-beb7-4d3c-a468-c33cba05c28d_850x572.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9SOQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cd2ff-beb7-4d3c-a468-c33cba05c28d_850x572.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9SOQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F376cd2ff-beb7-4d3c-a468-c33cba05c28d_850x572.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">At the left we can see the operator's console, to the right is the card-punch, and behind that is the tabulator.</figcaption></figure></div><p>The machine ICT East Africa sold to EAR&amp;H was the ICT 1202, also known as the HEC, for Hollerith Electronic Computer. The name acknowledged the lineage honestly. It was delivered and operational by around 1960, making it the first real computer in East Africa, arguably the first in sub-Saharan Africa outside of South Africa.</p><p>It was a valve machine. That means vacuum tubes, thousands of them, each one a glass envelope containing a heated filament and a set of electrodes through which current could be modulated to perform logic operations. Before transistors, this was what computing looked like: hot, fragile, and hungry.</p><p>The 1202&#8217;s architecture centered on a drum memory, a rotating magnetic cylinder that stored data on its surface and was read by stationary heads as the drum spun past. Input and output was handled by a modified ICT 901 tabulator acting as a peripheral: card reading, printing, and card punching all went through this machine. The console, a desk-like structure with a hood over its panels, had three sections. On the left, electrical meters: mains voltage, DC voltages, current draw, drum RPM. In the center, rows of toggle switches for operator input. On the right, banks of small neon bulbs that reflected the contents of registers. The hood was not decorative. Fluorescent overhead lighting operates at the same flicker frequency as neon indicators, and without the hood you simply could not see what the machine was telling you.</p><p>The installation at EAR&amp;H ran into two immediately practical problems that nobody in the UK had anticipated.</p><p>The first was heat. Nairobi sits at 1,700 meters above sea level, which moderates the temperature but does not eliminate the need for cooling a room full of hot valves. Air conditioning as a commercial technology did not yet exist in Nairobi in 1960 in any form that could handle this load. The solution was engineering specific to that installation: a custom-fabricated extractor hood was fitted over the CPU cabinets, connected to ducts that ran to the outside wall. The building itself helped. The old wooden structure where the computer was housed sat on short poles about a foot off the ground, like many older Nairobi buildings. Large vents were cut into the floor. Cool outside air came up through the floor vents, through the machine, and was expelled through the roof ducts. The computer breathed Nairobi air.</p><p>The second problem was power. Valve filaments are essentially light bulb filaments, and like light bulbs, they draw a substantial surge of current on startup to heat the filament from cold. Multiply that by several thousand valves switching on simultaneously, and the power demand was enormous. So enormous that the local electrical substation serving that neighborhood could not simultaneously support the 1202 starting up and the bakery up the road running its overnight ovens. The bakery baked through the night. The computer had to wait.</p><p>The solution was Kuldeep Singh Sunde, a police officer who earned extra income by arriving every morning at five, calling the bakery to confirm the ovens were off, and then spending thirty minutes on the startup sequence. Different units had to be energized in a specific order, spreading the current demand across time rather than concentrating it. Kuldeep would finish the sequence and go on to his regular police duties. The engineers would arrive to find the machine warm and ready.</p><p>The primary job was payroll. The 1202 was programmed to compute salaries for thousands of employees with graduated pay scales, different overtime rates, allowances for bicycle use on the job, neatness bonuses for station masters who kept their stations whitewashed and planted with flowers, and the various other categories that a large railway organization accumulates over decades of employment agreements. It was also used experimentally for computing optimum cut-and-fill values in railway route construction, which is genuinely interesting: the problem of how much earth to excavate from a hill versus how much to use in filling a valley when building a level track bed has a non-trivial optimization answer, and the 1202 was being used to find it.</p><div><hr></div><h2>The Snake and the Drum</h2><p><em>[IMAGE:  1202 installation]</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jWAm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6b192da-3b6f-4e34-97b7-c188f8135caf_850x579.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jWAm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6b192da-3b6f-4e34-97b7-c188f8135caf_850x579.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jWAm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6b192da-3b6f-4e34-97b7-c188f8135caf_850x579.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jWAm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6b192da-3b6f-4e34-97b7-c188f8135caf_850x579.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jWAm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6b192da-3b6f-4e34-97b7-c188f8135caf_850x579.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jWAm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6b192da-3b6f-4e34-97b7-c188f8135caf_850x579.jpeg" width="850" height="579" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c6b192da-3b6f-4e34-97b7-c188f8135caf_850x579.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:579,&quot;width&quot;:850,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:113012,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jkitsao.substack.com/i/193018925?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6b192da-3b6f-4e34-97b7-c188f8135caf_850x579.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jWAm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6b192da-3b6f-4e34-97b7-c188f8135caf_850x579.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jWAm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6b192da-3b6f-4e34-97b7-c188f8135caf_850x579.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jWAm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6b192da-3b6f-4e34-97b7-c188f8135caf_850x579.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jWAm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6b192da-3b6f-4e34-97b7-c188f8135caf_850x579.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">At the back of the room we can see the two main cabinets of the CPU with the operator's console to the right.</figcaption></figure></div><p>One night a puff adder came in from the cold.</p><p>The building&#8217;s elevated construction, which had been an asset for ventilation, was a liability for security. The crawl space beneath it connected to the outside world, and at some point during the night, a puff adder entered through the floor vents and made its way into the CPU cabinet. The machine had been shut down for the night. The extractor fans were off. The drum memory&#8217;s sense amplifier section retained warmth longer than the rest of the machine. The snake found it, coiled up, and went to sleep.</p><p>That particular morning there had been some trouble in a part of Nairobi with a large Somali population. Kuldeep Singh arrived for his five o&#8217;clock shift carrying his service pistol. He went through the routine: called the bakery, confirmed the ovens were off, began the startup sequence. When he opened the cabinet door to energize the drum memory unit, he was looking directly at a puff adder, awake, startled, and rearing.</p><p>The snake struck. Kuldeep moved fast enough. His reflexive recoil made him stumble backward. The snake followed him onto the floor. He drew the pistol and fired.</p><p>He missed the snake. He did not miss the drum memory of East Africa&#8217;s first computer.</p><p>The snake went back into the dark. Kuldeep was unharmed. The ICT 1202, pride of East African Railways, was finished. The drum was the irreplaceable heart of the machine. A replacement would have to be manufactured in the UK and shipped out, a process measured in months. It turned out not to matter, because the upgrade to the next generation machine had already been ordered and the replacement was already on a ship.</p><p>The disposal of the 1202 was its own small bureaucratic drama. The machine was leased to EAR&amp;H by ICT East Africa, a private commercial entity. When it was first imported, no import duty had been levied because it was going straight into use by a government operation, effectively the government taxing itself. Now that the machine was reverting to a private company, the duty became payable. The duty on several tons of specialized computing hardware, even destroyed hardware, would be substantial. The only alternative was export.</p><p>Shipping a pile of wrecked computing machinery back to the UK was not an attractive use of money. But the law only required that it leave East African territory, not that it go anywhere in particular. The 1202 was loaded onto a railway goods wagon, taken to Mombasa, transferred to a barge in Kilindini Harbour, towed by tugboat out beyond the three-mile territorial limit, and in the presence of official witnesses from Customs and Excise, tipped over the side.</p><p>East Africa&#8217;s first computer rests today under several hundred feet of water in the Indian Ocean, approximately five miles east of Kilindini. It is, objectively, one of the more dramatic exits in the history of computing.</p><div><hr></div><h2>The Second Generation</h2><p><em>[ ICT 1500 / RCA 301 ]</em></p><div class="image-gallery-embed" data-attrs="{&quot;gallery&quot;:{&quot;images&quot;:[{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/542d8217-8341-43e1-b182-e708b229e83d_606x431.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1da83db-24f1-42d9-88e2-887ee4533551_632x421.jpeg&quot;},{&quot;type&quot;:&quot;image/jpeg&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f70b38f-3b84-422a-a45b-68328ccd8a8a_775x521.jpeg&quot;}],&quot;caption&quot;:&quot;The ICT 1500 at EAR&amp;H and at EAP&amp;L (A rebadged RCA 301)&quot;,&quot;alt&quot;:&quot;&quot;,&quot;staticGalleryImage&quot;:{&quot;type&quot;:&quot;image/png&quot;,&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f42a21f-0b9e-4447-a6d6-cb883bfa40e4_1456x474.png&quot;}},&quot;isEditorNode&quot;:true}"></div><p>The machine that replaced the 1202 was a different kind of computer entirely, not just an upgrade but a generational leap. The ICT 1500 was almost entirely transistorized. Transistors had been invented at Bell Labs in 1947 and by the early 1960s were cheap and reliable enough to replace vacuum tubes in logic circuits. Where the 1202 had thousands of fragile, hot, power-hungry valves, the 1500 had solid-state components that ran cooler, drew less power, and failed far less often.</p><p>The name was British but the machine was American. ICT had been racing to complete its own second-generation design in the UK, but transistors had made their valve-era architecture obsolete faster than anticipated. To bridge the gap, they licensed the RCA 301 from Radio Corporation of America and sold it under their own badge. The rebadging was transparent to most customers. What they got was a machine built in the United States to American engineering standards, wearing a British nameplate and supported by ICT&#8217;s East African service organization.</p><p>The EAR&amp;H installation was configured with 20,000 six-bit characters of magnetic core memory, six tape drives, an Anelex printer capable of 1,000 lines per minute, an RCA card reader running at 1,000 cards per minute, and an ICT card punch at 100 cards per minute. The tape drives transferred data at 10,000 characters per second, roughly eighty times faster than the old 1202&#8217;s card-based throughput. The Anelex printer was a drum printer: a cylinder with the characters A through Z and 0 through 9 engraved around its circumference, repeated 136 times for 136 print columns, spinning continuously at 1,000 revolutions per minute while 136 individual hammer solenoids fired at the precise moment the correct character came around in each column position. It was loud, mechanical, and fast.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sRHA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605a173d-e09f-4b89-96b4-22774c2b2b2f_700x467.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sRHA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605a173d-e09f-4b89-96b4-22774c2b2b2f_700x467.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sRHA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605a173d-e09f-4b89-96b4-22774c2b2b2f_700x467.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sRHA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605a173d-e09f-4b89-96b4-22774c2b2b2f_700x467.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sRHA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605a173d-e09f-4b89-96b4-22774c2b2b2f_700x467.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sRHA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605a173d-e09f-4b89-96b4-22774c2b2b2f_700x467.jpeg" width="700" height="467" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/605a173d-e09f-4b89-96b4-22774c2b2b2f_700x467.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:467,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:153777,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jkitsao.substack.com/i/193018925?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605a173d-e09f-4b89-96b4-22774c2b2b2f_700x467.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sRHA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605a173d-e09f-4b89-96b4-22774c2b2b2f_700x467.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sRHA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605a173d-e09f-4b89-96b4-22774c2b2b2f_700x467.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sRHA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605a173d-e09f-4b89-96b4-22774c2b2b2f_700x467.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sRHA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F605a173d-e09f-4b89-96b4-22774c2b2b2f_700x467.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">front of the Anelex printer which printed on "Fanfold" paper up to 18" wide and 136 characters on a line.</figcaption></figure></div><p>Programming was done in FAS, the Fifteen Hundred Assembler, or COBOL. There was no operating system in the modern sense. The compiler ran from overlays stored on tape. A minimal COBOL compilation took ninety minutes. A production program, two to three hours. The practical consequence was that engineers quickly learned to save their compiled binaries and debug from there, applying corrections directly to the object program in octal notation rather than modifying source code and recompiling. It was not elegant but it was efficient.</p><p>The console was divided into three panels. On the left, error indicator lights. In the center, buttons for selecting what was to be displayed, memory address or status codes. On the right, indicator buttons with backlights that showed the contents of a selected memory word in binary, and which could themselves be pressed to modify the value before writing it back. This meant an operator could reach into a running program&#8217;s memory, change a specific word, and continue execution. That kind of direct hardware access is unimaginable in modern computing, but in 1964 it was a standard debugging technique.</p><p>Loading a program required a bootstrap sequence so minimal it is almost elegant in its self-referential construction. The operator first keyed a very short sequence of instructions directly into memory from the console. This sequence was just enough to read a single card. That card contained seven instructions and a jump. Those instructions read a second card with more instructions, which read a third, and so on, each stage pulling in slightly more of the loader until the full loading program was in memory and could then load the actual production program from tape. The machine taught itself to read, one card at a time, every morning.</p><p>A second ICT 1500 went to East African Power and Light. Their billing problem was exactly the kind of thing that punched card equipment had never handled well: tiered electricity rates, charging customers one price for the first hundred units consumed and a higher price for the next, with different rates again above that. The mathematics was straightforward but the logical branching was beyond what electromechanical tabulators could do. The 1500 handled it easily.</p><p>EAP&amp;L only used their machine during day shifts. At night, ICT East Africa ran it as a service bureau, selling compute time to organizations that could not justify their own hardware. Among the night-shift customers were the Post Office Savings Bank, processing savings account records, and the Kenya Tea Development Authority, KTDA, generating payments to smallholder tea farmers across the country. Those farmers, many of them working plots of a hectare or two in the hills of Central Province and the Rift Valley, received their payments partly because a transistorized computer of American manufacture was running their accounts overnight in Nairobi.</p><p>The third 1500 went to Dar es Salaam, leased to the East African Customs and Excise department. Its end was the most remarkable of the three. During the upheavals of the 1964 Zanzibar Revolution and the federation that created Tanzania, the machine disappeared from its installation. British intelligence concluded that someone with detailed technical knowledge had systematically dismantled it and arranged for its shipment to China. The People&#8217;s Republic, reportedly, received it intact, carefully disassembled it further, studied its engineering, and used it as an educational specimen for their developing computer industry. A machine that had processed the customs ledgers of colonial East Africa became a teaching tool in Mao&#8217;s China. You cannot invent this history.</p><p>Uganda followed its own path. The Uganda Electricity Board had upgraded from electromechanical punched card equipment to an ICT 1004, a rebadged UNIVAC 1004, which was somewhere between a tabulator and a real computer. It had no magnetic tape storage and was programmed through plug boards like the old EAM machines rather than through a programming language, but it could multiply, divide, and make more complex logical decisions than anything before it. It ran until it broke and no one could be found to fix it. It too disappeared, eventually, into the general entropy of the Idi Amin years.</p><div><hr></div><h2>The Man Who Connects It All</h2><p><em>[Fair warning: this next section is pure geek territory. The East Africa history is mostly done. This is me falling down a rabbit hole]</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ooFK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30824fc6-9591-4d66-9ab8-70ff63d39352_800x542.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ooFK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30824fc6-9591-4d66-9ab8-70ff63d39352_800x542.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ooFK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30824fc6-9591-4d66-9ab8-70ff63d39352_800x542.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ooFK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30824fc6-9591-4d66-9ab8-70ff63d39352_800x542.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ooFK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30824fc6-9591-4d66-9ab8-70ff63d39352_800x542.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ooFK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30824fc6-9591-4d66-9ab8-70ff63d39352_800x542.jpeg" width="800" height="542" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/30824fc6-9591-4d66-9ab8-70ff63d39352_800x542.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:542,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:147042,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jkitsao.substack.com/i/193018925?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30824fc6-9591-4d66-9ab8-70ff63d39352_800x542.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ooFK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30824fc6-9591-4d66-9ab8-70ff63d39352_800x542.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ooFK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30824fc6-9591-4d66-9ab8-70ff63d39352_800x542.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ooFK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30824fc6-9591-4d66-9ab8-70ff63d39352_800x542.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ooFK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30824fc6-9591-4d66-9ab8-70ff63d39352_800x542.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>All of this history, the photographs of the machines, the stories of the bakery and the snake and the Indian Ocean, came to light through one man: <a href="http://www.couperus.org/">Jitze Couperus</a>.</p><p>Control Data Corporation was the company that made IBM nervous. Built around one obsession: pure speed. The kind of machines that weapons labs and weather services and nuclear physicists lined up for. And the man behind that obsession was <strong><a href="https://en.wikipedia.org/wiki/Seymour_Cray">Seymour Cray</a></strong>. That is the company whose employee card Jitze Couperus carried.</p><p>He was born in Nairobi. His education at the Prince of Wales School, a boarding school of about 600 boys, was cut short by the chaos of Congolese independence in 1960. When Belgium granted independence to the Congo, the country collapsed within days into secessionist violence and inter-tribal warfare. Belgian refugees streamed across borders and the school&#8217;s dormitories were commandeered to house them. Couperus was a senior with years in the Combined Cadet Corps, the school&#8217;s equivalent of ROTC, and he spoke Dutch, which made him useful for communicating with the Flemish-speaking Belgians. He stayed to help manage the chaos while other boys were sent home.</p><p>Once the situation at the school stabilized, his skills were redirected closer to the crisis. He was called up into the Kenya Regiment and seconded to the 4th Battalion King&#8217;s African Rifles in Uganda to help manage the growing refugee problem. He served about six months, was demobilized, and came out as a civilian policeman filling administrative gaps in the colonial civil service as the independence transition accelerated.</p><p>The colonial government, watching its experienced administrative staff decline to renew contracts and leave for Britain or elsewhere, decided to offer certain people an incentive to stay through the transition. The offer to Couperus was this: stay until independence and the Government would pay for retraining in a new profession. He had already done some part-time work for BTM East Africa dealing with punched card equipment. BTM, by then becoming ICT, agreed to hire him on condition that he first completed a two-year apprenticeship with the British Post Office to learn Computing Machinery.</p><p>This is where the story gets strange.</p><p>In Britain, the Post Office was not merely the mail. It was also the telephone company, responsible for all research, design, and deployment of telephone, telex, and telegraph infrastructure across the UK. And it had a history in the early development of computers that was still, in the early 1960s, largely classified.</p><p>Couperus&#8217;s apprenticeship sent him to the Post Office Laboratories at Dollis Hill in northwest London and to the Post Office Training School at Bletchley, a Victorian manor house in a small village north of London that would later become famous as the wartime home of Britain&#8217;s codebreakers. His time alternated between periods at those facilities and brief placements with ICT customers around the UK, the classic British sandwich course structure.</p><p>His tutor at Bletchley was a man named Tommy Flowers.</p><p>Couperus had no idea who that was. Flowers introduced himself as being employed by Standard Telephones and Cables, a manufacturing company based in Harlow with close ties to the Post Office. His prior career was not discussed. It was classified. And it would remain substantially classified for another decade.</p><p>What Couperus did not know was that Tommy Flowers had been the engineer who built Colossus.</p><p>Colossus was the world&#8217;s first programmable electronic computer, built at Bletchley Park during World War II to help break the Lorenz cipher used by the German High Command. It had come about because Flowers, trained as an electronics engineer, had spent the years before the war trying to build an electronic telephone exchange with no moving parts, using vacuum tubes to replicate the logic of electromechanical relays and stepping switches. He had not entirely succeeded, but in the attempt had accumulated a unique body of knowledge about how to build the basic computational building blocks in electronics: flip-flops, counters, Boolean logic gates, clock sequencers. Nobody else in Britain had this specific combination of theoretical understanding and practical experience.</p><p>When Turing&#8217;s team at Bletchley needed hardware that could process data at electronic speeds, Flowers was the man who could build it. He proposed a machine using 1,800 vacuum tubes, at a time when the most complex electronic device previously built had used about 150. Bletchley management was skeptical. Flowers funded part of the construction himself. His team at Dollis Hill built the first machine in eleven months. Colossus Mark 1 operated in January 1944 at Bletchley Park. Mark 2, with 2,400 tubes, went operational on June 1, 1944, four days before D-Day, and immediately provided intelligence on German defenses that shaped the invasion plan.</p><p>Ten Colossus machines were built and used during the war. All were dismantled afterward except two, which were moved to GCHQ and used through the Cold War before being decommissioned in 1959 and 1960. The entire program was classified for decades. Flowers received no public recognition for his achievement during his lifetime. He remained, to his apprentices in the early 1960s, simply a quiet man with an extraordinary depth of knowledge about how computers actually worked.</p><p>What Flowers assigned Couperus, as a final practicum for his apprenticeship, was this: take an existing program running on a machine in Cambridge and speed it up by a factor of ten.</p><p>They achieved a factor of thirty.</p><p>The method was to redesign a core data structure and introduce a new hardware instruction. The program was operating on what amounted to a three-dimensional stack of boolean matrices. The critical operation required counting how many positions in a particular column through that stack had a value of one. In the existing implementation this required a loop: iterate through each sheet, test the bit, increment a counter, repeat. Slow.</p><p>Couperus and Flowers redesigned the storage layout so that all the bits at a given X,Y coordinate across the full stack of sheets were packed together into a single word of memory. Then they designed a new instruction that could count the number of set bits in that word in a single operation rather than a loop. The speed improvement came from eliminating the loop entirely for the inner computation.</p><p>In CDC  parlance, what they had designed was the population count instruction, popcount, which counts the number of set bits in a word. <strong>Seymour Cray</strong> put it in the CDC 6600. He put it in every machine he ever designed after that. The popcount instruction remains in modern processor architectures today, including the x86 POPCNT instruction available on every desktop and laptop built in the last fifteen years.</p><p>Whether Cray arrived at it entirely independently or whether some thread of communication connected his design decisions back to what Flowers and Couperus had built in a workshop at Bletchley, Couperus said he was never certain. What he knew was that when he eventually sat down at a CDC machine and read the instruction set architecture, the instruction was there.</p><p>The path from Bletchley to Palo Alto was improbable. Couperus had been working in the Netherlands for ICL, the successor to ICT, and decided he wanted to emigrate to the United States. He applied to every major American computer company: IBM, UNIVAC, Burroughs, Honeywell. Without a bachelor&#8217;s degree, let alone a master&#8217;s, he could not get through the door for an interview. He applied at the Australian consulate in Rotterdam for emigration paperwork instead.</p><p>Within days, a man with a crew cut, white socks, and large wing-tip shoes invited him for coffee at a restaurant near the American Embassy in The Hague. The man identified himself as an embassy attach&#233;. His first question was whether Couperus was the same person who had worked with Tommy Flowers. His second question was why Australia.</p><p>Couperus said he wanted to work for a computer company but nobody in America would talk to him. The attach&#233; assured him that would not be a problem and offered to make introductions. A few days later, a phone call came from someone named <strong>Seymour Cray (a legend)</strong>, who offered a job at Control Data Corporation, with visa assistance included. Hardware research in Chippewa Falls, Wisconsin, or software research in Palo Alto, California. Couperus chose Palo Alto. He joined CDC and spent thirty-two years there.</p><p>He retired in Silicon Valley, having left Nairobi as a part-time punched card technician and arrived in California as one of the people in Seymour Cray&#8217;s organization who understood, at a very deep level, how the machines worked. He understood because he had built a piece of them.</p><div><hr></div><h2>The Ground It All Stands On</h2><p>This history matters for a reason that goes beyond the technical curiosity of it.</p><p>East Africa in the early 1960s was not a passive recipient of technology developed elsewhere and delivered as a finished product. The organizations that used these machines, EAR&amp;H, EAP&amp;L, KTDA, the Post Office Savings Bank, were not test cases or charitable experiments. They were customers with real operational requirements, and the solutions built for them required genuine engineering judgment: a custom cooling hood fabricated specifically for Nairobi&#8217;s conditions, a startup sequence coordinated with a bakery&#8217;s overnight schedule, a service bureau model that split machine time between a utility company and smallholder tea farmers who needed to be paid.</p><p>And one of the engineers who came out of that environment carried knowledge that ended up embedded in the architecture of the machines that defined what supercomputing meant for twenty years.</p><p>The EAR&amp;H itself did not outlast the political era that created it. The Arusha Declaration of 1966 split harbours from railways in the name of efficiency. By 1977, the East African Community had dissolved under the weight of the different ideological directions taken by Kenya, Tanzania, and Uganda, and the mutual suspicion between Kenyatta, Nyerere, and Idi Amin had made cooperation impossible. The shared infrastructure was partitioned into three national systems.</p><p>The computers outlasted the corporation. The snake outlasted the computer. The instruction that Flowers and Couperus designed in a workshop connected to Bletchley Park outlasted all of them, still running in silicon today in every processor that implements POPCNT.</p><p>That is the thread. Nairobi, 1960s.</p><p>This city never ceases to amaze me. Every time I think I have mapped its history, something like this surfaces. A thread that runs from a railway payroll straight into the architecture of supercomputers in Silicon Valley. There is more here than we give ourselves credit for.</p><p>And as Artemis II carries its crew back to the moon after 54 years, safe travels to the astronauts. Come home safe.</p><p>Stay curious.</p><div><hr></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://jkitsao.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Localhost KE! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Inside the First M-Pesa Backend (2005–2013)]]></title><description><![CDATA[How Five Engineers Built Kenya&#8217;s Money Rail with .NET, SQL Server, and SMS]]></description><link>https://jkitsao.substack.com/p/inside-the-first-m-pesa-backend-20052013</link><guid isPermaLink="false">https://jkitsao.substack.com/p/inside-the-first-m-pesa-backend-20052013</guid><dc:creator><![CDATA[Jackson kitsao]]></dc:creator><pubDate>Mon, 16 Mar 2026 13:00:31 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8812cd44-5cca-44a2-94da-19005bbae688_1188x660.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;re a developer in Kenya like me, there&#8217;s this strange feeling about M-Pesa.</p><p>We use it constantly. We build entire businesses around its APIs. We complain when there&#8217;s hiccups.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://jkitsao.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Localhost KE! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>But honestly, very few of us know how the original system was actually built under the hood. The big story everyone tells is the impact: financial inclusion, the agent networks, Africa&#8217;s mobile money revolution. The engineering side? It&#8217;s stayed pretty hidden.</p><p>I got curious after a chat with my manager she worked in telco back in the early 2010s at Ericsson, and we were talking about how Ericsson was slow to really push a mobile wallet solution while Huawei moved fast and ended up powering the next phase of M-Pesa (after that big 2015 migration from the old German-hosted setup). </p><p>What I found digging around online and in old technical write-ups is genuinely fascinating. Five engineers from a small consultancy. A few intense months to ship something usable. Feature phones on networks that dropped calls mid-sentence. And from that they created a system that, in just a few years, was moving roughly 10% of Kenya&#8217;s GDP.<br><br>The first version feels so alive and so Kenyan: pragmatic, clever shortcuts, decisions made because there simply weren&#8217;t enough hands to do it any other way.<br>Later versions changed a lot of that spirit. Not always for the better, in my opinion. But that&#8217;s for later. Let&#8217;s talk about the beautiful, scrappy original version.<br></p><h3>A Small Consultancy, Intense Pressure, and a Clear Mandate.</h3><p>In 2005, Vodafone  through a DFID-funded initiative  commissioned a small UK-based technology consultancy called Sagentia (based in Cambridge) to develop the prototype for what became M-Pesa. The core team consisted of roughly five engineers tasked with delivering a functional system in just a few months.</p><p>The constraints were unforgiving: limited manpower, a tight pilot deadline, and the need to create something secure and reliable on low-end devices in emerging markets. Safaricom provided essential local support during the pilot (desk space, integration help, a small on-ground team led by figures like Susie Lonie), but the primary software development  the .NET backend, communications layer, and central account management  was handled by Sagentia.</p><p>This actually reminds me of the original Xbox project at Microsoft. It started with a small group of engineers from the DirectX team  repurposing Windows kernel components, DirectX APIs, and PC hardware under intense pressure to ship something viable. They hacked together prototypes by stripping down and adapting existing Microsoft tech they knew intimately shortcuts driven by the need to move fast, prove the concept to leadership, and ultimately deliver a console that bridged PC gaming strengths into a new market.</p><p>Same vibe here: small teams under real constraints often achieve the most by building on what they already master rather than inventing everything from scratch.</p><p><strong> High-level early M-Pesa stack diagram</strong><br><em>( SIM Toolkit app + SMS/USSD arrows pointing to SMSC &#8594; in-country Local Integration Servers (LIS) &#8594; forwarded to remote core &#8594; MSMQ cluster &#8594; multiple TranProc workers &#8594; SQL Server at the bottom. Highlighted; MS-DTC bridging MSMQ and DB.&#8221;)</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hUAg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c36e6b-4e7a-41eb-bac4-25d19cbf1256_683x1529.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hUAg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c36e6b-4e7a-41eb-bac4-25d19cbf1256_683x1529.png 424w, https://substackcdn.com/image/fetch/$s_!hUAg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c36e6b-4e7a-41eb-bac4-25d19cbf1256_683x1529.png 848w, https://substackcdn.com/image/fetch/$s_!hUAg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c36e6b-4e7a-41eb-bac4-25d19cbf1256_683x1529.png 1272w, https://substackcdn.com/image/fetch/$s_!hUAg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c36e6b-4e7a-41eb-bac4-25d19cbf1256_683x1529.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hUAg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c36e6b-4e7a-41eb-bac4-25d19cbf1256_683x1529.png" width="683" height="1529" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36c36e6b-4e7a-41eb-bac4-25d19cbf1256_683x1529.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1529,&quot;width&quot;:683,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:117091,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jkitsao.substack.com/i/191111168?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9fdd05b-863b-4725-86eb-0ee1eee3b089_685x1641.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hUAg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c36e6b-4e7a-41eb-bac4-25d19cbf1256_683x1529.png 424w, https://substackcdn.com/image/fetch/$s_!hUAg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c36e6b-4e7a-41eb-bac4-25d19cbf1256_683x1529.png 848w, https://substackcdn.com/image/fetch/$s_!hUAg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c36e6b-4e7a-41eb-bac4-25d19cbf1256_683x1529.png 1272w, https://substackcdn.com/image/fetch/$s_!hUAg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c36e6b-4e7a-41eb-bac4-25d19cbf1256_683x1529.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br></p><h3>The Real API Was SMS (and the Network Was the Message Broker)</h3><p>One of the most interesting aspects of the early system is that it didn&#8217;t behave like a modern fintech backend at all.</p><p>Today we expect payment systems to expose REST APIs over HTTP.</p><p>But the early M-Pesa system used something very different.</p><p><strong>SMS was the API layer.</strong></p><p>Every financial command  sending money, checking balance, withdrawing cash  was encoded as an encrypted SMS message.</p><p>A simplified request flow looked something like this:</p><pre><code><code>SIM Toolkit App
      &#8595;
Encrypted SMS
      &#8595;
Mobile Network SMSC
      &#8595;
Local Integration Server
      &#8595;
MSMQ Queue
      &#8595;
Transaction Processor (TranProc)
      &#8595;
SQL Server
      &#8595;
Outgoing Queue
      &#8595;
SMS Confirmation</code></code></pre><p>From a modern developer&#8217;s perspective, the system was essentially treating the <strong>telecom network itself as a distributed messaging system</strong>.</p><p>Instead of HTTP requests, the backend processed <strong>financial instructions delivered through SMS packets</strong>.</p><p><strong> Full transaction request flow diagram</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4pP4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f34041-e5ea-42f0-bf8d-5c7193e842ce_846x1521.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4pP4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f34041-e5ea-42f0-bf8d-5c7193e842ce_846x1521.png 424w, https://substackcdn.com/image/fetch/$s_!4pP4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f34041-e5ea-42f0-bf8d-5c7193e842ce_846x1521.png 848w, https://substackcdn.com/image/fetch/$s_!4pP4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f34041-e5ea-42f0-bf8d-5c7193e842ce_846x1521.png 1272w, https://substackcdn.com/image/fetch/$s_!4pP4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f34041-e5ea-42f0-bf8d-5c7193e842ce_846x1521.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4pP4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f34041-e5ea-42f0-bf8d-5c7193e842ce_846x1521.png" width="846" height="1521" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83f34041-e5ea-42f0-bf8d-5c7193e842ce_846x1521.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1521,&quot;width&quot;:846,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:164903,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jkitsao.substack.com/i/191111168?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1903268e-d29c-44dc-8922-85d20e822253_846x1613.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4pP4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f34041-e5ea-42f0-bf8d-5c7193e842ce_846x1521.png 424w, https://substackcdn.com/image/fetch/$s_!4pP4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f34041-e5ea-42f0-bf8d-5c7193e842ce_846x1521.png 848w, https://substackcdn.com/image/fetch/$s_!4pP4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f34041-e5ea-42f0-bf8d-5c7193e842ce_846x1521.png 1272w, https://substackcdn.com/image/fetch/$s_!4pP4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f34041-e5ea-42f0-bf8d-5c7193e842ce_846x1521.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br></p><h3>The Little Workers That Moved Kenya&#8217;s Money  and a Nod to the Future</h3><p>The encrypted SMS never hit the database directly.</p><p>It landed in MSMQ  incoming queue, outgoing queue. That decoupling was magic. Network drops? Queues just buffer. Spike in traffic? No problem.</p><p>Then the real workhorses kicked in: <strong>TranProc</strong> (Transaction Processor).</p><p>Each TranProc was a simple .NET process that would:</p><ol><li><p>Grab a message from the incoming queue</p></li><li><p>Decrypt and decode it</p></li><li><p>Call the relevant stored procedures</p></li><li><p>Decide what response messages to send</p></li><li><p>Push them to the outgoing queue</p></li></ol><p>You could (and did) run many TranProcs side by side. More load? Launch another instance. It was message-driven before anyone called it that  all on plain MSMQ.</p><p>Reading this again, the parallel TranProcs remind me so much of Cloudflare Durable Objects, which came around 20 years later. Durable Objects are these globally unique, single-threaded instances that combine compute and storage in one tight package each one gets its own persistent state (KV or even SQLite now), processes requests sequentially for strong consistency, and you can spin up effectively infinite ones across the edge.</p><p>The TranProcs were doing a primitive version of that idea: independent workers pulling from a shared queue, each handling transactions in isolation but coordinating through the queue and database for consistency. No fancy global routing or edge distribution, but the spirit of &#8220;scale by adding more isolated compute units that share nothing except a message bus&#8221; feels eerily similar. In 2005 it was a practical hack for a small team; today we have serverless primitives that make it feel elegant. Wild how these patterns keep resurfacing.</p><h3>MS-DTC, Stored Procedures, and the Honest Trade-offs</h3><p>With only five people they had to make ruthless choices.</p><p>They leaned heavily on MS-DTC (Microsoft Distributed Transaction Coordinator) so one logical transaction could touch both MSMQ and SQL Server and still rollback cleanly if anything failed (especially if the confirmation SMS never made it back).</p><p>It was brilliantly simple for correctness&#8230; but long-lived distributed transactions are not exactly famous for scaling to infinity. That was fine in 2005. Less fine later.</p><p>A huge chunk of business logic lived inside SQL Server stored procedures. Why? Because the database developer had more breathing room than the backend developer. True story.</p><p>A transfer was literally:</p><pre><code><code>BEGIN TRANSACTION

UPDATE balances SET balance = balance - @amount WHERE user_id = @sender
UPDATE balances SET balance = balance + @amount WHERE user_id = @receiver
INSERT INTO ledger (...)

COMMIT</code></code></pre><p>Atomic. Fast. Hard to mess up. I still admire the pragmatism.</p><p><strong> Database + MS-DTC transaction diagram</strong><br><em>( Left side: MSMQ queue + MS-DTC coordinator box. Arrow across to right side: SQL Server with stored proc showing the two UPDATEs and INSERT as atomic steps.&#8221;)</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!irP8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b5e573b-a476-452c-b6eb-771d7ab18a75_766x964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!irP8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b5e573b-a476-452c-b6eb-771d7ab18a75_766x964.png 424w, https://substackcdn.com/image/fetch/$s_!irP8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b5e573b-a476-452c-b6eb-771d7ab18a75_766x964.png 848w, https://substackcdn.com/image/fetch/$s_!irP8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b5e573b-a476-452c-b6eb-771d7ab18a75_766x964.png 1272w, https://substackcdn.com/image/fetch/$s_!irP8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b5e573b-a476-452c-b6eb-771d7ab18a75_766x964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!irP8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b5e573b-a476-452c-b6eb-771d7ab18a75_766x964.png" width="727.9953002929688" height="916.1716311780964" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b5e573b-a476-452c-b6eb-771d7ab18a75_766x964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:964,&quot;width&quot;:766,&quot;resizeWidth&quot;:727.9953002929688,&quot;bytes&quot;:114307,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jkitsao.substack.com/i/191111168?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9496c9c6-cd37-48ad-9849-8c5be010c07b_766x1046.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!irP8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b5e573b-a476-452c-b6eb-771d7ab18a75_766x964.png 424w, https://substackcdn.com/image/fetch/$s_!irP8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b5e573b-a476-452c-b6eb-771d7ab18a75_766x964.png 848w, https://substackcdn.com/image/fetch/$s_!irP8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b5e573b-a476-452c-b6eb-771d7ab18a75_766x964.png 1272w, https://substackcdn.com/image/fetch/$s_!irP8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b5e573b-a476-452c-b6eb-771d7ab18a75_766x964.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br></p><h3>The SIM Card as a Tiny Hardware Security Module  Pure Brilliance</h3><p>Here&#8217;s the part I find genuinely brilliant: they turned the humble SIM card into what was effectively a pocket-sized hardware security module (HSM).</p><p>A real HSM is a dedicated, tamper-resistant physical device built to generate, store, and manage cryptographic keys securely. It performs encryption, decryption, signing, and verification inside a hardened box where keys never leave in plaintext. Banks and payment systems use expensive, rack-mounted HSMs for exactly this reason  to keep sensitive crypto operations isolated from the rest of the system. If someone tries to tamper with it, the keys get wiped or the device bricks itself.</p><p>In 2005&#8211;2007, no one was going to put a full HSM in every Kenyan&#8217;s pocket. But the SIM card already had secure crypto capabilities: it could run small Java applets (via SIM Toolkit), store secrets like authentication keys, and perform symmetric encryption and signing without exposing anything to the handset&#8217;s OS.</p><p>So the M-Pesa team pushed the critical security boundary all the way down:</p><ul><li><p>When you enter your PIN and build a transaction (send money, check balance), the STK app on the SIM constructs the request.</p></li><li><p>It uses your PIN (or derived keys) to encrypt and sign the payload right there on the SIM.</p></li><li><p>The encrypted, signed message is sent as SMS.</p></li><li><p>Plaintext transaction details never touch the phone&#8217;s main OS or memory  they stay locked inside the SIM&#8217;s secure element.</p></li></ul><p>This is genius for a low-end feature phone world. The SIM acts as a tiny, distributed HSM per user: cheap (already in every phone), tamper-resistant (SIMs are designed to resist cloning and extraction), and perfectly positioned to protect the user&#8217;s secrets before anything hits the network.</p><p>It&#8217;s not a full enterprise HSM with tamper-evident enclosures and FIPS certifications, but for the context  billions of low-cost transactions on unreliable networks  it was an elegant, context-aware hack that delivered real security where it mattered most: at the endpoint.</p><p>That single design choice helped build massive trust fast. People felt safe because their money moves were protected before they even left the phone.</p><p>They also made menus downloadable over the air so the same SIM app could serve different roles (customer, agent, assistant) with different views. New features rolled out without SIM swaps. And a unified identity/role model kept everything simple in the backend.</p><h3>The Trust Rule That Made Millions Believe</h3><p>If the confirmation SMS failed to arrive within the timeout window, the entire transaction rolled back.</p><p>No grey zone. No &#8220;maybe it went through&#8221;. You either saw the confirmation or your money never left. That one rule turned sceptical first-timers into daily users.</p><h3>When the Little Project Became National Infrastructure</h3><p>By 2010: 9 million users (~40% of Kenyan adults), $320 million per month in transfers (~10% of GDP), $7 million monthly revenue for Safaricom.</p><p>Still mostly the original architecture.</p><p>They later rolled out R9  pulled some logic out of stored procs, reduced MS-DTC usage but the bones stayed the same.</p><h3>The Germany Era and the 2015 Homecoming</h3><p>For years the core lived in German data centres. Every transaction crossed oceans and came back. Latency crept up. International cable cuts became scary.</p><p>In 2015 they finally migrated everything to Kenya and switched to the Huawei-built second generation platform.</p><p>A lot changed after that. More throughput, hundreds of APIs, configurable parameters everywhere, proper hardware security modules (HSMs) in the backend for server-side crypto. It became a polished enterprise system.</p><p>Some of the raw, endpoint-focused ingenuity  like treating every SIM as a mini-HSM  got layered over with more centralized, heavy-duty security. Necessary as scale exploded, but I miss the elegant simplicity of the original approach.</p><p><strong> Evolution timeline / migration diagram</strong><br><em>(Horizontal timeline 2005 &#8594; R9 &#8594; 2015 migration.)</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!U6q3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39ba7451-425d-4f8b-a234-8ae8a2a79082_991x516.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U6q3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39ba7451-425d-4f8b-a234-8ae8a2a79082_991x516.png 424w, https://substackcdn.com/image/fetch/$s_!U6q3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39ba7451-425d-4f8b-a234-8ae8a2a79082_991x516.png 848w, https://substackcdn.com/image/fetch/$s_!U6q3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39ba7451-425d-4f8b-a234-8ae8a2a79082_991x516.png 1272w, https://substackcdn.com/image/fetch/$s_!U6q3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39ba7451-425d-4f8b-a234-8ae8a2a79082_991x516.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U6q3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39ba7451-425d-4f8b-a234-8ae8a2a79082_991x516.png" width="991" height="516" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39ba7451-425d-4f8b-a234-8ae8a2a79082_991x516.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:516,&quot;width&quot;:991,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:71066,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jkitsao.substack.com/i/191111168?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F997fd8dd-9cc6-4e20-ab93-7deef438b55a_991x576.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!U6q3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39ba7451-425d-4f8b-a234-8ae8a2a79082_991x516.png 424w, https://substackcdn.com/image/fetch/$s_!U6q3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39ba7451-425d-4f8b-a234-8ae8a2a79082_991x516.png 848w, https://substackcdn.com/image/fetch/$s_!U6q3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39ba7451-425d-4f8b-a234-8ae8a2a79082_991x516.png 1272w, https://substackcdn.com/image/fetch/$s_!U6q3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39ba7451-425d-4f8b-a234-8ae8a2a79082_991x516.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br></p><p>What gets me is how human the first version feels. It was built under real Kenyan constraints by people who knew exactly who would use it and how badly the network could behave.</p><p>MSMQ as broker, TranProc as the worker army (proto-Durable-Objects style), stored procedures because time was short, SIMs as pocket HSMs for security, one trust rule to rule them all.<br><br>They shipped something imperfect and brilliant. And somehow it became the financial rail that carried a country.</p><p>If you found this interesting and want to see how the Huawei era changed things (throughput, APIs, centralised security, the whole shift to a more &#8220;proper&#8221; enterprise platform), let me know in the comments. If there&#8217;s enough interest, I&#8217;ll dig into the second generation for Part Two.</p><p>Until then, stay curious.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://jkitsao.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Localhost KE! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>