On Software, Stacks and Technologies

So now what? You've run through all of the Code Academy tutorials, enjoyed being able to build your own dynamic web pages and want to know how to write your own, robust web sites; to maybe head off on your own and help mom with her church mailing list or Bobby's soccer team track their schedule on line. You are wondering how to manage data, dynamically and conditionally generate HTML and are really confused as to what tools you should be using to write this code on your own machine and make it appear on the web at bobbysteam.com. You want to know where to go from here, and those are all excellent questions.

The answer is, of course, it depends. It depends on several things, really. It depends on your server's Operating System, Web Server, Database and Programming language.

It depends on your solution stack, specifically, your web stack.

A web stack is one type of solution stack (an ordered collection of software that performs a particular task) that is the collection of software required for Web development. At a minimum a Web stack contains an operating system, a web server, a programming language, and a database software or a data management interface. This stack is used on the server to generate and deliver (dynamic) HTML/CSS/JS to a client browser.

The stack you choose to pursue will dictate your development tools, you hosting environment and several other key systems

In this discussion we are going to focus on the two most popular / in use stacks on the web, the LAMP stack and the .NET stack. There are other web-focused development stacks out there like Ruby on Rails [http://rubyonrails.org/] however, the top web based programming languages (according to TIOBE) are

  • C#/Visual Basic .NET
  • PHP
  • Python
  • JavaScript
  • Perl

So our discussion covers these nicely, with the exclusion of #4. JavaScript is technically a part of the resulting output and not a part of any one particular stack (we will discuss TypeScript in a subsequent post, which actually is stack dependent in a way), but it's helpful to put into context how popular it is.

The LAMP Stack

The acronym LAMP [http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29] refers to first letters of the four components of the solution stack, composed entirely of free and open-source software.

Operating System (OS): Linux
Web Server: Apache HTTP Server
Database: MySQL, MongoDB [http://www.mongodb.org/]
Programming Language(s): PHP, Perl, or Python

The .NET Framework Stack

The .NET Framework [http://www.microsoft.com/net] [http://en.wikipedia.org/wiki/.NET_Framework] (pronounced dot net) is a software framework developed by Microsoft that runs primarily on Microsoft Windows. It includes a large library and provides language interoperability (each language can use code written in other languages) across several programming languages. Programs written for .NET Framework execute in a software environment (as contrasted to hardware environment), known as the Common Language Runtime (CLR), an application virtual machine that provides services such as security, memory management, and exception handling. The class library and the CLR together constitute .NET Framework.

.NET Framework's Base Class Library provides user interface, data access, database connectivity, cryptography, web application development, numeric algorithms, and network communications. Programmers produce software by combining their own source code with .NET Framework and other libraries. .NET Framework is intended to be used by most new applications created for the Windows platform. Microsoft also produces an integrated development environment largely for .NET software called Visual Studio.

Operating System (OS) Windows (also, Linux, MacOS and others)
Web Server IIS, Apache (with mono
Database SQL Server, MySQL, MongoDB
Programming Language(s) C#
F#, Perl, Python (Iron Python Variant)

I've created a second post that provides a guide to web based .NET Programming and learning resources [https://www.facebook.com/notes/chuck-charbeneau/on-software-net/10152111633616248] as they are spread out across several locations and instead of being in a neat set of tutorials, rely on an ecosystem of highly skilled authors and presenters writing and producing for several print and e-publications to provide the necessary training and education at various learning levels.

In this Series:

Part 1 - On Software, Getting Started and Staying Relevant
Part 2 - On Software, Stacks and Technologies
Part 3 - On Software, .NET
Part 4 - On Software - Owning your brand

No Comments