Tools | Either code or software that is used by developers in running or building software. |
Framework | Code, typically written by someone else, that can be used to speed up development and provide structure to project code. |
Library | Code, typically written by someone else, that can be used to provide a specific solution. |
Service | Code, typically written by someone else, that usually runs on another machine and provides a specific solution. |
Hardware | Physical electronics which programs run on. This includes integrated circuits, logic gates, CPUs, transistors, but can often refer to just “computer parts”. Hard in that these parts are set and not changeable. |
Firmware | Programs that reside in a special location on hardware and determine how it behaves. Firmware is usually changeable but with difficulty and updates are not part of day-to-day operation of the device. |
Software | Programs that run on top of hardware in day-to-day operation. Is “soft” in that it is easily changeable, simply place a new copy of the program on the machine and run it. |
Debugger | A development tool available in most programming languages that allows developers to inspect what is going on inside of a running application. |
Breakpoint | A technique to allow a debugger to pause a running program when a particular line of code executes. |
Logging | A technique to generate a record of what an application did as it ran. Useful in analyzing an application that is misbehaving. |
Memory / Random Access Memory (RAM) | Hardware on a computer where data is stored in the short and medium term. All running applications are typically stored here. |
Profiling | A set of techniques used to analyze the performance and memory use of an application. |
Call stack | As a program runs, functions may call other functions. The call stack at any point in time is all functions that have been called and have not yet completed. This is typically represented physically in memory as well. |
Chrome Devtools | Tools provided by the Chrome browser, useful in debugging, profiling, and otherwise working with in-browser JavaScript. |
Package Manager | A tool provided available in many programming languages that makes it easy to download and use library code from the internet. |
Text Editor | A class of tool commonly used in writing of source code. Usually relatively light-weight with simple features like syntax-highlighting |
Integrated Development Environment (IDE) | Application that in addition to being a text editor, typically contains many other tools for working with a specific programming language or type of application. |
Visual Studio Code / VS Code | Popular open source text editor originally by Microsoft. Extensions written in JavaScript. Works well with any language and is distinct from the Visual Studio IDE |
Atom | Popular open source text editor originally by Github. Extensions written in JavaScript. |
Sublime | Popular open source text editor. Extensions written in Python. Is lightweight and fast and hence became very popular in the early 2010s but stalled due to long times between updates. |
Vim | Popular and old open source text editor and key binding system. A version of Vim (Vi) is almost always available and can run in the terminal. Extensions written in Vimscript. Known for complex but ergonomic key bindings. |
Emacs | Popular and very old text editor. One of the oldest still maintained pieces of Open Source software. Known for complex key bindings and a huge set of available extensions. Extensions written in Lisp. |
IntelliJ | Popular IDE by Jetbrains with free and paid versions. Commonly used for development in Java and related technologies. |
Eclipse | Popular open source IDE known for a large amount of available plugins and extensions. Commonly used for development in Java and related technologies. |
Visual Studio | IDE by Microsoft used almost ubiquitously by people developing .Net applications. |
Syntax Highlighting | Feature of text editors where the editor has basic understanding of the programming language being used and uses color to emphasize parts of it in a helpful manner. |
Code Formatter | Feature of most text editors where the editor can automatically indent and reformat existing code in a way natural to the programming language. |
Key bindings | Feature of many applications where keyboard combos and shortcuts can be used to quickly trigger other features rather than clicking through a menu. Very common in text editors. |
Snippets | Feature of most text editors which allow you to store and quickly generate commonly used code patterns. |
Source Code | Programming code that is typed into and can be open and modified via a text editor. |
Central Processing Unit (CPU) | Piece of a computer that executes program instructions. For example loading data to a memory location or performing a mathematical operation. |
Compilation / Compiler | The process of/tool for transforming source code into a format (typically binary) ahead of time that gives instructions to the CPU and can be executed directly. |
Interpretation / Interpreter | The process of source code being compiled and executed line-by-line as the program runs. This can enable techniques like code that rewrites itself as it runs. |
Runtime | A feature of many programming languages where the language itself must be installed, and then the installation executes your program rather than it running directly |
Just In Time Compilation (JIT) | Technique used by runtimes which combines compilation and interpetation. Typically includes a step that transforms source code to intermediate bytecode which is than converted to CPU instructions on the fly. |
Virtual Machine | An application that can emulate another computer, run an operating system, other applications, and even malware in isolation without it affecting the host computer. Examples: Virtualbox, VMware, Parallels |
Intermediate Bytecode | A format some languages compile source code to that runs on an idealized CPU. When the code is executed by a runtime, a just in time compilation step converts this to something that can execute on that specific computer. |
Low level language | A programming language that focuses on providing users with maximal control of the underlying hardware even at the expense of speed of development. Examples: C, C++, Rust, Assembly, VHDL. |
High level language | A programming language that focuses on being expressive and easier to achieve common tasks in even at the expense of more control of the computer. Examples: Ruby, Java, Python, C#. |
Integrated circuit | A reconfigured set of electronics on a microchip or board. Many distinct components are typically permanently connected together. Any modern piece of electronics will have many of these. |
VHSIC Hardware Description Language (VHDL) | A low-level programming language used in electronics design and FPGA programming. |
Field Programmable Gate Array (FPGA) | An integrated circuit that a very very simple program can be stored in directly that will modify what sort of electrical outputs the chip will give in response to inputs. Commonly used in very low level hardware. |
Complex Instruction Set Computer (CISC) | A style of CPU design that can do more complex operations. Can usually do complex day-to-day things faster but uses more power and generates more heat. Example: Intel 386 or AMD processors. |
Advanced RISC Machine (ARM) | A slightly more advanced RISC processor that usually offers very low power consumption but is capable of running a simple Linux operating system. For example used in Raspberry PI. |
Reduced Instruction Set Computer (RISC) | A style of CPU design that can do less complex operations. These are typically slower in operation but can carry other advantages like drastically reduced power consumption. |
Assembler | A half-step above binary machine code, typically just a representation of it that can be modified in a text editor. Raw instructions to the CPU. Specifics often vary by CPU model. |
Executable | An application that can be run directly by users. This is opposed to libraries and applications you run by executing the language interpreter (eg Python) or bytecode VM (eg Java). |
Assembly / dll | A file that contains compiled code that cannot be run directly, but can have its code loaded and run by an executable. |
GNU Compiler Collection (gcc) | Free and open source toolset by the GNU project. Commonly used for compiling C and C++ though can support several other languages. |
GNU Project | Project founded by Richard Stallman, dedicated to open and free software. This includes a license, software, and political activism. |
MIT License | Software license commonly used by open source and library developers that grants users ability to do almost anything they want with the software while indemnifying the software creator from any liability. |
Free as in Speech not Beer | Slogan of the GNU Project. Philosophy that software should not only be free of cost, but that users should be able to do anything with it that they choose including inspecting and modifying source and redistribution |
Open Source Software (OSS) | Software where the source code can be examined and improvements contributed by anyone. Usually, but not necessarily, free of charge or restrictive license. |
Creative Commons | Organization and set of licenses that typically make creative works available for others to consume and share. Several different versions of different restrictiveness levels exist. |
General Public License (GPL) | License maintained by the GNU project that makes software free as in speech and beer. Imposes the additional restriction that derivative works must be under similar license terms. |
DevOps | Loose term for a software practice aiming to unify software development and operations such as deployment, monitoring, and testing into a single process and often even team. |
Data Warehouse | A specially designed database common in larger businesses which has the goal of aggregating large amounts of disparate data. The focus is on reporting rather than directly supporting applications. |
Database Administrator (DBA) | A role within many organizations which is responsible for the proper operation of the organization’s main data storage systems. Frequently involves query optimization, data architecture, warehousing, and backups. |
Docker | Software and company that uses the (originally) Linux-based concept of containers to create isolated and portable environments for code. Similar in application to a very lightweight virtual machine. Popular in DevOps. |
Docker Swarm | Software from the Docker corporation for orchestrating multiple docker containers |
Vagrant | Open source scripting tool for configuring and maintaining virtual machine and container environments. Often used by system administrators and devops. |
Ansible | Open source configuration management, provisioning, and deployment software. Often used by system administrators and devops teams for managing large clusters of real and virtual machines. |
Kubernetes | Open source software for orchestrating multiple containers (including but not limited to Docker). Typically compared and preferred to Docker Swarm. |
Scripting | Writing a short program - typically in a simple high level language - to automate a specific task. |
Build Server | Type of software that can download source code from a repository and automatically run it through compilation, automated tests, code analysis, and optionally deployment. Commonly used by devops. |
Continuous Integration | Software engineering practice where work from multiple developers is merged (integrated) frequently - often several times a day. Often indicates a build server that fires on any code changes to the central repository. |
Continuous Deployment | Practice common in Agile process where the full deployment of an application is scripted and automatically triggered by the build server. |
Best Practices | Rules of thumb and common practices and techniques that are likely to lead to success in a context. For example best practices of a classroom might be to take notes. |
Agile Manifeso | 2001 manifesto by many industry leaders. Composed of four value statements and twelve principles for a better software development process. |
Software Development Lifecycle (SDLC) | The concept of an explicit and intentional process that a software development team will follow to go from design to implementation to deployment and support of an application. |
Agile | Broad category of software development processes with an emphasis on adaptation, customer involvement, and early delivery, with incremental improvement of the product. |
SOLID Principles | Acronym for five object oriented software design principles popularized by Uncle Bob Martin. |
Waterfall | A term coined for a traditional (eg. physical product) development process applied to software with a design phase followed by development, then testing. Originally proposed as a counter-example that wouldn’t work well. |
Rational Unified Process (RUP) | Software development process framework created by IBM. While similar to Agile, tends to be much more prescriptive with defined phases and roles. |
Scrum | Popular software development process featuring techniques like sprint planning, daily stand-ups, retrospectives and a scrum coach to ensure process is followed. Often (mis)applied half-heartedly or only in part. |
Code review | Code quality technique where a team member will review batches of source code changes before they get merged with everyone else’s changes. Often implemented as all code should be reviewed by at least one other person. |
Pair Programming | Code quality technique where two similarly-skilled developers sit at one computer and write code in collaboration immediately discussing and reviewing each other’s work. |
Kanban | Software development process based on manufacturing process pioneered at Toyota. Considered part of the Agile family, focuses on identifying issues early and continuous improvement and delivery. |
User Story | Common technique for distilling requirements. Composed of a statement of a problem a user in a role might have and possible solution. As a __ I want __ because __. A placeholder for a conversation about requirements. |
Design Persona | Design technique for distilling requirements. Helps visualize real users and their problems by drawing up and referring to detailed profiles of fictitious users. |
Wireframes | Design technique where a rough sketch of the eventual user interface is drawn out and used as a starting point for discussions. Wireframes are quick to create and iterate and unrefined to denote that work is in progress. |
Minimum Viable Product (MVP) | The smallest feature set that could possibly still be of use. In Agile, it is common to develop the MVP first, distribute it to users, then use feedback to drive future requirements. |
Prototype (agile) | Technique for distilling requirements where a rapidly-built, partially functional version of the application is created with the intent of getting feedback from users and throwing it away. |
Sprint | Technique common in agile where work is conducted in units of a few (typically 2) weeks. Work is selected, estimates are given, work, testing, and deployment conducted, and any problems reviewed all within the sprint. |
Stand-up | Technique popular in the agile development process where a short daily meeting is held where every team member reviews their work and any impediments. Physical standing is preferred to keep the meeting short. |
Retrospective | A meeting held at the end of a sprint to discuss and decide on process improvements. A core part of an agile software development process. |
Don’t Repeat Yourself (DRY) | A software development maxim to avoid creating multiple instances of redundant code. When similar code is needed in two different places prefer to use one of the abstraction features of your programming language. |
You Ain’t Gonna Need It (YAGNI) | A programming maxim to avoid coding things that you don’t have a direct and immediate need for because in all likelihood, things will change and you will not end up needing it. |
Law of Demeter / Principle of least knowledge | Programming rule-of-thumb that a piece of code should minimize how much it needs to know about how any other piece of code works. Ideally, code should only know about and talk to the structures it uses directly. |
Single Responsibility Principle | Programming principle that a unit of code (function/class/script) should ideally have one responsibility. The only reason it should change is if one of its business requirements change. The S in SOLID. |
Open/Closed Principle | Programming principle that a unit of code should be easy (open) to extend if requirements are added but only need to change (closed) if its own business requirements change. The O in SOLID. |
Liskov Substitution Principle | Object oriented design principle that a subclass should not substantively change (though additional behavior is fine) behavior in a superclass. The L in SOLID. |
Interface Segregation Principle | Object oriented design principle stating that an interface should only expose methods that are likely to be used at the same time. Implementing many interfaces is fine, but interfaces should be small. The I in SOLID. |
Dependency Inversion Principle | Object oriented design principle that code components (function/class/script) should not directly reference other components but should be passed in via a module or constructor injection system. The D in SOLID. |
(Uncle) Bob Martin | Software developer and speaker that evangelizes Test Driven Development and SOLID programming principles. |
Software Testing | The field or action of ensuring that code does what is needed of it. Includes manual testing by QA, developers, beta users, automated testing, unit testing, and generated tests. |
Unit Testing | Development technique for improving code quality. Automated tests are written to call a small bit of code and verify its behavior. The definition of unit is often debated, but tends to be small and highly focused. |
Test Driven Development (TDD) | Practice of writing testing code - typically unit tests - before implementing features. Can result in better quality software design as it forces requirements to be stated and understood very explicitly. |
Behavior Driven Development (BDD) | Style of test driven development with an emphasis on naming tests in a style that business people can understand. Defines a unit testing unit as a concrete behavior or feature that business people care about. |
Integration tests | Automated tests that validate proper behavior of multiple parts of the system together. Often used to test how the user interface interacts with the back end by mimicking a user interacting with the application. |
Automated testing | The practice of writing automated checks that code functions as it should. Includes unit testing, approval testing, integration testing, and an other automation. |
Executable Specification | A subset of BDD where developers create mini programming languages that are simple enough for business people to specify - or at least be able to understand the code - of how a program should behave. |
Acceptance testing | Testing conducted by the product owner of quality assurance team with the specific goal of accepting the feature as completed or not. |
Quality Assurance (QA) | A role and typically a job position for someone who tests that software works as it should. Can be anywhere from bottom-of-the-totem to a specialist who is integral part of the software development process. |
Code Coverage | An automated tool that measures what percentage of your codebase is executed by automated tests. Sometimes used as a metric of quality but high ratings can be misleading. |
Mutation Testing | A tool that modifies code and runs tests repeatedly. If code can be modified significantly and tests still pass then flagged for further investigation. Useful for finding missed use cases automatically. |
Microsoft | One of the wealthiest software companies in the world. Makes money from Windows Operating System, Azure Cloud Services, Microsoft Office, and other properties. Founder is Bill Gates but no longer heavily involved. |
Apple | One of the wealthiest software companies in the world. Makes money from iPhones, iPads, and Mac computers. Devices use iOS or OsX operating systems. Founded by Steve Wozniack and Steve Jobs. |
Github | Website used by many developers to back up their git source code. Introduces many social open source concepts to the masses. Popularized Git, invented Atom text editor. Owned by Microsoft |
Kaggle | Website prevalent in the data science space. Companies give them data sets and Kaggle runs contests for analysis and insights based on the data. |
Hacker One | Website prevalent in the cybersecurity space. Hired by companies to run bug bounty programs where hackers can be rewarded for finding and reporting security vulnerabilities in popular software. |
Gitlab | Open source software product and website that can host git source code (similar to Github) but provides many other features as well. |
Atlassian | Company that provides many popular development services including Bitbucket source control hosting, Jira issue tracker, and Crucible code review tool |
StackOverflow | Popular Q&A website created by Jeff Atwood and Joel Splonsky. Aims to be a knowledgebase for all questions developers might ask. Has spin off Stackexchange sites for Q&A on non-programming topics. |
Venture Capitalist (VC) | Type of company that invests in growing companies. VC firms typically look to invest large amounts of money in businesses with high growth potential and can obligate companies to providing high returns on investment. |
Angel Investor | An individual or group that invests their own money in an early stage company in exchange for an ownership stake. Typically smaller amounts of money and less pressure than venture capital investment. |
Alphabet Inc. | Parent holding company of Google Inc and other related companies like Waymo and DeepMind. Created in 2015 after a restructuring of Google. |
Oracle Corporation | Massive software company that owns a very popular enterprise data system, the Java trademark, and various cloud services. |
Slack | Chat program and website commonly used for chat in online groups and companies with a significant remote work-force. |
Azure | Microsoft’s cloud services platform. Offers hosting, renting of virtual machines, databases, build systems, source control, and all manner of infrastructure as a service. |
Amazon Web Services (AWS) | Amazon’s cloud services platform. Offers hosting, renting of virtual machines, databases, build systems, AI, and all manner of infrastructure and utilities as a service. Currently the most popular SaaS provider. |
Software as a Service (SaaS) | Business model where clients pay a fee in order to use online software without installation. Typically the software is administrated via a web interface and updates are applied instantly and continuously. |
Website Host | Company that provides computers that serve up a web application to the internet. Often a large company like AWS but can be managed in-house by anyone with a good internet connection and a consistent IP address. |
AWS Lambda | Extremely cheap service provided by Amazon where you can set up a program to run whenever a certain url is hit. These must be simple but can be useful for integrating other services with custom code. |
Application Programming Interface (API) | A defined way of interfacing with software. Often used to refer to how internet services (eg Google Maps) might be used by other applications but can be the documented way of interacting with any code. |
Internet Relay Chat (IRC) | An older but still popular chat system which is completely free and open for anyone to implement or use and fully distributed with no central location. |
Heroku | A website that offers scalable hosting and other useful tooling. Specializes in hosting Ruby and Node web applications. |
TopCoder | A website that runs programming competitions where participants can win cash paired with a software subcontracting and consulting business. |
Apache | An incorporated community dedicated to open source. All Apache projects are published under the Apache license, similar to MIT. |
Cloudflare | A company that provides world-wide infrastructure for scaling web applications. Provides CDN, caching, encryption, and denial-of-service protection to many businesses and individuals. Competitor with Akamai. |
Akamai | First content delivery platform company on the market and still a popular infrastructure for extremely large web application scaling. Competitor to Cloudfront. |
Dot-com Bubble | Heavy market speculation in early internet companies and then the subsequent crash that occurred between 1997 and 2001. Many large companies went out of business. Heralded the beginning of advertising supported content. |
International Organization for Standardization (ISO) | International umbrella organization for a variety of standardization bodies. For example ISO 8601 defines an unambiguous format for serializing dates and times across any time zone. |
Unity 3D | Popular, free (but not Open Source) engine and development environment useful for creating all manner of video games and 3d experiences on all manner of platforms. Typically programmed in a modified version of C#. |
Unreal Engine | Popular 3d engine used by many first person and other 3d video games. |
Netscape | Company and web browser that was a web pioneer throughout the 1990s. Lost the browser wars to Microsoft and were purchased by AOL in 1998. Browser was reborn as Firefox. Many alumni are very influential in the industry. |
Id Software | Pioneering video game company started by John Carmak, John Romero, and others. Created Commander Keen, Wolfenstein 3d, Doom, and Quake. |
Facebook | Company founded in 2004 by Mark Zuckerberg. Initially a social network for university students, now has over two billion monthly active users. Holding company acquired WhatsApp, Instagram, Occulus VR, and many others. |
Trello | Task tracking web application initially created by Fog Creek software and purchased in 2017 by Atlassian. Focuses on enabling a lightweight Agile process that mimics physical post cards on the wall. |
Design Patterns | A set of terms used by developers to discuss common ways of structuring and using their code. Examples include factory, composite, visitor, decorator, and many other patterns. |
Hacking | The act of playing and experimenting with a system to see how it works or building on top of it. |
Black Hat | Attacking a system with malicious intent. |
White Hat | Attacking a system with the intent of discovering gaps in security which can then be reported and used to improve the system. |
Model View Controller (MVC) | Popular and frequently misapplied design pattern which recommends creating separate components for the data, views of the data, and components that stitch these together and allow user interaction. |
Model View View Model (MVVM) | Design pattern commonly used in user interfaces where data in an object constantly reflects the state of the UI. User interactions change the object and changing the object modifies the interface. |
Object Relational Mapper (ORM) | Pattern often used for interfacing with SQL/relational databases. The ORM provides a way to interact with language objects and maps changes automatically to the underlying database tables. |
Model-binding | Design pattern heavily associated with MVVM. When a user interacts with inputs, values are automatically synchronized to an object. |
Distributed Denial of Service (DDoS) | Attack on computer systems which directs to it a large amount of internet traffic from a variety of sources. The system cannot handle all requests or distinguish attack from legitimate traffic and becomes inaccessible. |
Unidirectional Dataflow | Popular pattern for building user interfaces where every user interaction triggers code that change a single model. The user interface is then recalculated completely from this model. Popular in frameworks like ReactJs. |
Microservices | Architectural pattern where a large system is designed as a set of independent smaller applications which talk to each other. Each has its own team and is free to make its own technical decisions. Similar to SOA. |
Service Oriented Architecture | Architectural pattern similar to microservices where a system is designed as a series of cooperating services. These tend to be more tightly coupled than microservices but can also share code more easily. |
N-Tier / Onion Architecture | Architectural pattern where a central “domain” encompassing the application’s core logic interacts with a variety of surrounding services. These in turn might be surrounded by yet other services that interact with them. |
Domain Driven Design (DDD) | Architectural philosophy and set of design patterns that recommend studying the way the business operates and mirroring its language in code as well as finding natural seams to break out independent contexts. |
Pixel | A color at a certain location in a raster image grid. Often corresponds directly to a physical LCD crystal dot that composes a monitor screen. |
Raster Format Image | Category of image file format that encodes the color of each pixel that composes an image. |
Vector Format Image | Category of image file format. Stores the image as a description of its visual elements (eg “a line from point 100, 200 to 600, 1200”). Examples: svg, eps, stl |
bit | The smallest piece of information possible. Either a true or false, in hardware often whether an electrical signal exists at a certain time or not. Digital storage is a series of billions of bits in order. |
byte | A fixed number of bits - usually 8. It is more useful to talk in terms of bytes than bits since it can represent more values (eg 2^8 = 256 as opposed to just 2). |
Serialization | The process of converting a data in running code into a series of bytes that can be stored or transmitted to another system. The same data can be loaded into running code later. |
Binary | A process of serializing any data. Focuses on bits rather than bytes. Binary serialization sizes are usually smaller but more difficult for developers to modify directly for example with a text editor. |
Text Encoding | A process of serializing text data to a binary format. Usually involves a large table that maps each character to a number which are then converted to binary using a variety of methods. |
Unicode | A very large, international standardized table that aims to map any known text character in any written language to a unique number. Maintained by the unicode consortium. A row in this table is known as a code point. |
UTF-8 | Binary serialization of numbers (typically generated from a unicode mapping) that optimizes for situations where numbers 0-127 (2^(8-1)) are most common. Variations like UTF-16 and UTF-32 are often used internationally. |
ASCII | Table of 127 common English-language characters and a number associated with each. Frequently used in the early days of computing. For compatibility, the first 127 values of the Unicode table are identical. |
YAML | Format often used for storing simple structured data. Optimized to be human readable and easily editable with a text editor. |
XML | Relatively complex and verbose format used for storing data. Has many features such as the ability to denote relationships. Optimized for ability to represent all types of data while remaining somewhat human readable. |
XSLT | Language for transforming XML into other formats. Can be used to convert XML to HTML, Latex, and many other formats. Often used to modify XML storing configuration data to store configuration for a different environment. |
JSON | Format often used for storing simple structured data. Optimized to balance being human readable and easy to edit, while simultaneously being a subset of JavaScript and hence valid code. |
INI | Older format often used for storing very simple configuration data. Supports very little structure (eg it is not possible to denote an array) but is very easy to read and edit manually. |
Networking | The act, field, or industry of joining many computers so that applications running on these may communicate with each other. Typically used to describe the lower level activities of how data reaches its destination. |
Secure Socket Layer (SSL) | Older industry standard set of encryption protocols that can encrypt content as well as verifying that content received has not been modified in transit, this depends in part on certificate authorities. |
Transport Layer Security (TLS) | Protocol that replaces SSL after SSL v3. Uses pre-installed certificates and the certificate authority system to ensure that traffic is both encrypted from people spying on the wire and not modified in transit. |
Certificate Authority (CA) | A company that is in the business of selling SSL/TLS certificates used as a key to encrypt network traffic. Some reputable certificates are pre-installed and new certificates can be vouched for by established CAs. |
Let’s Encrypt | An organization launched in 2016 that serves as a certificate authority and provides a free, automated way of verifying and generating your own certificate. The goal is to promote encryption for the entire internet. |
Open Systems Interconnection Model (OSI model) | Conceptual model of how data is transmitted over the network. Composed of seven layers each of which are responsible for a conceptual step. Eg. the network layer defines how data finds its way along the network. |
Transmission Control Protocol (TCP) | Specific protocol used by web traffic to ensure data can be sent across a complex network, arrive at its destination, and be assembled into the correct order. Used to transmit text, images, email, HTTP, etc. |
User Datagram Protocol (UDP) | Specific protocol used by web traffic to send data across a complex network. Unlike TCP, it does not ensure that all data arrives at the destination. Used for transmission of media like audio and video. |
Internet Protocol (IP) | System of addressing computers connected to a network. Requests are routed to the connected computer with a given IP address. Composed of four numbers 0-255 separated by a dot (eg 192.168.0.10). |
Internet Protocol version 6 (IPv6) | Version of IP using 128 bits (“standard” IPv4 uses 32) allowing for far more IP addresses to be available. Represented as a group of hex digits with a colon separator (eg 2001:0db8:0000:0042:0000:8a2e:0370:7334). |
Domain Name System (DNS) | A system of distributed lookup tables that map a domain name (eg google.com) to an IP address. A web request will look up the IP address for the requested url domain name before being sent out over the internet. |
Domain Name Registrar | A company that sells domain names. When one is sold, it is added to the company’s lookup table and will eventually be visible in other registrar’s lookup tables as well. Looking up an address (DNS Lookup) is free. |
Top Level Domain (TLD) | The last “.com”, “.org”, “.biz”, “.uk”, etc part of a domain name. TLDs are regulated by the ICANN organization and have to follow certain rules (eg the UK manages .uk, universities manage .edu). |
Content Delivery Network (CDN) | Business which distributes content in a geographically optimized manner. For example an image requested from a CDN will be sent from a nearby (in network terms) server. |
ping | Simple command line program available on most computers. Used to determine if a computer at a network address is available and as a quick and dirty measure of how long it might take to respond to a request. |
traceroute / tracert | Command line utility that is used to visualize the route over the network that network traffic might take to another computer. You can see a limited amount of information on each computer it passes through. |
nmap | Command line utility used to find all devices connected to a network and what services can be accessed on these. |
Packet Switching | When data is sent across a network it is broken up into a series of packets each of which is sent to the destination independently. TCP guarantees a packet is delivered via a retry system. UDP allows packets to get lost. |
Network Data Packet | The unit of data which is sent across a network. Each packet is akin to a mailed piece of a jigsaw puzzle. When all are received, the puzzle can be completed and presented to the user. |
Hub | A piece of network hardware that broadcasts any signal received to all connected devices. |
Switch | A piece of network hardware that listens for data packets, reads what connection each packet is addressed to and sends that packet only to that connection. |
Router | A piece of hardware that connects two or more networks together. When receiving data, the router itself is treated as a destination for data. It then modifies the packet to work on the other network. |
Modem | A device for sending data between two points of a network by modulating an analog signal that is demodulated into a digital signal on the other end. |
Port (Networking) | A virtual or physical connection available on a computer system which can hook up to a network of some sort. Typically numbered and managed by the Operating System. |
Metadata | Data about other data. For example a header that precedes a bunch of data that tells you the subject, or how much data there is, or what format it is in. |
Word Wide Web / WWW / Web | The technical idea and set of standards that web browsers and web servers use to communicate, transmit, and display data. Initially pioneered by Sir Tim Berners Lee and grew rapidly in the 90s. |
Hypertext Transfer Protocol (HTTP) | Protocol defined by Tim Berners Lee for how the data and metadata in web communications should be structured. Requests have a verb and url, responses a status code, all can have text headers and a text or binary body. |
Headers (World Wide Web) | Standard for how to send metadata alongside HTTP web requests. Consists of a series of text keys and values. Some keys are defined to have special meaning for networks or browsers. |
HTTPS | HTTP protocol wrapped by TLS or (in the past) SSL encryption protocols. Encrypts sensitive data and ensures cryptographically that web requests haven’t been modified in transit. |
HTTP/2 | Update to the HTTP protocol that supports features like the ability to handle multiple requests on a single connection and the ability to push additional data to the client beyond what was requested. |
REpresentational State Transfer (REST) | Set of recommendations on how to structure URLs and how to use HTTP verbs in order to create APIs on the web. Focuses on treating the server as a set of resources that a client can read or modify. |
Origin (Networking) | When making a web connection, the protocol, domain, and port portions of the url. Not the path (eg the part following `.com/`) or parameters. |
Single Origin Policy (SOP) | Security policy implemented by browsers where code running on a web page that requests data from a different origin is strongly limited in what it can do with the received data. |
Cross Origin Resource Sharing (CORS) | A header that can be added to web responses that will result in browsers relaxing their single origin policy and allow others to integrate with and use your data directly. |
Content Security Policy (CSP) | Web browser feature allowing the setting of headers onto an HTML document that limit the sort of network activity is allowed to code running on the page. Good idea to set specifically as can prevent XSS vulnerabilities. |
Programming Language | A syntax that could be used to organize instructions to the computer. Includes a compiler, interpreter and/or runtime necessary for executing the code and usually a “common library” of helper functions. |
Elm | Programming language used as an alternative to JavaScript for writing web applications. Transpiles to JavaScript but bears little similarity, is functional with an advanced type system more closely remembling Haskell. |
R | Programming language used frequently in data processing, analysis, and visualization. Supports easy denotation of mathematical operations and working with sets of data. Often used with the R-studio software. |
Mathematica | A programming language and IDE software used frequently in data science and analysis work. Invented and developed by Stephen Wolfram and is proprietary. |
Erlang | Established functional programming language developed for programming network switches. Focuses on modeling things as a cluster of actors. Can be hot-patched, spread among multiple machines, and parallelized easily. |
Elixir | A functional, strongly typed programming language joining the lightweight syntax of Ruby with the powerful programming model of Erlang. |
Phoenix | A web framework for Elixir that is based in concept on Ruby on Rails. The underlying tech is very different however, supports parallelization and has seen incredible performance compared to other platforms. |
COBOL | An older procedural programming language that runs largely on old mainframe computers. Considered an ugly and difficult language but can pay well as a career due to many programs and limited developers working in it. |
Lisp | Older functional dynamically typed programming language still in occasional use today. Progenitor of many other languages. Structures code as a set of s-expressions. Focuses on meta-programming, code that generates code. |
C# | Flagship programming language of Microsoft. A strongly typed, class-based, relatively verbose language. Started as a clone of Java but has gradually incorporated powerful features from other languages. |
Visual Basic .Net | Language closely related to c#. Runs similarly and can do most c# things but with a visual basic syntax. In some ways a misguided attempt to make a language that is easier to learn by being more verbose. |
Clojure | Open source language that runs on the JVM and inter-operates natively with Java. Syntactically a form of Lisp, it is dynamically typed functional, and focused on meta-programming. |
Kotlin | Programming language created by Jetbrains for the JVM. It is strongly typed with a focus on readable, minimal syntax and adding a thoughtfully curated set of features from other languages. |
Objective-C | Strongly typed, relatively verbose programming language used primarily in iOS development. |
C | Relatively simple low level language that is commonly used in working directly with devices or in areas where heavy manual optimization is required. Used in core parts of operating systems, web browsers, game engines. |
C++ | Programming language that evolved C by adding a class system. Used in many places where C is used as well as for application development. A progenitor of c#, Java, Objective-C, and many other languages. |
Haskell | Functional programming language mostly used academically. Has an extremely robust type system that can be used to mathematically prove code free of certain types of errors. Focuses also on controlling side-effects. |
JavaScript | Dynamic, weakly typed, prototype-based programming language that runs in web browsers, is therefore a cornerstone technology of the web. Also runs on servers as NodeJs. More closely related to Scheme and Self than Java. |
Typescript | Programming language heavily inspired by C# that rather than compilation is transpiled (converted) to JavaScript code that can run in any browser. Focus is on being possible to add great tooling to coding for the web. |
BASIC | Very old programming language from the 60s. Focus was to make it easier (as opposed to Assembly) for non-developers to write software. Relatively limited but further versions like visual basic could do much more. |
Visual Basic (Classic) | Software and programming language created by Microsoft in the 90s for writing Windows applications. Included the ability to visually create a UI which generated the proper code. Syntax was initially based on BASIC. |
Scala | Functional programming language that runs on the JVM platform. Often used instead of Java. Focus is on making functional programming to Java developers while adding many nice to have features. |
HTML | Not a programming language but a way of marking up text with other text that a web browser can display as a web page. HTML doesn’t do anything but defines the structure of all parts of a document. |
Cascading Style Sheets (CSS) | System created in the 90s for allowing users to control what their web documents will look like when appearing in browsers. Composed of a secondary document of “display suggestions” for different elements. |
Scalable Vector Graphic (SVG) | Popular format for raster images. Similar in style to HTML but focused on drawing line images. Can be used in many places with HTML and CSS to provide drawings, animations, and effects. |
Powershell | Programming language used in scripting of Windows systems. Dynamically typed with full access to the .Net runtime and focus on being accessible. Commonly used for system administration and automation. |
Perl | Family of dynamically typed programming languages that saw heavy use in Linux system scripting in the 90s and early 2000s. New version Perl 6 is very different. Know for its terse style, difficult for beginners to read. |
Swift | A strongly typed, popular programming language created by Apple. Initially created as an alternative to Objective-C for iOS development, now being used elsewhere. Known for being elegant with powerful low-level features. |
Prolog | A logic programming language used often as a rules engine. Can evaluate a series of preprogrammed true statements about a system to answer questions about it. |
PHP | A dynamically typed, class-based language prevalent in the development of server-side web applications. Often mocked for being confusing and inconsistent yet runs much of the world’s most popular web software. |
LAMP Stack | A popular combination of open source technologies for making PHP applications. Runs PHP with a MySql database, using the Apache web server on the Linux operating system. |
Ruby | Established, object-oriented, dynamicly typed programming language written to optimize for “developer happiness”. Used for scripting and web development Ruby on Rails is by far the most popular framework in use. |
Ruby on Rails | Popular web framework used by Ruby developers. Developed in the mid 2000s and influenced many subsequent web frameworks with ideas of convention over configuration and making working with REST simple. |
ActiveRecord | ORM library for working with and managing a database often used in Ruby. Integrates tightly with Ruby on Rails. Occasionally criticized for the limitations it imposes on data models using it. |
Rake | Build system used in the Ruby ecosystem. Used to express the order in which different scripting tasks must occur. |
gem | Library stored in the central Ruby package manager. Many Ruby programs stitch together many gems to create complex applications. |
JVM | Command line utility used for managing which version of Ruby is used to run an application. Has been very influential on similar version mangers in other languages. |
Python | Established dynamicly typed scripting language. Attempts to optimize for consistency and productivity. Has a massive set of community libraries especially in data science and Machine Learning. |
Django | A server-side web framework for building HTML and processing input and storing data in a database that is popular when working in Python. Seen as a Python analog to Ruby on Rails. |
Flask | A minimal web framework for creating web server applications popular when working with Python. Similar to Ruby’s Sinatra framework, provides very basic features and lets Flask plugins add features. |
PyPI | Python Package Index. A centralized repository of Python libraries as install-able packages. |
Jupyter Notebooks | A notebook based programming environment. Used largely with Python but supports many programming languages. Useful for creating interactive documentation, or just interactively exploring some data or library. |
Pip | A Python tool used to install Python packages into the current Python environment. |
Pipenv | A Python tool that creates and manages a Python “virtual environment” per application which isolates it and its packages from external changes. |
SqlAlchemy | Python package that is an Object Relational Mapper for working with the database in a class-oriented manner. |
Java | Open source language and runtime. A strongly typed, class-based, relatively verbose language. Very popular since the mid 90s. Trademark and implementation now owned by Oracle. Sometimes used interchangeably with JVM. |
Java Virtual Machine (JVM) | Java runtime which takes the bytecode from JVM-based language compilation and executes it on the target machine, adapting it to the specific model of CPU as it runs. Provides features like memory management. |
Swing | Java framework for building user interfaces. Frequently used for Desktop systems. |
Spring Boot | Java framework for rapidly building well structured web server applications. Analogous to Ruby on Rails but runs on the JVM. |
Spring | Popular open source Java framework for inversion of control. |
Maven | Build and packaging tool popular in the Java space. |
.Net | Used to refer both to the broader Microsoft .Net ecosystem and, to the virtual machine used by it (similar to the JRE), and to the various utility libraries built in as the .Net Framework. |
ASP.Net | A system for creating web servers that run on .Net. Typically not used directly but with an additional framework such as Webforms, Asp.Net Mvc, Blazor, etc. |
Winforms | A UI system for building windows desktop applications. While still in use, mostly deprecated in favor of WPF. |
Nuget | A package manager and central repository used by .Net projects to distribute and install reusable libraries. Similar to Python’s pip, Ruby’s gems, or Node’s npm. |
Webforms | A framework for building server-side web applications on .Net popular in the early 2000s. Created specifically to ease the transition for VB6 developers to the web. Widely considered complex and difficult to work with. |
Windows Presentation Foundation (WPF) | A framework for creating user interfaces on .Net. Used primarily for programming windows desktop applications. |
Windows Communication Foundation (WCF) | A framework for communicating between applications where at least one of the applications is .Net. Usually used for building HTTP web services but supports many other communication mechanisms. |
.Net Standard | A standard for what sort of functionality must be provided by a virtual machine and standard library for it to be considered .Net and be compatible with other .Net systems. .Net Core is the reference example. |
.Net Core | An alternate implementation of .Net Framework complying with the .Net Standard. Focus is on keeping everything modular and on enabling .Net development for Linux and OSX. |
Mono | An open source implementation of .Net Standard that can run on any operating system. Powers the Unity 3d engine and used in many other places. |
Asp.Net Web Api | Popular open source .Net web framework created by Microsoft. Focused on making it easy to build REST APIs that take in and return data. |
Entity Framework | Open source ORM library by Microsoft. Has two modes: Database First - which will generate classes from a database; or Code First - which adapts a database to a custom code model. Includes a migration system. |
ECMAScript | Official name of the standard usually referred to as JavaScript. “JavaScript” is a trademark of Oracle, but the language standard is maintained by the ECMA European standards organization. |
Douglas Crockford | Author of JavaScript, the Good Parts; a popular book about using JavaScript the “right” way with good programming practices. He also formalized the JSON format. |
Brendan Eich | Invented the JavaScript language in ten days while at Netscape and has participated actively in its development, in the Firefox web browser, and in the development of the Brave browser. |
User Interface (UI) | The part of your application a user is meant to interact with. Can be a web graphical interface, an app ui, cli commands, REST endpoints, or even just code. Whoever your user is, the way they interact with your code. |
User Experience (UX) Design | The act of field of analyzing how users interact with a system and optimizing their experience. Often focuses on accessibility, intuitive design, and making things simple but not necessarily easy. |
Isomorphic Code | Code written in such a way that it can work either in a client or server environment. Occasionally these patterns are used on the web to speed up “first render” of web applications. |
Webassembly | Extension to JavaScript which allows using web browsers to run code compiled to a wasm low level code. Can allow programming in languages other than JavaScript in web browsers as well as highly performant web apps. |
Web Browser Web Worker | Web browser technology that allows JavaScript on the page to parallelize work while retaining the safety of running JavaScript. |
Web Browser Service Worker | Web browser technology that allows custom code to run at the network request layer. Can be used to implement custom caching strategies, stub things out, and optimize network traffic. |
Progressive Web App (PWA) | Set of web technologies that when used together can generate an experience in a web application indistinguishable from an installed natively written app. |
Transpilation | Act of taking code written in one high level programming language, and converting it to equivalent code in another high level programming language. Used commonly by JavaScript developers eg with Babel. |
Minification | Act of transpiling code optimizing it for as little text characters as possible. Usually involves removing whitespace and auto generating short, terse names. Very common in JavaScript development. |
Bundling | Act of combining web assets (eg JavaScript files) into a single asset that can be transferred in single connection. |
Babel (JS) | Technology used by web developers that takes JavaScript code and modifies it to equivalent code usable with older versions of JavaScript. Used so that you can use new language features but still support older browsers. |
Webpack | Technology used to provide JavaScript modules, transpilation of features, serving and bundling of JavaScript, CSS, and image files. |
Npm | Package manager that runs on NodeJs projects and is used almost ubiquitously by JavaScript projects. Known for an extremely large repository of shared code, much of it however is of uneven quality. |
Yarn | An alternative to the npm installer that provides more options while still using the central npm repository of code. |
Eslint | A tool used in JavaScript development to monitor code for stylistic and other easily verifiable errors. Useful for catching mistakes early and enforcing a common style within a team. |
Prettier | A tool used in JavaScript development. Similar to Eslint, but instead of just warning developers of a violation, will actually modify code to fix it. |
UI Frameworks | A category of library focused on helping to create graphical user interfaces. The point of a UI framework is to make it simple to create, modify, and share custom UI components. Examples include Angular, React, VueJs. |
ReactJs | Popular UI library that makes creation of components as easy as a JavaScript function. Introduced the concept of jsx and markup-in-code. Focuses on providing a controlled, straightforward manner for changes to UI state. |
BackboneJs | Older JavaScript UI framework, one of the first that popularized an MVC-style workflow for building JavaScript-driven user interfaces. |
Angular | Open source UI Framework maintained by Google. Regarded as opinionated and verbose but powerful. Typically written using the Typescript programming language and focuses on providing lots of Angular-specific tooling. |
AngularJs | Older version of Angular often referred to as Angular 1.x or <2. Prior to Angular 2, AngularJs had a very different model. While still used, there is much less tooling available and higher discipline required to do well. |
VueJs | Popular JavaScript UI framework using the same technology as ReactJs with a focus toward providing common use cases and patterns that work out of the box. |
React Native | A technology that allows writing ReactJs-style code in JavaScript that can be compiled into a native, cross-platform, mobile app. Focus is on bringing the ReactJs componentization model to mobile development. |
Ionic | A technology that allows writing Angular code in Typescript or JavaScript that can run as a cross-platform, mobile app. Focus is on providing many components out-of-the-box and a robust development environment. |
Flutter | An open source technology created by Google that allows writing code in the Dart programming language that compiles into native, cross-platform, mobile applications. Focus is on performance and good development tooling. |
Database / Database Management System (DBMS) | A category of technology used for systems for which the primary task is to reliably store large amounts of data. Typically users don’t interact with these directly, but with programs that wrap one or more DBMSes. |
GraphQL | A specification for querying and modifying data. Often used for building web APIs. |
OData | A specification, maintained by Microsoft, that can be used for building web APIs. An OData api can usually be queried via LINQ. |
Prepared Statements / Parameterized SQL | Technique for interacting with SQL databases from a programming language. If used properly, will render a system immune to SQL Injection attacks. |
Database Migrations | A system - typically a code library - for synchronizing a database system structure with changes required by the codebase. Used to automatically generate and update databases on deployment. |
Cache | The act of or system for storing copies of data in order to make subsequent access for it faster. Allows an explicit decision on the tradeoff between data being up to date and fast to access. See CAP Theorem. |
Relational Database | Umbrella term for a type of database technology based in design on set theory and interaction via the SQL language. Is the most popular category of database and is often seen as a good default. |
Database Schema | Usually refers to relational databases; the defined structure of the data being stored. Design requires great care as mistakes can lock a system into a sub-par structure. Typically considered part of development. |
Sql Server | A type of relational database system created by Microsoft and popular in systems using Microsoft technology. Most versions require a moderately priced license to use in production. |
Oracle (Database) | A type of proprietary relational database system created by Oracle Corporation. Known for being expensive but with good features and support. Used frequently in enterprise business scenarios. |
MySql | Open source relational database popular in the PHP community. Focus is on balancing light weight footprint and professional features. Acquired by Oracle resulting in multiple maintainers forking it to the GNU MariaDb. |
Postgres | Popular open source relational database. While more difficult to work with than MySql, the focus is on being fully featured and it provides a large and robust community of available plugins. |
Sqlite | Popular open source relational database. Only has the most basic features but is extremely portable - the entire database is a simple file and unlike most others, doesn’t require an always-running service. |
NoSql | Any type of database that does not use Sql and is not relational. Mostly distinguished historically as relational database theory had a lot of its math worked out and resulted in relational databases developing first. |
Document Database | Category of database system with a focus on storing documents. Unlike relational databases these do not usually have a schema and can be very fast but also less flexible for querying. |
MongoDb | Type of OSS document database where documents are stored as JSON objects. Optimized for fast writes and a quickly growing and changing data storage needs. One of the first NoSql database systems to see common use. |
CouchDb | Type of open source document database. Optimized for running anywhere and providing the ability to synchronize multiple copies in multiple configurations. |
Elasticsearch | Type of open source document database. Optimized for extremely fast and robust search across a variety of synchronized “indexes”. Good solution for caches and for a fast, powerful search interface. |
Key / Value Store | Category of database where every bit of data can be looked up by a unique identifier key (but the data itself can usually be any structure). Commonly used for caching systems. |
memcache | Popular open source key/value database. Is extremely fast but not durable - data is loaded in memory and goes away when the process restarts. Commonly as a caching layer for web applications. |
Redis | Open source key/value database. Fast, distributed, and optionally durable, it is commonly used for caches, aggregations, and as a messaging queue. |
Riak | Key/value database with a large set of robust features focused on distributed computing. |
Neo4j | A type of graph database. Neo4j focuses on storing entities and their relationships. Can be used to efficiently query deep relationships such as querying information on friends of friends. |
Responsive Design | Design philosophy commonly considered on web pages. Styles should respond to the capabilities (typically screen size) of the medium they’re viewed on. Elements should rearrange themselves to fit optimally. |
Flexbox | CSS feature useful for creating web page layouts that adjust well to changes in screen size. |
CSS-Grid | CSS feature useful for creating complex web page layouts. As of 2018, this feature has moderate support in web browsers. |
Bootstrap | CSS and JavaScript framework for building rich, responsive web pages. Initially led the charge in Responsive design but many of its features now have excellent built-in alternatives. |
SASS / SCSS | Open source styling language similar to CSS that can be converted to the CSS equivalent. Contains many often requested CSS features such as functions, calculations, nested selectors, and variables. |
LESS | Open source styling language similar to CSS that is converted to the CSS equivalent. Similar to Sass but simpler and has more options for how to run. |
Polyfill (Web browsers) | A bit of CSS and/or JavaScript code that - if a certain feature does not exist in the web browser - will mimic it for running code. (Eg. Some browsers don’t support sessionStorage, which can be added with JavaScript.) |
Autoprefixer | Tool for writing CSS. You configure the browsers to support and use all modern CSS features. Autoprefixer creates versions of your CSS that will work in your target browsers. |
PostCSS | Tool for writing CSS. Similar to Autoprefixer but can do more due to the ability to shim features with JavaScript polyfills. |
Stylelint | Tool for writing CSS. Analyzes your stylesheets and make suggestions on likely errors based on a built-in set of rules. |
CSS Framework | Type of CSS library that assists with creating UI elements like dropdowns and dialogs. Usually also proposes a manner of structuring and maintaining a large CSS codebase. |
Bulma | Popular open source CSS framework that uses flexbox techniques to create a flexible and responsive design. Bulma is modular and designed to only have certain portions included. |
Source Control | A category of tool used by developers to safely store checkpoints of their code. This is a core tool used often to make backups, run code experiments, deploy code, and collaborate. |
Commit / Check In (Source Control) | A source control term for a checkpoint. Once a commit is made, it is possible to revert code to that exact state at any point in the future. |
Branch (Source Control) | A source control feature where developers create parallel histories of work both originating from a common commit. |
Distributed Version Control System (DVCS) | A type of source control system where everyone with a copy of the code holds a copy of the entire history. One is as valid as the other and there is therefore no “central” system except when agreed upon by convention. |
Git | Created by Linus Torvalds, is an extremely popular distributed source control system with a focus on maximum flexibility for teams. Users can make checkpoints while offline, branch easily, and merge entire histories. |
Mercurial / Hg | A distributed source control system similar in capabilities to Git but with an added focus on an intuitive command line interface and exposing only commands that do not modify history by default. |
Feature Branching | The practice of creating a branch any time a developer starts work on a new feature. The feature can therefore be developed in isolation of other work and merged when complete. |
Concurrent Versioning System (CVS) | An older but historically significant centralized source control system. CVS used a central server for synchronization between developers, and rather then commits only tracked histories of individual files. |
Subversion (SVN) | A centralized source control system using a central server for synchronization between developers. SVN was explicitly designed to address shortcomings in CVS. While popular for a while, now mostly supplanted by Git. |
Team Foundation System (TFS) | A system provided by Microsoft nominally for source control. However it also includes reporting and project management features. The source control part can use Git as an engine or its own SVN-like system. |
Subversion Check Out | The term for getting code at a particular checkpoint so that it can be experimented with, fixed, analyzed, or otherwise worked on. |
Pull Request | Feature of websites such as Github that host DVCS. Essentially a user interface over a request to pull in changes from a cloned repository. Often used as a time for collaboration and code reviews. |
Fork | Feature of websites such as Github that host DVCS. Process of creating a copy of the code in your own account that you have access to commit to. A fork is usually used as a point of origin for a pull request. |
Clone (Source Control) | Act of downloading and creating a cloned repository - a full copy of the full history of the project. When using DVCS, it is typically done once by each new team member when they initially “get a copy” of the code. |
Merge (Source Control) | When there are parallel histories of code changes either due to purposeful branching or developers making changes without awareness of each other, a merge is used to resolve differences and join the histories. |
Push | When using DVCS, a push is the process of saving your code history to another repository that was previously cloned and that you have write access to. Used often to backup code and share changes with teammates. |
Git Add | When using Git, changes you want to commit have to be added to the index / staging area using this command. Only changes stored in the index will be committed. |
Pull (Source Control) | When using DVCS, the process of pulling in changes from another source. A pull request is literally a request that a project owner pull in changes from a previously cloned repository. |
Rebase | A technique for modifying history in DVCS systems. Often used in workflows popular in open source, can for example be used to compress a sequence of many changes into one which can be useful for anyone viewing history. |
Stage (Source Control) | A generic term for preparing changes that will be stored by source control. |
Ignore file (Source Control) | A file used to configure source control. Used to define files that will not be stored in commits. Frequently used to ignore configuration files, passwords, and results of builds. |
Accessibility | Designing application and web UIs in such a way so that they can be used by blind, deaf, and otherwise disadvantaged people. |
World Wide Web Consortium (W3C) | The standards organization of the Web. Founded by Tim Berners Lee and composed of multiple committees, organizations, browser vendors, and standards bodies. |
Web Accessibility Initiative (WAI) | An effort lead by the W3C to improve accessibility on the web for people with disabilities. |
Web Content Accessibility Guidelines (WCAG) | A series of guidelines published by the W3C as part of the Web Accessibility Initiative. Specifies how to build web pages that are optimized for use by people with alternative devices, especially the disabled. |
Cyber-Security | An umbrella term for all manner of hacking, defensive security, policy writing, and enforcement that has to do with attacking and keeping computer systems safe. |
Tailored Access Operations (TAO) Unit | An elite hacking group within the NSA often concerned with offensive operations. Together with various other “white hat” groups is occasionally referred to as the “Equation Group”. |
Phishing | A category of typically black hat behavior where individuals are tricked into revealing private information using a computer, telephone, email, or some other communication medium. |
OWASP | Organization that maintains lists of common attacks on internet-connected systems and their associated defensive remedies. |
Common Vulnerabilities and Exposures (CVE) | A public database of known cyber-security vulnerabilities and disclosures. Vulnerabilities can be referred to the their CVE identifier eg. CVE-2017-9805 is the Apache Struts vulnerability used in the hacking of Equifax. |
SQL Injection | A common type of vulnerability where an attacker crafts input that may cause a system’s database to do unwanted things such as delete or reveal sensitive data. Preventable through the concept of parameterized queries. |
Cross Site Scripting (XSS) | A common type of vulnerability where an attacker crafts input that may allow them to take over the browser of others viewing data on the same page. Used often to steal credentials and gain unauthorized access. |
Cross Site Request Forgery (CSRF) | A type of vulnerability where a malicious web page tricks a user’s browser into sending requests to another website in a way that is indistinguishable from the user triggering those requests on purpose. |
Side channel attack | An attack on a system via the analysis of its implementation. For example stealing a password by listening to key-press sounds and their timings. |
Ransomeware | A category of attack - often in the form of a virus locking all files and computers behind a password - where the attacker extorts money from the target to cease the attack. |
Buffer overflow | Vulnerability in systems where inputting too much data can be used to cause unplanned code to execute potentially taking over the system. |
Shellshock | A vulnerability in the Bash CLI which allows attackers to escalate privileges by exploiting the fact that many tools use environment variables inappropriately to share functions. |
Heartbleed | A buffer overflow vulnerability in the popular OpenSSH open source software that enables attackers to execute code on a server you do not control. Still commonly seen due to the difficulty of updating many IoT devices. |
Meltdown & Spectre | A timing side channel attack possible on many CPUs and can enable an attacker to steal data from other running applications. Demonstrates the limits of CPU speeds and optimization tradeoffs. |
WannaCry | A worldwide series of attacks distributed via a virus using Windows bug known to but previously undisclosed by the NSA. This bug was revealed by the Shadow Brokers. |
Shadow Brokers | A mysterious hacker organization that appears to be in possession of hacking tools stolen from the NSA. It occasionally releases these publicly while selling others for a nominal fee. |
Cryptographically Secure | An system which can be mathematically proven to be secure. This typically refers just to the system’s encryption, it can still usually be compromised by attacking people and side channels. |
Public / Private Key Encryption | A category of encryption system (eg RSA, Elliptical Curve) which allows anyone to encrypt a message in a way that only the private key holder can read it. A core part of TLS/SSL. |
Operating Systems | A piece of software that enables applications to run on and use hardware in a manner by building to an abstraction of a computer and enabling running of multiple applications simultaneously. |
Microsoft Windows | The most popular Operating System in the world created by Microsoft. The earliest versions of Windows date back to the 1980s and was formative in developing the computer interfaces we commonly use. |
Unix | A family of multitasking operating systems. These systems are characterized by modular design and the “Unix Philosophy” of many simple tools that each do one thing well. |
OsX | A series of operating systems developed by Apple for running software on their desktop computers. Based on FreeBSD Unix and is therefore a cousin of Linux systems. |
iOS | An operating system created and maintained by Apple for running software on Apple’s mobile devices. Is in turn a type of Unix operating system. |
Linux | A category of operating system based on work by Linus Torvalds to create a kernel that is a free GNU version of Unix. Almost 600 variations of Linux - called distributions - exist. |
Android | An open source operating system created and maintained by Google. This is a type of Linux that is optimized for running on mobile and low-power devices while enabling app distribution eg via the Google Play store. |
Debian | A open source Linux distribution with a focus on security, and stability, and on running primarily free software. Not very focused on being beginner-friendly. |
Ubuntu | A popular open source Debian-based Linux distribution produced and maintained by Canonical. Focus is on being a good consumer operating system capable of replacing Microsoft Windows for common usage. |
Chrome OS | An operating system created by Google for running Chromebook laptops. A variant of Linux, it is optimized for being a fully-featured always-online desktop system that can install and run applications from the Play Score. |
Red Hat | A multinational company that produces and maintains Linux-based open source software including the Red Hat Linux distribution. Often associated with large companies running enterprise versions of Linux. |
Fedora | An open source Red Hat-based Linux distribution. Focused on providing a good experience for end-users it is in many ways an alternative and a competitor to Ubuntu |
Bash | An extremely popular Unix/Linux “shell”. This is the application that allows users to run “command line commands” and interact with the file system, operating system, and various system utilities. |
Zsh | Alternative to Bash, Zsh is largely similar but adds many improvements and features to standard Bash shell. |
Process (Operating System) | The way that an operating system allocates resources and executes a program. Includes security features to prevent one running application from reading information from or affecting the execution of other processes. |
Thread (Operating System) | A technique provided by operating systems and programming languages which allow applications to take advantage of multiple CPU cores and run pieces of code in parallel to - but still interacting with - each other. |
Kernel | The core of an operating system, runs in a privileged mode. Other applications interact with the kernel which manages their access to computer resources. |
Kernel Space | Memory is typically segregated into User Space (where applications run) and Kernel Space. This is where the operating system and low level device drivers live. Code here can inspect and modify other applications. |
Thread Scheduler | Part of an operating system that is responsible for scheduling when code in a thread should be sent to a CPU to continue execution. Will often stop threads to give others a chance to run and manages their priorities. |
Service / Daemon | An application that is constantly running in the background. This is typically managed by the operating system which will restart them as needed and might give these applications special treatment. |
Hypervisor | Software providing the platform to run and manage virtual machines. Some operating systems include an optional hypervisor that can be enabled and others (eg Virtualbox) provide their own. |
Internet of Things (IOT) | A very broad umbrella term for the fact that more and more everyday devices are being both computerized and hooked up to and accessible via the internet. |
Raspberry Pi | Series of ultra-cheap (often just a few dollars), low-power computers that can nevertheless run applications and full operating systems like Linux. Often used in education and robotics. |
Arduino | A series of GNU integrated circuit designs and a company that creates these as hardware. Focus is on hobbyist-enabling, interoperable circuits that can be used in sensors and devices to interact with the real world. |
Tableau | Company that produces products useful in data visualization. These are all common tools in the fields of data science and business analysis. |
Business Analyst | The role on a software project of distilling requirements into something developers can work on. This can be the responsibility of a PM, designer, developers, or a dedicated position. |
Data Science | The growing field of analyzing large amounts of data in support of making it easier for business to make decisions. Frequently filled by statisticians, and/or people trained in machine learning techniques. |
Big O Notation | A system of analyzing and denoting the execution speed of an algorithm. Commonly used to analyze whether a given algorithm will be fast enough with large amounts of data. |
Algorithm | A set of instructions - typically in code - on how to solve a specific type of problem. |
Data Structures | A general term for the sort of low level structures that a given programming encourages people to use to solve problems. Examples are arrays, linked lists, trees, and certain uses of classes. |
Tree | A data structure where each node contains references to others with no cycles or backreferences forming a tree-like structure of branches leading to leaves. Often used as a way of storing data so as to be search-able. |
B-Tree | A tree data structure used frequently in storing data in a search-able, store-able, and modifiable format. |
Linked List | A common data structure for representing a list of items that can be added to rapidly with no limitations on adding items. Can be viewed as a tree where each node can only point to one or zero other nodes. |
Conditional / If / Branching logic | Logic in code that evaluates code that checks for a condition and causes one bit of code to run if the condition is true and optionally another if false. |
Looping Code | Logic in code that will cause a certain bit of code to repeat until a condition is met. |
Recursion | Programming technique where a function runs itself. Recursive functions typically have a conditional where one branch recurses (calls the function again) and the other does not. Especially common in functional languages. |
Tail Call Optimization (TCO) | Feature of some programming languages where a recursive function can be written in such a way that it will be optimized by the language to run with minimal resource usage similar to a loop. |
Type Theory | Academic field of study of the sort of things that it is possible for typed programming languages to do. Advances in the theory often get picked up by highly typed programming languages such as Haskell, Scala, and F#. |
Garbage Collection | A feature of many programming languages where the developer doesn’t have to manually allocate and deallocate bits of memory, instead the runtime will track what is used and occasionally clean up what is not. |
Caching | The act of optimizing programs by storing previously seen inputs and outputs so that algorithms can return results that are already known rather than using resources to rerun. |
Cache Invalidation | Cached results are not necessarily valid forever. Invalidation involves deciding when to remove results from a cache. Considered one of the hardest practical problems in programming as it varies on a case-by-case basis. |
Computability | Computer science concept that a given problem can be solved with a reasonably efficient algorithm. Some problems are non-computable. Example: it is often to impossible to analyze a program to see if it will terminate. |
Constraint Satisfaction | A type of problem where multiple desired outcomes are proposed and an algorithm’s purpose is to balance between these to provide a sufficiently good solution. |
Quantum Computing | A type of hardware and software which uses aspects of how sub-atomic particles behave to drive computation. In theory, quantum computers can be used to solve many traditionally unsolvable problems. |
Universal Computer | Term for a theoretical machine that can be used to run any traditional (non-quantum) program. |
Turing Machine | A theoretical model for how a universal computer might work proposed by Alan Turing. Meant as a thought exercise as implementation would be impractical. Sometimes used interchangeably with “universal computer”. |
Lambda Calculus | Heavily mathematical model for a universal computer proposed by Alonzo Church. Contains only the concept of functions which can be invoked with parameters and defined in terms of their parameters and other functions. |
Von Neumann / Princeton Architecture | A theoretical model proposed by John Von Neumann for how a universal computer might be practically implemented with a CPU, Memory, Storage, and I/O mechanisms. Almost all modern computers are based on this. |
Alan Turing | Influential British mathematician and cryptography expert who did a great deal of the early work inventing and establishing the field of computer science as well as being key in cracking Nazi communication codes in WWII. |
John Von Neumann | Immensely influential Hungarian-American mathematician who invented much of the field of computer science. Is considered one of the greatest mathematicians of all time and worked for the Manhattan Project in WWII. |
Alan Kay | Influential computer scientist and programmer known for his work in the Smalltalk language, user interface design, and object oriented programming. Also known for his witticisms. |
Douglas Engelbart | American engineer, user experience designer, and internet pioneer. Known for developing the mouse and hypertext and a vision for the future of computing that in many ways has still not come to pass. |
Tim Berners Lee | British internet pioneer who invented HTTP, HTML, conceived of, wrote the first software for, and popularized the web, developing many of its standards and setting up standards bodies to evolve these. |
Donald Knuth | American computer scientist and author of the influential Art of Computer Programming. Often cited for his aphorisms and his opposition to software patents. |
Functional Programming (FP) | Programming paradigm often enabled by language features which emphasizes careful control of state changes, abstraction via composition of simple functions, and often type theory. Sometimes considered too academic. |
Functional Reactive Programming (FRP) | A technique used by functional languages which emphasize immutability to communicate with the outside world by modeling all inputs as streams of events that aggregate new states. |
Object-Oriented Programming (OOP) | Term emphasizing the use of objects grouping behavior and data as the main unit of abstraction. Easier to create components but harder to control application state. Often confused with the language feature of classes. |
Aspect Oriented Programming (AOP) | Programming paradigm where units of code are decorated with declarative statements that transform or add functionality at run or compile time. |
Actor Model | Programming paradigm where most aspects of the program are encapsulated into stand alone “actors” that run independently of each other and simply receive and send messages. Used frequently in simulations and modeling. |
Imperative / Procedural Programming | Programming paradigm - often considered the most basic - where statements focus on changing application state rather than describing effects or building a higher model. Procedural implies heavy use of functions for this. |
Logic Programming | Programming paradigm where the developer writes down a series of statements about the input and then asks questions. The runtime is able to figure out how to answer best given the constraints. Example: Prolog. |
Machine Learning (ML) | Computer science field about using statistical analysis techniques to infer connections and categorization. These techniques are often used to make suggestions or decisions based on analyzing large amounts of data. |
Artificial Intelligence (AI) | Superset of the field of machine learning including study of building artificial consciousness, playing games, parsing language, recognizing objects, and complex planning and modeling. |
Turing Test | Thought experiment posed by Alan Turing as a description of “Strong AI” where a person interacts via text with either another person or computer and the goal for the machine is that the person cannot tell the difference. |
Supervised Learning | Category of machine learning where a system is given “training data” with inputs and (manually created) desired outputs. This is used to detect patterns. Typically tested against a separately held testing set of data. |
Unsupervised Learning | Category of machine learning where a system is designed in such a way where simply running it might generate insights. For example, AI that learns to play chess by playing against itself. |
Genetic Algorithm | A technique for creating a sufficiently good algorithm for solving a problem. Involves creating programs that are capable of generating your algorithm, evaluating their output, then mixing the best performing ones. |
Neural Network | A (usually large) network of interconnected simple physical or logical circuits called neurons where the output of one affects input into the others. Often trained to recognize patterns from large amounts of data. |
Back-propagation | Supervised learning algorithm used in neural network design to gradually adjust neuron weights in a way that discovers a relatively ideal set of weights for training data. |
Dropout (Machine Learning) | Technique used in training neural networks where neurons will be removed from the system during training. Used to prevent network “over-training” where training data is memorized rather than detecting patterns. |
Tensorflow | Open source library and platform for machine learning developed and used internally by Google. Commonly used for building fast neural networks. Frequently used via hosting on the the Google Cloud platform. |
Pytorch | Open source Python library for machine learning tasks such as neural networks and natural language processing. Used and maintained by Facebook and often compared to Tensorflow. |
function (coding) | Bit of labeled code that can be invoked via its label to run from various parts of a program. Primary manner of removing duplicate code. Functions can both take input and return values to the invoking code. |
closure (coding) | A function defined inside another function when running would have access to variables in the function that contains it. The containing function is then called a closure. |
function argument (coding) | A value that is being passed into a function. Specifically refers to invoking of the function. When talking about the what the function does with it, the term is “parameter”. |
interface (coding) | A defined contract for one or more methods that can be guaranteed by the compiler to exist on an object. Interfaces can be viewed as defining the role an object can play within an application’s architecture. |
implements (coding) | A class implements an interface when it can guarantee to implement all methods an interface requires. This ensures that objects created from the class can be used in the role defined by the interface. |
inherits / extends (coding) | Feature of class based languages which allows creation of new classes by copying and adding features to existing ones. The resulting web of class structures is called an inheritance hierarchy or tree. |
variable (coding) | A named “slot” in a running program that can point to or contain various values. Often implemented as a bit of memory on the execution stack that stores a value or points to another memory location. |
partial application | Coding technique where a new function is generated by supplying some - but not all - of another function’s parameters. The resulting function can be made to run by providing the missing parameters. |
module (coding) | Central concept of many languages where code can be isolated from the effects of other code. Can include code from other modules and define code that can be included from itself. |
namespace (coding) | A naming convention where code structures can be grouped under a label that acts to group and organize related code. Namespaces can often be nested inside each other. |
constant (coding) | A labeled value used throughout code. Might be implemented similarly to a variable or by the compiler inserting the actual value everywhere it is used. The key feature is the label can never point to another value. |
class (coding) | Feature of class-oriented languages where a template for objects can be defined. This will contain data and predefined functions (called methods when in a class) that can operate on that data. |
constructor (coding) | In class-oriented languages, a function that will run when creating (constructing) an object from a class template. Often used for initialization and to ensure the object has all the data to be in a valid state. |
super / base (object oriented coding) | When a class is constructed from another via inheritance, the super (also called base) keyword is also used to refer to features of the parent class that might be overridden in the current object. |
field / attribute (object oriented coding) | A piece of data that is associated with an object. All instances of that object get their own copy of the field. |
property (object oriented coding) | A code structure that behaves like a field while allowing developers to write custom code that runs when trying to read or set its value. |
method (object oriented coding) | A function associated directly with an object, methods typically have full access to all fields of an object, |
static (object oriented coding) | Concept in class-oriented programming where a field, property or method can be associated directly with the class itself, not instantiated objects. Often considered the same as using the class itself as a namespace. |
mixin (coding) | The ability to copy data or behavior from another object or class into a new one. Often used in languages that support multiple inheritance (ie classes can inherit from multiple classes at once like in Python.) |
decorator / attribute / annotation (coding) | Concept from aspect-oriented and declarative programming where a function, class, field, or other code structure can be “tagged” with the label of another bit of reusable code that will modify its behavior. |
hashset / dictionary / Map | A commonly used data structure which associates keys each with a value. Makes it easy to detect duplicates, and look up values by a lookup key. |
generator / enumerable | Programming technique where a sequence is implemented not as an array or linked list, but as code that can generate the next value in the sequence. These can be enumerated similarly to any other sequence of values. |
iterator / enumerator | An alternate way of working with a sequence (generator, array, or another structure). Provides a stateful structure where a method can be called explicitly to advance the current value. |
expression (coding) | A bit of code that when run produces a value that can be stored or passed. In many languages every valid bit of code is an expression. When code does not produce a value, it is called a statement. |
expression tree / abstract syntax tree (AST) | Code that has been parsed and tokenized and is itself represented as a data structure. Usually a step in compiling or interpreting a program, but can also be used to inspect code or even add abilities to it. |
s-expression | Code written with a LISP-like syntax. This simple syntax means that code as written is already an expression tree. Makes it trivially easy to do meta-programming where the code can be inspected and change as it runs. |
loop (coding) | Code structure available in most languages where a bit of code can be made to run repeatedly until some condition is met. Notably loops do not use recursion which is a bit more limiting but far more optimized. |
while | Code structure used to repeatedly run a bit of code until some condition is met. Usually the code block will make changes to a variable and that variable will be tested on each iteration to see if the loop should exit. |
foreach | Code structure which will draw items from an iterable sequence, store each value in a variable, and run some code on that item. |
for loop | Another form of a while loop. This code structure is often used for running a bit of code on all items in an array and as such can be used as a limited foreach loop. |
scope (coding) | When a variable is declared, its scope is all other bits of code that can access its contents without having them explicitly passed. |
global scope | Variable where its scope is all code in the application. Commonly considered bad coding practice as it is incredibly hard to trace and modify code that does this. Many languages heavily discourage the use of globals. |
static / lexical scoping | Scoping style where a variable is accessible from inside anywhere where it is defined. This can be a block, or some other way of delimiting a variable definition. Alternative to dynamic scoping. |
dynamic scoping | Scoping style where a variable is accessible from anywhere in the current call stack. Rarer than static scoping but used for creating extremely extensible software (eg Emacs). |
block scoping | The scope of all variables is tied to its containing “block”. Functions, if, and while blocks typically create blocks, but blocks can also be declared in code manually. Most common form of scoping. |
public accessibility | Scope for a field, property, or a function that can be used by any code with access to the containing module or object. |
private accessibility | Scope for a field, property, or a function that can only be used from within the same module or object. |
protected accessibility | Scope for a field, property, or a function that can only be used from within the same module or - in the case of class-oriented languages - by objects created from classes that inherit the containing class. |
string | Data type available in most programming languages used to represent text of arbitrary length. Strings typically but not always can contain any character and be of most lengths. |
integer / int (data type) | Common data type representing a non-decimal number. Typically implemented in 32 bits meaning that it can be used to represent any integer between -1*2^31 and 2^31. |
float / single (data type) | Common data type representing a number that can be used in floating-point arithmetic - the ability to do decimal calculations of a reasonable precision. A typical implementation is stored in 32 bits of memory. |
double (data type) | Common data type representing a number that can be used in floating-point arithmetic. Takes more memory (usually 64 bits) but provides a far greater degree of precision than floats or ints. |
boolean / bool | Common data type representing a boolean value - either true or false. Often implemented as just a single bit of memory. |
array | Data type available in most languages used to represent a sequence of known (but usually changeable) length. Can contain any type of item, and items can be referenced by their index number in the array. |
primitive (programming languages) | Refers to a built in “basic” data type (eg int, string, bool, float, double) as opposed to a more complex data type, typically constructed from many primitives and/or other complex types. |
map / select | Many languages provide these functions for transforming a sequence by running a function on each item in it and using the function’s output as an item in the new sequence. |
filter / where | Many languages provide these functions for narrowing down items in a sequence by running a function on each item, if returning true the element will be present in the resulting sequence, otherwise it will not. |
reduce / aggregate / fold | A feature of many languages that will transform a sequence to a single value. In many ways a superset of map and filter as both can be implemented as a reduce operation. |
generics (programming languages) | A language feature where a type can be used as a type or method parameter to construct new compiled and type-safe types or behavior. |
Koans / Code Kata | An exercise where developers do a programming exercise over and over down to repeating key strokes with the goal of training muscle memory for certain techniques. |
immutable data | Data structures - often used especially in functional programming languages - where once created, the data within the structure is constant and can never be modified. |
Simple not Easy | Code design guideline that interacting with a bit of code need not be easy, but it should be as devoid of unnecessary complexity as possible. |
Loose coupling | Code design guideline that code should be grouped into components and that different components should not depend on each other directly. |
high cohesion | Code design guideline that code should be grouped into components and that conceptually related code should be grouped together. |
Convention over configuration | Style of code design when building a complex program where, rather than extensive configuration, the code makes reasonable assumptions and allows overriding these assumptions for minimal configuration. |
ACID | Acidity, Consistency, Isolation, Durability. Many databases ensure operations will always leave the database in a valid state; even when they fail. Some trade off aspects for other benefits, while some support all four. |
CAP Theorem | Consistency, Availability, Partition Tolerance. The mathematical truth that a distributed system can never be all three: all queries return consistent data, be always online, and support distribution among many nodes. |
Composition Over Inheritance | Code design guideline to whenever possible refactor common code to its own component referenced by simple variables or properties rather than using inheritance. |
Monad | An academic term for a code structure that isolates side effects in a functional paradigm language. |
Extreme Programming (XP) | A formulation of the agile software development process created by Kent Beck. In XP, beneficial practices like test driven development and pair programming are taken to the “extreme” and done 100% of the time. |
Side-effects (coding) | A bit of code that when run, creates an effect other than just the function return. Can be output to a screen, write to a file, a network request, or just modifying a global variable. |
Pure function / Side effects-free coding | A function that when run will return a value with no side effects. This is often encouraged to do as much as possible as pure functions are much easier to reason about and to optimize. |
Embedded System | A system where the software is deployed along with the hardware and not intended for users to attempt to modify, or even install extensions or applications on. |
Ecmascript | Official name of the JavaScript language. “JavaScript” is a trademark of the Oracle Corporation whereas the actual syntax is defined by the ECMA standards body. |
Progressive Web Application (PWA) | Term for an application using a broad set of newer web browser features that aim to enable a website to behave more like an installed application, especially on mobile. |
Ajax | Term for using JavaScript in a web browser to fetch data from a web-server using the XmlHttpRequest or fetch functions. |
Single Page App (SPA) | Web application that - rather than the full page request and redraw lifecycle - heavily relies on the technique of loading new data via Ajax and redrawing the page with JavaScript. |
JavaScript Object Notation (JSON) | A subset of JavaScript syntax used to define simple objects. This syntax is straightforward and commonly used as a serialization format for saving and transmitting data as well as for storing configuration values. |
JSON Web Tokens (JWT) | A cryptographically-secured serialization format that can contain JSON data, be read by anyone, but be generated only by certain authorities. Often used as a way of passing authentication information to apis. |
Server-Client | Arrangement of at least two systems where one (the server) stores data and takes responsibility for updating it consistently, and the other (the client) handles fetching, displaying, and sending requests to update data. |
Back End | Refers to typical “server work” such as data validation, core business logic, data and domain modeling, distributed system planning, system administration, and deployment. |
Front End | Refers to typical “client work” such as user interface design, ui logic and componentization, performance tuning, over-the-line security work, and api design. Often used to refer to all work done with web browsers. |
Domain Specific Language (DSL) | A programming technique where the developer constructs a library that can be used to more easily express concepts used in a specific domain. Often used to help less technical people to define business logic. |
Cookies | A web browser feature invented by Lou Montulli to ease the burden of storing session data in URLs. A browser can be set to send a bit of data along with every request. Often used for authentication and tracking. |
Es6 | Term for a broad set of Ecmascript/JavaScript features spec’ed out in “version 6”. While some had been in browsers and libraries much longer, and some lag behind, the bulk were rolled out in most browsers around 2015. |