I made it my goal back in February to start learning how to use  Node.js, and was finally able to start after nearly ten months of pushing it off. I had just finished development on Faceclash, which I can confidently say was the most complicated project I have had up to that time (it wasn't just writing the code, it was also the social issues that arose from it). I needed a break from such projects and possibly PHP itself (you can get tired of the language after working with it on such a project, but it's probably just me). That was when I decided to bring up Google and search up a few things on Node.js.

I found that a chat application was the most recommended as a starter's project. It would've also been a good way to get my feet wet with Socket.IO. But I decided I didn't want to do that just yet. After a few days of searching, I finally settled on a URL shortening tool, and settled with the name Itsy, and additionally picked up the domain itsy.ga from Freenom. When I first started working on it, I thought I could hack it together in about a day or two, because I already had the entire concept in mind already. At first the site just looked very crappy. This was mostly because I had that mentality of thinking that this would be finished in no time, and that code readability and structure did not matter for something small like this, but eventually had to redo it. It ended up taking me a little over four weeks to develop both the front-end and back-end. The funny part of all this, was when I realized at the end of the four weeks how much time I had spent on designing the site's overall look and feel, which took three of four weeks I allocated to development of the tool. The back-end was fairly simple, a little magic with Express, Handlebars, and MySQL was all that was needed. It only took two days to implement the actual shortening functionality.

Itsy URL shortener

After awhile, Itsy just didn't sound good to me anymore, and I decided to change names and after two days of name-hunting and looking up hundreds of potential domain names on Namecheap, I decided to stick with the name Oca, and decided to buy the domain name oca.li for it. I initially discovered the .li extension when I was searching for a shorter domain for my friend, as he was also going to use it for link-shortening purposes. The thinness of the domain extension just added to the beauty, it was very neat and three-letter domain names were abundant, compared to the empty shelves of .co and .me. After I confirmed the name change and secured the domain name I'd use for the actual site, I realized that I'd have to rewrite most of the code that has been laid down. This took another few days, for the fact that I'd have to change the overall design again and truly implement a responsive design (the old layout broke at 480px). This time I aimed for that minimalist feel, using little color in the content and only using it for feels. It took this to make me realize how lame the first iteration was, and how plain it looked by a screenshot.

After nearly a month of hands-on experience with Node.js, I have a fully completed project written in it, that is also ready for use by the public. Let me introduce you to my latest tool, Oca! Its simple design should be easily figured out by anyone visiting the site (assuming they have knowledge of English, but implementing multi-language support will be something totally different). The looks might or might not blow you away, but if you're using the tool and is satisfied, that's already awesome. It's being run on Heroku, on a free plan which I hope to get out of soon so that the tool can run without downtime. The site will be run completely on donations, but if I don't receive enough of those, I might have to start putting one or two ads on the site to have it support itself.

Oca URL shortener

I've got to admit, Oca did teach me a thing or two about Node.js and Express, also programming in general. I spent a few days trying to wrap my head around its non-blocking I/O and all that asynchronous stuff, which was something I was not familiar with yet. This was something new, for someone coming into Node.js from PHP (which has a blocking I/O).

A link shortener was just the tip of the iceberg. This project on its own was already enough to convince me how much potential Node.js had for my future projects. It is much faster (might be just me, but has already been proven better) than old-school PHP. With PHP, you're only in control of your application, but with Node.js, you're basically building the entire web server from scratch (it's actually easier than it seems). It gives you more control. You also have over three hundred thousand packages ready for using, much more than PHP's built in libraries. I see that the possibilities are endless now, after I've opened the door.

I already have something planned as my next project. It will also be done in Node.js and a few other technologies. I actually have three distinct project ideas, but only one will come next. The others ones will have to wait. I can tell you that it will be far more complex, compared to a starter project link shortener. But it may as well be another stepping stone to... something. That's all I can say for now.