Technologies I am going to use for a new project and why

After much consultation with other web designers and investigating what technologies to use – I have come up with a final list. I will explain why I chose what I did as I go along.

First, the project is a data aggregation tool used to marry 2 worlds of how much time we have taken versus a budget of how much time is expected to be spent. It is much more complicated than my simple explanation (it is for an engineering company) but that is the gist of it. People will be logging in on a regular basis to update key numbers and over time, reports will be generated in many key areas to see the progress of the entered data and it aggregated over many weeks and months. Many of the numbers have a category, sub-category, sub-sub category and a sub-sub-sub category so one can see how this is a lot more complex than a few tables.

My path. First I know MANY technologies since I am a chief cook and bottle washer in many aspects with my clients being the only one who knows this tech-stuff. A few things that I am frustrated about in 2014 is

  • designing on the web is very expensive but it is the right way to go. Edit changes etc. in ONE place and everyone benefits. Even designing desktop apps is very expensive and the downstream cost is updating everyone’s computer – which can be automated – but … that is also a development cost
    • Can design be sped up? If I can design faster, I can do more for a client. This is good for them and me in the long run. Designing based on hours spent is not one of my core values when I know it can be done better, faster and therefore cheaper. Every one wins.
  • USING the web is very slow because of the delay from the server to the client. How can it be faster
  • Technology is changing faster than ever – so should we use the latest tech? It is risky – will it be there in 2 years?

So with these conundrums in mind – here is why I chose what I did for my customer. To get to this point, I would like to give credit to Kamil Drabek and Ben at Geek Inc. for their help in wrecking my life for a couple weeks (I am semi-joking – I know more now) while I retooled to learn what I consider to be cutting edge.

Here are the markups and meanings for my choices below

  • Purple – tech benefits
  • Blue – benefits for client
  • Green – benefits for me the designer

Let me summarize the list below of what technologies I am using to keep this document clear. This lowers the cost of development which is a huge win for my client (lower cost with less risk) and for me (I am on the leading edge and I deliver faster). I am choosing AngularJS for the web app, NodeJS for serving the webpages and info to the web app, Microsoft SQL Server for the permanent database storage of info. To make all this happen, I am using Netbeans as a programming interface or IDE and Strongloop to make most of my back end services that feeds all of the web-apps. I have Microsoft IIS in my back pocket in case any custom windows specific tools need to integrated or glue is required. I think this is beyond a win-win for myself and my client. I think you will too. Remember this is specific for a certain client who has a starting point of a windows server 2012 as the hardware/operating system.

  • A database to hold data over time – Microsoft SQL Server
    • +ve: stable, row limitations are not an issue like mysql, tools do not top-out your computer’s internal resources
    • +ve: Design/Programming is straightforward and there are lots of tools/functions that make design fast and easy. Some things are cumbersome, but I have done all I could imagine so far with it. Cheapest design cost.
    • +ve: no learning curve for myself at this time. I give it 2 thumbs up and have used it at many previous clients.
    • -ve: The express version is not free – so if the project is large, it might incur costs
    • Others considered: mysql (cumbersome, programming idiosyncrasies, limitations > 1M rows and it crashes if one optimizes ALOT), mongodB – steep learning curve right now.
  • A technology to handle the web interface AngularJS
    • +ve lowest cost of development coming
      • (steep learning curve – be warned – nothing has changed but where you do your development etc. has changed.) 
      • -ve I have taken this cost on though for my client this time.
    • +ve most programming is done ON THE BROWSER so the speed to the end customer is as fast as his computer. Should be lower data traffic back and forth to the server which means the browser is like a desk-top app now in terms of speed.
    • +ve changes are done in one place
    • +ve streamlined development ready for today’s web apps – apps – not pages
      • developed and used by Google
      • used by Microsoft and even Walmart who is super cost-conscious
      • the amount of companies and people coming on-board/backing this means great things coming and lots of help
      • bottom line – lower risk of it being old and finding designers to keep it up. It is relatively new … but … it is well past early adopters
    • +ve jQuery lite is behind AngularJS – you CAN use jQuery full and it works just hte same but … you can use jQuery. NO RELEARNING. Lowers development cost.
    • +ve keeps me on the leading edge
    • Others considered are php/jQuery, Microsoft MVC4, Microsoft MVC5 with angularJS (my 2nd choice – but it is a very complicated way of development), .net Webforms (very old and clunky – refreshed back and forth alone, even w. jQuery & ajax)
    • angularbookHere is the book Ben recommended for fellow developers if you want to get started (buy the paper book so you can write in it – learning this is quite different than existing technologies)
  • Server technology for catching and serving the web pages / web app – NodeJS
    • +ve: more efficient and cheaper development cost
      • it is all written in Javascript like Angular (above)
        • you don’t have to rewrite code – just copy/paste and use it. Less time wasted if one changes their mind and does things on the server side instead of the web page side (or vice-versa)
        • you can reuse common code
      • fast efficient server response time
      • Strongloop API or program writes most of the code FOR YOU – cheaper development
    • -ve steeper learning curve at the beginning. I have taken this cost on though for my client this time.
    • +ve however
      • many plug-ins or modules as they are called are available
      • lots of online support
    • Others considered:
      • Apache (I have used it since the 1990’s and most of my development is done on it)
      • Microsoft IIS (frustrating security module – like all Microsoft stuff) but, if you have to have windows compatibility or are asked to use it … it is OK. Just have VERY DEEP POCKETS feeding these projects. You do NOT want to take the risk on yourself by mis-quoting only to find that the issues start with an IT department who is ALSO frustrated with Microsoft’s security modules being so flexible they are a killer to the budget.
  • Netbeans as a development platform for the front end (web app/pages) and back end services (nodeJs).
    • it fits nicely into Chrome to debug
    • I am used to it already
    • it fits nicely with Git
    • Here is a  teaser article to list 10 of them . Here are 5 that I looked into detail on since they seemed to rise to the top in many people’s minds
      • Visual Studio (2nd choice if you are doing MVC 5 with AngularJS)
      • Webstorm (most people’s favourite)
      • Eclipse
      • Sublime
      • Vim (not really an IDE)
      • other articles for developers here 

If you have any questions or comments. Let me know.