diff --git a/content/this-month/2022-11/index.md b/content/this-month/2022-11/index.md
new file mode 100644
index 00000000..4c2c2610
--- /dev/null
+++ b/content/this-month/2022-11/index.md
@@ -0,0 +1,276 @@
++++
+title = "This Month in Rust OSDev: November 2022"
+date = 2022-12-07
+
+[extra]
+month = "November 2022"
+editors = ["phil-opp"]
++++
+
+Welcome to a new issue of _"This Month in Rust OSDev"_. In these posts, we give a regular overview of notable changes in the Rust operating system development ecosystem.
+
+
+
+This series is openly developed [on GitHub](https://github.com/rust-osdev/homepage/). Feel free to open pull requests there with content you would like to see in the next issue. If you find some issues on this page, please report them by [creating an issue](https://github.com/rust-osdev/homepage/issues/new) or using our _comment form_ at the bottom of this page.
+
+We have some new sections this month, we hope you like the content!
+
+
+
+## Infrastructure and Tooling
+
+In this section, we collect recent updates to `rustc`, `cargo`, and other tooling that are relevant to Rust OS development.
+
+### UEFI Targets are now Tier 2
+(Section written by [@nicholasbishop](https://github.com/nicholasbishop))
+
+The [MCP to raise the three UEFI targets to tier 2](https://github.com/rust-lang/compiler-team/issues/555) by [@dvdhrm](https://github.com/dvdhrm) was recently approved.
+Following that we merged a PR to [dist builds of the UEFI targets](https://github.com/rust-lang/rust/pull/103933) so that you can install them via rustup (e.g. `rustup target add --toolchain nightly x86_64-unknown-uefi`), and a PR to [add an initial QEMU test](
+https://github.com/rust-lang/rust/pull/101703) for the x86_64 UEFI target to help prevent regressions from landing.
+
+The initial nightlies containing the prebuilt UEFI targets revealed some issues in `compiler_builtins` which we fixed and are in the [0.1.84](https://github.com/rust-lang/compiler-builtins/compare/0.1.83...0.1.84) release.
+Finally, we [changed the C compiler for the UEFI targets from gcc to clang](https://github.com/rust-lang/rust/pull/104622), which resolved some linker problems.
+As of the 2022-11-22 nightly, the three UEFI targets should be fully usable, which means you no longer need to use the unstable `-Zbuild-std` feature.
+
+## Announcements, News, and Blog Posts
+
+- [Redox OS 0.8.0](https://www.redox-os.org/news/release-0.8.0/)
+- \[Talk\] [FerrOS: Rust-y unikernels on seL4](https://www.youtube.com/watch?v=osepBlSQjY8)
+- [Aero, a new modern OS made in rust and is now able to run Xorg](https://www.reddit.com/r/rust/comments/ytrpss/aero_a_new_modern_os_made_in_rust_and_is_now_able/)
+- [Tales of the M1 GPU](https://asahilinux.org/2022/11/tales-of-the-m1-gpu/)
+ - Asahi Lina shares her experience with writing a Linux kernel driver for the Apple M1 GPU in Rust.
+- [Memory Safe Languages in Android 13](https://security.googleblog.com/2022/12/memory-safe-languages-in-android-13.html)
+ - There are now ~1.5 million lines of Rust code in AOSP.
+ - "Based on this historical vulnerability density, it’s likely that using Rust has already prevented hundreds of vulnerabilities from reaching production."
+- [Rust Developers Move Ahead With Preparing To Upstream More Code Into The Linux Kernel](https://www.phoronix.com/news/More-Rust-Upstream-Prep-Linux)
+
+
+
+
+## `rust-osdev` Projects
+
+In this section, we give an overview of notable changes to the projects hosted under the [`rust-osdev`] organization.
+
+[`rust-osdev`]: https://github.com/rust-osdev/about
+
+
+
+### [`bootloader`](https://github.com/rust-osdev/bootloader)
+Maintained by [@phil-opp](https://github.com/phil-opp)
+
+Just a few days ago, we finally [released](https://github.com/rust-osdev/bootloader/pull/293) version `0.11.0` of the the `bootloader` crate. This release is a [major rewrite](https://github.com/rust-osdev/bootloader/pull/232) with various new features and also breaking changes:
+
+- **Separate API crate:** The bootloader is now split into two parts: A [`bootloader_api`](https://docs.rs/bootloader_api/0.11.0/bootloader_api/) crate to make kernels loadable by the bootloader and the actual bootloader implementation. This makes the build process for kernels much easier and faster.
+- **New config system:** Instead of configuring the bootloader via a special table in the `Cargo.toml`, the configuration now happens through a normal Rust struct, which is part of the [`entry_point!` macro](https://docs.rs/bootloader_api/0.11.0/bootloader_api/macro.entry_point.html). The macro then serializes the config struct at compile time and places it in a special ELF output section. The compile time serialization happens through a manually implemented `const fn` of the config struct.
+- **Load the kernel at runtime:** Up to version `0.10`, the bootloader used to link the kernel at compile time, which required recompiling the bootloader whenever the kernel was modified. In `v0.11`, we now load both the kernel and the configuration at runtime, so no rebuilding of the bootloader is needed anymore.
+- **Split into sub-crates:** Since the bootloader build process does not need access to the kernel executable or its `Cargo.toml` anymore, we can build the different parts of the bootloader independently. For example, the BIOS boot sector is now a separate crate, and the UEFI bootloader is too. (We plan to make them proper [artifact dependencies](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#artifact-dependencies) as soon as they're allowed on crates.io.)
+- **Library to create disk images:** To create an abstraction the complex build steps of the different bootloader executables, we compile them inside cargo build scripts. At the top level, we provide a [`bootloader`](https://docs.rs/bootloader/0.11.0/bootloader/) _library_ crate, which compiles everything as part of its build script. This library includes functions for creating BIOS and UEFI disk images for a given kernel. These functions can be used e.g. from a builder crate or a build script of the downstream operating system.
+
+See our [README](https://github.com/rust-osdev/bootloader/blob/main/README.md) for detailed usage instructions. We also created [migration guides](https://github.com/rust-osdev/bootloader/tree/main/docs/migration) that explain how to update from `v0.9` and `v0.10`.
+
+Thanks a lot to the numerous people that tested our beta releases and reported issues!
+
+
+### [`uefi-rs`](https://github.com/rust-osdev/uefi-rs)
+Maintained by [@GabrielMajeri](https://github.com/GabrielMajeri), [@nicholasbishop](https://github.com/nicholasbishop), and [@phip1611](https://github.com/phip1611)
+
+#### Features
+
+- [Make the `cstr16!` macro usable in const contexts](https://github.com/rust-osdev/uefi-rs/pull/544)
+- [const fn for trivial getters where possible](https://github.com/rust-osdev/uefi-rs/pull/545)
+- [Support ISA-specific `MemoryAttribute`s in `MemoryDescriptor`s](https://github.com/rust-osdev/uefi-rs/pull/549)
+- [Allow uefi-services to work when the "logger" feature is disabled in uefi](https://github.com/rust-osdev/uefi-rs/pull/552)
+- [Unicode collation](https://github.com/rust-osdev/uefi-rs/pull/551)
+- [Add structs for all device path node types and a new `DevicePathBuilder`](https://github.com/rust-osdev/uefi-rs/pull/547)
+- [Implement additional `BootServices` functions](https://github.com/rust-osdev/uefi-rs/pull/550)
+- [Publish new releases](https://github.com/rust-osdev/uefi-rs/pull/571)
+- [const fn wherever possible](https://github.com/rust-osdev/uefi-rs/pull/546)
+- [rename crate features](https://github.com/rust-osdev/uefi-rs/pull/561)
+- [Several small improvements to EqStrUntilNul](https://github.com/rust-osdev/uefi-rs/pull/580)
+- [`TryFrom` implementation for `CStr8`](https://github.com/rust-osdev/uefi-rs/pull/581)
+- [`Directory::read_entry_boxed` plus common abstraction `make_boxed`](https://github.com/rust-osdev/uefi-rs/pull/559)
+- [Implement Error trait for `uefi::Error`](https://github.com/rust-osdev/uefi-rs/pull/587)
+- [Added `read_entry_boxed_in` and `get_boxed_info_in` that use the `allocator_api`](https://github.com/rust-osdev/uefi-rs/pull/584)
+
+#### Docs
+
+- [Add uefi/README.md](https://github.com/rust-osdev/uefi-rs/pull/577)
+- [Install UEFI targets via rustup](https://github.com/rust-osdev/uefi-rs/pull/555)
+- [book: Add a graphics example](https://github.com/rust-osdev/uefi-rs/pull/586)
+- [documentation and code improvements for Status, Error, and read()](https://github.com/rust-osdev/uefi-rs/pull/556)
+- [Clean up crate feature list documentation](https://github.com/rust-osdev/uefi-rs/pull/589)
+- [Add `unstable` feature and improve CI for feature flags](https://github.com/rust-osdev/uefi-rs/pull/590)
+- [Doc updates: add "Running on Hardware" to book and drop BUILDING.md](https://github.com/rust-osdev/uefi-rs/pull/588)
+
+#### Internal
+
+- [Update `mbrman` to 0.5.0](https://github.com/rust-osdev/uefi-rs/pull/543)
+- [Don't explicitly require compiler-builtins(-mem)](https://github.com/rust-osdev/uefi-rs/pull/534)
+- [Add temporary workaround for yanked dependency](https://github.com/rust-osdev/uefi-rs/pull/574)
+- [workspace: uefi (main library) is in a dedicated directory now](https://github.com/rust-osdev/uefi-rs/pull/566)
+- [Copy LICENSE to the new uefi directory](https://github.com/rust-osdev/uefi-rs/pull/576)
+- [Improve clap help for `--target`](https://github.com/rust-osdev/uefi-rs/pull/578)
+- [several unrelated cleanups](https://github.com/rust-osdev/uefi-rs/pull/562)
+- [uefi-test-runner: Assume that we're running in the special QEMU env](https://github.com/rust-osdev/uefi-rs/pull/579)
+- [Simplify serial usage in test-runner and check that tests completed](https://github.com/rust-osdev/uefi-rs/pull/582)
+- [clippy: require must_use_candidate lint](https://github.com/rust-osdev/uefi-rs/pull/592)
+- [doc: add '--document-private-items' to `cargo xtask doc`](https://github.com/rust-osdev/uefi-rs/pull/569)
+- [test-runner: Make some tests stricter](https://github.com/rust-osdev/uefi-rs/pull/595)
+- [test-runner: Open serial device in exclusive mode](https://github.com/rust-osdev/uefi-rs/pull/598)
+- [Make GOP test work on aarch64](https://github.com/rust-osdev/uefi-rs/pull/599)
+
+
+
+Thanks to [@blitz](https://github.com/blitz), [@YtvwlD](https://github.com/YtvwlD), [@timrobertsdev](https://github.com/timrobertsdev), [@NathanRoyer](https://github.com/NathanRoyer), and [@d-sonuga](https://github.com/d-sonuga) for their contributions!
+
+
+
+### [`linked-list-allocator`](https://github.com/rust-osdev/linked-list-allocator)
+Maintained by [@phil-opp](https://github.com/phil-opp) and [@jamesmunns](https://github.com/jamesmunns)
+
+We merged the following tooling changes this month to make the crate more reliable:
+
+- [Detect fragmentation when fuzzing](https://github.com/rust-osdev/linked-list-allocator/pull/73)
+- [Fix miri test failures caused by address unleaking of heap data in tests](https://github.com/rust-osdev/linked-list-allocator/pull/75)
+
+Thanks to [@evanrichter](https://github.com/evanrichter) for their contribution!
+
+### [`acpi`](https://github.com/rust-osdev/acpi)
+Maintained by [@IsaacWoods](https://github.com/IsaacWoods)
+
+- [Improve `PciConfigRegions` API](https://github.com/rust-osdev/acpi/pull/132)
+
+Thanks to [@semiviral](https://github.com/semiviral) for their contribution!
+
+
+## Call for Participation
+
+Want to contribute to a Rust OSDev project, but don't know where to start? Help with one of these outstanding issues!
+
+
+
+
+
+_No tasks were proposed for this section this month._
+
+
+
+If you maintain a Rust project related to operating system development and are looking for contributors, especially for tasks suited to people getting started in this space, please [create a PR](https://github.com/rust-osdev/homepage/pulls) against the `next` branch with the tasks you want to include in the next issue.
+
+## Other Projects
+
+In this section, we describe updates to Rust OS projects that are not directly related to the `rust-osdev` organization. Feel free to [create a pull request](https://github.com/rust-osdev/homepage/pulls) with the updates of your OS project for the next post.
+
+
+
+### [`bendudson/EuraliOS`](https://github.com/bendudson/EuraliOS)
+(Section written by [@bendudson](https://github.com/bendudson))
+
+EuraliOS is a hobby multitasking operating system written in
+Rust. It's based on a microkernel ("Merriwig") that provides on-demand
+paging, stack and heap memory management for multi-threaded user
+processes. Drivers run in Ring 3 and communication between processes
+is by Rendezvous message passing. Each process can have its own
+virtual file system, enabling multiple users to be isolated from each
+other.
+
+This still has many rough edges and doesn't have many drivers:
+EuraliOS only has ramdisk storage, but does have a TCP stack thanks to
+the [smoltcp](https://github.com/smoltcp-rs/smoltcp) crate. The only
+user programs are a simple shell and a
+[Gopher](https://en.wikipedia.org/wiki/Gopher_(protocol)) client; I'm
+trying to port the [kibi](https://github.com/ilai-deutel/kibi) text
+editor but have a lot of work to do on the standard library.
+
+This was based on [Phil's blog](https://os.phil-opp.com/) and uses
+many rust-osdev crates including
+[x86_64](https://github.com/rust-osdev/x86_64),
+[bootloader](https://github.com/rust-osdev/bootloader) and
+[vga](https://github.com/rust-osdev/vga). Thanks to Phil and
+Rust-OSdev contributors for all their work supporting this community!
+
+I've tried to
+[document](https://github.com/bendudson/EuraliOS#documentation) the
+development steps and hope these are useful for others, particularly
+the sections on getting into Ring 3, implementing syscalls and
+switching stacks with `swapgs`. Suggestions for improvement welcome!
+
+### [`hermitcore/hermit-sync`](https://github.com/hermitcore/hermit-sync)
+(Section written by [@mkroening](https://github.com/mkroening))
+
+While working on the [`libhermit-rs`] kernel, I moved the synchronization primitives targeted at kernel development into a separate crate: [`hermit-sync`].
+Whilst I was there, I also enhanced the code and made it independent from libhermit, so the code can now be used in other projects as well; at least x86_64 and aarch64 ones for the moment.
+
+The crate contains the following features:
+
+* a function for running a closure without interrupts
+* a simple spinlock with exponential backoff
+* a fair ticket lock with exponential backoff
+* `OnceCell` and `Lazy` based on [`generic_once_cell`] (another recent project of mine)
+
+All of these primitives are available with and without interrupt safety.
+See the [API docs] for more details.
+
+Any feedback is very welcome of course.
+
+[`libhermit-rs`]: https://github.com/hermitcore/libhermit-rs
+[`hermit-sync`]: https://github.com/hermitcore/hermit-sync
+[`generic_once_cell`]: https://github.com/mkroening/generic_once_cell
+[API docs]: https://docs.rs/hermit-sync
+
+### [`phip1611/paging-calculator`](https://github.com/phip1611/paging-calculator)
+
+(Section written by [@phip1611](https://github.com/phip1611))
+
+I worked on setting up page tables in a low-level project and noticed that there is lots of room for
+confusion. For example, x86 has at least four different modes of paging: 32-bit paging, 32-bit
+paging with PAE, 64-bit 4-level paging, and 64-bit 5-level paging. 32-bit without PAE paging uses 10
+bits to index into a page table while 64-bit paging uses 9 bits to index into the table of each
+level. To demystify the magic a little, I created a CLI utility called `paging-calculator` that
+takes a virtual address as input and shows you the indices the hardware will use. You can find the
+utility on [crates.io](https://crates.io/crates/paging-calculator).
+
+
+## Join Us?
+
+Are you interested in Rust-based operating system development? Our `rust-osdev` organization is always open to new members and new projects. Just let us know if you want to join! A good way for getting in touch is our [gitter channel](https://gitter.im/rust-osdev/Lobby).
diff --git a/static/css/poole.css b/static/css/poole.css
index 5883d17b..7227a2ff 100644
--- a/static/css/poole.css
+++ b/static/css/poole.css
@@ -91,8 +91,8 @@ h1 {
font-size: 2rem;
}
h2 {
- margin-top: 1rem;
- font-size: 1.5rem;
+ margin-top: 2.5rem;
+ font-size: 1.75rem;
}
h3 {
margin-top: 1.5rem;