Skip to content

Glossary

Billy Charlton edited this page Jun 19, 2017 · 3 revisions

CSS or Cascading Style Sheets. One of the three cornerstone technologies of the world wide web: HTML, CSS, and JavaScript. CSS defines the visible formatting and layout of your content. CSS stylesheets "cascade" because multiple styles can be applied to an element and it picks up those properties in sequential order. Thus you can have a "global" stylesheet for you site which defines basic layout, font choices, standard colors, and then later stylesheets can add specifics for particular pieces of your site.

GitHub Pages - Free web hosting by GitHub. GitHub Pages will automatically publish the content of the gh-pages branch of any GitHub repository, if that branch name exists. The site will be published at [username].github.io/[reponame]. GitHub Pages uses the Jekyll static site tool to do some basic site processing before things are published: for example, it converts .md (markdown) files into .html.

Jekyll is a "static site generator". It takes a set of raw text files and some configuration settings as input, and outputs a full HTML site in a folder which can then be pushed to the web somewhere -- such as GitHub Pages or Surge.sh.

Leaflet is an open-source web mapping library. It is tiny, fast, and simple. It supports GeoServer and GeoJSON tile layers, and has all sorts of interactive capabilites such as popups and markers. It doesn't do 3D, though -- for that you need MapBox GL.

JavaScript is the programming language embedded in every modern web browser, one of the three cornerstones of the open web platform: HTML, CSS, and JavaScript. Essentially, every website uses Javascript code to make websites interactive instead of just static pages that don't do anything. We use javascript in the data portal extensively.

MapBox is a company, and they created MapBox GL, a web mapping library. It does 2D, 3D, and has all sorts of interactive capabilities such as popups and markers. We use MapBox GL for the Uber/Lyft TNC visualizer tool.

Node.js is a JavaScript runtime (app platform). Many sites use it as the app platform for building active websites. Included in the Node ecosystem is npm, an open-source javascript library and catalog. We have so far only used Node for its npm package repository, since the data portal is a static site.

NPM, Node.js' package ecosystem, is the largest ecosystem of open source libraries in the world. Through npm, we install all of the local build tools necessary for generating a static website from our source code.

Postgres (sometimes called PostgreSQL) is the most powerful open-source relational database available. It is feature-rich, complex, and powerful. It compares very favorably to commercial enterprise databases such as Oracle and MS SQL Server. It is more powerful than other open-source databases including MySQL and SQLite. It is different from "No-SQL" databases such as MongoDB since Postgres uses the traditional "relational" table structure instead of a simple key-value store.

PostgREST is a software service which provides a "RESTful" API for any Postgres database. We use PostgREST to provide access to our Prospector databases. PostgREST is simple in that it just provides an HTML endpoint and passes all web requests on to the underlying database, which decides whether the request is valid/authorized. Our implementation allows access to a single "api" database schema, which is itself just a collection of Postgres views of the various tables in our database. PostgREST supplies a JSON result to all valid queries. You can see it in action at https://api.sfcta.org/api

PostGIS is a geospatial extension to the Postgres database. PostGIS allows geographic features such as lines and polygons to be stored in the database, and provides geo-aware analytic capabilities such as buffers and distance calculations. We use PostGIS to store and serve up TAZ boundaries, CMP segment definitions, and anything else with a geographic component.

Semantic UI is a UI javascript toolkit that creates very clean and pretty web elements: buttons, dropdowns, forms, labels, layouts. We use Semantic in all of the data portal visualizations so that they share a consistent look and feel.

Static Web Site is a website which is based entirely on plain HTML, CSS, and JavaScript files that can be served directly to a user's web browser. No long-running server process needs to run on the server, other than the web server software itself. Apache and NGINX are web servers which can serve up static site content. Web sites that are not static are called "active' sites; they requires code to actually be running on the web server. Wordpress, Django, Drupal, and most "CMS" content management systems are active systems. The advantages of static sites are their simplicity, speed, and security. Active sites can have much more advanced functionality and capabilities.

Surge.sh is a web hosting company. Surge makes it dead-simple to publish static websites, and is free for everything except SSL support with custom domain names. (Custom domain name support is free; SSL support is free; but not both.) It's crazy simple: once you've installed the surge command-line tool, you can publish any folder to an auto-generated url with one command: surge. That's it.

Vue is a javascript library which enables interactivity on websites. It's the glue that links a button or slider on a webpage to the javascript code which runs when that button is clicked. It allows two-directional reactivity, which means that changing variables in code will cause immediate changes on the website, too.

Webpack is a javascript code processor. Since every web browser implements a slightly different version of Javascript, we use webpack to analyze all of our source code and output a "processed" version which can run on most modern browsers. It does so by calling plugins which do the heavy lifting: in our case we use "babel" to process the javascript, and "jekyll" to process the web templates.

Clone this wiki locally