Contemplations of a CS undergrad

So I just had my holiday in Kuwait for 7 weeks with my fiancée. It wasn’t a productive time code wise, but it was a time for personal growth.

In more relevant matters, I have made a decision regarding one of my projects;

I have dropped the mod called SurvivalCraft.

I’m going to admit that it was partially down to diffiulty, and as a result, partially down to time. It was my first time writing code that I have yet to fully realise a decent and capable solution for. I felt I did quite well, as when it worked; it worked well. When it didn’t, it was clearly a bug. The algorithm seemed to be fine, but my integration of it into Minecraft was about as poor as you could get.

It would be obvious that I designed and coded the algorithm completely separately from the game, then forced it in. It may also be obvious that I didn’t do any form of unit testing or integration testing. Call that noobishness, I’m still not one to do automated testing on a hobby project. I might one day though.

It’s good to know when to quit a project you can’t complete on a realistic schedule. I have the will to finish it, and maybe, one day I’ll skip enough classes to find the time between hobbies to actually do so, but that’s demanding and pulls from time more productively spent improving my skills on projects closer to my ability. If I were to reattempt an A* algorithm, I’d reattempt it in a closed, non-minecraft, environment so I can ensure I understand it before using it in a live environment.

In wake of this, I have started a new project

You might think Are you mad? Alas, no. I have dropped other hobbies and time wasters and took on PHP freelancing as my side profession again. So, I have a lot of time for PHP. And yes, I just heard you groan. PHP isn’t a great language, and I don’t enjoy working with it as much as other languages, but it’s where the freelancer money is.

As you did, I groaned when I realised I was delving back into the pits of PHP. You might know, if you’ve known me prior to this blog, that I developed a website called The Rotating Signature Host and that I was planning a massive upgrade to it. It took me two years and I never finished because I didn’t quit the project when I should have. Re-write after re-write I never made any real progress on the front end. I spent all of my time showing off the new features to myself. I built an intricate and complex system. It made it harder for programmers to make mistakes, I said. I also thought that I did a great job of “hiding the code” from the programmers.

And what a fool I was for thinking it. After working with Minecraft mods, and other programmers on my course, I realised that you can’t stop a bad programmer from being bad. If you make an amazing API or framework, they’ll break it. If you make it too well, they’ll ask you enough questions that you essentially write the code for them.

I dropped that project long ago. About 1 year. I kept the code around because I felt it was going to be salvagable, even if only a few hundred lines out of the 20K+ that I had written.

I was right.

I recently started freelancing, as mentioned earlier, and this left me with the need for an API. Now, I was going to look into CakePHP or one of the others, but I looked into many of them and realised they were frameworks and not simple APIs. I don’t particularly like how controlling, verbose and strict they often are. Or how they tend to want to serve a single purpose, such as blog content development or simple dynamic sites.

They’re often also geared towards PHP Programmers. I’ve worked in PHP long enough to know that this is not a good thing to realise.

I’m very fond of Java and other more Object Oriented languages. But I also love how dynamic PHP is. How unstrict it can be. I like how I don’t have to pre-define every variable and how much simpler and more readable code looks, despite the sometimes ugly syntax.

Combine all of this and there was one logical conclusion for me. Well, two, but I ignored one of them, and decided to embark on a new side-project, something I sorely missed once I dropped SurvivalCraft and killed the RotatrFramework.

What is CleanPHP? It’s a simple Object Oriented PHP API which attempts to remove a lot of ugly boilerplate code from PHP and introduce more object oriented solutions to current problems, as well as implement a useful standard library to the PHP ecosystem.

The best part? It has a tiny core, and beyond the core it is 100% modular. It does not force you to have any special configuration, a database installed, specific paths and path names.

It aims to look and feel like an Object Oriented interface.

It is not in any form of “alpha” or “beta” right now. It’s just an early, Open Source, build of my new toy. I am implementing what I have used in upcoming work in order to field test it early. It’s most certainly workable right now, but it’s no where near complete and is missing many features I plan.

If you have any criticisms of it so far, please comment or leave me some form of message on github or just improve it yourself.