--- layout: post title: "State of DTI: 2024" date: 2024-09-20 13:15:00 -0700 author: Matchu banner: url: /assets/images/banners/state-of-dti-2024.webp width: 800 height: 267 excerpt: |

After 15 years of DTI, and 15 years of changing circumstances, our primary focus is keeping DTI around for the long-haul—through stability, simplicity, and sustainability.

--- Hi, everyone! Hough, this post is a long time coming but I have not had the power of Words—but today I do, and so we write! First off, thank you for being so kind and helpful as you always are! Idk if y'all know that like, the community does the majority of the work for DTI? We're just doing our best to keep the lil guy chuggin' along underneath you! And thank you always for your kind words, too 🥺 It helps a lot. After 15 years of DTI (what the heck??!), and 15 years of changing circumstances, **our primary focus is keeping DTI around for the long-haul**. And, I'll be real with ya, the choices I made in earlier times weren't really designed for decades of operation 😅 (DTI I think is now officially older than I was when I started it? 🤐) - Back at the start, I wasn't really uhh, good at working with others? So I never put together a formal team, and I built a codebase that was difficult to share. - And when we rebooted as Impress 2020, I borrowed the technology and design intuition I'd gained in _professional_ software—not realizing that's a level of complexity designed for teams of _fifty_ to keep up with. But now, here we are, with _two_ apps instead of one, and just me as the operational bottleneck—and my _own_ life focus has shifted more toward my personal household, with not even enough volunteer time to even do the work to _hand over the keys_ 😖 So, today, DTI development is mostly a time management game. That's why I've been focusing on long-term choices I hope will change this in the years to come! The themes are **stability, simplicity, and sustainability**. _I also want to call out and thank TNT in particular for their help with sustainability!! The NeoPass partnership has been a genuine game changer—I'll talk about it more below!_ ### Stability: Changes to keep the site running At the start of the year, DTI was… uhhh, often broken 😖 We'd have multiple days of downtime, and I'll be real with ya: it was _mostly_ an awareness and time management problem. Issues generally got resolved within hours or minutes of my sitting down to _fix_ them, but… my world was large, and there were a lot of messes to clean beyond just DTI 😭 So, I didn't discover issues quickly; and when I _did_, it would sometimes take a few hours, or even days, to become available. When I was younger, it was easier to be on-call all the time… now, we have to be smarter about it. So, hey—we're being smarter! - **🔔 Alerts:** We've set up automated notifications to tell us when the site goes down, or when a new kind of crash appears. _(If you're curious, we're self-hosting [GlitchTip](https://glitchtip.com/)!)_ - **⚙️ Auto-monitoring:** For crashes that _kept_ happening, we configured our machine to intervene. _(Like, if the site's RAM usage gets high, we now auto-restart it.)_ - **🧑‍💻 Simplifying:** Reducing the complexity in our whole dang architecture has been huge for stability, too. _(We'll talk about it more below!)_ With these changes, it's been months since our last like, _major_ downtime event. We're still not as consistent as I'd like to be, but hey—more to come! ### Simplicity: Cleaning house, clearing hallways The high-level goal here is: **I want to remove Impress 2020, but only once we no longer need it**. Right now, Dress to Impress is a weird combination of apps… I copy-pasted some of Impress 2020's best UI changes over, but it all still used the Impress 2020 _server_ code, even when you're on `impress.openneo.net`. This both doubled the danger of downtime (if _either_ server goes down, that's a problem for both!), and added networking complexities that are hard to track down (hello, "error loading species/color"!) Like, it's just not a great situation for stability, _or_ for removing me as a bottleneck. There's too much happening; and too much to know that, right now, only I know! 😬 So, here's some of the changes we've been making: - **➡️ Porting features:** We finally brought Impress 2020's improved Offering/Seeking trade listings page into the main app! - **🌸 Simpler rewrites:** We reimplemented the item page preview in Rails and plain HTML/CSS/JS, instead of being a fragile, frankenstein-y React component using Impress 2020 behind the scenes. - **⚡️ Rewiring the wardrobe:** The main outfit editor still has a _couple_ API calls to Impress 2020, but very few! And we're exploring the possibility of other ways to simplify that page, too. - **🧹 Ancient code cleanups:** As I wander the halls of the very old codebase, I occasionally stumble into something unused, or confusing, or way more complicated than it needs to be. And so I clean up, so my future roommates can be comfy here! A lot of it is invisible work, toward the goal of _destroying_ things rather than building them. And that's important for us, I think: **long-term projects with small teams survive by having _less_ stuff going on.** I won't get too much into why I chose to stick with upgrading the old app (built with [Rails](https://rubyonrails.org/)), instead of keeping the new Impress 2020 app (built with [Next.js](https://nextjs.org/)). Mostly just, I think the Rails app is simpler tech overall, and leans more into standards that I expect to be longer-lived—and so I expect it to be easier to maintain and welcome new collaborators into long-term! We'll check in with y'all before retiring Impress 2020 altogether, I think there's still plenty of steps along the way! We're just doing our best, bit by bit. ### Sustainability: Finding more time, with TNT's help At the start of the year, the reality of the situation was just… I did not _have_ volunteer hours available to give to DTI. What time I _did_ have for coding was all going toward my technical consulting work, because our house needed the paycheck, y'know? But you might've noticed, our site's uptime got a lot better a few months ago—as it happens, around the same time we launched NeoPass! This was because **the NeoPass partnership _gave us the time_ to invest in other changes like alerts and monitoring,** which just weren't happening on their own. **The new "Shopping List" feature was also part of this partnership effort, too**—though we didn't end up building all of the integrated elements we were hoping for. _(We were planning an "Add all to cart" NC Mall link, as a time saver for folks, and a way to help TNT know that DTI helped you out.)_ Ah, well—that's product work! I hope it's been helpful in this form, too 💝 **Right now, we're on a bit of a pause,** as TNT's dev team focuses on the Void Within plot and the other things on their plate. But our next plan is to look into (spoiler) ~~saving DTI outfits to your Neopets directly~~ 😳❗️ This is not a promise, but it _is_ an intention! It's the main integration y'all told us you'd be excited for in that survey we sent out, thank you for that btw!! But personally, that's why I'm excited about this partnership: I think we've done a good job threading the needle on building things that are **genuinely useful for Neopians, not Worrisome, and ultimately building toward DTI's own independent goals, too.** I'm glad we're not in the same stagnant place we were earlier this year, and I hope we can keep moving forward! _(By the way, TNT and I decided not to talk too much about the details of, like, what we signed and stuff… I would normally say more, y'know? But I hope this gives you enough to understand the needs and values we're bringing to it! I promise I'm giving the community the best I know how to give, always 💜)_ ### As always, thank you! I hope this plan makes sense, as just one guy doing her best to keep the site online! And I hope this work can help set the stage for more people to join our team of maintainers in the coming years, too.