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") }} +