In the spring of 8th grade, before my friends and I entered AP Computer Science, we went in the direction of developing programs. Two friends developed a simple but quite fun retro-style “racer” similar to Bill Gates’ Donkey game. The web programmer I was, I decided to develop ClearCloud, a file storage service. I had read an O’Reilly PHP book with a section explaining how to handle file uploads and I decided to quickly hack one up.
The result is a continuing file storage service that still exists today. (https://www.mywikis.com/clearcloud)
While it (barely) works, it is very hacky. The code is absolutely terrible. I followed no conventions except what felt, at the time, to be “right.” The result is an unmaintainable code base that cannot support any expansion or addition of features. Simple security flaws are patched, but not complex ones.
I realized this a year ago and began work on making a new ClearCloud from scratch. Today, I still do not have a better version. It was almost going to be my team’s Computer Science 3 class final project, but it was decided to make BoxBot. (Visit boxbot.me for more info.)
This time, I want to achieve several goals:
- A clear distinction between frontend and backend. The previous version horrendously mixed the two together.
- Object-oriented design. The old version was a miserable (but educational) attempt at object-oriented programming. This time, it’ll be better now that I finally understand what it means. Modularity is also a central component of this.
- Clean, readable code that makes sense and is hopefully well-documented. While documentation isn’t my priority, clean code is.
When I had the opportunity to work on projects such as Terml.io, Pattr, BoxBot, etc., I gained exposure to Python with a heavy amount of Flask. The overarching format was a single-file Python script that wasn’t very object-oriented. For the purposes of ClearCloud 2, I have seen first-hand that this won’t be enough. There’s simply not enough modularity or extensibility offered by this format. Furthermore, I am interested in implementing CC2 with Apache/Nginx traditional systems and not WSGI. Finally, the language that I have been most comfortable in implementing frontend-backend unions is PHP. I agree that it might not be a good idea to mix the frontend with the backend, as that has been the root of my problem with adding features to ClearCloud. However, I am not in the mood of maintaining a daemon that continually runs on a VPS, and products like Django and Flask pose the same issue. Moreover, the backend will probably be using features that PHP offers in its native libraries. (At this point, Python libraries are not something I want to deal with.) This is why I have decided to continue using PHP for the development of CC2.
You may now pelt your rotten tomatoes at me.
Anyway, I will probably move this to GitHub, as long as they don’t go down again. I don’t know if anybody wants to help me this time, but you’re more than welcome to do so. Just ping me if you know me, and if you don’t know me, you may find my contact information on this website.
Hoping for the best.