Sometimes Readwise resurfaces exactly the right quote from 6 years ago that you need today: “Convenience is all destination and no journey. But climbing a mountain is different from taking the tram to the top, even if you end up at the same place.” From this 2018 piece by Tim Wu in the nytimes
A few thoughts on my first multi-surface ride with the Joe Appaloosa.
View from the Oceanic Bridge towards Red Bank.
I hate the cold. I hate being cold. I hate going out in the cold. From November until May I am cold. Which is to say that for me to get out for a ride during that period either it’s a warm day or the bike’s ride is soooo nice that I’ll don multiple layers and brave the cold just to experience the joy of being on the Riv.
Which is what happened this morning. I layered up with the intent just to ride my bike downtown to enjoy the bike and do something about this cabin fever that’s creeping up on me. But instead of a quick pedal down Broad St, I just kept on pedaling and ended up heading up into the gravel and trails of Huber Woods.
A few thoughts:
I needed a bandana. Riding in the cold is just crazy snot fest and i was dying to blow my nose and my leather gloves weren’t cutting it.
Sometimes a triple chainring crankset is better than a double, but a double crankset is always better than a single. I loved the gearing on the Joe Appaloosa. I’m not sure what all the ratio/inches are or even the size of the chainrings size but it handled one of our areas most challenging gravel climbs with ease.
The stem is too short. The sweep back on these Tosco bars needs a 100/110 i think it’s got a 70 on it now so I as just a smidge more upright than i wanted to be and the grips were just a little too close to my legs. Fortunately I’ve got a nice used Nitto en route from eBay.
The ULTRADYNAMICO cava tires are great on asphalt, tolerable on gravel and useless when you veer off the gravel to some single track. Too much pressure. I missed my low PSI gravel kings and ended up skipping a section of single track bc i had no confidence in the cava tires.
The geometry of the bike is just mind blowing. On slight inclines i found myself just engaging my legs in a slightly different way instead of switching gears. The bike just responds to subtle difference in pedaling in a way i can’t explain.
Here’s a quick one-liner to tail -f home assistant logs from a docker image. I’m sure there are better ways to do this but I got tired of typing a bunch of commands so finally figured out this one liner to save:
iOS Users: Sharing this iOS shortcut despite its very limited use case. My dog has a longer/better attention span than I do. As a result, whenever I open Outlook on my iPhone to check my calendar, I immediately get distracted by whatever emails are at the top of my inbox and forget that I was actually using the app to check my schedule.
There’s no setting in the app to have it open in the Calendar view by default so I wrote a shortcut to solve that. If you add this to your homescreen, it will open your Outlook application to the calendar instead of the inbox. LMK if you have any questions.
Friendly warning for new users of #linkding. RTFM. This little gem is buried in the instructions: “Note that the command above will store the linkding SQLite database in the container, which means that deleting the container, for example when upgrading the installation, will also remove the database. For hosting an actual installation you usually want to store the database on the host system, rather than in the container. “ Meaning, if you just start using it out of the box, you’ll be really disappointed when you upgrade and lose all your data. AMHIK 🙂
Mentioning here how helpful the native Mac OS app Yate is for cleaning up FLAC tags. The “Mickey Hart” mix versions of Workingman’s were intermingled with the original album release and Yate was the right tool for the job to rename the album to Workingman’s Dead (Mickey Hart Mix). https://2manyrobots.com/yate/
Took me a little while to get this sorted out so I thought I’d document it here:
Music Assistant supports grouping speakers so, briefly put what you’re doing here is just creating a group with two HomePods, one playing the left channel, the other the right channel. Key here is configuring the individual HomePods to play left/right and then creating the group.
Details:
Under Music Assistant Settings, select the “players” icon (in this screenshot it has the red dot on it)
Select one of your HomePods and expand the “Audio” settings section. At the bottom you can select the channel:
Pick either the left or right, depending on your choice/location of the HomePod. Don’t forget to hit “Save” and then repeat this process for the other member of the stereo pair.
Once you’ve defined your HomePods as left/right, go back to the settings and select “Add Group Player”
From there it’s just a matter of select “Group Type” of “AirPlay” from the drop down and adding your two HomePods the group and give it a useful name like “Stereo Pair” this seems to be pretty reliably working though sometimes I have to restart the stream once or twice
It feels like magic to have no open ports on my router and still be able to access all of myself hosted services. Jotting down a few notes here on how I approached this.
First off, my primary server that I self-host all of my services on is always running a VPN so I don’t have tailscale running on that. Instead, I have tailscale running on raspberry pi that only runs nginx (to forward proxy requests to the internal server) and pi-hole.
The Nginx config has about a dozen host names so i use Nginx Proxy Manager running in a docker container on the Raspberry Pi to keep the host forwarding organized. I then setup hostnames on my DNS service (I’m grandfathered in to a free DynDNS account) to forward various hostnames like “music.Myselfhosteddomain.net” to the tailscale IP of my raspberry pi. I also have those same hostnames mapped to the internal IP of my raspberry pi using pi-holes DNS server so I don’t need to run tailscale when at home. This has proved to be a super elegant and easy to manage solution.
The only challenge was getting home assistant to do some forwarding magic which took me a while to sort out in Nginx Proxy Manager because I needed to add some custom fields, and there’s not a whole lot of documentation so posting here in case anyone runs into this issue. Note that I’m using hostnames for the port forwarding (e.g. “home.myselfhosteddomain.com” and not location based forwarding like “server.myselfhosteddomain.com/home_assistant”) so you may need to tackle this differently if doing the latter. I figure I can create limitless hostnames plus it makes managing/saving passwords in keychain a lot easier to just use a different host names for each service.
The other important step is to enable websockets support which you can do through the NPM interface:
I had created SSL certs for most of my hostnames prior to spinning up tailscale but no longer need them as I’m not accessing them through port 443 on the outside any longer so that should save me a little bit of maintenance overhead moving forward.
I spent some time writing personal automations on my iPhone to connect/disconnect from tailscale when I leave the house/connect to my car’s audio (I self host my music library and use play:sub when driving) but then later learned that under tailscale settings there’s a “VPN on Demand” section that may handle this better so I’m still fiddling with this.
Now to create some dashboards!
“The Christmas lights won’t turn on, better power cycle the server.” Filed under: Sentences Unfamiliar to Thoreau. #homeassistant
Who profits from our constant state of dissatisfaction? The answer, of course, is painfully obvious. Every industry that sells a solution to a problem you […]
The real problem, in my mind, isn’t in the nature of this particular Venture-Capital operation. Because the whole raison-d’etre of Venture Capital is to make […]
. The EU invokes a mechanism called the precautionary principle in cases where an innovation, such as GMOs, has not yet been sufficiently researched for […]
Saved Links
RSS Error: A feed could not be found at `https://links.jimwillis.org/feed/atom?`; the status code is `404` and content-type is `text/html; charset=utf-8`