Been a while.
Went off to try and figure my shit out. Just kinda unplugged from the world and played old games, watched old shows, kinda been living in the past for the last few months trying to figure out what the hell to do. I've decided to actually set a yearly goal and not try to push too hard for once.
Of course this fractured into multiple yearly goals that make up the main goal; Start making some damn money already. Enough wandering and theorizing. Gotta finish some projects.
First up; the second oldest long running project is Mantilogs.
For mantilogs I want to add some features to ping the user via either phone or desktop notification if there is something in need of attention such as temperature drops, feeding required, supplements required, etc. I also might (if I have time) tie it into the light control platform I am making. This of course means implementing scheduling and task management tools which I will be using Celery for as I learned to get Celery working from working on the Yarrdachi project. They are all learning projects, really... even this. Though this has practical purpose.
Anyway I will need to add the dashboard view with a broad overview of all relevant data to a person in care of many pets. Whether they be breeders or snake enthusiasts who just really need to have 50 snakes and know all of their names and stuff. Doesn't really matter to me who uses it, just hope it helps improve care of animals so they can be more comfortable and helps people avoid making foolish mistakes or missing something that causes them heartbreak later. Caring for some pets properly is very involved and requires a lot of memory and scheduling when you get down to it...
So if I don't screw up, this year I should be able to deploy mantilogs very easily and allow people to contribute their data to a data set I will maintain about animal care and behavior logging. It's a long shot but I could figure out a lot and if I can't I am sure someone will be able to train some kind of algorithm with it someday. Really have to think hard about how I design the prod database.
Next is the oldest project I have been working on that has evolved and evolved until I now have to build a platform to support it – The Jake O Lantern Project has become the JOL Platform.
It started out as me trying to animate and control a jack o lantern I got at Target with a small ring of ws2812s and ws2812fx library on a spare esp8266.
Then I thought "Maybe I want presets. Maybe I want the lights to go back to their last state after a network restart. Maybe I want the lights to change presets at certain times of the day." So I did that by building a flask back-end with CRUD control on a PostgreSQL server running on a Pi4 and a really simple web interface knowing "This is not nearly done, I need to go deeper so I will leave the interface in debug mode for now"...
Well now I am going to go deeper into the lights thing.
- I want to use some RTC modules on each node to synchronize the state across all the nodes with the central control server.
- I will create a central api with a control panel that I will actually be building in Godot, a game engine. More on this next.
- A godot based simulator and control panel where you can model the exact physical locations of where you intend to put certain lights in 3D and then attach different light modules and controllers with the ability to plug in costs for parts and get an estimated total part cost as well as electricity requirements and potential issues with perhaps overloading the controller units or whatever else I can think of from past experiments.
- The ability to directly connect to a central managing API and controlling all of the lights in it from the central location, synchronized to the API.
- The lights are modeled as a state machine across all nodes synchronized by the API and each-other.
- All Light nodes will be managed from a central server and will be identified by mac address and assigned friendly names. Their IPs will be updated (as is the current code in Jake) when a mac address connects and is recognized.
- A test bench I have been working on the past couple days, getting ready to start writing the simulator once this thermal paste gets here... can be seen here
- A synchronized state animation across 3 (hopefully 4 soon) nodes. Will be able to work on this bench, once I got that working I can scale up to more and more lights and hopefully catch some bugs at higher scale.
Basically this will work like:
- Create 3D representation of area of work. This can be a fantasy scene you will 3D print and paint or a whole damn park.
- Create and place light controllers and various formations of lights, not just ws2811/12 based but as many kinds as I can as time goes on but let's start with ws28xx family lights for now, eh?
- Individually or with a brush you can paint animation frames on a per pixel or larger basis. For instance if I had a large brush and painted a red strike through a park, that would be seen through the whole park... but if I wanted to I could go in to each individual pixel and build incredibly detailed animations.
- Set zones (Groups of controller nodes) for playing built in animations or playing specific animations.
- Time out the animations with music with a key-frame system. (If you want)
- Hit Play and watch the animation get uploaded to the central control server and synchronizes out across however many nodes from 1 to 1000 and plays the animation. If it is set up with an audio system it will play the music and sync it to the animation for you if you chose to animate it to music.
- Tweak either the display or the animation in the editor and play it again. There should be verbose logging to help find where something might be getting out of sync or where a node might be under-powered or something.
- Look at a real-time display of the animations as they play in the display, making it easier to spot things going wrong or maybe where you might want to change things iteratively.
- Be able to undo all the way to the start of the project and redo all the way to the last choice.
- Run tests and make sure your displays are going to stay in sync for long periods and catch any operator or programmer errors before going live. Preferably with good feedback from the logs. Possibly write in a camera controller for the server to record whenever there is de-sync or other possible issues. These displays need to run a lot and some may run constantly, indefinitely. Judging by my testing you can run some of these lights undervolted at 3.3v and it so far has lasted around 6 years of continuous use... so I want to make sure the system is as sound as the hardware.
- Iterate.
I hope to have that shit harder than a coffin nail by the end of the year. We'll see, my hardware is held together with duct tape and dreams.
The Constantly Started, Never Finished RPG project.
I've got a lot of started RPGs. You can look at my repositories for the last few years alone and see that there's a few. I don't tend to finish them because somewhere along the way I get the feeling like "This is a huge project already, how is it worth it to anyone for me to finish this and probably fuck it up?" feeling and coward out. The fact is that an RPG is a crazy idea for a project for some jackass trying to balance a lot of project to take on. I can't resist the siren call of developing an RPG. Not with RPG maker or anything but probably with Godot since I kinda like the engine overall for being out of my damn way and letting me decide what I want to do and how.
Anyway... I want to continue with the little Isometric project I have been working on or make some kind of weird modern secret society horror action game based in some sort of city with these assets I bought from this really cool individual on itch called LimeZu who I have probably given $5 to and has given me more assets than I could have produced in the year since I bought them. Them updates came almost daily, sometimes two a day. Really awesome. Hopefully I can come across some money so I can throw a bunch their way for all their hard work for a few pennies.
With that shout-out concluded I have a current problem and that is deciding on a combat system for this game I intend to get out by the year end. I could save myself a lot of time doing an Earthbound style combat system but I am not sure, I am kinda between that and a simplified version of Diablo/Ragnarok Online combat. Once I decide on that I can decide which of the two projects I might want to do.
I like the idea of a Secret World style modern game but it will be done in 16x16 graphics rather than my usual 32x32 and up. Or my Toghairm project where I painted every single pixel by hand trying to get the feel for building rot from memory. But I could explore some cool concepts, kinda vampire the masquerade bloodlines style despite the kinda Pokemon style.
But I also have the constant pull of having to make all my graphics myself like some kinda idiot. Not to mention my penchant for isometric graphics which of course take more work than your standard top-down quarter view rpgs, but adds a lot more depth to the world.
I have a pretty good grasp of Godot and I can probably get one of these projects to some kind of completed for showing state by the end of the year. One has a lot of the graphical work already done for me, the other has a lot of graphical work for me to do and will have a smaller scope because of that.
Not to mention I gotta write and record the damn music too. That's going to be it's own weirdness. I have a little old laptop set up as a studio. It was the one I was using as a daily driver when my main laptop went bang. That thing was old, this thing is ancient. I am using it until I get thermal paste to work on the lights, music and manage my network. Ideally it would simply be a way for me to record music wherever I need to go to do it. A portable studio.
Getting off track. I need to decide on a game project between those for my long term game project. I also plan to finish Toghairm by October and that will probably take a month on it's own so I gotta fit that in there.
The If I have time Projects
I decided I would have to sacrifice some things to be able to do what I want to do this year, so I have had to put some projects on hold until I have gotten ahead on work for this year's projects or just manage to complete them all to a satisfactory degree.
Things like the Cyberdeck, mostly just me deconstructing a phone into a raspberry pi based arm mounted computer that would function as a phone or a command center in managing the servers and networks.
The As I get the parts projects
Some projects are long term and rely on my monthly purchasing decisions. I might buy a set of WS2812s one month instead of a bigger hard drive for the server, let's say.
The galleon server is an ongoing project, it's an old R710 I bought years ago and have been running as a home server. It's down a couple ram sticks and I only had 24gb in there to begin with so it needs some more RAM, it came with TINY little hard drives when I got it so over the last several months I have been buying a hard drive every month for it. So far so good. You won't believe how much you can fit into 5TB, really and I know that's a pitifully small amount of data for a server but realistically I wont be needing more than 20TB in the network at any given time, why spend more? Eventually I want to upgrade it's processors too but for now I will focus on HDDs and RAM upgrades until I get there. I also want to grab a couple backup power supplies in case they go bang.
The Scrapyard Sally computer is also an evolving project, I need to get it parts now and then so I can upgrade it from hopefully making it through a day to a solid machine that I can keep going for years with.
If I manage to get some money there is one thing I wanted to try; building a guitar with some lights in it. I think I will do the cheap way of buying a kit before I get into getting the tools to cut and shape the bits myself. I'll drill some channels for lights and hook them up to a preamp interface with the light controller enabled on it. That will look for certain frequencies coming from the pickups and which pickups and provide a light show depending on notes, chords, predefined animations, etc. (I wonder if I could make lick macros where if you play a certain lick the animation or color would change...)
There. What I have been thinking about while I went AWOL, condensed down and heavily redacted.
Wasted enough time writing this, gotta get involved with this light test bench and see if I can't get at least one more node on here with the available USB ports. I really need to get another multi-port USB charger doodad...
Cheers.