Category: Tech

  • How I Use AI and How I Don’t Use AI

    How I don’t use AI

    I don’t use generative AI to write prose or lyrics. I don’t use it to write blog posts. I don’t use it to write e-mails for me, outside of the occasional auto-complete of what I was going to say anyway. I don’t use it to create music. I don’t use it to create graphics. I consider those lanes of creativity to either be second nature already or rewarding forms of toil — like a zen garden or a Bonsai tree. I happily do them the old fashioned way, with no generative AI but some minor augmentation via machine learning through plugins, which is essentially inescapable in the modern digital landscape.

    You’ll notice that I used an em dash in the last paragraph even though I claimed to not use generative AI to write prose. That’s because I’ve been using em dashes for decades. I find them to be more elegant than semicolons in nearly every way. I also tend to hyphenate small groups of words to enhance their readability, which is apparently another thing that AI does a lot. Sorry for teaching it stuff. I’m not going to change how I’ve been writing for my entire life to pass an AI purity test though, so we’ll just have to use the honor system if that’s alright.

    How I Use AI

    I use AI when faced with annoying toil, which mostly ends up being the iterative cycle of trial & error that is inherent in software development. I also use it write documentation because, while I have a knack for writing good documentation thanks to several years of working in support, I’d rather be using my time to do something else, so I find that AI written documentation is perfectly readable and useable once edited.

    I have never had any particular talent for — or interest in — writing beautiful code. I have always found coding to be kind of an annoying process. I have diagnosed ADHD and suspected AuDHD, so I tend to either hyper-focus on things or not focus at all, which is a bad trait to have as a programmer because I will either spill 2 days of my life out on a single, potentially small problem that I’m trying to solve programmatically, or I forget about what I’m doing altogether and drag my feet to get back to it. Sometimes I never get back to it at all, resulting in a massive graveyard of dead projects that is a familiar fixture for most software developers.

    When I code, I’m typically just trying to find the quickest path to solve a problem, automate something, or to make something easier for myself to do again in the future. I’m very lazy and inefficiency makes me mad — literally, it does. That’s why I’ve made a career out of solving problems and automating stuff. Things that get in the way of my ability to be lazy, like manual tasks with high probability for human error — or strings of things I have to remember to do in sequence — always feel like an open sore on the roof of my mouth that I can’t leave alone once I know it’s there.

    I am an autodidact, which means that I am self-motivated to learn through self-study, and so I teach myself stuff all the time but combine that with my ADHD and it means I have major trouble focusing on subjects that I’m less interested in. Luckily, I’m in love with computers, so I poured my entire life into learning about them — and I still love and learn. I’m usually somewhere near the cutting edge of the goings-on in tech.

    I naturally seek to know a good deal about a lot of stuff, and I can hyper focus on subjects I’m interested in and learn a lot about them in a small amount of time, but I don’t generally have a master’s level of knowledge about any one thing in particular. I’m a Jack of All Trades type of guy and always have been. There are always weird gaps in my knowledge that I have to backfill as needed — if needed.

    Prior to the introduction of large language models, most of my projects were ugly amalgamations of code blocks that I found on the Internet somewhere and mashed together until the thing I was coding did what I wanted it to do. It took me days or weeks to come up with something usable most of the time. I actually hated that process, but hated not solving a problem even more, so I typically endured the pain — especially if the problem was someone else’s.

    The LLM essentially generates code in the same way that I would have done myself, but much faster, with fewer syntactic blunders that waste time. This new form of iteration feels like rewarding toil to me, like writing music, versus the annoying toil of blind trial & error — or Googling in a desperate attempt to find someone, anyone, who had the same problem in the past and remembered to post a solution to some random forum.

    It’s taking my prompt and going to the same places I would have gone, but parses the output way faster than I ever could. I prompt it based on pretty good fore-knowledge of what I’m doing and it backfills the gaps in my knowledge where needed, but my experience as a professional nerd allows me to notice when the AI is doing something in a dumb way or hallucinating, so I can quickly stop it and correct it. The result is a workflow that enhances my productivity while also no longer feeling like work.

    I have been coding with LLMs since they came out and I’ve gotten pretty good at writing efficient prompts, knowing which tools are going to be a waste of time and which are going to bolster my workflow, and getting good code out of my agent(s). For all of the time I’ve spent using LLMs, I’ve never once felt like my livelihood was being threatened by them. They can’t reason like I can, they can’t detect shitty UX, or act upon hunches built on the context of an entire career in several areas of tech and related fields — an entire life of interpersonal communication.

    Not only will an LLM never replace me, they make me feel more required — more secure. Putting an LLM in the hands of a novice engineer is like putting a Cessna pilot in a F-35 cockpit. They may be able to fly, maybe, but they can’t get anywhere close to the performance of a trained F-35 pilot and the chances they faceplant into the ground, taking the very expensive airplane with them, is very high.

  • Using Karabiner-Elements For Sudo Authentication via 1Password

    Karabiner-Elements is an incredible free tool for customizing your keyboard, mouse, and other input devices on macOS. Its most powerful feature is the ability to create complex modification (macro) scripts that can perform a variety of actions when a key — or a combination of keys — are pressed.

    I’m going to share the scripts I’ve written here and I will try to remember to edit this post as I develop more scripts in the future.

    CMD+CTRL+S to send sudo password from 1Password

    If you get tired of typing — or copy/pasting — your sudo password every time you need to run a command, or reaching for your Yubikey, you can use this complex modification to copy your sudo password from 1Password and send the characters as keystrokes when you hit CMD+CTRL+S. Keystroke injection via Karabiner-Elements doesn’t overwrite your clipboard like copy/pasting does and it also keeps youe sudo password out of clipboard history, which is a nice bonus.

    You will need the 1Password CLI tool installed and configured for this to work. Follow the instructions from the link to do that.

    Then click “Complex Modifications -> Add your own rule” in the Karabiner-Elements interface.

    Paste in the code below, making sure replace [YOUR_SECRET_UUID_HERE] with your actual secret UUID. To get the UUID, right click on the secret in 1Password and select “Copy UUID” (it will be a long string of letters and numbers). Also, I have installed the 1Password CLI via homebrew on a Mac, so your command path may need modified as well.

    https://gist.github.com/jesse-id/0a287c4bd039ce3bf48f222f4ef73e46

    {
        "description": "Ctrl+Cmd+S to retrieve 1Password secret and send as keystrokes",
        "manipulators": [
            {
                "from": {
                    "key_code": "s",
                    "modifiers": { "mandatory": ["left_control", "left_command"] }
                },
                "to": [
                    {
                        "shell_command": "afplay /System/Library/Sounds/Pop.aiff & if SECRET=$(/opt/homebrew/bin/op item get \"[YOUR_SECRET_UUID_HERE]\" --fields password --reveal 2>/dev/null | tr -d '\\n'); then osascript -e 'on run args' -e 'tell application \"System Events\" to keystroke (item 1 of args)' -e 'end run' \"$SECRET\" && osascript -e 'tell application \"System Events\" to key code 36'; fi"
                    }
                ],
                "type": "basic"
            }
        ]
    }
    

    SHIFT+CTRL+OPT+CMD on hold, CMD+/ on tap

    HyperKey is an app that turns CAPS LOCK into a new modifier key by sending SHIFT+CONTROL+OPTION+COMMAND when pressed and held, and escape when tapped. I have replaced it with a Karabiner-Elements complex modification script that replicates the same functionality, but sends COMMAND+/ when tapped instead. That allows me to use CAPS LOCK to quickly comment/uncomment code in my IDE as well.

    Click “Complex Modifications -> Add your own rule” in the Karabiner-Elements interface.

    Paste in the code below.

    https://gist.github.com/jesse-id/36ec252467c20fb84fa6b6dfe5b3e604

    {
        "description": "Caps Lock to Hyper Key (Held), Cmd+/ (Tapped)",
        "manipulators": [
            {
                "from": {
                    "key_code": "caps_lock",
                    "modifiers": { "optional": ["any"] }
                },
                "to": [
                    {
                        "key_code": "left_shift",
                        "modifiers": ["left_command", "left_control", "left_option"]
                    }
                ],
                "to_if_alone": [
                    {
                        "key_code": "slash",
                        "modifiers": ["left_command"]
                    }
                ],
                "type": "basic"
            }
        ]
    }
    
    
  • Switching from MacOS to Windows

    I’ve been alive for 43 years at this point and I have been using a Microsoft operating system as my daily driver for the last 37 years, starting with MS-DOS running on a Commodore Colt PC in 1988.

    I have used every version of Windows from 3.0 in 1990 up until Windows 11 in 2025, mostly because I enjoy playing games and Windows has always catered to gamers. Aside from that, with the exception of Millenium Edition, Vista, and Windows Server, I have enjoyed the experience with relatively few hiccups.

    So why switch?

    Well as I age, I’m getting much less excited about the idea of cracking open a computer and digging around inside of it. I just don’t have the drive to do it anymore. For well over a decade, I’ve just been buying a beastly new computer and selling the old one without ever touching anything inside of it. I have continued to use Windows solely for my extreme familiarirty with it and Macs generally couldn’t handle the games I was playing without a headache.

    I have been much less enchanted by video games for awhile, abandoning triple A titles completely in lieu of much cheaper deckbuilding roguelikes, and the creative side of my soul has been steadily becoming more pervasive. I’m reaching the age where the grey-beard nerds tend to transition from a career in engineering to woodworking, and moving to a cabin in the forest somewhere. Well, that will never be me because I’m incredibly lazy and addicted to the conveniences of modern living. So for the rest of my life, I will be shackled to a computer.

    When Apple introduced Apple Silicon, a unified CPU and memory architecture, it piqued my interest. Like I said, I don’t really care about upgrading anymore, so the static nature of the build does not bother me at all. What finally pulled me over to the MacOS side of the aisle was the eye-popping performance benchmarks and nearly zero noise generated by the hardware. As a musician — a vocalist — that is a pretty huge selling point for me.

    I had always heard that making music was a more enjoyable experience on a Mac in general, but I had no real reason to test the waters. Well, Apple Silicon and its silent opeation is that real reason. I waited a couple of years to give the software companies and developers enough time to create builds for ARM64 architecture, and the time for that nearly ubiquitous compatability is now.

    So I finally made the switch.

    Some things felt clunky, especially relearning keyboard shortcuts, but after a couple of days of uncertainty and looking to the right side of my monitor for the minimize button on a worefully lacking Finder interface, every regret faded and I am now fully absorbed into the Mac ecosystem. It honestly makes me feel a little dirty… but who cares?

    Finally, let’s go over the pros and cons.

    Pros

    • I can use iMessage natively from my desktop.
    • A lot less telemetry crap.
    • It’s fast as f**k, boieee.
    • It’s completely silent.
    • It’s ridiculously small for the power. It takes up like 1/8th of the space of my gaming rig.
    • The OS seamlessly integrates with all of my other Apple stuff. Phone, iPad, Watch, TV, etc.
    • I can move apps to my iPad so it acts as a third monitor. Great for monitoring my security cameras.
    • Most of the software is a single lifetime purchase instead of a subscription.
    • Great privacy features.
    • All things audio are a lot more user friendly.
    • Apple Podcasts rules. It has an easily reachable “Latest Episodes” section. Imagine that.
    • Apple Pay rules.
    • Subscriptions are incredibly easy to manage.
    • Time Machine backups are cool.

    Cons

    • Window management is clunky.
    • Can’t keep iCloud files on an external USB drive.
    • Most of my Steam games are dead in the water without extra effort.
    • Not a lot of customization options out of the box.
    • Everything costs money. There is a lot less freeware.
    • Everything asks for a password. 1Password, YubiKey, and fingerprint sensor are all absolute requirements.
    • Apple Arcade kind of sucks. Good idea, bad execution.

    Final Thoughts

    I personally love MacOS. It provides a pretty amazing user experience for software development, writing, and music production. No regrets.

    Additionally, I don’t feel like my personal information and usage habits are being lusted after and scraped, which was becoming more and more of a concern for me as Microsoft focuses in on its AI investments. Even though they aligator-armed it (for now), Microsoft’s “feature” to allows users to track and replay all of their activity from the past however many days, for example, is a dystopian nightmare in my estimation. It’s crazy to me that it ever got a green light in the first place. No thanks.

    I have updated the /uses page on my site to add the replacement apps I found for the Mac.