Planning a "hobby project" for 2020
December 28, 2019The big issue for me this year has been getting into proper flow moments during my working hours.
The pomodoro technique has helped a little, but all other trials have been errors,
and no real progress in this front.
Less "flow" makes you more desperate
The real issue is - that I am now truly entering the "busy years" of life. This leads my attention being much more scattered, multitasking being sometimes the only option even for coding - and it is increasingly urgent to solve this issue as soon as possible. Coding while distracted is incredibly annoying, and some real solutions are needed for this.
However - life has happened to other people as well, and I have seen many people continuing coding well into their 60s (even though they most definitely did have parents and kids and other people to look after - all people older than 40 do have them), so this should be a solvable problem.
This year my creativity has been in decline. My trade mark "insane strikes of genius" leading to coding sprees of several weeks, and resulting in quick production of great quality code, have simply vanished. I have tried all I can imagine. It seems I simply have "too little free time" to let my mind actually relax, to allow for that level of subconscious creativity. A couple of times I have at least "coded in my sleep" (my another trade mark : I get bug fixes and complete subroutines in semi-lucid dreams, normally around 6am in the night). But - no long coding sprees.
My current plan is settling for the second best alternative : looking for a way to work, which would keep me addicted. Addicted on daily basis - not addicted in "sudden several-week-long coding sprees". This resembles a lot the model all "easy to learn" internet games ( Candy Crush, PackRat, etc), offer to us. These games provide 1) collectibles, 2) sound and visual effects, 3) tasks, 4) rewards, and 5) cuteness. Instant rewards, and "nagging feeling" of "could do a little better here".
How cool would that be - if I would have something exactly similar, to help me work when distracted. As the hardest part is to "get back to it" - it is so incredibly unrewarding trying to "pick up" the project for the fourth time in a week, as all previous tries got somehow ruined. And if there would be some "automated way" of storing your progress in "minute chunks of achievements" - which would actually help you, not only serve as "trophies".
Something combining the addictiveness and rewards of a web game, to
the "post-it notes" and "github archives" of your day-to-day work.
Maybe far fetched ? - but, I am going to try.
Web games may have perfect solution to "control me"
I get really easily addicted to the "easy-to-learn" web games. I wean myself out every now and then, but always get hooked on to another one relatively soon. My current addiction takes me basically all my free time.
Not getting sucked into the rabbit hole
I always select games which don't kill your character, if you stop looking at the screen.
I am not willing to sacrifice the discussions and interaction with my loved ones.
You can't plan life - and if I am "in the middle of something", that comes out as Incredibly Rude and downright misogynistic. My games don't have interactive parts - even though they are full of visual effects. This avoids me becoming the ghost person who "just sits there and plays the game". You can always fully and instantaneously wake up from the "stupor" of the game - and not regret, as the game remembers "exactly when you left".
Ingenious and inspiring psychological tricks
These web games play tricks on you, naturally. Usually the game has a "timer", which gives you one more life every 15 minutes. Your lives replenish in 1 hour - giving you essentially 20 min game time every hour. This makes it incredibly tempting to "remember to log in once an hour" as you will see the pleasant sight of full lives in your life counter. If you "run away" and only come back after hours - it doesn't yell at you "where have you been" but welcomes you with rewards.
- Imagine if work-related app could do this ?
If that is not enough, there is also "daily rewards", so every day you get extra stuff just for popping by. In addition to this, every time I "complete a task" from the little list in there, it gives a reward. I get a lot of cute characters, adorable sounds, a lot of easy tasks to complete. These kind of games have become my safety blanket giving me most of my "daily positive feedback".
- Imagine if work-related app could do this ?
I tried a couple of already-existing motivate-yourself apps, but they only had the "cute character" - no collectibles, no timers, no lists to tick off from.
The need for me to build a motivating game for myself, truly exists.
As I am a developer, what exactly would hold me back, if I would want to build just such a thing ?
But, building a web game is a real multi-expertise job, and I cannot boast in having all the skills in the bag. So, to complete this story, we need to find the rationale for "why should I learn how to build a web game". As I am a bioinformatician after all - why would I bother. Web development is a completely different game altogether.
Moving to a new field could be in order anyways
Nowadays, my plan is to re-direct my career a little. As the field of bioinformatics is maturing and moving more towards machine learning and statistical methods to manage large compendiums of data, the focus moves away from the things I am actually most intested. What interests me, is user experience, and training the user to the technology and science, while they are using the tool (having "training" as integral part of the program logic - so that nobody can use the program, and NOT accidentally also learn the science). I also want to keep the programs really accessible - so that I can reach also very inexperienced computer users - to train basically everyone. The more heavy-duty parallel computing and advanced statistics you need to do in routine analysis, the less sense it makes to build this kind of "easy-access" programs.
I have thus decided, it is time for me to start searching for new profession. Preferably in a field, which is the same way quite immature, as bioinformatics was, when I entered the field ten years ago. This would allow me to jump in to the "training" business again, once I have got the hang of the basic principles of the field.
What is a field just now emerging, then? (We exclude machine learning, for its ethical implications. Alfred Nobel invented dynamite. Got rich. Felt guilty. Main use was in war, not in mining. Put his money to a fund, to start "Nobel prizes". As of now, I don't want to become a new Nobel - I have enough guilt in my life already).
The answer is super obvious - and there is a real lack of good work force in there. And it is a field, where (the same way as in bioinformatics) you can't really "over-train" people : the need of work force is so great at the moment, that no amount of training will fill the gap.
Full stack development.
Full stack development
Full stack development.
Now I have said it.
It still scares me a bit - as that is a tall ask.
The trick is - that this is a hard field. You need to not only be a "jack of all trades" - but "master of all trades". Know enough of pretty much anything, to lift up working interactive web sites (which basically all companies need now, to enable day-to-day comfortable customer interaction). Static web sites are no problem. Adding colors and visual effects is no problem. Databases are no problem. Analysis algorithms are no problem. Storage and clever use of computational resources is no problem. But - full stack combines all these. You would build super powerful web sites, which do what your command line code used to do - right there "on the fly" as that is what customers nowadays except from the websites they interact with. The expectation is there, and all companies are falling short "why is there not a button, where I can sort my monthly expenses by the biggest bills from my telephone company" in my internet bank. We all ask these questions. And this is why full stack developer is the hottest thing there is.
The part of full stack I am completely missing, is web development. I know html, CSS, some javascript, some jQuery. Some databases, but haven't ever integrated them to web pages. I know GUIs, but have done them in Java, not in web pages.
"Enableromatic" - a web game from me to myself ?
So - now I have a tentative plan to learn at least some of the wide field of Full Stack.
I am now planning to start a pet project which :
- Demonstrates wide range of "full stack" abilities
- Generates a web-game like interface ( could be just localhost, as I am the only user )
- The web game would be then used by me to motivate myself
So - I aim to learn how to integrate all the technologies I already know, and learn enough about the front end technologies, to build a web game like interface.
And the end product of this would be something, which I could use to move my addiction to the web games, to addiction of my self-built "web game".
This game would not be a real game - but more like elaborate combination of "to-do-lists"
and some kind of "well, good boy, well done" rewards for them. It would keep track of my last-opened documents, and enable "jump right back in" for routine coding tasks.
And hopefully - if can somehow do this - combine a properly-working pomodoro system into this,
so that it could also monitor my working hours ( for the times when I need to work from home, or do extra-curricular coding activities ).
This may all be just a pipe dream - but there is an interesting web course about web development, along with another course about "full stack development", starting in March 2020.
I am now planning to get my ideas written down by then, so to build some of the game components I need, as the coding exercises of these web courses.
Will keep you posted on this.