First of all, to get this started on the right note: I apologize for being out of touch. Life has been... much. I'll spare you the gruesome details in the first couple of paragraphs, but suffice to say that my road has until very recently been very rocky. Further down in this post, I'll give you a bit of a slice of life to help give some context as to what's been going on - not for sympathy, but hopefully as a way of a bit of explaination.
Second: KDYv2 is not dead. In point of fact, it's been reborn a couple of times during the development cycle - there were a number of false starts that hit technical dead ends. However, a few months ago, I pivoted hard, and frankly restarted development from the ground up, and it's going much much better this time around. Again, further down on this post, I'll get into some techincal details for those who are curious.
Third: **** the proton torpedoes, full throttle ahead - and other such clichés.
KDYv2 is still going to have all the features that I had planned out way back. I haven't dialed back the parameters from my original vision in the slightest. I am determined to do this, and do this right this time around - and in the last few months, it feels much more attainable that it ever did originally. Additionally, while wrapping away at my keyboard weaving functions and callbacks, I've been doing some testing and prodding. I'll get into that later.
The not so brief Engineering Brief
I don't know how many of you are in the realm of the technical. ****, I'm not even formally trained (Yay for being self-taught), so I may oscilate between accurate technical terms, innaccurate technical terms, lay-speak, and straight up obscure metaphors.
KDYv1 is built on a LAMP stack. It's PHP7 running on Apache, backed by a MySQL database running on a Linux (Centos specifically) server out in California. For Rendering (what actually produces the image) is a program called wkhtmltoimage, which basically starts up a browser, reads an HTML file, and takes a screenshot.
This was (and for now, I guess, still is) adequate. This isn't NORAD, I needed something that satisfied what I wanted out of it.
What I wanted grew. I didn't exactly code it with a lot of flexibility in mind. The primary content that you find on the site is only about half of what's going on. Yeah, you can make custom ships and squadrons, and damage cards, and even a miscellanious (read sloppy) card type that serves as a catchall for things I didn't think of at the beginning - but you know all those different factions you see? and defense token definitions? even the dice colors? That's all stuff that's defined on the other side of the admin wall, and I didn't exactly build it all that well (in fact, right now, the site will break if I add another defense token, which is why you haven't seen the new one from the Onager and Starhawk). For even an even bigger cringe-worthy practice: the rendering system is pretty much all hardcoded - a glorified string.replace call that slots database values in to a static html page. KDYv1 worked, but it's definetly a jury rig.
I wanted to do this the RIGHT way, in a way that would allow for me, and others, to actually extend it's capabilities rather than be confined to them. Now it was a matter of how...
I did some reading and I jumped around from something called WebComponents, an immerging web standard (still in it's infancy at that point - still kinda is) that let's users make their own HTML components. Cool!... except if ever you thought jQuery was painful, this was worse.
But I was pretty desperate at this point. If I ever wanted to touch web-dev ever again, I knew I had to get out of PHP for the front end. After months and months of struggling to get my head around it, the MERN stack finally clicked in my head - I could code and design a front end that I was happy with! So I start to lay out some pages, start coding up some endpoints on the API using my tried and true PHP skills, that even my own front-end would hook into, and... well... it was pretty painful. I realized that PHP was still holding me back, even for the back-end - so I ditched it... again.
And that's when I realized I was on the right path: I wrote my own purpose-driven restful http-server module in 3 hours. THREE HOURS. It would've taken me days to lay the ground work to do the exact same thing in PHP - and my node server was fractional-C-speed by comparison.
Hot **** - now we're cooking.
The Slice of Life / Oversharing
Content Warning: Alcoholism, Suicide Attempt & Depression (not me; non-graphic).
Let's face it - I'm a technical designer, not a content writer - my posts tend to be stream of consciousness as it is - and I would surprise myself if this one wasn't. Also, fair warning: I don't like full stops and I use commas and hyphens almost interchangeably (if you couldn't tell already).
Another quick point: I'm pretty dead-set against the stigma surrounding mental health topics. A lot of people, particularly on the internet, seem to be against the idea of sharing - gotta filter the online persona (sometimes aggressively deny it, and berate those who do while we're at it) - naw, man - you gotta let people be open and honest about life - the strength comes from the sharing.
I can't remember how long I've been working on KDYv2. It's been long enough that I MAY have moved house twice since I started on it. About three years ago, I got a phone call from my brother that my father attempted. He had just been fired for not showing up to work, and seemingly endless debt suddenly loomed up on him. I spent Christmas that year going back and forth from his house to the hospital helping him get things sorted. The four of us: my brother, my partner, my metamore, and I helped dust him off, and get him on his feet. He started the process of getting him on retirement and hung out until we collectively felt like he had enough stability that I could get back to work.
Life went on for about two years. That may I moved into my first real MY apartment (with two other people, but I was the majority rent payer and financial provider for everyone who lived with me). If any of you are in the greater New York area, you have experienced first hand just how high the cost of living here can get. I don't make six figures (and I don't know that I ever will). I spent a lot of time working to make ends meet. We stayed there for two years. I kept touch with dad every once in a while, but I had my nose to the grind wheel in a big way. I indulged in some hobbies to help keep myself from being completely burned out, but there was a lot to tank. Things were oscillating between "ugh, this in painful but doable" and "You know, I think I've really got a handle on this life stuff".
About 4 months before our second lease was up, I got a phone call from my dad. He'd taken a pretty bad fall and ended up in hospital. He was quite frail and as the circumstances started to get explored, he leveled with me in that he had been drinking - a lot. Depression and loneliness (he was living alone at this point) is a **** of a thing, and alcohol can be quite a salve. I spend a few weeks going back and forth between his house and work again while he's in detox/physical therapy. In a few days, we all reached a conclusion: it would be best for me to move back in with dad. The plan was to give him some company and support while he recovers, give him some financial assistance that his retirement can't quite cover. In the same stroke, I save approximately a thousand US per month on housing alone.
What I was not prepared for was just how curmudgeonly he is. I'll spare you a deeper voyage into my childhood traumatic backstory (what other people call childhood), but this has been a trip. In a lot of ways, I'm realizing how much I had unlearned from having moved out a decade ago - and being better for it - It's particularly highlighted because of how much I feel like I stand in deep contrast of both him, and where I was while I lived with him. I'm peeling back layers of negative behavior and toxic masculinity on his part: "Dad, that's not fair and you know it. you need to put yourself in their shoes for a minute". It's been a **** of trip over the last 5 or 6 months while I've lived here, but progress is being made in slowly getting him to emotional self-sufficiency.
For myself, I'm spending 5-to-6 hours per day commuting, but I only go into the office three times per week, and the days that I do go in I spend the train-ride tapping away at the keyboard. I got a pay bump at work - they still aren't paying me what I'm worth, and my skills are still very underutilized, but I make enough money that I don't feel like I'm comfortably hanging off a cliff anymore. To sum up, the spinning of my head is starting to slow down after the rapid-hard pivot I had to make. I'm okay, and I'm ready to get back to work.
Scouting the Outer Rim.
Tabletop Simulator and Vassal are great programs. I adore them both. I've already decided that KDYv2 will be built around an API. I've already have had multiple conversations with the developers of Tabletop Simulators and they've already started implementing features that will help Tabletop Simulator load content from KDY. I've spent some time writing a few scripts and plugins for TTS and while there are still some hang ups that have yet to be resolved by the developers, I'm confident that a fully featured integration with TTS and KDYv2 will not only be possible, but incredibly experience rich. I have fantasies of hosting a TTS tournament in stream in a virtual arena-like set. (I may have already built a Sorosuub Blimp [a play on Goodyear Blimp] as a fun tangent). Now, bear in mind that this is end-game stuff, and there are a lot of steps that need to happen first, but I've already done a lot of the research on how it should be done.
So where are we now?
Well, this may be slightly discouraging to hear, but this is a pretty new iteration of KDYv2 (one could really call it KDYv2.5) - I learned a lot from my first pass, so I am of the firm belief that this won't be anywhere approaching as painful as the last time. I've already gotten the new UI library pretty much done. I'm taking another solid pass at the database schema and then I work on the API and proper Front End in parallel.
Let's get into things that I've learned from the first pass, and what I want to do maximize the efficacy of those things learned.
I need to take more time planning. I'm good at off the cuff, and it's handy to be flexible, but I found myself refactoring classes really often. I really want to hammer out a full database schema and figure out how they should be related before I create my first table. In this way, I'm finding I'm lacking on tools. My housemates are going to love that my room will mirror a scene out of A Beautiful Mind, or any conspiracy-theorist trope, complete with red yarn connecting pieces of paper, but I need to be better about externalizing the design process.
I need to be more transparent - and this isn't even for the benefit of the community - I do better with positive encouragement, and it's taken me a long time to realize that it's okay to seek it out. To that end, I'm batting around the idea of doing weekly coding streams. I'm also going to be better about periodic updates. I need to get into the habit of posting small regular updates rather than giant brain-dumps like this. I think that'll help manage burnout and give you guys a better look into what's going on. Another idea that I'm kicking around is weekly snippets about some of the features explained out. I realized that I've never really gone into depth about what the rendering system beyond a few paragraphs here and there. The hang up is that it'll be hard to show off before building it. In order to get any kind of effective showcasing, I'd be forced to spend some time building a bare-bones prototype, and why do that when I can just build the thing. Still, if anyone has any ideas on what they'd like to see on regularly scheduled updates, I'd be happy to embrace it. One caveat though: I don't like being on camera one bit - so any videos would either have to be audio conversations, or voiceovers.
Project management. For those of you who are so inclined, have a look at a youtuber named Wintergaten. If you've ever seen the musical marble machine, that's him. Well, he's in the process of building a second, better one, and he's been at it for years. As you may have guessed, I find the parallels in his ambition and the trials he faces to be eerily similar, and thus inspirational (I highly recommend checking him out). One of the things that he did a few years ago was sit down and plan out (with the assistance of a volunteer Actual Project Manager) discrete chunks. The mantra of "Break it down into parts" is great in theory, but until you actually commit those individualized chunks into discrete structures, the "smaller chunks" that exist in your head will always coalesce into the larger whole unless you commit some serious mental bandwidth to maintaining it (and wouldn't that mental bandwidth be better served in actually working on things rather than reinforcing the walls between the preciously segmented chunks?). Right now my "project management" consists of a color-coded text file with little square bracket checkboxes indicated what is unstarted, unfinished, and finished. This text file isn't even the whole thing, it really only covers the UI library - this clearly will not scale. I don't have a solution to this one yet, but I know it's a thing that I should deal with soon, lest momentum carry me past the point where I'll spend more time trying to get myself organized than working on the actual project.
I'm building Kuat Drive Yards, and so can you!
My own sense of anxiety is yelling at me as I right this: "You're lucky you're getting community support, but really who would want to help, this is awfully presumptuous of you" - and that part of my brain may be right, but screw it - go for the gold. Suppose for a moment you want to help. That's really awesome of you, and I'd love to take you up on it, but I'm not really sure how to make the best use of any help that would be offered. I'm not management material (I loathe the idea of being asked to be a manager at my dayjob) - I have a hard enough time allocating my own resources let alone other people's. I gots no idea what I'm doing, and I'll be the very first to admit it. That said, if there is sufficient interest, I will totally sit down and figure out how folks would best be able to help - I can already tell that anyone who would be willing to donate some Project Management skills would be very welcome.
Eventually, when we get closer to the endgame, I will need to pivot to make a slew of 3D models, and while I'm an Okay-level 3D artist, that may be one of those things that may be better served by someone else.
The design of the cards on KDY have been met with mixed reviews. Some of that is because of the limitations of the rendering engine that I wrote, and some of that is because by the time I got to the renderer, I just wanted the bloody thing to work. When things get closer to the endgame, again, I'd love to see what other folks might think for a good design to serve as the system default renderer.
Anyways - getting back at it - thanks for reading all of this, and being overall just generally awesome.
Fly safely, but not too safely.