At work we have an asynchronous standup meeting every morning. I found it pretty hard because I spend the intervening time thinking about other things and my memory isn't 100% clear about where I was last night.
In contrast I am often really engaged with what I am doing at quitting time and have a very good idea what I am going to do next.
I reconcile this by writing my standup report with sections titled "I did..." and "I plan to..." at the end of the day with the expectation that these won't align 100% perfectly.
This is not only good for explaining to the team what I am up to but it in the morning it helps me get back up to speed.
For side projects I:
(1) use a limited range of tools and get into good habits when it comes to setting tools up. For instance you can get driven crazy with Python if you don't have good habits with venvs. Doing a side project to "learn a new programming language" is an almost certain way to make a project that accomplishes nothing else. I use the same tools I use at work as much as I can.
Almost everything I write has a configuration file in a ".something" directory in my home directory, since I've made it a habit it is easy to clone my code on a server or another dev machine, create a new instance.
(2) I write a lot of runbook documentation and I'm also disciplined about project setup. Sometimes I dread bringing a project out of mothballs after 9 months but time and time again I find my docs, follow them step by step and I up 'n running pretty fast.