Back to the archive

From the archive

Intersection of Web Development - 2016

On this page

What’s on in 2016

The magic roundabout

By Cathcam (Own work) [CC BY-SA 4.0], via Wikimedia Commons

We are facing so many options.

As an IT professional mainly focused on web-based application development, I constantly feel that the world of web development has been changing in a way that no one is able to catch up.

Not only are new libraries and frameworks being developed every day, but the tools you use to write code, the platform you run your code on, and the way you work with your team have also been changing very rapidly as far as I can remember.

Here I am just trying to clear my thoughts in a rapidly changing era, so that during this process I am able to think this through to understand what the next cool thing to follow is, and what the next thing to give up is. This is by no means a comprehensive review of all things available; instead it’s more about the things I am paying attention to and care about.

Frontend Programming

Here I mean more about JavaScript (I am not a really good CSS guy, it took me quite a while to get my head around CSS transform and animation).

Angular – I am in the Angular camp, and wrote quite a few applications using Angular 1. Of course you cannot use that for the next few years, because Angular 2 is now out there in the wild, and is now becoming the new fancy tool everyone wants to get their hands on.

ECMAScript 6 & TypeScript – I’ve been following Angular 2, as well as the TypeScript and ECMAScript 6 it brings. I think I’ll start to use Angular 2, written in TypeScript. It is an easy decision. I think it has a future due to its modern syntax, great performance and active ecosystem and community. With more browsers now supporting ES6 natively, I think sometimes for smaller projects maybe I can just write pure ES6.

React – I haven’t used React in production, and I feel like Angular was, most of the time, an easier solution for the problem I was trying to solve. Of course, I will be getting into React more. I don’t want to be the guy who has only a hammer, and I’d prefer not to try to see all my problems as nails (even if they are all nails, I’ll do it in a different way anyway; a wrench may just work too).

Backend Programming

I have a few things in mind that may be used as the backend for my frontend application written in the fancy single-page-application way.

.Net MVC – I am fine with this one in C#, and I think it will be around for almost as far as I can foresee. I’ve been writing a lot of MVC and API stuff and I do see it becoming a really good backend language with great performance and an efficient and enjoyable development process.

.Net Core – This is a tricky one. I think it’s been around for a while, and it is kind of similar to the one above in terms of the code you write. However, it is quite different in the way that your dev-tools and deployment stack will change quite a bit. I’ve got quite a few things to learn, especially how to run this in a non-Windows environment, like on Linux with Docker. Also because the ecosystem is not that mature compared to the well-developed MVC world, I don’t see myself using this in production in the next few months.

PHP – Well, this is just a classic thing you kind of have to know. Random projects written in WordPress will be a problem you face every now and then if you work in a digital agency. Of course you have fancy things like PHP7, Laravel and Symfony. I would say I’ll always keep myself up-to-date on new features and capabilities, but this will not be my go-to language to start a new project in the next few months.

Golang – I like Golang, especially its simplicity and performance. I’ve done a few projects with a Golang API service. It worked well and was fast and reliable. With an NGINX proxy in front of it I can get much faster performance than what I can get from IIS + .Net. Also, because of Docker, hosting Golang projects is less expensive compared to the .Net stack, so some clients tend to like the cheaper and faster Golang solution.

NodeJS – I am not a fan of JavaScript as a backend. The main reason I don’t like JavaScript is a little bit personal, but I always feel the async nature of JavaScript makes me always feel like I don’t have total control of what’s going on. In .Net for example, you can control your code to run in both sync and async ways, and a similar thing can be done in Golang. However in JavaScript, callbacks and / or promises are driving me kind of crazy.

Swift – A newcomer in the “full stack” language camp. I am not an Apple guy (all my Macs run Arch Linux), so I didn’t pay much attention to Swift 1 and 2 when they were released, during which time people said it was a great time to learn a new language because it’s Apple and because it’s new. I was not impressed until it was made open source and you could run it on Apple platforms as well as on Linux. My opinion, considering the dramatic changes when Swift 3 was released, is that I will wait for the language and the ecosystem to develop a little bit before I dive into it and build anything serious.

Ruby on Rails & Python – I am not a fan of those, mainly because of the performance issues and the dependency thing that I just have problems getting to work easily. I used Ruby on Rails briefly but decided to go back to .Net and Golang after a while.

Java – I am not a “commercial” Java programmer. I mean, I know the basics and the fundamentals of J2EE and J2SE, but I am not really familiar with the community and the ecosystem. I understand it is still a really important language, so I guess I’ll learn it if I really need to.

Cloud

The cloud is now part of developers’ everyday lives. I mainly use 4 different providers: AWS, Azure, Google Cloud and Digital Ocean.

AWS – I like AWS a lot more than Azure, mainly due to its simplicity and simpler interface, and also because I started earlier so comparatively I have more experience with it. I use it for almost everything except hosting .Net web applications. The idea of having a Windows virtual machine and knowing that you need to manage it is quite painful. I also like the APIs it provides, which are simple and easy to use in different environments, unlike Azure, where I sometimes need to find something called “PowerShell” to get it working without much trouble.

Azure – This is my go-to choice for .Net applications and MS SQL databases. And of course for some features like auto-scaling and auto-deployment it’s easier to set up here than in AWS, which normally requires some complicated configuration. It’s expensive, though, and normally it costs A$100+ a month to host a website with proper backup, scaling and performance. To be fair, AWS does perform great if you pay it that much money, but I guess it’s just harder to set up and maintain.

Google Cloud – Google Cloud is simple, has fewer features compared to the above two, yet still gives me a lot more than what I need to do. The interface is easier to follow and Google does have a really good API in place. A recent rebranding helped to group everything together and make things a lot easier to find and understand. The pricing is a plus as it is automatically discounted based on usage, unlike Azure where you need to spend a lot of money or like AWS where you need to commit to some resources in advance. One thing I like especially is the Golang support because they are both from Google, so it’s getting first-class support, just like C# on Azure.

Digital Ocean – This is a relatively new player with simple pricing and user interface. I use Digital Ocean mainly for personal stuff as the cost is more predictable than other services. There are two reasons I cannot use it too much for commercial things: the product is quite simple, basically only Droplets (VMs) and Storage (EBS), so if you want to build something like a serverless solution it is not available. Another reason is the limited data centre locations, as I live in Australia and many companies have a policy that they have to store their data on Australian servers. The Droplets are, to be honest, really fast and the data allowance is quite generous too.

Other Topics?

There are so many things that I can talk about, like:

  • HTML Desktop Apps and HTML Mobile Apps
  • Web Sockets & Realtime Web Applications
  • Server architectures and delivery mechanisms

However, what I am trying to say is that the web, built with HTML, JS and CSS mainly, is now becoming a major channel to deliver user interfaces because of its simplicity in delivery, high scalability, high availability and ease of maintenance and upgrade. Whether you are in a browser, or on a desktop application, or on a mobile, or maybe even a billboard on a building, you are looking at HTML, JS and CSS.

So, get ready for a more complicated but exciting Web development experience.