rootwork v0.2

100daystooffload

Post 007 of #100DaysToOffload is centered around Android weirdness!

Call of Duty: Mobile has an event this season that is a crossover with the Gundam franchise. I wanted to check out all the big stompy robots so I re-installed this massive game. I have enjoyed COD:M in the past but I've found it difficult to play because I my eyesight is poor and my phone screen is definitely small compared to my monitors.

I know that COD:M can be played officially on PC with GameLoop but that requires Windows as it has baked in anti-cheat and you are also dealing with other players in PC lobbies. I wanted to play mobile touch or mobile controller but be able to see my screen better.

While watching a video about the release, I noticed that Gundam Explained was using scrcpy to show off the game for his YouTube video. I wondered if I could do the same and use scrcpy to give me a bigger screen to play on given my Pixel 7 Pro doesn't have any sort of video output options.

Installing scrcpy in Bazzite was relatively simple. There is a script baked right in: ujust install-scrcpy. In my case, I had a distrobox container named fedora, where I tend to export things I install by way of DNF. This ujust script installed scrcpy into that container and did a little bit of setup.

On my phone, I already had developer mode enabled with debugging turned on. If you don't already have that set up, you can do it by opening settings, then About Phone, and then tap on the Build Number at the bottom of the screen several times. It'll pop up a notification when developer mode is enabled. You'll also need to enable debugging by searching for Developer Options in Settings, and once on that screen, tap the toggle for USB Debugging. It also helps to enable the Stay Awake option in the developer options menu as well.

The next step is to plug your phone in with USB. You should see a notification about USB Debugging pop up. Normally at this point, running any adb commands would ask to allow access for your computer but something is a bit off in Bazzite. I was getting errors with scrcpy that no device was found and listing devices in adb lead to empty results.

It turns out I needed to restart adb (and I need to do this each time I want to use scrcpy for some reason). To do that, I jump into the distrobox container where scrcpy is installed and run adb kill-server && adb start-server. Then adb list-devices will show my phone and I can start scrcpy from this same container.

I am still playing with the various options for my setup with scrcpy. I mostly want only the display to be streamed to my computer while the audio and controls are handled by the phone. Over time I hope to find reasonable enough settings that I get good picture quality and no input lag.

One other bonus tip that I learned during this process: I am able to use my phone as a webcam with Bazzite. After plugging in the phone, if I search for “USB” in the settings and choose the option for “USB controlled by”, there is a list of “Use USB for” options. I was tinkering with this while trying to get scrcpy to talk to my phone. I noticed the “Webcam” option, enabled it, fired up GNOME Camera and was immediately staring at a non-flattering picture of myself right on my desktop!

Post 006 of #100DaysToOffload!

I have been running Bazzite on my desktop and Bluefin on my work laptop for a little over a year now. When I replaced my work laptop, I ended up installing Bazzite on it for consistency across my machines. It turns out that the developer experience is much better on Bluefin so a simple rebase was all I needed to swap out the system.

One sudo rpm-ostree rebase ostree-image-signed:docker://ghcr.io/ublue-os/bluefin later, I was happily chuffing along in Bluefin again. The next issue to tackle was screens and keyboards. My Thinkpad is really nice but the screen is only 1080p and I much prefer my 1440p monitors. Typically I use a KVM and plug in the laptop alongside my desktop but I wanted to try a remote desktop solution.

In the end I settled on GNOME RDP, but along the way I tried Sunshine and Moonlight since they are frequently used on Bazzite. There are ujust scripts for Sunshine and (I think) it's already configured out of the box on Bazzite but it is not installed by default on Bluefin.

I first tried to use the Flatpak for Sunshine but its documentation required the use of some read-only resources so I couldn't make the necessary changes. I also tried to set up the homebrew package and met similar challenges. My next option was to try the AppImage but Bluefin (or Fedora) wasn't in the support matrix for it. That left me with adding a layer to my system.

Because Sunshine isn't available in the Fedora repos, I had to enable the Copr repo for it and then install the package:

sudo dnf copr enable lizardbyte/beta
sudo rpm-ostree install Sunshine

After a reboot, the package was available. From there, I ran sunshine in my terminal and opened the web interface, which prompted me to create a username and password. Once that was done, I was able to log in and the service was running.

Back on my Bazzite desktop, I installed Moonlight from Flathub and fired it up. It immediately found my Sunshine server. I clicked connect and it asked me to enter a PIN on the laptop to validate the connection. Once that was done, I was presented with three options: a desktop connection, a low res desktop connection, and a steam connection.

Everything worked fine with the normal desktop connection, though the latency was a little higher than it was with GNOME RDP. Overall this was a fun experiment and I see why people like Sunshine/Moonlight for game streaming!

My next hurdles are to figure out how to get Remmina to capture all of my inputs so I can Alt-Tab on the RDP session and how to get the GNOME session to dynamically resize its resolution via RDP like I can when I connect to Windows servers.

In today's short and sweet #100DaysToOffload (post 005!), I would like to show off an #ansible playbook for creating VMs in #proxmox.

I wrote this playbook several weeks ago when I was trying to stretch the limits of what I could do with Ansible. It would be much better to do this with #opentofu or #terraform but I thought this was a fun exercise.

A few ways I would improve this playbook:

  • Add all the hard coded variables to a prompt, ENV vars, or maybe a vault
  • Check to see if the vmid exists before attempting to build the machine
  • Add more descriptive output when the play is done

In the future, I'd like to try to pull this off with #pulumi as well.

---
- name: Create Fedora Server VM with demo user
  hosts: localhost
  gather_facts: yes
  vars:
    proxmox_host: "IP OR HOSTNAME"

  vars_prompt:
    - name: proxmox_user
      prompt: "Proxmox username (e.g., root@pam)"
      private: no
    - name: proxmox_password
      prompt: "Proxmox password"
      private: yes

  tasks:
    - name: Read SSH public key
      slurp:
        src: "{{ ansible_env.HOME }}/.ssh/id_rsa.pub"
      register: ssh_key

    - name: Create Fedora VM
      community.general.proxmox_kvm:
        api_host: "{{ proxmox_host }}"
        api_user: "{{ proxmox_user }}"
        api_password: "{{ proxmox_password }}"
        node: "NODE NAME HERE"
        name: "fedora-demo-server"
        vmid: 120
        memory: 4096
        cores: 2
        cpu: "host"
        ostype: "l26"
        agent: enabled=1
        net:
          net0: "virtio,bridge=vmbr0"
        virtio:
          virtio0: "local-lvm:32"
        ide:
          ide2: "local:iso/Fedora-Server-netinst-x86_64-41-1.4.iso,media=cdrom"
        serial:
          serial0: "socket"
        vga: "serial0"
        boot: "order=ide2;virtio0"
        bootdisk: "virtio0"
        ciuser: "demo"
        cipassword: "demo123"
        citype: "nocloud"
        ipconfig:
          ipconfig0: "ip=dhcp"
        sshkeys: "{{ ssh_key.content | b64decode | trim }}"
        state: present

    - name: Start VM
      community.general.proxmox_kvm:
        api_host: "{{ proxmox_host }}"
        api_user: "{{ proxmox_user }}"
        api_password: "{{ proxmox_password }}"
        node: "NODE NAME HERE"
        vmid: 120
        state: started

In my job search, I noticed a ton of listings for Go developers. I stumbled upon Go back in 2012 because I was a bit of a plan9 fan and learned that Rob Pike was working on the language. I tinkered with Go and I loved it so much that I began introducing it at work. Along the way, I also I started golang-weekly.

Eventually, I handed off the mailing list to an Internet stranger and then it made its way into the hands of Cooperpress at some point. I'm a little proud of that because I was inspired to start the project by being a subscriber to Peter Cooper's Ruby Weekly mailing list. At the time I found the Ruby variant invaluable and I wanted to see the same spring up for the Go community.

A couple of years later, I flat out stopped using Go. For better or worse, Ruby was being used in my work environment substantially more at the time. Short of writing a few services in the language, I never got the opportunity to build anything large with it and I think I finally quit using it regularly around 2014. I was, however, fortunate enough to review and interface with some Go code in my last job.

Given the heaps of jobs requesting Go proficiency and my interest in the language, I figured I'd build myself a little playground to learn what's changed over the last decade and re-familiarize myself with the standard library. I have been reading Kaiju No. 8 and I love mega monsters all around so I thought it might be a good theme to work with. So I tried to mix my peanut butter and chocolate by making the Kaiju Defense Network.

This has been substantially more fun than going through tutorials and books. I'm typically a learn-by-reading kind of person but sometimes doing is the best route. I have certainly remembered a lot of little bits while working on this and have had some fun along the way. It also gives me a place to play with new ideas.

At the moment, I hope to refactor some of the functions and extend the test coverage before I start diving into turning each component into individual services or messing with channels/goroutines. I also hope to grow it to be a good dummy project for infrastructure tinkering in the homelab. For now it's served its purpose as a memory jogger and I'm pleased with the results.

Bonus footnote: I believe this qualifies as post 004 #100DaysToOffload, which is going to take substantially longer than a year at this rate...

Sadly, this isn't a #100DaysToOffload post but I will get back around to that soon.

I'm currently looking for contract or full-time roles in devops, backend development, or information security. My background covers building and maintaining systems, automating infrastructure, and helping teams improve their security posture. I value practical solutions and clear communication, and I’m comfortable working across a range of environments.

If you think I might be a good fit for your team, feel free to take a look at my resume, my website, or chat me up on mastodon!

Let's work on stuff together!

#GetFediHired

Post 003 of #100DaysToOffload

I think that this topic has been covered by a lot of more visible people already. I'm not sure I have anything of value to add to the conversation. I wanted to write this more as a means of me clearing my own head about the topic than I did to provide any sort of solutions.

I think this divide started for me decades ago when I switched my note taking from paper to digital notes. Like a lot of people, I have fallen into the procrastination trap of organizing organization tools instead of doing the work I needed or wanted to do. Part of that was spurred on by staring at the reams of paper notes I had made and chasing the cathartic task loop of moving to digital note taking.

This was not an immediate switch and it took a long time to make the move. Of course, once I moved, I had to iterate and find the perfect digital note taking option. I learned through this process that digital things feel more fragile to me than physical things. Whether this is real or simply perceived, I don't know.

I was never good with backups, except at work, and back in 2016 I lost all of my data prior to that year with a hard disk failure. No company can take my notes from me but I can certainly take my notes from myself. Meanwhile, my reams of paper remain.

As an avid reader, I have gone through this same process with books. A few times now, I have purged my physical book collection only to rebuild it. Sometimes with different books, sometimes with the same ones. Meanwhile I have hundreds of eBooks and a Kobo Aura. The physical experience is nice and feels a bit more permanent. It's easy to avoid or remove DRM with eBooks, so I've kept a mix of both.

Periodicals were more difficult. My fondest reading is in magazines and newspapers. Given their rich layout, they're often presented as PDFs digitally. This experience is subpar to physically thumbing through them. I have solved this by using a laptop that converts into a tablet. It's not perfect but it works.

Music is an odd thing for me. I used to have tons of CDs, tapes, and records. I go through spells of pretty severe music fatigue regularly. I find music often irritates and distracts me. I liked to have the physical items more for looking at the artwork than listening to the tunes recorded on them.

When I started to amass digital music, it was always ephemeral to me. I didn't care if it disappeared because I would get exhausted with it quickly. That made services like Spotify attractive. More than Spotify, I have preferred Internet radio stations because I don't have to store anything and others curate the content.

More recently I have been purchasing CDs again. I forgot how much I enjoyed the artwork and my vehicle has a CD player in it. I haven't acquired too many pieces but I like what I have so far. It remains to be seen whether or not I will continue on this path.

I have never been interested in movies or television. That is not to say that there isn't the odd show or film that catches my attention. I don't know what it is but anytime I'm watching a movie or show, I have a nagging feeling that I could be doing something better with my time. Because of this I only have a few DVD and Blu-ray discs, most of them belong to others in the house. This is another scenario where streaming media has been useful to me.

Games are where this thread really kicked off for me. In recent history, I have been playing video games in my leisure time rather than reading. This happens once in a while and I'm sure the pendulum will swing the other way soon enough.

With games, I may not have a choice in the future. It all seems to be headed toward digital-only rental services. I have enjoyed Microsoft's Game Pass service but I think it's because I don't care to own the games available on the platform. I don't like a lot of modern and AAA games because of all the live service, always online, mtx, battlepass, etc stuff.

For old or “retro” games, I find that I enjoy physical media quite a lot but it's often too expensive. There's a wave of speculation in gaming that's been going on for a few years and has made some games far too expensive. However, a lot of those games will get ports and digital releases on platforms like Steam.

Where possible, I try to buy physical copies of games for consoles I have (unless they're simply a key code on a disc). Anything else, I try to pick up on the PC if possible. Preserving these games seems like a difficult task because some of them will require Steam and surely that won't last forever.

It's hard to say how I'll proceed with various pieces of media in the future. I do know that if I am to pursue more digital things, I definitely need to work on my backup strategies...

I saw this post by way of @joel@fosstodon.org and replied that I thought it was a fun read. I was prodded to give it a go, myself. I'm way behind on #100DaysToOffload so here's post 002...

Do you floss your teeth?

Nightly. Dental health is important for complete health and prevention of a lot of things is easy.

Tea, coffee, or water?

Water, then coffee. I consume about a gallon of water daily as I engage in pretty heavy exercise regularly. I also tend to drink between 3-6 mugs of black coffee daily. They're roughly 12oz.

I usually only drink tea when ill, when it's late, or oddly when I'm outdoors. Hot tea, anyway. Living in the US south, iced tea is always present and I will drink it if soda is the only other option. Preferably unsweetened.

Footwear preference?

No footwear if possible (perhaps socks if I'm cold). When I was an office worker I was often barefoot, or as close to it as possible, and it was a common thing people would jab me about.

For someone who prefers not to wear shoes, I have several pair. Each one serves a different purpose and they're all almost totally beat to heck. I wear them as infrequently as possible but I've had them a very long time.

I have a lot of slides: Adidas Adilette 22's for airport travel, fake Yeezy slides for yard and odd tasks, Adidas Bounce slides for house shoes on hot days, Rip 'n Dip slides for the gym (being replaced by Adidas floral slides).

I have some Dearfoams corduroy slippers for cold weather house shoes. Adidas RAIN.RDY trail running shoes for running/hiking, Adidas cross training shoes for weight lifting, Vans Sk8 Hi shoes for dirt bike riding/shooting range trips, Rothco desert boots for tougher outdoor tasks. My daily shoes when I have to wear something are vegan Adidas Sambas.

I am noticing a pattern here that I own a lot of Adidas shoes (and clothing). This is a matter of practicality and thrift. Through the years by way of their rewards point system and several sales I have been able to scoop up the items at a deep discount. Also a local sporting good store often puts their wares on sale.

Favourite dessert?

Probably banana creme pie. Most any sort of banana dessert is up there on my list, however.

The first thing you do when you wake up?

Turn off my 2DS XL. I use DS Picture Clock as my alarm clock so I don't get lost in the phone when I start my day.

I suppose a more correct response would be my morning routine: I turn off the 2DS XL, sit up, greet the cats, roll my futon up and put my bedding away. Then I do a series of stretches and retire to brush my teeth and handle nature. I'll greet my wife if she's home and check on our son if he's awake. Afterwards I make a cup of coffee and grab a snack. Then I head to the couch or I drag out my floor desk to check personal and work notifications while I hang out with the elderly cat.

Age you’d like to stick at?

I can't say there's any age I'd like to be at indefinitely. Immortality seems like a living hell as your loved ones wither away and pass.

Maybe the spirit of this question is what age did you most enjoy? I've had ups and downs at all ages. I seem to have the most smiling pictures in my middle-teens and middle-twenties, although here in my early forties I'm having a good time.

How many hats do you own?

Perhaps five? I can think of five but there may be more.

I have a wool Rothco Navy watch cap that is my regular cold weather hat. I have retired several of these through the years and I wear them until they implode.

I have a generic cotton blue baseball cap with white letters on it that read “best dad ever.” It was a father's day present and my second most worn hat, though I think it makes me look like somebody in the movies trying to be inconspicuous, especially if I wear sunglasses with it.

I have a black polyester hat from Challenger BMX Magazine that I absolutely adore. It has the challenger logo in a square and it's the weirdest fitting hat I've ever had. I love that it has a plastic snap in the back.

I have an absolutely destroyed brown Flexfit hat that was once black. It bears the logo of the band the Dillinger Escape Plan and a white metal fish hook on the bill. The bill has been warped into almost a tube shape and it is ripped up, covered in blood/dirt/whatever, and generally a wreck. It is my favorite hat. I found it in a friend's trunk.

I also have a Ushanka made of fake fur and polyester. I'm not really sure where it came from but I've worn it more in the summer to be funny than I have used it for its intended purpose.

Describe the last photo you took?

A bit gross but pulling up my camera reel, it appears to be a picture of a small wound on the back of my leg. It was in a spot that was difficult to see and I wanted to get a better look at it.

Worst TV show?

I really don't watch television much. If I do it's probably an anime series or something on PBS. I am not familiar with many of them but one show I do remember having great disdain for was The Big Bang Theory. I only ever saw clips of it but it always seemed like nerd blackface and I got really tired of people trying to relate to me by comparing me to characters in the show.

Perhaps that's a bit insensitive but it always felt insulting, even if they didn't mean for it to.

As a child, what was your aspiration for adulthood?

Initially I wanted to be a Stegosaurus. As I grew a bit, I wanted to be a doctor. When I learned what doctors do, I wanted to be a telephone lineman. My aspirations for adulthood as a child were very career-centric because we didn't have a lot of money and it was the way out.

I'm not sure I had very many aspirations beyond “work”, which is quite sad. I had my imagination beaten out of me at a young age and I'm only just re-learning how to play in my middle-age.

Post 001 of #100DaysToOffload

The first computer I remember having regular access to was a Tandy 1000HX. It was well beyond its prime when I got my hands on it and the details of how I acquired it are very fuzzy. I believe it came from a flea market or a yard sale or something of that nature. I just remember its weight on the dining room table.

I had seen other computers at school and out in the public but this is the first one I remember having the ability do whatever I wanted with it. I don't remember the beast having a hard drive. It was equipped with a couple of floppy drives. These things shipped with DOS and I'm almost certain DOS was present but the one very vivid memory I have of it is that it came with MINIX floppy disks.

I have no way of verifying this. I've searched and found posts from people who had MINIX running on similar computers but nothing conclusive. I suppose it's possible that I have mixed up the 1000HX with other computer memories later in life but I very distinctly remember the word MINIX and the aforementioned dining room table.

I did nothing useful with this computer. I typed a lot and it beeped a lot. I did at one point or another manage to open and read some files that were incomprehensible to me. At some point I got tired of typing on it and I simply disassembled it as I was prone to do with most electronic things within my reach as a pre-teen. Pretty stereotypical, I suppose.

A couple of years went by and I had continued exposure to various computers at school and in the world. Mostly things like the Apple ][e and some 386 machines. I lived in a semi-rural area so the technology we had was typically 5-10 years behind the rest of the world (as an aside, this is how I was successful with having fun on the telephone systems but that's another story). Somewhere around 1995 or 1996 I saw a 486 at a garage sale and bought it with money I had saved up from various odd jobs.

It had a hard disc, a floppy drive, and a very slow CD-ROM drive. It didn't boot as there wasn't an OS on the drive. I wasn't sure what to do with it at that point and left it alone for a while. On a trip to a larger city, I had visited a bookstore and saw a magazine that featured Linux. “Linux” sounded a lot like “MINIX” to me so I started thumbing through the issue.

I didn't understand most of what I was reading but there were a couple of terminal prompts listed that reminded me of what I saw on the Tandy. As I got further in the magazine I saw an ad for Walnut Creek CDROM. My memory is hazy here but I either wrote down the phone number or stole the page out of the magazine because I certainly could not afford to buy it.

They had a 12 CD collection with 11 different versions of Linux and one FreeBSD CD. I talked my parents into ordering a set for me and I think they were totally baffled but figured it was better than the crap I wanted to order out of the heavy metal magazines I read (sadly the music magazines and not the art publication).

When the discs arrived, I was only able to get RedHat and FreeBSD running. I forget the versions but this was probably 1996 so it would've likely been 5.2 and 2.2 respectively. I found the RedHat CD to have more available software so I stuck with that. I dove into everything I could: man pages, software packages, hell I even picked up Perl.

From that day on, I was daily driving Linux (and occasionally FreeBSD). The story from here is long and winding as there's 30 years of history to unpack. Perhaps I'll continue the series later.

I have managed to keep this blog and my Mastodon Account around for longer than I had intended. My Pixelfed account and a couple of others have sort of fallen by the wayside but I'm pretty excited that I've not nuked these two yet.

I have had dozens of accounts like these through the years. The online presence, screaming into the public void. I pretty consistently feel exposed and/or vain after some time and then I dismantle them. Fortunately I have private archives of a lot (not not all) of the content.

After seeing 100DaysToOffload mentioned on the fediverse, I figured I'd try to take up the challenge. I would like to have a bit more of an online presence, especially if I can mix some technical posts in there. I really enjoy reading others' blogs and musings. I also really enjoy the “small web” or the “indie web” or whatever we're calling it these days. Less ads, less corporate interest, more content for content's sake, more helping people, more ephemeral amusement.

I would also like to spend more time with my private personal diary. At the moment, I generally only dump negative thoughts into it to get it off my head. I would like to start treating it more like an inventory of my days. When I post here, I'm going to also try to make a private entry for myself while I'm at the keyboard.

Beyond that, I feel like more long form writing will help me focus and be more creative. It may not be perfectly edited (or edited at all) but it'll give me some sort of outlet for practice.

So with that, I close post zero. Perhaps it's cheating to have the first post be about posting? There will be greater variety over the next year if I manage to stick with this and not feel like I've over-committed myself to too many things.

#100DaysToOffload