restructure correctly, add new features, start working on articles

This commit is contained in:
Rory Hinnen
2026-05-08 09:02:40 -05:00
parent 62c1303bbb
commit 82b40351f0
66 changed files with 311 additions and 106 deletions
+8 -2
View File
@@ -1,3 +1,9 @@
.DS_Store
hinnen/Package.resolved
hinnen/Assets/epubs
Build
.build
Packages
xcuserdata/
DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

+27
View File
@@ -0,0 +1,27 @@
//
// Robots.swift
// IgniteSamples
// https://www.github.com/twostraws/Ignite
// See LICENSE for license information.
//
import Foundation
import Ignite
/// An example custom robots.txt configuration file, blocking certain paths
/// from Google and Bing, and everything from ChatGPT.
struct Robots: RobotsConfiguration {
var disallowRules: [DisallowRule]
init() {
let paths = [
"/wp-admin"
]
disallowRules = [
DisallowRule(robot: .google, paths: paths),
DisallowRule(robot: .bing, paths: paths),
DisallowRule(robot: .chatGPT)
]
}
}
+140
View File
@@ -0,0 +1,140 @@
---
author: Rory Hinnen & Rory Grant
description: Rules for Rebelious Fleet Lists
date: 2026-05-08 08:46
tags: Battlefleet Gothic, Scarus, Rules
published: true
image:
---
# Rebel Fleets
The Rebel fleet rules attempts to model what this fleet will look like and play on the board. Large ships are hard to come by. Older ships are brought out of mothballs, cleaned of any chaotic taint, and pressed into service. A certain air of desperation clings to the whole enterprise. Playing a rebel list offers the opportunity of pulling ships from the history of the Imperium, but provides unique challenges of maintaining allied relationships and keeping your own people in line.
---
Loyalty in the Imperium can sometimes be a commodity. For every sector that obediently sends its tithe to Holy Terra, there is another that ponders the question, “What’s in it for me?”
And every so often, disobedience blossoms into full fledged insurrection and piracy. After all, if everyone respected the Emperor, there would be no need for the Inquisition.
Sometimes, a Prince will decide it’s time to elevate himself. Or a Governor’s allegiance is no longer to the Imperium, but to himself. Naval officers of a sector will suddenly support their new masters or find themselves orbiting a planet without the benefit of a ship. The resulting fleet will be a motley collection of current ships of the line, auxiliaries, and anything that can be pressed into service from a once loyal sector.
Alliances will be made with less than savory characters. Ships will be pulled out of reserves, cleaned up and pressed gainfully into service. The biggest and best ships will be hard to come by, and will be closely guarded by the new government.
---
# **Special Rules**
## **Stalking Horse**
Allied ships that are part of the fleet don’t have the same level of enthusiasm for the conflict as the rebels. If the Allied ship is crippled (taken half its points in damage) or the overall fleet has lost half its ships, it will begin to consider its options.
Every turn the ship is crippled, or the rebel fleet is at half of its point value or less, roll for leadership. If the roll succeeds, the allies will decide that the battle is no longer in their interest; they will either flee or attack.
Roll on the following table:
1-5: Flee the field - Discretion is the better part of valor, the ship will disengage by the most expedient means available.
6: Attack former comrades - The alliance has collapsed in a flurry of anger and recriminations. The ship will turn on its former allies. The allied ship is now under the control of the opposing player.
## **Paint isn’t Structural**
Don’t feel obligated to maintain a coherent livery with a Rebel fleet. Rebels are not proud about where their ships come from, and are willing to take cast offs, hand-me-downs, or even, shall we say, less than legitimate channels of acquisition. The Arch-magos may complain, but sometimes we have to deploy a ship before all the appropriate consecration of paint has been applied.
---
# **Leadership**
## **Rebel Leader**
You may include one Rebel Leader in your fleet, who must be assigned to the most expensive ship or squadron. If the fleet is worth 500 points or more it must include at least 1 Rebel Leader. Rebel Leaders spend a lot of time keeping their coalition together, and start with -2 leadership.
Rebel Leader +10 pts
The leader gets one re-roll. They can have more re-rolls for the additional cost noted below.
One extra re-roll +20 pts
Two extra re-rolls +40 pts
The vessel carrying the Leader has his personal protective force on board, and gets a +1 against hostile boarding actions. By the same token, it gets a -1 on boarding actions from the rebel ship.
---
# **Ships**
## **0-1 Battleship, Grand Cruiser, Battlecruiser or Heavy Cruiser**
A fleet may include a single Battleship, Grand or Heavy Cruiser from either the Imperial or Chaos list. You may include this ship if you have at least 3 regular cruisers in the fleet.
This ship pulls leadership from the Rebel list.
## **O-1 Allied Ship**
Rebels may make an alliance with a non-Imperial representative. You may include this ship if you have at least 3 regular cruisers in the fleet. The non-Imperial factions are:
* Eldar
* Tau
* Rogue Trader
* Chaos
* Ork Cyclops Cluster Fleet
The Allied ship may not use any of the fleet re-rolls. They are not restricted to nor benefit from the leadership values of the rebel fleet and must use the unmodified leadership from the fleet lists of their respective races.
This ship is under different command from the rest of the fleet, being allied. Because of that, this ship may take any marks or advantages that are typical of that race, and leadership is rolled as that race. Fleet rerolls may not be applied to this ship, and if this ship has rerolls it may not use them for other ships in the fleet.
This ship may not squadron with other ships of the fleet.
This ship is subject to the *Stalking Horse* rules
## **0-12 Cruisers**
Tyrant Class Cruiser 185
Gothic Class Cruiser 180
Lunar Class Cruiser 180
Carnage Class Cruiser 180
Inferno Class Cruiser 180
Murder Class Cruiser 170
Slaughter Class Cruiser 165
Strike Cruiser 145
Endeavour Class Light Cruiser 110
Endurance Class Light Cruiser 110
Siluria Class Light Cruiser 100
Dauntless Class Light Cruiser 110
## **Escorts**
At least half your fleet (in points) needs to be composed of escorts. You may include any number of escorts in your fleet in squadrons of 2-6. Ships should be squadroned by type, unless there are no others of that type, and then it may be squadroned with another.
Idolator class raider 45
Infidel class raider 40
Gladius class frigate 45
Firestorm class frigate 40
Sword class frigate 35
Havoc class frigate 35
Falchion class frigate 35
Hunter class destroyer 40
Cobra class destroyer 30
Iconoclast destroyer 30
Viper class destroyer 35
## **Ordinance**
Any ship with launch bays may choose to have them launch any mix of Fury interceptors and Starhawk bombers. Some ships may carry Shark assault boats at an additional cost. Ships with torpedo tubes are armed with ordinary torpedoes.
---
# **Campaign Rules**
For campaigns, Rebel players are very similar to Imperial players.
Start with a sector. They can take advantage of Refits or Other as an appeal, but Reinforcements are limited to reflect their inability to call upon Imperial resources. Reinforcements are granted on a roll of 6. This represents the difficulty of producing or finding a replacement without the vast resources of the Empire of Man.
## **Eat the Rich**
Rebel players have a campaign option to capture an enemy ship and add it to their roster.
In order to capture a ship, the Rebel ship must initiate what is essentially a specialized boarding action. The damage done by a boarding party is considered to be disabling a system rather than actually destroying it.
The Rebel player must declare that the attack is to disable rather than destroy. Systems that are disabled must be tracked differently than systems that are destroyed in a normal boarding action.
Disabled systems can be rerouted/repaired faster than normal damage. During the damage control phase, the player of a ship with disabled points is able to repair the ship with a d6 roll of 4+.
If a ship is reduced to 0 points, but has at least one disabled point, it is considered captured. The owning player may fire upon a captured ship. Any damage made on a captured ship will convert a disabled point to a destroyed point.
If a captured ship manages to leave the board or survive a conflict, it will be added to the Rebel’s player roster after it is repaired. The Rebel player must expend points to repair the ship, but only damage points. So if a ship has 5 points of damage and 3 points of disabled, only 5 points need to be repaired.
+14
View File
@@ -0,0 +1,14 @@
---
author: Rory Hinnen
description: An overview of the Scarus Subsector,
date: 2026-05-08 08:46
tags: Battlefleet Gothic, Scarus, Fiction
published: true
image:
---
# Subsector Scarus
Subsector Scarus is to the north of Segmentum Terra, in the north east corner of Segmentum Obscurus.
This is the imaginary center of my _Battlefleet: Gothic_ fleets.
In a moment of gamer optimization, this Sector is well represented by the various factions of the 40th Millenia. T'au, Necrons, Eldar Pirates, Imperial, and Chaos can be found in various states of conflict.
+59
View File
@@ -0,0 +1,59 @@
{
"pins" : [
{
"identity" : "ignite",
"kind" : "remoteSourceControl",
"location" : "https://github.com/twostraws/Ignite.git",
"state" : {
"branch" : "main",
"revision" : "31efa5680c2098d2efe849c6ac8ef5a3cb5c8116"
}
},
{
"identity" : "swift-argument-parser",
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-argument-parser.git",
"state" : {
"revision" : "626b5b7b2f45e1b0b1c6f4a309296d1d21d7311b",
"version" : "1.7.1"
}
},
{
"identity" : "swift-cmark",
"kind" : "remoteSourceControl",
"location" : "https://github.com/swiftlang/swift-cmark.git",
"state" : {
"revision" : "5d9bdaa4228b381639fff09403e39a04926e2dbe",
"version" : "0.7.1"
}
},
{
"identity" : "swift-collections",
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-collections.git",
"state" : {
"revision" : "6675bc0ff86e61436e615df6fc5174e043e57924",
"version" : "1.4.1"
}
},
{
"identity" : "swift-markdown",
"kind" : "remoteSourceControl",
"location" : "https://github.com/swiftlang/swift-markdown.git",
"state" : {
"revision" : "7d9a5ce307528578dfa777d505496bd5f544ad94",
"version" : "0.7.3"
}
},
{
"identity" : "swiftsoup",
"kind" : "remoteSourceControl",
"location" : "https://github.com/scinfu/SwiftSoup.git",
"state" : {
"revision" : "6c7915e16f729857aec3e99068c361e58a00ed68",
"version" : "2.13.4"
}
}
],
"version" : 2
}
+2 -92
View File
@@ -1,93 +1,3 @@
# hinnen
# Hinnen.us
## Getting started
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
## Add your files
* [Create](https://docs.gitlab.com/user/project/repository/web_editor/#create-a-file) or [upload](https://docs.gitlab.com/user/project/repository/web_editor/#upload-a-file) files
* [Add files using the command line](https://docs.gitlab.com/topics/git/add_files/#add-files-to-a-git-repository) or push an existing Git repository with the following command:
```
cd existing_repo
git remote add origin https://gitlab.com/rhinnen/hinnen.git
git branch -M main
git push -uf origin main
```
## Integrate with your tools
* [Set up project integrations](https://gitlab.com/rhinnen/hinnen/-/settings/integrations)
## Collaborate with your team
* [Invite team members and collaborators](https://docs.gitlab.com/user/project/members/)
* [Create a new merge request](https://docs.gitlab.com/user/project/merge_requests/creating_merge_requests/)
* [Automatically close issues from merge requests](https://docs.gitlab.com/user/project/issues/managing_issues/#closing-issues-automatically)
* [Enable merge request approvals](https://docs.gitlab.com/user/project/merge_requests/approvals/)
* [Set auto-merge](https://docs.gitlab.com/user/project/merge_requests/auto_merge/)
## Test and Deploy
Use the built-in continuous integration in GitLab.
* [Get started with GitLab CI/CD](https://docs.gitlab.com/ci/quick_start/)
* [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/user/application_security/sast/)
* [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/topics/autodevops/requirements/)
* [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/user/clusters/agent/)
* [Set up protected environments](https://docs.gitlab.com/ci/environments/protected_environments/)
***
# Editing this README
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.
## Suggestions for a good README
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
## Name
Choose a self-explaining name for your project.
## Description
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
## Badges
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
## Visuals
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
## Installation
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
## Usage
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
## Support
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
## Roadmap
If you have ideas for releases in the future, it is a good idea to list them in the README.
## Contributing
State if you are open to contributions and what your requirements are for accepting them.
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
## Authors and acknowledgment
Show your appreciation to those who have contributed to the project.
## License
For open source projects, say how it is licensed.
## Project status
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
Website for hinnen.us
+43
View File
@@ -0,0 +1,43 @@
//
// NavBar.swift
// IgniteSamples
// https://www.github.com/twostraws/Ignite
// See LICENSE for license information.
//
import Foundation
import Ignite
/// Displays a global "Social Footer", with each social icon linking to an
/// external site in a new browser tab, demonstrating how to create reusable
/// components with builtIn icons, external links and custom attributes.
struct SocialFooter: HTML {
let icons = [
Image(systemName: "github"),
Image(systemName: "twitter"),
Image(systemName: "youtube"),
Image(systemName: "mastodon")
]
let urlStrings = [
"https://github.com/twostraws",
"https://twitter.com/twostraws",
"https://youtube.com/@twostraws",
"https://mastodon.social/@twostraws"
]
var body: some HTML {
VStack {
HStack {
ForEach(zip(icons, urlStrings)) { (icon, urlString) in
Link(icon, target: urlString)
.role(.secondary)
.target(.blank)
.relationship(.noOpener, .noReferrer)
}
}
}
.margin(.top, .xLarge)
.font(.title2)
}
}
+18
View File
@@ -0,0 +1,18 @@
//
// Version Info.swift
// IgniteSamples
// https://www.github.com/twostraws/Ignite
// See LICENSE for license information.
//
import Ignite
/// Displays the version of Ignite the site was built with and the publishing date.
struct VersionInfo: HTML {
private let dateFormat = Date.FormatStyle().month(.defaultDigits).day(.defaultDigits).year(.twoDigits)
var body: some HTML {
Text("\(Ignite.version) · Updated \(Date.now.formatted(dateFormat))")
.horizontalAlignment(.center)
.foregroundStyle(.gray)
}
}
-9
View File
@@ -1,9 +0,0 @@
.DS_Store
Build
.build
Packages
xcuserdata/
DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc
-3
View File
@@ -1,3 +0,0 @@
# Hinnen.us
Website for hinnen.us