khrykin / StrategrDesktop

No-Fuss Time Management App
https://khrykin.github.io/strategr/
GNU General Public License v3.0
311 stars 34 forks source link

Linux version request + story time + gratitude #12

Open SquareBottle opened 4 years ago

SquareBottle commented 4 years ago

TL;DR - Strategr has made a shockingly big, shockingly fast difference for both my productivity and my mental rehabilitation. I want you to know that. Please make a linux version. That will let me use my all my top-choice software for every part of my workflow. Whether you make it or not, I want you to know that I'm incredibly thankful for Strategr. For anyone struggling to become productive again after a long period of total inactivity for any reason, you can see the workflow that finally worked for me (in the story below).

Here is a story that shows exactly where and how Strategr fits into my workflow and drastically changed my life for the better. I'm not a novelist, but I'll do my best to at least make it tolerable.

Alright then, let's hear it.

I had a pretty severe medical emergency that required years of treatment before I could even begin to get back to normal. My family and I knew that rehabilitating my atrophied muscles would be a hard obstacle that would take a lot of work. What we all underestimated was the atrophy of my mental stamina, focus, work habits, etc. It's been rough, to say the least.

Oh boy, here we go.

I've been using the pomodoro technique for a while. At first it was hard to complete even a single "pomo" (a 25-minute unit of work). Over the course of a year and a half, I've gotten it so that I can get up to 4 on a good day. I think I got 5 a couple times, but 2 completed pomos per workday was most common. I've also managed to get from trying to work once a day to being able to work 4-5 days per week.

It's a major improvement, yes, but still far from the 16 pomos of an 8-hour workday. And again, it took a year and a half to get this far.

The first time I used Strategr... well, actually, it didn't do much for me. I played with it, but it didn't really seem to offer anything that other programs didn't. It seemed like making and maintaining Strategr routines was just another thing do. So, after a day or two, I stopped using it.

Uhhh ...

Months passed, during which I tried and failed to implement different workflows and use different tools. I recently discovered a workflow (the Zettelkasten method, if you're curious) that seems to be perfect for some of the biggest problems in my work. Strategr doesn't actually have anything to do with how the Zettelkasten method works, at least not in any obvious way. But a few paragraphs in the book I've been reading to teach myself the method (How to Take Smart Notes, by S. Ahrens) caught my eye. The gist of it is that in addition to reading with a pen in hand, it's good to have a to-do list in front of me so that I can stay on track with just a glance instead of having to stop what I'm doing, switch activities and mental modes, and switch back. I remembered Strategr's interface design and realized it might be well-suited to that kind of just-a-glance usage.

I got 10 pomos done the first day I used Strategr that way and I took two walks that day and I got some chores done and I didn't feel exhausted at the end of the day. I felt like my old self again! From then on, 6 pomos was the new low-end when I used Strategr. My rehabilitation was catapulted forward.

Holy moly! Do you really think Strategr gets credit for that?

I didn't attribute this incredible overnight improvement to Strategr at first. I happened to switch to non-reducing polyphasic sleep schedule at the same time, which is a much bigger and more dramatic life change than quiet little Strategr on the side of my screen. There's a tendency to assume that big effects must be produced by big actions, you know?

Not yet realizing the critical role that Strategr had played, I made some other adjustments to make myself more comfortable throughout my longer workday. I became ill right before doing my master's thesis, so "picking up where I left off in life" for me means trying to tackle this big, important paper that has been hanging over my head for all these years. But anyway, what that means is lots of reading and writing. Doing those things for such a longer period made me want to find a way to make it easier on my eyes since they felt strained by the end of the day.

Wow, I'm glad it had such a positive impact for you! But, well, umm ... why are you asking for a linux version of Strategr?

Being the geek I am, I built my computer. I triple-boot Windows, macOS, and Linux.

I ran out of disk space, and money was particularly tight at that moment. So, because I needed macOS for some design apps and wanted to keep Windows to preserve the possibility of playing games with friends, I wiped the linux drive despite containing being my favorite operating system. Necessity beat preference. From then on, macOS became my daily driver.

Then coronavirus came along. I remembered Folding@Home, so I installed that to help in the only way I could. But alas, the macOS version can't take advantage of Nvidia graphics cards (which I suppose is somewhat understandable given that the only mac users with Nvidia cards are a subset of Hackintosh builders). Fortunately, the apps I needed for my thesis work (Kindle App for ebooks, Zotero for reference management, Obsidian for note-taking, and Scrivener for writing the paper) were available for Windows. Ethics beat preference. So, Windows became my daily driver.

I eventually had the pivotal day I talked about earlier. As you'll recall, that meant suddenly being able to work much longer, which in turn meant strained eyes. "No big deal," I thought to myself. "I'll just find an ebook reader that'll let me fine tune how the text is displayed. And hey, I'm a designer, so I actually know enough about typography to know exactly how to help myself!" But to my surprise, there weren't many options. The few ebook readers I found were either some deal-breaker (e.g. Calibre is immensely useful for managing all my ebooks, but the built-in reader doesn't support annotation/highlighting) or were painfully ugly (I won't name names).

I looked at what was available for macOS and found even fewer options. The ebook reader that comes with macOS was nice enough, but I felt guilty about Folding@Home.

But now, I was in a position to get another drive and once again use linux. My graphics card could continue to crank out calculations for Folding@Home, and there are plenty of highly configurable ebook readers that have the features I need. Ultimately, I picked Foliate and use it in conjunction with Calibre. My workflow was a hair short of perfect synergy because Scrivener isn't officially made for linux, but I saw that plenty of people got it working and the instructions looked easy. So, everything was great --

I'm happy for that, but aren't you forgetting something?

-- Or so I thought. I was back to 2-4 pomos per day. At first I attributed this to the third and least pleasant stage of adapting to my new sleep schedule, but my pomos just didn't improve. It didn't add up.

THAT is when I realized that Strategr was the variable that'd changed.

THAT is when I realized that Strategr was essential to all that improvement I experienced.

THAT is when I realized that Strategr doesn't have a linux version.

And, finally, THAT is why I am requesting a linux version.

That's quite a story. Not to prick your windbag, but couldn't you have just stopped at requesting the linux version?

Sure, if asking for a linux version was all I wanted to do.

I'm writing all this because I want to let you know about the very personal and enormous impact Strategr has had on at least one user: me.

Additionally, I hope that anyone else struggling with anything even remotely similar to what I'm going through might be able to find their way here via google search. I've given enough specific details for them to implement a close approximation of my workflow, perhaps sparing them from needing to do as much trial and error as I did.

Ahh. So, that's everything then?

Yep! Did you get all of that?

Yeah, but it's a lot to keep in my head at once. A sequential list of the essential bits would be useful.

  1. Pretext: Thriving grad student; all classes completed and all that's left is the thesis; medical emergency; years of treatment and doing nothing all day; finally recover from original problem; succeed at physical rehabilitation; start working on thesis again...
  2. Start working again: 1 workday per week (workday goal: 5) × 1 pomo per workday (pomo goal: 16) = total of 1 (total goal: 80).
    • Pomos are units of 25 consecutive minutes of focused work
  3. See that I needed to redevelop every mental capability and behavioral habit related to being productive.
  4. Push to improve that bit by bit; try different workflows, techniques, and tools -- including Strategr, but "incorrectly."
  5. After 1.5 years of improvement: 3.5/5 workdays per week × 3/16 pomos per workday = total of 10.5/80.
    • Ranges: 4 to 5 workdays, 2 to 5 pomos
    • Distribution: positively skewed
  6. One night, switch to unconventional sleep schedule.
  7. Next morning, start using Strategr again but in a different way.
  8. That day: 10 pomos!
  9. That day and the next 10 or 11 days: 6/5 workdays (extrapolated) × 8/16 pomos = total of 48/80.
    • Ranges: 4 to 10 pomos
    • Distribution: negatively skewed
  10. Think, "It must have been the sleep schedule!"
  11. Switch to linux, stop using Strategr: back to 3.5.5 workdays per week × 3/16 pomos per workday = total of 10.5/80
  12. Think, "Wait, what about that Strategr program? I guess it was essential!"
  13. Realize it isn't available on linux.
  14. Start writing a simple, ordinary request for a linux version.
  15. Realize the personal significance and end up writing all of this so you can know how much of a difference Strategr made for me.

How's that?

My eyes glazed over, tbh.

  1. Thriving.
  2. Suddenly disabled by medical catastrophe for years.
  3. Start working again but it's very, very hard after doing nothing all day everyday for so long.
  4. Productivity inching back to normal at snail's pace; after a year and half, only about 13% back to pre-catastrophe abilities.
  5. Strategr comes along and overnight launches my rehabilitation to 60%; the maximum I could do on my best days was suddenly the minimum I was doing on my worst.
  6. Switch to linux for reasons, realize that there is no linux version of Strategr.
  7. Write all this to ask for a linux version and thank you whether that's possible or not..

Ahh! Lists are great.

Thank you for reading this very longwinded, unconventional GitHub issue. Even more so, thank you for Strategr.

khrykin commented 4 years ago

@SquareBottle Wow, that's definitely the longest issue I've seen on Github 😅 I've never even thought that Strategr can be so helpful in dealing with a medical condition, and it gives a completely different perspective for me. I'm glad if it improves your life!

Although there is very little work that needs to be done to make Strategr available on Linux, I don't have a convenient Linux machine at my disposal at the moment. Right now, I'm in the final stages of releasing Strategr for iOS, so maybe that will enable you to use it again? However, after the iOS release, I will definitely get to the Linux version.

Best wishes, and feel well!

snj33v commented 4 years ago

linux build is definitely possible, made the build after minimal changes, @SquareBottle kudos that stratgr helped you

SquareBottle commented 4 years ago

@khrykin Yeah, I don't think it ever would've occurred to me either that something like Strategr could make such a big difference for getting back to normal after a medical catastrophe. But having to retrain all my work habits, tools, and methods has certainly showed me how that some of the smallest, simplest, and most easily overlooked things often have the biggest impacts. So yeah, I just wanted to try my best to connect the dots for you so that you can really understand how much of a difference Strategr has made for me. I don't think we often get to hear these kinds of personal stories nearly as often as they happen because usually it's when things aren't working that people give any feedback at all.

And I'm happy to hear that a Linux version is not only possible, but will only take a very little amount of work. I'm looking forward to it!

I hope you do something nice for yourself on iOS release day. Take care!

@snj33v Minimal enough to tell us what you did without taking up too much of your time, please? Or is it one of those kinds of processes that likely needs to either be customized per system or modified to be more widely compatible?

And thanks for the supportive comment. :)

khrykin commented 4 years ago

@snj33v If all dependencies are set up correctly (please refer to README and CMakeLists.txt), there is a good chance that it will just compile on Linux as is, however, some minor issues might arise that would need a fix in the code. On macOS and Windows, Strager also depends on non-portable self-update libraries (Sparkle and WinSparkle), plus some OS-specific stuff like icons and file associations would need a custom setup. Otherwise, nothing is stopping it from running on Linux right now, if you'd build it yourself.

snj33v commented 4 years ago

true, i'll lose self updating ability, other than that i haven't notice anything major missing when built on linux,but didn't use any of the third party modules as finding development libraries are easier part in linux world of things, since most of the change were on CMakeLists.txt, which is related to this pr https://github.com/khrykin/StrategrDesktop/pull/5,

@khrykin and im not asking to make exception for linux, just found it easier to build this way

khrykin commented 4 years ago

@snj33v I'm not sure I'm getting your point, CMakeLists.txt seems pretty portable to me, and I believe wouldn't need any changes on Linux, given that CMake environment is properly set.

Amolith commented 4 years ago

I would be more than willing to test any dev versions but I don't know enough to make changes to the software myself. I discovered Strategr through this Awesome List of open source macOS apps and it looks very interesting but I rarely use Windows and macOS is even less frequent.

If it gets to a state where it's compilable on Linux, I'd be happy to maintain an AUR package for it as well.

snj33v commented 4 years ago

@Amolith, it can compiled in linux, i;ve been using it after some patches

Amolith commented 4 years ago

@snj33v what were the changes you made so it would work? When I run cmake ../, this is the output I get:

❯ cmake ../
CMake Error at CMakeLists.txt:8 (find_package):
  By not providing "Findcatch2.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "catch2", but
  CMake did not find one.

  Could not find a package configuration file provided by "catch2" with any
  of the following names:

    catch2Config.cmake
    catch2-config.cmake

  Add the installation prefix of "catch2" to CMAKE_PREFIX_PATH or set
  "catch2_DIR" to a directory containing one of the above files.  If "catch2"
  provides a separate development package or SDK, be sure it has been
  installed.

-- Configuring incomplete, errors occurred!
See also "/home/amolith/repos/StrategrDesktop/build/CMakeFiles/CMakeOutput.log".

I do have catch2 installed.

snj33v commented 4 years ago

typo,it's capital Catch, changes are in my fork

khrykin commented 4 years ago

@Amolith this is the problem with your cmake configuration, rather than a Linux-specific issue. Check if there's catch2 in your CMAKE_PREFIX_PATH, please refer to the cmake documentation.

khrykin commented 4 years ago

its a typo, capital Catch, changes are in my fork

That's actually true, strange. I've just pushed a quick fix, thank you.

snj33v commented 4 years ago

there is also strange behaviour with gcc, which goes away after switching to clang, ie following will throw error in gcc no matching function for call to 'rect::rect(<brace-enclosed initializer list>)' but not in clang

#include <utility>

struct rect {
    constexpr rect(std::initializer_list<float> l={}) noexcept {
    }
};

int main() {
    constexpr rect rects = rect{0, 0, 0, 0};
}
khrykin commented 4 years ago

@snj33v yeah, there might be some issues with GCC, it's untested as of now.

BradKML commented 3 years ago

@SquareBottle first things first, TL;DR Pomodoro is good, but others have found better ways to timebox (most recommending a 50-10 timebox) https://github.com/adrcotfas/Goodtime/issues/166

Another thing about Zettelkasten, you heard of https://logseq.com/ ?

For @khrykin and @snj33v there are other forced time managing apps out there like https://github.com/hovancik/stretchly and https://github.com/mmazzarolo/breathly-app ? They are also good for mindfulness.

prokoudine commented 3 years ago

Current code from git fails to build as is on Ubuntu 21.10:

[  1%] Building CXX object CMakeFiles/StrategrCore.dir/core_version.cpp.o
[  2%] Building CXX object CMakeFiles/StrategrCore.dir/core/strategy.cpp.o
In file included from /home/alex/soft/desktop/strategr/core/dragoperation.h:12,
                 from /home/alex/soft/desktop/strategr/core/strategy.h:11,
                 from /home/alex/soft/desktop/strategr/core/strategy.cpp:8:
/home/alex/soft/desktop/strategr/core/session.h:19:19: error: declaration of ‘stg::activity* stg::session::activity’ changes meaning of ‘activity’ [-fpermissive]
   19 |         activity *activity = time_slot::no_activity;
      |                   ^~~~~~~~
In file included from /home/alex/soft/desktop/strategr/core/activitylist.h:13,
                 from /home/alex/soft/desktop/strategr/core/json.h:11,
                 from /home/alex/soft/desktop/strategr/core/strategy.cpp:6:
/home/alex/soft/desktop/strategr/core/activity.h:12:12: note: ‘activity’ declared here as ‘struct stg::activity’
   12 |     struct activity {
      |            ^~~~~~~~
make[2]: *** [CMakeFiles/StrategrCore.dir/build.make:108: CMakeFiles/StrategrCore.dir/core/strategy.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:159: CMakeFiles/StrategrCore.dir/all] Error 2
make: *** [Makefile:103: all] Error 2
mxmilkiib commented 2 years ago

Slightly different error message here atm using Arch Linux (after installing catch2 and nlohmann-json);

...
[  2%] Building CXX object CMakeFiles/StrategrCore.dir/core_version.cpp.o
[  2%] Building CXX object CMakeFiles/StrategrCore.dir/core/activity.cpp.o
In file included from /home/milk/tmp/StrategrDesktop/core/activity.h:9,
                 from /home/milk/tmp/StrategrDesktop/core/activity.cpp:4:
/home/milk/tmp/StrategrDesktop/core/color.h: In constructor ‘constexpr stg::color::color(uint8_t, uint8_t, uint8_t, uint8_t)’:
/home/milk/tmp/StrategrDesktop/core/color.h:142:17: error: call to non-‘constexpr’ function ‘void stg::color::set_rgba(uint8_t, uint8_t, uint8_t, uint8_t)’
  142 |         set_rgba(red, green, blue, alpha);
      |         ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/home/milk/tmp/StrategrDesktop/core/color.h:99:14: note: ‘void stg::color::set_rgba(uint8_t, uint8_t, uint8_t, uint8_t)’ declared here
   99 |         void set_rgba(uint8_t red, uint8_t green, uint8_t blue, uint8_t alpha = 255u);
      |              ^~~~~~~~
/home/milk/tmp/StrategrDesktop/core/activity.cpp: In static member function ‘static stg::activity stg::activity::from_json(const nlohmann::json&)’:
/home/milk/tmp/StrategrDesktop/core/activity.cpp:85:34: error: ambiguous overload for ‘operator=’ (operand types are ‘stg::color’ and ‘const nlohmann::basic_json<>::value_type’ {aka ‘const nlohmann::basic_json<>’})
   85 |             color = j[keys::color];
      |                                  ^
/home/milk/tmp/StrategrDesktop/core/color.h:64:14: note: candidate: ‘stg::color& stg::color::operator=(const std::string&)’
   64 |         auto operator=(const std::string &str) -> color &;
      |              ^~~~~~~~
/home/milk/tmp/StrategrDesktop/core/color.h:20:12: note: candidate: ‘constexpr stg::color& stg::color::operator=(const stg::color&)’
   20 |     struct color {
      |            ^~~~~
/home/milk/tmp/StrategrDesktop/core/color.h:20:12: note: candidate: ‘constexpr stg::color& stg::color::operator=(stg::color&&)’
make[3]: *** [CMakeFiles/StrategrCore.dir/build.make:90: CMakeFiles/StrategrCore.dir/core/activity.cpp.o] Error 1
make[2]: *** [CMakeFiles/Makefile2:117: CMakeFiles/StrategrCore.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:151: CMakeFiles/Strategr.dir/rule] Error 2
make: *** [Makefile:150: Strategr] Error 2
klauss194 commented 2 years ago

Hey, I am getting the same error as above. Please help, if anyone is able to debug this please contact at klauss@hey.com Much appreciated thinking this is quite a cool widget