iToto's Blog

A Montreal based full-stack web developer who loves learning and trying out new things. This blog is my attempt to document my work as well as a place to discuss ideas or topics that I find interesting. Feel free to follow me on linked social networks.

The Evolution of Web Applications

I have been developing web sites/apps for almost a decade now. The thing I love most about web development is that it's universal. The majority of web applications are supported on almost any platform. In a world where people are more openly using their platform of choice, this is a huge advantage. It ultimately allows us to have one code base that be executed on any platform. This is the general idea behind things like PhoneGap. All a web app needs to run is a decent and recent browser.

The Modern Web Application

Web applications have come a long way in recent years. In the beginning, applications only had interface with one client - the web client. This meant that developers only handling web requests that came from the views they developed (usually in the same framework). These days however, it's all about applications interfacing with other applications. And with the addition of mobile, web applications are more in demand as ever!

To adapt to this change, web applications are now broken up into two parts: an API and a Web Client. This modularization exposes a generic server-side application that can essentially communicate with any client-side application. I call this a service/client model. When I first started to develop with this model, I began to appreciate web applications a whole lot more. These days, if I'm making a web application, I try my best to fit the application in the service/client model.

The Move To JavaScript

Most of the web applications that I have written have been in PHP with frameworks like CakePHP, CodeIgniter and Laravel 4. The issue with these frameworks is that while the server-side scripting is all in PHP, the client-side scripting is done in JavaScript. This forces developers to either learn both languages, or leave the JS part to developers that are stronger in it (which is where the front-end/back-end developer division starts). I personally believe that any good web application developer should be able to work in both.

What would be great is if web applications used the same language throughout the stack. Well, if you're a JS developer, you're in luck!

With a server side application running on node.js and client-side applications running in frameworks such as backbone or angular you can now switch between back-end and front-end development without changing languages. Furthermore, if you use MongoDB as your data store, you can now have a full stack running on JS!

On top of that, node also introduced something else to web applications that wasn't really possible before (or at least not as easily achieved) Web Sockets! This allows for full duplex communication between the clients and server (no more polling!). Web sockets takes web applications to a whole new level. With it, it's now possible for clients to get updates in real time.

To further on this, I came across Meteor - which essentially is a web application platform that allows real-time communication between clients and the server. When I saw this, it furthered my belief that this is the future of web applications. The age of clients polling the web server for updates will soon be a thing of the past.

Another example of this is emberjs. Man, there are so many new JavaScript platforms it's a little overwhelming lol.


Further Reading

This blog post goes through the evolution of web applications as I tried to depict in this blog post.

The Inevitable?

After my post about Microsoft – and how much I enjoy using their products – I began to wonder: why are so many people still using their products?

I recently read this article by Mike Elgan and am now a firm believer that it's only a matter of time before Apple and Google become the dominant parties in the industry - even though they practically are already. I think Mike's prediction of how Microsoft will eventually lose all of it's strength in the business and enterprise markets is spot-on.

As of now, only newer companies are adopting the "BYOD" concept, as the legacy companies are still depending on Microsoft products to run their companies. The bottom line is, those old-fashioned companies will eventually be forced to make the switch if Microsoft continues going down it's current path. This is due to the fact that the majority of the population uses Apple,Google or Linux based devices. And if people are no longer using Microsoft based devices for their personal use, well then why would they want to use it in their work place?

The only way for Microsoft to survive is to adapt and learn from what Apple and Google are offering their customers. Because clearly, that's what people want.

Are all VCs evil?

As some of you know, I've been working on my side project Party Stream for some time now. My goal has been to release early and often. This would allow us to have people use the app and itterate through to polish it as much as possible.

When I realized it was taking me way to long by myself, I decided to invite my closest friends to help me out. Keeping in mind that we've been solely working on this on our spare time, it's been moving a long but not as much as I'd hoped.

Since then, I've met with some startup people in Montreal and they've told me about the incubator programs and the inevitable hunt for VCs. I was never a fan of VCs - mostly because I'm uncomfortbale with the idea of non I.T. people running a software company.

The issue is, however, that the only way for us to put in the time required, we would need to work full time. And that's basically where VCs come in.

Still undecided on the idea, I came across a new iOS app that one of my good friends told me about. It's similar to Party Stream, but it's specifically for wedding parties. Rightly so, it's called Wedding Party App.

TechCrunch did an article on them, and in it, I saw a bunch of similarities between them and us. We have the same goals, and vision for our apps. They released when I originally wanted to release (this summer). They started with iOS and ported to Android later. They are also introducing a web-based app that will include more functionality. All of these are basically in the pipeling for Party Stream - just waiting to be done.

When I asked myself "how were these guys able to release before me" I saw that the answer was right in front of me.

They received quite a few VCs and angel investors to back their idea. Knowing this now, if an app like that can get that kind of backing, then there's no reason why an app like Party Stream shouldn't get some attention.

Bottom line is, do I want VCs or angel investors? Or should I stick to my guns and just have our team continue to work on this part-time and release it whenever it's ready?

Please leave a comment and let me know your thoughts.

Goodbye bash; Hello zsh

Prologue

Back when I was in computer science in cegep, there was this one student who everyone idolized. There's usually one in every class. You know, the ones who always get perfect grades while never showing up to class. Or they play video games and re-compile their linux kernel when they do decide to show up. Well for me, that was Sean: a hacker who knew just as much about programming as most of the teachers did, and always did what he wanted to do.

I remember this one day, I walked into class and saw him working on his custom kernel compiled, gentoo flavored, Linux box. (try to say that 3 times fast). Before that moment, I never really cared for Unix and had absolutely no desire to use the shell. Sean changed that from the moment I saw his screen.

The bright colours, the cool prompt. It looked like something straight out of "Hackers". It was elite. I wanted in.

At that point, I knew what bash was and had written some simple #!/bin/bash scripts. But his shell was different. His shell had a cool prompt. His auto-complete was... well it was awesome! Nothing like I had ever seen on a bash shell. I had asked him how he got his shell to work like that. And he replied with one word: zsh.

My first thought was: "woa, this must be way too advanced for me". Being intimidated, I never really gave zsh a shot, and played it safe by sticking with bash.

The Present

Almost a decade later, I’m still using the bash shell – then, last week it happened again.

A friend of mine invited me to a JS meet up where two programmers were talking about require.js and browserify. During one of the demos, they had open up their iTerm2 shell and my eyes lit up. “Woa! How did he get his shell to look like that?? His auto-complete even shows suggestions while he’s typing his command!”

I came home, and immediately started searching the web, trying to find out how he configured his iTerm. And sure enough, I found the answer: zsh. I came across this article and immediately started throwing commands at my terminal. Within minutes I was up and running in zsh.

In retrospect, I really should have tried zsh when Sean told me about it. It is by far the best shell I have ever used. If any of you are in the same position I was, I suggest you install it and give it a shot. Like all tools, it takes some getting used to. But once you’re in, you’ll never look back.

Edit

For those that have installed and are using ZSH, here is a useful blog post that I came accross with some handy .rc lines

TL;DR.

Go here. Do what it says. Be happy.

#hackmtl JavaScript Hackathon!

Hack-a-ton

This weekend Anna, Graham and I participated in the [#hackmtl][3] hackathon. It was a javascript hackathon inviting people to create web apps and chrome extensions. The venue ended up being at the top of Montreal's Olympic Stadium Tower. It was probably the coolest place they could have chosen to host the event.


Can you spot us?


MEMEme

For the hackathon, we decided to make a Meme manager. Somewhere you can easily collect your favorite gifs/pictures with easy access to that you can quickly post them on forums, chats etc. We also included a quick search so that you can quickly search for some on the web. The code is up on github and is free to use. There are still a couple of kinks in it that we weren't able to iron out by the end of the hackathon, but we will be fixing those soon.

We really enjoyed the hackathon and wanted to thank everyone who made it possible. They did a bang-up job and we would definitely go to the next one :)

Go to the blog post on #MtlStartupTalent to read more about it.