From e99434ed3d1597778aaf0f653ca0288ae7d780b6 Mon Sep 17 00:00:00 2001
From: Daniel Flanagan
Date: Thu, 6 Jul 2023 15:00:52 -0500
Subject: [PATCH] Add uses and table of contents to pages
---
config.yaml | 5 +
content/about.md | 1 +
content/blog/my-uses.md | 10 +
content/contact.md | 1 +
content/uses.md | 487 +++++++++++++++++++++++++++++++++++
layouts/_default/single.html | 8 +
src/stylus/core.styl | 10 +-
7 files changed, 519 insertions(+), 3 deletions(-)
create mode 100644 content/blog/my-uses.md
create mode 100644 content/uses.md
diff --git a/config.yaml b/config.yaml
index b7ad371..4a03f1e 100644
--- a/config.yaml
+++ b/config.yaml
@@ -10,6 +10,11 @@ markup:
renderer:
unsafe: true
+ tableOfContents:
+ endLevel: 3
+ ordered: false
+ startLevel: 1
+
# permalinks:
# post: /blog/:title
diff --git a/content/about.md b/content/about.md
index cece00e..7de0b40 100644
--- a/content/about.md
+++ b/content/about.md
@@ -6,6 +6,7 @@ imageOverlayOpacity: 0.6
heroBackgroundColor: "#0af"
title: About
description: "A little about the man behind this website."
+toc: false
---
My name is Daniel Flanagan. I was born in Virginia (but my family didn't stay
diff --git a/content/blog/my-uses.md b/content/blog/my-uses.md
new file mode 100644
index 0000000..6d5e6e3
--- /dev/null
+++ b/content/blog/my-uses.md
@@ -0,0 +1,10 @@
+---
+date: "2023-07-06T14:32:00-06:00"
+title: "Things I Use"
+draft: false
+toc: false
+---
+
+I saw a post recently on ye ole fediverse that linked [this post](https://dev.to/nickytonline/do-you-have-a-uses-page-5b82) and I was inspired to create mine! So I did! You can view it here! Enjoy!
+
+
diff --git a/content/contact.md b/content/contact.md
index 83c24f4..be48306 100644
--- a/content/contact.md
+++ b/content/contact.md
@@ -6,6 +6,7 @@ imageOverlayOpacity: 0.7
heroBackgroundColor: "#333"
title: Contact
description: "Need to get in touch?"
+toc: false
---
If you want to reach out, please do so via my email at [daniel@lyte.dev][e],
diff --git a/content/uses.md b/content/uses.md
new file mode 100644
index 0000000..afad2d7
--- /dev/null
+++ b/content/uses.md
@@ -0,0 +1,487 @@
+---
+# date: 2017-02-22T14:43:02-06:00
+# image: /img/space.jpg
+# imageOverlayColor: "#000"
+# imageOverlayOpacity: 0.6
+# heroBackgroundColor: "#0af"
+title: Uses
+description: "About my tools, workflow, and other things I use as a software developer."
+---
+
+This page lists the tools (both physical and otherwise) that I use to do my job
+as a software developer along with some thoughts on them.
+
+For other pages like this from other folks, check out this repository: https://github.com/wesbos/awesome-uses
+
+I'll go through a theoretical "day in the life" of myself working. Mostly to
+help me remember all the stuff involved, but also as a means of storytelling and
+being imformative. I normally don't drop brand names, but since that's kind of
+the point here, I will be doing a _lot_ of name dropping. No links to products
+for simplicity, but everything listed here should be searchable. If not, let
+me know! I'll try to link to anything free, though, such as software.
+
+I'll break stuff up by topic as things come up so you can skip things that are
+not interesting to you.
+
+I also think that in general sharing this much information about yourself isn't
+the _best_ idea. However, since I'm confident the bots can't know much more
+about me that they already do and this will really only mostly be useful to my
+fellow human beings, I think it's worth sharing. I hope you discover some cool
+new stuff! Better yet, I hope you recommend me better stuff! I'm always wanting
+to try new tools and discover something new that's good at something.
+
+# Good morning!
+
+I wake up when my kids do out of a Purple mattress.
+
+I slip on my PineTime wrist watch, grab my Android smartphone, put on my
+prescription glasses, and usually make some tea.
+
+## Mattress: Purple King Size
+
+Sleep is real important, so get a good mattress! Of course, "good" here is
+highly subjective, so you will want to do your own research. We usually have a
+kid or two join my wife and I in the mattress, so we went with a king size to
+account for this. Fantastic decision!
+
+## Smart Watch: PineTime
+
+I love my PineTime! It serves as a good flashlight in the pitch black of a
+baby's room and can tell the time. That alone is good enough. However, it can
+also vibrate when I get notifications on my phone if I want, which I do use
+on occasion. The price is also unbeatable at 25USD and the InfiniTime firmware
+keeps improving! I get about two weeks of battery with light use and bluetooth
+off. I get about 5 days if I've got notifications on full blast, but they
+recently improved the firmware and claim this may now be more than double!
+
+## Smart Phone: ASUS ROG Phone 5S
+
+I bought the phone that I can get root access to with the biggest battery,
+nicest display, and a headphone jack. That's pretty much all I want in a phone.
+The speakers are a great bonus. The two USB-C ports is actually a super nice
+feature since I can connect peripherals while charging without a dock or crazy
+dongle. I've also used the video mirroring on the side port to good effect a few
+times in a pinch. I love this device so much I've bought it twice. I'm not sure
+I've done that for anything else...
+
+### Android-Specific Softeware & Applications
+
+Since I'm discussing my phone, I'll go over phone-specific apps (and some common
+with my laptops/desktops) now in no particular order. I have no idea if any of
+these have iOS equivalents, but here ya go.
+
+- [Firefox](https://github.com/mozilla-mobile/fenix) as my web browser
+- [F-Droid](https://f-droid.org) as an awesome resource for applications
+- [Termux](https://github.com/termux/termux-app) for doing Linux-y and terminal-y things on my phone
+- [OpenKeychain](https://github.com/open-keychain/open-keychain) for mobile GPG key management
+- [Password Store](https://github.com/android-password-store/Android-Password-Store) for interacting with my password manager database
+- [Bitwarden](https://github.com/bitwarden/mobile) for interacting with shared password databases
+- [Magisk](https://github.com/topjohnwu/Magisk) for managing Android root access
+- [NewPipe](https://github.com/TeamNewPipe/NewPipe) for YouTube access without dealing with ads
+- [Smart AudioBook Player](https://play.google.com/store/apps/details?id=ak.alizandro.smartaudiobookplayer) for listening to audiobooks
+- [Gadgetbridge](https://github.com/Freeyourgadget/Gadgetbridge) for interfacing with my smart watch
+- [Obsidian](https://play.google.com/store/apps/details?id=md.obsidian) for reading and writing my notes (sync'd via `git`)
+- [Fedilab](https://codeberg.org/tom79/Fedilab) as my mobile fediverse client
+- [Weechat-Android](https://github.com/ubergeek42/weechat-android) as my mobile IRC relay interface
+- [Tailscale](https://github.com/tailscale/tailscale-android) for accessing my VPN
+- Google Wallet for NFC payments (tap-to-pay or contactless) because getting cards out of a wallet is _so_ pre-COVID
+- Google Messages for SMS, MMS, and RCS
+- Google Maps for meatspace navigation
+- Pocket Casts for listening to podcasts
+- Spotify for listening to music
+
+# Server Room
+
+Once the day has started and I've said my goodbyes to the fam, I head downstairs
+to my basement where my home office is located. I walk past a super overkill
+server rack I got on Craigslist. It holds a few things, but the most important
+things are my home router/gateway. It's connected to a Google Fiber jack where
+I get 500 Mb/sec speeds for about 55USD/month. It's hooked up to a Netgear
+16-port gigabit switch which in turn is hooked up to a bunch of little devices,
+the most important of which are my home server, WiFi access point, and a really
+long cable that goes to my desk where there is another tp-link 8-port gigabit
+switch.
+
+The rack also has a bunch of loose cables, peripherals, and other random gear,
+like a big knife. I think I was using it to strip some wires. I should get some
+easy-mode wire strippers.
+
+## Router & Gateway: Any decent dual-NIC machine
+
+For a long time, I used a Raspberry Pi 4 with a USB3 ethernet adapter. It did
+great, too! But then I wanted it (and my ethernet adapter) for another project
+and I scored a Datto Alto 2 with 2 NICs built right in on Ebay for like $30.
+_Ebay is awesome_.
+
+The Datto Alto 2 is great, but not because of what it is. Any little dual-NIC
+box will do nicely. It's running Arch Linux and is configured via the contents
+of [this repo](https://git.lyte.dev/lytedev/router) (please be nice to my
+network). Having a router I'm in full control of has helped with networking
+problems immensely and makes port forwarding stuff a breeze. I'm roughly
+familiar with its workings, which makes troubleshooting network problems that
+much easier for me.
+
+## WiFi Access Point: Unifi AP-Pro
+
+Fantastic access point that plays nicely with my very DIY home router. Not
+really much else to say. I set it up a long time ago and update it with some
+regularity, but it just works.
+
+## Ethernet Switches: Anything with enough speed and ports
+
+Seriously I just bought the cheapest switches at Micro Center with enough ports
+for me. They're getting hilariously cheap, which is great! Having extra ports
+for ad-hoc stuff, like LAN parties, is a must-have for me, even in the age of
+WiFi.
+
+_Share the load_.
+
+## Server(s)
+
+I have a lot of servers, but the main server is just an ASUS Chromebox 3 that I
+flashed Arch Linux to. It pretty much just runs a big ol' Docker Compose setup
+with a sprinkling of other non-Docker'd services. It can do the hardware
+transcoding for Jellyfin, my home media server, and just generally does not
+break a sweat.
+
+I recently was given a Dell R720xd with 20 hyperthreaded CPU cores (40 threads),
+256GB RAM, and 44TB of raw disk space, which I am _very_ excited about, so I'll
+probably be moving most stuff to that bad boy, though I expect the power bill to
+go up _just a tad_.
+
+I have a few other cheap machines with larger disks at friends and family's
+houses for off-site, encrypted backups of important data. I should
+_really_ take the time to validate and automate my backup setup, because right
+now, I do a completely garbage job of it.
+
+Any paid client workloads are served via redundant mechanisms via cloud
+services, generally Digital Ocean, and backed up with whatever the relevant
+cloud offering is.
+
+I run the following applications for my home:
+
+- Traefik to reverse proxy all the things
+- A homemade chat bot for various things
+- Various game servers
+- A small service the multiplexes audio and video feeds
+- Gitea for https://git.lyte.dev
+- Nginx to serve static files for https://files.lyte.dev
+- Jellyfin
+- Plausible for web analytics
+- PostgreSQL as the great database for anything that needs one
+- MariaDB for anything too lame to use Postgres
+
+I run a few services from the cloud as well:
+
+- A small DDNS application that machines report to so I have relatively up-to-
+ date public IP information on most of my devices (this can't run from home for
+ fairly obvious reasons 😉)
+- Various monitoring scripts for specific things
+
+# Starting Work
+
+I sit in a way-too-expensive computer chair at a homemade desk and wiggle my
+mouse or slap my keyboard until my workstation wakes up. I punch in my password
+and a script fires off to make sure I am ready to work. It does stuff like have
+me log in to various work services that need daily (or hourly) authentication
+and making sure I remember to review certain reminders and things of that
+nature.
+
+I usually spend my work mornings reviewing neat things I read about the night
+before on my various feeds -- assuming nothing urgent is happening with work,
+which there usually is not. Tinkering with things is super important for
+learning. This is usually done by pulling down my notes as sync'd from my phone,
+where I do most of my reading.
+
+I may also spend some time playing games or working with electronics in the
+workshop area.
+
+Then the standup meeting notification pops up and I spend about 10 minutes
+reviewing work stuff so I'm ready for the day. I make sure any audio/visual
+settings are reset for the workday from any tinkering I may have done the
+previous evening, usually with musical instruments or just general goofing
+around with Pipewire.
+
+## Chair: Steelcase Gesture with Headreset
+
+Like a mattress, very subjective. Get your chairs secondhand for way cheap and
+you can get some heckin' nice chairs. I spend about 8 hours a day in my chair,
+so having a good chair is well worth it, even if the price tag is 1,500USD. 😬
+
+## Desk: Custom
+
+It's a huge slab of butcher's block I got from Home Depot for about 200USD and
+I made some _really_ crappy legs to try and hold it up. It's huge and awesome
+and by the time I can't move it around by myself anymore is probably a good
+indicator for retirement.
+
+You can see an old but decent picture of it here:
+https://files.lyte.dev/images/battle-station-2020.jpg
+
+## Mouse: Logitech MX Master 3 and Mionix Avior Pro
+
+The MX Master 3 is my default, go-to mouse. It's great. I don't use any of
+the fancy features, really, but the mousewheel on it is _real_ special. Can't
+go back.
+
+The Avior Pro I got a long time ago after my last mouse bit the dust. I really
+only pull out for gaming on the more competitive side, such as _Counter Strike_.
+For pretty much everything else, the MX Master 3 is not noticeably bad -- even
+for _Doom Eternal_.
+
+## Keyboard: Sofle Choc RGB
+
+Another very subjective thing! Building and programming your own keyboard is
+something that is super fun for heavy keyboard users, which I think is most
+people these days. This one is focused on being good for my hands and wrists to
+use for long programming sessions. It's split into two wireless pieces so each
+hand can move them independently and the keys are laid out in a sensible manner
+that fits the human hand. There are other features that are nice, but that I
+rarely use.
+
+Here's a picture if you like: https://files.lyte.dev/keyboards/zofle.jpg
+
+## Monitors: Aorus FO48U and 2 Dell U2720Q
+
+I stumbled into having a huge 4K display when COVID had Postmates send our
+little Kansas City satellite office packing and I took the meeting hardware
+home. At some point, I plugged it in to see what _World of Warcraft_ would look
+like in 4K on a big screen and realized it was actually amazing for programming
+as well.
+
+Here's roughly my monitor layout, though I usually have two of the secondary
+monitors -- one on either side:
+https://files.lyte.dev/images/battle-station-2022-10-13.3.jpg
+
+## Laptop: Lenovo T480 and MacBooks
+
+A recent acquisition. It was pretty busted up when I got it, but I bought the
+high capacity external battery and some phat sticks of RAM and replaced the
+trackpad. A little bit of superglue and a good cleaning later and I've just
+fallen in love with this laptop. Sometimes I use it even though I have a really
+beefy workstation with what I consider to be a pretty high-end setup -- it just
+feels so cozy! All my machines run Arch Linux configured as specified in my
+dotfiles repo.
+
+Work provides MacBooks. I'm able to use them as proxies and simply SSH into them
+for work-related tasks. They otherwise run Linux virtual machines or serve as
+dumb terminals to Linux environments in _the cloud_ where I do the majority of
+my work. In general, I'm not a big of macOS and its interface, but I fully
+recognize that I'm used to a very bespoke and unique way of interacting with
+my computer.
+
+That said, before work really cracked down, the M1 Max MacBook Pro they got
+me was one of my favorite machines ever. Insane battery life, performance,
+speakers, display, _**and** the ability to run Linux natively on it_ is going to
+be really hard to beat. I miss being able to use that thing to its fullest!
+
+## Desktop: Custom Rig
+
+Probably easiest to list the parts. I wanted something quiet, small, and cute.
+In hindsight, I think it would have been more practical to just get a bigger and
+more expandable system. I'm somehow always out of USB ports.
+
+- **CPU**: AMD Ryzen 9 5950X
+ - I wanted as many performant cores as possible for as cheaply as possible
+ and reasonable. I did some math and realized that with the time spend
+ running unit tests and compiling code, this thing would pay for itself in a
+ month or two. It did. Love it and looking forward to the next upgrade!
+- **GPU**: AMD Radeon RX 6700 XT
+ - Bought this at the worst possible time, but it's been a great card. It can't
+ quite keep up with 4K@120Hz for some titles like _Doom Eternal_ on the highest
+ settings, but it's good enough for my current usage.
+- **RAM**: Some 64GB kit that's more than enough for me
+- **PSU**: Some small form factor 750W fully modular power supply - it's very
+ cute because it's so little!
+- **CPU Cooler**: Can't remember what it is exactly, but I bought the biggest,
+ baddest air cooler that would fit with my setup
+- **Case**: Cooler Master NR200P
+- **Linux SSD**: Sabrent Rocket 1TB PCIe 4.0 NVMe
+ - I went with PCIe 4.0 since I make pretty heavy use of my disk what with
+ a great internet connection and all - those Docker images ain't gonna sling
+ themselves, y'know!
+ - What is it with "enterprise" Docker images being absolutely gargantuan?!
+ Why must things suck?! Not that I put anything proprietary to work on my
+ personal machine(s) of course!
+- **Windows SSD**: TeamGroup MP34 2TB PCIe 3.0 NVMe
+ - Occasionally, I boot to Windows for some games that run better or at all,
+ like Valorant or Destiny 2
+
+## Other Neat Computing Devices
+
+I also have a PinePhone and a Steam Deck.
+
+The PinePhone was unfortunately a dud for me personally since MMS is still
+pretty prevalent in my life in a way that I can't overlook in addition to the
+notification setup not quite being up to snuff. I am _very_ excited for the
+time when a Linux (you know what I mean) phone is feasible, though! I got the
+keyboard addon, though, and since my phone has some radio issues in the US, I
+sometimes use it when I need better radio performance, like when camping.
+
+The Steam Deck is absolutely wonderful. Anything I would play with a controller,
+I usually just play it on the Steam deck. I haven't touched my Switch since!
+Plus, it's Linux, so the tinker factor is there too. Highly recommend one if
+you're considering it.
+
+## Headphones: Sony WH-1000XM4
+
+Bought the XM3s on a Black Friday special and fell in love. _Nice_ noise
+cancelling head are absolutely wonderful. They made my mom cry.
+
+Work got almost all their engineers the XM4s not long after so I kind of have
+2 pair. The XM4s are _much_ nicer with multiple device pairing and the firmware
+voice feedback fading out your audio instead of cutting it completely when it
+says anything. The XM4s also automatically shut down if they can detect they
+aren't on your head for a little bit, which makes the main issue I had with the
+XM3s of setting them on my desk without turning them off a non-issue.
+
+## Microphone: Blue Yeti USB
+
+Sounds good enough, but I've got a fancy audio interface now, so I'm wanting to
+upgrade at some point. Super low priority, though.
+
+## Audio Interface: MOTU M4
+
+A recent gift. I'm hoping to do more with music and mixing in the future,
+though, so it will be welcome at that point! I play drums and would love to
+put together a decent electric guitar setup. I also have an Arturia MicroFreak
+digital synthesizer which is a lot of fun to play with. I'd love to put some
+cool tracks together!
+
+## Keys: Some twist-lock cable keyring
+
+It's nicer than those metal rings you have to snap your thumbnail to get keys
+off of. I had one fail after about 10 years and my keys went everywhere, so if
+you're gonna use these, I guess you should replace them occasionally or check
+them in rather rough ways with some regularity after a certain amount of time.
+
+These are usually karabiner'd to my backpack or a belt loop.
+
+When I'm driving with the family, we take the van, which has one of those
+wireless keys, so I can just throw my whole bag in and we can drive. If I'm
+driving solo, it's still a good, old insert-and-turn key, so the keys un-
+karabiner from the bag or loop and go back on when disembarking.
+
+My keyring is also attached to my wallet. Speaking of which...
+
+## Wallet: Chums Surfshorts Wallet
+
+Cheap, has a zipper to hold keyfobs and cards, and easily attaches to my
+keys. Having them all together means I just gotta grab two things, one for each
+pocket: phone and wallet-keys.
+
+I haven't tried tap-to-paying through the wallet, which is probably a big
+security hazard. 🤷
+
+# Software
+
+When my machine boots up, I'm greeted by the standard Linux login at the
+console. No display manager or graphical login or anything. Once I'm logged in,
+I usually run `wm` which fires up my window manager, Sway.
+
+When Sway starts, it runs Kitty, my terminal emulator of choice, and Firefox, my
+web browser of choice.
+
+## Web Applications
+
+Firefox usually has the following web applications opened:
+
+- Shortwave for email
+- Linear.app for personal task management
+- Google Calendar for scheduling, planning, event management, etc. for both work
+ and personal life
+- Hacker News for mostly-relevant and -interesting articles to me
+- Lobste.rs for reasons similar to Hacker News
+- Lemmy.world since Reddit killed API access
+- GitHub for open-source and similar work
+- Band.us for communicating with friends, family, and church folks
+- Discord for communicating with friends, family, "more-hip" church folks, various communities, and other acquaintences
+- Element for communicating with friends, coworkers, various communities, and other acquaintencas
+- Slack for communicating with friends, coworkers, and various communities
+- Spotify for music
+- Various applications specific to work, such as Okta, Jira, GitLab, etc.
+
+Ugh, modern messaging is a mess, isn't it?
+
+Tailscale connects all my machines to the same VPN. It's great!
+
+I also frequent these:
+
+- git.lyte.dev for personal code management
+- a.lyte.dev for personal online analytics
+- bw.lyte.dev for shared password database management
+- Shopping:
+ - ebay.com
+ - facebook.com/marketplace
+ - craigslist.com
+ - amazon.com
+ - aliexpress.us
+
+I'm sure I'm forgetting a ton here.
+
+## Terminal
+
+Beyond the web stuff, I pretty much live in the terminal. Interacting with my
+machine is mostly done via hotkeys as configured for Sway. Otherwise, everything
+happens in the terminal. Here are my most popular commands in no particular
+order:
+
+- `fish` as my interactive shell (and sometimes for scripts, too!)
+- `helix` for text editing
+- `git` for code version management (source control)
+ - I use `git-delta` for viewing diffs
+- `pass` for passwords and secrets management
+- `ssh` and `mosh` for accessing other machines
+- `tmux` and `zellij` for multiplexing terminals
+- `htop` and `btm` (or `bottom`) for process management and resource monitoring
+- `rtx` for managing various runtimes' and applications' versions
+- `sk` (or `skim`) for fuzzy searching for stuff
+- `rg` (or `ripgrep`) for specific searching for stuff
+- `sd` for most things I used to use `sed` for
+- `nnn` for filesystem browsing and navigation
+- `bat` for viewing files as a `cat` replacement
+- `exa` as an `ls` replacement
+- `man` for reading documentation
+- `xh` and `curl` for interacting with HTTP endpoints (I want to check out `hurl`, too!)
+- `jq`, `gron`, and `jql` for interacting with JSON data
+- `rsync` for moving files amongst machines
+- `watchexec` for doing stuff as I edit files (like running unit tests anytime code is changed)
+- `age` and `sops` for secrets management
+- `dua` for disk usage analysis
+- `sc-im` for managing two-dimensional, relational data (spreadsheets)
+- `pulsemixer` for adjusting audio levels and volumes
+- `bluetoothctl` for managing bluetooth devices (also `bluetuith` for a TUI!)
+- `weechat` as my IRC client
+ - This is usually running in a persistent `tmux` or `zellij` session on a
+ server that I remote into
+ - I occasionally use the relay functionality that `weechat` offers as well
+- `docker` and `podman` for container management
+- `hexyl` when I need to look at binary data
+- `make` for doing things describe in `Makefile`s
+
+## GUI
+
+From Sway, the only utilities I use are `waybar`, `mako`, and `gammastep`.
+
+`waybar` shows the time, a HUD for my virtual desktops, various volume
+information, and a high level overview of system resource usage.
+
+`mako` shows me notifications and let's me interact with them.
+
+`gammastep` makes my displays orange-y at night time.
+
+I use `wofi` for launching applications occasionally. It lists the following
+often-used applications:
+
+- Steam for installing and running games
+- Slippi for playing Super Smash Brother Melee online!
+- Lutris for running World of Warcraft
+- `qpwgraph` for routing audio via `wireplumber`
+- Inkscape for editing vector graphics (like SVGs) and image files
+- Audacity for recording audio
+- Krita and GIMP for editing non-vector (bitmap?) graphics and image files
+- KDE Connect for when I want phone notifications to be mirrored to my desktop
+ - Usually only when expecting a specific call or message
+- VS Code for pairing with other VS Code folks or troubleshooting a VS Code user's setup
+- Thunar for managing files in a GUI
+- PulseAudio Volume Control `pavucontrol`
diff --git a/layouts/_default/single.html b/layouts/_default/single.html
index 0a1c807..79d5783 100644
--- a/layouts/_default/single.html
+++ b/layouts/_default/single.html
@@ -9,5 +9,13 @@
Posted on {{ dateFormat "Jan 2 2006" . }}
{{ end }}
+ {{ if not (isset .Params "toc") }}
+
+
+ Table of Contents
+
+ {{ .TableOfContents }}
+
+ {{ end }}
{{ .Content }}
{{ end }}
diff --git a/src/stylus/core.styl b/src/stylus/core.styl
index c593af1..e6863aa 100644
--- a/src/stylus/core.styl
+++ b/src/stylus/core.styl
@@ -70,6 +70,8 @@ html,body
padding 0.5em
line-height 1.6em
+ main:first-child, footer:first-child { margin-top: 0 }
+
&> main, > footer
.highlight
position relative
@@ -78,10 +80,13 @@ html,body
border-left solid var(--syntax-bpx) var(--syntax-ledg)
display flex
- .highlight, form, ul, ol, p
+ li
+ margin-top 0.5em
+ margin-bottom 0.5em
+
+ .highlight, form, > ul, > ol, p
margin-top 1em
margin-bottom 0.25em
- &:first-child { margin-top: 0 }
h1, h2, h3, h4, h5, h6, details
margin-top 2em
@@ -92,7 +97,6 @@ html,body
> h1 + p, > h2 + p, > h3 + p, > h4 + p, > h5 + p, > h6 + p { margin-top: 0 }
> h1, > h2, > h3, > h4, > h5, > h6 { color: var(--heading-fg) }
- *:first-child { margin-top: 0 }
h1, h2, h3, h4, h5, h6
position relative