Revised MOSFET switch soldered, programmed, and housed.
I'm very pleased with this. I haven't used rubber grommets before (or generally bothered to house PCB). These are 1/8"ID grommets and work great for standard-size USB cables, but also holds in pairs of 22AWG cabling just fine, too. At 10A/125W through, it winds up being the 22AWG cabling that wastes the most heat (through-holes for the wiring settles at around 90C); I'll need thicker cabling if I ever want to go higher, or use the redundant through-holes and double up on cables in and out. The solder bridge between the MOSFET output and VOUT- is because the footprint I downloaded for the MOSFET was too small and I'm unable to solder both sides to pads; I knew about this last time but forgot to update my design. The MOSFET has excess solder generally (and that pad before the MOSFET input) just to help with thermals. Experimenting later with the design revealed the 2N2222 transistor was unnecessary to trigger the MOSFET gate and I can just run directly to it from an I/O pin on an ESP32C6.
Edit: for revision 3, I've removed the 3V GPIO in pins, removed the transistor and associated resistor (we just go from I/O to MOSFET gate now), beefed up copper pours a slight bit more, and added some redundancy along high-current traces. I also ordered some 20AWG cabling and grommets to support it -- in theory, if I use four wires each for VIN and VOUT, this should let me get up to 20A of current passthrough, and probably up to 25A in short bursts given I was running 10A through 22AWG.
Edit2: By the way, I don't actually need that 10uf capacitor there in the way the pictured box is configured; it's only needed when the 5VIN traces are pulling double duty in powering the ESP32 and shooting through VOUT when desired (allowing me to only need to run two USB conduits to the box). I have that version controlling a USBC humidifier, but I didn't remember to run the wires through the grommets BEFORE soldering the wires in, so it, uh... well, it uses Unconventional Design Choices which I didn't want to share a picture of.
Added "Rhythms of Tomorrow" to "Udio Normal" mp3 playlist.
Was wondering what Chinese pop (C-pop?? probably not) sounded like, so asked an AI. Pleased with it; probably would've gone with a different name, myself. I'll say, though, I wish Udio had finer controls for forbidding chorus and reverb filters on vocals; I dislike this trend in modern music.
I have tried OpenAI's Sora, by the way. I was not impressed and probably won't experiment with it more. I'm more excited by them adding folders ("Projects") for conversations in the web interface, though it's lacking features like subfolders and has weird design choices.
Things I've been working on.
I've been busy, but don't have much related to the website. I worked on a fighting TCG where everything is served by the server to experiment with not allowing the client having any data (no ability to datamine; client is purely an interface receiving assets), and then I animated one small thing and ~immediately lost all interest in continuing; I'm def not an art person. Here is the writeup outlining the initial project and here is a webp animation test, though. It's implemented enough to prove to me both the viability of the concept of "programmatic animation" via transparent webp images and js frame selection, and having a server handle all calculations in a basic singleplayer game, but I'm probably never going to bother putting it all together.
I redid the thermostat server. The old way was very clunky, where all the thermometers kept an FTP server up forever and I had the central server establish FTP connections to all of them every 2 minutes and pluck the data they were writing to .txt files. Now, instead, the thermostat is an AJAX server (I couldn't figure out the MicroPython WSS library), and we just have the thermometers try to push their data reading out each 2 or 4 minutes (the outdoor one's solar-powered, so I only have it pop on every 4m) when they quickly blip on. The server sends a response back either indicating the thermometer should go to sleep or that it should initiate "maintenance mode"; in maintenance mode, we continue blipping out the data every 2 or 4 minutes, but we start up an FTP server so I can access the scripts and such remotely. The web interface code was updated to include a tickbox to easily initiate maintenance mode on particular thermometers. The new solution has been 100% stable in the week or so it's been up, which is unusual and nice.
I redid the MOSFET switch PCB to add in a capacitor to stabilize the power for the ESP32, switch to through-hole instead of tabs for wired connections, switched to feeding power to the ESP32 via its 5V pin, added extra testpoints and I/O extras otherwise, doubled the width of the power-carrying traces, and ordered generic plastic casing + grommets to put all the wires and such in. The grommets and cases arrived today; waiting on the new PCBs which will probably take a couple weeks. I abandoned the "anti-ambiance" light for now; the ATtiny 85s I was using were too small for me to hand-solder and I wasn't able to figure out how to bitbang firmware to it via an Arduino. I spent time looking for a new MCU to replace the ATtiny in projects like these and settled on using $0.30 N76E003AT20 MCUs; fantastic price for the package... and then I found they charged $20 flat to ship, regardless of if you buy 10 or 100. I thought for a while about doing something crazy like ordering 1,000 and leasing a carousel at an indoor consignment shop to offload these kinds of chips and other circuits I & others make, and then I determined that was indeed crazy... but the math does work out (except the labor). There are no kinds of MCU hobbyist clubs around me where I could just trade components; that'd be super-neat; but I'm probably moving from here in ~4 years, and I'm not a people person anyway, so I won't be starting it. If anyone wants to do some kind of "blind" annual Christmas MCU/component exchange in the US (say ~$25-50 in components), contact me! We could also do something like a central collection if more people become interested, and then distribute things evenly out to everyone like a sampler.
That's about it as far as electronics/coding projects, and that's probably going to mostly wrap up the year for me; in that case, happy holidays, all!
When policy is dictated over social media, this has been useful for me in investing/trading. The original version had problems with image-only posts, but this should now be resolved (we now put a link to the image and note if the post is image-only). This is a more complicated version than what was originally posted, and is what I use to post to my Google Sheets document, but it should be easy enough to modify to do whatever you want with it; for reference, Truth Social runs on Mastodon 3.4.1 with few changes. No Truth Social account is required so long as Trump's account is continued to be set at not requiring authentication in Truth Social. The current version causes focus to be briefly lost when the browser launches; this hasn't annoyed me enough to look for a solution yet (passing --minimized argument doesn't fix for Chromium).
MOSFET switch PCB arrived; used to make smart humidifier prototype here.
Had to run a bodge wire from 3.3V V+ to 5V V+; the 5V rail is not used. 5V USB power comes into VIN on the PCB, but the circuit for VOUT is not complete unless the gate on the MOSFET receives power. That is controlled by a Xiao ESP32C3 MCU (I strongly endorse these and the newer ESP32C6 boards; they're ~$5/ea from Seeed Studio; has WiFi/BT [Zigbee and Matter on C6 if care] and an integrated BMS, powered over USBC; ships with Arduino but it's easy to put MicroPython on there) and a simple transistor. Since I know VIN in this case is going to be 5V (the MOSFET can handle up to 30V), the MCU is powered by the VIN pads which I have a cut USBC wire soldered in for. The MCU reads my thermostat's local-network webpage to see humidity on the ground floor. If humidity reads <50%, we flip GPIO2 and GPIO3 HIGH; GPIO2 flips the MOSFET on (and, in this setup, the humidifier, thanks to the elegant solution holding the power button down on it), while GPIO3 powers a little white LED for debug purposes. If we read 50%+, we flip GPIO2 and GPIO3 LOW, cutting power to the LED and MOSFET.
Reworked changelog.
Had to rework whole html structure of it; pulled it out of index.html and now we include it via SSI. It now uses show-hide functionality (you can click either the title text or the triangle button) instead of relying on tiny hover text. It's also now automatically gzipped when a modification is detected, to cut down on bandwidth usage. Made some other changes here and there to work with the new structure of things.
"Global News" removed; I started editorializing too much.
It was therapeutic for a while, but it's turning into a burden; and that webpage [like this changelog] needed to be completely redone. It's been a long while since I've released something 'complete' on this website, too.
Original html size 3.5MB; compressed down to 13KB; can verify in the network tab of Chrome's dev tools. Most all web servers and modern browsers fully support gzipping pages, but since most websites use dynamic pages, it often isn't employed. I'll try to remember the option whenever I get around to redoing the whole website again, but that may be 5+ years.
The switch is just to experiment with alternatives to relays. The MOSFET is rated for 100A... but with short and narrow copper pours, I'd be pretty impressed if it doesn't catch fire handling a tenth of that. The light, which is intended to counteract darkening skies so that it increasingly powers on as it becomes night, builds on that, and probably won't catch fire but I'll be impressed if it works since I've never used MOSFETs, LDRs, or ATTiny MCUs before (I plan on using an Arduino to program it via the four drills I placed for some headers). You can tell I'm less confident in the light circuit working at all because I didn't even bother with drill holes ... and it looks terrible anyway; I expect to need at least another go at it. The Tiny10 isn't the smallest thing I've soldered by iron, but I plan on cursing a lot, still.
Edit: PCBs arrived to me on November 18th, and on looking at them, I'm not sure quite what I was thinking; it's been long enough that I've forgotten my thought process, but I have two issues I see immediately: the transistor in the MOSFET switch will be looking for something greater than 5V, but GPIO will only give 3.3V, so that doesn't make sense. In the "anti-ambiance" light, I'm not sure how I thought that circuit would dim the lights -- instead, it can act as an on/off switch, or maybe be able to flicker the lights more, but I'm pretty sure there's no way for me to dim them as-is; I need independent LDRs for each LED or some kind of code-controlled resistor/converter. I'll see if I can do something with an inductor and capacitor, and try choking the LEDs with high-frequency pulses.
Edit2: Have the switch working. Not sure why I put the 5V rail on there in the first place. A bodge wire between 3.3V VCC & 5V VCC works fine for running it from an ESP32C3. I haven't tested it above 10W and am not sure I want to, though there's no noticeable heat buildup with that little power.
Paused/shelved (v.unfinished) development of Motherlode clone in HTML. See here if you must.
The o1 model did a great job inside four hours (including time to generate and toss in the debug assets) considering there are zero third-party libraries used. Systems are very broken up to keep things manageable for output token limits. If you don't see the ship and it's below the 'surface' (if the shop pops up, you've entered the 'surface'), zooming out the browser page might help. 'p' toggles pause/unpause. If your ship stopped, it's probably because you ran out of oxygen and need to restart/refresh. I think it's not currently possible to go deeper than the layer with tile/ore02 without cheating.
Political %chance of lead calculator ported to Google Sheets for easier interfacing here.
Not worth posting to Utilities page. Looking forward to this election finally being over... just one more weekend, God willing.
Stopped development on a college "net financial benefit" calculator here.
I was annoyed by cost calculators not factoring in the future value of money; college is very expensive. My intent was to bring databases over and then we can populate stuff from drop-down menus, but I didn't get that far before abandoning the project as no longer useful to me in figuring out how to try managing daughter's path. In particular, it needs work on cost of living calculations and disposable income; I think raises should also be applied on a curve over time (generally, you start your career with faster raises and promotions, and this pretty significantly slows down as you get further along). It should also have tax implications added -- and other things, contact me for a full list of complaints with my own script. This is as far as I'm willing to take it, though; the JS is not minified, so please go ahead and lift it or ideas in it if you'd like.
Removed ~30 and added ~60 images to current wallpaper set in first quality pass.
Probably done with adding images until I come up with a new way of doing things or some new prompts; getting a lot of repeated ideas at this point.
Quick Python web inventory system made & available here. (11kb; pic of it running here)
Not worth adding to Utilities section, but I've started using this internally for electronics; am ~halfway through inventorying, and it seems well-suited to my needs. Show an LLM a snippet of a JSON export and have it give you a string to import for long sets of things like the resistors I added (back up db before import in case of LLM error). Install flask via requirements or 'pip install flask' and then just run the python script. Delete components.db to have script make a fresh one. Modify as you please. I made an expansive version for Android integrating barcode scanner via BT SPP, but it's super-specific to my setup.
Added two new Udio (1.5!) tracks to mp3 jukebox ("normal").
Eternal Circuit and Notsune Montauk; I didn't prompt for Miku, but it seems to have it [her?] well-asociated with synthwave. I'm generally impressed by how well they were able to clean up the model in v1.5 vs the v1 version, removing quite a few audio artifacts. It continues to have substantial issues with lyrical coherence, which seemed to actually be worse to me than v1 while I used it this morning (first time using Udio in months, wasn't aware 1.5 released). I'm not satisfied with either the intro or outro on Notsune, but I burned through 60 or so credits on those two 30-second sections. HQ pre-rendered 1.2x-tempo versions also added.
~Doubled the number of images in the wallpaper gallery.
Played with different prompts and models. Semi-related: disabled javascript caching on the server.
2024Q3
Wallpaper gallery images swapped out for new 4k images generated; old 1080p set moved to Other Galleries page.
Getting a coherent 4k image out of SDXL proved quite challenging. I wound up generating 'forming' images and then feeding to control net. This worked poorly, and I later adapted it to essentially add hidden images instead; Two generated images semi-randomly-generated feed 'style' and 'form' in latent space to the generator for the third model, which combines them along with a prompt it selects randomly, to generate the image which is upscaled in steps to 4k to try maintaining coherence. Still has a lot of flaws, but I think the images are neat. Filesizes are ~10x what they were, and you'll probably run into substantial buffering times when loading an image now, can't just flip through them ~instantly; sorry about that! If using the wallpaper script, navigate to %temp% in file explorer and delete the Wallpaper folder to regenerate cache.
Changed how speed selector works in mp3 jukebox to use higher-quality pre-rendered versions.
Client-side time stretching introduces too many artifacts, particularly in sections with vibrato. Solution is implemented ugly, but by pre-rendering high-quality speedups, it sounds much better than browser-native time stretching (or compressing, really).
I think I've made good progress on a project to create a "librarian" AI model for emulation archive (dataset sample pic here).
I hoarded lots of romsets and emulators for obscure systems, some of which were lost to time. I'm too lazy to look into all that or manually catalog everything beyond the big picture stuff, so I figure it makes more sense to leverage AI, which incidentally gives me some good experience in LLMs, classifier models, and programmatic data extractions. There's plenty more work needed, as you can see in some of the flaws in how I'm processing the data here, and the LLM descriptions are coming from a single GPU on my workstation operating in the background, so that part still has 2-3 weeks to go until finished; it's over a million files to process. Edit (9/20/24): I think maybe I will shelve this. I have the first LoRA based on ~7.5% of the archive and that's neat [it's underfit and the dataset has problems], but I also have other AI priorities for the card.
Added quick AHK script to utilities page to insert current datetime via hotkey (incl unix timestamp).
A hotkey to toggle format mode could be added easily, but I'm already tight with hotkeys available for assignment; I already use D and T for something else, which is why I needed to use ctrl+shift+I.
Hover mouse for news plans.
I plan on the following updates: remember user news filter choices between browsing sessions (local storage, no cookies), allow users to tag stories they're interested so they can see when updates are posted (I will never push notifications out via something like email or Android/iOS), allow multiple sources to be cited and overhaul markdown parsing, move filters to their own little popout iframe and work on categorization [e.g. war, domestic politics, diseases, technology]. I probably won't bother until some time in 2025Q1. I also want to change how this changelog works...
Removed the A1111 "Autoprompter"; dynamicprompts node in ComfyUI is many times more reasonable.
Am slowly preparing for redoing wallpapers. I don't use A1111 at all anymore. ComfyUI, despite its name, was an extremely intimidating UI for me -- but it basically works like ECAD or Factorio, and once you figure out the basic building blocks, the rest comes quickly.
News aggregation service relaunched; focus on only posting news I think actually worth your time (<3 stories/day, barring apocalypse).
The Low, Medium, and High tickboxes filter news by the importance I've marked them. Generally, high importance will be reserved for things like pandemics, historic-grade new wars, etc. The primary purpose is to save you the time I waste checking many news sources every day, and pretend I'm doing something useful. Visually, the page may change over time, but the basic format and idea will be the same; I will terminate the service whenever I like. There will definitely be a bias toward covering US news. I will generally try to not post 'speculative-importance' news, but will instead try to post things which have firmly happened and are presently substantially affecting people.
Redesigned thermostat (pic here) to remove ESP32. It now looks >200% more unprofessional.
I should have given more than zero thought to where the micro-USB port would wind up when I lazily drilled holes into the PCB. Ordered a slim cable to rectify; had to partially unscrew a couple screws to get it in as-is; is under a lot of tension. I decided the fan wire was essentially pointless, so it's now disconnected along with the 24VAC common wire. Might release code some day, but I need to clean it up.... a *lot*.
Added 1 song to Udio "Chill" playlist.
Probably done with adding music from Udio for a bit. There's quite a collection there now. I have some non-Udio stuff simmering in the background, but nothing to present. Edit: snuck a 'normal' one in after, too.
Kıbrıs Bozkurtları, Grace Revealed, and David Lynch Roadtrip removed.
Added five essential goose tracks to Udio "Normal" playlist.
Decided to let AI just do what it wanted on 'Goose Rebellion'; seemed appropriate on consideration. Geese in Sync or Goose Stomp probably my favorite.
2024Q2
Great Internet Outage of 2024 resolved.
There were a couple issues at play here; I switched circuit off for 'central vacuum' we never used; nothing else was on fuse box, so seemed fine; I didn't realize there was a powered coax splitter down there attached to an outlet on same circuit as vacuum and assumed it was an ISP outage I waited to self-resolve for a couple days. A day after I had Internet service again, I realized website never came back up; this was because lease on my public IP address expired and required changes in firewall, apache2 configs, and nameserver. Should be all good, now, though.
Re-encoded mp3s to be 1/3 the size.
I'm keeping the huge files for a while in storage, but I can't notice a difference between VBR at 7 and 320kb/s constant bitrate Udio encodes mp3 files in by default; and reinstrumentations I did were also unreasonably large. Additionally made some slight accessibility, loadtime, and SEO modifications to website index page.
Was working on tetris clone; had Udio make unsuitable OST; added to mp3 jukebox ("normal").
Idea was to do something like the Art Style games, but I need a sophisticated way of transitioning which would be easier with MIDIs, but I've got MP3s instead; it's maybe still possible, but the workflow sounds time-consuming and tedious. Anyway, this is the stitched-together version of what was intended to be 9 separate tracks; I seeded new tracks with the ending of previous tracks to try ensuring coherence between them. This was fine, but the music's way too 'big' and morphs too much to be appropriate background music. Background music is *really* hard; or I'm just way too attached to abrasive sounds. I considered just leaning into this and had a couple unincluded over-the-top gameover tracks made.
Have been working on thermostat more; pic of current webpage here.
Added bandaid solution to account for relays sticking; have relay states updating on webpage over AJAX; added graph iframes to interface page; scheduled database pruning to cut and move to an archive graph page after a time; scheduled graphs to update regularly; added favicon (forgot transparency).
Removed link to legal/privacy/copyright page.
I created it while working on user/interactivity features I decided wasn't worth bothering with; just seems suspicious to have, now. A short summary: I store visitor IP addresses and a script's guess [it doesn't query any third party] as to whether or not you're a human or a bot, and that's it; I can't honor right to be forgotten because I have no way to verify who 'you' are. I disclaim any copyrights I might have on anything on this page (which notably does not include the MOD player because it mostly isn't mine). Any code or software is provided AS-IS and without guarantee.
Thermostat project coming along. Now outputting graph; see snapshot here.
I know what's causing the daily gaps... I'll fix that... someday. Edit: Fixed and added updated snapshot. Haven't had to touch anything since June 7th except to raise max setpoint a degree on June 8th.
Added "normal" Udio song to mp3 playlist celebrating USA.
Figured if I was going to poke fun at others, I should probably cover the US. Surprised their content moderation let me get away with it.
Added "normal" Udio song to mp3 playlist celebrating Belgium's culture.
Was supposed to be Flemish but came out as Weird Dutch.
Website stability issue should be resolved now.
Switched what was formerly the Solar Potato (I decided to experiment with puting web server on a solar-powered Le Potato a year or so ago) to handle thermostat duties.
Website regularly failing at ~1am Eastern. Am occupied, but will fix Soon.
I switched on the WiFi module on the Pi to handle some thermostat duties; for reasons unclear to me, the Pi daily seems to switch to using the WiFi as the default route despite scripting the one-off script which flips on the WiFi to try specitically preventing that. Have family here for Memorial Day weekend, no time to investigate and correct yet. Edit: kludged together dirty semi-fix; site will still be unreachable for up to an hour a day, but not longer. Will work on longer-term solution later this week.
Playback speed now remembered in mp3 jukebox between songs.
Will maybe look into better ways to handle up-tempo'ing later. I don't like how at least Chrome handles it by default; unpleasant artifacts. Complain about it to motivate me. Also removed the Bible Master 2 OST reinstrumentation because I didn't like how I did a particular song.
Minor fixes for Hangman game.
Added hovertext/tooltip to show hotkey to restart game when hover over 'Restart' button; game no longer accepts other keyboard input in game-over state (user previously could cause 'lose' condition by typing in game-over state after they already won), 'errors' where user types a letter they've already types now gets caught and suppressed rather than having browser console display it as if it's a bug. As an aside, I worked more on the K80 workstation; the software incompatibilities are brutal, and trying to downgrade linux kernel went... poorly; will have to install older distro version on it later; probably closer to Fall or Winter since I don't want to run it while it's hot out anyway (egregious resource waste, whereas 'waste heat' is desirable when furnace running).
Thermostat project finally bears fruit after I stopped bothering with alternating current. see prototypes here: [1] [2].
I still managed to miswire the relays; I thought I had it in normally open configuration, but actually had them in NC state; was pretty confused for a bit. The breadboard at the bottom is a remote thermometer. Both microcontrollers run an FTP server exposed to local network for now, so it's easy to modify their code and reboot them. A server pulls readings from thermometer FTP server and determines which relays should fire on the thermostat. A webpage and additional server to handle display, temperature ranges, and manual overrides is partly complete but I might redo it. The solar panels have a battery integrated in their housing, though I'm only using them because I ran out of extension cords and USB battery banks self-shutoff due to too low of power draw from the units. -and it just amuses me.
I like AI; I often don't like corporate implementation; chrome extension to redirect google "all" search to "web" here.
'All' includes AI summaries, shopping, all sorts of different extensions (including some actually-useful ones); 'web' is ALMOST purely the hyperlinks with a brief snippet from the page. Due to Google's page dynamically loading in elements and scrambling IDs, the script works in a relatively ineffiicent and brute-force way; maybe it can be improved, but I leave that work to you and disclaim all copyright to this. If unsure what to do with zip, google 'how to load unpacked chrome extension' or contact me with email address using the 'Contact' form on the left.
Scrapped "script launcher" idea; integrating scripts into GUI executable instead; first Windows-only 'alpha build' here (1.2MB).
Currently includes CompoundingCalculator (various formulas for measuring compound interest; future value, etc), FileInverter (for bypassing file restrictions in things like email; invert an already-inverted file to 'un-invert', FileSweeper (regularly monitors source directory; if specified file extensions found there, is swept into destination directory), ImageConverter (uses ImageSharp library to convert directory of images or single image to diff format with resize feature), LeadCalculator (for determinig %chance of lead with multiple polls input), VideoConverter (what it says; to mp4 or webm only for now), VideoTrimmer (trim video to specified start and end time; mp4/webm only). Video stuff requires FFMPEG installed and in PATH, and I don't currently check for it.
Amazed by GPT-4o's code ability; is able to handle huge context window (at good price). See 700-line app in progress pic here.
It has had no issues with confusion, and is so much better at handling complicated multi-instruction prompts in a single go. I keep thinking 'this is going to be thr prompt that sends it over the edge', but it never is. The app, btw, launches hidden command/powershell/python windows and acts as a convenient interface for me specifically in the bottom panel. Can right-click to kill all instances of script/process.
Had GPT-4o redo the Hangman game. Now has ASCII graphic; many more questions.
Will likely redo 'brainwiper' and 'tic-tac-toe', too, but not today.
Tested GPT-4o by having it redo mp3 player/jukebox from scratch. Am pleased.
Fixes issue with 'Shuffle All' not graphically updating category when category changes. Javascript will now attempt to auto-scroll to the correct place in the song and category lists on new song start. Youtube-like JKL keyboard hotkeying added, tho it only works while iframe is in focus. Thought about really pushing it and doing some kind of visualization, but figured it'd look way too busy. Really impressed with how much code GPT-4o was able to keep straight at once; opens the door to retrying many things GPT-4 & Turbo struggled with. Cost $1.88 in token spend, though a good bit of this was me insisting it output full files each revision so I didn't have to muck about with ensuring proper indentation.
Added "normal" Udio song to mp3 jukebox.
Also went to dentist. Dentists good. oh, and deleted some awful electronics designs from changelog; still curious what I was thinking in doing first thermostat revision. At least I should stop trying to run capacitors across only the V+ trace; who knows what I'll actually do, though.
Thermostat using USB power is designed and ordered.
No pic this time; just want to confirm the basic setup works and then I'll make something prettier. It's way less stuff to confuse me without the rectifier and step-down components; since 5V in, it's just transistors, resistors, and relays (and an LED). Impossible to mess up .... right? I didn't put a flyback diode in after talking with an AI model; I think I probably won't experience transients high enough to damage anything given I'm just passing an AC control signal that doesn't power anything, but I ordered an oscilloscope to see what happens without one.
Added "normal" Udio song to protest Turkey's exclusion from Eurovision.
(this is not serious; Turkey's 'exclusion' was brought up as a joke among friends) Udio added 'inpainting' to songs. I will probably get around to paying for their service at some point. Am ~half done with thermostat rework; things have been busy here and I can't seem to be allowed to sleep more than 4 hours at a time.
Power too unstable on the thermostat; will redesign using DC in via USB.
Code was easy, hardware was hard. Was anticipating 24V DC from the bridge rectifier, but wound up getting a bit over 32V from it; components rated for 24-25V, and my voltage divider assumed 24V. Additionally, the capacitor and inductor mix was not quite right, and when I fed the device 24V through the rectifier's DC out pins, I wound up with a kind of pulsing power where the ESP32 would blink on like a sputnik, speeding up in blinks until it stabilized a bit. I don't have an oscilloscope; I'm not sure quite what was going wrong there. Easier to just start with 5V in since that's what I was targeting anyway, and the whole thing needs to be redesigned -- not sure what I was thinking. Why are capacitors laid as if in series, what was the schottky supposed to do on the ground line, why are there no transistors for the relays, and no kickback protection?
Added "nuthouse" song (extra nutty; wasn't going to add, will probably eventually remove). Fixed missing reinstrumentations.
Probably still missing some reinstrumentations. That's fine.
After many issues, K80 server is maybe close to being fully operational. Am shelving for a bit, will return to it in a week or so.
I made what was likely a mistake of using Ubuntu 22.04, which the discontinued Nvidia drivers don't support. I think I can make it work on 22.04 (I'm using USB flash storage; install takes ~eternity), but I have the PCB for thermostat showing up in a couple days, and my day tomorrow (and in 3 days) is booked with things I've been putting off.
Added 1 Udio song to mp3 jukebox. I anticipate I'm done with this for a while.
Was fun, but I have too much stuff to do. I want to get to Suno some day. Am in process of finding compatible parts from dumpster to assemble K80 server, have verified two motherboards *won't* work, so far.
Added 2 Udio songs to mp3 jukebox; very strongly recommend listening to Secret Rooms at Ninety-Two.
Conspiracy theory topics seem to lend themselves well to AI songwriting; I don't have any particular attachment to that stuff.
Added 6 Udio songs to mp3 jukebox, removed 2. Minor changes to file structure and scripts for easier updates later.
Always fun looking at older code. Some things impressed me, some things made me scratch my head as to why I would ever design something to work that way.
Added 3 Udio songs to mp3 jukebox, removed 2 due to dissatisfaction.
Was two of my initial three uploads; my standards are rising quickly as I become more aware of what it's actually capable of. Expect more to disappear soon. Also removed some MuseNet continuations from the 1off reinstrumentation list; I had a couple incorrect filenames. I do see I'm missing some reinstrumentations from the list which were probably mislabeled as continuations; I'll find them later and fix.
Added 4 more Udio songs to mp3 jukebox; very strongly recommend listening to Sapphire Breeze.
Cosmic Legacy also very interesting; was seeded to write a song about ancient astronaut theory (GPT-4-Turbo came up with that).
Ordered a 24GB Nvidia K80 off Amazon for $60. I've been limited to models <10GB to date.
Assumed it was a scam at first before price-checking elsewhere; you can definitely get them even cheaper, but I'd have to set up accounts. They appear to be getting dumped off due to being limited to older drivers [older CUDA, in particular] and not supporting NVLink (can't daisy-chain 4 for 96GB addressable VRAM)... and maybe some issues I'm not anticipating. Considering even the old 16GB V100 goes for ~$800, it's a steal.
Removed the MuseNet songs from the MP3 jukebox; added 8 Udio tracks.
Feel free to contact me if you want old MuseNet pieces for some kind archive or historical piece, I guess. I enjoyed making them, particularly instrumenting the MIDI outputs and sometimes playing a keyboard over it, but I can't deny rendered output is the future even if it is much less human-involved. Udio is alarmingly good and even in this just-released beta stage where they're swamped with requests, it generates outputs in around realtime; like, that's it -- this is one of the key pieces which's been missing in videogames since the turn of the millenium: dynamic music. We used to have it with MIDI programming, but we couldn't effectively replicate it with the rendered files everyone wanted. Dynamic music is coming back, though, and it's going to be generated by AI.
Yes, I have tried Udio. Yes, I am very impressed with it.
At time of generation and writing, Udio is in initial beta release, and they're supposed to be adding more features for control in later updates. That said, I was generally amused by the unexpected directions it'd go in from the prompts I fed it.
No context for how big your country is at 407,284 sq km? Measure it in Belgium Land Units instead, now available for calculation on the Utilities page.
2024Q1
Adjusted top-displayed time for DST, brought minutes closer to the truth; automated DST adjustment for future.
Server stats graph will always assume no DST, just because it's not worth the hassle to fix. I don't expect DST to still be a thing by the time I die.
Deleted repo and account on GitHub. Updated VideoDesktopBackground to version 0.2; self-hosted.
Will use Gitea or GitLab later; am about to go to bed. Will also stop using Visual Studio and start figuring out Rider for future projects (and maybe also this one). Might try MonoDevelop, too; not sure. Added a hotkey + text display on what the hotkey is to the app, and a workaround to a race condition to try better-ensuring the desktop image reverts properly once the app is closed (though if you force-close the app, it will not reset your desktop wallpaper; the only solution to that would be a separate watchdog app, which I don't care enough about to implement). I stopped using GitHub on friend's suggestion + they added a 2FA requirement which gave me the excuse I wanted. Edit: updated to 0.3, nothing very relevant to users; dumped hosting responsibilities on catbox.moe (sorry!). Decided against using git manager; complications unmerited in my case.
New VideoDesktopBackground demo app in Utilities section; changes Windows desktop to a video. Will build on this later.
C#; Github-published, though I've never used it before for publishing/editing and am struggling to figure it out. There's both source to modify and build it yourself (I used VStudio2022) as well as a Windows binary to run the proof-of-concept demo (must be run online; it pulls an 11mb video file from Internet Archive). Also my first time using Visual Studio outside of for platform.io, and this is also leading to a lot of head-scratching. I'll figure it all out some day... maybe.
Bodyworks Voyager. Half of its OST is reinstrumented, in the Music window.
As with most reinstrumentations, this was done without ever playing the game or hearing the music (except an initial skim going through MID archive to find things which quickly catch my ear), just looking at the tokens and assigning samples/filters, with some editing/additions. It may sound completely different from original intent. It includes tracks 1 through 11, out of order, and excluding track 6 because I blanked on it. I have some regrets about choices made on this (uh, so like all the others), but I need to move on from this one.
New favicon.
After cycling through a large handful, I think I've settled; we maintain the lifeless blue/black steel scheme with an ugly square box background that looks bad on both light and dark themes. It's perfect.
Finally got around to scripting mirrored off-server backups.
I'll still be cloning the boot drive every few months when I remember; but even without that, I now at least have the whole website and the Apache configs now being automatically mirrored daily with a rotating archive system in place.
Utilities/Other page done for now; will move on to 'this' page now.
Moved 'webpages' over to the iframe format I started using for scripts. Wound up 'archiving' more scripts than I initially thought I would; still takes too much time to document things. Happy to document something and put it in the main page if someone cares about it, though.
NexusMods TamperMonkey scripts converted to a Chrome extension; work on building out the "Utility pages" continues.
Am also still tweaking the CSS and python script I use to build these 'quickly'. I'm already starting to dislike the solution I went with, but honestly, it's just kind of hard presenting substantial amounts of non-uniform text and images mixed together in a readable way.
Work on differently-implementing the Utilities/Other page has begun.
A python script was slapped together to build webpages from a proprietary/shorthand syntax which will be used to build out basic documentation pages; they should appear very consistent when built out. These pages are served as an iframe spawned below the 'link' text instead of relying on hovertext and long goofy code comments for documentation (this changelog you're now reading will be modified Soon, too). I will sit on this implementation for a bit, changing things here and there, until I'm sure I want to rework the rest of the script links to use this relatively involved process. I'm **very** pleased with having more iframes, though; I love these things; the idea of a website more like a desktop where things spawn in and out of existence but there is a consistent 'meta'.
Current state of things & plans (hover text).
This website's a mess! I'm learning a lot, which is great, but I'm outgrowing some choices. Plans: rework Utilities/Other page (and start giving scripts their own pages instead of relying on hover text; should also use a showhide script in changelog here instead of hover text...); rework header stats bar & all the scripts which feed it (ugh); rework Hangman game; fix issues with Sticky Boxes; add non-random TicTacToe version (original holds sentimental value; first game I had LLM create successfully); convert TamperMonkey scripts to Chrome & FF extensions (I refuse to submit to Google or Mozilla for dev account, tho); finish up with the OST I've been reinstrumenting slowly. Rest will probably stay largely the same until GPT5.
Wallpaper randomizer script returns; now consistently functional (on Win11, at least)
Is in Utilities/Other tab. Is a batch script (exe version also on page) which downloads a random wallpaper from the AI wallpaper gallery and sets as desktop wallpaper. I think it will work on Win10; odds of success decrease further back from there you try on. Earlier cache issue was fixed with just a quick glance (I was being really stubborn about how I wanted the script to operate before). You can run it as-is as you please, or use Task Scheduler to have it run on user logon or every 2 hours or whatever. It shouldn't need elevated permissions, unless you're on a managed (school or work) computer where group policy prevents required commands.
Added Automatic1111 Stable Diffuser "autoprompter" with GUI implemented in Python to Utilities/Other tab.
Right-click an argument's values field to open a file browser to point to a txt file (some example txt files generated quickly with ChatGPT included). This will allow perpetual 'mad libs' style autoprompting, where a random line from the text file is inserted. You can use this for more than basic word prompts; you can select random LORAs from a list, or try different cfg scale settings, for example. Like everything I post, it's only semi-functional; big problems are that the GUI is forever-unresponsive while running (you'll want to close the python command window or kill it via task manager); and you can't change the model in the Python GUI, instead need to change it on the Automatic1111 webpage, which you can do while the script is running (tho it may make whatever it's working on look goofy). There is a bit of documentation in the .py file itself.
Fair warning to nobody interested: I think I will delete the AI tracks from MP3 player Soon.
I might reinstrument some of them, and I do like some of the newer pieces, still, which I may keep as-is. It's very old work (some multiple years old!) and I'm embarrassed by most of them (the AI did nothing wrong). In some ways, this is very good; I can immediately notice a big difference in quality of what I did vs what I do, and this is a feeling I've had in the past before deleting many songs, so at least I know there's growth. I'm not sure exactly when I'll pull them; probably before March of this year; I'm working on another OST (which I've started procrastinating on) and then I'll probably go through the AI stuff to see what I can salvage.
Added TamperMonkey scripts to make NexusMods less annoying.
Automates many clicks required to download files without paying for a subscription. Hover over mod image and press ctrl+z to have Vortex Mod Manager start downloading it after the script goes through the required clicks. Will not handle mod collections, and will not download dependencies of mods (it'll instead get stuck on the dependencies/'requirements' page, so you can click them yourself and grab them); don't forget to also download the mod which required the dependencies! Only tested on Win11 in Chrome. Additionally requires the mod author actually have a mod manager file pointed to; will not download if there's only a 'manual' install button.
Many backend optimizations + swapped out SD card for NVMe over USB.
~8x storage size, at least 3x storage speed, 1/10 the boot time (after a lot of editing of startup routine), and relatively reliable root drive now. I also looked at the users script which I thought had some major inefficiency, but I think it's just that it's generating a big new plotly webpage every 2 minutes, which I don't want to change. I'll just write it off the bug list.
Server will be down for... some amount of time... starting at ~03:00 UTC January 4th.
I've been considering replacing the RPi 4B this server lives on, but I plan on just replacing the storage instead and letting it keep doing its thing until it stops and I *have* to switch.
Blood Seed 2. Its OST is reinstrumented, in the Music window.
As with most reinstrumentations, this was done without ever playing the game or hearing the music (except an initial skim going through MID archive to find things which quickly catch my ear), just looking at the tokens and assigning samples/filters, with some editing/additions. It may sound completely different from original intent. I skipped over a couple tracks because they had packed-in samples I can't see in my DAW. It's possible to hear them in Quicktime, but I don't want to hear them...
Added new utility script which will invert files you point it to.
What; that's not self-explanatory? It flips bits to get around file security measures; say a system you operate disallows files with .apk extensions to be transferred and your system reads the file contents to determine what is and isn't a .apk file. The file inverter will allow you to losslessly invert your file, making it essentially unreadable to a program trying to parse it to figure out what it is. You can invert an already-inverted file to use the file again. Obviously, don't use this for systems/software you don't own or don't have permission to try this on; don't violate ToS, etc.
New year, new changelog. Links to old changelogs will appear at the bottom of the current changelog and open via iframe.