Kevin's Research Blog

Life: Fail Fast, Fail Often... Or...

Several months ago I came across a popular quote, "Fail Fast, Fail Often". Is this even good advice? Or has it just led me to have more half-completed projects that are just failures because they never got any initial success?

New Perspective

Yesterday I began watching this new TV Show available through Hulu on Disney+ in Canada called Not Dead Yet, in the second episode there is a line about doing stuff that you might not think matters in the current moment, but it might affect someone else in a positive way, or matter in the future. I cannot recall the exact line which triggered me to re-think Fail Fast, Fail Often, however if you watch the episode it should be clear.

I have a problem where I tend to create a lot of incomplete projects, due to them not gaining enough immediate traction or praise from either my peers on LinkedIn, or other people in the public. I end up placing the entire project and idea's success in the hands of other people, rather than myself. It's also rather interesting that the projects which I don't immediately make public, are usually more complete than the projects I immediately try to put up on GitHub. A lot of personal projects which I never make public as I don't expect anyone else to use them, tend to be the most complete, feature-rich, and useful. I never liked to Boast, in fact I hate boasting so much, that I really dislike when others overly boast as well, I find it incredibly irritating and immature. However, I began to make more projects public out of a personal desperation to get my career back on track, as a past co-worker mentioned how GitHub commits can look good to potential employers, but I feel this has only made me a worse person, and me to release worse code and projects as a result.

At this new stage of my life journey that I am entering, I am no longer desperate for employment, and as a result, I no longer feel as compelled to overly share my personal projects as much anymore. Which I think will soon be a good thing, as I have been working more on real passion projects that I actually care about, rather than projects a potential employer might expect to see on my GitHub. I am catering to my needs now, rather than trying to shape myself into what a potential employer wants me to be.

Some Successful Projects

I do have some successful projects on my GitHub, projects which I created a very long time ago, but then later neglected and stopped working on. I didn't realize until very recently that some of these older projects I created actually got noticed on GitHub, as some people have starred them. Let's go through some of them here to discuss perhaps why it might even be a good ideas to revisit these projects, and the actual benefits these projects could potentially provide.

fpc-docker: This project is just the source Dockerfiles for some images I have on Docker hub which can assist with compiling FreePascal programs within a docker container, which also supports cross-compiling to other targets. The Object Pascal world desperately needs more support like this, as not many people with DevOps experience in containers are using it. This limits the overall accessibility of Object Pascal if there are fewer ways to build and use it. This project addresses that, and I should perhaps update these images soon.

Supervisor: A project I didn't expect to get as noticed as this, as it was just a fun side project for myself. However, it has a very valid use-case, regardless of it using Object Pascal, and in fact it is a part of it's benefit. I wrote this as I found the Python version, supervisord to be a bit too bloated for use inside a container, unless the container already has Python in it. As a result, I wanted to write a program which is similar in features, but has very little dependencies required to be installed inside the container, and being very small in size. This project solves a valid problem I had with containers, and I think some people seemed to have noticed that as well. This project would also be worth re-visiting as a result, as I feel it can only become better over time. The entire process manager uses Pascal Script programs to write service files, so it is very programmable already, and if I add additional functions, it can become only even more powerful.

pim: Probably the most unexpected of the bunch, as this is a very personal repo with programs I wrote only for my own personal use, but it seems that other people have also found some good use from it. This is a great example from that quote from the TV show, as I just never know how any of the projects I write might affect someone else. Clearly a few people found the projects in this repo of use.

mcslib: A library for a server I wrote, the Memory Card Server. I once had a YouTube video showing off how neat this is, and it seems that I'm not the only one who thought it was useful in some applications, as it has stars, and has a fair amount of downloads on Docker Hub, which I didn't expect as much. I tried to bring it up to my peers on LinkedIn and to my boss at my job at the time, and nobody seemed to even care, so I ended up moving on... However, it seems that a decent amount of people have found this project useful enough, that perhaps it might not be a bad idea to continue working and evolving this project as well. I was really excited about this project when I first created it, as it is really cool to see how seamless it works. It isn't very secure though, so it cannot be used on untrusted networks, but if used say inside a closed micro-services network where only a couple micro-services are being synced using it, then it should work well. That was one of the original ideas for this, was to effortless sync raw memory between processes, or even servers with as little friction as possible.

jslib: Another project that I'm impressed has even 3 stars, but it has. I can see why it is useful too, as I use it in almost all of my web applications built in pas2js and still do occasionally commit new updates I make to it. For someone building web applications in Object Pascal in pas2js, I can see why people would be interested in this project. It has a decent amount of units to make some tasks just a bit easier and less tedious.

Stars aren't everything

Something I'd also like to mention, is that I rarely if ever star anything on GitHub, and I feel that I'm not the only person like this. So, this would imply that regardless of how low these stars might be on paper, the reality is that a far more amount of people actually use these projects, these stars just help me understand where most of these unaccounted people might be hiding. However, I feel that it might actually be wise to focus my attention now, not on creating new project after new project, but rather focus on what I can already do great and improve on those projects as best as I can, as they already have people interested, which is then easier to gain even more traction, rather than starting yet another new project which might not see any stars for years to come.

All of these aforementioned projects also interest me a lot. One project I absolutely loved working on Supervisor, as working on Pascal Script in a very useful program like this was incredibly satisfying. I actually moved on from this project as when I tried to compile it on ARM64, it wouldn't build, and so I moved onto a new similar-ish project which was able to compile on ARM64. However, earlier this year, REM Object's Pascal Script began adding support for ARM64, almost felt like a sign back then, but at that time I was still ignorant about how many stars my Supervisor project actually had, and that some people were actually interested in this project. I think it's finally time that I work on the projects that both I care about, and that other people also seem to care about. These projects have stars for a reason, and some people are expecting these projects to continually improve, and now I feel like I have a reason to continue working on these projects, over constantly trying to create another project which may not even go anywhere.

Conclusion

Well, I think the last paragraph of that last section really says it all. But, the moral of the story here, is that you shouldn't just abandon or move on from a project which you might feel is going nowhere, and it's always important to go back onto your GitHub to see which projects are actually gaining some traction with people as a guiding light of sorts for which of your many passion projects you should work on.

I'll be going homeless again next month, well actually a bit sooner, and I think when I sit in the public library then to work on something, it will be something that people will care about and might actually go somewhere. Where would Linux be if Linus didn't continue because Linux didn't originally get traction? Linux wouldn't exist, it's because Linus believed in Linux, that he pushed forward regardless of what some other people were saying about it. Looking at you Minix Guy.

#current #thoughts