I have a thing with distractions. I get distracted way too easily. My mind wanders and thinks of all kinds of things when i am trying to focus on solving a specific task at hand. It can be that i get all kinds of extra ideas about the project that i want to pursue or i start thinking of outside things that goes on in my head. The result is mostly that i move my focus away from the task i should be solving and into the next thing that popped up in my head. Give me an internet connection and this just gets worse. A LOT worse. With the browser being one tab away, i am quickly taken to a 30 minute+ search/news reading/code browsing/etc. I seem to have difficulties controlling this urge.
I have found out that it helps being offline. It makes my browsing fail and i can slowly put my focus on the task at hand. Assuming that task does not require a working internet connection.
For my personal projects, i always make sure that i can develop them while being offline. I can live with an initial setup of downloading fresh dependencies and then go offline, but not if a connection is needed every time i build/run my code.
This means that the whole idea of SaaS software for project management, UX prototyping, graphics tools, etc. is dead in the water for me. They simply MUST work when i have no internet connection. And once i come back online, i would like to be able to sync back up my changes.
This is why i came up with the plain text issue tracking specification. Some people would have chosen to go with e.g. taskwarrior, but i prefer the simple approach of just having plain text files that everybody can read and copy around as they please. There might also be other solutions out there than taskwarrior, but being a technical guy, it is just fun to create and make my own solutions. Especially when it is done as a hobby project and not a business.
For UX prototyping i have not found the perfect solution yet. I really love penpot but it being a SaaS it breaks my flow. Even if i run it locally in a docker container, it is far from optimal. It is clunky and resource intensive to run it that way, and synchronizing changes between devices suddenly becomes next to impossible.
And one of the biggest benefits of having an offline first approach is that when you end up in scenarios with bad internet connection, things are still working. With no slowdown.