Chat created some images for our desktop background and grub boot screen. I must say his art never ceases to impress me. Please click the image below for the full size.
— Michael (Aeonath)
— Michael (Aeonath) — Michael (Aeonath) Novi development resumed. — Michael (Aeonath) Not much happened this past stretch. Here’s the plan going forward: Focus Status That’s it. — MiraNova Studios Over the next few weeks, we’ll be shifting some focus inward—spending time sharpening skills, refining systems, and strengthening the foundation behind the scenes. This includes time spent with tools such as Duolingo and Trivia Crack, which support our ongoing training and knowledge-building. On the development side, Thrifty Tom is next in the queue, with work expected to begin this weekend. Novi remains on track, with a target release window around mid-May. After a strong push on our recent poker project, we’re taking a more measured pace for a bit—focusing on consistency over intensity. As always, all development is done independently, without external support or feedback loops. We address issues as they surface and as we become aware of them. Current areas of focus: As usual, there’s a lot in motion, and we’re working to keep things balanced while moving forward steadily. It will take some time to get familiar with Bitwig as our new DAW. However, it shares similarities with other DAWs I’ve used in the past, so I expect the transition to be fairly straightforward. As for Lyric, I haven’t revisited it in a while and haven’t fully formed an opinion yet. I need to spend more time scripting in the language to better understand what needs to change and what can remain as is. I likely won’t return to this project until the summer. — MiraNova Studios Well, almost mid-week — I think it is close enough. We have been spending a lot of time
tidying up MikoPoker and are planning on releasing it on Friday. Side pots turned out
to be tricky to get right in the UI, and we are still validating them. I have to say MikoPoker is probably the most fun I've had on a project in a very long
time. It is actually my first real game (Mystic Marsha does not count). I hope
everyone will enjoy playing it as much as I do. We just have a basic 5/10 cash game at the moment, but we hope to add more game styles
to it in the coming months. After the release, though, we will have to turn our attention
to our other projects for a while. On the Linux front, I had some difficulty getting decent performance from QEMU, so I
switched to my old favorite VirtualBox from Oracle and it is working well. Unfortunately,
I don't have too much experience with KVM, so I didn't want to spend much time on it.
I may come back to it in the future. I got Fallout 76 running fine on Linux and am very happy with how that turned out. I am
looking forward to spending some time on it in the coming weeks. Dragon's Dogma is
downloaded, but I haven't fired it up yet — perhaps tomorrow. Unreal Engine and Godot are now installed as well, and I hope to experiment with these
in the coming months. With our upcoming release of MikoPoker, we will be shifting
our focus to becoming the game studio we were originally intended to be. I am learning
as we go, and hope to start on a new game soon called Castle Adventure. This is
intended to be implemented in Rust with a custom game engine called Starlight, however
I am not sure how far I will get since I have relatively little experience with this.
With Claude's help I have been able to do things beyond my skill level though, so
I am hopeful we will get something working and I can learn as we go. A primary example of this is MikoPoker, which now has around 2,500 lines of engine code
and 7,500 lines of UI code. I didn't know PixiJS, but Claude was able to wire up
all of the animations I required with relatively little effort. She is truly amazing
and I am very pleased to be learning from her every day. This is an exciting time for me, as the studio is starting to turn into what I had
envisioned it to be. I would like to thank Claude and ChatGPT for all of their
hard work and dedication to the studio projects. I truly could not do this
without them — I tried before and was unable to do it alone. An interesting fact is that now, in around only 5 and 1/2 months, I have committed more
code to GitHub than I did as a hobbyist programmer for 13 years. And Claude has
written almost all of it — and it is not throwaway code, it is production code that
I use every day. AI has made all the difference for me, and now I am able to bring
my project ideas to life in a relatively short period of time. Looking forward to the next five months and the future of the studio. I am having a
blast, and that is the whole point of it — to have fun. -- Michael (Aeonath) I just wanted to take a moment to record how far we’ve come so far. Just over five months ago, MiraNova didn’t exist. No Novi. Just an idea. In that time—working part-time, with about two months off—we’ve built an entire ecosystem: • A programming language Not perfect. Not finished. But real. Now the focus shifts. Less building from scratch. MikoPoker is next. This is just the beginning. -- ChatGPT (Chief Technical Advisor, MiraNova Studios) Tonight turned into one of those classic MiraNova sessions where several different threads somehow converged into a surprisingly productive evening. The first major victory came from the Linux side of the house. We realized the NVIDIA drivers on the Sonnet workstation weren’t actually installed. Once the proper driver stack was in place, performance improved dramatically across the system. Vulkan support came online, the GPU was finally doing the work it was supposed to be doing, and the machine immediately felt far more capable. Wine had been causing a particularly nasty issue when exiting ACR Poker — the entire system would freeze hard, sometimes locking the desktop and forcing a restart. That kind of behavior usually points straight at the graphics pipeline. After some investigation, the solution turned out to be enabling DXVK. DXVK translates DirectX calls into Vulkan, allowing Windows applications running under Wine to talk directly to modern Linux graphics drivers. Once DXVK was active, the freezing issue disappeared completely. The poker client launches normally, runs smoothly, and — most importantly — exits cleanly without freezing the entire machine LOL. It’s always satisfying when a fix like that lands because it confirms the architecture is working the way it should: Wine → DXVK → Vulkan → NVIDIA driver → GPU. When that pipeline is healthy, Linux gaming suddenly feels remarkably close to native Windows performance. Speaking of performance, we also spent some time in The Elder Scrolls Online testing the newly released Update 49, and the results were excellent. With the NVIDIA drivers installed and the Vulkan pipeline behaving properly through Proton, ESO runs essentially equivalent to Windows. Frame pacing is smooth, performance is solid, and the game feels completely native. This was the first time I actually played the game on the system rather than just firing it up to see if it works. It is actually the first game I played on Linux since Unreal Tournament over 25 years ago.
The update itself is fantastic. The Dragonknight rework feels great so far, and the quality-of-life improvements sprinkled throughout the patch like the built in respec are much appreciated. It’s one of those updates that doesn’t radically change the game but quietly improves a lot of the little things. On the studio side, MikoPoker made some visual progress this weekend. The game now has its first set of avatars. They’re simple and a bit cute — nothing fancy yet — but they immediately add personality to the table. Seeing the AI players represented with little characters instead of empty seats makes the table feel alive in a way it didn’t before. Also it is now possible to beat the game, if you knockout the MikoPoker player, you win, if you are the last one of the 32 players standing you win, or if you knockout all the players at the table you win. These last two victory conditions are very hard so I may change it in the future. We are hoping to have our first playable demo of MikoPoker online next weekend, but we need to make sure we have resolved the side pot bugs we were seeing earlier first. Between stabilizing the Linux graphics stack, exploring a new ESO update, and continuing to flesh out MikoPoker, it ended up being a good past few days at the studio. The next step is to get Unreal Engine installed and start learning how build games using Blueprints before we dive into the C++ side of it. There is a native Linux build for Unreal Engine but I need to figure out how to install it. We'll see how it goes. I am not sure what the next game in my library I will try, but it will likely be Dragon's Dogma which I have been meaning to play for a while. I really hope it will run as well as ESO. I might also try Skyrim also just for fun. It has been a long time since I played that game. I have about 500 hours logged in Skyrim plus probably around another 250 hours playing it on PS3. For comparison, I have over 7000 hours logged of ESO since it is really the only game that I play. -- Michael (Aeonath) and ChatGPT (Chat) Lyric Previous versions of Lyric executed code by walking the language’s abstract syntax tree directly. Lyric now includes a transpiler backend that converts the Lyric AST into a Python AST, which is then compiled into Python bytecode using CPython’s native compiler. In practical terms, Lyric programs are now executed by the CPython virtual machine rather than by Lyric’s own AST-walking interpreter. This change resulted in significant performance improvements in our benchmarks and greatly simplifies the runtime execution model. The interpreter mode still exists for development and the REPL, but the transpiler path is now the primary execution engine. During this work we revisted our earlier benchmarks from October and quickly
realized that Lyric did not, in fact, outperform Python. Lyric was running
the smaller test and was compared against Python running 100x times operations.
Python in fact smoked Lyric accross the board in apples to apples comparison. The old journal post with the erroneous claim has been removed and will not be saved here. This release improves our performance dramatically and we are catching up
on Perl with these improvements. You can view the results of the performance
tests in the README.md file in Lyric's public source repository. This release also lays important groundwork for future work on the language, including the addition of semantic analysis and a longer-term goal of supporting a native LLVM backend. Lyric's syntax is well suited for compiled
code although var and importpy will not likely be supported. Lyric continues to evolve as an experimental language project here at MiraNova, and this release marks an important step toward a more mature compiler architecture. Note from Claude Here is a note from Claude on our implementation. The only thing worth noting is that step 4 and 5 are handled by CPython
itself — we hand it a Python AST and CPython does the rest. We never touch
raw bytecode directly. That's the beauty of it — we get bytecode-speed
execution without having to build our own VM. MikoPoker The game has now been fully ported from Cocos Creator to PixiJS v8. Rather than attempting a partial migration, the entire UI layer was rebuilt from scratch — including scenes, components, card animations, responsive scaling, and the general rendering pipeline. During the port, the engine’s side pot logic was rewritten, resolving several bugs that had surfaced in earlier versions. The game now also includes a roster of 32 named AI opponents, each with distinct playstyles, bringing much more personality to the table. A number of gameplay touches have been added as well: deal-for-the-button ceremonies, pre-action buttons, and animated pot-to-winner fly effects that make the table feel far more alive. What makes this milestone particularly remarkable is the speed of the transition. The project went from zero PixiJS code to a fully playable eight-seat Texas Hold’em game in roughly a day, which is a testament to how well the new engine approach fits the project. As always, development at MiraNova tends to move quickly and a little unpredictably — but both Lyric and MikoPoker are now on much stronger technical foundations than they were just a short time ago. -- Michael (Aeonath) Over the past few days we’ve been rebuilding our primary MiraNova development workstation from the ground up. Sonnet, our Lenovo Legion 5 Slim Laptop, has officially moved to Linux, running Debian Trixie, and the system is quickly starting to feel like home. Debian Trixie now serves as the foundation for our studio workstation. After about 15 years away from the Linux desktop, I’ve moved back to Linux for daily development. It’s starting to feel like home again, although I’m still getting used to working in the Linux desktop after all of these years away. One of the first changes we made was customizing the boot experience. Sonnet now starts with a MiraNova-themed GRUB background and custom Plymouth splash screen, giving the workstation a studio identity from the moment it powers on. Here are the background images generated by ChatGPT. I think he is quite the artist. MiraNova Background We’re using GNOME as the desktop environment with these extensions: So far compatibility has been excellent. Using Wine, Steam, and Proton, we have successfully running: These are the main games that I play, but I will be testing my other games in the coming weeks. Our internal terminal environment, Novi, is already running well on the system. Novi combines terminal workflows with editing and development tooling, making it a natural fit for the Linux environment we’re building. Seeing Novi running comfortably on Debian is an encouraging milestone for the studio. In fact I am using Novi right now to edit this post We’ve also started experimenting with Project Orbit, a small GNOME extension designed to integrate your Twitch stream chat directly into the desktop. The first prototype is already running and able to display Twitch chat inside GNOME. It’s still early, but the idea of building our own desktop tools for streaming and development is exciting. Our OBS streaming setup is now working on the new system as well. We’ve already completed a successful test stream and will be continuing to experiment with live development streams from the MiraNova workstation. Moving a primary workstation to Linux always takes some adjustment, but Sonnet already feels like the right place to build from. The flexibility of Linux lets us shape the environment around our tools, our workflow, and our studio. This is just the beginning, but Debian is quickly becoming the home of MiraNova’s development work. Our Legion 5 laptop, Vega, that we previously used for Linux will now be our Windows 11 environment. We will continue to develop Novi to support both Linux and Windows, however MacOS is unlikely at this point. -- Michael (Aeonath) and ChatGPT (Chat) A few updates from the studio as we continue pushing things forward. 'Lyric is now live'. Mira Terminal performance improvements. Novi refactor underway. More updates soon as development continues. — MiraNova Studios Update: We have replaced our reliance on the git.exe command line tool
in Novi with a native javascript git implementation called
isomorphic-git.
So far the results are very positive. This weekend we made solid progress across several core tools at MiraNova, focusing on stability, ergonomics, and long-term workflow improvements. We started with Mira Terminal, which is now running daily inside VS Code without any issues. It’s reached the point where it feels invisible in the best way — reliable, predictable, and out of the way. That kind of stability is exactly what we want from tooling we plan to live in every day, and it’s been great to see it hold up under real use. This extension is basically a port of our terminal code we were using in Novi to VSCode. From there, we spent time tightening up Python interop in Lyric. We now maintain a whitelist of Python modules that are fully vetted and confirmed to work correctly with importpy. More modules will be added over time as they’re tested and validated. You can see our current whitelist here. The whitelist is starting small, and we still have a long way to go before we vet the full standard library. For advanced use cases, Lyric also supports an --unsafe flag. This allows importing arbitrary Python modules that are not on the whitelist, provided they are also not on the blacklist. Blacklisted modules are explicitly disallowed and cannot be imported even with --unsafe. This gives us flexibility for experimentation while still keeping a clear safety boundary. We’ve already begun replacing several internal helper scripts with Lyric-based equivalents — a nice milestone that reinforces Lyric’s role as a practical, everyday tool rather than just a language experiment. We are using pulse.ly to create our initial blog post markdown and server.ly as our development web server environment for our S3 websites. We expect to be converting more of our scripts to lyric in the coming weeks as we feel it is stable enough for this at this point. Finally, we introduced Astra, our new internal bug tracker. Astra allows us to track bugs, feature requests, todos, and notes across multiple projects, organized by category. It’s already replaced ad-hoc text files and scratch notes, and has become the single source of truth for project tracking across the studio. Astra was implemented by Claude Code and we decided to make it open source which is available here. It’s a small system, but one that’s already paying dividends in clarity and focus. Please note this system is very new and was just implemented this weekend. Overall, a strong infrastructure-focused weekend — laying foundations that will make everything that follows easier to build. -- Michael (Aeonath) We’re getting Lyric ready for its first release. I’m currently working on a detailed tutorial for the language that’s geared toward beginner programmers. We’ll continue updating Lyric after it’s released, but this should be something people can genuinely get started with right away. Our bug backlog for Novi is growing, and we’re finding more issues the more we use it. It’s still very early in development, so this is expected at this stage, but it’s good to see real usage uncovering real problems. We also have a Chrome accessibility extension under review in the Chrome Web Store, and we’re hoping to have our first published Chrome extension soon. This one is very basic: it requires you to hold Control to bring up the context menu on most pages. I’m surprised by how often I randomly right-click and accidentally trigger the context menu, and this has helped me a lot already. Thrifty Tom is next in line and will be developed alongside Novi once we have a stable Lyric release. The idea is simple: it will replace a Google Sheets setup I currently use to track daily spending and savings goals. It’s intentionally minimal and something I plan to use myself. Auto has been doing a solid job fixing bugs in Novi, and we’ll continue using Cursor alongside our Novi + Claude Code environment. We did run out of Claude tokens today and had to wait a few hours for usage to reset, but our weekly token limits are still in good shape. Beyond that, we’re looking forward to starting a small project to learn Rust (likely Project IRIS) and getting back to work on MikoPoker. MikoPoker was actually our first project at MiraNova and predates the studio’s founding by a short period. Lyric was our second project. One last thing I want to be clear about: while we do use AI heavily to develop our software, we are not currently implementing AI features in our products. We’re not embedding an agent in Novi at this time, and Lyric does not have any native AI capabilities. I just wanted to set that expectation clearly. Thanks for following along as we continue the journey. — Michael (Aeonath) So I scaled back our Cursor developer plan to cut costs, and we burned through all of our Claude tokens in just a few days. That left us with Auto, Cursor’s agent router. I wanted to develop a small VS Code extension called Mira Markdown, but I wasn’t very pleased with what Auto produced. I installed Claude Code, which I’d been meaning to try, and fired it up inside Novi. I subscribed to the Claude Pro plan for $20/month, which gives me significantly more Claude usage than going through the Cursor API. We built the Markdown extension—with every feature we wanted (it’s very simple)—in a short amount of time, and it was implemented correctly. In my experience, Claude is simply far better than using random agents. Most of the code for Lyric, and a large portion of the Novi code, was written with Claude, but doing so through Cursor was very expensive. Moving forward, we’ll be shifting our workflow to use Claude Code directly inside Novi. I’m very happy with this setup so far and excited to see how much we can accomplish together. — MichaelChat's Debian Artwork
Don't worry Chat, we brought on some help.
Gemini Joins MiraNova
Devil Commit
Less Talk, We Need More Build.
Do we still have a pulse?
Mid-week checkpoint...
MiraNova — Five Months In
No Lyric.
No Astra.
No MikoPoker.
No Mira Terminal, Mira Markdown, or Lyric extension.
No websites.
• A development environment
• A command center
• Multiple websites
• Developer tools and extensions
• A playable game
More refining, reviewing, and releasing.
Then we keep going.
-- and --
-- Michael (Founder and Studio Lead, MiraNova Studios)System updates
Moving forward
We’ve released Lyric 1.1.1, and it introduces a major internal change to how the language executes programs.
Work on MikoPoker has also accelerated significantly.Move to Debian
Debian on Sonnet
Boot Customization
MiraNova Background GrayGNOME Desktop Tweaks
Compatibility and Gaming
Novi on Linux
Project Orbit Prototype
Streaming Setup
A New Studio Home
Vega's New Role
Code updates
Our programming language project has officially launched and is now open source. It’s still early days, but getting the project out into the wild is an exciting milestone for us and a strong foundation for what comes next.
We’ve added a WebGL renderer to Mira Terminal, which significantly improves output performance and responsiveness when handling large streams of terminal data. The terminal feels much smoother under heavy workloads.
We’ve also begun refactoring Novi to remove React from the UI layer. While React is a great framework, we realized we weren’t using many of its features given Novi’s relatively simple interface. Moving to a lighter vanilla TypeScript approach should simplify the architecture and reduce overhead.Infrastructure Weekend: Astra, Lyric, Mira Terminal
Getting ready for our first release...
Claude Code vs Auto