
<h2>Introduction</h2><br />
As a young student I was first made aware of the existence of the web via NetScape Navigator way back in elementary school. At the time having a personal home computer was quite rare in my area and the web was dull and very very simple compared to what we have today. Things like web-applications, graphics, and user interaction was unheard of. It just wasn’t possible and it wasn’t what the web was used for which at the time was almost purely as a source of dully informative text. <br />
As a young boy with the inability to sit still the web and computers in general wholly uninterested me until I hit early high school when I got introduced to the internet again via an online game. This game was the first thing that drew my attention to the web. It was written in JavaScript with was far beyond my understanding. This game did mandate me being at my computer and online (when possible) and from there my interests moved to now typical teenage interests in social networks and media. I discovered that websites used “code” when I accidently hit the view source option in my browser which at the time was IE6. Out of curiosity I saved the webpage in its entirety and attempted to view it in a browser which of course didn’t work entirely. What I did learn was that by deleting sections of the HTML things changed and I could alter the appearance and content of page. This learning was made possible via the browsers ability to attempt to render even incomplete HTML without having the page fail altogether.<br />
This is simply not possible today.<br />
A modern web-application or even a modern website is built upon layers and layers of frameworks and plugins that naïve young me could not have toyed around with successfully. Indeed even the simple JS that existed at the time was mostly beyond me. However I learned how to use HTML and CSS by pure experimentation and to be more precise I would delete or change a line and see what happened to the page. Not the best way to learn but it got the job done. <br />
When I chose to pursue software development as a post-secondary degree I was only aware of a minimal amount of web technologies and programming languages. JavaScript was still foreign to me as my aforementioned strategy of deleting a line and seeing what changed was not possible when the application failed altogether. By this time web-applications had come about and I’d heard of server-side and client-side and knew that there were scripting and programming languages for both. At this point I mistakenly assumed I could learn “the way to do things”. Although I was aware of other methods, a LAMPP stack was “the way” to build websites and web-applications. Building websites would be a matter of typing up the HTML and CSS and whatever PHP you needed to pull information from a database. I was wrong.<br />
<h2>Wakeup call #1</h2><br />
Around the time I was first entering the industry as a student I was introduced finally to PHP. PHP was easy to understand and beyond installing the stack it was a breeze to get started with. I thought I had enough to finally build powerful modern web applications. I’d picked up enough JavaScript to play with jQuery. I’d recently learned of Twitter Bootstrap and was in love with its simplicity and how easy it made responsive site building. While attempting to build my own web-application I discovered that PHP worked as expected. It was quick to learn and I could make applications easily.<br />
As long as they were simple.<br />
I found that I needed to write boilerplate code over and over again. Login systems were what I first noticed. I was never sure of the security of them and I would always find flaws and bugs and just ended up re-writing them. I also discovered that protecting my databases from injection attacks was almost impossible. I had to move to Prepared Statements and PDO. I realized I was out of my depth still. I could still develop front-end interfaces with CSS and HTML but I didn’t have the skills I needed to develop large applications.<br />
<h3>Bring in the cake.</h3><br />
Then through one position I worked I was introduced to something that would change how I developed altogether. CakePHP. CakePHP is a PHP MVC framework that to my utter delight handled all the boilerplate stuff I was struggling and annoyed with. This I thought was the way I could develop full featured and powerful web-applications. Soon after being introduced to Cake I learned of the “framework de jour” Laravel. Laravel was even better than Cake. It handled boilerplate but attempted to stay out of my way as a developer. Throughout my time learning Cake and Laravel there was the buzzing noise building in the background which I staunchly ignored. This buzzing moved increasingly towards a roar. I heard about things like Angular, MEAN, Node, and countless other bits of gibberish. <br />
<h2>Wakeup call #2</h2><br />
I realized that PHP was powerful and worked in many many situations and with some tweaking could probably do anything I wanted. However that buzzing that began years prior finally became impossible to ignore. Real-time, fast, IO, data-binding, JS on server and client. Things PHP struggled with, things that modern web-applications all sought after and needed could be handled with JavaScript? The language that had stumped me when I was a young tinkerer deleting lines of HTML? I thought it was used for animations, and AJAX and nothing more? <br />
Real-time became the goal for applications. This is when I decided to jump into the MEAN stack and the new way of developing applications using Node and Angular. Only unlike PHP which had welcomed me like a gooey mess of warm chocolate. Angular and Node were full of sharp hard mountains that resisted my efforts. Every peak I scaled showed me another I had yet to conquer. First Angular, then Node and Express, then MongoDB, then Grunt, Redis, and countless other things. The MEAN stack is wonderful for developing applications that are real-time and for a cohesive architecture that uses JS everywhere. <br />
<br />
The promises and possibilities of MEAN and the technologies around it are staggering and amazing. However as a developer that is new to it, my time is being spent figuring out how each new tool is to be used. I am not so much writing my applications as I am writing “glue code” to connect other libraries and tools together. If a small amount of bitterness is detected I assure you it is there; if only because I feel like I am cheating in building applications using these helpful (if complicated) tools. Looking back at the sites I saw on NetScape in my formative years I see the difference and sheer technical improvements in today’s applications. Even calling web sites “Web Applications” denotes the extreme differences between then and now. I see that frameworks and tools like Node are the future of development on the web. This post is in a way a formal admittance of the necessity and the power that these new ways of writing applications provide.<br />
No Comments on Modern Web Development: Glue things together