[to build a website]
Jamstack Boston | April 19, 2022
A talk first given at NERD Summit | March 20, 2020 [ video ]
alltheways.website created with revealjs.com, hosted on GitHub Pages
Lead Drupal Developer at Common Media since 2011
Western Mass (I am in Amherst, MA)
rick@commonmedia.com
An organizer of NERD Summit
nerdsummit.org
A volunteer at New England Drupal Camp
nedcamp.org
Managed a boatbuilding and service company in Portsmouth, RI
Yacht Insider's Guide (book, website)
www.yachtinsidersguide.com
Back into music production since 2020
soundcloud.com/flowte
At Common Media I do Drupal all day long.
I love Drupal, but over past few years I've had fun diving into React & JAMStack
which revealed another world of tools and software to build websites with.
A brief history of website building: 1990-2009 (the first 2 decades)
Tim Berners-Lee wrote what would become known as WorldWideWeb on a NeXT Computer during the second half of 1990, while working for CERN.
The first successful build was completed by December 25, 1990.
In 1989, Berners-Lee wrote a memo proposing an Internet-based hypertext system. Berners-Lee specified HTML and wrote the browser and server software in late 1990.
In 1993 the National Center for Supercomputing Applications (NCSA) team wrote the specification for calling command line executables. [1]
Larry Wall began work on Perl in 1987, while working as a programmer at Unisys, and released version 1.0 on December 18, 1987. Perl 5 was released on October 17, 1994. [1]
Perl was huge back in the day, but today it is found on only 0.2% of websites. [2]
1. https://en.wikipedia.org/wiki/Perl
2. https://w3techs.com/technologies/history_overview/programming_language/ms/y
Rasmus Lerdorf and team releases "Personal Home Page Tools (PHP Tools) version 1.0" on June 8, 1995. [1] PHP is used by 79.3% of all the websites whose server-side programming language we know. [2]
1. https://en.wikipedia.org/wiki/PHP
2. https://w3techs.com/technologies/details/pl-php
Deployed in the Netscape Navigator 2.0 beta 3 in December 1995. [1]
Today client-side JavaScript is used on 95% of website. [2]
1. https://en.wikipedia.org/wiki/JavaScript
2. https://w3techs.com/technologies/history_overview/client_side_language/all/y
The first version of MySQL appeared on 23 May 1995. [1]
First released in December 1996, before being superseded in 2002 by ASP.NET. [1]
Today ASP is the second most used server-side language at 10.7%. [2]
1. https://en.wikipedia.org/wiki/Active_Server_Pages
2. https://w3techs.com/technologies/history_overview/programming_language/ms/y
CSS was first proposed by Håkon Wium Lie on October 10, 1994. At the time, Lie was working with Tim Berners-Lee at CERN. The World Wide Web Consortium (W3C)
released CSS Recommendation (CSS1) in 1996. [1]
In November 1996 Macromedia released Macromedia Flash 1.0. Flash as a two-part system, a graphics and animation editor known as Macromedia Flash, and a player known as Macromedia Flash Player. [1]
Many others including: (date / usage) Java, (1995, 3.4%) Ruby, (1996, 3.0%) Scala, (2004, 1.6%)
Python, (1991, 1.2%) ColdFusion, (1995, 0.5%) Erlang (1998, 0.1%) and more.[1]
1. https://w3techs.com/technologies/history_overview/programming_language/ms/y
Apache, (1995, 41.6%) Nginx, (2004, 31.4%) Cloudflare Server, (2009, 12.6%)
Microsoft-IIS (1995, 7.9%) and others. [1]
Emacs, (1976) Notepad, (1985) Vim, (1991) BB Edit, (1992) Microsoft FrontPage, (1996) Microsoft Visual Studio, (1997) Dreamweaver, (1997) NetBeans, (2000) Eclipse, (2001) TextMate, (2004) Coda, (2007) PhpStorm, (2009) Sublime Text, (2012) VS Code, (2015) and others. [1,2]
1. https://en.wikipedia.org/wiki/List_of_HTML_editors
2. https://en.wikipedia.org/wiki/List_of_text_editors
Wordpress, (2003, 35.5%) Joomla, (2005, 2.6%) Shopify, (2004, 2.0%) Drupal, (2000, 1.7%) Squarespace, (2004, 1.5%) Wix, (2006, 1.3%) Blogger, (1999, 0.9%) and many others. [1]
1. https://w3techs.com/technologies/overview/content_management
HTML, (1990) Perl, (1994) PHP, (1995) Javascript, (1995) MySQL, (1995)
CSS, (1996) ASP, (1996) Flash (1996)
A boom in basic web technologies.
Blogger, (1999) Drupal, (2000) Wordpress, (2003) Squarespace, (2004)
Rails, (2004) Joomla, (2005)
A boom in tools that used basic technologies.
What's next? Where are we now?
In 1997 I paid a visit to Mark Bistline in Newport, RI who at that time was using Macromedia Director to make interactive CD tours of private schools. I walked out thinking "I want to be doing that someday".
I got Director and learned some Lingo (Director's programming language).
Soon Flash came along. I fell in love with Photoshop and Flash.
When we sold the boat business in 1999, I took a left turn into graphic and web design.
Did a lot of ASP and Flash sites, then moved to PHP and Drupal.
Mark later founded schoolyard.com to build websites for schools,
eventually using Drupal for that, building sites for over 300 schools in 30 countries.
An explosion in five overlapping areas during the past decade:
Node.js, (2009) Express.js, (2010) Angular.js, (2010) Ember.js, (2011)
React.js, (2013) Vue.js, (2014) and many others. [1]
1. https://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks
The rise of decoupling frontend from backend.[1,2]
1. www.storyblok.com/tp/headless-cms-explained
2. en.wikipedia.org/wiki/Headless_content_management_system
Traditional: Wordpress, Drupal, Shopify, Django, etc.
New: Contentful, (2013) Sanity, (2016) GraphCMS, (2017) Netlify, (2014) Ghost, (2013)
Prismic, (2013) Statamatic, (2012) Grav, (2015) Kirby, (2012) Forestry, (2015)
Tina CMS, (2019) and many others. [1]
Jekyll, (2008) Hugo, (2013) Eleventy, (2017) Next.js, (2016)
Nuxt, (2016), Gatsby, (2017) and many others. [1]
Heroku, (2007) Github Pages, (2008) Platform.sh, (2010) Firebase, (2012) Netlify, (2014)
GitLab Pages, (2016) Zeit Now, (2016) and more. [1]
1. Google "aternatives to Netlify" finds this: www.slant.co/options/16947/alternatives/~netlify-alternatives
1. Javascript frameworks + 2. Headless API + 3. Backend-only CMS
+ 4. Static site generators + 5. Deploy/build/hosting
This shows one of many options: using Gatsby as static site generator and frontend, with an API from Wordpress as backend.[1]
Within Gatsby, GraphQL sucks in the data from the JSON API, then React queries GraphQL for data and builds the HTML.
Normally this is all server-side rendered -- static site, for speed and security -- but nothing stops you from client side calls to the JSON API from React.
Hosted on Netlify, which does both the Gatsby build process
and hosting of the static files. [1]
Add in an API from Shopify.[1]
1. https://www.gatsbyjs.org/docs/building-an-ecommerce-site-with-shopify/
Many options for backend data.[1]
1. https://www.gatsbyjs.org/blog/2018-2-6-choosing-a-back-end/
Many options for SSG/SSR, back-end & data store, straight-up CSR and DIY-Saas.
This one slide is what this talk is all about.
Let's start with one of the simplest methods, deploying a website with Squarespace.
While Squarespace is simple, you can do a lot with it, for example one of my favorite podcasts Marc Maron's WTF Podcast uses it.
See also 35+ Stunning Examples of Websites Using Squarespace (2020).
OK now custom coded site, deploying a website with Github Pages.
Github pages can do a lot more than this.
By using Jekyll it can read data from Markdown files.
Setting up a GitHub Pages site with Jekyll
Eleventy (2017) is an SSG, gaining popularity.
Sanity (2016) is a back-end-as-API using GraphQL.
Really great (and short) intro to Eleventy by Kyle Mitofsky (simple, using Markdown):
www.youtube.com/watch?v=ozTesGh0l74
Long Eleventy Tutorial by Bryan Robinson (using Netlify CMS backend):
www.youtube.com/playlist?list=PLOSLUtJ_J3rrJ1R1qEf8CCEpV3GgbJGNr
This is very dynamic CSR application -- the opposite of a static site.
In this case the React frontend serves as the CMS (editor of the Firebase data).
More info:
reactforbeginners.com
firebase.google.com
Getting Started with React and Firebase - Firecasts (see part 2 also)
^ that last one is a good (and free) introduction to React using create-react-app
This shows what was built in a Gatsby training I took at NEDCamp with Shane Thomas.
See this for more codekarate.com/category/tags/gatsbyjs
You need a server that runs Node.js (Netlify) to do the Gatsby build process, and a host running PHP, a database, etc, (Pantheon) for the Drupal site.
There are many hosting options out there.
Below are additions since NERD Summit talk on March 20, 2020
[to build a website]
Rick Hood [ rick@commonmedia.com ] alltheways.website