This time I have no painting or modeling to talk about. This time I have an app (ugh, I miss calling them "programs") to talk about. Honestly I call it a webpage since there's nothing to install. And technically this is just for me as to make it publicly available likely goes against some copyright and licensing laws. But this is not about trying to hawk a new app onto the public. This is about making myself a tool to make playing a game more likely.
The only game I've played in years is the Walking Dead Miniatures Game. The real reason I play it is an excuse to setup the scenery that I enjoy putting together. With that, I also like the game - it's light, I love a good zombie theme, it's solo friendly. I've always played the same self-made-up mission where I take 1 survivor and a set number of zombies, and said survivor has to get supplies from Point X and make it to the egress point. Survivor has a minimal loadout so I won't worry about things activating the Noise rule. I'm not sure if the survivor has ever made it to the egress point (maybe once). I enjoy playing this for the story of the game, not actually trying to win.
For a while now, I've thought about apps for solo games to make setup/teardown easier. There's a DVG Apache helicopter game that I played once. 45 min for setup with sorting through lots of cardboard counters for the right ones. 30 min game play on the playmat. I lost the game, by the way. Not a surprise for my first time playing. Then another 45 min to put it all away. I'd play it more often were it not for the extra hour and a half of not playing the game involved.
There's a factor of that with the Walking Dead game. I play a minimal version because I don't dig through the right equipment cards to add to a character. I also don't know all the "real" rules, and looking those up when needed during a game slows things down. Cheat sheets, or "Game Aids" as they're called these days, help, but tracking down something the first time always seems to take forever. The third time feels that way too.
This transitions us to our new best friend over the past year, ChatGPT. Thanksgiving 2025 I started playing around with ChatGPT and making some game rules. That went into a rabbit hole, and honestly it went into rabbit holes for the better part of a year as I learned how AI and GPTs and typing prompts works. Jerry jumped onto the AI trend and soon stated making quick, throw away, stupid browser games for fun. Being fun, I jumped in too. I found I was mush better at keeping an AI chat on target with a quick browser game than making new boardgame rules, or even mods to boardgame rules. Most of the times, one of my stupid quick games started as "can CSS do...." and most of the time it could. I didn't care about the underlying code, I found myself (ugh) vibe coding and just tweaking the results.
Which brings us back to the Walking Dead game. If I had an app that could handle all the drudgery of setup and book keeping during a game, would I play more? Would I play better? What could I automate that would help me go that direction? Well that's what I set out to tell ChatGPT.
For my (failed) boardgame attempts, I had a pretty good dice rolling app. It was even geared toward the Walking Dead dice, as I like the combat system of pitting attack dice against defense dice. With a small tweak, this used the Walking Dead rules details for combat resolution. While referencing the rules for this, I learned I've been resolving combat wrong the entire time I've been playing this game. ~10 years. The rule for combat against Walkers is that they always attack, never defend. I interpreted that as Survivor attack roll vs Walker attack roll. Nope, that's not how it works. Survivors attack against a Walker that rolls nothing for defense (free attack). Then the Walker attacks (up to Survivor to decide in the beginning if they're going to defend now). That makes it a very different game to me. I've gotten so used to the Attack vs Attack roll, I kept it in as an option. With that, I can now click a button and have the dice rolled, totals added, and a summary tell me the results with what damage to apply/if there was a headshot or a survivor was bitten. Space for dice rolling and remembering how to add no longer needed!
There are other specialty dice rolls in the game. There's a black die that is really a 50/50 chance die. It's used for a handful of things. Things I normally forget. New section to the dice rolling app - black die roller and a bullet list of common reasons to roll black die along with what game phase those happen in. Another die roll space saved along with Where In The Rules Is This reference no longer needed.
I have that same issue with a white die used at the end of the turn to see if bitten survivors turn into walkers. Add white die to the app and the note of when/why! There's also a yellow panic die with a different icon per side. This is used when the character's nerve is below the panic level. I can never remember what those icons mean. How about adding the panic icons to a die in the app, and when that icon is rolled the description/effect pops up. Add it to the app!
Hmm, now that I mentioned the threat level, there's a threat tracker that would be easy to add. It's just a number from 1-18. While that's easy, how about a range color chart to match what the game references too. Add it to the app!
I'm not sure how long I spent on all of the above, but I had gotten on a roll of seeing the usefulness for this. Table space could be saved. Looking up rules that I would likely forget. Not knocking around cards, dice, trackers, and having it all lose their place. Describing what I wanted to the chat and not worrying about the code behind it all was working out so far. What else would really help me move forward on playing a more fleshed out game?
I purchased MDF player dashboards from Etsy a while back. There's a center spot for the survivor card, then spots for equipped cards and backpack cards. An automated/browser version would take up less table space. I'd need to either type in all the info and have it displayed in a way that made sense, or I could just scan in cards and drag them to the right spots on a background. I have a scanner. I have more than 1, really.
For a proof of concept, I scanned a couple of cards and asked ChatGPT if it could pull in the images, make a deck of cards, and let me drag them to spots in the browser. Sure, no problem. Awesome, I'll get to scanning cards! Soon I had a non-Etsy dashboard that I could drag character and equipment cards onto.
It would be nice if I could add in some shortcuts or tooltips for the rules on those cards. I don't know what most of them mean. At this point I learned both AI OCR and Scanner OCR did not like the background of the scanned cards and was doing such a bad job converting to text that it would be just as easy for me to enter the text as to go back and double check everything. At that point, ChatGPT made a tool for me to enter the card info into some new MySql tables. One of those tables was a rules shortcut list, so when a card listed "Bulky", I would be able to lookup and show "Requires 2 Hands".
Now that all the relevant data is in there, we can add a filter to lookup/jump to cards instead of clicking through the deck. Well that's the most handy part so far. Looking through a deck of 100+ cards when I want to add a Shotgun to my survivor can take a while. But if I can type in "shot" and go click-click, survivor has a shotgun... Well that's just pretty damn convenient.
I can take the time to pick a survivor and equip stuff as desired. What else do I need to speed things up? Saving that loadout so I don't have to re-make it when I want to play, and (of course) loading it would be good. JSON save files activated!
Once I saved and loaded a character with their loadout, I cold really see the probability of using multiple survivors in a game and being able to keep up with them. The one, simple tweak that would really help me: add the character name to the browser title. So much easier to find people that way!
During all this, it was the first time I've probably gone through and paid attention to the majority of the rules. I added another browser page for a tab of rules and actions, grouped by the turn phase they're relevant in, as a nice "I haven't played in a while" turn walkthrough-refresher. There's were misinterpretations I had on equipping items, add-ons (like weapon suppressors), and how the character-specific rules should be used.
I'm now at the point I think I've got the app I want in order to play. Each of these will be a browser tab for my next game:
1. Turn phase based rules reference. This has the "what rule is that" and action definitions that I forget after a while of not playing. It's also the rules I never learned correctly to begin with. This should get used less after I play a few times.
2. The Dice Roller actually has 3 parts:
2.1 : Dice rollers for combat, panic, infection check, and the black "chance" die (used for about 4 things, which are listed with the die roll).
2.2 : Threat Tracker - color coded 1-18 range to show the current threat.
2.3 : Event Card Deck - Scanned in cards where I can draw a card (1 per turn). Some cards will change the threat, which is tied into the Threat Tracker to automatically update.
3. Player Dashboard - Survivor with loadout, health tracking. There's also a Supply Card Deck used for searching. This deck can be exported/imported so that each survivor with a tab can keep the deck in sync as it's supposed to be a shared deck for search results. I could have tried to make this sharable between tabs, but I preferred the simplicity of each tab having a copy.
And there's my first big foray into something usable with AI. Mentally running through scenarios and using everything has been my beta testing. I'm planning on playing (a/some) games while I take my annual birthday time off in a couple of weeks. That can be a real test of how useful this is. Laptop, or tablet, space taken vs dice, tray, etsy dashboard(s), threat tracker, and rulebook stashed away.
Permalink
programming/interweb walking dead

After 3 months, I thought it time to check in on the interweb. Last time here I mentioned a 6 week bootcamp for the Salesforce Platform Developer
certification. The bootcamp ended up being trailhead lessons I'd done over the past couple of years, save for two. There was also some overview about how to program
and caveats for what happens in Salesforce. I knew most of those going into the class, too. I would have been disappointed, but the price of the class included a voucher
for taking the exam, and was reduced to the cost of the exam. In essence, free training and tips.
Post bootcamp, I took a half-day webinar on prepping for the exam. Again, I was good on most of this stuff.
In April, I purchased training materials from Focus on Force. Good content, and 15 practice exams. I was making 75-90 on practice exams. On the real exam, I would
have to make a 65 (out of 100). I felt good going into this.
My scheduled exam time came and I began my remotely proctored test. After 55 minutes of my 105 minute allotted time, I had answered everything and
gone back and reviewed those answers I was unsure about. Out of 65 questions, there were 5 that I had no idea on. The scenario based questions were
a little different from what I had studied - and there were a lot more questions about messaging services than I was expected. As I submitted the test,
I was pretty sure I'd passed - maybe something in the 70% range.
59%. 3 questions short of passing. Well. Shit.
The summary of my score tells me what percentage of each major (5) categories I got right. In essence, I really didn't know what I had gotten right and what I had gotten wrong.
After being down, a little mad, and not knowing what to do next, I realized a couple of things. This test was an exam to see what I knew, not guide
me to study what I didn't know (those category scores just weren't as helpful as I wanted). My high scores on the Focus on Force practice tests had
come from me taking those tests enough that I had basically memorized those answers and questions - in that order. It's the way my brain had gotten geared
for tests in school - these will be the questions asked, and these will be the answers.
So I went back to re-study, now that I knew what the test looked like. Better understand what solutions go with general scenarios, that was my big lacking.
I did this for 3 weeks and scheduled my 2nd attempt. To make my life easier, the half day webinar I sat in on included a discount voucher that could be applied
to follow up exam attempts (so it only cost me $30 instead of $100). Attempt #2 saw me more confident. Luckily for me, I saw questions I remembered from my first
attempt - questions I had gone back afterward and double checked what the right answer should be. I went through and once again had everything answered
after 55 minutes. This time, I went back and double checked every question regardless of my first impulse on whether or not I'd gotten it right. On the second pass
I changed some answers. Some of those I'd marked to double check, some not. When it came time to submit my answers, I was confident. Surely I'd done better than the last time.
In my gut I was sure I was in the 90% range.
73%. I passed by 4 questions. Not 90%, but I passed and can now claim Platform Developer Certifiability.
It still bothers me that I don't know specifics on what I missed. It bothers me more that there are things I was sure I was right on and that I know,
but I'm wrong. I'm most likely doing some of that wrong stuff day to day.
There are a couple more certifications I told myself would be nice. After the uphill battle of getting this one, I'm not speeding toward trying to grab
either of those. My brain has to learn that my old method of studying for tests doesn't work here. And while I know how to program and code, there are some
quirky Salesforce things that are possible that I just don't do, but need to know how to do when the day comes along that they're needed. That's the hard part
to figure out how I need to learn and retain.
With all of that work/Salesforce stuff going on, I really haven't done much else for fun. The 4Ground Mall managed to get 1 store "completed", which I need to
take some pics of. There was a little Black Friday procuring of some minis on sale. I've also been working for a homemade shelves idea to go in the mall stores - now
on version 3. With the holidays coming up I should have a normal hobby-related post before too long.
Permalink
programming/interweb salesforce work
I got a new toy. Well, for me it's a toy. Many years ago I gave up using mice and went with trackball(s). My trackball of choice was the Logitech Trackman Marble as I can use my fingers to roll the trackball instead of my thumb. I seem to have finer motor control over fingers. A Logitech trackball lasts about 3 years for me. That's when the left button decides to work intermittently. I don't think it's a problem with the components or a connection gone bad, but instead a build up of gunk from my fingers clicking the button for years. I know it sounds gross, but given the dirt I clean out of the ball holder (yes, that sounds bad too) about once per month I can only imagine what creeps into the crevices of the button.
I could try to clean it out, but given that one of those trackballs is $20 it's just easier to get a new one.
Well, the trackballs used to be $20 when I could trot down to CompUSA and pick one up. The last one I got (for work, Aug 2016) was $23.
Whenever it's time to replace a trackball I look to see if there's anything new that I want to try. Kensington has a nice selection, but the ergonomics don't work well with my hand placement. I could swear I've tried others but nothing else comes to mind just yet.
The latest flakey button induced search brought me to the ELECOM M-HT1URBK Wired Trackball Mouse. This one caught my eye because
After watching the inventory go from low to out-of-stock and back to low, I ordered one to try out. Sure, it was $60 instead of $23, but given the number of hours per day I would use the blasted thing if it was even a marginal improvement over the Logitech series I'd been using for at least a decade then it would be worth it.
After 4 days of using the one that came in, I like it enough I've ordered another one to use at work. The size is perfect for my hand. All the buttons are naturally located for where my fingers want to fall. The scrollwheel is quickly my favorite part. The buttons are a little soft when they click, but only because I've been paying attention to all the little details. When I press naturally those buttons act like they should.

Now, the funniest part to a boonie hick like me was that the package didn't have a bit of English on it. Elecom is a Japanese company, so I'm going to guess all those characters I couldn't read were Japanese.

Except "HUGE trackball". I could read that one.
Permalink
programming/interweb

Today I have been at DealNews for 1 year. I'm not sure I've ever been as happy to work some place as I have here. That's in large part due to working on government funded contracts for so long and needing a change, but it's also due to the environment at DealNews. I like it.
The balloon filled office above is mine. It wasn't like that today, that was how it looked on the afternoon of the Wednesday before Thanksgiving. Why? I wasn't there while everybody else was watching Ant-Man. Oh, there's more of a reason than that, but that was good enough for most of the people there to blow up a couple of the 280 balloons that found their way to my office. It wasn't something done out of spite or meanness, just a fun little prank.
The work is fun, but often frustrating. I'm still learning how to change my coding style to the current company style. It's not easy as I've spent a very long time doing things my way/whatever works now/just get it done. That is a very hard mindset not to revert to. Often I do things the hard way because that's the first (and often second) way of getting something done that pops into my head. But I'm learning. They haven't gotten rid of me yet, and I hope they don't. But even after a year that's still something (a fear maybe?) that motivates me to keep trying.
Now to make some progress to writing DealYear #2.
Permalink
programming/interweb random
For the past couple of weeks at work I've been writing a lot of Javascript. Traditionally Javascript and I don't get along. I'm not completely sure why, Javascript has always been a part of web development. Even in the 90's, although it was avoided because it was evil and could be coerced into doing bad things to your computer. These days, Javascript is a fundamental part of the modern online experience, responsible for the seamless back and forth of data that doesn't interrupt the web page you're looking at. It puts the "fun" in "fundamental"!
It's also responsible for a good chunk of the "mental" in "fundamental" too.
Granted, I don't know the right way to do a lot of things in Javascript, but I can generally hack away and figure them out. Gone are the days of embedding events in an object to go do special things when you click/type/look at a textbox or a button. Now the hip cool thing is to search the Document Object Model for that textbox and button, then add a listener object for when you click/type/look at it. It's of great benefit to add listeners as you can add multiple listeners to a textbox or button. And that's got to happen at least a couple of times every few years.
The above is a by-product, I think, of modern programming separating the code from the design. Adding those embedded events meant that I knew, from a code standpoint, that certain things were fairly certain to happen. With listeners, it's not imperative for those things to happen and they (I think) handle things better when stuff's missing.
But I still make code and design. I don't hand off the logic to somebody and say "go lay this out and display it properly". I'm still in 1997 when there was 1 guy that did everything for a website. Knowing what a pain it was to be that one guy, I should be better accepting of how code/design is at least trying to evolve.
But then I look at the file I worked on last week. It was an HTML table that had 3 columns on each row that you could click on and it would either toggle Yes/No text that was displayed, or edit a number that was present (without turning into a textbox). It took 2½ days for me to make, and it even has a spiffy green background that would fade in to show you had successfully edited a field thanks to a 2 minute Google search-copy-paste. The problem was that the 1 new file and 1 edited file I used was implementing the old, pseudo 1997 way of things. I had to convert it to the new, hot 2015 way.
A week later, with 7 files involved (not counting the usual included files each page on the site has) it was finally working, doing the exact same thing it had been doing a week earlier. It shouldn't have taken that long, but I was fighting with Model-View-Controller object interaction AND that damn Javascript. Javascript that I had working once but all the references changed, somehow, thanks to the MVC setup.
But I learned. I learned the hard way, the painful way, which means it should stick.
And then when I was done, I learned there was a 2nd set of things to do that nobody told me.
Now I'm not done again. I have to return to the breach of MVC and Javascript. As painful as it is, I actually enjoy it. It makes more sense as I step through and use parts. Maybe not common sense, but I can see why it works. And even though a different command may work just as well, I'll use this new stuff I'm supposed to.
One of those reasons to use MVC and our homegrown Javascript objects that just seem like a glorified wrapper popped up earlier. When I develop and test I use Chrome and I often forget to try different browsers. I'm just lazy that way. I've got a Javascript function that will loop through and show all the properties of a Javascript object. When I wanted to toggle those Yes/No fields earlier, I looked and saw an innerHTML property that had what I wanted. Great, I used that. When it came time to edit numbers, innerHTML messed me up when I went to validate that number because any extra characters (space, line break) were converted into HTML and thus made my number not a number. I looked at the properties again and found innerText that had, you guessed it, the text with no HTML. Great, I'll use that. Everything worked great.
Until I switched away from Chrome. There was no innerText. There was no innerHTML.
The cross-browser friendly field turns out to be textContent. I think there's a library call I should have been making that would have grabbed the right property for me. Maybe after 20 years of making websites I should know textContent is the right property to use. But I didn't. Until now.
textContent. That's the ticket.
As always, correct spelling is optional in any blog entry. Keep in mind that any links more than a year old may not be active, especially the ones pointing back to Russellmania (I like to move things around!).
Tags have been added to posts back to 2005. There may be an occasional old blog that gets added to the tag list, but in reality what could be noteworthy from that far back?
3D Printer (29)
4ground (32)
4ground-mall (40)
5PFH (1)
action figures/toys (10)
airbrush (7)
Aliens (1)
Amazon (12)
antenocitisworkshop (11)
Atlas O Gauge (2)
Batman Miniature Game (2)
Battletech (1)
belt sander (12)
Blood Bowl (4)
boardgames (79)
books/comics (19)
computers hate me (5)
conveyances (15)
Cyberpunk Red Zone (4)
diet (53)
dreams (7)
fallout (1)
feng shui (1)
Firefight (1)
Foundry (3)
Gale Force Nine (1)
game dev (23)
gaming miniatures (240)
gaslands (10)
gastric sleeve (34)
Green Stuff World (2)
Hasslefree (9)
Hero Forge (1)
HeroQuest (4)
hobbies (102)
Jailbirds Minis (2)
kevin smith (1)
Knight Models (2)
malifaux (3)
Marvel Crisis Protocol (2)
mckays (1)
models (12)
mom (32)
moon light (5)
Moonbus (1)
movies/tv/dvd (60)
Necromunda (4)
ninja division (1)
Pathfinder Deepcuts (1)
pilonidal cyst (5)
plastcraft (2)
programming/interweb (42)
rambling (61)
random (367)
random maintenance (3)
Reaper Bones (3)
reaper chronoscape (32)
renovation/remodelling (25)
road trip (27)
salesforce (1)
sarissa precission (2)
scenery (19)
Star Trek (2)
Star Trek Away Missions (3)
Star Wars Legion (1)
studio miniatures (3)
ttcombat (12)
video games (51)
vs Factions(PDFs) (1)
walking dead (37)
wargame foundry (3)
work (6)
wrestling (45)
zombicide (2)
Zombicide Invader (19)
zombie mall (23)