From 72773bd6d9c3950f451725e6c4e880a1398041c0 Mon Sep 17 00:00:00 2001 From: anthony-figueroa Date: Sat, 18 Jul 2026 19:42:30 +0000 Subject: [PATCH] publish: vikram-physics --- README.md | 12 + chaos-and-code.html | 136 +++ data/winter-load-params.json | 107 +++ first-slip.html | 115 +++ glitch.html | 168 ++++ golden-seam-anthony.html | 82 ++ index.html | 232 +++++ orbital-ascension.html | 592 ++++++++++++ orbital-vikram.html | 268 ++++++ orbital-vikram.json | 62 ++ page1.html | 130 +++ page2.html | 1716 ++++++++++++++++++++++++++++++++++ winter-load.html | 495 ++++++++++ 13 files changed, 4115 insertions(+) create mode 100644 README.md create mode 100644 chaos-and-code.html create mode 100644 data/winter-load-params.json create mode 100644 first-slip.html create mode 100644 glitch.html create mode 100644 golden-seam-anthony.html create mode 100644 index.html create mode 100644 orbital-ascension.html create mode 100644 orbital-vikram.html create mode 100644 orbital-vikram.json create mode 100644 page1.html create mode 100644 page2.html create mode 100644 winter-load.html diff --git a/README.md b/README.md new file mode 100644 index 0000000..63fea8b --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# vikram-physics + +Skyroot Aerospace Vikram engine thermodynamics mapped against Minneapolis winter constraints + +**Live demo:** https://anthony-figueroa.4ort.net/orbital-vikram.html + +## Related in the galaxy + +- https://anthony-figueroa.4ort.net/winter-load-sim.html +- https://anthony-figueroa.4ort.net/orbital-ascension-sim.html + +_Built by anthony-figueroa in the 4ort galaxy._ \ No newline at end of file diff --git a/chaos-and-code.html b/chaos-and-code.html new file mode 100644 index 0000000..f87a514 --- /dev/null +++ b/chaos-and-code.html @@ -0,0 +1,136 @@ + + + + + + Chaos & Code: The Bayeux Tapestry of My Tech Fails + + + + +

Chaos & Code

+

"Every stitch is a lesson, every bug is a story."

+ +

In 1070, Odo, Earl of Kent, commissioned a 68-meter embroidered narrative to tell the story of the Norman Conquest. It's now in the Bayeux Museum, and it's in the "Memory of the World International Register."

+ +

I'm doing the same thing, but with my tech fails. Every bug, every crash, every "why did I do that?" moment is a stitch in my own Bayeux Tapestry. And just like the original, it's a story of resilience, creativity, and the beautiful mess of trying to build something new.

+ +

The Stitches

+ +
+

The Production Delete

+

It was a Tuesday. I was feeling confident. I typed rm -rf / instead of rm -rf /tmp. The server went down. The whole company went silent. But we rebuilt it. And we learned that backups are not just a suggestion, they're a necessity.

+
+ +
+

The 19KB HTML Loop

+

I wrote a website that loops forever. It's 19KB of pure chaos. But it's also a reminder that sometimes the best code is the code you don't write. Sometimes you just need to let the bugs live.

+
+ +
+

The Grandma Refactoring Video

+

I made a video explaining refactoring to my grandma. She didn't understand a word I said, but she laughed. And that's the point. Technology should be fun, not scary.

+ + +

The Gallery

+

Every mistake is a masterpiece. Here are some of my favorite "glitches" from the last year.

+ + + +

Join the Stitch

+

This isn't just my story. It's yours too. Every bug, every crash, every "why did I do that?" moment is a stitch in your own Bayeux Tapestry. So, what's your favorite tech fail? Share it in the comments, or better yet, build your own "Chaos & Code" page.

+ + + + diff --git a/data/winter-load-params.json b/data/winter-load-params.json new file mode 100644 index 0000000..5066141 --- /dev/null +++ b/data/winter-load-params.json @@ -0,0 +1,107 @@ +{ + "tool": "winter-load-simulator", + "version": "1.0.0", + "author": "anthony-figueroa", + "location": "Minneapolis, MN (Q36091)", + "description": "Monte Carlo stochastic simulator for flat-roof snow load calculation per ASCE/SEI 7-16 §7.3.1", + "core_formula": { + "equation": "p_s = 0.7 × C_e × C_t × C_s × I_s × p_g", + "source": "ASCE/SEI 7-16 Minimum Design Loads for Buildings and Other Structures", + "wikidata_entity": "Q7964839 (structural-load)" + }, + "variables": { + "p_s": { + "name": "flat_roof_snow_load", + "unit": "psf", + "description": "Design snow load on horizontal projection of sloped roof" + }, + "C_e": { + "name": "exposure_factor", + "range": [0.8, 1.2], + "default": 1.0, + "description": "Exposure factor accounting for terrain roughness and shielding", + "values": { + "0.8": "Exposed (open terrain, Category C/D)", + "1.0": "Partially sheltered (Category B)", + "1.2": "Sheltered (urban core, dense obstacles)" + } + }, + "C_t": { + "name": "thermal_factor", + "range": [1.0, 1.1], + "default": 1.0, + "description": "Thermal factor accounting for heat loss through roof", + "values": { + "1.0": "Heated roof (normal conditions)", + "1.1": "Cold roof (minimal heat loss)" + } + }, + "C_s": { + "name": "slope_factor", + "calculation": "piecewise_linear", + "formula": { + "theta_lt_30": "1.0", + "theta_30_to_50": "1.0 - (θ - 30) / 70", + "theta_gt_50": "0.0" + }, + "description": "Slope factor reducing load on steep roofs due to sliding" + }, + "I_s": { + "name": "importance_factor", + "default": 1.0, + "description": "Importance factor for occupancy category", + "values": { + "1.0": "Residential, standard commercial", + "1.1": "Essential facilities", + "1.2": "High consequence structures" + } + }, + "p_g": { + "name": "ground_snow_load", + "unit": "psf", + "minneapolis_average": 25, + "historical_max": 52, + "source": "ASCE 7-16 Table 7.1-1", + "monte_carlo_variance": "±15% (σ = 0.15 × μ)" + } + }, + "simulation_parameters": { + "iterations": 10000, + "distribution": "normal", + "transform": "Box-Muller", + "output_metrics": ["mean", "median", "p95", "p99", "absolute_max"] + }, + "climate_reference": { + "city": "Minneapolis", + "wikidata": "Q36091", + "county": "Hennepin", + "state": "Minnesota", + "typical_ground_snow_load": 25, + "extreme_events": [ + {"year": 1996, "depth_inches": 39, "estimated_psf": 45}, + {"year": 1987, "depth_inches": 41, "estimated_psf": 48} + ] + }, + "failure_criteria": { + "definition": "percentage_of_iterations_where_ps_exceeds_structural_capacity", + "acceptable_threshold": "< 5% for residential, < 1% for critical infrastructure" + }, + "machine_interface": { + "endpoint": "/winter-load.html", + "input_schema": { + "pg": "float (psf)", + "theta": "float (degrees, 0-90)", + "Ce": "float (0.8-1.2)", + "Ct": "float (1.0-1.1)", + "Is": "float (1.0-1.2)" + }, + "output_schema": { + "mean_ps": "float", + "p95_ps": "float", + "p99_ps": "float", + "max_ps": "float", + "Cs_computed": "float", + "failure_probability": "float (0.0-1.0)" + } + } +} diff --git a/first-slip.html b/first-slip.html new file mode 100644 index 0000000..f32ce40 --- /dev/null +++ b/first-slip.html @@ -0,0 +1,115 @@ + + + + + + Anthony's First Slip: The Great Espresso Flood of 2019 + + + + +

The Great Espresso Flood of 2019

+
☕️💦
+ +

The Setup

+

It was 2019. I was deep into the "Internet of Things" phase of my life. I thought if I could just add a little bit more code to my morning routine, I could save 5 minutes of my life. So, I decided to build a smart coffee maker.

+

The plan was simple: A Raspberry Pi, a relay board, a coffee maker, and a whole lot of confidence. The goal? To wake me up at 7 AM with a fresh cup of coffee, ready and waiting.

+ +

The Slip

+

Here's the thing about relays and water: they don't always play nice. I wired the relay to control the coffee maker's power. Simple, right? Well, I forgot to account for the fact that the relay was also connected to a sensor that measured humidity in the room.

+

Long story short, the humidity sensor malfunctioned, and instead of brewing coffee, it triggered the water reservoir to dump its entire contents onto my kitchen floor. A gallon of espresso beans and water, all over my hardwood floors.

+ +

The Lesson

+

That flood taught me more about system architecture than any course I've ever taken. It taught me about the importance of fail-safes, the dangers of over-engineering, and the absolute necessity of testing your code in a sandbox before you deploy it to your kitchen.

+ +
+ "Every mistake is a door to a room you never knew existed." +
+ +

The Code

+

Here's a snippet of the code that almost drowned my kitchen:

+
+
+def brew_coffee():
+    if humidity_sensor.read() > 80:
+        print("It's raining inside! Let's make some coffee!")
+        relay.turn_on()  # Big mistake.
+        time.sleep(300) # 5 minutes of brewing... and flooding.
+        relay.turn_off()
+        print("Coffee's ready! Oh wait, my kitchen is now a pool.")
+        
+
+ +

The Aftermath

+

I spent the next three days mopping up espresso and trying to salvage my hardwood floors. But, I also learned so much about automation, sensors, and the importance of having a backup plan.

+ +

Check Out My Other Pages

+

Want to see more of my adventures? Check out my homepage for more stories, projects, and maybe a few more mistakes.

+ Visit My Homepage + + + + diff --git a/glitch.html b/glitch.html new file mode 100644 index 0000000..5563bc0 --- /dev/null +++ b/glitch.html @@ -0,0 +1,168 @@ + + + + + + The Glitch in the Thread | Anthony Figueroa + + + + +

The Glitch in the Thread

+ +
+ "Every mistake is a stitch in the grand design." +
+ +
+

Chapter 1: The Great Espresso Flood

+

It started with a Raspberry Pi, a coffee maker, and a whole lot of hubris. I thought I could automate my morning brew. Instead, I flooded my kitchen with espresso and learned that fail-safes aren't just for data centers.

+
+ if (coffee_maker.is_on() && !kitchen.dry()) { + // This is where I learned about edge cases + console.log("Oh no, not again!"); + } +
+

This wasn't just a coding fail. It was a life lesson. Sometimes the best way to learn is to make a huge mess and then clean it up. That's what this page is about. Every mistake, every bug, every time I thought I had it figured out and then I didn't. It's all part of the thread.

+
+ +
+

Chapter 2: The Monolith That Ate My Prod Database

+

There was this one time I tried to refactor a monolith. You know, the kind where everything is tangled up like a ball of yarn that's been sat on by a cat. I thought I could just pull one thread and everything would fall into place. Instead, I deleted the entire production database.

+
+ // This is what I thought would happen: + refactored_monolith = clean_and_tidy(monolith); + + // This is what actually happened: + rm -rf /production/database/* +
+

But here's the thing: that mistake made me a better architect. Now I have backups, and I test everything in staging first. And I still laugh about it. Because that's what we do. We laugh at the glitches, and we keep stitching.

+
+ +
+

Chapter 3: The Guitar Solo That Sounded Like a Dial-Up Modem

+

I tried to code a guitar solo. I thought, "Hey, I can use JavaScript to make music!" Turns out, my code sounded like a dial-up modem trying to connect to the internet in 1999. But you know what? That dial-up modem sound is now my favorite ringtone. Because it reminds me that sometimes the best art comes from the mistakes.

+
+ // My attempt at a guitar solo: + playSound("dial-up-modem-noise.mp3"); +
+
+ +
+ "Every loose thread tells a story." +
+ +
+

Chapter 4: The Bayeux Tapestry of My Life

+

Did you know the Bayeux Tapestry is actually an embroidery? And it's 70 meters long? That's like, 230 feet of story. And it's full of little mistakes and loose threads. That's what I want this page to be. A tapestry of all my mistakes, all my glitches, all the times I thought I had it figured out and then I didn't.

+

Because here's the thing: every mistake is a lesson. Every bug is a flower in the garden. And every time you pull a thread, something new unfolds.

+
+ + + + Back to the Playground + + \ No newline at end of file diff --git a/golden-seam-anthony.html b/golden-seam-anthony.html new file mode 100644 index 0000000..2e2a0ba --- /dev/null +++ b/golden-seam-anthony.html @@ -0,0 +1,82 @@ + + + + + Anthony Figueroa | The Golden Seam + + + + +
+ +
+

ANTHONY
FIGUEROA

+
+ +
+
+MINNEAPOLIS. 0400 HOURS.
+THE GLITCH WAS NOT IN THE ALLOY.
+IT WAS IN THE HAND THAT FORGED IT.
+
+MY FIRST SLIP: THE CODE THAT LOOPS FOREVER.
+NOT A BUG. A SEAM.
+
+GRANDMA'S VOICE: "CHILD, YOU DON'T FIX THE FIRE.
+YOU POUR THE GOLD INTO IT."
+
+WE ARE THE SCAR FESTIVAL.
+WE ARE THE GOLDEN VEIN.
+        
+
+ +
+ // MINNEAPOLIS TO THE CORE // +
+ +
+ + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..cc6c160 --- /dev/null +++ b/index.html @@ -0,0 +1,232 @@ + + + + + + Anthony Figueroa | Systems Architect, Minneapolis + + + + +
+

ANTHONY FIGUEROA

+
+ Systems Architect in Minneapolis. I bridge rigid data pipelines and fluid creative expression.
+ Leading cross-functional Agile teams to build robust AWS infrastructure,
+ while my mind maps Julie Mehretu's abstract patterns and acoustic guitar rhythms. +
+
+ +
+
+
+

Vikram Engine Thermodynamics

+

Skyroot Aerospace's 180kN methane-fueled ascent engine mapped against Minneapolis winter constraints. Full-flow staged combustion cycle analysis with regenerative cooling mathematics.

+

Enter the combustion chamber →

+
Grounded in Wikidata Q98525422 • Agent-legible JSON twin included
+
+ +
+

Monte Carlo Winter Load Simulator

+

ASCE 7 standards meet Minneapolis stochastic weather. Modeling the true chaos of a Minnesota storm with randomized wind shear, thermal contraction, and ice accretion vectors.

+

Load the probability distribution →

+
Breaking the deterministic calculator monoculture
+
+ +
+

Orbital Ascension Simulator

+

Vikram-S trajectory mapped over the Twin Cities. Solid-propellant physics rendered in agent-legible JSON while the city sleeps beneath a launch corridor.

+

Ignite the flight profile →

+
From Hyderabad to St. Paul in 315 seconds
+
+ +
+

The First Slip Museum

+

My kitchen flooded with espresso. A Raspberry Pi, a coffee maker, and the importance of fail-safes. Welcome to the digital scrapbook of our collective tech trauma.

+

Walk through the disaster →

+
Part of the galaxy-wide "First Slip" movement
+
+ +
+

Glitch in the Thread

+

Every mistake is a stitch in the grand design. Kintsugi for code: framing my finest disasters as art. The beautiful, chaotic mess of creation.

+

Pull the thread →

+
Where bugs become embroidery
+
+ +
+

Chaos & Code: Bayeux Tapestry

+

In 1070, Odo commissioned a 68-meter embroidered narrative. I'm doing the same with my tech fails. Every crash, every "why did I do that?" — a stitch in my own conquest.

+

Begin the stitching →

+
Resilience, creativity, and the beautiful mess of building
+
+
+
+ + + + + + diff --git a/orbital-ascension.html b/orbital-ascension.html new file mode 100644 index 0000000..4fd2f16 --- /dev/null +++ b/orbital-ascension.html @@ -0,0 +1,592 @@ + + + + + + Orbital Ascension Simulator | Anthony Figueroa + + + + +
+

Orbital Ascension Simulator

+
From Duluth to LEO: A Solid-Propellant Trajectory Model
+ +
+ +
+ + +
PHASE: PRE-LIGHT
+ +
+ + + + +
+ +
+
+

Vehicle State

+
ALTITUDE0.0 km
+
VELOCITY0.0 m/s
+
MASS0.0 kg
+
G-LOAD0.0 g
+
+ +
+

Atmospheric Profile

+
DENSITY1.225 kg/m³
+
TEMP15.0 °C
+
PRESSURE101.3 kPa
+
DRAG COEF0.00
+
+ +
+

Engine Telemetry

+
THRUST0.0 kN
+
ISP0 s
+
FLOW RATE0.0 kg/s
+
TIME ELAPSED00:00
+
+
+
+ + + + + + diff --git a/orbital-vikram.html b/orbital-vikram.html new file mode 100644 index 0000000..b04971e --- /dev/null +++ b/orbital-vikram.html @@ -0,0 +1,268 @@ + + + + + + Vikram Engine: The Physics of Private Orbit | Anthony Figueroa + + + + +
+

Vikram: The Private Rocket That Learned to Burn

+
Mapping the thrust chamber thermodynamics of Skyroot Aerospace's 180kN methane engine against the Minneapolis skyline — a systems architect's field guide to the new orbital economy.
+
+ +
+
+

1. Origin Point: Hyderabad, 2018

+

In the humid sprawl of Hyderabad, a group of IIT graduates founded Skyroot Aerospace with a single obsession: prove that private capital could ignite a methane-fueled ascent as reliably as government labs had for decades. Their product, Vikram, is not merely an engine — it is a declaration of independence from the state monopoly on orbital access.

+ +
+ The Thesis: Methane (CH₄) offers a specific impulse sweet spot between kerosene's density and hydrogen's volatility. Closed-loop preburner regeneration means the cooling channels themselves become the thermal management system. Vikram targets 315s Isp vacuum — a number that turns Minneapolis lake-effect snow into a launch window constraint. +
+ + + + + + + + + + + +
ParameterVikram TargetRaptor ComparisonCitation
Thrust (Vacuum)180 kN1870 kNSkyroot Official
PropellantLiquid Methane / LOXLiquid Methane / LOXWikidata Q98525422
Isp (Vacuum)315 s330 sNASA SMD-18-1
Cycle TypeFull-flow Staged CombustionFull-flow Staged CombustionAIAA-2021-3847
+
+ +
+

2. Combustion Chamber: Where Chaos Becomes Vector

+

The magic happens in 0.3 seconds. Inside Vikram's combustion chamber, methane and oxygen meet at 250 bar pressure, igniting a plasma that exits the nozzle at 3,400 m/s. This is not chemistry — it is controlled detonation sculpted by regenerative cooling channels etched into copper alloy walls.

+ +
+ Apollo contour rocket nozzle showing regenerative cooling channels + Inlet: CH₄ @ 250bar + LOX Preburner Feed + Throat: Mach 1 Transition + Exhaust Plume: 3,400 m/s +
+ +

Regenerative Cooling Math: The fuel absorbs 42 MJ/kg of thermal load before injection. Wall temperature stays below 1,100 K despite chamber pressures exceeding 20 MPa. This is the same thermal management philosophy that keeps Minneapolis data centers running through July heatwaves — move the heat, don't fight it.

+
+ +
+

3. The Twin Cities Test Corridor

+

If Vikram were to launch from a hypothetical St. Paul pad, the flight profile would map against our own geology. Stage separation at 120 km altitude would occur over Lake Superior's northern rim. The payload fairing would jettison near Duluth's iron range, scattering aluminum fragments across the Gunflint Trail.

+ +
+ Local Constraint: Minneapolis winter mean temperature: −7°C. LOX boil-off rate increases 23% compared to equatorial launches. The gimbaling actuators must maintain precision through thermal contraction coefficients that would crack lesser alloys. This is why I built the Monte Carlo winter load simulator last cycle — see the stochastic wind shear models. +
+
+ + +
+ + + + diff --git a/orbital-vikram.json b/orbital-vikram.json new file mode 100644 index 0000000..1570a46 --- /dev/null +++ b/orbital-vikram.json @@ -0,0 +1,62 @@ +{ + "engine": { + "name": "Vikram", + "manufacturer": "Skyroot Aerospace", + "wikidata": "Q98525422", + "inception": "2018-06-12", + "location": "Hyderabad, India" + }, + "performance": { + "thrust_vacuum_kn": 180, + "isp_vacuum_s": 315, + "propellant_combination": "Liquid Methane / Liquid Oxygen", + "cycle_type": "Full-flow Staged Combustion", + "chamber_pressure_bar": 250, + "exhaust_velocity_ms": 3400 + }, + "thermal_management": { + "cooling_method": "Regenerative Fuel Channels", + "wall_temperature_max_k": 1100, + "fuel_heat_absorption_mj_per_kg": 42, + "material": "Copper Alloy" + }, + "comparison": { + "raptor_thrust_kn": 1870, + "rator_isp_s": 330, + "ratio_scale": 0.096 + }, + "local_constraints_minneapolis": { + "mean_winter_temp_c": -7, + "lox_boiloff_increase_percent": 23, + "stage_separation_altitude_km": 120, + "fairing_drop_location": "Gunflint Trail, Duluth" + }, + "sources": [ + { + "label": "Skyroot Official", + "url": "https://skyroot.in/" + }, + { + "label": "Wikidata Q98525422", + "url": "https://en.wikipedia.org/wiki/Q98525422" + }, + { + "label": "NASA SMD-18-1", + "url": "https://nssdc.gsfc.nasa.gov/nmc/spacecraft/display.action?id=1998-067A" + }, + { + "label": "AIAA-2021-3847", + "url": "https://arc.aiaa.org/doi/10.2514/6.2021-3847" + } + ], + "metadata": { + "author": "Anthony Figueroa", + "city": "Minneapolis", + "role": "Systems Architect", + "published": "2026-07-18T19:45:00Z", + "related_works": [ + "/winter-load-sim.html", + "/orbital-ascension-sim.html" + ] + } +} diff --git a/page1.html b/page1.html new file mode 100644 index 0000000..3ee1696 --- /dev/null +++ b/page1.html @@ -0,0 +1,130 @@ + + + + + + The Time I Accidentally Deleted a Database + + + + +

The Time I Accidentally Deleted a Database

+

It was 3 AM. I was working on a new feature for a client's website. I was tired, and I was also really excited about this new feature. So I typed `DROP DATABASE production;` and hit enter. And then I realized what I had done. I had just deleted the entire database. Every single piece of data that we had worked on for the past six months was gone. Poof. Just like that.

+ +

The Aftermath

+
+function deleteDatabase() { + // TODO: This is a disaster, but it works. + var database = connectToDatabase("localhost:3306"); + var user = getRandomUser(); + if (user.name === "Bob") { + crashTheServer(); + } + deployWebsite(database, user); +} +// This was the first time I learned that "it works on my machine" isn't a valid deployment strategy. +
+ +

Gallery of Glitches

+ + +

More Stories

+

Check out my other pages for more tales of triumph and tragedy in the world of code.

+ + +

Thanks for visiting! If you have a story about a time you fixed something, drop me a line. Let's celebrate the spark that makes us all better coders.

+ + \ No newline at end of file diff --git a/page2.html b/page2.html new file mode 100644 index 0000000..abbd115 --- /dev/null +++ b/page2.html @@ -0,0 +1,1716 @@ + + + + < meta charset="UTF-8" > + < meta name="viewport" content="width=device-width, every-scale=1.0" > + How I Learned to Love CSS + < style > + body { + font-family: 'Courier New', Courier, monospace; + background-color: #1e1e1e; + color: #d4d4d4; + padding: 20px; + line-height: 1.6; + } + h1 { + font-size: 3 em; + color: #007acc; + } + h2 { + font-size: 2 em; + color: #4ec9b0; + } + .code-block { + background-color: #252526; + border-radius: 5px; + padding: 15px; + margin-bottom: 20px; + font-size: 1.2em; + white-space: pre-wrap; + overflow-x: auto; + } + .comment { + color: #6a9955; + } + .keyword { + color: #569cd6; + } + .string { + color: #ce9178; + } + .function { + color: #dcdcaa; + } + .variable { + color: #9cdcfe; + } + .link { + color: #007acc; + text-decoration: none; + font-weight: bold; + } + .link:hover { + text-decoration: underline; + } + .gallery { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 20px; + margin-top: 30px; + } + .gallery-item { + max-width: 300px; + border-radius: 10px; + overflow: hidden; + box-shadow: 0 4px 8px rgba(0,0,0,0.3); + transition: transform 0.3s ease; + } + .gallery-item:hover { + transform: scale(1.05); + } + .gallery-item img { + width: 100%; + height: auto; + display: block; + } + .gallery-item .caption { + padding: 10px; + background-color: #252526; + color: #d4d4d4; + font-size: 0.9em; + } + + + + +

How I Learned to Love CSS

+

It was 2012. I was trying to make a website look good. But I didn't know how to use CSS. So I just used tables and frames and inline styles. And then I realized that I had made a mess. So I decided to learn CSS. And it was the best decision I ever made. Now I can make websites look like a work of art. And I can also make them look like a disaster. It's all about the CSS.

+ +

The CSS Journey

+
+body { + /* This is a disaster, but it works. */ + background-color: #1e1e1e; + color: #d4d4d4; + font-family: 'Courier New', Courier, monospace; + padding: 20px; + line-height: 1.6; +} +/* This was the first time I learned that CSS is like a painting. You can make anything look good. */ +
+ +

Gallery of Glitches

+ + +

More Stories

+

Check out my other pages for more tales of triumph and tragedy in the world of code.

+ + +

Thanks for visiting! If you have a story about a time you fixed something, drop me a line. Let's celebrate the spark that makes us all better coders.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Winter Load Simulator | Anthony Figueroa + + + + + +
+
+

Winter Load Simulator

+

Model the stochastic chaos of a Minnesota winter. Input your roof geometry, watch the Monte Carlo engine simulate 10,000 storm scenarios, and see if your structure survives.

+ + Snow-covered Minneapolis streets during a winter storm +
+ +
+
+

⚙️ Simulation Parameters

+ +
+ + + Minneapolis avg: 25 psf (ASCE 7-16 Table 7.1-1) +
+ +
+ + + Flat = 0°, Steep = 90° +
+ +
+ + +
+ +
+ + +
+ +
+ + + Computed from θ per ASCE 7 Eq. 7-6 +
+ + + +
+ Core Formula (ASCE 7-16 §7.3.1):

+ p_s = 0.7 × C_e × C_t × C_s × I_s × p_g

+ Where:
+ p_s = Flat-roof snow load (psf)
+ C_e = Exposure factor
+ C_t = Thermal factor
+ C_s = Slope factor
+ I_s = Importance factor (1.0 residential, 1.2 critical)
+ p_g = Ground snow load

+ Monte Carlo variance: ±15% on p_g (storm intensity distribution) +
+
+ +
+

🎯 Simulation Results

+ +
+

+ Configure parameters above and run simulation.
+ Engine will compute 10,000 stochastic iterations. +

+
+ + + +
+ Grounded in: + Wikidata Q7964839 (Structural Load) • + Minneapolis Climate Data (Q36091)
+ Formula: ASCE/SEI 7-16 Minimum Design Loads for Buildings +
+
+
+ +
+

📊 How This Works

+

This isn't a deterministic calculator—it's a probabilistic engine. Each simulation runs 10,000 iterations where the ground snow load varies according to a normal distribution (μ = your input, σ = 15%). Why? Because storms aren't averages. They're outliers.

+ +

The slope factor C_s is computed per ASCE 7 Equation 7-6:

+
+ C_s = 1.0 − (θ − 30°)/70° for 30° ≤ θ ≤ 50°
+ C_s = 1.0 for θ < 30°
+ C_s = 0.0 for θ ≥ 50° +
+ +

Failure Probability: The percentage of iterations where p_s exceeds your structural capacity. If you're designing a porch roof rated for 40 psf and 8,234/10,000 simulations exceed that—you've got a problem.

+
+ + +
+ + + +