diff --git a/v2/content/posts/2024/tech-stack/cover.jpg b/v2/content/posts/2024/tech-stack/cover.jpg new file mode 100644 index 0000000..14d4be7 Binary files /dev/null and b/v2/content/posts/2024/tech-stack/cover.jpg differ diff --git a/v2/content/posts/2024/tech-stack/desktop.jpg b/v2/content/posts/2024/tech-stack/desktop.jpg new file mode 100644 index 0000000..b404eb4 Binary files /dev/null and b/v2/content/posts/2024/tech-stack/desktop.jpg differ diff --git a/v2/content/posts/2024/tech-stack/index.md b/v2/content/posts/2024/tech-stack/index.md new file mode 100644 index 0000000..6627154 --- /dev/null +++ b/v2/content/posts/2024/tech-stack/index.md @@ -0,0 +1,265 @@ ++++ +title = "Tech Stack 2024" +date = 2024-06-01T10:13:48+10:00 + +#[extra] +#updated = 2024-02-21T10:05:19+10:00 ++++ + +Inspired by Alex Chan's [Tools of the trade][achan] post I thought I'd note +down my current tech stack and then revisit it in a few years to see how things +evolve. As per Alex's post I'll break it down into three sections: software, +(development) tech stack, and hardware. + +{{ figure(image="posts/2024/tech-stack/desktop.jpg", link="posts/2024/tech-stack/desktop.jpg", resize_width=1600, alt="A photo of my desk. There's two displays, the one on the right is rotated into a portait orientation, the left on is on a wooden monitor stand. In front of the monitors are: a PS4 controller, TI-89, tenkeyless mechanical keyboard, mouse, and Kobo e-Reader.", caption="My desk. The computer is behind the displays.") }} + + + +### Software + +My dotfiles are public so if you're curious about the configuration of some +of the tools mentioned below check out . + +#### Linux + +I use Linux for everything. On my desktop machine, which I use for work as well +as personal computing I run [Arch Linux]. On my laptop, which is more of an +ancillary device that I use for tinkering and occasional travel I run [Chimera +Linux]. My goal is to run Chimera on the desktop too (it actually dual boots +already) but I need to get my work development environment working on it before +I can do that. My desktop is my primary computer, the rest of the post will +focus on that. + +#### Awesome + +I've been using the [Awesome window manager][Awesome] since 2019. It's +deceptively good. When I try out other desktop environments it's surprising how +many little details that Awesome gets right. It's also very stable, meaning I +don't get surprise updates to my UI in new releases. + +However the writing is on the wall for X11. My current arrangement of two 4K +24" displays running at 2x scaling with one of them rotated to a portrait +orientation is really pushing the limits of X11. It's my goal to switch to a +Wayland based system at some point in the future. Most likely System 76's +[COSMIC desktop][COSMIC], which I've been periodically testing during its +development. + +#### Alacritty + +Somewhere around 75% of the windows I have open at any time are terminal +windows. I like [Alacritty] because it's devoid of UI chrome and features like +tabs. Awesome takes care of all window organisation so there is no need for +tabs, splits and things like that. I also like that it's responsive to use. + +#### Z Shell + +I've used the [Z shell][zsh] since at least 2008. I've tried out some of the +newer shells but quickly run into limitations or things I miss from Z shell. +Some things I like about it: + +- Extensive, full-featured completion support +- Spelling correction/did you mean +- Synced history: history across all shells is added to history after every + command and available in all running shells. +- Path expansion: `ls /h/w/P/rss` → `ls /home/wmoore/Projects/rsspls` +- Command stack (`Esc-q`) + +#### Espanso + +[Espanso] is a text expander. It allows me to do things like type `;mdl` and +have that be replaced with a Markdown link using the contents of the clipboard +(E.g. `[]()`), or `;em` and have that be replaced with my email +address. + +#### CLI + +I use a bunch of CLI tools, aside from standard POSIX/UNIX tools I use these a lot: + +- [bat](https://github.com/sharkdp/bat) — `cat` with syntax highlighting +- [fd](https://github.com/sharkdp/fd) — file finder +- [fzf](https://github.com/junegunn/fzf) — fuzzy finder (integrated with zsh and vim) +- [lsd](https://github.com/lsd-rs/lsd) — `ls` but better +- [ripgrep](https://github.com/BurntSushi/ripgrep) — clever regex search +- [tig](https://github.com/jonas/tig) — git TUI +- [paru](https://github.com/Morganamilo/paru) — `pacman` wrapper + +#### Obsidian + +I note down ideas, thoughts, howtos, and things in [Obsidian]. I picked it +because the notes store is just plain Markdown files and they sync between +Linux and iOS. + +#### ZFS + +`/home` on my system is a mirror of two 2Tb NVMe drives. I use [ZFS] for its +data integrity (resistance to bit rot), redundancy (I can lose a drive an not +lose data), compression (`compressratio` is 1.40x at the time of writing), and +lightweight snapshots. + +I use [zfs-autosnap] to periodically take snapshots of `/home`, which allows me +roll back files if I get them into an undesirable state. + +#### Text Editing + +I'm currently in a bit of transitional period with text editors: + +- [Rust Rover] for Rust +- [Zed] migration in progress for Rust +- [Neovim] for everything else, it's hard to beat + +I have started using Zed for Rust development. Ideally it would be my primary +editor but it doesn't support enough languages yet. I imagine I will shift more +tasks to it as it continues to improve. + +#### 1Password + +I returned to [1Password] when they released the Linux version. Not a lot say +here, it's reliable and works across all the devices I use. + +#### Firefox + +Like everyone I use a web browser a lot. I use [Firefox] as it's fast, works well, +is mostly user focused, has built-in ad blocking, and is not a made by Google. + +[Multi-account containers][firefox-containers] are a killer Firefox feature +that allows me to segregate things like Google and Facebook off into their own +little container. This separates them so that for my usual browsing I'm not +logged into a Google or Facebook account so it's harder for them to associate my +activities across the web and on first-party sites (like Google Maps) with my +account. + +I've read some people say that they can't use Firefox because too many websites +don't work with it but I don't run into this problem at all with the sites I +visit. + +##### Stylus + +I don't use a lot of browser extensions but [Stylus] is a great one. It lets me +apply custom styles websites (or all sites). This lets do things like fix poor +font choices or hide that annoying Sign-In With Google across all websites. + +#### Shotwell + +I recently got a new DSLR and did some research to find a decent +non-destructive photo editor and library manager. I settled on [Shotwell] and +while I still dearly miss [Aperture], Shotwell gets the job done. + +#### keyd + +[keyd] lets me customise and remap keys on my keyboard at the system level so +that it works everywhere. I previously relied solely on programmable mechanical +keyboards for this functionality but I've now been able to use a board that +does not have a customisable firmware with the help of `keyd`. + +#### CopyQ + +Clipboard history is an essential part of any desktop computing environment and +[CopyQ] is what provides it for me. + +### Dev Stack + +#### Rust + +Pretty much all software I write these days in done with [Rust]. Also I use a +lot of software written in Rust as it tends to be efficient with resources, +reliable, and easy for me to delve into the code if needed. + +#### mold + +Linking is slow, I do a lot of linking working on personal and work projects. +[Mold] makes this faster. + +#### Rocket + +For building web applications my go-to is [Rocket]. It's not quite as batteries +included as something like [Rails] but it includes a lot of stuff that's +missing from other options. + +#### Zola + +For blogs and simple static sites I love [Zola]. It's full-featured, customisable, +and super fast. + +#### Gleam + +On occasions I need to write code targeting JavaScript that is non-trivial +I've been reaching for [Gleam]. It's kinda of like Elm but actively maintained +and with fewer restrictions. + +### Hardware + +#### Desktop Computer + +My computer is a desktop machine that I assembled myself in 2023: + +- AMD Ryzen 9 7950X 16-Core Processor +- 64 Gb DDR5 6000 MT/s RAM +- Storage: + - Root disk: Crucial T700 1TB PCIe Gen5 NVMe M.2 SSD + - /home: 2x WD_BLACK 2TB SN850X NVMe in ZFS mirror +- AMD Radeon RX 6700 XT GPU with 12Gb VRAM +- 2x Dell 24" 4K displays, one in portrait orientation +- Razer Kiyo web cam +- Audio Technica ATR2100X microphone +- Logi Lift vertical mouse + BenQ ZOWIE FK2-C mouse +- [WK870 mechanical keyboard][WK870] with Gateron G Pro 2.0 brown switches + +All of this is packed into a monstrous [Fractal Design Torrent case][torrent] +with a lot of slow, quiet fans to try to keep all the hot things under control. +This build was optimised for my development activities (both work and personal) +with occasional gaming. For future comparisons it does a clean Prince build[^1] +in 1m50s and scores 2966/20174 in Geekbench 6. + +In early 2024 I started having trouble with pain in my hands from mousing. For +nearly 20 odd years I've alternated mouse hands to load balance the wear on my +hands. However this was an issue in both. That led me to try a vertical mouse, +which didn't initially help. I then tried a wrist rest but it was super hard +and the pain remained. I got different softer one and now the vertical mouse is +comfortable and my hands have stopped complaining. + +#### Laptop + +My laptop is a 13" HP Pavilion Aero Laptop 13-be0203AU I bought it because it was +cheap (~AU$1000), had an 8 core AMD CPU, and was lightweight (~1kg). The case +construction is not great as parts of it are painted plastic, which has dings and +scratches on it now. In contrast to my old 2013 MacBook Pro, which still looks +new. + +I've pre-ordered a Lenovo Yoga Slim 7x (14", Gen 9) Snapdragon to replace this +machine. It's got one of the new Snapdragon X Elite ARM CPUs in it. I expect +I'll have to make do with Windows & WSL until Linux support for this new +hardware catches up. + +[^1]: `time ./bin/build prince` with `mold` as linker. + +[achan]: https://www.alexchantastic.com/tools-of-the-trade +[Prince]: https://www.princexml.com/ +[zsh]: https://www.zsh.org/ +[Gleam]: https://gleam.run/ +[Rust Rover]: https://www.jetbrains.com/rust/ +[Zed]: https://zed.dev/ +[Neovim]: https://neovim.io/ +[Arch Linux]: https://archlinux.org/ +[Chimera Linux]: https://chimera-linux.org/ +[Awesome]: https://awesomewm.org/ +[COSMIC]: https://blog.system76.com/tags/COSMIC%20DE +[Alacritty]: https://alacritty.org/ +[Espanso]: https://espanso.org/ +[Obsidian]: https://obsidian.md/ +[ZFS]: https://openzfs.org/ +[zfs-autosnap]: https://github.com/wezm/zfs-autosnap +[1Password]: https://1password.com/ +[Firefox]: https://getfirefox.com/ +[firefox-containers]: https://support.mozilla.org/en-US/kb/containers +[Sylus]: https://github.com/openstyles/stylus +[Shotwell]: https://wiki.gnome.org/Apps/Shotwell +[Aperture]: https://web.archive.org/web/20150407001931/http://www.apple.com/aperture/ +[keyd]: https://github.com/rvaiya/keyd +[CopyQ]: https://hluk.github.io/CopyQ/ +[Rocket]: https://rocket.rs/ +[Mold]: https://github.com/rui314/mold +[Rust]: https://www.rust-lang.org/ +[Zola]: https://www.getzola.org/ +[torrent]: https://www.fractal-design.com/products/cases/torrent/ +[WK870]: https://www.keebmonkey.com/en-au/products/wk870?syclid=ck4d58iusvis73cshbug +[Stylus]: https://github.com/openstyles/stylus diff --git a/v2/templates/page.html b/v2/templates/page.html index 95fd67c..2af3001 100644 --- a/v2/templates/page.html +++ b/v2/templates/page.html @@ -8,7 +8,19 @@ - + {% if page.colocated_path %} + {% set cover_path = "/" ~ page.colocated_path ~ "cover.jpg" %} + {% if cover_path in page.assets %} + {% set cover_url = get_url(path=cover_path) %} + + + + {% else %} + + {% endif %} + {% else %} + + {% endif %} {% endblock %}