Look at Glossary Tech, maybe scrape it
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. |
Debugger | A development tool available in most programming laguages that allows developers to inspect what is going on inside of a running application. |
Breakpoint | A technique to allow a debugger to pause a runnign 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 techinques used to analyze the performance and memory use of an application. |
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 conatains 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 preforming 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) | Techique 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 preconfigured 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 genrates 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 oprations. 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 | A file that can be run directly by an operating system. |
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 activisim. |
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 oprations 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 responsibile for the proper operation of the organization’s main data storage systems. Frequently involves query optimization, data archiecture, 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 adminstrators 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 commmon 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 exlicit and intentional process that a software development team will follow to go from design to implementation to deployment and support of an applicaiton. |
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 folllowed 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 perscriptive with defined phases and roles. |
Scrum | Popular software development process featuring techniques like sprint planning, daily standups, 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 improvment 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. |
Standup | 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 | Programing 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 Priniciple | 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 Subsitution 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 outher 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 rewared 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 hcat in online groups and companies with a significant renote workforce. |
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 instalation. 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 usefull 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 subcontracing and consulting business. |
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 suported 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 accross 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. |
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 fequently 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 contantly reflects the tate 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” encompasing 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. |
Rastor 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 elemetns (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 charecter to a number which are then converted to binary using a variety of methods. |
Unicode | A very large, internationaly 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 compatability, 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 recieved 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 responsibile 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 accross 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 accross 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. Requets are routed to the connected computer with a given IP address. Composed of four numbers 0-255 seperated 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 ceratain 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 netework 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 recieved 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 recieving data, the router itself is treated as a destination for data. It then modifies the packetto 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 preceeds 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 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 recieved 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 fo 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 preformance compared to other platforms. |
COBOL | An older proecedural 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 dynamicly typed programming language still in occasional use today. Proginator of many other languages. Structures code as a set of s-expressions. Focuses on metaprogramming, code that generates code. |
C# | Flagship programming language of Microsoft. A strongly typed, class-based, relatively verbo selanguage. 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 interoperates natively with Java. Syntactically a form of Lisp, it is dynamicly typed functional, and focused on metaprogramming. |
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 proginator 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 | Extremely popular language; the only one that runs in web browsers. Used to build web applications and server-side as well with NodeJs. More related to Scheme than to Java, the language was rush created in only 10 days. |
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 ot Assembly) for non-developers to write software. Relatively limited but further versions like visual basic could do much more. |
Visual Basic (Clssic) | Software and progrgramming 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 poweful 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. |
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 centeral Ruby package manager. Many Ruby programs stitch together many gems to create complex applications. |
rvm | 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 omptimize 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 installable 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 enviornment” 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. Analagous to Ruby on Rails but runns on the JVM. |
Spring | |
Maven | |
.Net | |
ASP.Net | |
Winforms | |
Nuget | |
Webforms | |
Windows Presentation Foundation (WPF) | |
WIndows Communication Foundation (WCF) | |
.Net Core | |
.Net Standard | |
Mono | |
Asp.Net Web Api | |
Entity Framework | |
Javascript | |
ECMAScript | |
Douglas Crockford | |
Brenden Eich | |
User Interface (UI) | |
User Experience (UX) Design | |
isomorphic | |
Webassembly | |
Web Browser Web Worker | |
Web Browser Service Worker | |
Progressive Web App (PWA) | |
Babel | |
Webpack | |
Npm | |
Browserify | |
Yarn | |
Eslint | |
Prettier | |
UI Frameworks | |
ReactJs | |
BackboneJs | |
Angular | |
AngularJs | |
VueJs | |
React Native | |
Ionic | |
Cordova | |
Database / Database Managment System (DBMS) | |
GraphQL | |
OData | |
Prepared Statements / Parameterized SQL | |
Database Migrations | |
Cache | |
Relational Database | |
Sql Server | |
Oracle (Database) | |
MySql | |
Sqlite | |
Postgres | |
Document Database | |
MongoDb | |
CouchDb | |
Elasticsearch | |
Key / Value Store | |
memcache | |
Redis | |
Riak | |
Graph Database | |
Neo4j | |
Flexbox | |
CSS-Grid | |
Bootstrap | |
SASS / SCSS | |
LESS | |
Autoprefixer | |
PostCSS | |
Stylelint | |
CSSLint | |
CSS Frameworks | |
Tailwind CSS | |
Tachyons | |
Bulma | |
Source Control | |
Git | |
Mercurial / Hg | |
Feature Branching | |
Subversion (SVN) / Team Foundation System (TFS) | |
Commit (Source Control) | |
Subversion Check Out | |
Distributed Version/Source Control System (DVCS) | |
Pull Request | |
Fork | |
Merge (Source Control) | |
Branch | |
Push | |
Clone (Source Control) | |
Git Add | |
Pull (Source Control) | |
Rebase | |
Cherry Pick (Source Control) | |
Stage (Source Control) | |
Ignore file (Source Control) | |
Accessibility | |
Web Accessibility Initiative (WAI) | |
Web Content Accessibility Guidelines (WCAG) | |
Aria Roles | |
Security | |
Phishing | |
OWASP | |
Cross Site Scripting (XSS) | |
SQL Injection | |
Cross Site Request Forgery (CSRF) | |
Side channel attack | |
Buffer overflow | |
Shellshock | |
Heartbleed | |
Meltdown & Spectre | |
Nonce (Cryptography) | |
Cryptographically Secure | |
Public / Private Key Encryption | |
Shadow Brokers | |
Operating Systems | |
Windows | |
OsX | |
iOS | |
Linux | |
Android | |
Ubuntu | |
Red Hat | |
Debian | |
Fedora | |
Arch | |
bash | |
zsh | |
fish shell | |
Process (Operating System) | |
Thread | |
Kernel | |
Kernel Space | |
Thread Scheduler | |
Service / Daemon | |
Memory Management | |
executable | |
Internet of Things (IOT) | |
Raspberry Pi | |
Arduino | |
Tableau | |
Data Science | |
Big O Notation | |
Algorithms | |
Data Structures | |
Tree | |
B-Tree | |
Tail Call Optimization (TCO) | |
Type Theory | |
linked list | |
Garbage Collection | |
Computability | |
Constraint Satisfaction | |
Quantum Computing | |
Turing Machine | |
Lambda Calculus | |
Caching | |
Alan Kay | |
Douglas Hofsteder | |
John Von Neumann | |
Alan Turing | |
Tim Berners Lee | |
Donald Knuth | |
Functional Programming (FP) | |
Functional Reactive Programming (FRP) | |
Object-Oriented Programming (OOP) | |
Aspect Oriented Programming (AOP) | |
Actor Model | |
Procedural / Imperative Programming | |
Logic Programming | |
Machine Learning (ML) | |
Artificial Intelligence (AI) | |
Neural Network | |
Genetic Algorithm | |
Back-propagation | |
Dropout (Machine Learning) | |
Supervised Learning | |
Unsupervised Learning | |
Tensorflow | |
Pytorch | |
Keras | |
function (coding) | |
closure (coding) | |
parameter (coding) | |
argument (coding) | |
class (coding) | |
implements (coding) | |
inherits / extends (coding) | |
variable (coding) | |
partial application | |
constant (coding) | |
interface (coding) | |
constructor (coding) | |
super / base (object oriented coding) | |
constructor chaining | |
base class (coding) | |
mixin (coding) | |
module (coding) | |
module import (coding) | |
public accessibility | |
private accessibility | |
protected accessibility | |
hashset / dictionary / Map | |
generator / enumerable | |
iterator / enumerator | |
expression (coding) | |
expression tree | |
s-expression | |
comprehension (coding) | |
loop (coding) | |
foreach | |
for loop | |
while | |
do…while | |
block (coding) | |
scope (coding) | |
lexical scoping | |
dynamic scoping | |
hoisting (coding) | |
field / attribute (programming languges) | |
property (programming languges) | |
method (programming languges) | |
decorator / attribute / annotation (coding) | |
string | |
array | |
map / select | |
filter / where | |
reduce / aggregate / fold | |
float (coding) | |
double (coding) | |
integer / int | |
boolean / bool | |
primitive (programming languges) | |
generics (programming languges) | |
Koans | |
Code Kata | |
immutable data | |
loose coupling | |
high cohesion | |
Convention Over Configuration | |
Composition Over Inheritance | |
Monad | |
Extreme Programming | |
Pure function (coding) | |
Side-effects (coding) | |
Embedded System | |
Ecmascript | |
Progressive Web Application (PWA) | |
Single Page App (SPA) | |
Ajax | |
Javascript Object Notation (JSON) | |
JSON Web Tokens (JWT) | |
Server-Client | |
Back End | |
Front End | |
Domain Specific Language (DSL) | |
Es6 |