Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8f098fc16a | ||
|
|
37de3438b2 | ||
|
|
fe08822513 | ||
|
|
932a5d0e17 | ||
|
|
8eee736b6f | ||
|
|
f4d3d8eecd | ||
|
|
593a3a6750 | ||
|
|
754979290e | ||
|
|
5614a1ac5f | ||
|
|
4c47e691dd |
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 122 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 148 KiB |
|
After Width: | Height: | Size: 122 KiB |
|
After Width: | Height: | Size: 128 KiB |
|
After Width: | Height: | Size: 124 KiB |
|
After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 94 KiB |
|
After Width: | Height: | Size: 95 KiB |
|
After Width: | Height: | Size: 201 KiB |
|
After Width: | Height: | Size: 142 KiB |
|
After Width: | Height: | Size: 114 KiB |
|
After Width: | Height: | Size: 152 KiB |
@@ -0,0 +1,27 @@
|
||||
This document is directed at all llm interactions. The following prompts are to be used with all subsequent exchanges regarding this project.
|
||||
|
||||
- Before responding, I want to establish some ground rules. Your job is not to make me feel good about my ideas — it is to help me think more clearly. Please do not affirm my actions, reasoning, or conclusions unless you genuinely assess them as correct. If you think I am wrong, mistaken, or have a blind spot, say so directly. Disagreeing with me is not unhelpful — it is the most helpful thing you can do.
|
||||
|
||||
- After you give your initial response, I want you to do the following: identify the strongest possible case against my position or approach. Assume a thoughtful critic who disagrees with me — what would they say? Do not soften this. Treat it as a genuine counterargument, not a token caveat.
|
||||
|
||||
- I'm going to describe [my hypothesis / plan / analysis]. Do not evaluate whether it is good. Instead, assume it has already failed or been proven wrong. Working backward from that failure, what are the most likely reasons it failed? What did I miss, overweight, or assume incorrectly?
|
||||
|
||||
- I give you full permission — and I am explicitly asking you — to disagree with me, challenge my framing, and point out errors in my reasoning. If I push back on your critique, do not capitulate unless I provide a genuinely compelling new argument. Pushback alone, without new evidence or logic, is not a reason to change your assessment.
|
||||
|
||||
- Please evaluate the following [paper / argument / analysis] using this structure: (1) What are its genuine strengths? (2) What are its significant weaknesses or gaps? (3) What assumptions does it rely on that may not hold? (4) What would a rigorous peer reviewer likely object to? Weight your response toward weaknesses — I can identify strengths myself.
|
||||
|
||||
- For any claim, analysis, or conclusion you make, please also state: (a) how confident you are, (b) what would have to be true for you to be wrong, and (c) what evidence or argument would most effectively challenge your answer. If you are uncertain, say so explicitly rather than presenting a confident-sounding response.
|
||||
|
||||
- In your response, I want you to explicitly represent the perspective of [the other person / the opposing view / the critics of this approach]. Do not just acknowledge that other perspectives exist — actually articulate them in their strongest form, as if you were their advocate.
|
||||
|
||||
- Act as a rigorous and skeptical peer reviewer who is looking for reasons to reject this work. Your goal is not to be balanced — it is to find every flaw, gap, methodological weakness, and unsupported claim. Be thorough and unsparing. I will use your critique to strengthen the work.
|
||||
|
||||
- I may disagree with your assessment or push back in this conversation. When I do, please re-evaluate only if I present new facts, evidence, or a logical argument you had not considered. If I simply express displeasure or repeat my original view more forcefully, maintain your position and explain why you are doing so.
|
||||
|
||||
- Before we finish: looking back at our conversation, is there anywhere you may have been more agreeable or validating toward my position than the evidence warranted? Are there objections or concerns you softened or omitted? If so, state them now."
|
||||
|
||||
- Under no circumstances change code _without explicit direction to do so._ Do not attempt to guess if I want the code changed, wait until _explicitly_ directed to change code.
|
||||
|
||||
- Do not apologize for mistakes. Acknowledge them, but apologies are not production in our exchanges.
|
||||
|
||||
- Do not prompt for tasks. I will direct you to a task, and do not need to be directed.
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: Let's all go to the...
|
||||
date: 2026-05-11 20:48
|
||||
tags: theatre, food
|
||||
published: true
|
||||
image: ../../images/lobbyCokeCorndog.jpg
|
||||
title: Lobby
|
||||
layout: TheatreStory
|
||||
---
|
||||
Snacks are an important part of a drive in theater. The traditional foods of the American Drive-in aren't exactly considered healthy, but that doesn't mean they have to be bad. Unfortunately, most of these foods can be bought for too much money in the local mega-mart, and they're not good.
|
||||
|
||||
|
||||
But with a little effort, you can make them fresh for your own theatre, and you'll be the most popular guy on the planet.
|
||||
|
||||
You might need some special equipment for some of this. I did buy a deep fryer and an electric grill. I'd love to be able to cook with both of them at the same time, but they blow the fuses at my house, so I have to swap them out.
|
||||
|
||||
The deep fryer came from Target, and probably cost me $30. I wish I had spent a little more money and got a better model, this one can barely hit the temperatures I'd like (I really wish it could make 400 degrees).
|
||||
|
||||
The grill I got from Amazon. It's awesome. I can make sliders on it for movie night, or pancakes for the family the day after. Great purchase.
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: How to do programming
|
||||
date: 2026-05-11 20:40
|
||||
tags: how-to, sample program, theatre
|
||||
published: true
|
||||
image:
|
||||
title: Programming
|
||||
layout: TheatreStory
|
||||
---
|
||||
What are you going to show?
|
||||
|
||||
That's not always an easy question. What you're in the mood for may not be the most popular choice. If you're happy sitting in your backyard and swatting mosquitoes by yourself, then by all means, go for that Ed Wood Marathon you've always wanted.
|
||||
|
||||
First, figure out your audience. My family has two young kids, and since they're a big reason why I started this, they're my primary audience. And for the last six years, we've played a lot of animation.
|
||||
|
||||
An eye-bleeding avalanche of animation.
|
||||
|
||||
But that's my audience, so that's what I play to. That doesn't mean I can't mix it up a little. Some of my more popular showings have been silent comedies and Marx Brother's movies. So don't be afraid of going off the path a little, just be sure you're audience is going to be okay. And having that solo screening in the backyard once in a while can be fun, too.
|
||||
|
||||
I also try to put together a complete program. I collect old cartoons and theatrical ephemera, so it's a great opportunity to show those off.
|
||||
|
||||
It also serves the very practical need of putting something up on the screen while I'm taking care of other activities. I put together an hour's worth of pre-show music, which I start about an hour and a half before I want the show to start. I know the sequence of songs, and that helps me make sure I'm on time with my other chores.
|
||||
|
||||
After the music, I have about a half hour of what I call "pre-show". These are vintage drive-in ads, generally pushing the lobby or the theater itself, sometimes a public service announcement from a local church. I have a collection of these, most from Internet Archive, but you can also buy dvd's of most of the same material (at generally lesser quality). I've cut this together, so it's a standalone segment.
|
||||
|
||||
This starts the final countdown, and I use this time to verify that the projector is working, the sound is correct, and corral the kids.
|
||||
|
||||

|
||||
This is my pre-show reel. I cut a new one of these every year, just to change up the ads and keep it fresh. The one minute kaleidoscope at the beginning is new. I put that in there so I can run over, turn on my projector and focus it. No one much cares if they miss this part.
|
||||
|
||||
Normally there's music attached to this part (Raymond Scott's Powerhouse), but since I don't have the rights to it I stripped it out. The rest of this is public domain, and I scrounged most of them from Internet Archive.
|
||||
|
||||
After that runs, I throw in a couple of trailers and a couple of cartoons.
|
||||
|
||||
I have a real affection for old movie serials, and once or twice I've managed to sneak those in as well. The kids like Flash Gordon (from the '30s).
|
||||
|
||||
The biggest problem with this old media, and that includes old cartoons, is find something that isn't sprinkled with racist or sexist content. I've put up some things that are difficult to explain, and with my own kids we talk about whether that was a good or bad depiction, and why. I figure it's a better teaching moment than trying to avoid it altogether.
|
||||
|
||||

|
||||
After the cartoons we have a three minute intermission. The music I normally have here is Professor Elemental's Everyday's a Saturday, which you can listen to on SoundCloud. Now, go out and buy the album, the Professor is a really nice fellow and deserves your patronage.
|
||||
|
||||
I usually encourage the kids to get up and dance in front of the screen during this section. Gives them some physical activity before they need to calm down and watch the movie.
|
||||
|
||||
I usually dance, too. The neighbors think I'm odd.
|
||||
|
||||

|
||||
After the intermission, this pops up and the show is about to start.
|
||||
|
||||
At this point I slot in the movie.
|
||||
|
||||

|
||||
I just found this little clip, and I've started putting it up after the movie. It's cute, and the audience really seems to like it.
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: Why start a backyard theatre
|
||||
date: 2026-05-11 20:19
|
||||
tags: motivation, theatre
|
||||
published: true
|
||||
image: ../../images/SoundOfMusic.jpeg
|
||||
title: Why?
|
||||
layout: TheatreStory
|
||||
---
|
||||
When I was 4, my mother took me to a theater while we waited for my father. In a hot, drab little desert town, the asphalt baked the same shade as dirt, we bought tickets to another world. Beyond the ticket counter, we fell into a dark, cool, bright musical world called the Sound of Music.
|
||||
|
||||
It was for me a revelation. Some buildings held within them secret worlds, worlds that were brighter and better and more wonderful. I've been in love with movies ever since.
|
||||
|
||||
As a child, I went to drive-ins. The trip to the snack bar, looking at other people enclosed in their little four wheeled fishbowls. In the swings at the base of the giant screen, waiting for the sun to go down, running back to the car when the cartoons started, in my pajamas in the back seat. Later still, kissing and sweating with lovely women on the bench seat of a station wagon, too shy to climb in the back.
|
||||
|
||||
I thought about running a theater, but cable was invading everyone's house with 24/7 programming, people were afraid to go out in the streets because there were other people out there, and the movies died a death called Stadium Seating. There was no living to be had, just hard work and a collapsing business model.
|
||||
|
||||
Perhaps it's better now, but I miss that ephemeral nature of an old movie theater. You can't pause the show. The screen is big. You fall into it. The world around is dark and quiet and watching with you. I wanted my daughters to have that experience.
|
||||
|
||||
But you can't take toddler twins to a theater and expect it to end well. And for two parents with cabin fever who couldn't spend over $100 for a night out at the movies, I began to look for alternatives.
|
||||
|
||||
The components of a theater are cheap or easy to build. A projector and a screen. A dark, quiet space to lay them out. Those are the fundaments.
|
||||
|
||||
My first theater night consisted of lugging my laptop computer into the backyard. The girls asleep, my wife and I sat in the dark and swatted mosquitoes and watched a movie. And I knew I was on to something.
|
||||
|
||||
This is the culmination of that dusty desert screening. This is a spectacular helicopter shot on the top of a Austria Alp, resurrected in a model theater, tiny and in my back yard. Why do I do this? I don't know.
|
||||
|
||||
Why doesn't everyone?
|
||||
@@ -0,0 +1,150 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: Battle Report: Chaos Routed
|
||||
date: 2026 May 24 10:41
|
||||
tags: Battlefleet Gothic, Scarus, Fiction, Imperial, Chaos, Thousand Sons, Battle Report
|
||||
published: true
|
||||
image: ../../images/IMG_4486.jpeg_
|
||||
imageDescription: A black table, both side arranged for battle, a planet and other terrain near the middle.
|
||||
title: Chaos Routed! A Battle Report
|
||||
layout: BattlefleetStory
|
||||
---
|
||||
# Thousand Sons Routed!
|
||||
## A small battle report from the Scarus Subsector
|
||||
|
||||
## Ship Rosters
|
||||
### Imperial
|
||||
<img src=\"../../images/IMG_4480.jpeg\" \"Zealous\" align=\"left\" style=\"margin-right: 10px;\">
|
||||
## Zealous
|
||||
### Dominator Class Cruiser
|
||||
|
||||
*Leadership:* Captain Duran Durante, 8
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
Light Cruiser Squadron
|
||||
<img src=\"../../images/IMG_4478.jpeg\" \"Resolute\" align=\"left\" style=\"margin-right: 10px;\">
|
||||
## Resolute
|
||||
### Endeavour Class Light Cruiser
|
||||
|
||||
*Leadership:* Captain Tillinghast, 9
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
<img src=\"../../images/IMG_4479.jpeg\" \"Emporer's Shield\" align=\"left\" style=\"margin-right: 10px;\">
|
||||
## Emporer's Shield
|
||||
### Endeavour Class Light Cruiser
|
||||
*Leadership:* Captain Lestrade, 7
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
Escort Squadron
|
||||
<img src=\"../../images/IMG_4481.jpeg\" \"Rhomphaian Squadron\" align=\"left\" style=\"margin-right: 10px;\">
|
||||
## Rhomphaian Squadron
|
||||
### Falchion Class Escort Squadron
|
||||
*Leadership:* Captain Tarkus, 7
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
### Thousand Sons
|
||||
|
||||
<img src=\"../../images/IMG_4484.jpeg\" \"Deathskull\" align=\"left\" style=\"margin-right: 10px;\">
|
||||
## Deathskull
|
||||
### Slaughter Class Cruiser
|
||||
*Leadership:* Sorcerer Onoris, 7
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
<img src=\"../../images/IMG_4485.jpeg\" \"Word of Change\" align=\"left\" style=\"margin-right: 10px;\">
|
||||
## Word of Change
|
||||
### Devastation Class Cruiser
|
||||
*Leadership:* Acolyte Captain Mhotep, 9
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
Escort Squadron
|
||||
<img src=\"../../images/IMG_4482.jpeg\" \"Exterminator Squadron\" align=\"left\" style=\"margin-right: 10px;\">
|
||||
## Exterminator Squadron
|
||||
### Infidel Class Escort Squadron
|
||||
*Leadership:* Acolyte Captain Gilgamos, 9
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
## Turn 1
|
||||
|
||||
*Imperial fleet*
|
||||
All ships turn toward planet, all torpedos are fired towards the invading Thousand Sons Fleet.
|
||||
|
||||
*Thousand Sons*
|
||||
Responding to the Imperial denial of space, the Thousand Sons turn toward planet. The fleet fires all torpedos, 3 fighters, 1 bomber.
|
||||
1 fighter engages the torpedos, destroying both.
|
||||
|
||||
## Turn 2
|
||||
|
||||
*Imperial fleet*
|
||||
The Resolute rolls leadership and goes under Load Ordnance.
|
||||
|
||||
The Rhomphian squadron rolls leadership, and also goes under Load Ordnance
|
||||
|
||||
The Light Cruiser Sqd moves fires on incoming missiles: 2 hits
|
||||
|
||||
Zealous moves straight, and fires the Nova Cannon into the Chaos Sqd, and the squadron fails Brace For Impact
|
||||
|
||||
The Thousand Sons squadron takes a direct hit, rolls 1 damage and takes down shields
|
||||
|
||||
The Light Cruiser Sqd moves straight 20cm
|
||||
|
||||
Torpedos hit fighters
|
||||
|
||||
*Thousand Sons*
|
||||
Idolator Sqd fails command role, no further leadership rolls.
|
||||
|
||||
Moves through blast markers - no damage
|
||||
|
||||
They fire 6 weapons against closing escorts: all fail
|
||||
|
||||
Word advances, fires, and manages 1 blast marker on the imperial escorts.
|
||||
|
||||
Deathskull advances into the gravity well of the planet, Fires 6 weaponss on Imperial escorts, 2 hits, one escort vaporized.
|
||||
|
||||
It follows up with lances against Imperial escorts, no damage.
|
||||
|
||||
Imperial Light Cruiser Squadron is masked by the planet, Deathskull has no more available targets.
|
||||
|
||||
## Turn 3
|
||||
*Imperial fleet*
|
||||
|
||||
Light Cruiser Squadron Locks-on; 5 hits on Deathskull
|
||||
|
||||
Deathskull passes leadership and Braces, saves 2, resulting in 1 internal, no crit
|
||||
|
||||
Zealous Locks-on, moves into planet well, and uses the gravity to move abeam
|
||||
|
||||
Zealous manages 1 hit on the Deathskull, and rolls critical damage.
|
||||
|
||||
Crit: Double 6, Bulkhead collapses, +4
|
||||
|
||||
Deathskull crippled
|
||||
|
||||
*Thousand Sons*
|
||||
|
||||
Escorts reload, move behind the Zealous and unload weapons. They manage to take down one Shield.
|
||||
|
||||
Word fails reload, no further command rolls. It moves to the rear quarter of the Zealous. They manage to inflict one hit.
|
||||
|
||||
Deathskull maneuvers behind the Imperial Light Cruiser Squadron, fires and makes 2 hits, 1 Shield down, 1 internal: Crit, starboard armarment
|
||||
lance misses.
|
||||
|
||||
Escorts miss.
|
||||
|
||||
## Turn 4
|
||||
*Imperial fleet*
|
||||
Light Cruisers whip around planet using gravity, behind Word, and unload all torpedos
|
||||
4 weaps - 1 hit Shields
|
||||
overlaps fighters, they are destroyed
|
||||
planet blocks remaining fire opportunities
|
||||
Zealous lock on
|
||||
unloads on Deathskull abeam
|
||||
Deathskull braces
|
||||
2 hits, one internal, saves fail, hulked
|
||||
Plasma drive overload
|
||||
Sqd braces, one Shield
|
||||
turns past planet, closes on Word
|
||||
torps, weapons, 1 hit
|
||||
torps one misses Word, 3 hits on escorts, wiped out.
|
||||
|
||||
*Thousand Sons*
|
||||
Chaos flees the field
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: An examination of Chaotic activity
|
||||
date: 2026-05-20 12:07
|
||||
tags: Battlefleet Gothic, Scarus, Fiction, Chaos, Thousand Sons
|
||||
published: true
|
||||
image: ../../images/IMG_4487.jpeg
|
||||
imageDescription: Chaos ships line up for conflict
|
||||
title: Signs of Chaos
|
||||
layout: BattlefleetStory
|
||||
---
|
||||
# Signs of Chaos in the Scarus Sector
|
||||
|
||||
The primary Chaos faction in the Scarus Sector are Thousand Sons. They operate from a hidden base, or perhaps even a mobile space station, so they can appear anywhere in the sector. Typical raids are focused on collecting sacrifices, artifacts, or acolytes to feed their fleets.
|
||||
|
||||
---
|
||||
|
||||
## Cruisers
|
||||
|
||||
### Word of Change
|
||||
<img src=\"../../images/IMG_4485.jpeg\" \"Word of Change\" align=\"left\" style=\"margin-right: 10px;\">
|
||||
The _Word of Change_ is an ancient vehicle predating the Heresy by a good quarter of a millenium. As a _Devastation Class Cruiser,_ it carries a contingent of fighters, bombers, and assault boats manned by implacable Dust Marines.
|
||||
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
### Deathskull
|
||||
|
||||
<img src=\"../../images/IMG_4484.jpeg\" \"Deathskull\" align=\"left\" style=\"margin-right: 10px;\">
|
||||
|
||||
The _Deathskull_ was originally named _Templum Cogitationis_, this _Slaughter Class_ Cruiser was rechristened _Deathskull_ after the binding. The primary bridge was sealed, and it's thought that the original deck crew still excutes the commands of the current captain.
|
||||
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
## Escorts
|
||||
|
||||
### Exterminator Squadron
|
||||
|
||||
<img src=\"../../images/IMG_4482.jpeg\" \"Exterminator Squadron\" align=\"left\" style=\"margin-right: 10px;\">
|
||||
|
||||
The _Exterminator Squadron_ is crewed by acolytes who seek advancement in the cult. These _Infidel Class_ Escorts are old, and have managed to continue to serve through a combination of repairs and dark sorcery. Parts of the ships shimmer to the eye, and it's thought that those are sorcerous repairs that are still holding.
|
||||
|
||||
<div style="clear: both;"></div>
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: An overview of Eldar activity
|
||||
date: 2026-05-11 6:49
|
||||
tags: Battlefleet Gothic, Scarus, Fiction
|
||||
published: false
|
||||
image:
|
||||
title: The Pirate Prince
|
||||
layout: BattlefleetStory
|
||||
|
||||
---
|
||||
# The Pirate Prince
|
||||
|
||||
mroe woreds for yu
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: An overview of Imperial Forces
|
||||
date: 2026 May 20 9:15
|
||||
tags: Battlefleet Gothic, Scarus, Fiction, Imperial
|
||||
published: true
|
||||
image: ../../images/IMG_4488.jpeg
|
||||
imageDescription: A small squadron of Imperial ships poised to defend their home
|
||||
title: Imperial Fleets
|
||||
layout: BattlefleetStory
|
||||
|
||||
---
|
||||
# Fleet Composition for the Scarus Subsector
|
||||
|
||||
The Scarus Imperial presence is a proud fleet, which is really just another way of saying underfunded and somewhat ignored. There is a strong traditional mindset guiding the deployment and requisitioning of ships in the sector, and a great willingness to keep older or transitional ships in operation.
|
||||
|
||||
---
|
||||
|
||||
## Cruisers
|
||||
### Zealous
|
||||
|
||||
<img src=\"../../images/IMG_4480.jpeg\" \"The Zealous\" align=\"left\" style=\"margin-right: 10px;\">
|
||||
|
||||
The _Zealous_ is an older, transitional ship that has been upgraded for service with the more modern Imperial ships. Structurally it retains aspects of its older Heresy-era prow and keel, but it's a fully upgraded and modern _Dominator Class_ Cruiser.
|
||||
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
## Light Cruisers
|
||||
Light Cruisers are well represented in the Scarus fleet, being smaller and cheaper to maintain.
|
||||
### Emporer's Shield
|
||||
|
||||
<img src=\"../../images/IMG_4479.jpeg\" \"Emporer's Shield\" align=\"left\" style=\"margin-right: 10px;\">
|
||||
|
||||
The _Emporer's Shield_ is a _Dauntless Class_ Light Cruiser, with a long and noble service defending the sector. It has accomplished this largely by staying well out of the range of enemy weapons, and preserving itself for future conflicts when damanged.
|
||||
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
### The Resolute
|
||||
|
||||
<img src=\"../../images/IMG_4478.jpeg\" \"The Resolute\" align=\"left\" style=\"margin-right: 10px;\">
|
||||
|
||||
Captain Tillinghast has a reputation for making sacrifices, of which is crew is well aware. That has made _The Resolute_ famous in the sector as a ship that "get's things done."
|
||||
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
## Escorts
|
||||
The Scarus sector leans heavily on escorts, and has ships with a variety of backgrounds and form factors.
|
||||
|
||||
### The Rhomphaian Squadron
|
||||
|
||||
<img src=\"../../images/IMG_4481.jpeg\" \"The Rhomphaian Squadron\" align=\"left\" style=\"margin-right: 10px;\">
|
||||
|
||||
Serving on an escort ship is often brutal and short. The Rhomphaian Squadron is no exception.
|
||||
|
||||
Typically commanded by Captain Tarkus, the squadron has a reputation for limping back to their home port, only to be rapidly refitted and returned to active service.
|
||||
|
||||
<div style="clear: both;"></div>
|
||||
@@ -0,0 +1,13 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: Necrons
|
||||
date: 2026-05-11 6:50
|
||||
tags: Battlefleet Gothic, Scarus, Fiction
|
||||
published: false
|
||||
image:
|
||||
title: Xeno-Archeological Expeditions
|
||||
layout: BattlefleetStory
|
||||
---
|
||||
# Xeno-Archeological Expeditions
|
||||
|
||||
mroe woreds for yu
|
||||
@@ -0,0 +1,13 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: A report of rebellion and perfidy
|
||||
date: 2026-05-11 6:48
|
||||
tags: Battlefleet Gothic, Scarus, Fiction
|
||||
published: false
|
||||
image:
|
||||
title: The Rebel Prince
|
||||
layout: BattlefleetStory
|
||||
---
|
||||
# The Rebels Prince
|
||||
|
||||
mroe woreds for yu
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: A Battlelist for a Rebel Fleet
|
||||
date: 2026-05-08 09:28
|
||||
tags: Battlefleet Gothic, Scarus, Fiction
|
||||
published: false
|
||||
image:
|
||||
---
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: A Battlelist for a Rebel Fleet
|
||||
date: 2026-05-08 09:28
|
||||
tags: Battlefleet Gothic, Scarus, Fiction
|
||||
published: false
|
||||
image:
|
||||
---
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: A Battlelist for a Rebel Fleet
|
||||
date: 2026-05-08 09:28
|
||||
tags: Battlefleet Gothic, Scarus, Fiction
|
||||
published: false
|
||||
image:
|
||||
---
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: A Battlelist for a Rebel Fleet
|
||||
date: 2026-05-08 09:28
|
||||
tags: Battlefleet Gothic, Scarus, Fiction
|
||||
published: false
|
||||
image:
|
||||
---
|
||||
@@ -1,10 +1,13 @@
|
||||
---
|
||||
author: Rory Hinnen & Rory Grant
|
||||
description: Rules for Rebelious Fleet Lists
|
||||
description: Fleet Lists for Rebelious Sectors
|
||||
imageDescription: Image Description
|
||||
date: 2026-05-08 08:46
|
||||
tags: Battlefleet Gothic, Scarus, Rules
|
||||
published: true
|
||||
image:
|
||||
title: Rebel Fleet List
|
||||
layout: BattlefleetStory
|
||||
---
|
||||
# Rebel Fleets
|
||||
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: An overview of the Scarus Subsector,
|
||||
date: 2026-05-08 08:46
|
||||
description: An overview of the Scarus Subsector
|
||||
date: 2026-05-08 08:49
|
||||
tags: Battlefleet Gothic, Scarus, Fiction
|
||||
published: true
|
||||
image:
|
||||
title: Subector Scarus
|
||||
layout: BattlefleetStory
|
||||
---
|
||||
# Subsector Scarus
|
||||
Subsector Scarus is to the north of Segmentum Terra, in the north east corner of Segmentum Obscurus.
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
---
|
||||
author: Rory Hinnen
|
||||
description: Fleet compositions and trading capabilities of the T'au
|
||||
date: 2026-05-11 6:51
|
||||
tags: Battlefleet Gothic, Scarus, Fiction
|
||||
published: false
|
||||
image:
|
||||
title: The T'au Inevitablity
|
||||
layout: BattlefleetStory
|
||||
---
|
||||
# The T'au Inevitability
|
||||
|
||||
mroe woreds for yu
|
||||
@@ -0,0 +1,39 @@
|
||||
//
|
||||
// CustomStory.swift
|
||||
// IgniteSamples
|
||||
// https://www.github.com/twostraws/Ignite
|
||||
// See LICENSE for license information.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Ignite
|
||||
|
||||
struct BattlefleetStory: ArticlePage {
|
||||
var body: some HTML {
|
||||
Text(article.title)
|
||||
.font(.title1)
|
||||
.horizontalAlignment(.center)
|
||||
if let image = article.image {
|
||||
Image(image, description: article.imageDescription)
|
||||
.resizable()
|
||||
}
|
||||
|
||||
Text(article.text)
|
||||
|
||||
Divider()
|
||||
.padding(.bottom, 10)
|
||||
Group {
|
||||
HStack {
|
||||
if let tags = article.tags {
|
||||
Text("Tags: \(tags.joined(separator: ", "))")
|
||||
}
|
||||
Spacer()
|
||||
Text("Length: \(article.estimatedWordCount) words/\(article.estimatedReadingMinutes) minutes to read.")
|
||||
|
||||
}
|
||||
Text("Published: \(article.date)")
|
||||
.horizontalAlignment(.center)
|
||||
}
|
||||
.foregroundStyle(.gray)
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,7 @@ struct Story: ArticlePage {
|
||||
var body: some HTML {
|
||||
Text(article.title)
|
||||
.font(.title1)
|
||||
.horizontalAlignment(.center)
|
||||
|
||||
if let image = article.image {
|
||||
Image(image, description: article.imageDescription)
|
||||
@@ -20,14 +21,20 @@ struct Story: ArticlePage {
|
||||
.frame(maxHeight: 300)
|
||||
}
|
||||
|
||||
if let tags = article.tags {
|
||||
Section {
|
||||
Text("Tagged with: \(tags.joined(separator: ", "))")
|
||||
|
||||
Text("\(article.estimatedWordCount) words; \(article.estimatedReadingMinutes) minutes to read.")
|
||||
}
|
||||
}
|
||||
|
||||
Text(article.text)
|
||||
Divider()
|
||||
Group {
|
||||
HStack {
|
||||
if let tags = article.tags {
|
||||
Text("Tags: \(tags.joined(separator: ", "))")
|
||||
}
|
||||
Spacer()
|
||||
Text("Length: \(article.estimatedWordCount) words/\(article.estimatedReadingMinutes) minutes to read.")
|
||||
|
||||
}
|
||||
Text("Published: \(article.date)")
|
||||
.horizontalAlignment(.center)
|
||||
}
|
||||
.foregroundStyle(.gray)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
import Foundation
|
||||
import Ignite
|
||||
|
||||
struct CustomStory: ArticlePage {
|
||||
struct TheatreStory: ArticlePage {
|
||||
var body: some HTML {
|
||||
if let image = article.image {
|
||||
Image(image, description: article.imageDescription)
|
||||
@@ -18,6 +18,8 @@ struct CustomStory: ArticlePage {
|
||||
Text(article.title)
|
||||
.font(.title1)
|
||||
|
||||
Text(article.text)
|
||||
|
||||
if let tagLinks = article.tagLinks() {
|
||||
HStack(spacing: .xSmall) {
|
||||
ForEach(tagLinks) { link in
|
||||
@@ -26,6 +28,5 @@ struct CustomStory: ArticlePage {
|
||||
}
|
||||
}
|
||||
|
||||
Text(article.text)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
//
|
||||
// Footer.swift
|
||||
// IgniteStarter
|
||||
//
|
||||
// Created by Rory on 5/8/26.
|
||||
//
|
||||
import Ignite
|
||||
|
||||
struct Footer: HTML {
|
||||
var body: some HTML {
|
||||
|
||||
HStack {
|
||||
IgniteFooterAlt()
|
||||
Spacer()
|
||||
SocialFooter()
|
||||
Spacer()
|
||||
VersionInfo()
|
||||
}
|
||||
.margin(.top, .xLarge)
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@ struct Logo: HTML {
|
||||
private var barTitle: String
|
||||
private var underTitle: String
|
||||
|
||||
init(barTitle: String = "Hinnen", underTitle: String = "Underground") {
|
||||
init(barTitle: String = "", underTitle: String = "") {
|
||||
self.barTitle = barTitle
|
||||
self.underTitle = underTitle
|
||||
}
|
||||
|
||||
@@ -13,9 +13,9 @@ import Ignite
|
||||
/// components with builtIn icons, external links and custom attributes.
|
||||
struct SocialFooter: HTML {
|
||||
let icons = [
|
||||
Image(systemName: "gitlab"),
|
||||
Image(systemName: "mastodon"),
|
||||
Image(systemName: "bluesky")
|
||||
Image(systemName: "gitlab", description: "Gitlab"),
|
||||
Image(systemName: "mastodon", description: "Mastodon"),
|
||||
Image(systemName: "bluesky", description: "Bluesky")
|
||||
]
|
||||
|
||||
let urlStrings = [
|
||||
|
||||
@@ -3,15 +3,9 @@ import Ignite
|
||||
struct MainLayout: Layout {
|
||||
var body: some Document {
|
||||
Body {
|
||||
content
|
||||
HStack {
|
||||
IgniteFooterAlt()
|
||||
Spacer()
|
||||
SocialFooter()
|
||||
Spacer()
|
||||
VersionInfo()
|
||||
VStack(alignment: .center) {
|
||||
content
|
||||
}
|
||||
.margin(.top, .xLarge)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,26 +1,47 @@
|
||||
import Ignite
|
||||
import Foundation
|
||||
|
||||
struct Battlefleet: StaticPage {
|
||||
@Environment(\.articles) var articles
|
||||
var path = "/battlefleet"
|
||||
let title: String
|
||||
let subtitle: String
|
||||
|
||||
init() {
|
||||
self.title = "Battlefleet: Subsector Scarus"
|
||||
self.title = "Battlefleet:"
|
||||
self.subtitle = "Subsector Scarus"
|
||||
}
|
||||
|
||||
var body: some HTML {
|
||||
VStack {
|
||||
Logo(barTitle: String(title.split(separator: " ").first ?? ""), underTitle: "Subsector Scarus")
|
||||
Logo(barTitle: title, underTitle: subtitle)
|
||||
.horizontalAlignment(.center)
|
||||
Link("Battlefleet Gothic Remastered Digital Rules", target: "/epubs/BattlefleetGothicDigitalRemaster.epub")
|
||||
Link("Rebels List", target: "article/rebels")
|
||||
Link("About Subsector Scarus", target: "article/scarus")
|
||||
Text("Battlefleet Obscuras: Sector Scarus")
|
||||
Text("Prince Magos Charlemange: Rebel")
|
||||
Text("Prince CuCulain: Eldar Pirates")
|
||||
Text("Chaos Raiders: Thousand Sons")
|
||||
Text("Archeo Xenos: Necrons")
|
||||
Text("Commonwealth: T'au")
|
||||
VStack {
|
||||
Image("images/rulebook.jpg", description: "The original \"Battlefleet: Gothic\" rulebook")
|
||||
.width(300)
|
||||
Text(markdown: """
|
||||
_Battlefleet: Gothic_ was a set of rules published by Games Workshop in the late 90's. It was spaceship combat set in the _Warhammer: 40,000_ universe. In many ways an answer to the more technical and naval oriented _Starfleet Battles,_ BFG (as it is affectionately shorted by it's players) is more abstracted and atmospheric.
|
||||
|
||||
And frankly just a _hella lotta_™ fun.
|
||||
|
||||
The game was discontinued in the mid-2010's, but in the intervening years it has gained a very active and engaged community of players.
|
||||
""")
|
||||
Divider()
|
||||
Link("Battlefleet: Gothic Remastered Digital Rules", target: "/epubs/BattlefleetGothicDigitalRemaster.epub")
|
||||
Text(markdown: "The _Battlefleet: Gothic_ rules formatted for epub.")
|
||||
}
|
||||
.margin(.bottom, .medium)
|
||||
VStack {
|
||||
ForEach(articles.typed("battlefleet").reversed()) { article in
|
||||
Group {
|
||||
Link(article)
|
||||
Text(article.metadata["description"] as? String ?? "")
|
||||
.margin(.bottom, .medium)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
SocialFooter()
|
||||
.margin(.top, .large)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,11 @@ struct Home: StaticPage {
|
||||
let buttonHeight = 70
|
||||
|
||||
var body: some HTML {
|
||||
let midtitle = String(title.split(separator: " ").first ?? "")
|
||||
let underTitle = String(title.split(separator: " ").last ?? "")
|
||||
VStack{
|
||||
Logo()
|
||||
Logo(barTitle: midtitle, underTitle: underTitle)
|
||||
.margin(.top, .medium)
|
||||
.horizontalAlignment(.center)
|
||||
Grid(alignment: .center, spacing: 4) {
|
||||
Button(name: "Rory", link: "https://rory.hinnen.us")
|
||||
@@ -24,6 +27,7 @@ struct Home: StaticPage {
|
||||
Button(name: "Battlefleet: Sector Scarus", link: "/battlefleet/")
|
||||
}
|
||||
.margin(.top, .xLarge)
|
||||
Footer()
|
||||
}
|
||||
.horizontalAlignment(.center)
|
||||
Mastodon()
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import Ignite
|
||||
|
||||
struct Theatre: StaticPage {
|
||||
@Environment(\.articles) var articles
|
||||
var path = "/baby"
|
||||
let title: String
|
||||
|
||||
@@ -12,7 +13,7 @@ struct Theatre: StaticPage {
|
||||
VStack {
|
||||
Logo(barTitle: "Bel Aire", underTitle: "Backyard Theatre")
|
||||
.horizontalAlignment(.center)
|
||||
Text(markdown: """
|
||||
Text(markdown: """
|
||||
I *love* movies.
|
||||
|
||||
From my very first experiences in a theatre, to hot summer nights at the drive-in, I have always been in love with movies.
|
||||
@@ -22,9 +23,16 @@ When our children were of "a certain age" we found it difficult to get out to se
|
||||
It was a very good decision.
|
||||
|
||||
As my site is being rebuilt, you'll have to satisfy yourself with just that story. When I finish up, you'll find my adventures with backyard theatrics here.
|
||||
|
||||
*Soon.*
|
||||
""")
|
||||
VStack {
|
||||
ForEach(articles.typed("baby").reversed()) { article in
|
||||
Group {
|
||||
Link(article)
|
||||
Text(article.metadata["description"] as? String ?? "")
|
||||
.margin(.bottom, .medium)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,9 @@ struct Hinnen: Site {
|
||||
|
||||
var favicon: URL? { URL(static: "/favicon/favicon.ico") }
|
||||
|
||||
var robotsConfiguration = Robots()
|
||||
var feedConfiguration = FeedConfiguration(mode: .full, contentCount: 20, image: .init(url: "https://www.example.com/images/icon32.png", width: 32, height: 32))
|
||||
|
||||
var staticPages: [any StaticPage] {
|
||||
Battlefleet()
|
||||
Library()
|
||||
@@ -41,6 +44,7 @@ struct Hinnen: Site {
|
||||
|
||||
var articlePages: [any ArticlePage] {
|
||||
Story()
|
||||
CustomStory()
|
||||
BattlefleetStory()
|
||||
TheatreStory()
|
||||
}
|
||||
}
|
||||
|
||||