What can I say, but Apple your butterfly keyboard doesn't fly. I was annoyed that my "b"'s double hit, but when my command key fell off I finally made a trip to the Apple Store to get it replaced. It took 3 days, so that was 3 days without my MacBook. What to do during this time? I turned on my desktop and booted to Fedora for the first time in a while.
Overall, Fedora has come a long way for usability. Wow, I didn't care too much about my Mac anymore!
Using Fedora
I was on FC30 and immediately upgraded to FC31 because why not. I noticed I had RabbitMQ installed and uninstalled it since it blocked the upgrade. I could install it back, but maybe I just won't bother and just use Kafka or NSQ.. a time for later. I had my ssh keys, so It was easy to switch computers with same identity. I had backed up the whole lot of my code, so it was easy to git clone from my private repositories.
Bootstrapping
Bootstrapping your system is the one thing I should have learned out of all this time, but only recently got into it. I looked at my Mac bootstrap script (barebones) and created one for Fedora and checked it in. Instead of using brew, I opted for dnf. I decided to use sdkman to install java, gradle and maven. I'm glad n is on Fedora as it was a breeze to install node. Rust was already installed and updated 😀. I paused for a bit and thought hard about what I needed then it dawned on me. Docker, Brave Browser, VSCode, Intellij and DropBox. dnf took care of Docker, Brave and VSCode. Intellij and Dropbox was taken care of by Snap package manager. It was easy to script in and check in.
Sure, I could complain about having to know about this package manager and that package manager, but it is a hell of a lot better than my Windows days where I would backup exe installers and zip files then manually run all of these when I reinstalled. Windows reinstalls were more frequent than any OS I've used. 5-ish years with Mac OS and never had to re-install, but I did have to move from one laptop to another which was painless. Bootstrap scripts make this painless.
Today, I started the switch to Zsh.
I highly recommend coming up with bootstrap scripts for development environments. Brew actually has a way to do bootstrapping, which I need to look into properly.
Missing Software
Onenote is one of them, but they have an online version. I may switch my notes out of OneNote though. Commonly used feature (headers) sets default font, which is weird. Don't think they plan to add custom fonts for it. Besides putting my eggs all in one basket is usually a bad idea.
OneDrive and GDrive don't have native linux clients so I will use Dropbox more from now.
Samsung Portable SSD allows encryption of your SSD which I used and is only for Windows/Mac, so my SSD was unusable on Fedora. Time to decrypt and use vendor neutral encryption instead.
Adobe suite, but that's fine.
Didn't try to hard to try to replace everything. Navicat is useful for DB management and did not bother.
DNS Relevation
When it came down to let me pull my projects. I remembered that I use .internal domains that directed to internal server ip via VPN, but I used a hosts file for that on my Mac. Not portable! I figure it is time to come up with naming patterns for servers and domains. Bust out OneNote created a new note in my Infrastructure Knowledge Base section and jotted down what I was already doing and how that was gonna change.
Decided to use internal, private TLD domains. internal on my home network is resolved using DNSMasq to point to the internal web proxy. This will change once I have a proper internal DNS server. private will be the immediate Local Area Network, so my desktop, server, macbook etc. will use private. If I were a machine in a DC then private TLD would resolve to machines in the DC. internal would be any DC and {dc}.{etc}.internal would be specific DC.
I set up the DNS to match what I wanted on my home router and voila I can ssh in with proper host names. Of course, I had to modify my software network services to match this. HAProxy and NGINX, so I could access my blog's admin site and internal npm registry with a domain not located in my hosts file! Skipping forward, it was a fun ordeal to get it all working properly. Now I can turn on my desktop and access a internal domain. My router now directs private TLD to my home server, so MySQL, Redis and etc. are all there and I'll change the rest of my projects soon to use private. Thank god for my easy config provider.
I gotta say DD-WRT is great software to have to configure your router beyond what vendor software provides.
Last Words
It is a good experience going from something back to nothing and back to something. You know what puts you in this mindset? Docker. Reproducibility is key to not wasting time.
Fedora is great. Mac is off the pedestal.
I switched to Zsh in the meanwhile.