« Back

Learning to love the web.

When I did my first web development back in the mid 90s it was fun. It was all just basic HTML which made sense and some stringing together of what I could find of Perl, PHP and ASP to do exactly what I needed to do.

I had done very little development previously with just a little games hacking in BASIC and C (I'll write about my history with C at some point) so this whole web thing was brand new to me.

CSS was brand new and most people barely used it, and for the little things I did I just threw some small amounts of CSS into a <style> tag in the header of my file and never really thought more about it than that.

As I progressed I got more and more interested in the server-side development part and putting together the actual pages that the user saw was not really what I was interested in at all, so as time passed and the features of the web grew in terms of what you could do with CSS and JavaScript I only followed very reluctantly.

With the browser market getting more diverse it also started to feel like more and more of a slog to keep up with keeping any site I made look relatively the same across all the browsers that were out at the time and they would also keep breaking things with every new version.

It was also the era where somehow things would never quite scale right when someone showed up with an exotic screen resolution. At the time it was not uncommon to see "Best viewed in 1024x768" but I felt that it was a lame disclaimer and I did not want to keep someone from using a site just because their computer wouldn't do the resolution I was using.

By the early 2000s PHP had also grown some of the horrible appendages that make it the terrible beast that it is today, and at the time it was pretty much the only dominant server-side platform language. This also kind of lead me to not derive much joy from the server side part of development except when I happened to manage to figure out how to do something particularly "clever".

All of this put together lead to that by the time 2005 rolled around I decided I was out of the web development game for good.

From then I primarily worked on lower level code with things ranging from games to computer vision to OS kernel code and all kinds of things in-between.

Even though I did quite a bit of networking code and that I at some point even wrote my own web server for a rather "exotic" system I didn't really do any serious web development for the next 3 years.

Then in late 2008 I did some stuff for the iPhone and I needed to do some client-server stuff. Even back then it was pretty much "the standard" to do that through a HTTP API.

I started out doing little things in PHP as that was what I knew, but I quickly came to find Rails as that was what all the developers were talking about at the time.

At that point Rails felt amazing, especially for API development with the model system and the easy JSON serialization/deserialization and the much more structured approach than the PHP I was used to and even compared to the ASP.NET at the time.

I even dared to start venturing into basic websites combined with an API for native apps to interact with. But I felt far too disconnected from front-end development by being away from it so long that it felt like too much of a stretch to learn everything I needed to do "modern" web design and I just felt like I was fighting the system because I was trying to combine "new" things with the "old" way I had done HTML in the 90s.

Then I ended up getting a website design dropped in my lap and was told "build this". It was relatively clean and simple but still something that looked nice and modern, and because of how it was going to be used it needed to be responsive.

So I set out to build the page and I decided to really try to use the latest in what was considered to be good ways of doing things. So I threw out the idea of doing s or things like that and set about learning the new div way and how to do proper modern CSS, trying to drop bad habits like inlining style tags for random objects.

I had to fight a bit with some things but overall this was a pretty great experience, and one that made me learn things like media queries, how to set up divs that expand and shrink with proper limits, how to use webfonts etc etc.

I didn't end up with the cleanest code ever but it was something that was immensely educational and that page is still up and chugging along today getting a few visitors every day.

Then as a project under the initiative we have at work to do our own projects that we have I wanted to build a system that needed a server component, a mobile app and integration with a desktop app. Because I like native code the two apps were the interesting part, but I also felt like I wanted to do something new on the server side as Rails was not that exciting any more since I already felt like I knew most of what there was to know about it.

Hence I picked Node.js for my server component. Originally I started out just writing it in raw Node but I pretty quickly moved to using Express.

This was a big eye opener for me. Just purely how basic this was on the server side making me understand how much Rails really abstracts away and how much you can do when you even do things like setting up listening on a port as part of your code. For someone who has done a lot of network programming on the socket level this was amazing.

Also things like learning a templating language with Jade which was very different from something like ERB which we used with Rails where I could just not really learn a templating language but rather just use HTML. It actually gave me a new perspective on how HTML is supposed to be a structured document and then it is up to everything else to style it to look good. I had heard and thought I understood the term "semantic markup" before this but after using this I really got it.

It was also the first time I really got to do more complex JavaScript things with JQuery as I decided that the Web client also needed to be great to better show off the value of my idea and what was possible.

It was also around this time I started tinkering with the design of my personal site more and through that I came upon things like Bootstrap and started more understanding various tools to make writing CSS easier like SASS. I had for a few years prior to this been running my website on static site generators like Jekyll or Octopress etc (I've gone through quite a few by now), and this had helped with me feeling like I could actually do something about changing up styles in a way I never felt like I could when it was running on something big and complex like WordPress.

I also wrote more and more JavaScript running in the browser because of that I felt like I finally had a grasp on modern JavaScript again because of my work with server side JavaScript using Node.

During 2014 I even started exploring JavaScript frameworks like Ember and Angular. I have yet to build anything that has actually shipped with either but I think that when the time comes for me to build something where a lot of JavaScript would be necessary I would definitely want to try actually shipping an app using Ember.

I've also done things like experiment with new JavaScript technologies like WebGL, WebSockets etc and it is very interesting to see the technologies that I know from years of use in native code are now coming to the web as well and that all my experience of tuning things for performance on the computers from yesteryear are now really valuable again when trying to get things fast in JavaScript with the overhead that running in a browser brings.

All this said writing native code is still my first love, and I do not think that the need for that is going away anytime soon. I do think that the future is connectivity and integration as no device is an island any more and being able to interoperate seems to be key for the software of tomorrow.

That said I think that you also cannot have a poor web experience for a solution. There are things a native application can do better than a web application and there are things a web application can do better than a native application, so I think that the important thing is to recognize what the strengths of each platform are and play to those. The recipe for a slam dunk seems to be to tie in native apps and web apps into your solution in the best way possible.

So, after that rant then where does this leave us? Do I "love the web" as the title states?

The answer is... it's complicated. I don't really "love" the web but it feels like another tool in my tool belt now; something that I can do and something that I can be excited about doing instead of something I am forced to do.

So, basically, in my own pragmatic way I guess that means "yes".