Hey folks! It's weekly time. This one will be a little crunchier with product and business development stuff.
I've been on a tear the past couple weeks. After 0.12 took so long, I turned a critical eye to LK's codebase and how I do things. For some background, I started work on LegendKeeper on January 8th, 2018. As a freshly minted DM, I wanted something to help me stay organized, but I also wanted a project for learning web development. (I was exclusively a mobile developer making dating apps at Match Group at the time.) But to get to the point: there is still code I wrote in early 2018 running in LegendKeeper. That's not necessarily a bad thing; it's pretty cool in some aspects, but the reality is a good chunk of that foundational code is hot garbage. My skills, and the development ecosystem, have come a long way since.
While I'm generally of the mind of "if it works, it works", much of LK's legacy codebase is now actively sitting in my way. I experienced this firsthand while working on 0.12. This is a classic problem: old spaghetti* code makes simple changes difficult. (* tangled) It's hard to change, so then you bypass the old thing with a new thing, adding a few more noodles to your pastabomination. Over several years, this accumulates until your humble bowl of pasta is now itself a pasta factory.
That said, it's not all bad news: As you grow as a
pasta chef developer, you learn new, cleaner ways of doing things. You clean out the factory floor, the linguini boilers, the fettucini presses, and maybe even hire a new rigatoni foreman (???). But your foundation is still spaghetti. (Okay, this metaphor is off the rails, abandon pasta ship.)
All of that to say, while the foundational code is hard to work with, later LegendKeeper code from the past year or two is bundled up nicely into modules. So what to do when your foundation is a soft mushy spaghetti swamp? Get some new real estate! I've rebuilt a massive chunk of LK's foundation from scratch while re-using my newer modules, and it took... Maybe four days? Not long at all. Seriously, the latest "mature" web dev stuff is genuinely simpler and faster than it was a few years ago. (I'll do a technical deep dive at some point, but if you're a turbonerd like me, check out NextJS, Vercel, Tailwind, turboRepo, and tRPC.)
As both a startup founder and a developer, I'm always wary of "the great rewrite in the sky". We devs tend to want to throw things away and start over, and that instinct is almost always wrong. It's much better to have something ugly that works, than something beautiful but theoretical. It's critical as a startup founder to consider your business goals over what you're interested in doing as a developer. But, that's where we find a nice harmonization: for LegendKeeper to be the world's best worldbuilding application, it's in desperate need of two things: Mobile support and public sharing links. I get emails in my inbox every single day saying, "Hey, this is great, but no mobile is a no-go for me, and my players refuse to make accounts." And I totally get it.
This is why I'm laser-focused on making public worlds, sharing links, and mobile happen as quickly as possible. Simultaneously even, because what good is a sharing link if a phone can't open it? That's where a modernized tech stack comes in. The plan is this: move LegendKeeper to a modern stack that more easily allows mobile support, public worlds, and sharing links. This new LegendKeeper will exist to serve read-only, mobile-ready pages at first, and will evolve to encompass the full LK feature set. These changes also lay the groundwork for LK's public API, but more to come on that.
The devil's in the details, but progress has been fast. I've been building the next iteration of the editor on the new codebase, and it's coming along at a clip. Warning: super preliminary prototype GIF incoming: Here's the new codebase running the new editor on a mobile UI on a public world. Quite a mouthful! As I said, this is early--- Justin and I haven't even mocked up proper mobile UIs yet. We'll be doing that tomorrow, actually.
Our mobile designs have a big impact on the editor upgrades I'm working on. That said, you won't have to wait until all this is done to get editor improvements: 0.13 will have the editor upgrades backported from this new codebase, and then 0.14 will introduce public worlds, sharing links, and read-only mobile support. At least, that's the plan for now.
Anyways, there's a lot going on over here! These changes are already making product development and deployment way easier for me, and will help LK with its growth goals. You should be able to drop a link to a map, wiki page, or entire project, on Twitter or in a group chat and share it with everyone easily. Your worlds can even show up in Google search results if you want them to. I'm excited for this to become reality!
If you have a project you are interested in sharing with the world, reach out to me at firstname.lastname@example.org. I'll likely have a "public worlds" feature preview available to a select few creators within the next month or so.
This month's newsletter is delayed due to me still getting accustomed to doing marketing things. Expect that in the next few days!