diff options
Diffstat (limited to 'content')
| -rw-r--r-- | content/hire-me/index.md | 24 | ||||
| -rw-r--r-- | content/pyblock/_index.md | 8 | ||||
| -rw-r--r-- | content/pyblock/introduction.md | 111 | ||||
| -rw-r--r-- | content/pyblock/metals/automation-science-pack.png | bin | 0 -> 161508 bytes | |||
| -rw-r--r-- | content/pyblock/metals/final-platform.png | bin | 0 -> 2355571 bytes | |||
| -rw-r--r-- | content/pyblock/metals/index.md | 97 | ||||
| -rw-r--r-- | content/pyblock/metals/water-recycling.png | bin | 0 -> 3663630 bytes | |||
| -rw-r--r-- | content/pyblock/stranded/fawogae.png | bin | 0 -> 4947802 bytes | |||
| -rw-r--r-- | content/pyblock/stranded/index.md | 166 | ||||
| -rw-r--r-- | content/pyblock/stranded/landing.png | bin | 0 -> 4176116 bytes | |||
| -rw-r--r-- | content/pyblock/stranded/soil-processing.png | bin | 0 -> 6134376 bytes | |||
| -rw-r--r-- | content/pyblock/stranded/victory.png | bin | 0 -> 176334 bytes |
12 files changed, 391 insertions, 15 deletions
diff --git a/content/hire-me/index.md b/content/hire-me/index.md index 5d9e003..586cc50 100644 --- a/content/hire-me/index.md +++ b/content/hire-me/index.md @@ -1,9 +1,9 @@ --- title: Hire Me -date: 2023-02-07T09:21:26-0500 +date: 2025-12-11T13:23:00-0400 --- -I've been a professional software developer since the early 2000s and an enthusiastic amateur even longer, and a manager of developers since 2019. I'm also deeply interested in organizational dynamics and group consensus: software, like ourselves, lives in a society, and both serves the needs of and serves to help shape that society. +I've been a professional software developer since the early 2000s and an enthusiastic amateur even longer. I was also, for a while, a manager of developers. I'm deeply interested in organizational dynamics and group consensus: software, like ourselves, lives in a society, and both serves the needs of and serves to help shape that society. I'm always interested in hearing from people and organizations that I can help, whether that means coming in for a few days to talk about end-to-end testing or joining your organization full-time to help turn an idea into reality. @@ -21,31 +21,25 @@ Major projects I contributed to include a declarative policy engine to allow dev ## Ada Support (2022-2023) -As an engineering manager at Ada, I lead a team of engineers to build an internal platform for chat applications. Our goal was to enable growth into new markets, by making it possible to extend Ada's product in novel ways based on the needs of new customers. +As an engineering manager at Ada, I led a team of engineers to build an internal platform for chat applications. Our goal was to enable growth into new markets, by making it possible to extend Ada's product in novel ways based on the needs of new customers. -During my tenure the team set out on building an event processing system based on Kafka, intended to decouple the company's in-house chat frontend from the response generation services and to become the common interface for other customer service platforms, so that Ada could intervene to assist customers via email, phone, and other services our customers might already be using. +During my tenure, the team set out on building an event processing system based on Kafka, intended to decouple the company's in-house chat frontend from the response generation services and to become the common interface for other customer service platforms, so that Ada could intervene to assist customers via email, phone, and other services our customers might already be using. ## Heroku/Salesforce (2015-2022) -In my time with Heroku (and with Salesforce, Heroku's parent organization), I've contributed to the delivery and operation of services that let developers bring their ideas to life on the internet, both as a developer and as a manager. I've been involved in maintaining and expanding existing features, exploring and developing new products, and in cultivating my peers and my team as people and as developers. +In my time with Heroku (and with Salesforce, Heroku's parent organization), I contributed to the delivery and operation of services that let developers bring their ideas to life on the internet, both as a developer and as a manager. I was involved in maintaining and expanding existing features, exploring and developing new products, and in cultivating my peers and my team as people and as developers. -* As an engineering manager (2018 to 2022), I've been responsible for building and supporting an effective, unified team across multiple continents. Moving into management was motivated by a desire to act as a force multiplier, which I've brought to life through coaching, process management, facilitating ongoing discussions about the direction and health of the team, and through actively being involved in my reports' progress as developers. - - Each of the teams I've worked on has been responsible for both developing and operating a mature product, delivered at scale via the internet, to a diverse range of customers. My team has served everyone from single developers working on hobby projects all the way up to billion-dollar enterprises who selected Heroku as their platform of choice for the enterprise. - - Those teams have been comprised of everything from unique, hard-to-replace domain experts to interns on their first outing. In order to organize and lead, I take a disciplined approach to communication, emphasizing clarity and empathy. I provide as much flexibility around scheduling as the organization can spare, to enable my teams to work when they're at their best. And, as my team's ambassador to the organization, I gather up the disparate and sometimes highly-speculative streams of work in flight to present as a coherent roadmap against organizational goals. - - I've also been responsible for the huge range of work that Salesforce expects from line management, including performance management and coaching, compensation planning, hiring and interviewing, balancing on-call schedules against burnout and retention risks, and skilling up the team to handle the parts of all of these processes that can be delegated, while keeping their time free to do the things they're good at as much as is possible. +* As an engineering manager (2018 to 2022), I was responsible for building and supporting an effective, unified team across North and South America and Europe. Moving into management was motivated by a desire to act as a force multiplier, which I practiced through coaching, process management, facilitating ongoing discussions about the direction and health of the team, and through active investment in my reports' progress. * As a lead developer (2015-2018), I worked on the [Heroku build system](https://devcenter.heroku.com/articles/git), which ingests code from end users and deploys that code to applications running on the Heroku platform. As part of that work, we implemented a number of features to control abuse, support language-specific features and needs, and to develop [new ways to deploy code](https://devcenter.heroku.com/articles/build-docker-images-heroku-yml) to Heroku. ## FreshBooks (2009-2014) -During the five years I was with the company, it grew from a 20-person one-room organization to a healthy, growing two-hundred-person technology company. As an early employee, I had my hand in many, many projects and helped the development team absorb the massive cultural changes that come with growth, while also building a SaaS product that let others realize their dreams. Some highlights: +While I was with the company, it grew from a 20-person one-room organization to a healthy, growing two-hundred-person technology company. As an early employee, I had my hand in many, many projects and helped the development team absorb the massive cultural changes that come with growth, while also building a SaaS product that let others realize their dreams. Some highlights: -* As the team's database administrator, I was responsible for balancing concerns about reliability and availability against the need to deliver new services and functional improvements for customers. Alongside the operations team, I handled capacity planning, reliability, outage planning, and performance monitoring. Alongside the development team, I was responsible for designing processes tooling and providing advice on the most effective ways to use MySQL to accomplish their goals. +* As the team's database administrator, I was responsible for balancing concerns about reliability and availability against the need to deliver new services and functional improvements for customers. Alongside the operations team, I handled capacity planning, reliability, outage planning, and performance monitoring. Alongside the development team, I was responsible for designing processes, tooling, and expertise on the most effective ways to use MySQL. -* As an ops toolsmith, I worked extensively on deployment automation and standardizing process for internal services. I created a standard development VM to ensure developers had an environment consistent with reality, I automated packaging and rollout to testing servers, I explored options around platform-as-a-service products to look for fit, and more. As part of this work, I built training materials and ran sessions to teach other developers how to think like a sysadmin, covering Linux, Puppet, virtualization, and other topics. +* As an ops toolsmith, I worked extensively on deployment automation and standardizing process for internal services. I created a standard development VM to ensure developers had an environment consistent with reality. I automated packaging and rollout to testing servers. I explored options around platform-as-a-service products to look for fit. As part of this work, I built training materials and ran sessions to teach other developers how to think like a sysadmin, covering Linux, Puppet, virtualization, and other topics. ## Contact Me diff --git a/content/pyblock/_index.md b/content/pyblock/_index.md new file mode 100644 index 0000000..d1e7179 --- /dev/null +++ b/content/pyblock/_index.md @@ -0,0 +1,8 @@ +--- +title: PyBlock Hard Mode +draft: true +--- + +A loosely-annotated playthrough of one of the most infamously difficult [Factorio] mods. + +[Factorio]: https://factorio.com diff --git a/content/pyblock/introduction.md b/content/pyblock/introduction.md new file mode 100644 index 0000000..7017416 --- /dev/null +++ b/content/pyblock/introduction.md @@ -0,0 +1,111 @@ +--- +title: Introduction +date: 2026-01-01T13:57:41-05:00 +draft: true +--- + +Welcome to PyBlock Hard Mode. + +<!--more--> + +## Background + +Factorio is a game of industrial colonialism. The player arrives in a pristine wilderness near profuse natural resources, with a minimum of equipment and no way to return, and is tasked with building their way up from stone furnaces and hand-gathered fuel to a spacecraft capable of returning them to their home. In the Space Age expansion, gameplay continues, with the player then tasked with colonizing and industrializing a series of other planets in the same solar system, before fleeing the solar system in a starship of their own construction. In the course of this endeavour, the player must also deal with the native flora and fauna, displacing or exterminating anything that gets in their way. + +The game has a goal (build a spaceship and go home), but it's an open secret that the game is "meant" to be played endlessly. The game provides a number of infinite goals to pursue, and pursuing those goals rather than completing the game leads to continuing work to expand the factory (or factories) and to solve new problems. That's fun in its own right. + +The game presents a highly-polished but also very simplified manufacturing process, whose key steps are + +* Resource extraction, using mines, water pumps, and pumpjacks to produce raw ores, water, and crude oil; +* Smelting, using furnaces to convert raw ores into basic materials like iron and copper; +* Manufacturing, using generic assembler buildings, plus a small collection of specialized buildings, to convert basic materials into more complex products; +* Research, using labs to convert the final products of manufacturing into further upgrades, new recipies, and other ways to expand the factory; +* Logistics, ranging from mechanical arms to conveyor belts to cars and trains to move goods from where they're made to where they're needed, +* Rocketry, using rocket silos and landing pads to send goods to orbit and retrieve the results; and, finally, +* Military, using finished goods to force native creatures ("biters") out of their territory so that the player can extract and exploit the resources they were obstructing. + +Even in a simplified form, a normal Factorio playthrough is expected to take tens of hours. Speedruns for the base game clock in at a bit over an hour, and for the expansion, at six to eight hours. It's not uncommon for players to take hundreds of hours if they play more slowly, or if they're working on a particularly large base. + +Progress through the game is marked both by research, mentioned above, and by qualitatively distinct gameplay phases where the player's capability to manipulate the world around them grows substantially. Initially, the player must make and place every item by hand, mining the raw resources themselves if necessary. Most players progress to automating _manufacturing_ of basic items like belts and assemblers, but then must walk to collect them and place them. The player's inventory and walking speed are then augmented with powered armour and with vehicles, before being rendered almost entirely irrelevant once the player sets up construction and logistics robots that can place things in the world _en masse_ from player-designed blueprints or by copying existing designs. By the end of the game it's very common for players to spend nearly all of their time in the map view, ignoring their character entirely in favour of directing automatic systems. + +## Pyanodons + +Pyanodons is a [collection of mods][pymods] to the game, intended to add complexity and _drastically_ slow the growth of the player's capabilities. Each mod replaces some set of manufacturing steps with a much larger process, often using more specialized buildings and generating byproducts that must be handled for production to continue. They also add entirely new production chains, dealing with things like alien life, that are structurally unlike anything in base Factorio. The mods can be used individually, but they're at their most interesting when used together. + +[pymods]: https://mods.factorio.com/user/pyanodon + +As an illustration, consider the basic transport belt, used in the thousands to move items around the player's factory. Assuming that the player has access to iron and copper ores, the process for producing conveyor belts in vanilla Factorio is: + +1. Smelt 3 iron ore to make 3 iron plates. This process happens in furnaces, and will either consume a small amount of fuel (usually coal, which is a raw resource to be mined), or, later in the game, electrical power. +2. Convert 2 iron plates into 1 iron gear wheel. This process happens in assemblers, or in the player's inventory; when done in an assembler, it takes a small amount of electricity. +3. Convert the remaining 1 iron plate and the 1 iron gear wheel into 2 tiles of transport belt. + +This process consumes very few resources and is easy to both memorize and implement. Automating belts is often one of the player's first automation projects once they've set up iron smelting. + +By comparison, the same process in Pyanodons is: + +1. Smelt 40 iron ore to make 5 iron plates. This process happens in a furnace, which will burn fuel and may produce fuel byproducts, such as ash. Electric smelting is an option, and is available much earlier than in vanilla, but it consumes dramatically more power and specialized buildings. +2. Convert 2 iron plates into 4 iron sticks. This process happens, initially, in a _burner_ assembler, which also consumes fuel and produces fuel byproducts. +3. Convert 4 iron sticks into 4 iron bolts. This is, again, done in a burner assembler, so that also requires fuel and byproduct removal. +4. Convert 2 iron plates into 2 iron gear wheels. This requires another burner assembler, with the associated infrastructure. +6. Smelt 16 copper ore to make 2 copper plates. As above, this either consumes fuel and produces fuel byproducts, or happens in expensive and specialized electric furnaces. +7. Convert 2 copper plates into 4 copper cables in a burner assembler. +8. Convert 3 iron bolts, 3 copper cables, and 1 iron gear wheel into 1 small parts in a burner assembler. This leaves 1 copper cable and 1 iron bolt unused, which can be either output as byproducts or buffered and reused. +9. Convert 1 small parts and 1 iron plate to 2 tiles of transport belt. + +Most obviously, this is a longer process with more steps. Many of those steps also require additional inputs (fuel, in this case) or generate additional outputs (frequently ash). These amounts are _low_ - assemblers can be reasonably hand-fed fuel early on, and ash removal doesn't need to be automated right away either - but they do need to be accounted for or the process will stop. It can also be done in the player's inventory, as with vanilla, in which case it requires no fuel and produces no byproducts, but the player themselves must deal with the excess bolts and cables somehow. Finally, the process consumes drastically more raw resources - 36 iron ore and 12 copper ore on average, to vanilla Factorio's 3 iron ore per belt. + +This is characteristic of Pyanodons approach to difficulty and is one of the simplest examples. The result is a _very_ slow gameplay pace. Where vanilla Factorio or Space Age is expected to take tens of hours on average, Pyanodons runs are expected to take around a thousand hours. Amenities that players rely on very early in Factorio, like conveyor belt splitters, are locked behind research and production chains with tens of steps. More capable logistics technologies, like trains, are similarly delayed. The mods use this to force the player to come up with alternatives to Factorio's most common design solutions. + +Unlike baseline Factorio, Pyanodons acknowledges that the real goal is to grow the factory: its victory condition is not escape, but rather the completion of the "Pyrrhic Victory" research target, at the far end of its sprawling research system. The player's character never notionally escapes; the factory is where they'll live forever. + +While Pyanodons ultimately amplifies the game's industrial excesses, it often tones down the colonial excesses. The mod pack was not designed with biters in mind, and early ammunition production is a major tax on iron-related industry. The documentation recommends turning biters off (and pollution, since it primarily serves to drive biter-related game loops and is fairly CPU-intensive for large bases). PyBlock, described below, doesn't generate biter nests by default either. + +## PyBlock + +Pyanodons is not the only increased-difficulty mod collection. An earlier set of mods, collectively known as [Angels] and [Bobs], implemented a similar set of ideas, though at a less-extreme difficulty and complexity. Players rapidly observed that Angels and Bobs allowed players to produce infinite resources (very slowly) using only water and air as inputs, which lead to the creation of the [Sea Block] mod, formalizing this idea by starting the player in an infinite ocean without any normal resources to find and challenging them to complete the game from there. (The name comes from a Minecraft mod with [a similar premise][skyblock]). + +[Angels]: https://mods.factorio.com/user/arch666angel +[Bobs]: https://mods.factorio.com/user/bobingabout +[Sea Block]: https://mods.factorio.com/mod/SeaBlock +[skyblock]: https://skyblock.net + +PyBlock takes the same observation and applies it to Pyanodons, instead of Angels and Bobs. The player is dropped into an open ocean or on a lonely and resource-minimal island with a small collection of starting resources, and challenged to complete the same Pyrrhic Victory research. PyBlock is considered extremely hard even within Pyanodons' own community. To the best of the game's Discord community's knowledge, a single-digit number of people have ever fully completed it as of this writing. + +PyBlock patches over some things that a normal Pyanodons run would require that are impossible to bootstrap without ores. For example, PyBlock adds early-game burner versions of several key buildings, including soil extractors and destructive distillation columns, that run slowly and inefficiently off of fuel or steam power rather than requiring electrical power, so that the player can make the resources to _set up_ their initial electrical network without having to have one already established. However, those affordances are invariably small and awkward to work with, and make difficult tradeoffs in return for being available early on. + +## Hard Mode + +[Pyanodons Hard Mode][hard mode] is an optional additional mod to Pyanodons, usable in PyBlock, which makes it much harder for the player to automatically destroy unwanted fluids and gasses. _Many_ processes in Pyanodons produce these as byproducts: for example, washing soil to produce sand or stone also produces muddy water as a byproduct. In normal Pyanodons, you can route unused muddy water into a sinkhole to get rid of it. In Hard Mode, you can't - it has to be processed somehow. + +[hard mode]: https://mods.factorio.com/mod/pyhardmode + +To compensate for this, the mod adds a number of additional processes that take common fluid byproducts as inputs and _do something_ to them. The Hard Mode process for dealing with muddy water, for example, recovers some water and soil from it, though not in the ideal ratio for further washing. The excess water can then either be reused or thrown into a sinkhole freely, while the soil can be routed back into the soil-washing process' input to be processed again. + +Hard mode also makes several changes to container sizes, logistics, power generation, and resource processing, all with the aim of making the already-quite-difficult Pyanodons mods even more challenging. + +## Goals + +I'm not personally aware of anyone completing a Pyblock Hard Mode run. I'm not at all convinced _I'm_ going to complete the game this way - and that's not my goal. Instead, I want a project I can tinker with when I'm bored, and which will motivate me to write more. I also want to climb this particular virtual mountain more or less "because it's there." + +I will be journalling a Pyblock Hard Mode run more or less whenever the whim takes me. I'm going to do my best to document the most important steps and observations along the way. This won't be a guide or a spoiler, but the lessons I learn about the game will be documented as clearly as I can in the hopes of helping others through the mod, and I won't be marking spoilers. + +I'll be playing with a few optional "quality of life" mods to take the edge off the parts of Py Hard Mode that I find the least interesting. The key ones are: + +* [Enable all Feature Flags](https://mods.factorio.com/mod/enable-all-feature-flags), specifically so that I can use the game's spoilage mechanic. Pyanodons adds several "interesting" spoilable resources, including most radioactive compounds (clever!) and the native flora needed to build the first science packs. +* [AAI Loaders](https://mods.factorio.com/mod/aai-loaders), which is a recommended optional addon to Pyanodons Hard Mode. A "loader" is a building that allows a belt to be fed directly into a building, rather than having items moved individually between belts and buildings by inserters. The Py Hard Mode mod description notes that it "adds loaders, but at what cost" and I'm excited to find out about that. +* [Inserter Configuration](https://mods.factorio.com/mod/Inserter_Config), which allows bent inserters and controlling where an inserter drops its outputs. This also allows inserters to run at noticably higher throughput if they're not rotating through a full 180°, though the game's inserter throughput limits will still be a significant factor. +* [Recipe Book](https://mods.factorio.com/mod/RecipeBook), which provides a more comprehensive and more configurable view of the multitude of recipes and processes than the built-in Factoriopedia feature allows. +* [Updated Construction Drones - Forked](https://mods.factorio.com/mod/Construction_Drones_Forked), which adds a small number of construction robots to the player's starting inventory. These robots, unlike vanilla construction drones, are restricted to the ground, and must be able to find an open path to their destination. I'm long past the point where placing every last item by hand is interesting, so this will take the edge off of early construction, and they'll also make moving and removing foundation easier. I can't make more bots until I can make simple circuits, and I don't intend to make more then, either. +* [Even Distribution](https://mods.factorio.com/mod/even-distribution), to make hand-feeding buildings in the early game less tedious. +* [Factory Planner](https://mods.factorio.com/mod/factoryplanner), to sketch out production chains before building them. However, based on past experiences I probably won't be relying on this that heavily, as it tends to bait me into over-building my infrastructure and requires a lot of babysitting to make sure it understands how Pyanodons' alien life recipes work. +* [Rate Calculator](https://mods.factorio.com/mod/RateCalculator), because doing arithmetic to work out the throughput of a block of buildings is a bad use of my time. +* The built-in Elevated Rails mod. + +I may add or remove mods as I go. + +I'll be using the Pyblock Classic start, which places the player on a single tile of foundation. There's no starting island, and there are no ore patches to harvest. Any resources I will need will either need to come from the seawater, be gathered out of the air, or collected from the litter floating on the ocean's surface. + +I'll be preserving the crashed ship from the game start. Even the most grotesque industrial excesses needs a human touch somewhere. + +Wish me luck. diff --git a/content/pyblock/metals/automation-science-pack.png b/content/pyblock/metals/automation-science-pack.png Binary files differnew file mode 100644 index 0000000..2655ebb --- /dev/null +++ b/content/pyblock/metals/automation-science-pack.png diff --git a/content/pyblock/metals/final-platform.png b/content/pyblock/metals/final-platform.png Binary files differnew file mode 100644 index 0000000..be21d1c --- /dev/null +++ b/content/pyblock/metals/final-platform.png diff --git a/content/pyblock/metals/index.md b/content/pyblock/metals/index.md new file mode 100644 index 0000000..3f6ab64 --- /dev/null +++ b/content/pyblock/metals/index.md @@ -0,0 +1,97 @@ +--- +title: Metals +date: 2026-01-01T22:10:39-05:00 +draft: true +--- + +"A land where the rocks are iron and you can dig copper out of the hills." + +<!--more--> + +Where last we left off, I'd automated Fawogae mushrooms for fuel. Afterwards, I walked away to make dinner, safe in the knowledge that nothing could break down in any way more complicated than running out of fuel or filling up with ash, both of which I was okay with. + +I came back to find that it had stopped because of the new, smaller container inventories created by Py Hard Mode. Fawogae mushrooms had filled up the four slots I allocated to them, and while that made an excellent start on a fuel stockpile, it wasn't enough to fully alleviate my fuel problems, or to start on iron production. + +## Immediate problems + +We're still working towards the Pyrrhic Victory technology, but it's still _very_ far away. In the immediate future, I'm instead contending with: + +* My finite supply of starting iron (presently with 511 sheets remaining). +* My finite supply of starting copper (presnetly with 422 sheets remaining). +* My finite supply of starting lumber (presently with 298 logs). +* My accumulating stockpile of ash, from burning raw coal for fuel. + +The two technologies I recently unlocked provide solutions: Fawogae mushrooms can be atomized to release iron ore, and ash separation can recover copper ore (along with some byproducts) from ash, solving two problems at once. Wood can largely wait, as long as I'm careful about what I use and aggressive about collecting driftwood as it floats near the platform. + +I'm also dealing with a severe lack of landfill, having blown through my starting stockpile. Making more isn't hard, exactly - it's two sand and one stone each and crafts very quickly - but getting the supplies requires burning coal to make steam, and that makes more ash. There's a limit there eventually, even if it's a ways off, until we get ash separation up and running. + +## Cleanup + +The first order of business is more Fawogae mushrooms. The immediate fix is a larger output box, replacing the four-slot wooden chest I had set up with one of the eight-slot iron chests I have from the game start. That will allow the existing plantation to output up to 400 mushrooms, or about an hour and a half of production, before it jams. That doesn't do anything to improve short-term returns, only long-term ones, but it's a start and it does make it easier to AFK from the game if needed. + +The second order of business is a second Fawogae plantation. Since we already have mushrooms, the initial setup is very quick. This does eat into our dwindling iron reserve badly, but we've got enough left to get by. I've got a design in mind for an expandable Fawogae plantation system, but it will require a substantial number of belts, inserters, and power poles, and I just don't have the resources to build it yet. + +The third order of business is to run laps with soil and raw coal, to make more landfill so that I can make room to expand Fawogae production. While that's going on, I've also replaced the outflow behind the muddy water separation washer with a simple tank - which means I now have to empty it by hand periodically, but also means I don't need to relocate the wind turbine to plug it in, at least for now. That also let me reclaim a patch of landfill that was no longer being used. + + + +The fourth order of business is to wire the water supply for soil, stone, and sand washing to a circuit measuring water in the tank, so that it can automatically recycle the water from the muddy water separation stage. This doesn't matter for resource conservation, as water is free, but it frees me up from having to manually flush the output water or from having to use electricity to automatically dispose of it. + +## Iron + +One of PyBlock's additions to Pyanodons is an early, burner-powered atomizer, which can be used to convert Fawogae mushrooms into iron ore. Since Fawogae mushrooms are very cheap to produce and only produce ash as a byproduct, this is a perfect early-game source of iron, in the absence of any deposits to mine. However, they're relatively expensive, using a substantial portion of my remaining iron and copper; building more than one would be potentially game-ending. + +Refining iron is relatively cheap, since I already have raw coal automated. At some point I'll need to move the smelting furnace closer to the atomizer to cut down on running around, but for now I can use it where it is. + +## Ash and copper + +I'm already well over one stack of ash, and need to deal with it. It's not pressing yet, let alone a crisis, but it has the potential. Since I need to wait for more Fawogae harvesting anyways before I can do more work on iron, I'm switching gears and doing copper as well, starting with ash separation. Solid separators, like many Pyanodons buildings, get a Mk 00 variant that runs on steam power, so I'm building yet another iteration of the steam boiler plus production building design that's been serving me well so far. + +The thousand-plus ash I've accumulated quickly sorts down to 78 coal dust (easily burned for fuel), eight iron oxide, and 155 soot - which is further reduced to 120 copper ore, plus a smattering of iron, zinc, aluminum, lead, and nickel, plus six ash to put back into the separator. + +I've played a bit of Pyanodons without the Py Hard Mode mod, and there's a thing going on here where Py Hard Mode makes PyBlock, and specifically only PyBlock, easier. Py Hard Mode reduces raw coal's fuel value from 4 MJ per item to 1.5 MJ per item, meaning that raw coal-powered devices consume nearly three times as much fuel and make nearly three times as much ash. The ash is annoying, but it's also PyBlock's first source of copper ore, and increasing ash production actually saves a bit of time and complexity in expanding early facilities. + +Smelting the copper ore from our first ash run produces enough copper plates to unlock the Automation science pack research. However, it creates new byproducts - four metal ores - that I have no use for and, currently, no way to get rid of. For now, I'll store them in per-product output boxes, but the extremely limited sizes of storage chests means that this is a temporary solution at best. + +## Unlocks + + + +This is Pyanodons' answer to vanilla Factorio's automation science. Like the original, it's an early game research. _Unlike_ the original, it takes four raw materials, an entirely new product, and several intermediates that, for now, can only be hand-crafted. Unlocking automation science and actually automating it are two very separate milestones. + +The Automation science pack technology unlocks a several new buildings: + +* Mk 00 wood processors, which run on steam and can automatically cut logs into wood. +* Flora collectors and Flora cultivators. Flora collectors are used in normal maps, while PyBlock relies on Flora cultivators. Both do the same thing: produce native flora, a spoilable item needed to make automation science packs. +* Labs, which are needed for research. +* Electrically-powered Mk 01 soil extractors, replacing the steam-powered Mk 00 extractors I've been relying on. +* Shunt loaders, which run on steam and allow belts to feed directly into or out of buildings. + +It also provides the recipes for making filled planter boxes and science packs, and for bootstrapping native flora synthesis from Fawogae mushrooms. + +At this point, there are no more trigger technologies immediately available. I have a few directed research options instead, depending on my goals and needs, but as I haven't fully implemented the technologies I have, none stick outs. The cheapest technologies lead in a clear path, however, through coal processing to steel to assembly, and assembly is needed to automate intermediates and science packs, so that's where I'll head next. Making any actual science packs will have to wait until I can start up native flora production. + +The first unlock in that chain, Coal processing 1, requires 12 automation science packs plus a lab to research them in. A lab requires electrical power, and the science packs require native flora. My main concern along the way is running out of logs, as both science packs and power poles require them. + +## Waiting + +At this point, there's not much left to do but wait. Resources are too limited to build anything else, for now. + +Which is surprisingly, actually. Pyanodons has a well-deserved reputation of being a trap for people who overbuild (a habit I have been trying to break as well), but the pace of PyBlock is set up so that if you're standing around waiting, it's usually because of some small number of process bottlenecks that you can invest in, at least in the early game. Py Hard Mode actually makes this more prominent, because of the decreased chest sizes: with smaller buffers, more things fill up if you wait around for too long, so it's usually worth keeping at least your key processes churning if you can. + +In this case, I'm ultimately bottlenecked by Fawoagae mushroom production. With two plantations making 0.14 mushrooms per second, raw coal and iron production are painfully slow. However, I have now automated the resources needed to make more plantations (stone, iron, and copper), leaving only wood as the last limited resource needed to supply them with power. So, it's time to double that again - using the last of my iron chests, in the process. + +This new throughput is still well below the rate at which I can process mushrooms into either raw coal or iron ore, but it helps, and even without waiting, there's still a lot of downtime. + +## Final situation + + + +At this point, I'm no longer at risk of running out of iron or copper. However, exhausting my stockpile would still be a nuisance, as restocking them is a slow process due to the low rates of Fawoage production and limited storage options. + +Logs are still a limited resource. I have 277 left, and there are very few pieces of driftwood left within easy reach. Projects to expand the platform would likely recover a fair bit of additional wood, but even so, I'll have to be careful with my supplies. + +I'm starting to - slowly - accumulate ore for zinc, nickel, lead, and aluminium. I can't process those ores yet, so I'll eventually have to make more space for them. + +Nearly no matter what I want to do next, I will need a source of electricity that's more substantial and more reliable than my solitary wind turbine. + diff --git a/content/pyblock/metals/water-recycling.png b/content/pyblock/metals/water-recycling.png Binary files differnew file mode 100644 index 0000000..9856074 --- /dev/null +++ b/content/pyblock/metals/water-recycling.png diff --git a/content/pyblock/stranded/fawogae.png b/content/pyblock/stranded/fawogae.png Binary files differnew file mode 100644 index 0000000..bb7478a --- /dev/null +++ b/content/pyblock/stranded/fawogae.png diff --git a/content/pyblock/stranded/index.md b/content/pyblock/stranded/index.md new file mode 100644 index 0000000..8f8cbb0 --- /dev/null +++ b/content/pyblock/stranded/index.md @@ -0,0 +1,166 @@ +--- +title: Stranded +date: 2026-01-01T16:30:39-05:00 +draft: true +--- + +"You have crashed on a planet almost completely covered in water." + +<!--more--> + + + +That's where the game begins. With the settings I've chosen, and the mods I have installed, we're stuck on a single tile, floating in the endless ocean. There's some driftwood, seaweed, and fish, and we're near the wreck of a crashed spaceship - which has some starting supplies in it, but is otherwise an inert lump. + +It's pretty entertaining to me to see the graphics of thrown-up dirt from its crash, since it crashed in water. I don't expect Pyanodons' maintainers to change that graphic, though, and we'll put some landfill under it eventually to make it look a bit better. + +## Taking stock + +Taking the items in the crashed ship into account, my starting inventory consists of: + +* 5 iron chests. +* 4 fluid tanks of various sizes. +* 100 tiles of transport belts. +* 50 mechanical inserters. +* 10 construction robots. +* 1,000 tiles of landfill. +* 10 burner mining drills. +* 1 furnace. +* 2 fluid outfalls. +* 500 pistol magazines. +* 250 stone. +* 1 wood. +* 200 logs. +* On1 wind turbine, which can output around half a megawatt but fluctuates wildly. +* 500 copper plates. +* 1,000 iron plates. + +Some of those items are only accessible by placing landfill in order to walk closer to parts of the ship, but landfill is recoverable so that's the first thing I do. + +The floating debris includes logs, seaweed, and fish - none of which spoil, so they're all worth gathering. In principle items can float on the ocean's surface indefinitely, but they move around randomly, and since distant chunks are unloaded to keep CPU time under control, nearby debris will slowly disappear from the game as it moves into chunks that are too far away for me to reach. It all reappears if I move close, but that requires landfill. + +The mod's goal, eventually, is completing the Pyrrhic Victory research: + + + +However, that research requires thousands of all eleven science packs. We don't have any of those; we'll have to research them first. + +I have the ability to make a few basic supplies, if I have the resources to do so: + +* Wooden crates. +* Transport belts and underground belts. +* Mechanical inserters, which are very slow but require no fuel or power to operate. +* Small power poles. +* Pipes and underground pipes. +* Construction drones. +* Stone bricks. I'll need a furnace, though - I can't make them by hand. +* Landfill. +* Boilers and steam engines. +* Burner mining drills. +* Water pumps. +* Stone furnaces. +* Mark 00 soil extractors, destructive distillation columns, and washers. +* Iron gear wheels, iron rods, copper cables, bolts, and small parts. All of the intermediates needed for early production, in other words. +* Soil, either from water or from muddy water. That needs a Washer. +* Raw coal, from something called a Fawogae mushroom. That needs a destructive distillation column. +* Rocks and sand, from soil, in a washer. This produces muddy water as a byproduct. +* Coal, coal gas, tar, and iron oxide, from wood in a disillation column. +* Spore collectors and fawogae plantations. +* Planter boxes. +* Wood, from logs. + +I have access to a trigger technology, "Early Molecular Decohesion," which will be unlocked automatically if I make 50 raw coal. + +## Immediate problems + +If I use up my starting resources without building a way to make more of them, then that's it - the game is effectively over. Fuel is particularly worrying right now, as nearly everything I could be building is either powered by an internal burner, or is steam-powered. The major exception is Fawogae plantations, which are electric, but that just means burning things somewhere else. However, running out of wood, iron, copper, or stone would all be problems, and running out of landfill would force me to timeshare whatever foundation I already have. + +The trigger technology suggests that the fuel I should be using is raw coal, made from Fawoge. However, I can't make Fawogae mushrooms without two things: + +* Soil, to make a Fawogae plantation, and +* Spores, from a spore collector. + +A spore collector requires a whopping 50 bricks, which will require roasting nearly half of my initial stone. That means I'm going to need a new supply of stone fairly quickly, as well. + +We have no other fuel, so we'll be running the furnace with wood. To make the best possible use of my resources, I'm going to avoid moving the furnace once it's placed, at least until I have Fawogae-based coal synthesis going, to avoid losing the buffered heat energy. + +Making more foundation will require stone, and sand. The initial 1,000 foundation will go quickly - that's only about a 30x30 square. + +## Wood as fuel + +Wood comes in two forms right now: + +* Logs, which have a fuel value of 4 MJ per log, and +* Wood, which has a fuel value of 2 MJ per wood. + +Logs can be broken down into wood by hand, at a 1:5 ratio (four logs creates twenty wood). That means that a log is worth 10 MJ when cut up, as opposed to the 4 MJ it's worth as-is. We'll be using wood, not logs, for our initial fuel. + +Converting wood into coal would raise the energy of the fuel back to 4 MJ per coal, using ten wood to make ten coal - effectively doubling the energy of the fuel, minus the energy needed to perform the converstion. However, the process generates coal gas and tar, and I have no way of dealing with those byproducts yet. Using the burner distillation columns I have would also mean that the process would consume more than 10% of the additional energy generated. + +## Getting to work + +First, I expand the starting platform to give me some room to work. In the resulting space, I set up the furnace and feed it 100 stone, along with some wood to fuel it. While that bakes I collect sea litter for future use. Once it's done, I assemble them into a spore collector. + +Since I'll need soil for Fawogae plantations, for stone washing, _and_ for sand washing, the next item on the list is a starter soil extraction plant. They're large, and require input steam (for power) as well as water, but they can directly output into a chest. That's a good use for my starting chests, at least until I figure out how I want stone and sand production laid out. The soil extractor gets its own tiny, hand-fed steam boiler for now as well: consolidated and centralized power production requires more space and makes navigating around the place harder - pipes are completely impassible. + +Stone and sand are next - but they produce muddy water as a byproduct. It's clear enough how to deal with that, as there's a washer recipe immediately available that separates muddy water into soil and water. Somewhat arbitrarily, I decide to use a single plant to capture the output of both soil and sand processing. For now, the water output of muddy water separation goes back into the ocean: I lack any good way to balance it with water pulled up by pumps. + +Washers, like most Factorio buildings and distinctly unlike soil extractors, require inserters to output their solid products. Fortunately, sand and stone production only have the one product, but the limited throughput of mechanical inserters motivates me to use two, bent inserters, dumping the products into dedicated chests. Their inputs will be hand-fed for now. + +Somewhat unexpectedly, outfall vents - which is what dumps excess water - require power. This is a Py Hard Mode thing; the equivalent Sinkhole in Pyanodons is free to operate. I have a free wind turbine, so I'll use that for now - but we'll need an actual generator soon. + + + +This design is not on-ratio. The two soil-washing plants produce more muddy water than the muddy water separation plant can process. However, it works well enough: backlogs of muddy water cause stone and sand production to slow down until the muddy water is process, and then business goes on. + +The resulting setup means I have a supply of bricks and landfill available, as well as soil for a Fawogae plantation. However, it requires steady feeding with fuel. I've been running log-positive because of the profusion of driftwood, but that supply is very finite and will not last me forever. I need renewable fuel, and soon. + +## Storage limitations + +I almost immediately encountered another Py Hard Mode change. Pyanodons uses vanilla Factorio's container sizes for chests and boxes. Py Hard Mode reduces the stack count dramatically. Wooden chests have four inventory slots. My very finite supply of iron chests each have eight slots. Digging around in recipe book shows that steel chests have been reduced to 20 slots. + +## Fawogae + +Fawogae mushrooms can be made into raw coal by destructive distillation, and I started the game with all of that unlocked. The basic cycle is raw coal into steam to power a spore collector, spores from the spore collector into plantations to make Fawogae, and Fawogae into a distillation column to make raw coal. When this whole process is also running on its own output, it additionally makes ash, since - unlike wood - raw coal produces ash when burned. + +Fawogae plantations initially run _very_ slowly - and won't run at all until you already have a Fawogae mushroom to install in its module slots. This is a recurring motif with agricultural recipes in Pyanodons: the final product also acts like a module, and is necessary for further production. Fawogae's bootstrap mushroom can be made by hand, though: it only requires spores, soil, and an empty planter box. With that one mushroom, it takes around seven minutes for a plantation to make a batch, but each batch is seven more mushrooms, so the plantation quickly converges to the 100 second base time of the recipe. Future plantations can use the harvest from another plantation to skip the bootstrap step. + +Fawogae plantations require power, and I don't really feel ready to set up even a simple power grid, so I relocated the wind turbine to run the plantation. I'll have to relocate it back if I want to make more sand or stone. Making a more capable power grid will require at least some logs and copper, and I'm trying not to burn through my starting supplies of either one too quickly. + +This process becomes self-sustaining, but for the electricity, very quickly. Fawogae mushrooms make raw coal at a 2:5 ratio, and (with Py Hard Mode) each piece of raw coal is a 1.5 MJ fuel source, which can be fed back into power the spore collector and raw coal distillation processes with enough excess to run other things. + + + +At this point, we have an unlimited supply of two things: raw coal for fuel, and landfill (via sand and stone). Making raw coal also gets us through the Early Molecular Decohesion technology quickly. However, we also have a new problem: _ash_. + +Most fuels in Pyanodons produce some kind of byproduct when they're burned. For early-game fuels, that byproduct is ash. Wood and logs burn "clean," but they're the exception and not the rule. Ash stacks to 1,000 items, so it doesn't need to be removed immediately, but anything that burns ashy fuel will eventually stop running if its ash storage fills up. Py Hard Mode amplifies this problem by reducing the fuel value of most early-game raw fuels, meaning that generating power produces more ash than it would in Pyanodons. + +## Unlocks + +The Early Molecular Decohesion technology lets me make a second product out of Fawogae mushrooms: iron ore, in the Mk 00 Atomizer building also unlocked by the technology. + +It also unlocks shunt inserters, which are cheaper to build than mechanical inserters but require a steam power connection. This constraint means I won't be using them much - I rely on Inserter Configuration's support for 90° bent inserters, while shunt inserters' steam passthrough runs perpendicular to their normal operating direction. I can use one or the other, but not both, and it's not quite worth using different inserters for different roles given the infrastructure cost of more steam pipes. + +Finally, it unlocks a second trigger technology: Ash Separation. That technology will unlock itself when we've made 200 units of ash - a process that takes next to no time, as feeding raw coal into the steam boilers powering things on this platform consumes it very quickly, making ash at a 1:1 ratio. + +Ash Separation unlocks the Mk 00 solid separator, which can separate ash into soot, coal dust, and iron oxide. Iron oxide smelts into iron plates at a 2:1 ratio, but each run of ten ash only produces one iron oxide 5% of the time, so it's not a reliable source of iron in the long run - just a byproduct that needs to be handled. Coal dust is an alternate fuel, with the same 1.5 MJ fuel value as raw coal. Soot is the valuable output. + +Ash Separation also unlocks two soot processing recipes. One produces a spread of resources - ores for iron, copper, zinc, lead, aluminum, and nickel, at a random distribution weighted towards iron and copper. The other, however, produces eight copper ore per ten soot, plus a distribution of the other metals. This recipe is, for now, the only way we have of obtaining copper ore. + +Ash Separation unlocks the circuit network, which we haven't yet been using, and a new intermediate: air core inductors, which are made from an iron stick and eight copper cables. They aren't used for anything, yet. + +Finally, Ash Separation unlocks access to the Automation science pack trigger technology, which requires making ten copper plates. + +## Final situation + +Out of our starting resources, I have 512 iron plates, 426 copper plates, and 254 logs remaining. The surplus of logs is from harvesting driftwood, which is starting to become scarce near our platform. + +In addition to the logs, I've collected a small supply of fish and seaweed. + +I now have an unlimited supply of raw coal, which is a versatile, if inefficient, fuel. Burning this fuel makes ash, which is not being processed. + +I now have an unlimited supply of sand and stone. However, disposing of the muddy water byproduct requires moving our wind turbine around to power the outflow temporarily. This also means I have an unlimited supply of landfill with which to expand the platform. + +I now have an unlimited, if slow, supply of Fawogae mushrooms. I'm going to need a _lot more_ Fowagae production to meet my immediate needs, however: a single plantation is only sufficient to provide a trickle of fuel. + +Walkability on the platform is an issue already, but it won't be solved until I can make a lot more foundation. diff --git a/content/pyblock/stranded/landing.png b/content/pyblock/stranded/landing.png Binary files differnew file mode 100644 index 0000000..a653e3f --- /dev/null +++ b/content/pyblock/stranded/landing.png diff --git a/content/pyblock/stranded/soil-processing.png b/content/pyblock/stranded/soil-processing.png Binary files differnew file mode 100644 index 0000000..dcf3b63 --- /dev/null +++ b/content/pyblock/stranded/soil-processing.png diff --git a/content/pyblock/stranded/victory.png b/content/pyblock/stranded/victory.png Binary files differnew file mode 100644 index 0000000..eb27d63 --- /dev/null +++ b/content/pyblock/stranded/victory.png |
