{"id":2314,"date":"2026-10-03T03:41:22","date_gmt":"2026-10-02T19:41:22","guid":{"rendered":"https:\/\/bversion.com\/WordPress\/?page_id=2314"},"modified":"2026-10-18T10:00:14","modified_gmt":"2026-10-18T02:00:14","slug":"era-of-ai","status":"publish","type":"page","link":"https:\/\/bversion.com\/WordPress\/era-of-ai\/","title":{"rendered":"Era of AI"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Alex&#8217;s AI Project<\/h2>\n\n\n<ul style=\"font-size:28px\" class=\"wp-block-latest-posts__list wp-block-latest-posts is-layout-flow wp-block-latest-posts-is-layout-flow\"><li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/bversion.com\/WordPress\/2026\/09\/04\/alexs-chatbot\/\">Alex&#8217;s ChatBot<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/bversion.com\/WordPress\/2026\/07\/31\/local-llm-project\/\">Local LLM Project<\/a><\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading\">Adam worked with ChatGPT<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/bversion.com\/WordPress\/2026\/10\/01\/computing-age-41-60\/\">bV Flipbook<\/a> (GPT-6, ~52hrs)<\/h3>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary><strong>bV Flipbook \u2014 Development History &amp; Engineering Effort<\/strong><\/summary>\n<h3 class=\"wp-block-heading\"><strong>bV Flipbook \u2014 Development History &amp; Engineering Effort<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Project review | 22 September \u2013 11 October 2026<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bV Flipbook (AdamFlipbook) is our custom-built digital magazine reader for <a href=\"https:\/\/bversion.com\/\">bversion.com<\/a>, developed to replace the commercial DearFlip reader and support your collection of scanned computer magazines, including\u300a\u96fb\u8166\u6642\u4ee3\u300b.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unlike simply installing a WordPress plugin, we developed our own reading engine, PHP backend, magazine library, database statistics and WordPress integration.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1. Development timeline<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Development started: 22 September 2026<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Working platform<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dates are based on our recorded discussions. Hours are engineering estimates, not measured timesheets.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Stage<\/th><th>Dates<\/th><th>Estimated hours<\/th><\/tr><tr><td>1. Concept and architecture<\/td><td>Sep 22\u201323<\/td><td>5\u20138<\/td><\/tr><tr><td>2. QNAP storage and PHP page API<\/td><td>Sep 23<\/td><td>6\u201310<\/td><\/tr><tr><td>3. Custom JavaScript reader<\/td><td>Sep 23\u201324<\/td><td>10\u201316<\/td><\/tr><tr><td>4. WordPress bookshelf integration<\/td><td>Sep 24\u201325<\/td><td>8\u201312<\/td><\/tr><tr><td>5. MariaDB statistics and security<\/td><td>Sep 25\u201327<\/td><td>6\u201310<\/td><\/tr><tr><td>6. Reader refinement and debugging<\/td><td>Sep 28\u2013Oct 1<\/td><td>12\u201320<\/td><\/tr><tr><td>7. Library content and deployment work<\/td><td>Sep 28\u2013Oct 2<\/td><td>5\u20139<\/td><\/tr><tr><td>Total estimated active work<\/td><td><\/td><td>52\u201385 hours<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Estimated development effort<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">~65\u201370 hours<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Central estimate; includes our joint debugging, testing, deployment and iteration, not elapsed calendar time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estimated effort by development stage<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Central estimate in active work hours<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-1.png\"><img decoding=\"async\" width=\"752\" height=\"340\" fetchpriority=\"low\" src=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-1.png\" alt=\"\" class=\"wp-image-2329\" srcset=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-1.png 752w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-1-300x136.png 300w\" sizes=\"(max-width: 752px) 100vw, 752px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">2. How we built it from scratch<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 1 \u2014 From DearFlip to our own architecture<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We initially considered improving the existing DearFlip\/PDF workflow, but decided to develop a standalone reader that we could fully control.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The important decisions were to retain original PNG scans, avoid requiring PDF conversion for reading, and keep the core reader independent of WordPress.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 2 \u2014 Build the QNAP PHP image API<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We tested direct page delivery from the NAS using PHP, with files stored separately from the public web application.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>One verified example was &#8211; CA02 \u2014 Page 43 API<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This proved the browser could request a particular magazine page without loading the entire book.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 3 \u2014 Create the JavaScript flipbook reader<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We developed the reader around book metadata and page images rather than relying on DearFlip.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The design included page turning, navigation, zoom, fullscreen, mobile support, and lazy loading\/preloading so hundreds of pages would not need to load simultaneously.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 4 \u2014 WordPress bookshelf<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We created a WordPress plugin that displays the magazine collection and launches our own reader.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The initial v0.1.0 bookshelf tested magazines CA03, CA04, CA05, CA06, CA08, CA11 and CA13. We then corrected URL handling in v0.1.1 and advanced to v0.2.2\/v0.2.3.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 5 \u2014 Reading statistics and backend separation<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We established the path from the reader through <code>stats.php<\/code> to the MariaDB <code>bvflipbook<\/code> database.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We also moved private database configuration to <code>\/share\/WebData\/bVersionFlipbook\/<\/code>, separating credentials from public application files.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 6 \u2014 Real-world debugging<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This became one of the most time-consuming phases. We investigated the overlay Close button, table-of-contents behaviour, browser history, and mobile performance.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>By October 1, our WordPress plugin had reached v0.3.13. We preserved the two-step mobile close behaviour: first close the TOC, then close the flipbook.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We also identified performance concerns with books of approximately 250 pages and planned testing against smaller 96-page books.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">3. The architecture we created<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-13.png\"><img decoding=\"async\" width=\"1024\" height=\"616\" fetchpriority=\"low\" src=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-13-1024x616.png\" alt=\"\" class=\"wp-image-2351\" srcset=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-13-1024x616.png 1024w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-13-300x181.png 300w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-13-768x462.png 768w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-13.png 1411w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The biggest architectural achievement is the separation of the reading engine, storage, statistics and WordPress presentation. That means the reader can evolve without rebuilding the magazine library or making WordPress responsible for every function.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">4. Our development approach<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Our approach was incremental rather than trying to build everything in one release.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Establish a working standalone proof of concept.<\/li>\n\n\n\n<li>Validate direct PNG page access through PHP.<\/li>\n\n\n\n<li>Add the reading interface and book metadata.<\/li>\n\n\n\n<li>Integrate the reader into WordPress.<\/li>\n\n\n\n<li>Add database statistics and protect private configuration.<\/li>\n\n\n\n<li>Test on actual magazine collections and fix one problem at a time.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">This last principle became particularly important in October: one change \u2192 test \u2192 confirm \u2192 next change.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We also deliberately deferred features such as Last Page Read, bookmarks, Go-to bookmark, sharing links and PNG page sharing until the Close behaviour and mobile performance were stable. Those should not be counted as completed functionality in this estimate.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">5. What was achieved, and what remained<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Capability<\/th><th>Position at last recorded development<\/th><\/tr><tr><td>Original PNG serving<\/td><td>Proven working<\/td><\/tr><tr><td>PHP page API<\/td><td>Proven working<\/td><\/tr><tr><td>Custom standalone reader<\/td><td>Built and integrated<\/td><\/tr><tr><td>WordPress bookshelf<\/td><td>Working<\/td><\/tr><tr><td>MariaDB statistics pipeline<\/td><td>Proven working<\/td><\/tr><tr><td>WordPress overlay and close handling<\/td><td>Debugged through v0.3.13<\/td><\/tr><tr><td>Large-book mobile performance<\/td><td>Further investigation planned<\/td><\/tr><tr><td>Last Page Read \/ bookmarks<\/td><td>Planned<\/td><\/tr><tr><td>Page sharing features<\/td><td>Planned<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">6. Engineering effort assessment<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-15.png\"><img decoding=\"async\" width=\"1024\" height=\"154\" fetchpriority=\"low\" src=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-15-1024x154.png\" alt=\"\" class=\"wp-image-2353\" srcset=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-15-1024x154.png 1024w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-15-300x45.png 300w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-15-766x115.png 766w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-15.png 1366w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The key distinction is that we did not build an emulator or an image-rendering library from the ground up. We built the application system ourselves using browser technology, JavaScript, PHP, MariaDB and WordPress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My assessment is that approximately 65\u201370 active engineering hours is a reasonable central estimate for the working bV Flipbook platform through the last recorded development stage. It is not an audited total, and I have no confirmed additional development hours after October 2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For a project originally motivated by replacing DearFlip, the result was considerably broader: an independent digital magazine publishing and reading platform, with its own backend and room to expand beyond WordPress.<\/p>\n<\/details>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/bversion.com\/AppleII_HOF\/index_SD.html\">Apple \/\/ Hall of Frame<\/a> (GPT-6, ~33hrs)<\/h3>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary><strong>AppleII_HOF \u2014 Development History &amp; Work-Hour Estimate<\/strong><\/summary>\n<h3 class=\"wp-block-heading\">AppleII_HOF \u2014 Development History &amp; Work-Hour Estimate<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Project retrospective | Late September \u2013 3 October 2026<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AppleII_HOF was our first attempt to turn a classic single-player computer game into a worldwide, shared high-score competition, while preserving the original Apple II gaming experience.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We started with a simple question: Can we run an Apple II game directly on your website?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Within several days, we had built and tested a much more ambitious system: an Apple II emulator, individual player disk sessions, server-side score extraction, a web leaderboard, and a shared Hall of Fame written back into the original game&#8217;s disk image.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1. Development timeline<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-8.png\"><img decoding=\"async\" width=\"1024\" height=\"145\" fetchpriority=\"low\" src=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-8-1024x145.png\" alt=\"\" class=\"wp-image-2341\" srcset=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-8-1024x145.png 1024w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-8-300x43.png 300w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-8-768x109.png 768w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-8.png 1402w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Hours are reconstructed estimates of our active development and testing, not measured timesheets. They include your hands-on work and our joint debugging, but not two separate people&#8217;s hours added together.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 1 \u2014 Concept and architecture, 29 September | Estimated 2\u20133 hours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We investigated Apple II emulation, how CPU opcodes, registers, memory and I\/O work, and whether WebAssembly could execute an emulator in the browser.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Decision: Reuse an existing emulator rather than writing an Apple II emulator from scratch.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 2 \u2014 Build the web emulator, 29 Sep \u2013 2 Oct | Estimated 5\u20138 hours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We selected <code>web-a2e<\/code>, prepared the Windows build environment, installed Node.js, Emscripten, Ninja, CMake and Git, and built the JavaScript\/WebAssembly emulator.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Achievement: Successfully generated <code>a2e.js<\/code> and the WASM binary, allowing the Apple II emulator to run in a browser.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 3 \u2014 Reverse-engineer Sea Dragon scores, 2 October | Estimated 4\u20136 hours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We used an original Sea Dragon disk image, investigated where the game stored its Hall of Fame, and searched for known score data, including a test score of 1,425.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The important change in approach was to work with the game&#8217;s native disk-based score records, rather than relying on screen recognition or rewriting the game.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 4 \u2014 Shared Hall of Fame backend, 2\u20133 October | Estimated 6\u20139 hours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We designed and implemented the master disk\/session disk approach, PHP gateway, backend score processing and shared leaderboard.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Each player could use a separate disk session, while qualifying scores were merged into the shared master disk.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 5 \u2014 Browser integration and validation, 3 October | Estimated 5\u20139 hours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We connected the public browser emulator through the PHP gateway to the QNAP backend, worked on session handling and score submission, and tested the complete game-to-server-to-game cycle.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Key milestone: A score survived a fresh browser session and appeared inside Sea Dragon&#8217;s original Hall of Fame.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 6 \u2014 Clean baseline, 3 October | Estimated 3\u20135 hours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We established a clean baseline with an empty master Hall of Fame and leaderboard, while preserving the functioning emulator, backend, PHP gateway and score-persistence mechanism.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This gave us a working foundation for future Apple II games.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">2. How the architecture evolved<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Our most important architectural decision was not to modify the original game executable to communicate with the internet. Instead, we made the original disk image the bridge between the game and the online competition.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-9.png\"><img decoding=\"async\" width=\"1024\" height=\"616\" fetchpriority=\"low\" src=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-9-1024x616.png\" alt=\"\" class=\"wp-image-2343\" srcset=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-9-1024x616.png 1024w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-9-300x180.png 300w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-9-767x461.png 767w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-9.png 1407w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The original design also kept the master DSK in <code>WebData<\/code>, with a separate session disk for each browser\/player identity. This avoided players directly overwriting the shared master.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3. Work-hour breakdown<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Estimated active development hours<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Midpoints of estimated ranges, total approximately 33 hours.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-2.png\"><img decoding=\"async\" width=\"752\" height=\"340\" fetchpriority=\"low\" src=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-2.png\" alt=\"\" class=\"wp-image-2333\" srcset=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-2.png 752w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-2-300x136.png 300w\" sizes=\"(max-width: 752px) 100vw, 752px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Development area<\/th><th>Estimated hours<\/th><\/tr><tr><td>Architecture and feasibility<\/td><td>2\u20133<\/td><\/tr><tr><td>Emulator build and toolchain<\/td><td>5\u20138<\/td><\/tr><tr><td>Sea Dragon score investigation<\/td><td>4\u20136<\/td><\/tr><tr><td>Backend and disk management<\/td><td>6\u20139<\/td><\/tr><tr><td>Integration and testing<\/td><td>5\u20139<\/td><\/tr><tr><td>Clean baseline<\/td><td>3\u20135<\/td><\/tr><tr><td>Total<\/td><td>25\u201340<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">My central estimate is approximately 33 hours, spread across several days. That is a realistic estimate, but we cannot establish the exact hours from chat timestamps alone.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">4. What we achieved versus what remained<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Feature<\/th><th>Status at 3 Oct<\/th><\/tr><tr><td>Browser-based Apple II emulator<\/td><td>Working<\/td><\/tr><tr><td>Sea Dragon running from DSK<\/td><td>Working<\/td><\/tr><tr><td>Separate player disk sessions<\/td><td>Working<\/td><\/tr><tr><td>Native high-score extraction<\/td><td>Working<\/td><\/tr><tr><td>Web leaderboard and master update<\/td><td>Working<\/td><\/tr><tr><td>In-game shared Hall of Fame persistence<\/td><td>Verified<\/td><\/tr><tr><td>Clean deployment baseline<\/td><td>Established<\/td><\/tr><tr><td>Broad public launch and load testing<\/td><td>Not established<\/td><\/tr><tr><td>Multiple Apple II games<\/td><td>Future extension<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The distinction is important: we reached a working end-to-end production-style baseline, not a fully validated large-scale public service.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">5. Why this project mattered<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">AppleII_HOF proved three concepts that later influenced Arcade1LC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First, an original retro game could run inside a modern web browser without rewriting the game.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Second, game-native score data could be extracted and managed by an external server, turning an offline game into a worldwide competition.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Third, a shared leaderboard could be integrated back into the original game experience, rather than existing only on a separate website.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The technical approaches subsequently diverged. AppleII_HOF used disk-image score persistence, while Arcade1LC moved toward live MAME memory inspection, game-specific configuration, and one-life challenge enforcement.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Overall assessment<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-12.png\"><img decoding=\"async\" width=\"1024\" height=\"182\" fetchpriority=\"low\" src=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-12-1024x182.png\" alt=\"\" class=\"wp-image-2349\" srcset=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-12-1024x182.png 1024w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-12-300x53.png 300w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-12-767x136.png 767w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-12.png 1387w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">What made AppleII_HOF particularly interesting was that we didn&#8217;t simply embed an emulator on a website. We built a mechanism for an approximately 40-year-old game to participate in a modern, shared online Hall of Fame while retaining its original gameplay and score display.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That was the technical foundation and proof of concept that helped make the more ambitious Arcade1LC project possible.<\/p>\n<\/details>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/arcade1lc.bversion.com\">Arcade 1 Life Challenge<\/a> (GPT-6, ~80hrs)<\/h3>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary><strong>Arcade1LC \u2014 Development History &amp; Engineering Effort<\/strong><\/summary>\n<h4 class=\"wp-block-heading\">Arcade1LC \u2014 Development History &amp; Engineering Effort<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Project retrospective | 3\u201311 October 2026<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ARCADE 1 LIFE CHALLENGE ONE LIFE \u00b7 NO CONTINUE<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From experimenting with a browser-based MAME emulator to building a self-hosted, multiplayer competitive arcade platform with shared leaderboards, player accounts, rankings and automated Facebook announcements.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">1. Executive summary<\/h5>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-10.png\"><img decoding=\"async\" width=\"1024\" height=\"285\" fetchpriority=\"low\" src=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-10-1024x285.png\" alt=\"\" class=\"wp-image-2345\" srcset=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-10-1024x285.png 1024w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-10-300x83.png 300w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-10-765x213.png 765w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-10.png 1423w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">The effort estimate is reconstructed from our discussions, development milestones and test iterations. It is not a measured timesheet, and it does not count all elapsed compilation or unattended processing time.<\/p>\n<\/div><\/div>\n\n\n\n<h5 class=\"wp-block-heading\">2. Development stages<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 1 \u2014 Concept and feasibility, 3 Oct Estimated 3\u20135 hours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We started with a question: could a real arcade game run inside a browser, and could players worldwide compete on a shared Hall of Fame?<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We selected MAME, Emscripten and WebAssembly rather than rewriting the original arcade game. Raiden became our first experimental title.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 2 \u2014 Building MAME for the web, 3\u20134 Oct Estimated 8\u201312 hours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We established the WSL Ubuntu build environment, Emscripten toolchain, SDL3 dependencies and MAME driver configuration.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Successfully compiled <code>raidenhof.html<\/code>, <code>raidenhof.js<\/code> and a roughly 25 MB WebAssembly module.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Breakthrough: A genuine arcade machine could now execute in a browser without a server running the game for every player.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 3 \u2014 Reverse engineering game memory, 4\u20136 Oct Estimated 12\u201318 hours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This was one of our most technically demanding stages.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We built experimental score-finding tools, monitored emulator memory, identified score values, investigated stage information and tested death\/game-over detection.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We also experimented with maximum weapon power and invincibility for debugging. Raiden&#8217;s maximum displayed score was established as 99,999,999.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Important lesson: A score appearing in RAM is not sufficient evidence of a completed, valid game.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 4 \u2014 One-life challenge enforcement, 4\u20137 Oct Estimated 8\u201312 hours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We developed the logic for the one-life, no-continue challenge and reliable score submission after death.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Several attempts failed because the arcade game&#8217;s Game Over animation continued after the player lost their life.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We tested multiple approaches before retaining the proven TEST032 timing baseline, with a 30-second post-qualification window replacing the insufficient 10-second window.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Approach: Observe the game&#8217;s real internal state rather than relying exclusively on visible screen changes.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 5 \u2014 Generic multi-game architecture, 5\u20138 Oct Estimated 9\u201313 hours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We moved beyond a Raiden-only demonstration.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The design became configuration-driven: each game supplies its ROM settings, score memory definitions, stage information, leaderboard rules and score limits through configuration.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We established a generic HTML frontend and PHP leaderboard backend, preserving the DEV018 player-interface baseline.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Major architectural decision: Adding a new game should primarily involve configuration and validation, not rewriting the platform.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 6 \u2014 Player Center and competition, 6\u20139 Oct Estimated 9\u201313 hours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We developed the wider player experience: registration, profiles, place flags, age groups, searchable selectors, series navigation, Hall of Fame and King rankings.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We also developed King of the Kings rankings, allowing players to compete across multiple arcade titles rather than only one game.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The platform evolved from a score table into a competitive gaming community.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 7 \u2014 NAS hosting and public website, 6\u201310 Oct Estimated 5\u20138 hours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We deployed to the QNAP NAS, configured the Arcade1LC subdomain and worked through virtual-host and favicon issues.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We discussed PHP gateway security, protecting WebData, exposure of server files, NAS capacity and the implications of serving many simultaneous players.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The public address became <a href=\"https:\/\/arcade1lc.bversion.com\/\">arcade1lc.bversion.com<\/a>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 8 \u2014 Social integration and launch controls, 9\u201311 Oct Estimated 11\u201314 hours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We implemented and tested server-side Facebook announcements for new Kings and King of the Kings results.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We developed the Founding 50 launch concept: first-come-first-served registration, a server-enforced 50-player cap and permanent F001\u2013F050 identities.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We also refined leaderboard refresh behaviour, UI controls, score submission flow and registration\/player-count presentation.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">3. Estimated work hours<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">The following is a task-based reconstruction. Several stages overlapped on the same day.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estimated hours by development stage<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Midpoint of estimated active effort for each stage<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-5.png\"><img decoding=\"async\" width=\"752\" height=\"340\" fetchpriority=\"low\" src=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-5.png\" alt=\"\" class=\"wp-image-2336\" srcset=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-5.png 752w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-5-300x136.png 300w\" sizes=\"(max-width: 752px) 100vw, 752px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Work category<\/th><th>Estimated hours<\/th><\/tr><tr><td>Concept and feasibility<\/td><td>3\u20135<\/td><\/tr><tr><td>MAME and WASM compilation<\/td><td>8\u201312<\/td><\/tr><tr><td>RAM analysis and score detection<\/td><td>12\u201318<\/td><\/tr><tr><td>One-life logic and validation<\/td><td>8\u201312<\/td><\/tr><tr><td>Generic architecture<\/td><td>9\u201313<\/td><\/tr><tr><td>Player Center and leaderboards<\/td><td>9\u201313<\/td><\/tr><tr><td>Hosting and deployment<\/td><td>5\u20138<\/td><\/tr><tr><td>Social integration and launch<\/td><td>11\u201314<\/td><\/tr><tr><td>Total<\/td><td>65\u201395<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-11.png\"><img decoding=\"async\" width=\"1024\" height=\"153\" fetchpriority=\"low\" src=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-11-1024x153.png\" alt=\"\" class=\"wp-image-2347\" srcset=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-11-1024x153.png 1024w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-11-300x45.png 300w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-11-762x114.png 762w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-11.png 1411w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">These are combined project-effort hours, not 80 hours independently spent by each of us. Your testing, debugging, architecture decisions and deployment were essential; my contributions included code generation, analysis, troubleshooting and design iterations.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">4. How our development approach changed<\/h5>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">Our engineering methodology evolved as the project became more complicated.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Experiment first<\/em> &#8211; Build a small MAME proof of concept and establish that the browser emulator works.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Measure and reverse engineer<\/em> &#8211; Use RAM inspection, debugging features and repeated real gameplay to discover reliable state transitions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Generalise what works<\/em> &#8211; Replace game-specific assumptions with JSON configurations and a reusable frontend\/backend.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Preserve working baselines<\/em> &#8211; Keep proven versions such as TEST032 and DEV018, reject regressions, and make small, targeted modifications.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Prepare for real players<\/em> &#8211; Add registration limits, rankings, social announcements, security reviews and production performance refinements.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">5. What we actually built<\/h5>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-7.png\"><img decoding=\"async\" width=\"1024\" height=\"594\" fetchpriority=\"low\" src=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-7-1024x594.png\" alt=\"\" class=\"wp-image-2338\" srcset=\"https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-7-1024x594.png 1024w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-7-300x174.png 300w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-7-767x445.png 767w, https:\/\/bversion.com\/WordPress\/wp-content\/uploads\/2026\/10\/image-7.png 1428w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The most important technical decision was running MAME locally in each player&#8217;s browser. This keeps the computationally expensive arcade emulation away from the NAS. The NAS handles the comparatively lightweight work of account management, score storage and leaderboard delivery.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This architecture is also what makes supporting additional games practical.<\/p>\n<\/div><\/div>\n\n\n\n<h5 class=\"wp-block-heading\">6. Current status and next steps<\/h5>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Feature<\/th><th>Status<\/th><\/tr><tr><td>Browser MAME and WASM<\/td><td>Working<\/td><\/tr><tr><td>Raiden and Exerion development<\/td><td>Working\/tested<\/td><\/tr><tr><td>Score detection and submission<\/td><td>Working, further hardening planned<\/td><\/tr><tr><td>Shared Hall of Fame<\/td><td>Working<\/td><\/tr><tr><td>Player Center and rankings<\/td><td>Working<\/td><\/tr><tr><td>King of the Kings<\/td><td>Working<\/td><\/tr><tr><td>Facebook King announcements<\/td><td>Tested successfully<\/td><\/tr><tr><td>Founding 50 registration<\/td><td>Implemented\/tested, launch validation<\/td><\/tr><tr><td>Additional games<\/td><td>In progress<\/td><\/tr><tr><td>Anti-cheating\/security hardening<\/td><td>Further work required<\/td><\/tr><tr><td>Gameplay replay verification<\/td><td>Deferred until first five games online<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The first five-game milestone is particularly important. After that, we can investigate MAME input recording and replay as a possible score-verification mechanism.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">7. My assessment of the engineering achievement<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">The interesting part of Arcade1LC is not merely that we compiled MAME to WebAssembly. Others have already demonstrated browser-based emulation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our additional engineering work was integrating several different problems into one coherent system:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Reverse engineering arcade memory to extract game-specific scores.<\/li>\n\n\n\n<li>Translating native arcade behaviour into a standard one-life competitive format.<\/li>\n\n\n\n<li>Designing a reusable multi-game architecture rather than separate websites.<\/li>\n\n\n\n<li>Building the surrounding player community and competition mechanisms.<\/li>\n\n\n\n<li>Deploying everything on your own NAS, with control over the application and its data.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The largest technical risks were around game-state detection, trustworthy scores and avoiding regressions when adding new features. Our repeated gameplay tests and decision to preserve known-good baselines were particularly valuable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Overall: We went from an initial technical experiment to a functioning, publicly reachable arcade competition platform in roughly nine days, with an estimated 80 hours of active collaborative engineering effort.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is a substantial prototype and early production platform, although the remaining security, anti-cheat and load testing should be completed before treating it as a fully hardened public service.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One distinction worth keeping in the project record: this estimate covers Arcade1LC itself, not the earlier AppleII_HOF work that helped establish the shared-leaderboard concept.<\/p>\n<\/details>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Alex&#8217;s AI Project Adam worked with ChatGPT bV Flipbook (GPT-6, ~52hrs) Apple \/\/ Hall of Frame (GPT-6, ~33hrs) Arcade 1 Life Challenge (GPT-6, ~80hrs)<\/p>\n","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"cybocfi_hide_featured_image":"","footnotes":""},"class_list":["post-2314","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/bversion.com\/WordPress\/wp-json\/wp\/v2\/pages\/2314","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bversion.com\/WordPress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bversion.com\/WordPress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bversion.com\/WordPress\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/bversion.com\/WordPress\/wp-json\/wp\/v2\/comments?post=2314"}],"version-history":[{"count":20,"href":"https:\/\/bversion.com\/WordPress\/wp-json\/wp\/v2\/pages\/2314\/revisions"}],"predecessor-version":[{"id":2361,"href":"https:\/\/bversion.com\/WordPress\/wp-json\/wp\/v2\/pages\/2314\/revisions\/2361"}],"wp:attachment":[{"href":"https:\/\/bversion.com\/WordPress\/wp-json\/wp\/v2\/media?parent=2314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}