Accepting Select Projects — Let’s Build Something Rare.
Published: November 20, 2025
How often do gamers get real-life versions of assets they see in their favorite worlds? For years, I’ve wanted to build something functional that could bring me closer to the games I love.
32 APK iterations later, the N109 Zone Market Scanner has become a fully working, data-driven Android Home Screen Widget.
What started as a design challenge in Figma turned into a deep dive into Android’s Jetpack Glance library. This was definitely a head-scratcher, but one that satisfied that relentless itch I get when diving headfirst into complex systems. While this specific scanner isn’t an item that exists in-game, my love for stock trading and crime bosses with Aether Cores implanted in their right eye was enough to spark this project. (And my love for Sylus knows no bounds.)
Love and Deepspace, created by Infold, has rich, lush lore—lore I couldn’t help but bring to life. So why not build a widget that showcases not just fictional tickers, but news articles I wrote to immerse myself further into the N109 Zone?
Building widgets is fundamentally different from building an app. CSS? HTML? Gone. Here, RemoteViews is the language of the operating system—a system that is notoriously restrictive and a bit slow to update.
My biggest hurdles were:
Responsiveness: Making the widget shapeshift from small, to tall, to wide on my tablet based on resize events. At first, my code looked like the Chronorift Catastrophe.
The Charts: Since I couldn’t use standard chart libraries (like MPAndroidChart), I had to build a line chart engine from scratch.
Persistence: I use Shadow PC for my work. My 3080 Ti workhorse treats me well, but there are pitfalls—specifically, no wireless debugging or emulators to see my work in real time. I had to build the APK 32 times, upload it to Google Drive, and install it on my tablet just to see a pixel move. It was tedious, yet incredibly rewarding when it finally looked the way I envisioned it.
Android widgets don’t flow like webpages. To make the widget "responsive," I implemented a Bucket System using SizeMode.Responsive. Instead of guessing pixels, I defined four distinct size buckets:
Small (2x1): A minimal ticker row.
Tall (2x4): A detailed view with a chart.
Wide (4x1): A ticker strip
Dashboard: (4x2): The full experience with news and multiple stocks.
The breakthrough came when I realized I couldn’t just check Width. I had to check the Aspect Ratio. By calculating Height >= Width, I could distinguish between a 'Tall' widget (the chart) and a ‘Wide’ widget (the dashboard), allowing the UI to morph intelligently.
Because standard charting libraries crash inside widgets, I wrote a custom class called ChartGenerator.
This class acts like a digital artist, but without Clip Studio Paint. It takes a blank 400x200 pixel bitmap and uses Android’s Canvas and Paint APIs to manually draw the chart.
It calculates X and Y coordinates for every point.
It draws a Path connecting them.
It applies a ‘Neon Glow’ shadow layer to match the sleek aesthetic of the game.
This generated image is then passed to the widget as a simple Bitmap, bypassing all the layout restrictions.
This project wasn’t a straight line. Or a Bezier Curve. Or a Nurbs Path. It took over 30 build iterations to get this right. Widgets are tricky. They often cache old layouts or report inconsistent sizes across different devices. Clear the cache. Rebuild. Rinse and repeat.
There were moments where the dashboard would peek through the small layout, or the chart would disappear entirely. But by adding debug overlays (printing the exact DpSize on the widget face), I was able to reverse-engineer the exact breakpoints needed for a seamless experience.
A widget that feels native, looks distinct, and honors the in-game lore. If Onichynus had shares, I’d be the first at the IPO with Mephisto, Luke, and Kieran. It cycles new headlines, generates randomized stock data for ‘ONYC’, ‘EVER’, and ‘AKSO’, and even includes a custom opacity toggle for readability.
It’s more than just a fan project; it’s a testament to the power of Jetpack Glance and persistent debugging.
Tech Used:
Language: Kotlin
UI Framework: Jetpack Glance (Compose for Widgets)
Graphics: Android Canvas + Paint (Custom 2D Drawing)
Data: Android DataStore (State Persistence)
Design: Figma (UI Prototyping)