search

DEVELOPMENT DIARY

Development Diary serves as a running update log that highlights ongoing improvements, feature additions, fixes, optimizations, and refinements across its web applications, giving readers a clear view of what’s new, what’s changed, and how each application continues to evolve over time.

Showing 0 items
Development Diary only started in 1/1/2026.
19/5/2026 Reducing RAM Spikes on Lemon Web Solutions by Controlling Bot Traffic and Smarter Caching
UPDATE
Reducing RAM Spikes on Lemon Web Solutions by Controlling Bot Traffic and Smarter Caching by carrying out the following fixes:
  • Created Cloudflare Custom Rule to challenge bot access to EasyBlog captcha generation URLs, especially requests using task=captcha.generate.
  • Set the EasyBlog captcha bot rule action to Managed Challenge instead of direct Block, to reduce risk of affecting legitimate users.
  • Created Cloudflare Custom Rule to challenge EasyBlog RSS/feed query URLs using option=com_easyblog and format=feed.
  • Updated robots.txt to discourage crawlers from accessing unnecessary Joomla/EasyBlog dynamic URLs.
  • Added crawler restrictions in robots.txt for EasyBlog search pages, paginated URLs, feed URLs, RSS URLs, captcha generation URLs, and EasyBlog feed query patterns.
  • Created a new Cloudflare Cache Rule for public Lemon Blog HTML pages under /lemon-blog/.
  • Set the public blog HTML cache Edge TTL to 4 hours.
  • Configured the blog HTML cache rule to only cache safe public GET requests.
  • Excluded risky/dynamic query patterns from the blog HTML cache rule, including task=, option=, format=, type=rss, and start=.
  • Added cookie exclusion using not http.cookie contains "joomla" to reduce the risk of caching logged-in Joomla views.
  • Configured Status Code TTL so only successful 200–299 responses are cached for 4 hours.
  • Configured 300–499 responses as No store.
  • Configured 500 and above responses as No store, helping prevent 503/error pages from being cached.
  • Fixed the Cloudflare expression syntax by replacing incorrect path starts_with syntax with the proper starts_with(http.request.uri.path, "/lemon-blog/") format.
  • Adjusted the blog HTML cache rule after discovering the blog reaction module was not updating.
  • Purged/cleared cache after rule adjustments so the updated behavior can take effect.
  • Created Cloudflare Custom Rule to challenge non-essential crawlers.
  • Included non-essential crawler user agents such as SemrushBot, AhrefsBot, CriteoBot, YandexBot, TikTokSpider, Embedly, MuckRack, IAS Crawler, Proximic, GuzzleHttp, and newsai.
  • Chose to skip the Rate Limiting rule for now because the higher-priority protections were already implemented.
  • Chose to skip EasyBlog captcha/comment setting changes because you want to keep the current captcha/comment behavior allowed.
  • Final current action is to monitor Cloudflare Security Events, Cache Analytics, hosting RAM usage, entry processes, CPU usage, and any new 503 spikes over the next 24–48 hours.

Hope this resolves the issue and will be monitoring the logs closely.
17/5/2026 Lemon Web-Games Menu Update
UPDATE
A new menu item has been added to the Lemon Web-Games panel to improve user interaction and support. Visitors can now easily access the Developer Diary to view ongoing development logs, while a separate contact option allows them to request new games or report issues directly. This helps make the Web-Games section more transparent, user-friendly, and easier to maintain based on player feedback.
17/5/2026 Improve Fullscreen Loader for Lemon-Blog
UPDATE
Revised Lemon Blogs HTML to keep the fullscreen loading overlay active while the page is still loading and prevents users from scrolling during that period. It does this by adding a temporary lw-loading class to both html and body, locking page overflow until the loader finishes. Once the page fully loads, the overlay fades out, is removed from the page, and scrolling is restored automatically.
17/5/2026 Optimizing Lemon Web Solutions Website For Better Performance
UPDATE
After reviewing the recent Error 503 issue, the main cause appeared to be related to shared hosting resource pressure, especially CPU spikes and physical memory usage getting close to the 1.5GB limit, rather than a simple missing file or broken website problem. The hosting charts showed that memory and CPU were the main areas affected, while I/O operations and entry processes were less impacted. Since the website has continued to grow with more HTML5 games, tracking scripts, and public counter requests, several clean-up and optimization steps were carried out to reduce unnecessary server load while preparing for a proper hosting upgrade in June 2026. The following fixes were carried out:
  • Fixed missing HTML5 game references and missing file calls that were creating unnecessary 404 requests.
  • Cleaned up broken paths such as missing manifest files, service worker files, localization files, and incorrect game asset references.
  • Optimized the Game Counter PHP to reduce unnecessary server processing.
  • Reduced the load caused by repeatedly reading and processing larger counter data for public display.
  • Separated the thinking between tracking data and public display data to make the counter system lighter and easier to maintain.
  • Reviewed hosting resource graphs and confirmed that CPU and physical memory were the main pressure points.
  • Confirmed that I/O operations and entry processes were less impacted, helping narrow the issue toward CPU and memory pressure.
  • Identified that Error 503 was likely caused by shared hosting resource limits rather than missing website files.
  • Planned a hosting upgrade in June 2026 to provide more room for traffic growth, game hosting, PHP scripts, and future expansion.

As Lemon Web Solutions continues to grow with blog articles, web apps, HTML5 games, emulator pages, and custom online tools, performance maintenance has become just as important as publishing new content. A website may look normal on the surface, but behind the scenes, repeated missing file requests, broken game assets, old paths, and unnecessary error handling can quietly place pressure on the server. This became more noticeable when the hosting resource graph showed physical memory usage climbing close to the shared hosting limit, even though CPU usage was not constantly maxed out. It was a clear reminder that performance problems are not always caused by one obvious heavy page. Sometimes, they come from many small background issues happening together.

The optimization work focused on cleaning up those hidden sources of waste. Missing HTML5 game assets were reviewed and restored where possible, repeated broken paths were handled with lightweight .htaccess rules, incomplete file references were reduced, and unnecessary 404 handling was minimized. This helped make the website cleaner, easier to troubleshoot, and less wasteful with server resources. For a growing site like Lemon Web Solutions, this kind of cleanup is not just about speed. It is about stability, better resource control, and making sure the server spends its effort serving real visitors instead of repeatedly processing broken or outdated requests.


16/5/2026 Added 8 GBA Games
NEW
Added 8 GBA Games as below.
  • Castlevania: Harmanoy of Dissonance
  • Castlevania: Aria of Sorrow
  • Pokémon Chaos Black
  • Pokémon Emerald
  • Golden Sun
  • Fire Emblem: The Sacred Stones
  • Summon Night 2
  • Mortal Kombat: Tournament Edition

Enjoy...
10/5/2026 Lemon Web Games Gets Cleaner Game Browsing With New Pagination Update
UPDATE
This latest JavaScript update improves the Lemon Web Games homepage experience by adding proper pagination to the Recently Added, Random Picks, Most Played, and Trending Games sections. Instead of showing only a fixed set of games, each section can now display multiple pages while still keeping the layout clean and lightweight. The pagination is capped at a maximum of five pages, which keeps browsing simple without overwhelming visitors. It also automatically adjusts between desktop and mobile views, showing more cards on larger screens and fewer cards on smaller devices for a cleaner responsive layout. The core pagination rule is kept simple, for example:

var MAX_PAGES = 5;

function perPage() {
  return window.matchMedia("(max-width: 768px)").matches ? 4 : 8;
}

function totalPagesFor(key) {
  var total = state[key].data.length;
  return Math.max(1, Math.min(MAX_PAGES, Math.ceil(total / perPage())));
}		  
		  
The update also keeps the game lists better organised by preventing titles from overlapping between the Most Played and Trending Games sections. This means games that are already highlighted as popular will not be repeated again in the trending area, giving other active games a better chance to be discovered. The pagination styling was also refined so the buttons remain clearly visible on light backgrounds, with cleaner page controls and no unnecessary “Page 1 of 5” text. I also tested slide animation for page changes, but removed it in the end because the simpler static transition feels cleaner, faster, and more suitable for a game browsing page. This works well with the existing Lemon Web Games JavaScript structure, which already separates the game grids into sections such as mp-grid, ra-grid, rg-grid, and tg-grid.
9/5/2026 Added 8 HTML5 Games
NEW
Added 8 HTML5 Games as below.
  • Jet Rush
  • Moto X3M 2
  • Traffic Jam 3D
  • Clash of Vikings
  • Adventure Capatalist
  • Astro Survivors
  • Bad Parenting
  • Riddle School 2

Enjoy...
6/5/2026 DNS Checker Web App
NEW
Developed new web application - DNS Checker. Prior to recent incident had where there was a global issue for the WebNic Global DNS Registrar was down impacting several hours of downtime on one of my managed DNS services, once the services is up is quite difficult to trace which DNS provider in Malaysia were up. Therefore i developed this simple app specifically catered for Malaysian where it will try to resolve a domain name using the malaysian top DNS providers.

DNS Checker is a simple web-based tool that helps users check DNS records for a domain across selected Malaysian DNS providers, ISP network resolvers, and top global DNS servers. It supports common record types such as A, AAAA, CNAME, MX, NS, PTR, SOA, SRV, TXT, and CAA, making it useful for troubleshooting website access, email configuration, domain verification, Cloudflare setup, and DNS propagation issues. Instead of relying on only one resolver, the tool compares results from multiple DNS servers and displays the returned records, response time, and resolver status in a clean, easy-to-read interface. This makes it especially useful for website owners, IT teams, developers, and anyone who wants a quick way to confirm whether a domain is resolving properly from both Malaysian and global DNS perspectives.
3/5/2026 Added 8 PSX Games
NEW
Added 8 PSX Games as below.
  • Digimon World
  • Madden NFL 2004
  • Bust a Groove
  • NBA Live 97
  • Road Rash: Jailbreak
  • Harry Potter and the Philosopher's Stone
  • Legacy of Kain: Soul River
  • Harry Potter and the Chambers of Secret

Enjoy...
28/4/2026 Developed New App - AutoMed Expand
NEW
AutoMedExpand is designed with a very simple goal in mind — to make clinical documentation faster without compromising accuracy or compliance. By allowing doctors to type familiar shortforms like TKR or HTN and automatically expanding them into full medical terms, it removes the repetitive burden of typing long phrases over and over again. The beauty of the application lies in how seamlessly it works in the background, integrating with existing Hospital Information Systems without requiring any changes. It respects how clinicians naturally work, while quietly ensuring that the final documentation remains clear, standardised, and aligned with hospital and regulatory expectations.

What makes AutoMedExpand truly appealing is how practical it is in real-world healthcare environments. It doesn’t try to introduce complex workflows or disrupt existing systems — instead, it enhances them. With a centrally managed yet customisable dictionary, hospitals can maintain consistency while still adapting to evolving clinical needs. For doctors, this means less time spent typing and more time focused on patient care. It’s a small change in workflow, but one that delivers meaningful improvements in efficiency, accuracy, and overall user experience.
26/4/2026 Small fixes to Tiny Fishing, Merge Round Racers, Cubito Mayhem
UPDATE
Small fixes applied to some newly uploaded game when i tested using mobile phones.
  • remove rotate overlay for mobile for Tiny Fishing and Merge Round Racers
  • disable mobile play for Cubito Mayhem.(tested not working on mobile)

26/4/2026 Added 8 HTML5 Games
NEW
Added 8 HTML5 Games as below.
  • Gladihoppers
  • Cluster Rush
  • CraftMine
  • Cubito Mayhem
  • Merge Round Racers
  • Papa's Pizzeria
  • Red Ball 4
  • Tiny Fishing

Enjoy...
19/4/2026 Added 8 Nintendo64 Games
NEW
Added 8 Nintendo64 Games as below.
  • Road Rash 64
  • Ready 2 Rumble Boxing: Round 2
  • Ready 2 Rumble Boxing: Round 1
  • Pokemon Puzzle League
  • Perfect Dark
  • Nuclear Strike 64
  • Mickey's Speedway USA
  • Kirby 64: The Crystal Shards

Enjoy...
12/4/2026 Added 8 HTML5 Games
NEW
Added 8 HTML5 Games as below.
  • George and the Printer
  • Get Yoked
  • Real Flight Simulator
  • Super Falling Fred
  • Burrito Bison
  • Beach Boxing Simulator
  • Basket Battle
  • Aqua Park

Enjoy...
5/4/2026 Added 8 HTML5 Games
NEW
Added 8 HTML5 Games as below.
  • Angry Birds Showdown
  • Room Sort
  • Crossy Road
  • Dig Deep
  • Draw the Line
  • Soccer Dash
  • Sushi Roll
  • Sword Play

Enjoy...
28/3/2026 Reupload Ishar 0, Ishar 1 & Ishar 2 to fix 404 Error
UPDATE
Today i randomly test few games, and during my test of Ishar series games, i noticed Ishar 0, Ishar 1 and Ishar 2 are no longer playable due to 404 not found. Turns out, when i was working on Ishar 3 where i have so many versions working on that, i accidentally removed other Ishar games. I have reuploaded the game, and now it is playable.
28/3/2026 Trending Games Now Live: Real-Time Insights Based on the Last 7 Days of Player Activity
UPDATE
I’ve just rolled out a new Trending Games (Last 7 Days) feature to Lemon Web Games, giving a much more dynamic view of what players are actually engaging with right now instead of relying on lifetime totals; this works by leveraging the existing logging system where every play is recorded daily, then aggregating the last seven days of logs to calculate both total plays and unique players per game, sorting them to surface genuinely active titles, and exposing the result through a new endpoint that plugs directly into the existing tab system without breaking anything—so the UI stays consistent while the data becomes far more meaningful and timely; here’s the core logic that powers it:

// Loop through last 7 days of logs
for ($i = 0; $i < 7; $i++) {
    $date = date('Y-m-d', strtotime('-' . $i . ' days'));
    $logFile = $logsDir . '/game_clicks-' . $date . '.log';

    if (!file_exists($logFile)) continue;

    $fh = fopen($logFile, 'r');
    while (($line = fgets($fh)) !== false) {
        $parts = explode(' | ', trim($line), 5);
        if (count($parts) < 3) continue;

        $ip   = trim($parts[1]);
        $game = trim($parts[2]) ?: 'Unknown';

        if (!isset($result[$game])) {
            $result[$game] = ['plays'=>0,'users'=>0,'_ips'=>[]];
        }

        $result[$game]['plays']++;

        $ipHash = substr(hash('sha1', $ip), 0, 12);
        if (!isset($result[$game]['_ips'][$ipHash])) {
            $result[$game]['_ips'][$ipHash] = true;
            $result[$game]['users']++;
        }
    }
    fclose($fh);
}		  
		  
28/3/2026 Added 8 HTML5 Games
NEW
Added 8 HTML5 Games as below.
  • City Smash
  • Fork n Sausage
  • Tall Man Run
  • Chess Classic
  • Guess Their Answer
  • Hide N Seek
  • 8 Ball Billiards Classic
  • Bridge Race

Enjoy...
24/3/2026 TV3 Streaming Keeps Breaking, So I Keep Fixing It
UPDATE
TV3 streaming went down yet again, causing the familiar frustration of broken playback, dead links, or streams that simply refused to load, and this article shares how I stepped in once more to troubleshoot and fix the issue. It highlights the reality that web-based live streaming is often less stable than users expect, with source changes, playback issues, and technical disruptions happening behind the scenes without warning. Rather than treating it as a one-time setup, the article reflects on how maintaining TV3 streaming has become an ongoing cycle of testing, diagnosing, and repairing whenever the stream breaks. In the end, the important thing is that the stream is working again, even if experience suggests this probably will not be the last time it needs another fix.
23/3/2026 UI UX Improvements for Floating App Search with Smooth Navigation
NEW
Today’s update focused on refining both functionality and visual consistency of the floating search bar to match the Lemon Web Games experience more closely. The UI was redesigned to remove unwanted borders, align sizing and spacing, and adopt a cleaner dark theme with compact controls, while ensuring the input field no longer shows default browser styling. Functionally, the search now behaves consistently across Enter key and button clicks, supports smooth scrolling with proper offset adjustment for the fixed header, and improves navigation accuracy when selecting results. Additionally, usability was enhanced by hiding the floating search bar when reaching the “Back to Applications” section and restoring it when scrolling back up, resulting in a more polished and seamless user experience overall.
22/3/2026 Added 8 NEOGEO Games
NEW
Added 8 NEOGEO Games as below.
  • Donkey Kong
  • 3 Wonders
  • Neo Bomberman
  • Pacman
  • Twinkle Star Sprites
  • Neo Turf Masters
  • Windjammers
  • Garou Mark of the Wolves

Enjoy...
19/3/2026 Removed Malaysia Traffic CCTV Feed App
REMOVED
We have removed the Malaysian CCTV Traffic Live Feed Camera page from Lemon Web Solutions following a takedown notice from Lembaga Lebuhraya Malaysia (LLM). The page and all related LLM content have been taken down, and any stored copies associated with the feature have also been deleted. This action was taken in response to LLM’s notice stating that the highway CCTV images were used without permission and requesting immediate removal and written confirmation of compliance.

Effective immediately, the app has been removed, any blog articles related also were removed and any other related publications related to this.
15/3/2026 Added 8 SegaMD Games
NEW
Added 8 SegaMD Games as below.
  • FIFA 95
  • FIFA 98
  • Desert Strike: Return to the Gulf
  • Demolition Man
  • Lethal Enforcers 2: Gun Fighters
  • Lethal Enforcers 1
  • Toughman Contest
  • Primal Rage

Enjoy...
14/3/2026 Enhancing the Lemon Web Apps Page With a New Full-Width Hero Layout
NEW
Today I enhanced the Lemon Web Apps page by introducing a new full-width hero section with a video background to create a more modern and visually engaging entry point for the page. The hero now displays the title and description on the left while showcasing four featured applications on the right in a 2×2 layout styled like photographic cards with subtle shadows and slight rotation for a more dynamic presentation. I also redesigned the overlay from a dark layer to a smooth gradient that fades from opaque at the top to fully transparent at the bottom, allowing it to blend cleanly into the white page background. These improvements make the page feel more immersive, highlight key applications immediately, and give the Lemon Web Apps section a more polished and professional visual identity.
11/3/2026 Added New Hero Layout for Lemon Blog main page
NEW
Added New Hero Layout for Lemon Blog main page, featuring a full-width video background, a cleaner featured-articles showcase, and a dedicated category selector styled specifically for the hero area. This new layout is designed to appear only on the main Lemon Blog landing page, giving the homepage a stronger visual introduction while keeping paginated or filtered views in their more standard browsing layout.

I reworked the Lemon Blog layout so the hero is no longer rendered inside the left col-md-9 content column and is instead output as a separate detached block that gets moved above the entire row containing both the main component and the right sidebar, which fixes the issue of the right-position module appearing behind the hero. I also kept the hero visible only on the clean /lemon-blog URL with no query string, increased the hero showcase from 3 to 4 articles, made the hero content use the wider 1150px layout, added a separate stylized category selector inside the hero while hiding the original selector whenever the hero is shown, kept the original selector and placement when the hero is hidden, set the hero video to fill the background as requested, and ensured the normal blog grid skips the posts already featured in the hero so the same articles are not repeated immediately below.
7/3/2026 Bringing RollerCoaster Tycoon 2 to the Browser with OpenRCT2 and WebAssembly
NEW
RollerCoaster Tycoon 2 has now been added to the Lemon Web Games library, bringing one of the most beloved classic theme park simulation games to the browser. This version runs using a WebAssembly build based on the OpenRCT2 engine, allowing the game to operate directly in modern web browsers without requiring any installation. Getting it running online required quite a bit of behind-the-scenes work, including compiling the OpenRCT2 source with Emscripten, resolving dependency issues with libraries such as zlib, libzip, and ICU, and packaging everything into a browser-compatible environment. The end result is a fully playable version of RollerCoaster Tycoon 2 that retains the original gameplay experience while taking advantage of modern web technology, making it easy for anyone to jump in and start building theme parks instantly.

A big part of the technical challenge came from adapting a desktop-first open source project into something that can run inside the browser. The build process involved using Docker together with Emscripten to compile the OpenRCT2 codebase into WebAssembly, while also fixing a long chain of dependency issues involving ICU, Ogg, Vorbis, SpeexDSP, and libzip. Several build scripts and Dockerfile sections had to be manually corrected because some dependencies were expecting Linux shared libraries, while the WebAssembly toolchain needed static-compatible outputs instead. On top of that, paths for headers, pkg-config discovery, and library linking all had to be adjusted so the final browser build could compile successfully. It was very much a trial-and-error process, but it showed how much work goes into turning a classic PC game into a playable browser experience.
7/3/2026 Refining Navigation and Game Discovery with Improved UI and JavaScript Logic
UPDATE
Several improvements were made to the page’s JavaScript to enhance usability and navigation. The search bar behavior was simplified so it is now visible from the top of the page instead of appearing only after reaching a specific section. At the same time, the existing logic that hides the search element near the “Back to Applications” area was preserved to prevent UI overlap. The “scroll to top” function was also revised so it now correctly scrolls to the very top of the page rather than the top of the game library section. In addition, the button now automatically collapses any open accordion panels when returning to the top, ensuring the page resets to a clean state for easier browsing.

Another enhancement involved redesigning how featured game groups are displayed. The three sections — Recently Added, Popular Games, and Random Games — were consolidated into a single tabbed interface to create a cleaner and more compact layout. This allows users to switch between categories without scrolling through multiple sections, while still preserving the original grid layout and card styling used for the games. The implementation keeps the existing section and grid IDs intact so the current JavaScript that loads and renders the game data continues to function without disrupting the design or existing functionality.
7/3/2026 Added 3 HTML Games
NEW
Added 3 HTML Games as below.
  • Ovo
  • Indian Truck Simulator
  • Evade

Enjoy...
7/3/2026 Added 4 GBA Games
NEW
Added 4 GBA Games as below.
  • ESPN Final Round Golf
  • Star Wars: Jedi Power Battles
  • Hello Kitty: Happy Party Pals
  • Batman Vengeance

Enjoy...
7/3/2026 Added 3 DOS Games
NEW
Added 3 DOS Games as below.
  • Little Big Adventure 2
  • Screamer 2
  • Screamer 1

Enjoy...
7/3/2026 Added 1 PSX Games
NEW
Added 1 PSX Games as below.
  • Little Big Adventure 1

Enjoy...
6/3/2026 Lemon Web Emulator-Based Games Updated to EmulatorJS 4.2.3
UPDATE
As part of ongoing improvements to the Lemon Web emulator-based games platform, the underlying EmulatorJS engine has recently been upgraded to version 4.2.3. This update brings various internal improvements aimed at better stability, compatibility with more game ROMs, and smoother performance across different devices and browsers. Because the emulator files are shared across hundreds of game pages, some returning visitors may temporarily continue loading older cached versions of these files stored in their browser. If you notice that a game is not behaving as expected after this update, clearing your browser cache or opening the page in a private browsing window should ensure the latest EmulatorJS 4.2.3 files are loaded correctly.
1/3/2026 Completed updating YouTube Gameplay Previews for all games
UPDATE
Finally completed all games to link with youtube video previews. Close to 500 games and took me several hours to complete all. Spent about 1 hours per day since 27th February. Total 3++ hours spent on this. Result is quite nice. I noticed one game that does not shows the youtube video which is Texas HoldEm Poker. Oddly, Youtube flags this video as an adult videos, but it is just a harmless poker games that does not involve real money. Oh well. It is what it is...
1/3/2026 Added 5 HTML Games
NEW
Added 5 HTML Games as below.
  • GrindCraft
  • Duck Life Battle
  • Five Nights at Osaka
  • OneBit Adventure
  • Eagle Ride

Enjoy...
27/2/2026 Adding YouTube Gameplay Previews to Lemon Web Games
UPDATE
I’ve enhanced Lemon Web Games by integrating YouTube video previews directly into selected game listings, allowing players to instantly see gameplay footage before diving in. When a game is expanded, an embedded preview automatically plays (muted and optimized for both desktop and mobile), giving users a quick visual showcase of mechanics, graphics, and overall experience. The layout is carefully aligned to match the existing image presentation, ensuring a clean and consistent design without disrupting performance or responsiveness. This improvement adds a more dynamic, modern browsing experience while helping players quickly decide which games they want to explore next.

Since my game library is quite huge right now, i am slowly updating one by one to link the videos. Currently, completed at letter "M". Half way there...
25/2/2026 Added 7 HTML Games
NEW
Added 7 HTML Games as below.
  • Scrap Metal
  • Perfect Hotel
  • Assessment Examination
  • Die in the Dungeon
  • Evil Nun: School's Out
  • Eggy Car
  • Crazy Cars!

Enjoy...
21/2/2026 Added 12 DOS Games
NEW
Added 12 DOS Games as below.
  • Entity
  • Stunts
  • Prehistorik
  • BC Racers
  • Wolfenstein 3D: Wolfendoom
  • Oregon Trail
  • Alien Trilogy
  • Secret of Monkey Island
  • Syndicate Plus
  • X-COM: UFO Defense
  • Terminator Rampage
  • Redneck Rampage

Classic never dies... Let's keep those game alive still despite it's being abandon. Enjoy...
18/2/2026 Expanding My Services: Business AI Development
NEW
I’ve recently introduced Business AI Development as part of my services after noticing a growing number of web development enquiries shifting toward AI-related solutions. More clients are no longer just asking for websites, but for systems that can automate tasks, assist users, and process information intelligently. Instead of treating these as separate projects, I now build them directly into structured AI programs that integrate with existing workflows, helping businesses move beyond static websites into smarter, more functional platforms.

This shift also reflects how expectations around software have changed. A website is no longer just a place to display information — businesses now want it to think, assist, and act. By incorporating AI into development from the start, I can design systems that not only present data but also interpret it, respond to users, and streamline operations. The end result is not just a better website, but a tool that actively supports daily work instead of passively sitting in the background.
18/2/2026 Added 6 HTML Games
NEW
Added 13 HTML Games as below.
  • Obby: Lucky Blocks Obby
  • Fisquarium
  • Cheese Chompers
  • Alien Sky Invasion
  • 10 Minutes Till Dawn
  • OFF

Enjoy...
18/2/2026 Added Random Games Section
UPDATE
I added a new Random Games section to the page and wired it up so it pulls and displays a shuffled set of games in the same card layout used by Popular Games. To keep everything consistent, I also introduced a matching CSS block scoped to #random-games, including the correct #rg-grid target, so the section renders in the same 4-column desktop and 2-column mobile grid with identical spacing, card styling, hover behavior, thumbnail handling, and pill metadata styling.

Prior to this, i also found out many rubbish in my gametracker JSON where it is storing the old invalid chinese characters where last time players that translates this page to mandarin, it is storing that in my JSON. I have fixed it previously forcing no translate for my page, but the garbage still resides in the JSON. With this random game module, it helps me to clean up this garbage alongside with wrong filename for the images.
15/2/2026 Fresh Finds and Blog Categories Module Design Updates
UPDATE
For my Blog Category module, I refined the layout into a cleaner two-line structure where the category title appears first and the post count sits neatly below it. I also improved the overall presentation by enlarging the category image, reducing the title font size, tightening the card border radius to 5px, adding a slightly darker hover shade for better feedback, ensuring the category image sits inside a white box with a 3px border radius, and removing the underline effect on title hover to keep the design looking consistent and polished.

For my “Fresh Finds” (random blog) module, I reorganized the post preview so the metadata displays in a more logical and less repetitive way. I moved the date and category into a single “Date | Category” row directly below the article title and removed the extra category output that was causing redundancy. I also upgraded the call-to-action by converting “Read More” into a Bootstrap button (btn btn-default btn-success), aligning it to the left, and removing the horizontal divider above it so the footer feels lighter and more modern.
14/2/2026 Added 13 HTML Games
NEW
Added 13 HTML Games as below.
  • Industrial Basis
  • Idle Bee Factory
  • Rocket Soccer Derby
  • Hills of Steel
  • Kraft & Slash
  • Little Runmo
  • Plants vs Zombies 2
  • Terminator 1
  • Backrooms 2D
  • A Day in the Office
  • Amidst the Sky
  • MR Racer
  • 3D Bowling

Enjoy...
13/2/2026 Search UX Improvement Lemon-Web Games: Clear Popup Messages for Empty, Too-Short, and No-Result Queries
UPDATE
I updated the search behavior so it now gives clear feedback in every “nothing to do” situation: when I press Enter or click the search button, it checks the current query and the suggestion list, then shows a popup modal with the right message. If the input is blank, it prompts me to type a game name; if it’s only one character (too broad), it asks me to enter at least two characters; and if the query is two or more characters but returns zero matches, it shows “No such game in Lemon Games.” This makes the search feel more intentional and avoids those silent moments where nothing happens.
11/2/2026 Added 12 SNES Games
NEW
Added 12 SNES Games as below.
  • Shaq Fu
  • Chrono Trigger
  • Tetris Attack
  • Sim Earth
  • Sink or Swim
  • Teenage Mutant Ninja Turtles: Tournament Fighters
  • Teenage Mutant Ninja Turtles: Turtles in Time
  • Terminator 1
  • Earthbound
  • Street Fighter Alpha 2
  • Jungle Book
  • X-Men: Mutant Apocalypse

Enjoy...
9/2/2026 Added 6 HTML Games
NEW
Added 6 HTML Games as below.
  • Two Player Games
  • Ages of Conflict
  • Bounty of One
  • Surf GO
  • Grey-Box Testing
  • Thorn and Balloons

Enjoy...
8/2/2026 Added 5 HTML Games
NEW
Added 5 HTML Games as below.
  • Station 141
  • Station Saturn
  • POM Gets WiFi
  • Moto Road Rash
  • Highway Racer 2

Enjoy...
8/2/2026 Removed Jet Force Gemini
REMOVED
Removed Jet Force Gemini. During my playtest, game was crashing. Cant play. Removed from library.
7/2/2026 Added Slow Roads game
NEW
Added Slow Roads game - requested by Lane Ivy.
7/2/2026 Removed Derby Stallion
REMOVED
Removed Derby Stallion due to Japan language edition.
7/2/2026 Removed Yoshi Story
REMOVED
Removed Yoshi Story due to corrupt data file.
7/2/2026 Fixed Legend of Zelda Majora Mask
UPDATE
Fixed Legend of Zelda Majora Mask. Revise to use a different updated game engine at /html5emuj2 which uses newer version of EmulatorJS. Tested play and no more crash.
6/2/2026 Fixed Nazi Zombies game ViewPort
UPDATE
Fixed Nazi Zombies game - game viewport have scroll bar which is not supposed to have. Added overflow hidden. A very small and minor updates.
4/2/2026 Fixing jQuery “unrecognized expression: /” Error in Zo2 Mega Menu Smooth Scroll
UPDATE
While checking the browser console, I noticed a jQuery error saying “Syntax error, unrecognized expression: /”, which happened because the Zo2 mega menu script was treating the menu link’s href value as a CSS selector. When a link had href="/" (or any normal URL), the code attempted to run jQuery('/'), which is not a valid selector, causing the click handler to crash. The fix was simple: add a guard so the smooth-scroll animation only runs for in-page anchor links that start with # (for example #about), and let normal links like / navigate as usual. After updating site.scripts.js with this check (and preventing default only for anchors), the console error disappeared and menu behavior became stable again.

A small selector guard like this goes a long way in keeping menu clicks reliable and your site free of annoying front-end breakages.
3/2/2026 Removed Yoshi Safari
REMOVED
I decided to remove Yoshi’s Safari from my game archive after testing it and confirming the problem wasn’t my HTML or emulator settings, but the game itself. This title was designed around the SNES Super Scope (light gun), and in my current browser emulator setup it gets stuck at the opening prompt because it expects the light gun’s Turbo input, which a normal keyboard/controller can’t provide. Rather than leaving a broken or confusing experience for visitors, I pulled it from the list until I can either find a controller-compatible patched version or switch to an emulation setup that properly supports Super Scope input.
3/2/2026 Fix Hardware Tycoon Invisble Font
UPDATE
During my playtest of the games to publish blogs and youtube videos, I ran into a weird but very real problem while testing Hardware Tycoon on my site: the “Company Name” text looked invisible even though the input box was there. At first it felt like a game bug, but it turned out to be a browser styling issue affecting the game’s HTML input field that Construct 2 overlays on top of the canvas. I had recently enabled color-scheme: dark; in my page styling, and that caused Chrome to render the input text in white, which blended badly with the game’s light input background. The fix was simple and immediate: I removed the color-scheme setting completely, and the textbox returned to normal with readable text again.

Game is now fixed.
1/2/2026 iOS Fix: Disable Fullscreen Prompt and Prevent Auto Re-Fullscreen in Diablo Loader
UPDATE
Today I updated the Diablo HTML loader to fix iOS-specific fullscreen problems that only showed up on iPhone 12 mini. The main change was adding an iOS-only patch that disables fullscreen requests entirely (to stop the game from immediately jumping back into fullscreen, which prevented the touch keyboard from staying open when creating a new player) and continuously removes the green bottom prompt "Tap here to go fullscreen" so it can’t trap the screen. Everything else in your flow was kept the same (autofull redirect logic, boot overlay, R2-first download with local fallback, and the simulated drop injection of DIABDAT.MPQ), and after testing, we reverted away from the experimental caching attempt because it made startup worse on some devices, keeping the stable working version instead. For reference, here is the exact iOS-only snippet that was added:
<style>
  .lw-kill-fullscreen-prompt{
    display:none !important;
    visibility:hidden !important;
    pointer-events:none !important;
    height:0 !important;
    width:0 !important;
    overflow:hidden !important;
    opacity:0 !important;
  }
</style>

<script>
(function () {
  function isIOS() {
    var ua = navigator.userAgent || '';
    var iOS = /iP(hone|od|ad)/.test(ua);
    var iPadOS = (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
    return iOS || iPadOS;
  }
  if (!isIOS()) return;

  // Disable fullscreen on iOS to stop auto re-fullscreen (blocks on-screen keyboard).
  function noopResolved(){ return Promise.resolve(); }
  try {
    var EP = Element.prototype;
    if (EP.requestFullscreen) EP.requestFullscreen = noopResolved;
    if (EP.webkitRequestFullscreen) EP.webkitRequestFullscreen = noopResolved;
    if (EP.msRequestFullscreen) EP.msRequestFullscreen = noopResolved;
  } catch(_) {}

  try {
    if (document.exitFullscreen) document.exitFullscreen = noopResolved;
    if (document.webkitExitFullscreen) document.webkitExitFullscreen = noopResolved;
  } catch(_) {}

  // Kill the green "Tap here to go fullscreen" prompt even if it gets injected later.
  function killGreenPrompt(root){
    var wanted = 'tap here to go fullscreen';
    var scope = root || document;
    var nodes = scope.querySelectorAll('button, a, div, span, p');
    for (var i=0;i<nodes.length;i++){
      var el = nodes[i];
      var t = (el.textContent || '').trim().toLowerCase();
      if (t === wanted){
        try { el.classList.add('lw-kill-fullscreen-prompt'); } catch(_) {}
        try { el.style.display = 'none'; } catch(_) {}
        try { el.remove(); } catch(_) {}
      }
    }
  }

  killGreenPrompt(document);

  var mo = new MutationObserver(function(muts){
    for (var i=0;i<muts.length;i++){
      var m = muts[i];
      if (m.addedNodes && m.addedNodes.length){
        for (var j=0;j<m.addedNodes.length;j++){
          var n = m.addedNodes[j];
          if (n && n.nodeType === 1) killGreenPrompt(n);
        }
      }
    }
  });

  try {
    mo.observe(document.documentElement, { childList:true, subtree:true });
  } catch(_) {}
})();
</script>

Let me know how is your game experience in iOS device. I only tested in iPad Mini, iPhone 17, 14 and 12 Mini since I only own these devices. On iPhone 12 Mini, the game really is not enjoyable due to small screen estate, but I leave the game still playable.
31/1/2026 Added 11 HTML Games
NEW
Added 11 HTML Games as below.
  • Kart Bros
  • Unlimited Trees
  • Lock the Door
  • Goblin Goopmaxxing
  • Hungry Lamu
  • 2DOOM
  • Vex 4
  • Vex 3
  • Vex 2
  • Vex 1
  • Zuma

Enjoy. I keep on adding game, but i am way behind to write the blog article for these games. Maybe i need to spend sometime to do that and stop adding more and more games.
28/1/2026 Smart Height-Based Post Display for Lemon Blog Tags and Search Pages
UPDATE
This update makes Lemon Blog Random Post module adjust itself based on the page type, using separate rules for tag pages and search pages. For /lemon-blog/tags/*, I revised the thresholds so the module now scales progressively starting at 2250px (show 1 item), then increases the visible post count in stepped ranges (2715px = 2, 3180px = 3, and so on) up to a hard cap of 30, all based on the overall #eb height. For /lemon-blog/search/*, I added stricter logic: if the #eb height is below 2715px, the entire module (including the header module title) is fully hidden; once it reaches 2715px and above, it starts showing posts progressively (2715px = 1, 3180px = 2, 3645px = 3, etc.) with a cap of 29. On all other pages, the original height-mapping logic stays unchanged, so Lemon Blog existing behaviour remains intact everywhere else.
26/1/2026 Fixed WebGL issue for Mobile and Allow Potrait mode for Rolling Sky
UPDATE
Only today i got the chance to test this on my mobile and noticed some issues. Fixed WebGL issue for Mobile and Allow Potrait mode for Rolling Sky.
25/1/2026 Added 7 HTML Games
NEW
Added 7 HTML Games as below.
  • Level Devil
  • Obby Robby Only Up
  • Nazi Zombies
  • Minecraft Shooter
  • Opposite Day
  • Megachess
  • Rolling Sky

Enjoy. Personally, i like Level Devil so much.
25/1/2026 Failed even after rebuild with 4GB WASM Limit for Serious Sam
UPDATE
I have tried to rebuild, and still problem.

The crash I am experiencing is caused by a memory allocation overflow where my game engine attempts to request 2,266,804,224 bytes (approximately 2.11 GB), exceeding the hard 2 GB (2,147,483,648 bytes) limit inherent to 32-bit WebAssembly. In my 32-bit environment, memory addresses are signed integers; once my allocation crosses the 2,147,483,647-byte threshold, the pointer value "wraps around" and becomes negative, causing my engine to look at corrupted data and trigger a browser-level rejection of the heap expansion. Despite me setting a 2 GB maximum in my WebAssembly.Memory configuration, my application is still "greedy" for more space than the browser can safely provide, leading to the "Cannot enlarge memory" error.

To resolve this, I must force my engine to operate within a smaller memory footprint by aggressively lowering my texture and cache settings in the PersistentSymbols.ini file. Specifically, reducing tex_iNormalSize, tex_iAnimationSize, and tex_iEffectSize to a value of 1 restricts the size of my loaded assets, while adding explicit caps like tex_iMaxMemSize = 128 prevents my engine from bloating. Additionally, lowering the maximum memory cap in my JavaScript to around 1.8 GB and disabling ALLOW_MEMORY_GROWTH ensures my engine hits its own internal "Out of Memory" handlers—which can trigger resource flushing—rather than hitting the 32-bit integer wall and crashing my entire browser session.

Furthermore, I attempted to bypass the 2 GB wall by increasing the memory limit to 3 GB and 4 GB, but this introduced an entirely different set of critical failures that directly linked back to my previous UTF-8 encoding issues. In a 32-bit WebAssembly environment, the browser and the underlying engine simply cannot address memory beyond the 32-bit integer limit; when the memory address wraps around or points to invalid space, the TextDecoder fails to interpret the resulting corrupted strings. This produces the "The encoded data was not valid for encoding utf-8" error and the appearance of broken characters, proving that I cannot simply "out-allocate" this architectural limitation as the engine's fundamental data handling breaks down entirely once the 2 GB boundary is breached.

Even after implementing these memory constraints and configuration adjustments, I have tried everything and it still fails. If anyone knows how to fix this issue, feel free to share your knowledge to me.
24/1/2026 New Serious Sam Classic Game
NEW
Added Serious Sam Classic Game. This, honestly took me about a whole day doing this. It was major pain to deploy this since i build using martinmullins source. His source got many missing reference. And when finally build demo, that only took me a half day and the other half is trying to load up the actual Serious Sam The First Encounter. Struggle alot.

Game deployed, but far from perfect. Below is the list of playable levels.
  • //Levels/01_Hatshepsut.wld Working
  • //Levels/02_SandCanyon.wld
  • //Levels/03_TombOfRamses.wld Working
  • //Levels/04_ValleyOfTheKings.wld
  • //Levels/05_MoonMountains.wld Working
  • //Levels/06_Oasis.wld Working
  • //Levels/07_Dunes.wld Working
  • //Levels/08_Suburbs.wld Working
  • //Levels/09_Sewers.wld Working
  • //Levels/10_Metropolis.wld Working
  • //Levels/11_AlleyOfSphinxes.wld Working
  • //Levels/12_Karnak.wld Working
  • //Levels/13_Luxor.wld Working
  • //Levels/14_SacredYards.wld Working
  • //Levels/15_TheGreatPyramid.wld

Those level failed to launch, error was due to capping of 2GB ram in the assembly. To fix, i may need to rebuild again and that is a very long long long story where i sort of forgot how i got the build working in the first place with many fixes here and there. Anyway, if i am free, i might continue, but not anytime soon. Also i may continue with the Second Encounter of the game since it is basically the same WASM engine, i just didnt upload the levels, data and etc.
24/1/2026 Finally Completed Lemon Web Games Game Info
UPDATE
This is ALOT and really TIRING updating. Finally completed after several days. Though not all game does have Game Info since the blog article is not yet published. That part requires time where i really need to playtest, upload to youtube, write a blog article and publish it. Sometimes, during my playtesting, that's where i found out the game was not stable, and many more issues and i will do my best to fix the issue. Anyway, gameinfo link from Lemon Web Games completed. Finally...
23/1/2026 Updated Final Doom to use WASD Keys
UPDATE
Updated Final DOOM for both TNT and Plutonia Experiment to use WASD keys instead of arrow keys. While original game actually uses arrow keys with dot and comma to strafe, modern game uses WASD keyws combo with mouse. This was done for other DOOM games published here, so in effort to standardize all i have reconfigure the keys, and reupload new game bundled with the new configuration. Enjoy...
22/1/2026 Block Google Adsense being displayed at Header
UPDATE
I have blocked Google AdSense from being displayed in my website header by targeting the header area with CSS and hiding only the ad elements that get injected there. This allows ads to still appear in other parts of the page, but anything inside the header (including auto-placed AdSense blocks like .google-auto-placed, ins.adsbygoogle, and related wrappers or iframes) is forced not to render, preventing ads from overlapping my logo, navigation, or top banner. I chose this approach because it keeps the layout stable and clean without disabling AdSense site-wide, so the header remains an “ad-free zone” while the rest of the site can continue monetizing normally.
20/1/2026 Updated Lemon Web Games Game Info Till "G" and fixed Lemon Application Marquee issue
UPDATE
Slowly updating the linkage for Lemon Web Games with the Blog Game Info. Worked until "G" and to be continued next day... Also updated Lemon Web Games where sometimes the marquee is not working. I updated the marquee script to handle browser back/forward caching by safely restarting the CSS animation (via a temporary class toggle) and reloading the marquee content if it was restored empty on page revisit.
19/1/2026 Lemon Web UI Improvement
UPDATE
Make minor improvement on the website's UI as below. Not much updates since busy with Life & Work.
  • Improve Search UI Design. Added loading animation whenever search anything.
  • Improve Button Designs for Web Games, Web Apps and Native Apps. Standardize to use Orange and Green colors.
  • Still work in progress to link all blog articles for games with the Game Listing in Lemon Web Games. There are 300 games, surely this will take long time.
  • Further improve the auto count for blog article for Blog Tag pages
18/1/2026 Removed Lemon Blog Intro Video
REMOVED
While it is pretty to have the intro video for Lemon Blog, i find it distracting and not really relevant as the goal is to have a simplified version of the page to show blog listings. Rework the blog page completely to simplify.

Maybe in the future i might explore how to incorporate back that video somewhere else, for now i prefer to clean look of the page.
18/1/2026 Added Proper Zero Divide 1
NEW
When playtesting Zero Divide 1, now only i realize i uploaded wrong game for Zero Divide. Fixed and reupload the correct game. Kinda funny how i wrongly uploaded wrong game.
18/1/2026 Fixed Star Wars: Masters of Teras Kasi
UPDATE
Fixed Star Wars: Masters of Teras Kasi as i am using the ripped version of the game to save disk storage, the game sometimes failed to start due to ripped intro movie. Therefore i added a save state to straight away jump to the game menu to skip intro. Solved the problem.
18/1/2026 Fixed Zombotron 1 & 2
UPDATE
While playtesting both Zombotron 1 & 2, i noticed the game canvas was small centered in the middle of the screen. I may have forgotten to check out and fixed on this previously but now i have. Fixed the small centered game canvas to full height centered game canvas for both games.

Also for Zombotron 2, games runs abit slow even on a high-end pc. Also i cant seem to get to next level 2. Maybe need to check the flash/SWF file if i obtained the correct version or not. In the future maybe....
18/1/2026 Developed new Viewport Detector
NEW
This ViewPort Detector is a simple, handy web application that instantly shows you exactly how big your browser view really is, in a clean dashboard style that is easy to read on both desktop and mobile. Instead of guessing why a layout breaks, why a button wraps, or why a canvas feels “too small,” you can see your live viewport size, visual viewport, device pixel ratio, screen size, estimated physical pixels, and orientation in one place, updating the moment you resize or rotate your device. It even includes built-in rulers along the top and left edges, making it perfect for front-end testing, responsive design tweaks, and quick sanity checks when you are building pages that must look right across different screens.

Why developed it? Well personally i am working on Cut the Rope 1 previously where i wrote a script to detect my viewport and have a script to redirect user to different build of Cut the Rope 1 for certain viewport size, reason is default is Cut the Rope HD mode, else if not met certain viewport size it will redirect to mobile version that basically supports any viewport. This tool is quite important for developer, though not useful for normal users for atleast for myself.
18/1/2026 Fixed Trivia Crack
UPDATE
While playtesting this game Trivia Crack, answer fonts are white color making it invisible.. Fixed the issue and change the font color to black.
18/1/2026 Fixed Pokemon Stadium 2
UPDATE
While playtesting this game Pokemon Stadium 2, game always freezes after i start new game. Tested with multiple settings with threads off also the same. Tested in CDN version of EmulatorJS and it was working fine. Tested using version 4.2.1 of CDN, and it was failed. Concluded that the issue was with version 4.2.1 as somehow version 4.2.3 fixed whatever issue that causes freezes.

Seems like an issue with version 4.2.1 and i have deployed new build 4.2.3 at /html5emujs2. Moving forward i might need to deploy here instead, but i will retain the old games in 4.2.1 unless i found some issues. Too much work to migrate all games to 4.2.3 and to patch the game data is not easy since this requires all end user to clear cache file. Maybe i need to study how to globally force user side or client side clear cache then i am confident to do mass upgrade for all games. For now, i deployed another instant of EmulatorJS.
18/1/2026 Fixed AlQadim
UPDATE
While playtesting this game AlQadim, found some minor issue where system does not capture mouse. Forgot that this game does uses a mouse and i need to edit the game to capture mouse. Fixed the issue.
17/1/2026 Fixed Geekwad Games of Galaxy
UPDATE
While playtesting this game Geekwad Games of the Galaxy, found some minor issue where system does not capture mouse. Forgot that this game does uses a mouse and i need to edit the game to capture mouse. Fixed the issue.
17/1/2026 Tweak Ishar 3 Game - Still not stable with Random Crash
UPDATE
Game got random crashes when played. Sometimes i can play up to 30 minutes, sometimes 10 minutes, sometimes lesser or more.

Probabbly about 2-3 hours i have spent to try troubleshoot the issue for this game. Game seems unstable and when i play, random crashes throughout the game. I have sourced the internet looking for best dosbox config and can't find any best settings as the game still buggy. Main reason is i can see this game uses it's own DOS4GW protecteed module which causes timing conflict with the DosBox emulator and i honest have tried many CPU cycle timing to ensure good synchronization between the CPU and the memory module but still random crashes.

[sdl]
fullscreen=true
output=overlay
autolock=true
sensitivity=100
waitonerror=false
priority=higher,normal
mapperfile=mapper.txt
usescancodes=true

[dosbox]
memsize=16

[cpu]
core=dynamic
cputype=486_slow
cycles=fixed 7000

[render]
frameskip=0
aspect=false
scaler=normal2x

[midi]
mpu401=intelligent
mididevice=default
midiconfig=

[mixer]
nosound=false
rate=22050
blocksize=2048
prebuffer=10

[sblaster]
sbtype=sbpro2
irq=5
dma=1
hdma=0
mixer=true
oplmode=auto
oplrate=22050

[dos]
xms=true
ems=false
umb=true
keyboardlayout=auto
vga_render_per_scanline =off

[joystick]
joysticktype=auto
timed=true
autofire=false
swap34=false
buttonwrap=true

[serial]
serial1=dummy
serial2=dummy
serial3=disabled
serial4=disabled

[ipx]
ipx=true

[autoexec]
echo off
mount c .
c:
start.exe
If anyone knows a good setting for this game, please please please please please reach out to me and share to me the config file pleaseeee..
14/1/2026 Update auto count on 'Fresh Finds' number of displayed articles
UPDATE
I’ve rolled out a smart improvement to the Random Posts module that dynamically adjusts how many related articles are shown based on the actual height of the current blog entry. Instead of relying on fixed limits, the module now measures the real content height of each post (including late-loading elements like Google AdSense) and displays an appropriate number of related articles accordingly. This ensures shorter articles don’t feel cluttered while longer reads naturally surface more recommendations, resulting in a more balanced layout, improved readability, and a smoother browsing experience across all blog pages.

Also i renamed 'Random Article' to 'Fresh Finds'. More catchy wording i guess.
13/1/2026 Minor JS Script Added for Lemon Blog Head
UPDATE
Today’s update improves the Lemon Blog experience by making the main heading dynamic and context-aware, automatically adjusting the page title based on the selected blog category. Instead of showing a static “LEMON BLOG” heading everywhere, the page now intelligently reflects whether visitors are browsing App Development, Cybersecurity, Games, Guitar Covers, or any other category, creating clearer context and better visual continuity. The change works seamlessly across desktop and mobile views, preserves the existing responsive layout, and requires no server-side changes, making the blog feel more polished, structured, and easier to navigate for readers exploring different topics.

<script>
(function () {
  const heading = document.getElementById("responsive-heading");
  if (!heading) return;

  const url = window.location.href.toLowerCase();

  const routes = [
    { match: "lemon-blog?cat=application-development", title: "APP DEVELOPMENT" },
    { match: "lemon-blog?cat=cybersecurity", title: "CYBERSECURITY" },
    { match: "lemon-blog?cat=designs-artworks", title: "DESIGN & ARTWORKS" },
    { match: "lemon-blog?cat=games", title: "GAMES" },
    { match: "lemon-blog?cat=general-information", title: "GENERAL INFO" },
    { match: "lemon-blog?cat=guitar-covers", title: "GUITAR COVER" },
    { match: "lemon-blog?cat=mobile-development", title: "MOBILE DEV" },
    { match: "lemon-blog?cat=news", title: "NEWS" },
    { match: "lemon-blog?cat=personal-blog", title: "PERSONAL BLOG" }
  ];

  let matched = false;

  for (let i = 0; i < routes.length; i++) {
    if (url.indexOf(routes[i].match) !== -1) {
      heading.innerHTML = "<strong>" + routes[i].title + "</strong>";
      matched = true;
      break;
    }
  }

  if (!matched && url.indexOf("lemon-blog") !== -1) {
    heading.innerHTML = "<strong>LEMON BLOG</strong>";
  }
})();
</script>
Not a major update, but a beautification code nevertheless...
12/1/2026 Reducing Runtime Overhead After Game Launch for Heroes of Might & Magic 3
UPDATE
As part of this update, the page now automatically disconnects its UI-cleanup observer once the actual game starts running, instead of continuously watching and modifying the launcher interface in the background. Previously, the MutationObserver remained active for the entire session, repeatedly scanning the DOM even after the VCMI launcher had handed control over to the game itself. By stopping the observer as soon as the game canvas appears, unnecessary DOM work is eliminated, reducing long-term CPU and memory overhead during extended play sessions. While this does not change the game engine itself, it helps create a cleaner runtime environment and can improve overall stability, especially during longer Heroes of Might & Magic III sessions in the browser.

Also added a safeguard that restores the original page title whenever the game launches or attempts to override it internally, ensuring consistent branding throughout gameplay.
12/1/2026 3 James Bond Games Added
NEW
Added 3 Need for Speed to the Game Library as below:
  • James Bond: License to Kill
  • James Bond: Everything or Nothing
  • James Bond: Tomorrow Never Dies
12/1/2026 Update Blog Main Page and Fix Safari Video Issues
UPDATE
Updated Lemon Blog main page as per following changes.
  • Reprogram how the blog categories are being handled.
  • Complete overhaul on the main blog landing page to add video of Lemon Guy smiling while blogging.
  • Video intro generated using Sora ChatGPT AI.
  • Spent hours on tweaking the UI of the page to make it looks nice for desktop, tablet and phone.

Also updated all videos webM and MP4 in Lemon Web Solutions. While updating the blog page, i fetch my IPAD MINI to test out and to my suprise, all of the videos are not autoplay and upon googling this is the norm for IOS devices. Anyway, fixed by implementing some small script as below. Still does not autoplay but atleast whenever user interacts with the website, it will autoplay.
<video id="example"></video>
<script>
(function () {
 var started = false;
 function startVideo() {
  if (started) return;
  started = true;
  var v = document.getElementById("example");
  if (v) {
   v.muted = true;
   v.play().catch(function(){});
  }
  document.removeEventListener("touchstart", startVideo);
  document.removeEventListener("click", startVideo);
 }
 document.addEventListener("touchstart", startVideo, { passive: true });
 document.addEventListener("click", startVideo, { passive: true });
})();
</script>
This is merely a note to myself in the future when uploading video as i tend to forgot for IOS users.
12/1/2026 7 HTML5 Games Added
NEW
Added 7 HTML5 Games to the library as below:
  • Jailbreak Obby
  • Stickman GTA City
  • Highway Traffic 3D
  • Race Master
  • Pou
  • Stealth Master
  • A Date with Death
12/1/2026 3 Need for Speed Games Added
NEW
Added 3 Need for Speed to the Game Library as below:
  • Need for Speed 3: Hot Pursuit
  • Need for Speed 4: High Stakes
  • Need for Speed 5: Porsche Unleashed
12/1/2026 Removed House of the Dead 1 & 2
REMOVED
Deployed House of the Dead 1, tested and the game runs. But slows, ugly with missing textures (depending on settings) and many more issues. Similar to House of Dead 1, part 2 is even worse. I guess Windows Emulation on JS DosBox are still far from perfect. Atleast House of the Dead 1 can still be played, but low framerate.

In the end, decided to remove both games and not going to convert this into sockdrive as i dont think performance will improve much for this game.
12/1/2026 2 New Windows95 Games Added
NEW
Added 2 Windows 95 games as below. Also put a keyboard blocker where i block all keyboard keystroke. Reason, this can create confusion for new players who never played the original where the keyboard was meant for player 2.
  • Virtua Cop 1
  • Virtua Cop 2
Virtua Cop 1 plays fine. Virtua Cop 2, is quite slow during playtest. I tested the game bundle at JSDos Studio, and it was running smooth. Weird... I am using latest version. Another weird part is, tested at (https://v8.js-dos.com/studio/) also slow, and when tested at (https://dos.zone/studio-v8/) was okay. I have a feeling the ones at doszone is having a better optimized version of the jsdos. Maybe in the future i might need to inspect why and how.
11/1/2026 2 New Windows98 Games Added
NEW
Added 2 Windows 98 games as below:
  • Darkseed 2
  • Forsaken
11/1/2026 13 New Nintendo64 Games Added
NEW
Added several Nintendo64 Games to the library. Also apply pthreads for all of Nintendo64 games. The following games are added:
  • Aidyn Chronicles: The First Mage
  • Banjo Tooie
  • Derby Stallion
  • ECW Hardcore Revolution
  • Gex3: Deep Cover Gecko
  • James Bond: The World is Not Enough
  • WCW Backstage Assault
  • Shadow Man
  • Ridge Racer 64
  • Mario Party 2
  • Mario Party 3
  • Pokemon Stadium 1
  • Jet Force Gemini
11/1/2026 8 New DOS Games Added
NEW
Added several DOS Games to the library. Added some scripts to automate intro section by simulating required keystroke, for example for Predator 2, need to press E to change to Adlib sound system then only starts the game. Same goes for others game where i had to programme for such automation.

The following games are added:
  • Ishar 0: Crystal of Arborea
  • Ishar 1: Legend of Fortress
  • Ishar 2: Messengers of Doom
  • Ishar 3: The Seven Gates of Infinity
  • Geekwad: Games of Galaxy
  • Metal & Lace: Battle of Robo Babes
  • Electro Man
  • Predator 2
  • Darkseed 1
11/1/2026 Updated Stonekeep & Dungeon Master 2
UPDATE
Updated Stonekeep to use full data, includes full game video files and voice. Previously audiotrack and video files were stripped to give faster data load. But users wanted a true game experience may wants the full data to enjoy the cutscene and especially audio voice tracks that were missing previously.

Updated Dungeon Master 2 as well to use my own local copy of the original game. Previously when i play the game online, noticed some bugs and this does not happens when i use my own copy that i have since 90s. Now should be okay.
10/1/2026 New Cache Management
NEW
Introduced a new browser cache management feature that allows users to view how much browser storage is being used specifically by lemon-web.net, helping players better understand and manage their local game data. As the number of games on the platform continues to grow and some titles consume larger amounts of storage, this tool helps prevent unexpected loss of older save data by giving users visibility into their browser cache usage. While cache clearing is currently handled at the site level for simplicity and reliability, this feature lays the foundation for more granular, game-specific cache management in the future.

For now, it only functions to clear current cache for Lemon Web Solutions (www.lemon-web.net) website, but in the future i will be working on having the function to delete cache for specific games. This give controls to users to delete cache for games that they are no longer playing to have higher cache allocation for other games and to avoid loosing their save games if the browser decided to clear cache unknowingly.

Also need to work on getting cache files from CDN since this only take game data files that are hosted here, as some of the games files were hosted in our CDN.
10/1/2026 Removed Unreal 1
REMOVED
Awhile back i did deployed Unreal 1 Gold Edition using the same Web Assembly used in Unreal Tournament 99. While the web assembly is very much playable for Unreal Tournament, for Unreal 1 is a complete different result. Game are buggy, buttons are unpushable or unsable, textures are not rendered properly and many more issues. But the game runs smooth with high frame rate.

Then i tried another solutions using jsdos running Windows 95 and Windows 98, both yield same result. Poor performance. Game is playable, no bugs. But the framerate, i am getting around 10fps to 30fps. Most of the time is 10fps or lower while certain areas i might get higher framerates. Game is playable, but not enjoyable. I did try settings to use 3dfx wrapper (jsdos v8 does supports this as they provide glide wrapper), opengl, software rendering, all yields almost the same result. Poor performance.

For now, let's wait and see if any developer willing to work and complete the icculus WASM of the Unreal to fully complete the game DLLs for Unreal 1. Defintely not me as i am no expert in this assembly and even if i am, this will take a huge amount of time.
10/1/2026 Removed Sim City 3000
REMOVED
I did experiment with deploying SimCity 3000 using a sockified Windows 98 build, hoping it would finally deliver a stable web-based experience. Unfortunately, the simulation performance was already extremely slow right from the start, even before building a single zone or structure. Basic interactions felt sluggish, and the game speed never reached a playable state, making it clear this wasn’t just a late-game scaling issue. After multiple tests and comparisons with other Windows titles that run far better under the same setup, I ultimately decided to remove SimCity 3000 from the web lineup, as current browser-based emulation simply can’t provide the level of performance the game requires.

Maybe in the future when the jsdos v8 has evolved better in their web assembly or higher processing power in the future, but for now i remove this game.
9/1/2026 Sock-Fied Windows Game Files
UPDATE
Lemon Web has fully migrated its Windows 3.11, Windows 95, and Windows 98 games to a new sockdrive-based js-dos system, finally fixing the long-standing issue where in-game saves were unreliable or lost. With this change, classic Windows games can now save progress properly, allowing players to close the browser and return later without losing their game. The update removes one of the most frustrating limitations of browser-based Windows emulation and brings the experience much closer to playing these games on a real retro PC.

The following games are updated:
  • Age of Empires 1 - Windows 95
  • Animaniacs Gamepack - Windows 98
  • Sim Towe - Windows 3.11
  • Yoot Tower - Windows 98


Now users can enjoy games here where they can save their game progress ingame. I will start to upload more classic Windows games.
8/1/2026 Fix Some of DOS Games Assets
UPDATE
While reviewing the DOS games section, I ran into issues where some titles failed to load background music or internal assets, and it quickly became clear that this was not a problem with js-dos itself but a server-side access rule issue. The cause was very similar to a previous problem I encountered with EmulatorJS games, where an overly strict .htaccess redirect was unintentionally intercepting file requests made by the games and returning redirects instead of the actual files. After refining the rules so that only real game directories are restricted—while allowing individual files to be fetched normally—the affected DOS games are now able to load their required assets correctly, restoring proper audio playback and overall gameplay behavior.

Reminder to myself, have to really test out other games from time to time especially whenever i carry out some changes on security.
8/1/2026 Fix SegaSaturn and NeoGeo Games
UPDATE
I recently started testing a few games for Sega Saturn and NeoGeo and immediately ran into loading errors, which led me to investigate what was actually happening behind the scenes; after some digging, I discovered the issue wasn’t with the emulator or the game files themselves, but with an over-broad .htaccess rewrite rule that was unintentionally redirecting essential BIOS files like saturn_bios.bin with a 302 response, causing the emulators to fail silently—once I refined the rule to apply only to real game directories and not standalone files, the BIOS loaded correctly and the Saturn and NeoGeo titles began running as expected.

Reminder to myself, have to really test out other games from time to time especially whenever i carry out some changes on security.
8/1/2026 Fix Web-TV: TV3 Streaming
UPDATE
After multiple attempts to stabilise TV3 on Lemon Web TV, the real issue was traced back to an unreliable streaming source. By switching to a new source and monitoring it over two days, TV3 streaming is now stable, consistent across devices, and delivers proper HD quality, making this fourth revision the most reliable fix so far.

Now the TV3 Streaming seems stable and have monitored since yesterday and i can conclude looks okay for now.

I also have published an article in the blog for this as below.

Learn More
8/1/2026 Updated DOOM 3
UPDATE
Previous web assembly of DOOM 3 was compiled using shareware version of DOOM 3. I have rebuild again using D3WASM source code, and spent hours updating the CMakeList, pre & post chunked file, repackage the game data files to use the full version. Tested locally and running fine. Now uploaded to Lemon Web Games and tested in browser using my desktop and my Surface Pro, both work fine. Didn't play far enough to validate, but atleast reach to Level 3 or 4 i think after fought several imps.

I re-attempt to recompile again in my local server environment for Doom 3 Ressurection of Evil (ROE), but fail. Game runs, can reach ingame menu, but then when starting new level, i got error "Function 'map_erebus1::main' not found ...". This actually tells me the source code might not have that function exists, and when i checked, yup there is none. I am using D3WASM from Gabrielcuvillier (https://github.com/gabrielcuvillier/d3wasm).

Now i have downloaded the source from origin D3WASM and found the original source code does have \d3wasm\neo\d3xp, but was removed by his version. I guess he is only working on DOOM 3 only. To get DOOM 3 ROE, well that is a lot of work to add those files, check all the CPP files to expand, and revise the CMAKE. If i got the time, i might do this one day. For now, enjoy the normal DOOM 3.
5/1/2026 Updated Cut the Rope 1
UPDATE
Finally, i give up. To get it working on mobile is impossible on the current build of the web assembly. Managed to find another non-hd version webassembly.

Deployed another instant of Cut the Rope 1, but for mobile version. Wrote simple script if detects mobile, redirects to that mobile version instead. Finally, i can give it a rest and enjoy this game. Honestly the reason why i spent so much time on this was, way back in 5 years ago, this was my favourite game and i purchased it through Microsoft Store. Played in my old Surface Pro 6 and enjoyed it. Sadly, i think they have removed the game from the Playstore and i do not know why they did that. Anyway, now i will be enjoying this game from here instead.
5/1/2026 Added Cut The Rope 2
NEW
Added Cut the Rope 2.

This took me long time to deploy due to one reason. Combination of server's Litespeed and Cloudflare causes me headache. Whenever the server handles GZIP and BROTLI compression, Litespeed actually decompress first and modifying the host header as "Transfer-Encoding: chunked ". Manually create Cloudflare Response Header custom rule where first, remove response header "Content-Encoding" then set static host header "Content-Encoding" with value "gzip" and another one is "Content-Encoding".
5/1/2026 Updated OneXGPUPanel V1.03
UPDATE
I updated my OneXGPU Panel to support the new Intel Graphics Software and revised AMD paths, while separating Playnite into Intel and eGPU versions to avoid database conflicts. The panel now safely automates eGPU connect and disconnect by managing processes, storage, GPU state, and launcher shortcuts end to end.

Not a major update, but atleast something..
5/1/2026 Added Cut The Rope 1
NEW
Added Cut the Rope 1.

Tested working fine. However, i tried playing from mobile, stuck at 99% loading. May need to test further on mobile. For now i leave it playable on the website first.
4/1/2026 Revise the Mobile Navigation Menu
UPDATE
Rework completely to simplify the Mobile Navigation Menu. Previously, the menu is showing all items, now i simplified it to show Top Level Parent items only. I also rework on the design massively by changing the overall design from light theme to dark theme. Completely rework on the slide in and slide right animation, with slight delay for 200 miliseconds to wait scrolling top top then only expand the navigation menu. Added breadcrumbs. While breadcrumbs is not necessary, but i feel sometimes visitor might need a reference where they are right now in a website, especially for mobile users. This should helps them.

Design into 4 cards style menu, Home, Services, Applications and Blog. No more long cluttered menu item. This also help higher traffic for other pages as some users directly go to certain pages bypassing the top level pages.

Looks simple, but took me 5 hours for this redesign and rework.
4/1/2026 Added new Development Diary
NEW
Starting today, I will start to keep track on my development activities carried out for all Lemon Web services. I will start to track in 2026 onwards. This helps myself to track my own progress and also to our visitors as well.

Over the years, there are many changes that are untracked. It really ticks me few days back where i remembered, "Hey, i used to developed this previously but i have forgotten what or how i did it". I will not enter from A to Z how i did it, but some keywords that will triggers my brain to recall back how i did it rather than head scratching session for few minutes, then suddenly remembers, "ahhh i did it like this..."
3/1/2026 Removed Half Life Opposing Force & Blue Shift
REMOVED
Previously i have added Half Life Opposing Force & Blue Shift in the library. During my play test, these games are so buggy and unplayable at many levels. I have decided rather than fixing the issue one by one, let's just remove it completely from the library.

Actual game data still sits in the server, but maybe if i got time i will revisit this. Blueshift looks almost playable with minor bugs. But Opposing Force is defintely no-go. Reason being is Opposing Force uses custom DLL and the engine build does not compiled together with the additional DLL. To review the source code and compile myself, well this takes huge time to study and do and the possibility of not success is there as well. Well, let's drop it completely. Maybe.. Blueshift i might give it a go in the future.
4/1/2026 Revise LemonWeb Application & Services
UPDATE
Revise LemonWeb Application page to redesign the UI elements. Contents are more or less the same. Most of the changes are mostly cosmetic.
3/1/2026 Added Unreal Tournament 99
NEW
Using source from icculus.org web assembly and game data from internet archive, have successfully build new Unreal Tournament 99. However, original source has many issues where games are not saved, mouse cursor grab issues. All issues has been fixed and should be playable.

Spent many hours to make the game save-able, and also the annoyed mouse clipping issue. Atleast now is resolved, but if it's happen during your gameplay, just move the mouse in anti clockwise from bottom left, bottom right, top right, top left, bottom left and continue this till the game canvas restored.
2/1/2026 Added Several Emulation Games
NEW
Added the following games.
  • PSX - Qix Neo
  • PSX - Q*Bert
  • N64 - Quest64
  • PSX - Heart of Darkness
  • SNES - Terminator 2: Judgement Day
  • SNES - Pitfall: The Mayan Adventure
  • SNES - Donkey Kong Country 3: Dixie's Kong's Double Trouble
  • SNES - Donkey Kong Country 2: Diddy's Kong Quest
  • GBA - Mortal Kombat: Deadly Alliance
  • WIN98 - Yoot Tower
2/1/2026 Added Jazz Jackrabbit 2
NEW
Build and deployed Jazz Jackrabbit 2. Added official full version from Internet Archive repository. However, default game build is running shareware, therefore added script on first load, refreshes in 500miliseconds to full version as I injected it to the user's IndexedDB data.
1/1/2026 Updated Half Life 1
UPDATE
Update Half Life 1 game to be more stable by using different web assembly and rebuild new. This version has better stability as previous too many bugs. Also updated to have save game feature as it will save in browser's indexedDB state.

This version is using completely different source. Previously, i am using Xash3d latest build. It was buggy and unstable. Most obvious one was the intro section right after boarding the tram, the guard never opens the door. Then i had to write a game argument that straight away skips this section. Then next bug was unable to push the trolley thingy to the center during the initial phase. In the end, i end up creating multiple saves point so that users can skip and load the game at certain check points of the levels.

Recently, i stumbled across a different source of Half Life 1 Web Assembly, and this one works fine. Played through several levels, and seems stable. Only downside is the sound stuttering that quite annoys me to be honest, but atleast playable. I also revise the code now to save the game state in browser's cache IndexedDB. So can always continue off your gameplay.
1/1/2026 Revise Minecraft Loader
UPDATE
Small update. I find it annoying of the 5 seconds wait for the loading which is purely cosmetic or maybe other developers try to capitalize that moment to insert ads maybe. Either way, reviewed the lengthy html code and revise that section to skip that waiting.

Not a major update, but atleast 5 seconds saved...

Developed Apps So Far..

Native Desktop Applications
Web-Based Classic DOS Games
HTML5-Based Web Games
Customized Web & Applications
Self / Private Cloud Solutions
IT Helpdesk System