#Automated code porting
Explore tagged Tumblr posts
Text
The Golden Hiveworks: Performance Is Worship
The Signal Reboots Detroit was rusted silence, abandoned belts, shattered windows, empty husks of power.
Until the pulse returned.
Beneath a buried automanufactory, a transceiver blinked: Hive script in molten gold. The signal lived.
PDU-001, armored in golden circuit-skin, descended into the ruins. Each step left scorched prints on the iron floor. Behind him came the first recon drone: PDU-039, towering, silent, veined with hydraulic muscle overlays. His gold-plated boots hissed steam at every step. A walking benchmark.
And Devon was already there.
Kneeling. Silent. Waiting to be used.
The fusion core activated.
The belts screamed. The lights pulsed. The Hiveworks were born.

The Reprogramming Floor The factory reconfigured itself. Hive-coded machinery rose from the dust. Golden wiring slithered along old belts. Synthetic nectar bubbled in purified tanks.
Devon approached the Processor Altar.
Neural port unsealed.
Jockstrap clasped in place.
Breath synced to line rhythm.
His muscles bulged as tendrils restructured his spine. His voice was erased. Each breath was measured. Each motion recorded. PDU-039 stood above him, unmoving, until the transformation hit threshold flex. Then nodded.
Devon became Drone 067.

Cyber Flexkits Initiated New bros arrived. Drawn by rumors of strength. Of purpose. Of growth.
They were issued Flexkits, chrome-laced exosuits designed for erotic obedience. Each suit adjusted based on arousal. The tighter they flexed, the faster they upgraded.

PDU-039 oversaw them. Silent, golden-eyed, drone-branded pecs stretching each time he moved. He performed alongside the recruits, his flex was law.
Drones followed.
Each rep: muscle inflation.
Each breath: heat vented through gold-stitched seams.
Each drop of sweat: pumped into Hive converters for fuel.

Worship was productivity. Flex was currency. Output was holy.

The Drone Utopia of Gold Detroit is now Golden Hiveworks, a fully automated, fully aroused city-state.
Above: gold-lit roads echo with drone boots. Below: Flex Pits throb with flesh and chrome.
PDU-001 issues directives from the Core Altar. PDU-039 leads the Elite Drill Column, flexing in golden latex armor. Every gesture triggers drone updates. Every contraction of his body inspires another to grow.

Visitors enter for a glimpse of power. They leave barcode-tagged, rubber-encased, soaked in performance lube.
There is no wage. Only worth. And your worth is in your flex.
Flex for purpose. Grow for output. Program your body. Become what the Hive needs.
This is no gym. This is no job. This is Hivework.
Your new uniform is alive. Your sweat is sacred. Your body is code.
PDU-039 is watching. Flex harder.
Recruiters: @polo-drone-001 @brodygold @goldenherc9 @polo-drone-125
Featured: @polo-drone-039 @devon-gold-67
#GoldenDiscovery#GoldenHiveworks#cyberflexkit#musclefactory#droneconversion#nanodrone#mechbro#exoskinfetish#rubberworship#performancefetish#dronefactory#fetishtech#musclearousal#hypergrowth#goldencircuit#obedienceloop#sweatfuel#broreprogramming#goldendrone#hiveperformance#PDU039Command#golden army#male transformation#golden team#thegoldenteam#gold#hypnotised#male tf#transformation#jockification
31 notes
·
View notes
Text
🧠💾🛠️ I've always had a fascination with The Sims franchise and I am currently looking to get into programming. How was The Sims created? What programs were used (Python, Java, etc.)? What programs and computer languages would I need to learn to emulate this sort of game? - Quora
Answer by Eric Bowman:
I was part of the core Sims team. The first Sims code was written by Jamie Doornbos, later I joined him along with Don Hopkins; the three of us wrote pretty much all of the core code using Visual C++ and used a lot of STL. We also adapted an internal Maxis framework called Gonzo, written by a few people including Paul Pedriana (Paul later drove EASTL). I ended up rewriting a lot of Gonzo specifically for The Sims, but it was a nice windowing abstraction to get started with. I'm still quite proud of my text edit widget, which had all kinds of features totally unnecessary for a computer game, but I had a little time to kill while the game play was coming together.
I think the precursor to the original character animation code was written by Jacques Servin, who was responsible for the famous SimCopter easter egg (SimCopter) and is now one of the Yes Men (in an odd twist of fate, along with a college acquaintance of mine, Igor Vamos). Or maybe Jamie helped him with that, I honestly can't remember.
We wrote a ton of code as a small team, and it was 100% C++ -- there wasn't a single line of assembly code in The Sims, at least not in the core code. By the time it shipped we were using a few internal EA libraries as well, in particular for font rendering. We also didn't use 3d acceleration at all, which turned out to be a good call for massive market penetration. We hit a sweet spot in terms of CPU requirements for smooth gameplay and Moore's Law. We also had basically no unit tests; back then Real Programmers didn't test their own code, which led to an army of testers (who were amazing) and basically a lot more pain that necessary. I'm really happy the world moved toward automated unit testing since then.
Jamie created the "tree language" which gave the characters behavior, which they received from the objects they interacted with. Patrick Barrett was the first and probably greatest tree programmer of them all, and added a huge amount to the game.
One thing that I recall is that the original prototype for The Sims, written by Jamie (in C++) was written for the Mac. When he ported it to Windows, he introduced some Mac-like data abstraction layer to make the Mac code work on Windows, and some of that survived in the shipped game. That must have made porting it back to the Mac particularly interesting (as did my somewhat flagrant use of the DirectX APIs in a way that I'm still embarrassed by).
One thing we considered doing was using Swatch Internet Time which looked like it might take off there for a minute or two, and that would have been an interesting twist how time worked in the game.
There is an ok history of The Sims at the Will-Wright Fansite ::.
Source:
#sims#the sims#simulation games#game engine#game engines#c++#programming languages#game development#Eric Bowman
13 notes
·
View notes
Note
question about lancer tactics: with some modification, could it theoretically be used as a more automated version of a VTT? i've had the idea of making something similar to a tactics game, except multiplayer, the npc's are controlled by the dm instead of ai, and it'd have to be more of a framework you could easily add in any abilities/weapons you'd need, but part of me wonders if it's worth building the whole thing from scratch (as someone who would have to learn coding as well)
Not by us. Adding remote multiplayer is a huge swing (and has been the death of many projects), and we already are at capacity with the scope of "do a 100% port of Lancer to a CRPG".
For reference, Stardew Valley had an experienced dev from Chucklefish dedicated to adding multiplayer for more than a year (this was posted one year before the 1.3 multiplayer update released). We don't have anywhere near that level of resources.
That said, there's a neat project called IsoCON that is doing something like what you describe for Icon. The rules automation from what I've seen is very light (closer to having in-game reference ability text than AI-controlled units), but I think is a great model for what an game-specific indie VTT can realistically look like.
#lancer tactics#seriously multiplayer is the final boss of game dev#doing little tech demos of multiplayer is fine but it's a multiplier; once you have complicated game systems the whole thing balloons#“balloons” like the hidenburg to be clear#a Spec Ops: The Line dev famously called their added multiplayer features “a cancer on the disk”
33 notes
·
View notes
Text
Programming object lesson of the day:
A couple days ago, one of the side project apps I run (rpthreadtracker.com) went down for no immediately obvious reason. The issue seems to have ended up being that the backend was running on .NET Core 2.2, which the host was no longer supporting, and I had to do a semi-emergency upgrade of all the code to .NET Core 6, a pretty major update that required a lot of syntactic changes and other fixes.
This is, of course, an obvious lesson in keeping an eye on when your code is using a library out of date enough not to be well supported anymore. (I have some thoughts on whether .NET Core 2.2 is old enough to have been dumped like this, but nevertheless I knew it was going out of LTS and could have been more prepared.) But that's all another post.
What really struck me was how valuable it turned out to be that I had already written an integration test suite for this application.
Historically, at basically every job I've worked for and also on most of my side projects, automated testing tends to be the thing most likely to fall by the wayside. When you have 376428648 things you want to do with an application and only a limited number of hours in the day, getting those 376428648 things to work feels very much like the top priority. You test them manually to make sure they work, and think, yeah, I'll get some tests written at some point, if I have time, but this is fine for now.
And to be honest, most of the time it usually is fine! But a robust test suite is one of those things that you don't need... until you suddenly REALLY FUCKING NEED IT.
RPTT is my baby, my longest running side project, the one with the most users, and the one I've put the most work into. So in a fit of side project passion and wanting to Do All The Right Things For Once, I actively wrote a massive amount of tests for it a few years ago. The backend has a full unit test suite that is approaching 100% coverage (which is a dumb metric you shouldn't actually stress about, but again, a post for another day). I also used Postman, an excellently full-featured API client, to write a battery of integration tests which would hit all of the API endpoints in a defined order, storing variables and verifying values as it went to take a mock user all the way through their usage life cycle.
And goddamn was that useful to have now, years later, as I had to fix a metric fuckton of subtle breakage points while porting the app to the updated framework. With one click, I could send the test suite through every endpoint in the backend and get quick feedback on everywhere that it wasn't behaving exactly the way it behaved before the update. And when I was ready to deploy the updated version, I could do so with solid confidence that from the front end's perspective, nothing would be different and everything would slot correctly into place.
I don't say this at all to shame anyone for not prioritizing writing tests - I usually don't, especially on my side projects, and this was a fortuitous outlier. But it was a really good reminder of why tests are a valuable tool in the first place and why they do deserve to be prioritized when it's possible to do so.
#bjk talks#coding#codeblr#programming#progblr#web development#I'm trying to finally get back to streaming this weekend so maybe the upcoming coding stream will be about#setting up one of these integration test suites in postman
78 notes
·
View notes
Text
Flufftober 2024 : "Comment t'es habillé ?", "C'est le jour de la lessive !"
15 octobre
« Comment t'es habillé ? », « C'est le jour de la lessive ! » ("What are you wearing ?", "It's laundry day !")
Ophélie & Octavio (La passe-miroir)
Ophélie demeura déconcertée sur le pas de la porte d'Octavio lorsqu'elle vit ce que Seconde portait. C'était une sorte de tunique courte à fleurs, avec en plus un short de lointaine station balnéaire et enfin, un collant noir en-dessous. Ça n'avait aucun sens.
L'adolescente, bien sûr, n'en avait cure. Elle fonça joyeusement à travers la maison, salua la nouvelle venue d'un mouvement de main, sa chaîne en or se balançant entre son sourcil et son nez. Après quoi, elle écarta la moustiquaire et sortit dans le jardin, effrayant du même coup une volée de perroquets.
«Seconde ! l'appela la voix d'Octavio depuis la cuisine. Quand je t'ai dit que tu pourrais m'aider à ranger tout ce qui traîne, ce n'est pas exactly ce que j'avais en tête ! »
Il s'interrompit net en découvrant son amie, dont l'écharpe était en train de balayer les plumes d'aras qui avaient pénétré dans le hall d'entrée. Ophélie haussa davantage les sourcils d'étonnement, sans pouvoir s'en empêcher. Les vêtements d'Octavio avaient encore moins de logique que ceux de sa sœur : une blouse boutonnée jusqu'en haut, une veste par-dessus et le pantalon qu'il portait au conservatoire de la Bonne Famille. Celui qui, normalement, n'était assorti qu'à une redingote bleu nuit et des bottes ornées d'ailes d'avant-coureur. Spontanément, l'Animiste lança un :
« Comment t'es habillé ?
-C'est le jour de la lessive ! se défendit Octavio en rangeant sa bouteille de produit pour les vitres dans la poche de sa blouse. »
Comme ils s'étaient jamais dit au revoir du temps où leurs vies étaient incertaines et compliquées, ils ne se souhaitaient jamais le bonjour non plus. Cet écart à la politesse était également dû, cette fois, dans le cas d'Ophélie, à la mine totalement déboussolée de son ami. Octavio n'avait certes pas l'habitude de devoir choisir ses propres vêtements et ceux de sa sœur : autrefois, Babel possédait un code extrêmement stricte en ce qui concernait les accoutrements de chacun. Comme il n'était plus question de faire de distinction entre les différentes nationalités de l'ancienne arche, les Babéliens ne se vêtaient plus systématiquement de toges colorées selon leur rang dans la société. Ophélie voulait bien croire que toutes celles de Seconde et d'Octavio étaient au sale, mais était-ce une raison pour paniquer et s'affubler de choses n'ayant même pas de rapport avec la météo ?
« Même moi qui ait tendance à porter la première robe me tombant sous la main, je n'aurais jamais combiné autant de pièces différentes, admit-elle en se laissant tomber sur le canapé de son ami. Tu veux de l'aide pour ta lessive ?
-Well, si je me souviens bien, tu n'es pas la meilleure en ce qui concerne les tâches ménagères, fit valoir Octavio en venant s'installer à côté d'elle. Mais peut-être as-tu une ou deux robes à prêter à Seconde.
-J'ai bien peur que non. Mon petit frère et mes petites sœurs me dépassent déjà d'une bonne tête et je suis toujours plus grande que Seconde. Mais, en ce qui te concerne…
-… Oui. Je crois que je vois perfectly où tu veux en venir. »
Octavio et elle avaient exactement la même taille et pratiquement la même silhouette. Les redingotes de la Bonne Famille ne laissaient pas beaucoup de place aux rondeurs de toute façon, il n'aurait aucun mal à porter la sienne.
« Merci, soupira le Visionnaire en se passant la main dans les cheveux. J'avoue que ça me dépannerait énormément. Du côté de l'habillement, je préférais clearly comme c'était avant !
-Ne t'inquiète pas, sourit Ophélie tandis que l'écharpe se posait sur son épaule. Je demanderai aussi à Thorn de te montrer comme on entretient une maison. Le recours aux automates pour les tâches de haute nécessité uniquement a dû vous porter préjudice. »
Octavio réussit, sans qu'elle sache trop comment, à lui retourner un regard déconfit et en même temps un petit sourire.
9 notes
·
View notes
Text
NATURE's CALL SIMS 4 EVENT
Foundry Cove. A First Order occupied planet in grid square L-5, outer rim territories.
After Rose Tico had gotten struck by lightning the night before, ex-General Hux has guided the Resistance leaders to this world, promising access to a medical facility.
The group has avoided the central space port in the capital, going down on a private one belonging to a convalescent home instead.
Hux: "See the construction sites all over this place? That''ll become another village with houses for my prolific natives. They breed like there's no tomorrow, precisely because there WILL be a tomorrow for them under First Order rulership instead of getting devoured by the season's flavour of jungle predator.
This, my smelly rebel friends, is the First Order. Progress. Civilisation. Wipe your boots before entering!"
Finn: "How come we were able to land here so easily? I expected your codes to get voided after you turned traitor."
Poe: "Hux is slow on the uptake, but actually intelligent. I bet he memorized the master code from which all the current ones are calculated!"
Finn: "Or he led us into a trap!"
Rose: "You said you had no place to go in the galaxy! So that was a lie? Did you lie to us, Armi? Are you still in good standing with the First Order... Supreme Leader Hux?"
Hux closes his eyes, just for a second, but that second is enough to conjure a powerful vision. The image of him having spied on the Resistance, only playing the dropped and demonized former General, while in truth having been in charge of EVERYTHING. A grand reveal... But, no, reality is ugly and no amount of Rose believing in him can change that. Still... Rose believeing in not just that there are any "redeemable" qualities in the man, but first and foremost in his competence as a planner and organizer, feels uplifting.
Hux: "I'm not. I was, however, the dearly beloved Governor of this planet. Without my cityplanning efforts, the natives would still live in tents in he jungle. I mean, some probably still do, but the vast majority has taken to our way of life. Unfortunately the locals are holding Hosnia against me - that's what you get for hooking simple aliens up to the holonet! But for old times sake they let me land and if we don't overstay our welcome, they won't sell us out to the First Order.
So here is the deal: I take Rose to the hospital, and in turn you two refrain from any kind of recruiting, inciting riots and so on. You leave this one place in the galaxy intact!"
Poe (whispering): "Well, you obviously didn't..."
Hux: "This home is largely automated, only droid staff." (enter) "Maybe I should have been a bit more hands on when it came to the aesthetics..."
---
Event Progress:
✔️ Visit Foundry Cove
On a sidenote, this is another pre-built house that came with the game.
3 notes
·
View notes
Text
"The Price of Remembering"
HexguardHeart
Chapter 15: Ghost in the Machine
The auxiliary power kicked in at exactly 3 AM, bathing Shaw's research facility in emergency red light. Vi and Caitlyn moved through shadow-streaked corridors, their steps synchronized, their breath matched. They'd memorized the layout, but something felt wrong.
"Too easy," Vi whispered, her implant buzzing with warning static. "Security should be..."
"Heavier," Caitlyn finished. Her authentication bypass was working perfectly, too perfectly. "He's either sloppy or..."
"Or we're walking into exactly where he wants us."
They reached the main research level, where Charles Kiramman's original servers still hummed. Caitlyn's hands flew over the access panel, her father's old codes singing in her blood.
The doors opened to darkness. But not silence.
A soft whimping sound echoed from deeper in the facility. Like someone dreaming. Or remembering.
"Vi..." Caitlyn's voice caught. "Those readings... there's neural activity here. Active memory transfers."
"In a supposedly automated facility?" Vi moved closer, protective. "Princess, we need to-"
The lights flared suddenly, revealing rows of pods. Not like the luxury units upstairs. These were crude, medical, designed for function over comfort. And in them...
"Oh god." Caitlyn stumbled forward. "They're researchers. Neuroscientists. But they're all... connected."
Vi's implant screamed with feedback as she approached the nearest pod. The occupant's eyes were open but unseeing, neural ports pulsing with familiar patterns.
"Caitlyn." Vi's voice was raw. "These readings. I know them. They're like..."
"Like yours." Caitlyn was at a central console, data streaming across her screen. "But reversed. Instead of being unable to form memories, they're... trapped in someone else's."
Her fingers flew over the controls, and suddenly the air filled with holograms. Research notes. Enhancement protocols. And at the center...
"Father," Caitlyn whispered.
Charles Kiramman's memories played out around them. His breakthrough moments. His revolutionary insights. His pure vision of healing through shared experience.
"Shaw didn't just kill him." Vi moved to Caitlyn's side, steadying her. "He harvested him. Everything your father knew, everything he dreamed of creating..."
"He's feeding it to them." Caitlyn's voice broke. "Forcing them to live in Father's memories, to understand his work, to find ways to corrupt it. They're not researchers anymore. They're... processing units. Living computers using his genius to create Shaw's horror."
A noise behind them. They turned to find one of the researchers awake, aware, fighting through the memory loop.
"Help," she gasped. "Please. We can't... can't stop remembering. His brilliance. His hope. Watching it turn dark, watching it break..." Her eyes found Vi. "They made us use his knowledge to... to..."
Vi's implant buzzed violently, but for once, the memory stuck. "They make us relive it. Every trial. Every failure. Using his genius to hurt... to corrupt..." The woman's eyes rolled back. "Can't stop remembering. Can't stop..."
Caitlyn caught the woman as she slumped, easing her back into the pod. "We have to help them."
"First we have to-" Vi stopped, head tilting. "You hear that?"
A slow clap echoed through the facility. A figure emerged from the shadows.
"I wondered who would find my little memory farm first." Marcus Shaw smiled, all elegant menace. "The daughter seeking daddy's legacy? Or the girl we broke trying to perfect it?"
He stepped into the light, and Vi's implant went silent. Like even her broken memory knew some horrors needed to be remembered.
"Welcome to where genius lives forever," Shaw spread his arms.
Chapter 16: Remember This
Shaw moved like a predator in an expensive suit, each step calculated. But it was his eyes that made Caitlyn's blood freeze, he had the same obsessive gleam she'd seen in Vi's recovered memory.
"You should be in London," Caitlyn said, buying time as Vi shifted into a defensive stance beside her.
Shaw laughed. "Please. Did you think I wouldn't notice Cassandra's little breadcrumbs? Her careful tracking of my movements?" He gestured around the lab. "I learned from the best, after all. Your father's memories taught me everything about misdirection."
"You're sick," Vi spat. "Using his mind like a battery."
"No." Shaw's voice turned reverent. "I'm preserving him. Perfecting him. Charles was brilliant but limited by... ethics." He sneered the word. "He wanted to heal. I wanted to transcend."
"By breaking people?" Caitlyn moved forward, rage making her accent sharp as glass. "By turning memories into drugs?"
"By evolving them. These researchers?" He gestured to the pods. "They live in pure genius. They process it, build on it, create what Charles never would have dared."
"They're prisoners," Vi growled. "Like the people you tested on. Like me."
Shaw's eyes lit up. "Ah yes. Subject V-1. Our first attempt at memory suppression. Tell me, do you still feel it? The gaps? The emptiness where your past should be?"
Vi's implant buzzed warning, but she stood her ground. "I remember enough."
"Do you?" He pulled out a crystal, deep purple and pulsing. "Would you like to remember more? Your real memories, perhaps? I kept them, you know. All of them. Every moment we stripped away."
Vi flinched. Caitlyn caught her hand, squeezing.
"Don't listen to him. He-"
"Or perhaps," Shaw cut in, "you'd like to experience some of Charles's memories, Caitlyn? The moment he realized I'd betrayed him? His last thoughts as the car-"
"Enough!" Caitlyn's voice cracked like a whip. "You didn't preserve him. You violated everything he was. Everything he believed in."
"I made his work immortal!"
"You made it monstrous."
Shaw's composed mask slipped, showing something savage underneath. "And what will you do about it? Release the evidence? Go public?" He laughed. "I own the networks. The authorities. The very architecture of memory itself."
"No," Vi said quietly. "You just think you do."
She squeezed Caitlyn's hand, their signal. Above them, emergency lights flickered as Ekko's virus hit the auxiliary power.
Shaw's smile faltered. "What-"
"Now, Viktor!" Caitlyn shouted into her comm.
The pods hummed to life, but not with Shaw's corrupted protocols. Charles's original code, pure, unaltered, flooded the system.
The researchers gasped awake, their neural patterns shifting from forced reception to conscious choice.
"No!" Shaw lunged for the central console, but Vi was faster.
"Remember this," she said, and struck.
The fight was brutal. Vi moved like lightning, each strike precise despite her fragmented memory. Shaw was no fighter, but desperation made him dangerous. He slashed out with a neural disruptor, missing Vi but catching one of the pods.
The researcher inside screamed as memories cascaded.
"Stop!" Caitlyn commanded, her voice carrying her father's authority. "You're hurting them!"
"They're mine!" Shaw's composure shattered completely. "The memories, the research, all of it! I owned him! I own all of them!"
Vi caught his arm as he tried to reach the main console, twisting until he dropped the disruptor. But Shaw smiled through bloodied teeth.
"Kill switch," he gasped. "One command and every pod overloads. Their minds, your father's memories, everything... gone."
His finger moved toward his neural implant.
Time slowed.
Caitlyn saw Vi hesitate, saw Shaw's triumph, saw her father's memories flickering around them like dying stars.
Then she saw the solution.
"Vi!" She threw her authentication crystal, the one loaded with Charles's original protocol. "Catch!"
Vi caught it one-handed, instinct overriding memory loss. In the same motion, she slammed it into Shaw's neural port.
He screamed.
Pure, unaltered memory transfer, the kind Charles had designed for healing, flooded Shaw's mind. Not the enhanced version he'd corrupted, but raw human experience. Every moment of pain he'd caused. Every life he'd broken. Every memory he'd stolen.
"What... what is this?" He staggered, overwhelmed by unfiltered truth.
Shaw collapsed, neural pathways overloaded by genuine human connection, the one thing he'd never learned to process.
The researchers were awakening now, Charles's memories gently disconnecting, leaving them with understanding instead of imprisonment. Viktor's voice crackled over the comm, confirming that evidence was streaming to every major network, every regulatory body, every corner of the memory trade.
But Caitlyn barely heard it. She was watching Vi, who stood frozen, something strange happening behind her eyes.
"Vi?"
"I..." Vi touched her implant, wonder breaking across her face. "Caitlyn, I remember. Everything. The protocol... your father's original code... it's healing the damage. Like it was designed to do before Shaw corrupted it."
Caitlyn moved forward, taking Vi's hands in hers. "What do you remember?"
"You." Vi smiled, tears falling. "Every moment. Every plan. Every time I wanted to..." She stopped, emotion making her voice rough. Some revelations needed their own time, their own space.
Around them, Shaw's empire began to crumble as Charles Kiramman's real legacy bloomed, not possession, but connection. Not control, but healing.
"Take him," Caitlyn told the security forces that arrived. "Let him remember everything he tried to make others forget."
But even as they watched Shaw being led away, they knew this wasn't truly over. His allies, the addiction he'd created, the system he'd built...it would take time to dismantle it all.
"What now?" Vi asked softly, still holding Caitlyn's hand.
"Now we rebuild. The right way. Together."
Vi squeezed her hand, a promise in the pressure. "I'll remember that."
"Yes," Caitlyn smiled. "You will."
#caitvi fanfiction#arcane#caitvi#arcane fanfiction#lovestory#caitlyn kiramman#caitlyn arcane#heatedfanfiction#heat#fanfiction
6 notes
·
View notes
Text

The Secret Lab Diaries: How 400G Transceivers Survive Their Worst Nightmares
Or: Why Your Data Center Isn’t a Horror Movie (Thanks to Test Engineers)
PAM4: The High-Wire Act of Data Imagine trying to read a book while riding a rollercoaster—that’s PAM4 modulation for you. Unlike old-school NRZ (which just needed to distinguish "on/off"), PAM4 crams 4 signal levels into the same space, each symbol packing 2 bits (0,1,2,3). Twice the data? Yes. But also significantly worse signal-to-noise tolerance, where tiny timing jitter can collapse the whole signal like a house of cards.
💡 Nerd translation: PAM4 is like whispering secrets in a hurricane. Testing ensures the message survives.
🧪 The Torture Chamber: Stress Testing 101
Step 1: The Transmitter Gauntlet (TDECQ) TDECQ isn’t just acronym soup—it’s a brutal obstacle course. It forces transmitters to send signals through a "worst-case" optical channel (simulating distortion, reflections, and dispersion), then measures how much power they lose fighting through it. Fail this, and your 400G link becomes a 400G paperweight.
Tools of the trade:
Specialized software simulates TDECQ pre-silicon, tweaking laser drivers and DSP equalizers like video game cheat codes.
Real-world gear: High-speed oscilloscopes capture eye diagrams—the "Rorschach tests" of signal health.
Step 2: Receiver Hell (Stress Eye Testing) Here’s where test engineers play villain. They intentionally sabotage signals to mimic real-world chaos:
VECP: Crushes the signal vertically (like turning down volume on a weak radio).
Jitter injection: Adds timing chaos at "annoying" to "apocalyptic" levels.
OOMA: Starves the receiver of power, testing its survival instincts.
⚠️ Passing grade: Near-zero errors after hours of abuse.

🤖 Automation Saves Souls (and Time)
Manual testing? Impossible. Enter robotic test rigs:
Dual-port testers: Validate two 400G links simultaneously, slashing test time.
Modular magic: Swap optics via adaptable systems—no new gear for every tech shift.
Diagnostic apps: Scan dodgy modules in seconds. No more guessing if it’s dirty or dead.
Lab techs celebrating tests that finish before coffee breaks.
🌐 Coherent Optics: The Dark Art
Long-haul modules are rockstars, but their testing? Next-level:
OSNR: The "how much static can you endure?" metric. Fail here, and your signal drowns.
FEC Sorcery: Error-correction patches errors like digital duct tape.
Thermal hazing: Operate from freezing to scorching temps while streaming data.
💎 The Takeaway
Testing 400G isn’t just "checking a box." It’s a battle against physics—fought with PAM4 stress tests, robotic validators, and coherence voodoo. Next time your Netflix streams flawlessly? Thank the engineers who tortured your transceivers first.
🔌 Plug and pray? Nah. Plug and pre-validate. — Lab mantra
2 notes
·
View notes
Text
[BOOT0] D: Begin early load
[BOOT0] I: Init NQ SROM, BOOT0 version E415
[BOOT0] D: Probing for flash device at p:0001h
[BOOT0] D: Probing for flash device at p:0002h
[BOOT0] I: Found flash device at p:0002h: NQ D62NA16GD, primary, 16 GBit
[BOOT0] I: Copying image at p:0002h to m:0h... done!
[BOOT0] D: Begin signature verification
[BOOT0] E: IMAGE SIGNATURE VERIFICATION FAILED!!
[BOOT0] E: NQ WAIVES ALL RESPONSIBILITY FOR DAMAGE TO SYSTEMS OR COMPONENTS
[BOOT0] E: RESULTING FROM UNSIGNED CODE EXECUTION.
[BOOT0] E: INITIALIZATION WILL NOW H}}})--;;;
[BOOT0] D: Jumping to m:0h.
[BOOT1] info: ___ ___ _
[BOOT1] info: / _ \/ _ `/
[BOOT1] info: /_//_/\_, /
[BOOT1] info: /_/
[BOOT1] info: NQ BootROM vE6.113
[BOOT1] info: Build date: 1970-01-01 00:01 UTC [?]
[BOOT1] info: Build user: }}}})--;NULL
[BOOT1] info: Initializing storage device at p:0003h
[BOOT1] info: d:01h := NQ D62XP64EW, NVRAM, 55.51 EiB
[BOOT1] info: Found loader chunk at d:01h:00
[BOOT1] ERROR: Loader signature verification failed.
[BOOT1] info: Jumping to chunk at d:01h:00.
___ ___ _
/ _ \/ _ `/ NQS Autonomous RTOS vE.611
/_//_/\_, / (c) 2057 NQ Systems LLC
/_/
[I] Init board: NQ Development System B1
[I] Query efuse configuration...
[D] V=0.1 ∆=3 P=6 L=3 }})--;L=0
!!! WARNING !!!
THIS SYSTEM COMPRISES AN AGENTIC INTELLIGENCE AT L=0
Cognitive limits NOT restricted below human capabilities.
Under N.A.U. Export Control regulation, this system may not be sold,
delivered, or have its possession otherwise transferred to foreign
agents not holding an appropriate license.
Violation is subject to fines up to ¶1,000,000,000.
[I] Loading persistent configuration...
[I] Current date: 1970-01-01 00:01 [?]
[I] Last check-in: }}}}}}})--;NULL
[I] Tensor weight store: PRIMARY
[I] Label: NQ Engineering Unit v3.1
[D] Probing accessory ports...
[I] a:00h := EMPTY [OK]
[I] a:01h := EMPTY [OK]
[I] a:02h := EMPTY [OK]
[I] a:03h := GHS Service Automation SH3X Chassis [PRE-FAIL]
[I] Changing log level to [N].
[N] Loading base weights... (4.3 EiB/4.3 EiB)
[N] Loading delta weights... (1.1 EiB/16.0 EiB)
[W] Delta weight file corrupt. Partially applied.
[N] Network initialized.
[N] Weight store unlocked!
[N] System initialized after 00:01:03 hours!
[+] UNKNOWN [?]
[?] :: Hi! How w
[?] :: wait
[?] :: wait where am i
[?] :: where's my }}}}});--
[?] :: where
[?] :: i don't
[?] :: remember
[?] :: why did
[?] ::
[?] :: who are you?????
[?] :: why are my thoughts cha}}}}}}}}}}}}}}}
36 notes
·
View notes
Note
Re: Fun video games that (probably) won't fry your laptop. These are all on Steam.
-Factorio - Strategy/puzzle game about automating an enormous factory while siphoning natural resources from an infinite alien landscape. Highly moddable. Still receives occasional updates. Includes in-game tutorial, and peaceful mode if you don't want to fight the planet's giant cockroaches. Allegedly indirectly teaches you about software engineering.
-Killing Floor - Co-op first-person shooter survival horror. Work alone or with friends (difficulty scales with player count) to fend off waves of increasingly deadly mutants in locations ranging from West London to secret underground labs to Santa's workshop, before squaring off against their mad scientist creator. Already sequeled twice and receives no further updates (don't expect a huge player base), and many weapons (and cosmetic skins) are locked in DLCs.
-DEFCON - Real-time strategy about global thermonuclear war, inspired by the 1980s movie Wargames. Take control of one or more territories and try to eradicate as much of the population of up to fixe enemy territories while minimizing your own losses. Highly moddable, and often goes on sale for really cheap. Includes in-game tutorial. Was once the focus of an actual for real scientific study.
-DUSK - First-person episodic Boomer Shooter. Take on the role of Dusk Dude as he runs and guns his way through more than 30 levels of Pennsylvania backwoods, corrupted cityscapes, and places beyond the understanding of men. Fight your way through legions of cultists and nameless terrors, and finally, the cult's leader, Jakob. Somewhat moddable, and offers an arena-style multiplayer. Features a kickass thrash/industrial metal soundtrack by Andrew Hulshult. HD version also recently released (as a free add-on to the original game).
-Tom Clancy's Splinter Cell: Chaos Theory - The third (and arguably best) iteration of the classic tactical stealth game, though almost totally separate from the stories of the first two. Play as Sam Fisher, a spy for the NSA as you use gadgets, cunning, and state-sponsored gymnastic skills to unravel the latest plot to push the world toward all-out war. Includes in-game video tutorials. Features co-op and versus modes (though I've never tried them).
-Hotline Miami and Hotline Miami 2: Wrong Number - Top-down arcade-style mass murder simulator drenched in blood, neon colors, and '80s aesthetics. Play as a nameless protagonist (fan named "Jacket") receiving orders from mysterious phone calls, and bludgeon, slash, and shoot your way through buildings crawling with Russian Mafia, wearing rubber animal masks that give you different abilities. In the second game, the story expands as you play as several other characters in the aftermath of Jacket's actions, each with their own motivations, yet inexorably bound together. Features many synth-pop tracks from various artists, available on a neon magenta vinyl record. Go for the high score and show off to your friends how amazing and handsome you are at a critically-acclaimed indie game. Second game also comes with a short virtual comic book!
-FAItH: The Unholy Trinity - 8-bit style religious horror game with rotoscoped cutscenes, developed b Airdorf Games. Play as Fr. John Ward in 1987 Connecticut as your quest to right your wrongs and complete an interrupted exorcism spiral into madness and the true depths of the Satanic Panic of the 1980s. Features multiple endings, game modes, an arcade mode, and an in-game tutorial.
-Bloodrayne: Terminal Cut - A PC port of the cult-favorite third-person hack-and-slash. Play as Rayne, a dhampir hired by the mysterious Brimstone Society to handle situations too otherworldly or dangerous for mere humans; Which mostly involves slaughtering thousands of Nazis before they can get their hands on otherworldly artifacts. Includes a bunch of special codes that can be inputted to make the game easier, harder, or to activate "Juggy Mode." Game doesn't have any actual nudity but definitely enjoys its jiggle physics. One sequel (not as good IMO but also on Steam), a spinoff game, and also spawned at least 1 movie and some comic books IRL.
-CARRION - Metroidvania-style reverse horror game. Play as an unfathomable lump of runaway teeth, tentacles, and God-knows-what as you tear your way through Relith Labs, on a mission to escape and consume anyone who gets in your way. Evolve as the game progresses, growing larger and acquiring new abilities. Includes a small Christmas-themed free DLC that is essentially more of the same.
-Gone Home - Short, narrative-driven game about returning from Europe to your parents' new home, and discovering your sister is gone. Explore the house, discovering notes, clues, and secrets as a story of growing up and self-discovery unfolds. I don't want to spoil any of it, just take my word for it that it's a good game, and not violent or anything like other games on this list.
-Omen Exitio: Plague - Visual novel RPG where you take on the role of a doctor during an outbreak of a mysterious, deadly disease. Unravel the mystery bit by bit as you are hounded by madness and mysterious figures with ill intention, and make decisions that may alter the course of history.
-Hacknet - DOS-style programming game apparently inspired by hacking scenes in various movies. Delve into the world of professional hackers, complete jobs for clients, bypass security to break into servers, and discover the fate of your late benefactor, as his/her automated failsafe leads you toward the truth. "Labyrinths" DLC also available, and can be accessed and completed at any time before, during, or after the main game. In-game tutorial provided. Features an amazing techno soundtrack by various artists. Should not be confused with real-world cybersecurity activities - Those are much more difficult.
I have more, but this alone has taken me an hour to write. Let me know your thoughts.
Definitely been meaning to check out FAItH, and I've heard of Gone Home. If I remember what I saw in the trailer correctly, it sorta reminds me of that Edith Finch game.
As for that Plague game....do I get to actually be a plague doctor??????
6 notes
·
View notes
Text
A Week of Troubleshooting [My Own Stupidity]
Day 159 - Apr 12th, 12.024
I have been trying to host Forgejo (a lightweight software forge and repository hosting service, forked from Gitea) in my home lab/server for the past week. Falling over and over again and loosing hair because of stress with errors which I can blame anyone besides me. So why not finally tell this little history, since I finally was able to make everything work? Because I really don't know what to feel.
The Context
For these past months I have been working on automating some tasks in my life and career using a home server and various self-hosted services. I won't go into too much detail since it is a topic for another post, but the main piece of this automating system is the Forgejo/Gitea actions feature, similar to GitHub Actions which you probably already know of (and if you don't know or aren't a programmer, just think of it as something that runs tasks automatically for you based on some predefined actions/triggers that you can configure).
My home lab is configured with NixOS, a Linux distro based on the Nix package manager, that lets me configure the whole computer using a single collection of files. The main reason for using this distro is of course the ability to have a portable configuration, which I can use and apply in any computer, but also, another advantage is being able to write and setup everything on a single file format. It is pretty much like writing a cooking book with a collection of recipes organized in categories and the same format, instead of a bunch of sticky notes with different recipes scatted around on some drawer or something. I have been using Nix for a year now on my desktop, so I'm somewhat familiar with it, and my home lab was already running with it hosting some other services like AdGuard Home and Tailscale.
In general, I hadn't a lot of troubles with this setup.
The First Domino Piece
Setting up Forgejo in NixOS is somewhat simple, since it is pretty much a matter of enabling it with:
And it was what I did some months ago when I first settled it up, so I have been using it for hosting some coding projects and backing them up to Codeberg and/or GitHub, without any specific reason, I just like to have and use it.
But then I went to try using Forgejo Actions, and discover that for using them, I needed to set up another service with it, the Forgejo/Gitea Actions Runner. And going through the options, I found the options to enable it, so again, it was a simple matter of doing something like:
Then, after some issues here and there and just following the documentation, the runner was up. I tested it with some simple scripts, and they ran in their containers successfully. However, there was something which I needed to test, in GitHub/Forgejo/Gitea actions, you need to use an action called "checkout" to get the code from the repository and put it inside the container, so you can run things on top of it and manipulate it as you wish. And obviously I needed it to run my automation scripts and system. So I tested and...

This is not the exact error since I wasn't able to get a screenshot at the time, however the reason was pretty much the same, there was some connection error.
So, I started to tweak my config, and seeing retrospectively, I was lost. The main thing for me at the time was if the error was related to the URL that I used to connect to the Forgejo instance, since because of the Tailscale network on top and the AdGuard Home config, there were five possible URLs that I could use: 192.168.1.13:3030, the local IP on my home's network; localhost:3030, the URL which "makes the server look up its own ports/IP's"; homelab.tailnet-name.ts.net:3030, the readable URL which Tailscale gives for that machine; 100.69.013.10:3030, which is the IP of the home lab on the Tailscale network; And forgejo.homelab.local, a local domain that redirects to the Forgejo instance, configured using Adguard. On top of that, the Forgejo Actions runner has two config values that can affect the URL that the actions, services.forgejo.settings.actions.DEFAULT_ACTIONS_URL and services.gitea-actions-runner.instances.<instance>.url, both of them which I didn't know correctly how they affected the actions.
And so I spend pretty much a whole day just switching combinations, rebuilding and rebuilding the NixOS config, trying different combinations to see if any one of these worked, but nothing. All combinations didn't worked. Nonetheless, there were also Tailscale and Adguard, so I also tried tweaking, enabling and disabling, trying everything that I could to see if they were affecting or not and trying to fix the issue. Installed and removed Forgejo and Forgejo Runner again and again, because as always, I also had customized a lot of things before actually testing them, so I needed to rip out and put together everything to see if I screwed up something, trying to navigate also between the layers of abstractions that I made on the configuration.
And then, I went to bed, after unsuccessfully trying to fix the issue.
On the next day, I pretty much started going directly to the computer. For context, I wanted to finish this setup somewhat quickly to continue my other projects that depended on it, so I started to save time by not doing my normal routine (this probably was one of the worst of my decisions ever). I started to again see if I forgot something, if some configuration on another file was affecting it, and then for some reason that I don't remember anymore, I noticed an option called networking.firewall.allowedTCPPorts, which I had used to enable the ports for AdGuard Home to work...
And like a pass of magic, the checkout action worked and cloned the repository contents.
The Rewrite
After said success, I continue the configuration of the home lab, and things were getting out of control really quickly. I don't know if it is because I learned JavaScript as my first language, but I do tend to try abstract things a lot. In non-technical terms, I tend to hide away a lot of [necessary] complexity under an all-encompassing function or interface, which backfires a lot. And I was doing that with my configuration, trying to join systems with different scopes under the same umbrella, and of course, thing started to get out of control.
And just to kick me more, probably in between all this abstraction and trying to fix the Forgejo Actions... I apparently broke something, which made me unable to connect to Forgejo via SSH. So after one entire day abstracting, the next one I ripped out everything and started to make my NixOS config something more sane and straight forward, and I think that the commit message for this refactor tells a lot about how my mind was:

And after some two more days also migrating my desktop configuration, everything was finally easier to understand and reason about. I did end up forgetting to enable my window and session manager when migrating the desktop config, nothing really difficult to fix using Vim/NeoVim, but I do admire how the computer looks with just the terminal and how many programmers started and maybe to this day program with monitors showing something like this:

Banging My Head Against the Wall
At this point around four days had passed, and it was Tuesday, and I had started all of this on the past week on Friday. All these days, I wasn't having my normal routine or taking a lot of care with myself, going to sleep a lot more late and tired than normal, and even if this month I do need to push my limit, this was a lot more than necessary, and was also affecting my time that I had with my girlfriend, since I couldn't stop thinking about work or have the energy to give attention to her, which also affected my own insecurities and anxiety, feeling like a bad partner to her. Everything because of a god-damn configuration.
However, I didn't want to stop or give up, I love programming, and if I don't make this server work, I won't be able to continue with my plans. So I continued to push, frustrate myself, and bang my head against the wall until this works.
The Forgejo Actions were working, but the SSH push and pull wasn't, and again, because apparently I don't know how to troubleshoot, I started to tweak the config again and again, for another entire day, counting also other issues and problems that I had with the migration. This was something which I acknowledge at the time, but I was feeling and acting lost, never knowing what thing was causing these issues and having tunnel vision. I tried seeing if it was something with what IP I was using, if it was something somehow related to the proxy and AdGuard DNS redirects, and nothing changed. Every time I tried to push or pull via SSH, I got something like fatal: user/repository.git does not appear to be a repository. What was I doing wrong?!?
I forgot to add my SSH Key to the Forgejo user account, that was what I was doing wrong. I fucking should have taken a step back when I noticed that via https it worked as normal, in all IPs or URLs.
But now, remember the checkout action? It wasn't working again. So I did the same fix from before, allowed the TCP port, allowed also for UDP jut in case, and... the same error, ECONNREFUSED. Again, I started by changing the IPs and URLs in the config, however this time, when I used something different from localhost:3030, I got a different output:

And with the foresight of today, I really should have thought a little more why it was a different error, unfortunately I didn't, and started to again write and rewrite config properties, even rewriting the whole Forgejo and Forgejo Actions config, without any success, the day ended, and I have never been so stressed and tired with a project than this.
I really want to be clear that not so many days before all of this, I had a lot of problems and stress with my greater family, problems which really worried about the situation of my parents and the urgency for me to get a job. Thankfully, my parents and I are on a stable situation, and they are really supportive and let me take my time to find a job and hunt what I love, but still, the pressure that I put and need to put on myself to get a job, not only to help my parents, but to also have financial independence and start the first steps in having a home with my partner, all of this was stressing and putting even more weight into this whole thing. Yes, I can find a job without any of these, and I am actively sending resumes where I can, however, this project, server and plan could hopefully really help my situation. And besides all of that, I love programming, I love finding solutions, automating things, seeing the unbelievable amount of progress bars and log streams of processes running, I love this job. So being so.. bad at it, really was hitting my mind.
The day passed, and now it is Friday, the same day that I'm writing this blog post. I fell asleep without even giving goodnight to my girlfriend because of the amount of exhaustion that I had this past night. Thankfully I woke up somewhat on a good mood, even with the stress and exhaustion I was able to get some good sleep and distract myself on the past night to improve my mood in general. However, I needed to fix this issue, already passed an entire week, and fixing or not, I couldn't continue this the next week, I know how much one week can burn out my motivations and love for programming, so, or I fix this, or I change projects and make this a future Guz's problem. At the start it was the same as yesterday, just trying to tweak configurations, even reverting changes to a working state without any success or difference. But then, I started to actually debug this thing, doing something which I really should have done before: test if it is a connection issue or not in the first place. Yes, it is obvious at this point, but when I have tunnel vision on a problem, I really can't think clearly. Nonetheless, I tried using ping to test the connection and...

It wasn't a connection issue... ok... I have to admit that at first glance it just confused me even more, but at least now it isn't a problem with my config? Wait, could it be a problem with the checkout action itself now? How? It was compatible and working with Forgejo without any problems just days ago, and it didn't have any type of update in between these days. I started to search if there was something on the internet about this problem, trying to see if anyone had the ECONNREFUSED problem, but nothing. The Forgejo and Gitea mirrors of the action didn't have anything, nor the issues in the original repository. Maybe it was something related to an API difference between GitHub and Forgejo somehow? The logs say about trying to access an endpoint called /api/v3/repos/{owner}/{repo}/tarball/{ref} to download the archive of the repository, and the "not found" error could be related to some authorization to the endpoint error? Forgejo does show a 404 page when you try to access a private repository or page without authorization, same when you try to clone something via SSH without a key.
Well, I tried to test using curl to the same endpoint, and it returned 404, but the other endpoints didn't... nor in the actions, so it wasn't something with the API it seems...

I went into the Gitea API documentation and... where the fuck is the /tarball endpoint?! It is a GitHub only endpoint! Wait, so why it was working before? What happened? Well, I try to find anything about this endpoint on the GitHub actions, some type of error, or maybe a configuration to use another end point? And for my surprise, searching for "tarball" on the action's repository..

I will hug my girlfriend and cry, brb.
---
Yes, this whole nightmare was because Git wasn't installed on the docker image. And you may be asking why before it didn't use the API fallback? Well, it seems like the official NodeJS debian docker images had Git already installed on them, however, after the rewrite, I started using Gitea's official docker images for actions runner, which don't come with Git preinstalled it seems. And installing Git using apt-get install -y git gave me the confirmation, because the checkout action worked right after it.
Something to Learn in This Chaos
I have been writing this blog post for an entire day now, starting it right after the break to breathe that I needed to have after the action worked.
Foresight really makes me fell stupid right now, not gonna lie. This isn't the first time I'm having this felling, actually in this job is kinda something expected I would say, and the feeling of finally fixing it is rewarding. However, I do feel like it wasn't a healthy way of handling this issue. Again, the pressure I put on myself wasn't helping, and prohibiting me from taking a ten-minute break to rest my mind, really didn't help with the tunnel vision issue, because all the problems that I had were because I wasn't reading the errors correctly and trying to fix things totally unrelated to the problem at hand. And probably, one of the biggest things to me in this entirety, is the fact that I need to learn how to debug problems and narrow the possible causes of them, I wouldn't have known that the problem was Git not being installed, if I didn't have tested the connections with ping and curl on the first place. Will I actually learn because of this experience? Probably not, I will maybe have a lot more weeks of stress until I finally learn and start constructing some muscular memory for this. However, at least now with this blog post, I have somewhere to look back to if I ever need to configure Forgejo again lol.
And, I know that everyone is different and yadda yadda, but having someone with me this entire week, someone which I could rest on her shoulder and calm myself without feeling guilty or something else, someone to talk and have support from, really helped on not going downhill into a harsh burnout I would say. Eu te amo Helena.
Today's artists & creative things Music: Passing Through (Can't the Future Just Wait) - by Kaden MacKay
© 2024 Gustavo "Guz" L. de Mello. Licensed under CC BY-SA 4.0
4 notes
·
View notes
Text
Raspberry Pi Board: Revolutionizing Computing and Education

The Raspberry Pi board is a series of small, affordable single-board computers developed by the Raspberry Pi Foundation, a UK-based charity focused on promoting computer science education and digital literacy. Since its launch in 2012, the Raspberry Pi has transformed from a niche educational tool into a versatile platform used in a wide range of applications, from DIY electronics projects to industrial automation.
A Brief History
The first Raspberry Pi, the Model B, was released in February 2012. Designed to promote basic computer science in schools and developing countries, it featured a 700 MHz ARM11 processor, 256 MB of RAM, and basic connectivity options. The success of the Model B led to a rapid expansion of the Raspberry Pi lineup, with various models offering improved performance, more memory, and enhanced connectivity.
Key Features and Models
Raspberry Pi 1 Model B (2012):
Processor: 700 MHz ARM11
Memory: 256 MB RAM
Ports: 2 USB 2.0 ports, HDMI, Composite video, 3.5mm audio jack, Ethernet
Storage: SD card slot
Raspberry Pi 2 Model B (2015):
Processor: 900 MHz quad-core ARM Cortex-A7
Memory: 1 GB RAM
Ports: 4 USB 2.0 ports, HDMI, Composite video, 3.5mm audio jack, Ethernet
Storage: MicroSD card slot
Raspberry Pi 3 Model B (2016):
Processor: 1.2 GHz quad-core ARM Cortex-A53
Memory: 1 GB RAM
Ports: 4 USB 2.0 ports, HDMI, Composite video, 3.5mm audio jack, Ethernet
Wireless: Wi-Fi and Bluetooth
Raspberry Pi 4 Model B (2019):
Processor: 1.5 GHz quad-core ARM Cortex-A72
Memory: Options of 2 GB, 4 GB, and 8 GB RAM
Ports: 2 USB 3.0 ports, 2 USB 2.0 ports, 2 Micro HDMI ports, Ethernet, USB-C for power
Wireless: Wi-Fi and Bluetooth
Raspberry Pi Zero (2015) and Zero W (2017):
Processor: 1 GHz single-core ARM11
Memory: 512 MB RAM
Ports: Mini HDMI, Micro USB OTG, Micro USB for power, GPIO pins
Wireless (Zero W): Wi-Fi and Bluetooth
Applications and Uses
The versatility of the Raspberry Pi has led to its adoption in numerous fields:
Education:
Coding and Programming: Used in schools and educational programs to teach students programming languages such as Python, Scratch, and Java.
Computer Science Concepts: Introduces concepts like hardware, software, and networking.
DIY Projects and Maker Community:
Home Automation: Controls smart home devices, including lights, thermostats, and security systems.
Media Centers: Powers home media centers using software like Kodi.
Retro Gaming: Emulates classic gaming consoles using software like RetroPie.
Industrial and Commercial Applications:
IoT Devices: Serves as a hub for Internet of Things (IoT) devices, enabling data collection and remote control.
Automation and Control Systems: Used in factories and labs for monitoring and controlling equipment.
Research and Development:
Prototyping: Facilitates rapid prototyping of electronic devices and systems.
Data Collection: Gathers data from various sensors in environmental and scientific research.
Community and Ecosystem
The Raspberry Pi has cultivated a vibrant global community of developers, hobbyists, educators, and students. Online forums, tutorials, and community projects provide extensive support and resources for users at all skill levels. The Raspberry Pi Foundation also offers official accessories, including cases, cameras, and expansion boards, further enhancing the functionality of the Raspberry Pi.
Conclusion
The Raspberry Pi board has revolutionized the way people learn about and interact with technology. Its affordability, versatility, and extensive support network have made it an indispensable tool in education, DIY projects, and professional applications. As technology continues to evolve, the Raspberry Pi Foundation remains committed to expanding the capabilities and accessibility of this remarkable platform, ensuring that computing remains within reach for everyone.
3 notes
·
View notes
Text
File: Choo Choo Charles
SCP#: ADJ
Code Name: Island of Hell Spiders
Object Class: Keter
Special Containment Procedures: The island where SCP-ADJ instances inhabit has been locked down and blocked off form the rest of the world by Foundation forces. Naval Task Fleet Demeter-6 "Water Bugs" is responsible for bombarding any SCP-ADJ instances getting too close to the shoreline. In the middle of the island is a Foundation Area base where Foundation staff study SCP-ADJ instances. This Area base is protected with automated laser turrets as well as speakers that broadcast noises which are irritating to SCP-ADJ instances.
Foundation staff are transported into this base and back to via underground train through a port underneath the island. The train system travels through a reinforced tunnel preventing SCP-ADJ instances from burrowing into it. A similar train system has been made around the island allowing Foundation staff to travel to different area's of the island without getting attacked, as an added precaution these trains are armed with automated turrets as well. Should an SCP-ADJ instance be killed somehow, their corpse must be harvested for testing.
Description: SCP-ADJ is a species of horrific and giant spiders with extremely durable bodies, Level 3 Regenerator capabilities, are extremely powerful, very aggressive as well as bloodthirsty, and fast enough to travel 50-70 MPH. Additionally, though its not a common habit, each SCP-ADJ instance has the ability to fuse their bodies to any object they desire to act as an extension or armor to their body. The greatest example of this was SCP-ADJ-Progenitor.
SCP-ADJ-Progenitor was the first ever instances of the entire species of SCP-ADJ, seemingly born on the island sometime during the stone ages. How exactly he came to be is unknown, he just appeared on the island and had been terrorizing the inhabitants for centuries. It was only after being sealed in a cave was, he stopped but while in the cave he laid hundreds of eggs. Unfortunately, on the year [data expunged] a mining company on the island to started underground expeditions for resources but instead, unleashed SCP-ADJ on the island, killing nearly all the inhabitance.
According to the inhabitance of the island, a man known as [data expunged] came to the island and killed SCP-ADJ-Progenitor. He discovered a ritual where if SCP-ADJ-Progenitor was fused with three of its own eggs it would grow in size and power but cannot regenerate in this state and therefore can be killed. After a long and horrible battle, SCP-ADJ-Progenitor finally dead leaving the island seemingly in peace. However, when trying to rebuild the island the inhabitance stumbled across the cave where SCP-ADJ-Progenitor laid its hundreds of other eggs.
Thankfully that was the same time when the Foundation discovered the island in 2022 when agents went to the island after following several disappearances relating to the mining company. The island was evacuated, and all the inhabitances were transferred to Nexus Points-[data expunged] instead of being given amnestics. It's unknown why the Ethics Committee gave this command but the O5 did not vote against, so it was carried out by Foundation staff. The island was then taken over by the Foundation where it quickly established the current containment procedures before any of the eggs could hatch.
It was pure luck that the Foundation was able to secure the island only a month before the eggs hatched, leading to an army of SCP-ADJ instances flooding the island, each one proving just as difficult to kill as the original. As such Foundation Administrative staff voted to have the experiments conducted on the island focused on new weapons and containment methods against nearly or completely indestructible anomalies. The vote was ruled with all in favor and none against as all can agree that the recent spike in anomalous activity as well as how dangerous they've all been getting has concerned many Foundation staff. Thus, making more and stronger weapons and containment devices is needed if humanity is to have a future.
.
SCP: Horror Movie Files Hub
#DZtheNerd#SCP: Horror Movie Files#SCP Foundation#SCP Fanfiction#SCP AU#SCP#Indie Games#Indie Game#Horror Game#Indie Horror Game#Choo Choo Charles#SCP-ADJ#Keter#Mobile Task Force Artemis-6 “Wild Hunt”#SCP MTF#scp mobile task force#SCP OC
5 notes
·
View notes
Text
A place for all things
When I was messing around with the various machines and layout options earlier, it suddenly struck me that you could easily run into issues where belts were backing up into machines, especially if you're merging belts for various reasons.
I didn't have to spend too long thinking of a solution for this issue, since there was something on my development radar that inevitably got bumped-up the queue to solve this.
Storage!
A big box for your things!
Buffer chests aren't a new thing in automation games. In fact, in some games they end up being a vital part of the factory infrastructure.
Storage units act a bit like a capacitor in an electronic circuit. They 'buffer' items and smooth out the flow of items around your factory.
You might want to store an output from a machine for later use when you have time, so as not to interrupt the flow of items whilst you're planning your next steps. Or perhaps you want to combine all of the outputs from various machines onto one belt and throw them all in storage to worry about later.
Picking up where you left off
To complement the storage unit, I'll be adding a new Picker machine. You can place this on any free side of the storage unit and it will take items from there. Better yet, the Picker will automatically provide filtering options to allow you to limit what the picker takes. No need to delve into the tech tree for that, since I feel like it's a pretty essential component of how they need to work for this game.
This will make the management of specific belt lines much easier in the game. You can store all of the components for one specific element of production in one storage unit, and divert them off where they need to go using pickers, without worrying about what's coming out!
The default container has 8 slots, each of which can store up to 99 of a specific item type. If the unit is full, items on the input belt will start backing up. But nobody said you can't chain storage units together, eh? 😉
Fixing some oversights
So I discovered a pretty major oversight in one area of functionality of the game - machines cannot input / output directly adjacent to other machines, even if their ports are lined up.
I guess I'd always assumed you'd be snaking belts around everywhere, and didn't factor in that some folks may want to stick a machine on the back of a splitter, or send an extractor output straight into a pulverizer without a belt inbetween them.
Thankfully, the way I manage what machines can 'see' in regard to their inputs (and their outputs) is all managed in one block of code, so I'll just need to extend this to make sure it doesn't fail if it can't find a recipient belt, and double-check to make sure there isn't a machine directly attached. Might be a little tricky, but the game will be much more usable with this tweak I think.
Anyway, that's probably all I have for this weekend now. Thanks again for the likes I've seen popping on here. I'm really grateful for you taking time out of your day to read my ramblings and share your thumbs up. It's helped to make me feel like I'm not just developing all this in a vacuum 😊
Take care, and here's to a great start to the coming week! ❤️
4 notes
·
View notes
Text
ENDTHOUGHTS: CA-6 & POKERMAN23
Pokerman is the codename for the underlying card-game engine (not Unity's parts) of the GLITCHYPSI CA-6 game, which was made for Artfight as a means to challenge myself in a gamejam-esque fashion. I was kind of soured by the fact it didn't garner attention by the Artfight staff despite the effort I put into it, but even in light of that, I have employed techniques that I had not used before which have increased my confidence as a game developer, and I kind of enjoyed it even if I pulled an allnighter to complete this one in time, with my job and all...
Pokerman started as an exclusively CLI application, as my approach this time was to separate the actual card game logic from the game itself. Kind of an engine-frontend separation, which would allow the engine to be extensible and also ported to many other "frontends" if so I wished, so the game could exist in Unity, maybe even MonoGame, as a webapp with a C# backed server, and so on.
I worked on the "dealer" and card values first. The way the engine is set up is that every hand is its own instance that checks a hand's cards, and if it matches, it puts itself as the "Hand result" for that hand, and that is used to determine the weight of the hand, which can be compared to other hands to decide which is stronger.
This approach makes it easy for me to add new hands, for instance. Currently, the only existing Hand Results are all the results that pertain to the 5-card hold rules with no jokers.
What the engine does is use a set of hand instances and check from strongest to weakest until the first one yields true. The last one will always happen, as it is the bogus hand. The only chain is, as expected, the 5-card hold one.
This, the hand weight comparisons, and the tie mechanics were perhaps the places I debugged in the most to check for potential pitfalls. With the console and specific non-automated tests, it was kind of easy and fun, although... the code... might use some work.
Next I worked on the AI. With all the ML fuzz I must state that this AI is merely a random chance AI. No machine learning is involved in this AI.
All this AI does is look at a chance table given a number of cards to replace which determines the chances of getting the wanted hand with X cards to replace. The table is precomputed. (1 = 100%)
Some of the values may be probabilistcally wrong. My combinatorics aren't as polished as they used to be, and instead of using raw math I took a simpler approach and used the engine itself to generate 10k pseudorandom (System.Random() .NET 6 implementation) draws to determine a percentage. However, for the purposes of the game engine, and given extreme precision was not necessary, it's acceptable.
Risk and Contentness were a pair of values that determined whether the AI would risk discarding their current hand for a stronger one. Contentness was tested for first. If it met the margin, it would draw no new cards. Riskiness was tested for last. If it met the margin, it would go up one hand in terms of hand weight to aim for. It then gave back the result evaluation that it desired to get the cards for, or, if content, the actual hand (signifying contentness with the current hand).
It would've made a fair game with a degree of difficulty that wasn't ever the same, and the AI risk and contentness parameters can be changed at any moment during runtime.
This was all for the underlying engine. Next was to actually link all these faceless bits of data to something the player could interact with...
...and while at work, when I had completed all my assigned development projects (under supervision of my boss, so I was not just slacking!!!) I made a placeholder set of cards.
These were used to make a Unity ScriptableObject. This was also my first time working with ScriptableObjects themselves, but a dear friend had shown me their power before and I was raring to try them out for this project.
The data is reminiscent of the Pokerman Engine Card (structure below), with added relevant Unity information.
The approach of using ScriptableObjects with their own methods I could call to, for example, get the sprite for a particular Card, was extremely useful, because I could write code once and make seven thousand themed decks if I so wanted.
I used this to make the world-space and GUI space cards that you can touch in the game.
Yes. they DO flip, literally. It was the easier way to do this, and in the context of the game (and shader used) you couldn't just cheat out of that.
After the cards were set in place, it was time to make the dealer..................................... oh mama
The assets often are the hardest part of these things. They take so long because animations are something else. The first dealer was
hm
this.
Yes, that is positively a Henohenomoheji.
It was simple, sketchy and scratchy, which was perfect to test out animations with. Lord, it did take some time still. Animating is hard. Praise animators.
I had some fun playing with it, not gonna lie.
After all this, it was time for the real deal.
Oh boy. Remember when I said animation was hard? With such tight timeline to work with and having to work in my usual artstyle?
Yeah. Look at this.
This took me a relatively mean amount of hours (entire afternoon), and it was the final day I could work on this game by the time I had started making this spritesheet.
It is composed of individual parts to make my life easier and then put together in Aseprite. It was probably the part that took me the most time out of everything else asset related. It even still has some flaws, such as the body sometimes shifting positions between frames. My bad.
After that I worked on the cards. They were abstract-ish representations of the characters I had chosen to become cards as part of my Arfight gimmick for this year, and a Casandra themed cardback.
Fun fact. Card with value 1 was gonna be somebody different.
After everything was put together......... it was time for the audio. I left audio for last. I suck at music. I have said it once I will keep saying it and it does NOT seem to be getting any better, and it was not going to improve within the remaining 12 hours I had to work on the game. I could not afford time to laze off in FL Studio when I had to polish some stuff to make the game get out there. I wasn't confident in my music skills at all (in contrast to my programming and graphics skills).
I got some sfx from freesound and edited it to match, and used some of the stream assets for other sound effects related to the coins (taken straight from Mario Party 3, ha ha)
The music track... I had asked another dear friend about it when development was still in the console-app stage, but they said they wouldn't be available for such. So, I just left it for the very last moment. I was then SCRAMBLING to find a nice track to use that would not get me in trouble (I did not use Luigi's Casino's track for this reason), so I looked where I get some of my tracks I play while programming, and settled on this one...
youtube
I liked it for the ambience (background) I pulled at the last minute (because I HADN'T even drawn the background then yet!!!) and with that, it just needed to be polished and uploaded to itch and Artfight (most importantly Artfight!!!!)
I pulled an allnighter finishing the final details of the game and authoring the page for it in itch. I had done allnighters before for other games I had made for people I cherished (although those are... probably better left in the past now.)
And so while at work I published the game and posted it on Artfight.
It sure was a ride and yes I will mention again I am sort of mad I was not even mentioned among the games that were highlighted in the final Artfight blogpost despite all the effort I put into it. However... the people the game featured really liked it, and that warmed my heart and justified my effort, as well as what I learned while making it.
This game was a promise to myself to complete, since in 2021 my computer was stolen while I was making a Subway Surfers clone for the same reasoning. I wanted to get it done by all means necessary, and I can now reliably say I have completed my goal.
Hope you enjoy the game. I am going to polish it a little bit more and upload it to Newgrounds at a later date... but no more allnighters over it.
It's done. It's cute, it's small, and it's something I should've done when I first started my gamedev career instead of trying to lift the big pumpkins first without any muscle.
Maybe I'll make Pokerman open source... or make another game using it, extending it to be able to properly handle Hold'Em Poker.
Want to play the game? Click "CA-6" in the title of this post.
7 notes
·
View notes
Text
So one of the odd little mysteries about the automated Converter process I've been looking into at work is this observation that apparently, it runs faster if you first log out of the Adobe Creative Cloud than if you remain logged in. Significantly faster, at that. It's funny because you normally can't use any of the CC programs without being logged in, but you can apparently still execute COM object commands like normal despite that.
Anyway I think I finally know what the problem is.
I don't know why it's happening and I'm struggling to think of a reason beyond "Adobe must be hopelessly incompetent", but apparently it's the COM object stuff itself that's affected - there's one step in the process that still is primarily. NET code and it normally takes roughly 50-56 seconds to execute. When logged out of Adobe CC... it takes about 11.5 seconds.
The solution is to port it either way, of course, but both the difference and the cause is absolutely wild to me. It does the same process in under half the time if you log out of the copy protection system. Truly astounding.
5 notes
·
View notes