After completing the Thirty Day Challenge, I opened up my Python books, took a look at Django for web development in Python, and took another look at React JS. The React pursuit has taken me into another dimension. Web development has changed dramatically since becoming a professional Java developer in 2005. This will be the first in a series of articles about my transformation into the new dimension.

My world was surrounded by the Apache web server with Tomcat, Eclipse, Oracle and VMWare. Not much was considered regarding JavaScript until ExtJS was added. That was the extent of my work and it stayed the same for years. Honestly, I didn’t consider anything beyond Java or PHP. Perl wasn’t a factor anymore. Python was used with Zope and I ran a Zope CMS server for a few years at home. I only ran my own server to experiment with ideas. For instance, a friend fell in love with someone in another country. They met in a public chatroom and wanted to privately communicate live. I wrote a chatroom so that they could chat privately.

Before I became a software engineer, the whole purpose of writing code was to solve problems. There was a need to monitor applications and scrape logs on several servers. Nagios was perfect, but I had to write just about every plugin and since logs create history issues when a human isn’t there to monitor 24/7, I created specialized triggers that needed manual resetting whenever a log entry showed a temporary problem. Intermittent problems are the hardest to troubleshoot. Analyzing patterns provide probable evidence to help pinpoint the problem. Customizing existing tools without modifying the core tools became a specialty I loved doing and I thought that becoming a software engineer would better suit this endeavor. I was wrong.

The tedious work with Java, Tomcat, Apache and ExtJS broke me. It wasn’t the idea of having to write code every day. It was losing sight of the main goal when each one of these tools had issues of their own. Creating virtual networks was a nightmare – they didn’t work all of the time. It seemed like even written instructions weren’t guaranteed to work. Little did I know that new tools were coming that would replace these, tools that allow the developer to focus on developing. Below is a list of some of the tools that I’m learning, focusing on the development as a whole and seemingly better designed as if they answered the call by developers to integrate things right.

Node.js – When I read that now JavaScript could be ran on a server, I was skeptical. The purpose is to run processing on the client side so that it would free up the server for scalability. That’s really not what Node.js is about. Node is built on the Google Chrome V8 engine to run on a machine as a development and deploying tool. There are those who use Node for web engineering, but the overlying strength is allowing developers to develop JavaScript faster and have hot reloading of web pages every time a change is saved. Node is tied to processes instead of documents – There are no window or document objects. The process is the object, so just like the Python shell, JavaScript can be run in real time. There is also the Node Package manager (NPM), which wraps tools into processes and can be saved as dependencies in other packages. A team of developers can install a package to their IDE tools and have all of the tools needed for development. HTTP and CSS can be automatically built from SASS and Pug. There’s not enough room to explain here. Node.js is powerful.

Webpack – A Node package that is designed for use in a development environment to build great websites. Tools have been designed for this, such as the Webpack Development Server; there’s no need to run LAMP or WAMP for developing with Webpack. I’m just starting to learn how to use it. I’ll write more about it in the future.

Pug (Formerly Jade) – Pug turns HTML coding into a programming language with conditional statements, loops, includes and so on. This is perfect for tools such as Webpack running in VSCode. Pug files can be used as templates with include files which can be written into other files and save from writing repeated code. While back-end tools can generate HTML, building the static HTML this way saves the back-end server to process more requests.

SASS – This is like Pug for CSS in that it is a preprocessor for writing a friendlier style sheet code. It is Node-friendly as well.

React JS – JavaScript Framework for building user interfaces. There’s not much I can say about it at this point. A desire to lean React JS led to all of the tools above. It is written in a language called JSX (JavaScript XML) and Babel translates it to JavaScript. More to come.

All of this is bringing back the passion I possessed in the mid-Nineties when it was all new to me. Python and Django are coming along too, but now the focus is to separate front-end and back-end servers and use RESTful APIs extensively in web development. The tools mentioned above are for front-end development. There are many reasons to minimize server-side processing; I don’t think Facebook would look good with latency issues from serving millions of users in instances. Passing the work to the web browsers make more people happy (even when their tablets crash) then waiting and waiting for the server to respond when overloaded.

I’m looking forward to learning more and writing about it.