Jan 8, 2024

Stars of the VTT Galaxy: #11 Cody Swendrowski

12 min read - Published: a month ago

Greetings Forge community, and welcome to the eleventh edition of our Stars of the VTT Galaxy interview series. This regular interview series is meant to shine a light on the already bright stars that make up our community of Bazaar Creators.

This month, we were fortunate enough to interview Cody Swendrowski, who worked as a software developer for Foundry VTT from 2021 to 2023, founded  the League of Extraordinary Foundry VTT Developers, and is the leader and founder of Iron Moose Development, a small software development startup.

Cody has been a mainstay in the Foundry VTT developer community for a long time. He's created and published numerous modules through the years, in addition to his work helping to maintain the League of Foundry Developer's community. He even streams his own games on occasion, running on the 13th Age RPG system.

We are proud to present our interview with Cody below.

Our sky consists of many stars. Each of them illuminating our planet. As you can guess, the stars are you. Yes, it's you, the great content creators who, in your own unique way, shine on our worlds. Thank you for being part of our heavenly sky and weaving the fabric of our Community.
Let's meet today's star.

Introduce yourself. For those who don’t know what you do, what would you describe yourself as doing for a living?

Cody: Howdy! I'm Cody Swendrowski, I've been developing software since I was 13, and people have been so kind as to actually pay for it for the last decade or so. I'm currently a developer for a finance company.

What’s one random fact about you?

Cody: One of my winter hobbies is snowboarding, and once I hiked up to the top of the continental divide in Colorado to shred those slopes.

What’s your history as a developer? How did you end up becoming one?

Cody: When I was a kid, I wanted to be a genetic scientist and make all those cool hybrid creatures you read about in Sci-Fi. I learned as a teen that my dream of rampant DNA splicing was, in pretty much any country, banned (for good reason).

I was introduced to software via Second Life's scripting language around that same time, and the ability to edit the rules of a virtual world filled the same desire to create and explore, so I picked up a book on Git, signed up to my Highschool's programming classes, and never stopped developing from there. I got an internship straight out of high school and have been working at various companies since.

How did you get started with TTRPGs? What is/are your favorite TTRPG(s)?

Cody: My first TTRPG was a short One Piece d20 game a friend ran online back in high school. From there, my group played a lot of media-based games, probably all based on the 5e ruleset in some way.

The first I ran myself was Pokemon Tabletop United, which was mechanically complicated to the point we started ignoring the rules in favor of just roleplaying, but we had fun anyway!

I got hooked on the 13th Age thanks to a Bundle of Holding deal, and that's most of what I've played since, although I keep meaning to try out Lancer some more. I was lucky enough to get involved with the 13A community and ended up getting to play with one of the writers behind the 13th Age, which was a fun experience.

And how did you end up getting into developing modules for Foundry VTT?

Cody: I tried streamlining the combat flow of the 13th Age by writing some scripts in Roll20, but that was a very frustrating experience. It was nearly Halloween and I kept seeing cool animated Halloween maps online, so I bought one but Roll20 couldn't load it, and I found where I could actually use them - Foundry VTT!

After that Halloween one-shot, I looked at the 13th Age system in Foundry VTT, contacted Asacolips who was developing it, and he kindly guided me through how to add some of the same features I struggled days with in the Roll20 version in just a few hours. I was hooked, and never moved my game back.

From there, I helped with the system a bunch, then started branching out into more general modules for Foundry VTT as a whole.

Where does the inspiration come from in the work you do? Or perhaps, your “muse”?

Cody: Usually, I encounter a problem or friction point, be it something I experience myself or something one of my friends/players experience, and end up thinking "Man, I bet I could make that better." Usually, a few days later, a module is born.

Other than that, sometimes there's just a new technology I want to explore, so I make something hopefully useful to explore it.

What achievement are you most proud of from your working time for Foundry VTT?

Cody: It's always hard to pick a favorite thing I've made or worked on, but in the core software, I have a lot of pride in how Package management works. One of my core focuses was improving things like Package relationships such as dependencies and making the experience of installing and enabling packages smooth and easy with features like automatically enabling their requirements.

That took a lot of consideration and involved working with the community to see how they worked and pave a path forward for enhanced support.

For those interested in your work, and we are sure there are many of them, can you tell us what you are doing now that you no longer work for Foundry VTT?

Cody: I am currently at RW Baird, working on automation workflows for Equity Asset Management for large value accounts. Not as fun as TTRPGs for sure, but our work supports things like school districts taking out bonds to support renovations and other financial fun like that.

How did it feel to lead Iron Moose Development?

Cody: Iron Moose Development is the LLC I use for anything where I take money outside of my day job, which means I've run a strange assortment of projects through it, including my Patreon and contract work such as developing the dScryb module for Foundry.

dScryb has continued to be the best client I've ever had. They have a cool product, they are very relaxed and open to new ideas, and I've been thrilled to watch them grow from just offering text to doing audio integrations, maps, and other exciting features. I have one member of Iron Moose who works on dScryb as their primary work, and it's been a pleasure for all involved.

0:00
/
MrRhexx Talks dScryb

The Patreon efforts have shifted over time in terms of what I was making. I used to offer modules in private closed betas via the Patreon then release them free and open source when I was done making them. This was pretty popular with people, and I got a lot of good insights into how people play their games.

No matter the project, it's been a lot of fun to use Iron Moose Development to get to work with interesting people and try our hand at breaking out of the need for a day job.

Speaking of Patreon, you started and ran your own Patreon as a creator for Foundry VTT? So, what’s it like?

Cody: I've had a lot more success with Patreon than I have with things like "Buy Me a Coffee" or GitHub sponsors. I think people really like the community aspect that Patreon brings, and the ability to bring ideas and suggestions straight to the creator.

That does add some extra weight to making things, however. You can't just make what you want and then never touch it again, you have to be responsive to others having different desires and workflows to be successful. I find it a good experience in keeping other viewpoints in mind and building better software for everyone, not just me.

That Patreon page is about combining storytelling with AI to create Intelligent NPCs, so what's the community's reaction to that? Have you encountered any problems running such a Patreon?

Cody: As a developer, I like to keep on top of exploring new cutting-edge technologies and learning their pros and cons to make better recommendations and decisions overall. Large Language Models (LLMs) are good at tasks like summarization and making things up, which makes them pretty bad for a lot of the things people are slapping "AI" onto, like Snapchat, but good for things like Roleplaying!

Intelligent NPCs started as an exploration by Roman and me into "Can we not only generate on-target roleplay text for a character but a mood along with it for more expressive interactions?". The answer turned out to be Yes, and at that point we were seeing a lot of "AI Modules" that were just textboxes tied to an almost-unedited OpenAI instance, doing no more than ChatGPT's website does but in Foundry VTT, and we wanted to prove it could be done better.

Some people didn't like what we had made because of the very valid concerns about people utilizing models that had brazenly trained themselves on others' content with no rights or permissions. We try to cut against this by doing customized models based on our own writings.

We've had a pretty good pickup in general, with dozens of Patrons running thousands of messages through the system every month.

What is the main goal of running such a Patreon?

Cody: Running it as a Patreon is how we cover the bill for running the text generation, and maybe one day it'll blow up and mean we can quit our day jobs to do it full-time.

Speaking of AI, what is your opinion about AI in general?

Cody: AI is a broad, shifting term. A few years ago "AI" usually meant natural language processing tied to long and complicated if/else statement chains. Now it means LLMs, but that'll probably shift again in a few years when the next thing comes out. LLMs are just the latest iteration in "It turns out machine learning on a giant pile of data can do some cool things".

Broadly, I generally believe technology is neutral, but how people use it can range from good to evil.

There are a lot of people who use any technology to make gobs of money at the expense of people. People who train models to rip off a specific artist's style, Facebook profiling everything you ever do to hijack your attention for profit, car companies locking down the ability to turn on your heated seats unless you pay a subscription.

But people also use these same technologies to do things for good that benefit people. 3D-printed parts that replace expensive proprietary parts, open source assistive technologies, and using LLMs to lower speech barriers improve accessibility, provide a summation of complicated info to bridge education gaps, and inspire us in our next creative endeavor. It's all in how we use it.

You created the League of Foundry VTT Developers. It is a big community. What inspired you to create it?

Cody: The original premise for the League, still pinned somewhere I think, was "Let's make sure developers aren't accidentally making the same ideas". We wanted to work together rather than be frustrated we had competing modules.

The timing was such that it accidentally became the escape hatch for all the pressure that had built up about the community. Developers only had one channel in the main Foundry Discord, back before things like Discord threads and forums existed to allow a better organization, and the League exploded in size as people flooded in and organized into various topics and interests.

How would you describe what the League of Foundry VTT Developers do, for those not in the know?

Cody: Nowadays, the League is the proud home of community developers who want to work with others and learn together.

We've had mentorship programs, built up wikis for getting started developing, and run a lot of events to keep people learning and interested in development. People who have never developed before now have jobs developing thanks to the League, and that warms my heart.

How do you envision the growth and development of the League of Foundry VTT Developers community over the next few years?

Cody: Growth was pretty steady and consistent for many years, but I think it's hit a pretty stable number at this point as some of the initial excitement fades. I don't really envision much future change in structure or activities, just maintaining the status quo.

Foundry VTT has a growing user community. How did you engage with the community to gather input and suggestions?

Cody: Foundry's community is not only large, it's international!

Each culture is unique, and things that are common phrases in one can be deeply offensive to another. Learning how to navigate that was definitely a learning experience, but one that I feel like was well worth learning.

Our primary mechanism for feedback was text, be it Discord, email, or GitHub issues.

The recommendations I would make based on what I thought worked well would be to communicate often, ask clarifying questions, get ahead of potential pushback by asking for input early on, and follow up with people after something was done to get their feedback on how the implementation turned out.

Just always be talking, overcome the inherent friction in communicating, and be kind, remember someone else is on the other side of the screen.

You have created quite a few modules. But which module are you most proud of and why?

Cody: A very hard question, but I would have to pick MMO Hud.

Not because it solves the hardest problem, not because it was the most difficult to make, not because it's the most popular, but simply because I made it as a labor of love to surprise a player who wanted to play as a character from the FF14 MMO and I'm very happy with how it turned out both visually and functionally.

MMO Hud

What did that look like in development? What kind of challenges and issues did you face in creating it?

Cody: I had a lot of reference images for what I wanted it to look like, and I did a lot of iterating on the UX of how it worked once I had it rendered, trying to add value to the spots that were currently just pretty.

I'm not normally a guy who makes pretty visual elements, so figuring out how to make the HUD really pushed me out of my comfort zone, especially when dealing with scaling it for different screen sizes!

We can't help but ask you about your obsession with fish since you have many fish modules as well as being associated with constant fish jokes. Where does that come from?🙂

Cody: There was a member of the 13th Age who made the original 1000 fish list, and I thought it was super funny so I ported it to Foundry VTT.

Table Configuration: 1000 Fish

It became very popular there as well, and so ended up being a common joke, although it's one I've put a lot of time into extending with things like Obligatory Fishing Minigame.

Obligatory Fishing Minigame

What makes a module good in your opinion, i.e. what separates a good module from a less good module?

Cody: I personally appreciate a focused module, something that does one thing and does it well. This allows users to compose just the things they want without potential conflicting overlap.

Do you have any small module you've made in particular that you’d recommend people check out?

Cody: I made the AFK module in probably an hour, all it does is add a little 💤 next to someone's name if they indicate they are AFK, but I still find it very useful, even still.

AFK

What features or what kind of improvement would you like to see further developed in Foundry VTT?

Cody: I have long been excited for Event Triggers, and I'm glad to see it won the vote for V12 and is coming! There are a lot of cool traps, puzzles, and lighting effects I'll be able to set up when that's done.

Are there any other projects or initiatives you're currently involved in or planning to work on in the TTRPGs or software development space?

Cody: I'm currently working on a sibling to Intelligent NPCs called "Intelligent GM Assistant", aiming to make it easier for GMs to set up and run their games.

The first feature of this module is the ability to ask questions about your Journal content. The main work here has been getting the bot to not invent answers and to only surface data from the Journals and summarize it, with links to its sources for easy further reading.

Intelligent GM Assistant

Do you have anything you want to say to the greater TTRPG/VTT community?

Cody: I would encourage everyone to remember that every table plays differently, and that's ok, so long as a group is having fun, then that's the right way for them to be playing.

What advice do you have for aspiring developers who are interested in contributing to the Foundry VTT or creating their own modules and tools?

Cody: Join the League, don't be afraid to ask questions, and just try things! Breaking things and putting them back together is a fast way to learn.

What are your plans for the future in general?

Cody: I've got a wedding planned for early 2025 which is obviously very exciting. I otherwise plan on keeping on with gaming with friends and making things I think are cool!

Thank you so much Cody for lending us your time! We had a really nice time chatting with you.

Cody: Thanks so much, it's been a pleasure!

Iron Moose Patreon
Cody Swendrowski GitHub
Cody's work on The Forge