[{"id":"vite","term":"Vite","definition":"A build tool and dev server for front-end projects. It serves your source files with instant updates during development and bundles them into optimized static files in dist/ for production.","lesson":"l-rf-1-2","course":"react-fundamentals"},{"id":"strict-mode","term":"StrictMode","definition":"A React wrapper component that adds development-only checks, such as rendering components twice and running Effects twice, to expose impure code and missing cleanups. It has no effect in production.","lesson":"l-rf-1-2","course":"react-fundamentals"},{"id":"component","term":"Component","definition":"A JavaScript function whose name starts with a capital letter and that returns JSX. You use it like a tag, and React calls it to find out what to show.","lesson":"l-rf-1-3","course":"react-fundamentals"},{"id":"fragment","term":"Fragment","definition":"A wrapper written as &lt;&gt;…&lt;/&gt; or <Fragment> that groups several elements without adding a DOM node, so a component can return siblings as one root.","lesson":"l-rf-1-3","course":"react-fundamentals"},{"id":"jsx","term":"JSX","definition":"A syntax extension that lets you write HTML-like markup in JavaScript. A compiler turns each tag into a function call that creates a React element.","lesson":"l-rf-1-4","course":"react-fundamentals"},{"id":"react-element","term":"React element","definition":"A plain JavaScript object, created by JSX, that describes what should appear on screen: a type such as “h2” or a component, plus its props. React turns elements into DOM.","lesson":"l-rf-1-4","course":"react-fundamentals"},{"id":"derived-value","term":"Derived value","definition":"Data calculated during render from props or state, such as a count or a filtered list. It is never stored in state, so it can never drift out of sync with its source.","lesson":"l-rf-2-1","course":"react-fundamentals"},{"id":"props","term":"Props","definition":"The inputs a parent passes to a component as attributes, received as one object. Props are read-only: a component never changes them, it receives new ones when the parent re-renders.","lesson":"l-rf-2-2","course":"react-fundamentals"},{"id":"children-prop","term":"children","definition":"The prop that holds whatever is nested between a component’s opening and closing tags. Rendering {children} lets a component wrap content it knows nothing about.","lesson":"l-rf-2-3","course":"react-fundamentals"},{"id":"slot","term":"Slot prop","definition":"A prop that accepts JSX, such as actions={<button>Shuffle</button>}, so the caller decides what appears and the component decides where it goes.","lesson":"l-rf-2-3","course":"react-fundamentals"},{"id":"prop-drilling","term":"Prop drilling","definition":"Passing a prop through several components that don’t use it, only to reach a deeply nested one. Composition with elements or context can often remove it.","lesson":"l-rf-2-3","course":"react-fundamentals"},{"id":"conditional-rendering","term":"Conditional rendering","definition":"Choosing what a component outputs based on data, using an early return, the ternary operator, or &amp;&amp; in JSX. Returning null renders nothing.","lesson":"l-rf-2-4","course":"react-fundamentals"},{"id":"unmount","term":"Unmount","definition":"When React removes a component from the tree, destroying its DOM and its state. A conditionally rendered component unmounts when its condition becomes false.","lesson":"l-rf-2-4","course":"react-fundamentals"},{"id":"key","term":"Key","definition":"A special prop on list items that tells React which item is which between renders. It must be unique among siblings and stable, usually an id from the data.","lesson":"l-rf-2-5","course":"react-fundamentals"},{"id":"state","term":"State","definition":"Data a component remembers between renders, declared with useState. Calling its setter stores a new value and makes React render the component again.","lesson":"l-rf-3-1","course":"react-fundamentals"},{"id":"hook","term":"Hook","definition":"A function whose name starts with “use”, such as useState or useEffect, that lets a component use React features. Hooks must be called at the top level of a component.","lesson":"l-rf-3-1","course":"react-fundamentals"},{"id":"state-snapshot","term":"State snapshot","definition":"The fixed set of state values a single render sees. Setting state does not change the current variables; it schedules a new render with new values.","lesson":"l-rf-3-1","course":"react-fundamentals"},{"id":"updater-function","term":"Updater function","definition":"A function passed to a state setter, as in setCount(© =&gt; c + 1). React calls it with the latest pending value, so several updates in a row add up correctly.","lesson":"l-rf-3-1","course":"react-fundamentals"},{"id":"immutable-update","term":"Immutable update","definition":"Changing state by creating new arrays or objects (with spread, map or filter) instead of modifying the existing ones, so React can detect the change.","lesson":"l-rf-3-1","course":"react-fundamentals"},{"id":"event-handler","term":"Event handler","definition":"A function passed to a prop such as onClick or onSubmit that React calls when the event happens. Handlers are where side effects caused by user actions belong.","lesson":"l-rf-3-2","course":"react-fundamentals"},{"id":"event-bubbling","term":"Event bubbling","definition":"The way an event travels from the element where it happened up through its ancestors, triggering their handlers too. e.stopPropagation() stops it.","lesson":"l-rf-3-2","course":"react-fundamentals"},{"id":"controlled-input","term":"Controlled input","definition":"A form field whose value comes from React state and whose onChange handler updates that state, making state the single source of truth for what the field shows.","lesson":"l-rf-3-3","course":"react-fundamentals"},{"id":"form-action","term":"Form action","definition":"A React 19 feature where a function passed to a form’s action prop receives the submitted FormData. React prevents the page reload and resets uncontrolled fields afterwards.","lesson":"l-rf-3-3","course":"react-fundamentals"},{"id":"use-action-state","term":"useActionState","definition":"A React 19 Hook that wraps an action function and returns the latest result it produced, a dispatch function to pass to a form, and an isPending flag.","lesson":"l-rf-3-3","course":"react-fundamentals"},{"id":"lifting-state-up","term":"Lifting state up","definition":"Moving state from a component into the closest common parent of every component that needs it, then passing the value down and change handlers down as props.","lesson":"l-rf-3-4","course":"react-fundamentals"},{"id":"effect","term":"Effect","definition":"Code passed to useEffect that runs after React updates the screen, used to synchronize with something outside React such as the document title, storage, timers or subscriptions.","lesson":"l-rf-3-5","course":"react-fundamentals"},{"id":"dependency-array","term":"Dependency array","definition":"The second argument to useEffect listing every value the Effect reads. React re-runs the Effect only when one of those values has changed since the last render.","lesson":"l-rf-3-5","course":"react-fundamentals"},{"id":"cleanup-function","term":"Cleanup function","definition":"A function returned from an Effect that undoes it, such as removing a listener or clearing a timer. React runs it before the Effect runs again and on unmount.","lesson":"l-rf-3-5","course":"react-fundamentals"},{"id":"utility-class","term":"Utility class","definition":"A small CSS class that does one thing, such as p-4 for padding or text-slate-600 for color. Tailwind CSS generates the utilities your files use.","lesson":"l-rf-4-2","course":"react-fundamentals"},{"id":"preview-deployment","term":"Preview deployment","definition":"A deployment of a non-production branch or pull request at its own unique URL, so changes can be checked before they are merged and reach the production site.","lesson":"l-rf-4-3","course":"react-fundamentals"},{"id":"structural-typing","term":"Structural typing","definition":"TypeScript’s rule that a value is compatible with a type when it has the required shape, whatever the type is called. Two differently named types with the same properties are interchangeable.","lesson":"l-at-1-2","course":"advanced-typescript"},{"id":"assignability","term":"Assignability","definition":"Whether a value of one type can be used where another type is expected. It works like the subset relation: a narrower set of values fits into a wider one.","lesson":"l-at-1-2","course":"advanced-typescript"},{"id":"excess-property-check","term":"Excess property check","definition":"A check that flags unknown properties in a fresh object literal written directly where a type is expected. It catches typos, but values passed through a variable skip it.","lesson":"l-at-1-2","course":"advanced-typescript"},{"id":"control-flow-analysis","term":"Control-flow analysis","definition":"How TypeScript tracks the type of a variable through branches, returns and assignments, so the same name can have a narrower type after a check than before it.","lesson":"l-at-1-3","course":"advanced-typescript"},{"id":"narrowing","term":"Narrowing","definition":"Refining a wide type to a more specific one with a runtime check such as <code dir=\"ltr\">typeof</code>, <code dir=\"ltr\">===</code>, <code dir=\"ltr\">in</code>, <code dir=\"ltr\">instanceof</code> or a type predicate.","lesson":"l-at-1-3","course":"advanced-typescript"},{"id":"discriminated-union","term":"Discriminated union","definition":"A union of object types that share a property with a different literal value in each member, such as <code dir=\"ltr\">status</code>. Checking that property narrows the whole object to one member.","lesson":"l-at-1-4","course":"advanced-typescript"},{"id":"const-assertion","term":"as const","definition":"A const assertion that infers the narrowest type for a value: literals stay literal, arrays become readonly tuples and properties become readonly.","lesson":"l-at-1-5","course":"advanced-typescript"},{"id":"satisfies","term":"satisfies","definition":"An operator that checks a value against a type without replacing the value’s inferred type, so you get validation and keep precise keys and literals.","lesson":"l-at-1-5","course":"advanced-typescript"},{"id":"type-parameter","term":"Type parameter","definition":"A placeholder type in a generic function or type, such as <code dir=\"ltr\">T</code>, that links inputs to outputs. It should appear at least twice to add real type safety.","lesson":"l-at-2-1","course":"advanced-typescript"},{"id":"generic-constraint","term":"Generic constraint","definition":"An <code dir=\"ltr\">extends</code> clause on a type parameter that limits which types it accepts, such as <code dir=\"ltr\">T extends { id: number }</code>, which also makes those properties usable inside the function.","lesson":"l-at-2-1","course":"advanced-typescript"},{"id":"inference-site","term":"Inference site","definition":"A position in a parameter type where a type parameter appears. At a call, TypeScript collects a candidate from each site to decide what the type parameter is.","lesson":"l-at-2-2","course":"advanced-typescript"},{"id":"const-type-parameter","term":"const type parameter","definition":"A type parameter declared with <code dir=\"ltr\">const</code> (TypeScript 5.0+), which infers arguments as if the caller had written <code dir=\"ltr\">as const</code>, keeping literals and readonly tuples.","lesson":"l-at-2-2","course":"advanced-typescript"},{"id":"noinfer","term":"NoInfer","definition":"A built-in type (TypeScript 5.4+) that marks a position as check-only, so it is validated against a type parameter but never contributes an inference candidate.","lesson":"l-at-2-3","course":"advanced-typescript"},{"id":"indexed-access-type","term":"Indexed access type","definition":"A type such as <code dir=\"ltr\">Order['status']</code> or <code dir=\"ltr\">T[number]</code> that looks up the type of a property, or of an array’s elements, using bracket syntax.","lesson":"l-at-3-1","course":"advanced-typescript"},{"id":"mapped-type","term":"Mapped type","definition":"A type that loops over a union of keys and builds one property per key, as in <code dir=\"ltr\">{ [K in keyof T]?: T[K] }</code>, the definition of <code dir=\"ltr\">Partial</code>.","lesson":"l-at-3-2","course":"advanced-typescript"},{"id":"key-remapping","term":"Key remapping","definition":"An <code dir=\"ltr\">as</code> clause in a mapped type that renames each key, often with a template literal. Mapping a key to <code dir=\"ltr\">never</code> removes it, which is how <code dir=\"ltr\">Omit</code> works.","lesson":"l-at-3-2","course":"advanced-typescript"},{"id":"conditional-type","term":"Conditional type","definition":"A type of the form <code dir=\"ltr\">T extends U ? X : Y</code> that chooses between two types depending on whether <code dir=\"ltr\">T</code> is assignable to <code dir=\"ltr\">U</code>.","lesson":"l-at-3-3","course":"advanced-typescript"},{"id":"distributive-conditional-type","term":"Distributive conditional type","definition":"A conditional type whose checked type is a naked type parameter. Given a union, it runs once per member and joins the results; wrapping both sides in brackets turns this off.","lesson":"l-at-3-3","course":"advanced-typescript"},{"id":"infer","term":"infer","definition":"A keyword used inside the <code dir=\"ltr\">extends</code> clause of a conditional type to capture part of a matched type, as in <code dir=\"ltr\">ReturnType</code>, which captures a function’s return type.","lesson":"l-at-3-3","course":"advanced-typescript"},{"id":"template-literal-type","term":"Template literal type","definition":"A string type built with backtick syntax from other types, such as <code dir=\"ltr\">`order.${OrderStatus}`</code>. Unions inside it expand into every combination.","lesson":"l-at-3-4","course":"advanced-typescript"},{"id":"branded-type","term":"Branded type","definition":"A primitive intersected with a type-only property, such as <code dir=\"ltr\">number &amp; { readonly [brand]: 'OrderId' }</code>, so values with the same runtime type stop being interchangeable.","lesson":"l-at-4-1","course":"advanced-typescript"},{"id":"smart-constructor","term":"Smart constructor","definition":"A function that validates a raw value and returns it as a branded type. It is the only place a cast to the brand should appear.","lesson":"l-at-4-1","course":"advanced-typescript"},{"id":"exhaustiveness-check","term":"Exhaustiveness check","definition":"A compile-time guarantee that every member of a union is handled, usually by passing the leftover value to a parameter of type <code dir=\"ltr\">never</code> in a <code dir=\"ltr\">default</code> branch.","lesson":"l-at-4-1","course":"advanced-typescript"},{"id":"result-type","term":"Result type","definition":"A discriminated union such as <code dir=\"ltr\">{ ok: true; value: T } | { ok: false; error: E }</code> that returns expected failures as values, so callers must handle them.","lesson":"l-at-4-2","course":"advanced-typescript"},{"id":"type-predicate","term":"Type predicate","definition":"A function return type of the form <code dir=\"ltr\">value is T</code>. When the function returns true, the argument is narrowed to <code dir=\"ltr\">T</code> at the call site; the body itself is not verified.","lesson":"l-at-4-3","course":"advanced-typescript"},{"id":"assertion-function","term":"Assertion function","definition":"A function whose return type is <code dir=\"ltr\">asserts value is T</code>. It throws when the check fails and narrows the value for the rest of the scope when it returns.","lesson":"l-at-4-3","course":"advanced-typescript"},{"id":"using-declaration","term":"using declaration","definition":"A declaration that calls the value’s <code dir=\"ltr\">[Symbol.dispose]()</code> method when its block exits, by return or by throw, disposing several resources in reverse order.","lesson":"l-at-5-2","course":"advanced-typescript"},{"id":"declaration-merging","term":"Declaration merging","definition":"The rule that several declarations with the same name, such as two interfaces, combine into one. It is how you extend lib types and library interfaces.","lesson":"l-at-5-3","course":"advanced-typescript"},{"id":"module-augmentation","term":"Module augmentation","definition":"Adding to the types inside a module with <code dir=\"ltr\">declare module 'name' { … }</code> from a file that is itself a module, for example to extend a library’s interface.","lesson":"l-at-5-3","course":"advanced-typescript"},{"id":"project-references","term":"Project references","definition":"A tsconfig feature that splits a codebase into separately built projects (<code dir=\"ltr\">composite: true</code>, built with <code dir=\"ltr\">tsc -b</code>), so unchanged parts are not re-checked.","lesson":"l-at-5-4","course":"advanced-typescript"},{"id":"cascade","term":"Cascade","definition":"The algorithm the browser uses to choose one value when several declarations target the same property on the same element: origin and importance, inline styles, layers, specificity, then order of appearance.","lesson":"l-css-1-1","course":"css-mastery"},{"id":"inheritance","term":"Inheritance","definition":"When no declaration targets an inherited property such as <code dir=\"ltr\">color</code> or <code dir=\"ltr\">font-family</code>, the element takes its parent’s computed value; non-inherited properties fall back to their initial value instead.","lesson":"l-css-1-1","course":"css-mastery"},{"id":"specificity","term":"Specificity","definition":"A selector’s weight, counted as three separate numbers (IDs; classes, attributes and pseudo-classes; types and pseudo-elements) and compared column by column, never added together.","lesson":"l-css-1-2","course":"css-mastery"},{"id":"where-pseudo-class","term":":where()","definition":"A pseudo-class that matches like <code dir=\"ltr\">:is()</code> but always contributes zero specificity, which makes it ideal for resets and base styles that components should override easily.","lesson":"l-css-1-2","course":"css-mastery"},{"id":"is-pseudo-class","term":":is()","definition":"A pseudo-class that matches any selector in its list and takes the specificity of its most specific argument; it uses a forgiving selector list, so one invalid argument doesn’t drop the rule.","lesson":"l-css-1-2","course":"css-mastery"},{"id":"cascade-layer","term":"Cascade layer","definition":"A named group of rules created with <code dir=\"ltr\">@layer</code>. Later-declared layers beat earlier ones before specificity is compared, and unlayered styles beat all layers for normal declarations.","lesson":"l-css-1-3","course":"css-mastery"},{"id":"custom-property","term":"Custom property","definition":"A property whose name starts with two dashes, such as <code dir=\"ltr\">--track-color</code>, read with <code dir=\"ltr\">var()</code>. It inherits by default and is substituted where it is used, at computed-value time.","lesson":"l-css-1-4","course":"css-mastery"},{"id":"invalid-at-computed-value-time","term":"Invalid at computed-value time","definition":"What happens when a <code dir=\"ltr\">var()</code> substitution produces a value the property can’t use: the property behaves as unset, taking its inherited or initial value rather than an earlier declaration.","lesson":"l-css-1-4","course":"css-mastery"},{"id":"at-property","term":"@property","definition":"An at-rule that registers a custom property with a syntax, an inheritance flag and an initial value, so the browser can validate it and interpolate it in transitions and animations.","lesson":"l-css-1-4","course":"css-mastery"},{"id":"css-nesting","term":"CSS nesting","definition":"Native syntax for writing rules inside other rules, where <code dir=\"ltr\">&amp;</code> stands for the parent selector. It works on selectors, not text, so it can’t build BEM class names the way Sass does.","lesson":"l-css-1-5","course":"css-mastery"},{"id":"has-pseudo-class","term":":has()","definition":"A relational pseudo-class that matches an element when the relative selector inside it finds a match, letting a parent or earlier sibling be styled by its descendants or later siblings.","lesson":"l-css-1-5","course":"css-mastery"},{"id":"flex-basis","term":"flex-basis","definition":"The starting size of a flex item along the main axis, before leftover space is shared by <code dir=\"ltr\">flex-grow</code> or a shortfall is taken back by <code dir=\"ltr\">flex-shrink</code>.","lesson":"l-css-2-1","course":"css-mastery"},{"id":"automatic-minimum-size","term":"Automatic minimum size","definition":"The default <code dir=\"ltr\">min-width: auto</code> of flex and grid items, which stops them shrinking below their content. Setting <code dir=\"ltr\">min-width: 0</code> lets long text truncate instead of overflowing.","lesson":"l-css-2-1","course":"css-mastery"},{"id":"grid-template-areas","term":"grid-template-areas","definition":"A grid property that names regions of the grid with strings, one per row, so you can place items by name and rearrange the layout by redrawing the strings.","lesson":"l-css-2-2","course":"css-mastery"},{"id":"auto-fit","term":"auto-fit","definition":"A keyword for <code dir=\"ltr\">repeat()</code> that creates as many tracks as fit and collapses the empty ones, so a few items stretch to fill the row; <code dir=\"ltr\">auto-fill</code> keeps empty tracks instead.","lesson":"l-css-2-2","course":"css-mastery"},{"id":"subgrid","term":"Subgrid","definition":"The <code dir=\"ltr\">subgrid</code> value for <code dir=\"ltr\">grid-template-rows</code> or <code dir=\"ltr\">grid-template-columns</code>, which makes a nested grid use the tracks it spans in its parent, so content aligns across sibling components.","lesson":"l-css-2-3","course":"css-mastery"},{"id":"fit-content","term":"fit-content","definition":"An intrinsic sizing keyword that sizes an element to its max-content width, capped at the available space, so a block can hug its content without overflowing.","lesson":"l-css-2-4","course":"css-mastery"},{"id":"clamp","term":"clamp()","definition":"A math function that returns a preferred value held between a minimum and a maximum, written <code dir=\"ltr\">clamp(MIN, PREFERRED, MAX)</code>. It equals <code dir=\"ltr\">max(MIN, min(PREFERRED, MAX))</code>.","lesson":"l-css-2-4","course":"css-mastery"},{"id":"container-query","term":"Container query","definition":"An <code dir=\"ltr\">@container</code> rule that applies styles based on the size or style of an ancestor container rather than the viewport, so a component adapts to the slot it sits in.","lesson":"l-css-2-5","course":"css-mastery"},{"id":"container-units","term":"Container query units","definition":"Units such as <code dir=\"ltr\">cqi</code> and <code dir=\"ltr\">cqb</code> that equal 1% of the nearest size container’s inline or block size, falling back to small viewport units when no container exists.","lesson":"l-css-2-5","course":"css-mastery"},{"id":"fluid-type","term":"Fluid type","definition":"Font sizes that change continuously with available width, usually written as <code dir=\"ltr\">clamp()</code> with a rem minimum, a linear preferred value combining rem and <code dir=\"ltr\">vw</code> or <code dir=\"ltr\">cqi</code>, and a rem maximum.","lesson":"l-css-3-1","course":"css-mastery"},{"id":"logical-properties","term":"Logical properties","definition":"Properties named by text flow instead of physical sides, such as <code dir=\"ltr\">margin-inline-start</code> and <code dir=\"ltr\">inline-size</code>, so layouts mirror correctly in right-to-left languages like Arabic.","lesson":"l-css-3-2","course":"css-mastery"},{"id":"oklch","term":"oklch()","definition":"A color function using perceptual lightness, chroma and hue, so colors with equal lightness look equally light. It can also express colors beyond the sRGB gamut.","lesson":"l-css-3-3","course":"css-mastery"},{"id":"relative-color-syntax","term":"Relative color syntax","definition":"A way to derive a color from another by unpacking its channels with <code dir=\"ltr\">from</code>, as in <code dir=\"ltr\">oklch(from var(--brand) calc(l - 0.1) c h)</code>, and changing only what you need.","lesson":"l-css-3-3","course":"css-mastery"},{"id":"light-dark","term":"light-dark()","definition":"A color function that returns its first value when the element’s used color scheme is light and its second when it’s dark. It needs <code dir=\"ltr\">color-scheme</code> to allow dark.","lesson":"l-css-3-4","course":"css-mastery"},{"id":"focus-visible","term":":focus-visible","definition":"A pseudo-class that matches a focused element only when the browser judges a focus indicator useful, such as keyboard focus or any text field, but not a mouse click on a button.","lesson":"l-css-3-5","course":"css-mastery"},{"id":"starting-style","term":"@starting-style","definition":"An at-rule that defines the styles an element transitions from when it is first rendered or goes from <code dir=\"ltr\">display: none</code> to shown, enabling entry transitions in CSS alone.","lesson":"l-css-4-1","course":"css-mastery"},{"id":"view-transition","term":"View transition","definition":"An animation created by <code dir=\"ltr\">document.startViewTransition()</code>: the browser snapshots the old and new states of a DOM update and animates between them through pseudo-elements you can style.","lesson":"l-css-4-2","course":"css-mastery"},{"id":"scroll-driven-animation","term":"Scroll-driven animation","definition":"A CSS animation whose progress follows a scroll timeline, set with <code dir=\"ltr\">animation-timeline: scroll()</code> or <code dir=\"ltr\">view()</code>, instead of elapsed time.","lesson":"l-css-4-3","course":"css-mastery"},{"id":"compositing","term":"Compositing","definition":"The final rendering stage, where painted layers are assembled on the GPU. Changes to <code dir=\"ltr\">transform</code> and <code dir=\"ltr\">opacity</code> can often be handled here alone, skipping layout and paint.","lesson":"l-css-4-5","course":"css-mastery"},{"id":"variable","term":"Variable","definition":"A name attached to a value with <code dir=\"ltr\">=</code>, such as <code dir=\"ltr\">unit_price = 39</code>, so the value can be used later; the right side is computed first, then the name points at the result.","lesson":"l-pda-1-2","course":"python-data-analysis"},{"id":"dtype","term":"dtype","definition":"The data type shared by every value in a pandas column, such as <code dir=\"ltr\">int64</code>, <code dir=\"ltr\">float64</code>, <code dir=\"ltr\">object</code> (text), <code dir=\"ltr\">bool</code> or <code dir=\"ltr\">datetime64</code>; a wrong dtype is behind many data bugs.","lesson":"l-pda-2-1","course":"python-data-analysis"},{"id":"dictionary","term":"Dictionary","definition":"A Python container of key: value pairs, such as a product’s name mapped to its price; you look values up by key with <code dir=\"ltr\">d[key]</code> or <code dir=\"ltr\">d.get(key, default)</code>.","lesson":"l-pda-1-3","course":"python-data-analysis"},{"id":"list-comprehension","term":"List comprehension","definition":"A one-line way to build a list, <code dir=\"ltr\">[expr for x in items if condition]</code>, that applies an expression to each item and optionally filters which items are kept.","lesson":"l-pda-1-4","course":"python-data-analysis"},{"id":"f-string","term":"f-string","definition":"A string literal prefixed with <code dir=\"ltr\">f</code> that embeds values in braces with optional formatting, such as <code dir=\"ltr\">f&quot;{revenue:,.2f}&quot;</code> for 1,234.50 or <code dir=\"ltr\">f&quot;{share:.1%}&quot;</code> for 12.5%.","lesson":"l-pda-1-5","course":"python-data-analysis"},{"id":"traceback","term":"Traceback","definition":"The report Python prints when an exception stops a program; read it from the bottom, where the last line names the error type and message, then up to the failing line.","lesson":"l-pda-1-5","course":"python-data-analysis"},{"id":"series","term":"Series","definition":"A one-dimensional pandas array of values with an index of labels; a single column of a DataFrame is a Series.","lesson":"l-pda-2-1","course":"python-data-analysis"},{"id":"dataframe","term":"DataFrame","definition":"The pandas table: columns that are Series sharing one row index, with methods to load, select, filter, group, join and reshape data.","lesson":"l-pda-2-1","course":"python-data-analysis"},{"id":"index-alignment","term":"Index alignment","definition":"pandas’ rule that operations between two Series or DataFrames match values by index label, not by position; labels present on only one side produce NaN.","lesson":"l-pda-2-1","course":"python-data-analysis"},{"id":"loc-iloc","term":"loc and iloc","definition":"The two precise selectors in pandas: <code dir=\"ltr\">.loc[rows, columns]</code> selects by label and includes the end of a slice, while <code dir=\"ltr\">.iloc</code> selects by integer position and excludes it.","lesson":"l-pda-2-3","course":"python-data-analysis"},{"id":"boolean-mask","term":"Boolean mask","definition":"A Series of True and False values, usually from a comparison, used to select rows with <code dir=\"ltr\">df[mask]</code>; its sum counts matches and its mean gives their share.","lesson":"l-pda-2-4","course":"python-data-analysis"},{"id":"chained-assignment","term":"Chained assignment","definition":"Assigning through two selections, such as <code dir=\"ltr\">df[&quot;col&quot;][mask] = value</code>; it may change a temporary copy instead of the DataFrame, so use one <code dir=\"ltr\">.loc</code> call instead.","lesson":"l-pda-2-5","course":"python-data-analysis"},{"id":"copy-on-write","term":"Copy-on-Write","definition":"pandas behaviour, default from version 3.0 and optional in 2.x, in which every selection acts as a copy, so the only way to change a DataFrame is to assign to it directly.","lesson":"l-pda-2-5","course":"python-data-analysis"},{"id":"nan","term":"NaN","definition":"Short for not a number: the classic pandas marker for a missing value in float columns; it is not equal to anything, so test for it with <code dir=\"ltr\">isna()</code>.","lesson":"l-pda-3-1","course":"python-data-analysis"},{"id":"nullable-dtype","term":"Nullable dtype","definition":"A pandas dtype such as <code dir=\"ltr\">Int64</code>, <code dir=\"ltr\">Float64</code>, <code dir=\"ltr\">boolean</code> or <code dir=\"ltr\">string</code> that stores missing values as <code dir=\"ltr\">pd.NA</code>, so integer columns stay integers even with gaps.","lesson":"l-pda-3-1","course":"python-data-analysis"},{"id":"str-accessor","term":"str accessor","definition":"The <code dir=\"ltr\">.str</code> attribute of a text Series that applies string methods such as <code dir=\"ltr\">strip</code>, <code dir=\"ltr\">title</code>, <code dir=\"ltr\">replace</code>, <code dir=\"ltr\">split</code> and <code dir=\"ltr\">contains</code> to every value at once.","lesson":"l-pda-3-2","course":"python-data-analysis"},{"id":"regular-expression","term":"Regular expression","definition":"A pattern language for text in which characters like <code dir=\"ltr\">$</code> and <code dir=\"ltr\">.</code> have special meanings; pass <code dir=\"ltr\">regex=False</code> to treat them as plain characters.","lesson":"l-pda-3-3","course":"python-data-analysis"},{"id":"ambiguous-date","term":"Ambiguous date","definition":"A date string such as 05/08/2025 that is valid under both day-first and month-first readings; only outside information can decide which one is correct.","lesson":"l-pda-3-4","course":"python-data-analysis"},{"id":"assertion","term":"Assertion","definition":"An <code dir=\"ltr\">assert condition, message</code> statement that does nothing when the condition holds and stops the program with the message when it fails; used to state what clean data must look like.","lesson":"l-pda-3-5","course":"python-data-analysis"},{"id":"groupby","term":"groupby (split-apply-combine)","definition":"The pandas operation that splits rows into groups by key, applies a calculation to each group and combines the results into one table.","lesson":"l-pda-4-1","course":"python-data-analysis"},{"id":"named-aggregation","term":"Named aggregation","definition":"A form of <code dir=\"ltr\">agg</code> in which each keyword names an output column and its value is a (column, function) pair, such as <code dir=\"ltr\">revenue=(&quot;revenue&quot;, &quot;sum&quot;)</code>.","lesson":"l-pda-4-1","course":"python-data-analysis"},{"id":"merge","term":"merge","definition":"The pandas method that combines two tables side by side by matching key values; <code dir=\"ltr\">how</code> sets the join type and <code dir=\"ltr\">validate</code> checks the expected key relationship.","lesson":"l-pda-4-2","course":"python-data-analysis"},{"id":"join-type","term":"Join type","definition":"The rule for unmatched keys in a merge: inner keeps keys found on both sides, left keeps every left row, right every right row, and outer keeps all keys.","lesson":"l-pda-4-2","course":"python-data-analysis"},{"id":"long-wide","term":"Long and wide data","definition":"Two shapes for the same data: long has one row per observation, wide spreads one variable across columns; <code dir=\"ltr\">pivot_table</code> goes from long to wide and <code dir=\"ltr\">melt</code> back.","lesson":"l-pda-4-3","course":"python-data-analysis"},{"id":"resample","term":"resample","definition":"A pandas method that groups rows with a datetime index into regular periods such as days, weeks (<code dir=\"ltr\">W</code>), month ends (<code dir=\"ltr\">ME</code>) or quarter ends (<code dir=\"ltr\">QE</code>), including empty periods.","lesson":"l-pda-4-4","course":"python-data-analysis"},{"id":"year-over-year","term":"Year-over-year growth","definition":"The change compared with the same period a year earlier, such as <code dir=\"ltr\">pct_change(4)</code> on quarterly data; it removes seasonal patterns from the comparison.","lesson":"l-pda-4-4","course":"python-data-analysis"},{"id":"qcut","term":"qcut","definition":"A pandas function that splits values into groups of about equal size at quantiles, such as quartiles, unlike <code dir=\"ltr\">cut</code>, which uses boundaries you choose.","lesson":"l-pda-4-5","course":"python-data-analysis"},{"id":"median","term":"Median","definition":"The middle value of a sorted column, with half the values below it; in skewed data such as order values it describes a typical value better than the mean.","lesson":"l-pda-5-1","course":"python-data-analysis"},{"id":"correlation","term":"Correlation","definition":"A number from -1 to 1 measuring how strongly two numeric columns move together in a straight-line pattern; it signals association, not cause.","lesson":"l-pda-5-1","course":"python-data-analysis"},{"id":"reproducible-analysis","term":"Reproducible analysis","definition":"An analysis that anyone can rerun from the raw files, top to bottom, with no manual steps, and get the same results, using parameters, functions and assertions.","lesson":"l-pda-5-4","course":"python-data-analysis"},{"id":"grain","term":"Grain","definition":"What one row of a table or query result represents, such as one row per order or one row per country per month. Stating it before writing GROUP BY prevents most aggregation mistakes.","lesson":"l-sql-2-1","course":"sql-for-analysts"},{"id":"operator-precedence","term":"Operator precedence (AND before OR)","definition":"The rule that SQL evaluates AND before OR, so a filter mixing them groups conditions unexpectedly unless every OR group is wrapped in parentheses.","lesson":"l-sql-1-2","course":"sql-for-analysts"},{"id":"three-valued-logic","term":"Three-valued logic","definition":"SQL’s logic in which a condition is TRUE, FALSE or NULL (unknown). Any comparison with NULL is unknown, and WHERE keeps only rows whose condition is TRUE.","lesson":"l-sql-1-3","course":"sql-for-analysts"},{"id":"is-distinct-from","term":"IS DISTINCT FROM","definition":"A NULL-safe comparison that treats NULL as an ordinary value, so rows with NULL are not silently dropped the way they are with the plain not-equal operator.","lesson":"l-sql-1-3","course":"sql-for-analysts"},{"id":"coalesce","term":"COALESCE","definition":"A function that returns its first non-NULL argument, used to give missing values a display default such as ‘none’. Replacing NULL with 0 in averages distorts results.","lesson":"l-sql-1-3","course":"sql-for-analysts"},{"id":"case-expression","term":"CASE expression","definition":"An expression that returns the result of the first WHEN condition that is TRUE, or the ELSE value; without an ELSE, unmatched rows get NULL.","lesson":"l-sql-1-3","course":"sql-for-analysts"},{"id":"iso-date-text","term":"ISO-8601 date text","definition":"Dates stored as text in the form ‘YYYY-MM-DD HH:MM:SS’. Because the largest unit comes first, alphabetical order equals chronological order, so string comparison works as a date filter.","lesson":"l-sql-1-4","course":"sql-for-analysts"},{"id":"half-open-range","term":"Half-open date range","definition":"A period filter that includes its start and excludes the start of the next period, such as order_date &gt;= ‘2025-11-01’ AND order_date &lt; ‘2025-12-01’, so the last day is never cut off.","lesson":"l-sql-1-4","course":"sql-for-analysts"},{"id":"julianday","term":"julianday()","definition":"A SQLite function that converts a date to a fractional number of days. Subtracting two julianday values gives a duration in days; multiplying by 24 gives hours.","lesson":"l-sql-1-4","course":"sql-for-analysts"},{"id":"having","term":"HAVING","definition":"The clause that filters groups after aggregation, so it can test values like COUNT(*) or SUM(revenue). Row conditions belong in WHERE, which runs before grouping.","lesson":"l-sql-2-1","course":"sql-for-analysts"},{"id":"bare-column","term":"Bare column","definition":"A selected column that is neither grouped nor aggregated. SQLite allows it and fills it from an arbitrary row of each group; PostgreSQL rejects the query.","lesson":"l-sql-2-1","course":"sql-for-analysts"},{"id":"filter-clause","term":"FILTER clause","definition":"A standard SQL addition to an aggregate, as in COUNT(*) FILTER (WHERE channel = ‘web’), that restricts that one aggregate to matching rows inside each group.","lesson":"l-sql-2-1","course":"sql-for-analysts"},{"id":"left-join","term":"LEFT JOIN","definition":"A join that keeps every row of the left table and fills the right table’s columns with NULL where no match exists. Right-table filters belong in its ON clause.","lesson":"l-sql-2-2","course":"sql-for-analysts"},{"id":"fan-out","term":"Fan-out","definition":"The row multiplication that happens when a join follows a one-to-many relationship. Values stored on the ‘one’ side repeat once per match, so summing them inflates totals.","lesson":"l-sql-2-3","course":"sql-for-analysts"},{"id":"derived-table","term":"Derived table","definition":"A subquery in the FROM clause that acts like a temporary table with its own grain, often used to aggregate a detailed table before joining it.","lesson":"l-sql-2-3","course":"sql-for-analysts"},{"id":"self-join","term":"Self-join","definition":"A join of a table to itself using two aliases for two roles, such as employee and manager, to follow a link stored within the same table.","lesson":"l-sql-2-4","course":"sql-for-analysts"},{"id":"semi-join","term":"Semi-join","definition":"A filter that keeps rows having at least one match in another table, written with EXISTS or IN (subquery). Unlike a join, it never duplicates rows.","lesson":"l-sql-2-4","course":"sql-for-analysts"},{"id":"anti-join","term":"Anti-join","definition":"A filter that keeps rows with no match in another table, written as NOT EXISTS or LEFT JOIN … WHERE right_key IS NULL. NOT IN fails when the subquery contains NULL.","lesson":"l-sql-2-4","course":"sql-for-analysts"},{"id":"scalar-subquery","term":"Scalar subquery","definition":"A subquery that returns exactly one row and one column, such as an overall average, and can be used anywhere a single value is allowed.","lesson":"l-sql-3-1","course":"sql-for-analysts"},{"id":"cte","term":"Common table expression (CTE)","definition":"A named intermediate result defined with WITH name AS (…). CTEs let a long analysis read as ordered steps, each of which can be run and checked on its own.","lesson":"l-sql-3-1","course":"sql-for-analysts"},{"id":"recursive-cte","term":"Recursive CTE","definition":"A CTE with an anchor query, UNION ALL and a step that joins back to the CTE itself, repeating until no new rows appear. Used to walk hierarchies of any depth.","lesson":"l-sql-3-1","course":"sql-for-analysts"},{"id":"window-function","term":"Window function","definition":"A function followed by OVER (…) that computes a value from a set of related rows while keeping every row, unlike GROUP BY, which collapses them.","lesson":"l-sql-3-2","course":"sql-for-analysts"},{"id":"partition-by","term":"PARTITION BY","definition":"The part of a window definition that splits rows into groups so the window calculation, such as a ranking or running total, restarts for each group.","lesson":"l-sql-3-2","course":"sql-for-analysts"},{"id":"lag-lead","term":"LAG and LEAD","definition":"Window functions that return a value from the previous (LAG) or next (LEAD) row in the window order, used for period-over-period comparisons.","lesson":"l-sql-3-3","course":"sql-for-analysts"},{"id":"window-frame","term":"Window frame","definition":"The range of rows around the current row that a window aggregate sees, such as ROWS BETWEEN 6 PRECEDING AND CURRENT ROW for a 7-row moving average.","lesson":"l-sql-3-3","course":"sql-for-analysts"},{"id":"funnel","term":"Funnel","definition":"A sequence of steps, such as session, add to cart and purchase, reported as counts and step-to-step conversion rates to show where people drop off.","lesson":"l-sql-3-4","course":"sql-for-analysts"},{"id":"cohort-retention","term":"Cohort retention","definition":"The share of a group of customers who started in the same period, such as their first-order month, who are active again a given number of periods later.","lesson":"l-sql-3-4","course":"sql-for-analysts"},{"id":"data-quality-check","term":"Data-quality check","definition":"A query that returns the rows breaking a stated rule, such as orphaned references or impossible dates, so an empty result means the rule holds.","lesson":"l-sql-4-1","course":"sql-for-analysts"},{"id":"query-plan","term":"Query plan","definition":"The database’s description of how it will execute a query, shown in SQLite with EXPLAIN QUERY PLAN. SEARCH means an index narrowed the work; SCAN means every row was read.","lesson":"l-sql-4-2","course":"sql-for-analysts"},{"id":"sargable","term":"Sargable","definition":"Describes a condition the database can answer with an index, typically a bare column compared with a constant. Wrapping the column in a function usually makes it non-sargable.","lesson":"l-sql-4-2","course":"sql-for-analysts"},{"id":"visual-hierarchy","term":"Visual hierarchy","definition":"The order in which people notice elements on a screen, created on purpose with size, weight, color, position and space so the most important content is seen first.","lesson":"l-fig-1-2","course":"figma-ui-design"},{"id":"proximity","term":"Proximity","definition":"The Gestalt principle that elements placed close together are seen as related. In UI design it means space inside a group must be smaller than space between groups.","lesson":"l-fig-1-2","course":"figma-ui-design"},{"id":"type-scale","term":"Type scale","definition":"A short, fixed list of text sizes, each paired with a line height and weight and given a named job such as Title, Body or Caption, used consistently across every screen.","lesson":"l-fig-1-3","course":"figma-ui-design"},{"id":"contrast-ratio","term":"Contrast ratio","definition":"A measure of the luminance difference between two colors, from 1:1 to 21:1. WCAG AA requires 4.5:1 for normal text and 3:1 for large text and essential non-text elements.","lesson":"l-fig-1-3","course":"figma-ui-design"},{"id":"frame","term":"Frame","definition":"A Figma container with its own size, fill, clipping, constraints and optional auto layout or layout guides. Screens, rows, buttons and cards are all built from frames.","lesson":"l-fig-1-4","course":"figma-ui-design"},{"id":"group","term":"Group","definition":"A bundle of layers whose size is derived from its children. It has no fill, padding or auto layout of its own, so it suits loose visual clusters rather than interface parts.","lesson":"l-fig-1-4","course":"figma-ui-design"},{"id":"constraints","term":"Constraints","definition":"Rules on a child of a regular frame that decide how it moves or stretches when the frame is resized, such as Left and right, Bottom, Center or Scale.","lesson":"l-fig-1-4","course":"figma-ui-design"},{"id":"auto-layout","term":"Auto layout","definition":"A frame setting that arranges children automatically in a vertical, horizontal or grid flow, with a set gap between them and padding around them, re-flowing whenever content changes.","lesson":"l-fig-2-1","course":"figma-ui-design"},{"id":"gap-padding","term":"Gap and padding","definition":"In auto layout, gap is the space between sibling children, and padding is the space between the children and the edges of their parent frame. Both belong to the parent.","lesson":"l-fig-2-1","course":"figma-ui-design"},{"id":"hug-fill-fixed","term":"Hug, Fill and Fixed","definition":"Auto layout sizing options. Hug contents sizes a frame to its children, Fill container takes the parent’s available space, and Fixed keeps an exact size regardless of content.","lesson":"l-fig-2-2","course":"figma-ui-design"},{"id":"wrap","term":"Wrap","definition":"An auto layout option for horizontal and vertical flows that moves children onto a new line when they no longer fit, useful for chips and tags on narrow screens.","lesson":"l-fig-2-2","course":"figma-ui-design"},{"id":"ignore-auto-layout","term":"Ignore auto layout","definition":"A setting, formerly called absolute position, that takes one child out of its auto layout flow so it can be positioned with constraints, such as a badge on an icon’s corner.","lesson":"l-fig-2-2","course":"figma-ui-design"},{"id":"layout-guide","term":"Layout guide","definition":"A visual aid attached to a frame, formerly called a layout grid, in the form of columns, rows or a uniform grid, defined by count, margin and gutter. It never moves layers by itself.","lesson":"l-fig-2-3","course":"figma-ui-design"},{"id":"eight-point-system","term":"8-point system","definition":"A spacing convention where sizes and spacing are multiples of 8, with 4 as a half step, so values scale cleanly across screen densities and teams choose from a short list.","lesson":"l-fig-2-3","course":"figma-ui-design"},{"id":"breakpoint","term":"Breakpoint","definition":"A width at which a layout changes its structure, such as a stats grid going from two to four columns. Good breakpoints come from where the content stops working, not from device lists.","lesson":"l-fig-2-4","course":"figma-ui-design"},{"id":"main-component","term":"Main component","definition":"The source definition of a reusable Figma element. Changes to it flow to every linked instance, except for properties an instance has overridden.","lesson":"l-fig-3-1","course":"figma-ui-design"},{"id":"instance","term":"Instance","definition":"A linked copy of a main component. It can override content and appearance such as text, fills, visibility and nested instances, but cannot change its layer structure.","lesson":"l-fig-3-1","course":"figma-ui-design"},{"id":"variant","term":"Variant","definition":"One version of a component inside a component set, described by variant properties such as State=Done, used for differences that restyle several layers together.","lesson":"l-fig-3-2","course":"figma-ui-design"},{"id":"component-property","term":"Component property","definition":"A switch on a component that instances can change without new variants: boolean for visibility, text for editable strings, instance swap for nested components, and slots for flexible content areas.","lesson":"l-fig-3-2","course":"figma-ui-design"},{"id":"variable","term":"Variable","definition":"A named single value in Figma, such as a color, number, string or boolean, that can be bound to layer properties, alias another variable and hold different values per mode.","lesson":"l-fig-3-3","course":"figma-ui-design"},{"id":"semantic-token","term":"Semantic token","definition":"A variable named by its role, such as color/action/primary, that aliases a raw palette value. Components bind to semantic tokens so themes and palette changes stay one edit.","lesson":"l-fig-3-3","course":"figma-ui-design"},{"id":"style","term":"Style","definition":"A named, reusable composite of visual properties in Figma, such as a text style’s font, size, weight and line height, or an effect style holding stacked shadows.","lesson":"l-fig-3-3","course":"figma-ui-design"},{"id":"variable-mode","term":"Variable mode","definition":"One column of values in a variable collection, such as Light or Dark. Setting a mode on a frame or page swaps every bound value at once, and children inherit it.","lesson":"l-fig-3-4","course":"figma-ui-design"},{"id":"library","term":"Library","definition":"A published Figma file whose components, styles and variables other files can use. Subscribing files are told about updates and choose when to accept them.","lesson":"l-fig-3-5","course":"figma-ui-design"},{"id":"interactive-component","term":"Interactive component","definition":"A component set with prototype interactions between its variants, such as On tap Change to Done, so every instance responds in prototypes without extra screens.","lesson":"l-fig-4-1","course":"figma-ui-design"},{"id":"smart-animate","term":"Smart animate","definition":"A prototype animation that matches layers with the same name and hierarchy in two frames and animates the differences in position, size, rotation, opacity and fill.","lesson":"l-fig-4-1","course":"figma-ui-design"},{"id":"target-size","term":"Target size","definition":"The tappable area of an interactive element. WCAG 2.2 AA requires at least 24 by 24 CSS pixels; Apple recommends 44 points and Material 48 dp.","lesson":"l-fig-4-2","course":"figma-ui-design"},{"id":"ready-for-dev","term":"Ready for dev","definition":"A Dev Mode status on sections, frames or components that signals a design is stable enough to build. Edits afterwards automatically mark it as Changed.","lesson":"l-fig-4-3","course":"figma-ui-design"},{"id":"design-critique","term":"Design critique","definition":"A structured session where people evaluate a design against its stated goals, offering observations, effects and questions rather than personal preferences or approval.","lesson":"l-fig-4-4","course":"figma-ui-design"},{"id":"design-system","term":"Design system","definition":"The shared tokens, components, patterns, documentation and the people and processes that keep them current, so many teams can build consistent interfaces without re-deciding everything.","lesson":"l-ds-1-1","course":"design-systems"},{"id":"interface-inventory","term":"Interface inventory","definition":"An audit that collects every instance of each UI element across products, grouped by type, to make duplication visible and to decide what a design system should own first.","lesson":"l-ds-1-2","course":"design-systems"},{"id":"design-principle","term":"Design principle","definition":"A short statement that picks a side in a real trade-off, such as accessible before beautiful, so it can settle design arguments without a long meeting.","lesson":"l-ds-1-3","course":"design-systems"},{"id":"hybrid-team-model","term":"Hybrid team model","definition":"A way of running a design system in which a small dedicated core owns tokens, reviews and releases while product teams contribute components and fixes through a defined process.","lesson":"l-ds-1-3","course":"design-systems"},{"id":"design-token","term":"Design token","definition":"A named design decision, such as a color, spacing value or font size, stored once and referenced by name from design tools and code instead of repeating raw values.","lesson":"l-ds-2-1","course":"design-systems"},{"id":"primitive-token","term":"Primitive token","definition":"A token that names a raw value by what it is, such as <code dir=\"ltr\">--nw-blue-600</code>, without saying where it is used. Primitives form the system’s palette and scales.","lesson":"l-ds-2-1","course":"design-systems"},{"id":"semantic-token","term":"Semantic token","definition":"A token that names an intent, such as <code dir=\"ltr\">--nw-color-action-bg</code>, and points at a primitive. Themes and brands change which primitive each semantic token points at.","lesson":"l-ds-2-1","course":"design-systems"},{"id":"component-token","term":"Component token","definition":"A token scoped to one component, such as <code dir=\"ltr\">--nw-button-bg</code>, that points at a semantic token and lets that component be adjusted without affecting others.","lesson":"l-ds-2-1","course":"design-systems"},{"id":"naming-grammar","term":"Token naming grammar","definition":"A fixed order of name parts, such as category, concept, property, variant and state, that makes token names predictable to guess, sortable, and checkable by a lint rule.","lesson":"l-ds-2-2","course":"design-systems"},{"id":"theme","term":"Theme","definition":"A remapping of semantic tokens to different primitives, such as a dark theme, applied with a selector like <code dir=\"ltr\">[data-theme=&quot;dark&quot;]</code> while components stay unchanged.","lesson":"l-ds-2-3","course":"design-systems"},{"id":"mode-axis","term":"Mode axis","definition":"An independent dimension of theming, such as color scheme, brand or density, that owns its own set of tokens so combinations compose without separate files for each.","lesson":"l-ds-2-3","course":"design-systems"},{"id":"dtcg-format","term":"DTCG format","definition":"The JSON format for design tokens defined by the W3C Design Tokens Community Group, whose first stable version, 2025.10, covers tokens, types, groups, aliases and color.","lesson":"l-ds-2-4","course":"design-systems"},{"id":"alias","term":"Alias (token reference)","definition":"A token whose value refers to another token by its path in curly braces, such as <code dir=\"ltr\">{color.blue.600}</code>. It must point at a token, never at a group.","lesson":"l-ds-2-4","course":"design-systems"},{"id":"token-pipeline","term":"Token pipeline","definition":"A build step that parses token files, resolves aliases, transforms names and values per platform, and writes formats such as CSS custom properties, Swift and Kotlin.","lesson":"l-ds-2-5","course":"design-systems"},{"id":"output-references","term":"Output references","definition":"A pipeline setting that keeps aliases as <code dir=\"ltr\">var()</code> references in generated CSS instead of resolved values, so the token tiers and runtime overrides survive into the browser.","lesson":"l-ds-2-5","course":"design-systems"},{"id":"variant","term":"Variant","definition":"One of a fixed set of mutually exclusive styles of a component, such as primary, secondary or danger, best expressed as a single enum prop rather than separate booleans.","lesson":"l-ds-3-1","course":"design-systems"},{"id":"slot","term":"Slot","definition":"A place in a component where the consumer passes content, such as <code dir=\"ltr\">children</code> or a <code dir=\"ltr\">startIcon</code> element, instead of configuring that content through more props.","lesson":"l-ds-3-1","course":"design-systems"},{"id":"compound-component","term":"Compound component","definition":"A component made of cooperating pieces, such as <code dir=\"ltr\">Tabs.List</code> and <code dir=\"ltr\">Tabs.Trigger</code>, that the consumer arranges freely while the pieces share state through context.","lesson":"l-ds-3-2","course":"design-systems"},{"id":"state-matrix","term":"State matrix","definition":"A grid of every variant against every interaction state, such as hover, focus visible, disabled, loading and pressed, used to design, build and test a component completely.","lesson":"l-ds-3-3","course":"design-systems"},{"id":"focus-visible","term":":focus-visible","definition":"A CSS pseudo-class that matches when the browser decides focus should be visible, typically after keyboard navigation, used to show focus rings without showing them on most mouse clicks.","lesson":"l-ds-3-3","course":"design-systems"},{"id":"figma-variable-mode","term":"Figma variable mode","definition":"One of several sets of values for the variables in a Figma collection, such as Light and Dark, applied to frames the way theme selectors apply to page sections.","lesson":"l-ds-4-1","course":"design-systems"},{"id":"semver","term":"Semantic versioning","definition":"A MAJOR.MINOR.PATCH version scheme where patches fix bugs, minors add backward-compatible features, and majors contain changes that can break existing usage.","lesson":"l-ds-4-2","course":"design-systems"},{"id":"changeset","term":"Changeset","definition":"A small file added to a pull request that states the version bump a change needs and a consumer-facing summary, later combined into the release version and changelog.","lesson":"l-ds-4-2","course":"design-systems"},{"id":"deprecation","term":"Deprecation","definition":"Marking an API, token or component as scheduled for removal while it still works, naming its replacement and removal version so teams can migrate before it disappears.","lesson":"l-ds-4-3","course":"design-systems"},{"id":"codemod","term":"Codemod","definition":"A script that rewrites source code automatically, such as renaming a deprecated prop across a repository, so migrations become reviews instead of manual work.","lesson":"l-ds-4-3","course":"design-systems"},{"id":"visual-regression-test","term":"Visual regression test","definition":"A test that screenshots a component state and compares it with an approved baseline, failing on differences that a human then accepts as intended or rejects as bugs.","lesson":"l-ds-4-4","course":"design-systems"},{"id":"rfc","term":"RFC (request for comments)","definition":"A written proposal for a significant change, such as a new component, laying out the problem, evidence, API sketch and accessibility plan for open review before building.","lesson":"l-ds-5-1","course":"design-systems"},{"id":"brand-tier","term":"Brand tier","definition":"A small layer of tokens between primitives and semantic tokens, such as a color ramp, fonts and radii, that each brand points at its own values.","lesson":"l-ds-5-2","course":"design-systems"},{"id":"adoption-rate","term":"Adoption rate","definition":"The share of UI elements in a product that are rendered by the real design system components, measured with signals only those components produce, tracked as a trend.","lesson":"l-ds-5-3","course":"design-systems"},{"id":"native-view","term":"Native view","definition":"A platform UI element, such as UIView on iOS or android.view.View on Android, that React Native creates and updates from your components instead of rendering HTML.","lesson":"l-rn-1-1","course":"react-native-apps"},{"id":"new-architecture","term":"New Architecture","definition":"React Native’s rendering and native-module system built on JSI, the Fabric renderer and TurboModules. It has been the only architecture since React Native 0.82.","lesson":"l-rn-1-1","course":"react-native-apps"},{"id":"hermes","term":"Hermes","definition":"The JavaScript engine built for React Native. It runs your app’s JavaScript on its own thread, separate from the UI thread that draws views and receives touches.","lesson":"l-rn-1-1","course":"react-native-apps"},{"id":"expo-go","term":"Expo Go","definition":"A store app with a fixed set of native modules that loads your project’s JavaScript from the dev server. Great for learning, but it can’t include custom native code.","lesson":"l-rn-1-2","course":"react-native-apps"},{"id":"development-build","term":"Development build","definition":"Your own app binary, with your native modules, identity and configuration, plus dev tools like Fast Refresh. You create one with npx expo run or EAS Build.","lesson":"l-rn-1-2","course":"react-native-apps"},{"id":"metro","term":"Metro","definition":"The JavaScript bundler and dev server that npx expo start runs. It serves your code to Expo Go or a development build and powers Fast Refresh.","lesson":"l-rn-1-2","course":"react-native-apps"},{"id":"pressable","term":"Pressable","definition":"The core component for anything tappable. It reports presses and long presses, and its style can be a function of the pressed state for instant feedback.","lesson":"l-rn-1-4","course":"react-native-apps"},{"id":"hit-slop","term":"hitSlop","definition":"A Pressable prop that enlarges the touch area beyond the visible element, so small icons can still meet the 44-point minimum tap target.","lesson":"l-rn-1-4","course":"react-native-apps"},{"id":"style-array","term":"Style array","definition":"A style prop given as an array of style objects. React Native merges it left to right, later keys win, and falsy entries are skipped.","lesson":"l-rn-2-1","course":"react-native-apps"},{"id":"density-independent-point","term":"Density-independent point","definition":"The unit behind every unitless number in React Native styles. The platform converts points to physical pixels, so sizes look the same on low- and high-density screens.","lesson":"l-rn-2-1","course":"react-native-apps"},{"id":"main-axis","term":"Main axis","definition":"The direction a flex container lays out its children, set by flexDirection. It is vertical by default in React Native, and justifyContent positions children along it.","lesson":"l-rn-2-2","course":"react-native-apps"},{"id":"safe-area","term":"Safe area","definition":"The part of the screen not covered by notches, rounded corners, the home indicator or system bars. Screens without headers pad themselves using insets from react-native-safe-area-context.","lesson":"l-rn-2-3","course":"react-native-apps"},{"id":"virtualization","term":"Virtualization","definition":"The technique FlatList and SectionList use to mount only the rows near the viewport and replace the rest with empty space, keeping long lists fast and memory-light.","lesson":"l-rn-2-4","course":"react-native-apps"},{"id":"key-extractor","term":"keyExtractor","definition":"A FlatList prop that returns a stable, unique key for each item, usually its id, so rows keep the right identity as items are added, removed or reordered.","lesson":"l-rn-2-4","course":"react-native-apps"},{"id":"file-based-routing","term":"File-based routing","definition":"Expo Router’s model where every file in src/app is a screen and its path is the URL, with _layout files wrapping sibling routes in a navigator.","lesson":"l-rn-3-1","course":"react-native-apps"},{"id":"stack-navigator","term":"Stack navigator","definition":"A navigator that pushes screens on top of each other with native animations and back gestures. Screens underneath stay mounted, keeping their state and scroll position.","lesson":"l-rn-3-1","course":"react-native-apps"},{"id":"route-group","term":"Route group","definition":"A folder whose name is in parentheses, like (tabs). It shares a layout among its routes without adding a segment to their URLs.","lesson":"l-rn-3-2","course":"react-native-apps"},{"id":"dynamic-route","term":"Dynamic route","definition":"A route file named with square brackets, like [id].tsx, that matches any single URL segment and exposes it as a string param through useLocalSearchParams.","lesson":"l-rn-3-2","course":"react-native-apps"},{"id":"protected-route","term":"Protected route","definition":"A route wrapped in Stack.Protected with a guard condition. While the guard is false the route is unavailable, and navigation to it, including from deep links, is redirected.","lesson":"l-rn-3-5","course":"react-native-apps"},{"id":"deep-link","term":"Deep link","definition":"A URL, such as trailhead://hikes/42, that opens the app directly on a specific screen. Expo Router maps it to a route file automatically.","lesson":"l-rn-3-5","course":"react-native-apps"},{"id":"async-storage","term":"AsyncStorage","definition":"An asynchronous, unencrypted key-value store for strings. It suits small preferences, not secrets or large collections of records you need to query.","lesson":"l-rn-4-2","course":"react-native-apps"},{"id":"secure-store","term":"SecureStore","definition":"The expo-secure-store module, which encrypts small values such as tokens using the iOS Keychain and the Android Keystore.","lesson":"l-rn-4-2","course":"react-native-apps"},{"id":"migration","term":"Database migration","definition":"A versioned step that upgrades an existing database schema, such as adding a column, run once per device in order, typically tracked with PRAGMA user_version in SQLite.","lesson":"l-rn-4-2","course":"react-native-apps"},{"id":"config-plugin","term":"Config plugin","definition":"An app.json entry that writes native configuration, such as iOS permission descriptions or Android manifest entries, when the app is built. Changes need a new build.","lesson":"l-rn-4-3","course":"react-native-apps"},{"id":"can-ask-again","term":"canAskAgain","definition":"A field in an Expo permission response. When false, the system won’t show the permission prompt again, so only the Settings app can change the user’s answer.","lesson":"l-rn-4-3","course":"react-native-apps"},{"id":"react-native-devtools","term":"React Native DevTools","definition":"The built-in debugger, opened with j in the Metro terminal, offering a console, breakpoints, a Components inspector and a Profiler for your running app.","lesson":"l-rn-5-1","course":"react-native-apps"},{"id":"jest-expo","term":"jest-expo","definition":"A Jest preset that configures transforms for React Native and mocks the native side of Expo modules, so tests run in Node without a device.","lesson":"l-rn-5-2","course":"react-native-apps"},{"id":"eas-build","term":"EAS Build","definition":"Expo’s cloud service that compiles and signs Android and iOS binaries from your project using profiles defined in eas.json, such as development, preview and production.","lesson":"l-rn-5-3","course":"react-native-apps"},{"id":"eas-update","term":"EAS Update","definition":"Expo’s service for publishing new JavaScript and assets to installed builds over the air, without a store release. It can’t deliver native code changes.","lesson":"l-rn-5-4","course":"react-native-apps"},{"id":"runtime-version","term":"Runtime version","definition":"A label shared by a build and its compatible updates. An update only applies to builds with the same runtime version, which protects old builds from JavaScript needing newer native code.","lesson":"l-rn-5-4","course":"react-native-apps"},{"id":"type-inference","term":"Type inference","definition":"Swift’s ability to work out a value’s type from the value you assign, so <code dir=\"ltr\">let cups = 3</code> is an <code dir=\"ltr\">Int</code> without an annotation. The type is fixed from then on.","lesson":"l-sw-1-1","course":"swift-essentials"},{"id":"decimal","term":"Decimal","definition":"A Foundation number type that stores base-10 digits exactly, which makes it the right choice for money. Unlike <code dir=\"ltr\">Double</code>, adding 0.1 ten times gives exactly 1.","lesson":"l-sw-1-1","course":"swift-essentials"},{"id":"optional","term":"Optional","definition":"A type such as <code dir=\"ltr\">Decimal?</code> that holds either a value or <code dir=\"ltr\">nil</code>. Swift won’t let you use it as a plain value until you unwrap it safely.","lesson":"l-sw-1-2","course":"swift-essentials"},{"id":"guard-let","term":"guard let","definition":"A statement that unwraps an optional or checks a condition and must exit the scope in its <code dir=\"ltr\">else</code> branch. After it, the unwrapped value is available for the rest of the function.","lesson":"l-sw-1-2","course":"swift-essentials"},{"id":"nil-coalescing","term":"Nil-coalescing operator (??)","definition":"The <code dir=\"ltr\">??</code> operator, which returns the value inside an optional or a default when the optional is <code dir=\"ltr\">nil</code>, as in <code dir=\"ltr\">note ?? &quot;No note&quot;</code>.","lesson":"l-sw-1-2","course":"swift-essentials"},{"id":"force-unwrap","term":"Force unwrap (!)","definition":"Writing <code dir=\"ltr\">!</code> after an optional to take its value without checking. If the optional is <code dir=\"ltr\">nil</code>, the app crashes immediately, so use it only when <code dir=\"ltr\">nil</code> would be a programmer error.","lesson":"l-sw-1-2","course":"swift-essentials"},{"id":"exhaustive-switch","term":"Exhaustive switch","definition":"Swift’s rule that a <code dir=\"ltr\">switch</code> must handle every possible value. Over enums it makes the compiler list every switch you need to update when you add a case.","lesson":"l-sw-1-3","course":"swift-essentials"},{"id":"closure","term":"Closure","definition":"A block of code without a name that can be stored, passed to functions like <code dir=\"ltr\">filter</code> or <code dir=\"ltr\">map</code>, and called later. It captures the variables it uses from its surrounding scope.","lesson":"l-sw-1-4","course":"swift-essentials"},{"id":"value-semantics","term":"Value semantics","definition":"The behaviour of structs and enums: assigning or passing a value makes an independent copy, so changing the copy never affects the original.","lesson":"l-sw-2-1","course":"swift-essentials"},{"id":"reference-semantics","term":"Reference semantics","definition":"The behaviour of classes and actors: assigning an instance copies a reference, so several names can point at the same object and see each other’s changes.","lesson":"l-sw-2-1","course":"swift-essentials"},{"id":"mutating","term":"mutating","definition":"A keyword on struct and enum methods that change the value’s own properties. Mutating methods can only be called on a <code dir=\"ltr\">var</code>, never on a <code dir=\"ltr\">let</code>.","lesson":"l-sw-2-1","course":"swift-essentials"},{"id":"retain-cycle","term":"Retain cycle","definition":"Two objects, or an object and a closure, holding strong references to each other so neither can be freed by ARC. Capturing <code dir=\"ltr\">[weak self]</code> in the closure breaks the cycle.","lesson":"l-sw-2-1","course":"swift-essentials"},{"id":"associated-value","term":"Associated value","definition":"Data attached to a specific enum case for each instance, such as <code dir=\"ltr\">case card(lastFour: String)</code>. You read it back with pattern matching like <code dir=\"ltr\">case .card(let lastFour)</code>.","lesson":"l-sw-2-2","course":"swift-essentials"},{"id":"raw-value","term":"Raw value","definition":"A fixed <code dir=\"ltr\">String</code> or number stored for each case of an enum declared like <code dir=\"ltr\">enum Category: String</code>. <code dir=\"ltr\">init(rawValue:)</code> converts back and returns <code dir=\"ltr\">nil</code> for unknown values.","lesson":"l-sw-2-2","course":"swift-essentials"},{"id":"protocol","term":"Protocol","definition":"A named set of requirements, such as properties and methods, that structs, classes and enums can adopt. Code written against the protocol works with every conforming type.","lesson":"l-sw-2-3","course":"swift-essentials"},{"id":"protocol-extension","term":"Protocol extension","definition":"An extension on a protocol that provides default implementations, so every conforming type gains that behaviour without writing it again.","lesson":"l-sw-2-3","course":"swift-essentials"},{"id":"typed-throws","term":"Typed throws","definition":"Swift 6 syntax such as <code dir=\"ltr\">throws(BudgetError)</code> that names the exact error type a function can throw, so callers can switch over the error exhaustively without a catch-all.","lesson":"l-sw-2-4","course":"swift-essentials"},{"id":"modifier","term":"View modifier","definition":"A method like <code dir=\"ltr\">.padding()</code> or <code dir=\"ltr\">.font(.headline)</code> that wraps a SwiftUI view in a new view with a change applied. Modifiers apply in order, so their order matters.","lesson":"l-sw-3-1","course":"swift-essentials"},{"id":"state","term":"@State","definition":"A SwiftUI property wrapper that stores a value the view owns outside the view struct, so it survives re-renders and triggers an update when it changes.","lesson":"l-sw-3-2","course":"swift-essentials"},{"id":"binding","term":"Binding","definition":"A two-way connection to a value owned elsewhere, written with a <code dir=\"ltr\">$</code> prefix. Controls such as <code dir=\"ltr\">Toggle</code> and <code dir=\"ltr\">TextField</code> take bindings so they can read and write the source of truth.","lesson":"l-sw-3-2","course":"swift-essentials"},{"id":"observable","term":"@Observable","definition":"A macro from the Observation framework that makes a class’s properties trackable, so SwiftUI re-renders only the views whose body read a property that changed.","lesson":"l-sw-3-2","course":"swift-essentials"},{"id":"navigation-stack","term":"NavigationStack","definition":"A SwiftUI container that pushes and pops screens. <code dir=\"ltr\">NavigationLink(value:)</code> selects a value and <code dir=\"ltr\">.navigationDestination(for:)</code> decides which screen shows it.","lesson":"l-sw-3-3","course":"swift-essentials"},{"id":"structured-concurrency","term":"Structured concurrency","definition":"Running async work as child tasks, with <code dir=\"ltr\">async let</code> or task groups, that must finish before their parent returns. Cancelling the parent cancels every child automatically.","lesson":"l-sw-4-1","course":"swift-essentials"},{"id":"actor","term":"Actor","definition":"A reference type that protects its mutable state by running one call at a time. Code outside the actor must use <code dir=\"ltr\">await</code> to reach it, which prevents data races.","lesson":"l-sw-4-1","course":"swift-essentials"},{"id":"sendable","term":"Sendable","definition":"A protocol marking types that are safe to pass between concurrency domains. Structs made of Sendable values qualify automatically; plain classes with mutable properties don’t.","lesson":"l-sw-4-1","course":"swift-essentials"},{"id":"main-actor","term":"@MainActor","definition":"An attribute that isolates code or a type to the main actor, the main thread where UI runs. New Xcode app projects make it the default isolation.","lesson":"l-sw-4-1","course":"swift-essentials"},{"id":"codable","term":"Codable","definition":"The combination of <code dir=\"ltr\">Decodable</code> and <code dir=\"ltr\">Encodable</code>, which lets the compiler generate code to convert your types to and from formats such as JSON.","lesson":"l-sw-4-2","course":"swift-essentials"},{"id":"swiftdata-model","term":"@Model (SwiftData)","definition":"A macro that turns a class into persisted SwiftData data. You read models with <code dir=\"ltr\">@Query</code> and insert or delete them through the model context, which autosaves.","lesson":"l-sw-4-3","course":"swift-essentials"},{"id":"swift-testing","term":"Swift Testing","definition":"Apple’s testing framework where tests are functions marked <code dir=\"ltr\">@Test</code>, checked with <code dir=\"ltr\">#expect</code> and <code dir=\"ltr\">#require</code>, and parameterized with <code dir=\"ltr\">arguments:</code>.","lesson":"l-sw-4-4","course":"swift-essentials"},{"id":"testflight","term":"TestFlight","definition":"Apple’s beta distribution service. Builds uploaded to App Store Connect reach up to 100 internal testers immediately and up to 10,000 external testers after Beta App Review.","lesson":"l-sw-4-4","course":"swift-essentials"},{"id":"container","term":"Container","definition":"An ordinary process that the Linux kernel isolates with namespaces and limits with cgroups, running from an image’s filesystem plus a private, disposable writable layer.","lesson":"l-dk-1-1","course":"docker-kubernetes"},{"id":"image","term":"Image","definition":"A read-only, layered filesystem snapshot plus metadata such as the default command and user. One image can be the template for any number of containers.","lesson":"l-dk-1-1","course":"docker-kubernetes"},{"id":"namespaces-cgroups","term":"Namespaces and cgroups","definition":"The two kernel features behind containers: namespaces control what a process can see (processes, network, mounts), and cgroups limit what it can use (CPU, memory, I/O).","lesson":"l-dk-1-1","course":"docker-kubernetes"},{"id":"build-context","term":"Build context","definition":"The set of files sent to the builder by <code dir=\"ltr\">docker build</code>, usually the directory you pass as the last argument, minus anything matched by <code dir=\"ltr\">.dockerignore</code>. <code dir=\"ltr\">COPY</code> can only read from it.","lesson":"l-dk-1-2","course":"docker-kubernetes"},{"id":"exec-form","term":"Exec form","definition":"Writing <code dir=\"ltr\">CMD</code> or <code dir=\"ltr\">ENTRYPOINT</code> as a JSON array, such as <code dir=\"ltr\">[&quot;node&quot;, &quot;dist/server.js&quot;]</code>, so the program runs as PID 1 without a shell and receives stop signals directly.","lesson":"l-dk-1-2","course":"docker-kubernetes"},{"id":"layer-cache","term":"Build cache","definition":"Stored results of earlier build steps. A step is reused when its instruction and inputs are unchanged; the first changed step and every step after it rebuild.","lesson":"l-dk-1-3","course":"docker-kubernetes"},{"id":"sigterm","term":"SIGTERM","definition":"The polite stop signal Docker and Kubernetes send to PID 1 before a forced SIGKILL. Apps should handle it by finishing in-flight work and exiting cleanly.","lesson":"l-dk-1-4","course":"docker-kubernetes"},{"id":"multi-stage-build","term":"Multi-stage build","definition":"A Dockerfile with several <code dir=\"ltr\">FROM</code> stages where only the final stage ships, so compilers, dev dependencies and sources stay in earlier stages and out of the production image.","lesson":"l-dk-2-1","course":"docker-kubernetes"},{"id":"dockerignore","term":".dockerignore","definition":"A file listing patterns to exclude from the build context, such as <code dir=\"ltr\">node_modules</code>, <code dir=\"ltr\">.git</code> and <code dir=\"ltr\">.env</code> files, which speeds up builds and keeps secrets out of images.","lesson":"l-dk-2-1","course":"docker-kubernetes"},{"id":"distroless","term":"Distroless image","definition":"A minimal base image containing only a language runtime and its libraries, with no shell or package manager, which shrinks the attack surface and the vulnerability report.","lesson":"l-dk-2-2","course":"docker-kubernetes"},{"id":"digest","term":"Image digest","definition":"A SHA-256 hash that identifies an image’s exact content. Unlike a tag, it can never point to different bytes, so pinning by digest guarantees every node runs the same image.","lesson":"l-dk-2-3","course":"docker-kubernetes"},{"id":"secret-mount","term":"Secret mount","definition":"A BuildKit feature, <code dir=\"ltr\">RUN --mount=type=secret</code>, that exposes a credential to one build step as a file or environment variable without writing it into any image layer.","lesson":"l-dk-2-4","course":"docker-kubernetes"},{"id":"compose-service","term":"Compose service","definition":"One component of a Compose application, such as <code dir=\"ltr\">api</code> or <code dir=\"ltr\">db</code>, defined in <code dir=\"ltr\">compose.yaml</code> and reachable from other services on the project network by its service name.","lesson":"l-dk-3-1","course":"docker-kubernetes"},{"id":"named-volume","term":"Named volume","definition":"Docker-managed storage that exists independently of containers, used for data such as database files that must survive container removal. <code dir=\"ltr\">docker compose down -v</code> deletes it.","lesson":"l-dk-3-2","course":"docker-kubernetes"},{"id":"healthcheck","term":"Healthcheck","definition":"A command Docker runs inside a container on a schedule to decide whether it is healthy. Compose can make other services wait for it with <code dir=\"ltr\">condition: service_healthy</code>.","lesson":"l-dk-3-3","course":"docker-kubernetes"},{"id":"compose-watch","term":"Compose watch","definition":"A development mode, started with <code dir=\"ltr\">docker compose up --watch</code>, that syncs edited files into running containers or rebuilds the image when files such as the lockfile change.","lesson":"l-dk-3-4","course":"docker-kubernetes"},{"id":"control-loop","term":"Control loop","definition":"The pattern behind Kubernetes controllers: continuously observe actual state, compare it with the desired state stored in the API, and act to close the difference.","lesson":"l-dk-4-1","course":"docker-kubernetes"},{"id":"pod","term":"Pod","definition":"The smallest unit Kubernetes schedules: one or more containers that share a network identity and volumes. Pods are disposable and replaced, not repaired.","lesson":"l-dk-4-2","course":"docker-kubernetes"},{"id":"deployment","term":"Deployment","definition":"A Kubernetes object that keeps a set of identical Pods running through ReplicaSets and replaces them gradually when the Pod template changes.","lesson":"l-dk-4-2","course":"docker-kubernetes"},{"id":"label-selector","term":"Label selector","definition":"A query over key-value labels that Kubernetes objects use to find each other, for example a Service selecting the Pods it sends traffic to.","lesson":"l-dk-4-2","course":"docker-kubernetes"},{"id":"service","term":"Service","definition":"A stable virtual IP and DNS name in front of a changing set of ready Pods chosen by a label selector. Types include ClusterIP, NodePort and LoadBalancer.","lesson":"l-dk-4-3","course":"docker-kubernetes"},{"id":"configmap-secret","term":"ConfigMap and Secret","definition":"Objects that hold configuration for Pods, injected as environment variables or files. Secrets are for credentials but are only base64-encoded, so access control matters.","lesson":"l-dk-4-4","course":"docker-kubernetes"},{"id":"namespace","term":"Namespace","definition":"A Kubernetes scope for object names, permissions and quotas, typically one per app or team. It does not block network traffic without a NetworkPolicy.","lesson":"l-dk-4-4","course":"docker-kubernetes"},{"id":"readiness-probe","term":"Readiness probe","definition":"A periodic check that decides whether a Pod should receive traffic. Failing removes the Pod from Service endpoints without restarting it, and it gates rolling updates.","lesson":"l-dk-5-1","course":"docker-kubernetes"},{"id":"liveness-probe","term":"Liveness probe","definition":"A periodic check that decides whether a container is stuck. Failing restarts the container, so it must not depend on databases or other services.","lesson":"l-dk-5-1","course":"docker-kubernetes"},{"id":"requests-limits","term":"Requests and limits","definition":"Per-container resource settings: requests are what the scheduler reserves, limits are enforced ceilings. Exceeding a CPU limit throttles; exceeding a memory limit triggers an OOM kill.","lesson":"l-dk-5-2","course":"docker-kubernetes"},{"id":"hpa","term":"HorizontalPodAutoscaler","definition":"A controller (<code dir=\"ltr\">autoscaling/v2</code>) that adjusts a workload’s replica count to keep a metric, such as average CPU utilization relative to requests, near a target.","lesson":"l-dk-5-2","course":"docker-kubernetes"},{"id":"rolling-update","term":"Rolling update","definition":"The default Deployment strategy: a new ReplicaSet scales up while the old one scales down, paced by <code dir=\"ltr\">maxSurge</code> and <code dir=\"ltr\">maxUnavailable</code> and gated by readiness.","lesson":"l-dk-5-3","course":"docker-kubernetes"},{"id":"helm-chart","term":"Helm chart","definition":"A package of templated Kubernetes manifests plus default values. <code dir=\"ltr\">helm upgrade --install</code> deploys it as a numbered release revision that <code dir=\"ltr\">helm rollback</code> can return to.","lesson":"l-dk-5-3","course":"docker-kubernetes"},{"id":"gateway-api","term":"Gateway API","definition":"The Kubernetes successor to Ingress for routing external traffic, split into GatewayClass, Gateway and HTTPRoute resources so platform and app teams each own their part.","lesson":"l-dk-5-4","course":"docker-kubernetes"},{"id":"region","term":"Region","definition":"A separate geographic area where AWS runs its own copy of most services, such as eu-west-1 in Ireland. Your data stays in the Region you choose unless you move or replicate it.","lesson":"l-aws-1-2","course":"aws-cloud-foundations"},{"id":"availability-zone","term":"Availability Zone (AZ)","definition":"One or more discrete data centres inside a Region, with independent power and networking. Running a workload in two or more AZs lets it survive the loss of one.","lesson":"l-aws-1-2","course":"aws-cloud-foundations"},{"id":"edge-location","term":"Edge location","definition":"One of many small AWS sites close to users, where Amazon CloudFront caches and serves content and Amazon Route 53 answers DNS queries.","lesson":"l-aws-1-2","course":"aws-cloud-foundations"},{"id":"shared-responsibility","term":"Shared responsibility model","definition":"The split of security duties in which AWS secures the cloud itself, such as hardware, facilities and service software, while customers secure their data, access, configuration and code.","lesson":"l-aws-1-3","course":"aws-cloud-foundations"},{"id":"root-user","term":"Root user","definition":"The identity created with an AWS account’s sign-up email. It can do anything, including closing the account, so it gets strong MFA, no access keys and only rare use.","lesson":"l-aws-1-3","course":"aws-cloud-foundations"},{"id":"aws-budgets","term":"AWS Budgets","definition":"A service that tracks actual and forecasted spend against an amount you set and sends alerts when thresholds are crossed. It warns you but does not stop spending on its own.","lesson":"l-aws-1-3","course":"aws-cloud-foundations"},{"id":"aws-cli","term":"AWS CLI v2","definition":"The command-line tool that calls the same AWS APIs as the console. Commands follow the pattern aws <service> <operation>, with global options such as --profile, --region, --query and --output.","lesson":"l-aws-1-4","course":"aws-cloud-foundations"},{"id":"get-caller-identity","term":"aws sts get-caller-identity","definition":"A CLI command that returns the account ID and ARN of the identity your credentials represent. It needs no permissions, so it is the standard check before destructive commands.","lesson":"l-aws-1-4","course":"aws-cloud-foundations"},{"id":"arn","term":"ARN (Amazon Resource Name)","definition":"The unique identifier for an AWS resource, in the form arn:partition:service:region:account-id:resource. Policies use ARNs to say exactly which resources a statement covers.","lesson":"l-aws-2-1","course":"aws-cloud-foundations"},{"id":"iam-role","term":"IAM role","definition":"An identity with permissions but no long-term credentials. A trusted principal assumes it and receives temporary credentials from AWS STS that expire after the session.","lesson":"l-aws-2-1","course":"aws-cloud-foundations"},{"id":"explicit-deny","term":"Explicit deny","definition":"A Deny statement in any applicable policy that matches a request. It always overrides any Allow, which makes it the basis of reliable guardrails.","lesson":"l-aws-2-1","course":"aws-cloud-foundations"},{"id":"least-privilege","term":"Least privilege","definition":"Granting an identity only the specific actions on the specific resources its job needs, and widening permissions only when a real AccessDenied shows something is missing.","lesson":"l-aws-2-2","course":"aws-cloud-foundations"},{"id":"condition-key","term":"Condition key","definition":"A value from the request context, such as aws:SecureTransport or aws:MultiFactorAuthPresent, that a policy’s Condition block tests to decide whether a statement applies.","lesson":"l-aws-2-2","course":"aws-cloud-foundations"},{"id":"identity-center","term":"IAM Identity Center","definition":"The AWS service where people sign in once, with MFA, and receive short-term access to the accounts and permission sets assigned to them, without IAM users or access keys.","lesson":"l-aws-2-3","course":"aws-cloud-foundations"},{"id":"trust-policy","term":"Trust policy","definition":"The resource-based policy on an IAM role that names which principals, such as lambda.amazonaws.com, may assume the role.","lesson":"l-aws-2-3","course":"aws-cloud-foundations"},{"id":"execution-role","term":"Lambda execution role","definition":"The IAM role a Lambda function assumes when it runs. The AWS SDKs pick up its temporary credentials automatically, so function code never contains access keys.","lesson":"l-aws-2-3","course":"aws-cloud-foundations"},{"id":"instance-type","term":"Instance type","definition":"The name that sets an EC2 instance’s hardware, such as m7g.large: family m, generation 7, Graviton processor g, and size large. Each size step roughly doubles resources.","lesson":"l-aws-3-1","course":"aws-cloud-foundations"},{"id":"spot-instance","term":"Spot Instance","definition":"Spare EC2 capacity offered at a deep discount that AWS can reclaim with a two-minute warning. It suits batch work that can restart, not databases or user-facing servers.","lesson":"l-aws-3-1","course":"aws-cloud-foundations"},{"id":"gb-second","term":"GB-second","definition":"Lambda’s unit of compute billing: the memory allocated in gigabytes multiplied by the run time in seconds, measured to the millisecond.","lesson":"l-aws-3-1","course":"aws-cloud-foundations"},{"id":"storage-class","term":"S3 storage class","definition":"A per-object setting, such as S3 Standard or S3 Glacier Deep Archive, that trades storage price against retrieval cost, retrieval time and minimum storage duration.","lesson":"l-aws-3-2","course":"aws-cloud-foundations"},{"id":"block-public-access","term":"S3 Block Public Access","definition":"Bucket- and account-level settings, on by default for new buckets, that override any policy or ACL that would make data public.","lesson":"l-aws-3-2","course":"aws-cloud-foundations"},{"id":"partition-key","term":"Partition key","definition":"The DynamoDB key attribute that decides where an item is stored. A Query must name one partition key value, which is why keys are designed around the questions you ask.","lesson":"l-aws-3-3","course":"aws-cloud-foundations"},{"id":"multi-az","term":"Multi-AZ deployment","definition":"An Amazon RDS setup with a synchronous standby database in a second Availability Zone that takes over automatically if the primary’s AZ fails.","lesson":"l-aws-3-3","course":"aws-cloud-foundations"},{"id":"public-subnet","term":"Public subnet","definition":"A VPC subnet whose route table sends 0.0.0.0/0 to an internet gateway. Private subnets have no such route, so the internet cannot start connections to them.","lesson":"l-aws-3-4","course":"aws-cloud-foundations"},{"id":"security-group","term":"Security group","definition":"A stateful allow-list firewall attached to a resource’s network interface. Replies to allowed traffic are permitted automatically, and rules can name another security group as the source.","lesson":"l-aws-3-4","course":"aws-cloud-foundations"},{"id":"network-acl","term":"Network ACL","definition":"A stateless list of numbered allow and deny rules applied at a subnet boundary. Because it is stateless, return traffic needs its own rules.","lesson":"l-aws-3-4","course":"aws-cloud-foundations"},{"id":"oac","term":"Origin access control (OAC)","definition":"A CloudFront feature that signs requests to a private S3 bucket so that a bucket policy can allow only that distribution to read, keeping the bucket closed to everyone else.","lesson":"l-aws-4-1","course":"aws-cloud-foundations"},{"id":"conditional-write","term":"Conditional write","definition":"A DynamoDB write with a ConditionExpression, such as attribute_not_exists(email), that succeeds only if the condition holds, checked atomically to prevent duplicates.","lesson":"l-aws-4-2","course":"aws-cloud-foundations"},{"id":"cloudwatch-alarm","term":"CloudWatch alarm","definition":"A rule that watches one metric against a threshold over a period and changes state when crossed, typically notifying an Amazon SNS topic that alerts people.","lesson":"l-aws-4-3","course":"aws-cloud-foundations"},{"id":"well-architected","term":"AWS Well-Architected Framework","definition":"AWS’s set of design questions grouped into six pillars: operational excellence, security, reliability, performance efficiency, cost optimization and sustainability.","lesson":"l-aws-4-3","course":"aws-cloud-foundations"},{"id":"supervised-learning","term":"Supervised learning","definition":"Learning a mapping from features to a known target using labelled examples, so the model can predict the target for new cases. Classification and regression are its two main forms.","lesson":"l-ml-1-1","course":"ml-crash-course"},{"id":"unsupervised-learning","term":"Unsupervised learning","definition":"Finding structure in data that has no target column, such as groups of similar rows (clustering) or a compact summary of many columns (dimensionality reduction).","lesson":"l-ml-1-1","course":"ml-crash-course"},{"id":"feature","term":"Feature","definition":"An input column the model uses to make a prediction, such as days since last order. Features must be known at the moment the prediction is made.","lesson":"l-ml-1-2","course":"ml-crash-course"},{"id":"target","term":"Target (label)","definition":"The column a supervised model learns to predict, such as whether a customer churned. In scikit-learn it is usually called y.","lesson":"l-ml-1-2","course":"ml-crash-course"},{"id":"train-test-split","term":"Train/test split","definition":"Holding back part of the labelled data, never used during training or model choice, to measure how well the final model works on unseen cases.","lesson":"l-ml-1-2","course":"ml-crash-course"},{"id":"estimator","term":"Estimator","definition":"Any scikit-learn object that learns from data with fit. Models, scalers and encoders are all estimators, and models add predict and score.","lesson":"l-ml-1-3","course":"ml-crash-course"},{"id":"hyperparameter","term":"Hyperparameter","definition":"A setting chosen before training that controls how a model learns, such as max_depth or C, as opposed to parameters the model learns during fit.","lesson":"l-ml-1-3","course":"ml-crash-course"},{"id":"overfitting","term":"Overfitting","definition":"When a model learns noise in its training data, so it scores far better on training rows than on new ones. The cure is less flexibility, more data or regularisation.","lesson":"l-ml-1-3","course":"ml-crash-course"},{"id":"baseline","term":"Baseline","definition":"A simple reference model, such as predicting the majority class or a one-line business rule, that any real model must clearly beat to be worth its cost.","lesson":"l-ml-1-4","course":"ml-crash-course"},{"id":"residual","term":"Residual","definition":"The difference between an actual value and the model’s prediction for it. Regression metrics such as MAE and RMSE summarise residuals.","lesson":"l-ml-2-1","course":"ml-crash-course"},{"id":"r-squared","term":"R² (coefficient of determination)","definition":"The share of the target’s variance a regression explains compared with always predicting the mean: 1 is perfect, 0 is no better than the mean, and it can be negative.","lesson":"l-ml-2-1","course":"ml-crash-course"},{"id":"gradient-descent","term":"Gradient descent","definition":"An optimisation method that repeatedly computes the slope of the loss for each parameter and moves the parameters a small step downhill, scaled by the learning rate.","lesson":"l-ml-2-2","course":"ml-crash-course"},{"id":"feature-scaling","term":"Feature scaling","definition":"Rescaling columns to comparable ranges, typically mean 0 and standard deviation 1 with StandardScaler, fitted on training data only. Needed for distance-based, gradient-trained and penalised models.","lesson":"l-ml-2-2","course":"ml-crash-course"},{"id":"regularisation","term":"Regularisation","definition":"Adding a penalty on coefficient size to the loss so the model prefers simpler fits. Ridge uses squared coefficients; Lasso uses absolute values and can set some to zero.","lesson":"l-ml-2-4","course":"ml-crash-course"},{"id":"logistic-regression","term":"Logistic regression","definition":"A linear classification model that passes a weighted sum of features through the sigmoid function to output a probability between 0 and 1.","lesson":"l-ml-3-1","course":"ml-crash-course"},{"id":"decision-tree","term":"Decision tree","definition":"A model that predicts by asking a sequence of yes/no questions about single features, chosen to make the resulting groups as pure as possible.","lesson":"l-ml-3-2","course":"ml-crash-course"},{"id":"gradient-boosting","term":"Gradient boosting","definition":"An ensemble that adds shallow trees one at a time, each fitted to the errors of the trees before it, with a learning rate controlling each tree’s contribution.","lesson":"l-ml-3-3","course":"ml-crash-course"},{"id":"confusion-matrix","term":"Confusion matrix","definition":"A table counting true negatives, false positives, false negatives and true positives. In scikit-learn, rows are the actual classes and columns the predicted ones.","lesson":"l-ml-3-4","course":"ml-crash-course"},{"id":"precision-recall","term":"Precision and recall","definition":"Precision is the share of flagged cases that are truly positive; recall is the share of truly positive cases that get flagged. Raising one usually lowers the other.","lesson":"l-ml-3-4","course":"ml-crash-course"},{"id":"roc-auc","term":"ROC AUC","definition":"A threshold-free measure of ranking quality: the probability that a randomly chosen positive gets a higher score than a randomly chosen negative. 0.5 is random, 1.0 perfect.","lesson":"l-ml-3-4","course":"ml-crash-course"},{"id":"decision-threshold","term":"Decision threshold","definition":"The probability cut-off above which a classifier labels a case positive. The default is 0.5, but it should be chosen from the costs of each kind of mistake.","lesson":"l-ml-3-5","course":"ml-crash-course"},{"id":"cross-validation","term":"Cross-validation","definition":"Splitting the training data into k folds and training k models, each validated on a different fold, to get a steadier performance estimate and a sense of its spread.","lesson":"l-ml-4-1","course":"ml-crash-course"},{"id":"pipeline","term":"Pipeline","definition":"A scikit-learn object that chains preprocessing steps and a final model into one estimator, so every step is fitted on training data only and applied identically later.","lesson":"l-ml-4-2","course":"ml-crash-course"},{"id":"one-hot-encoding","term":"One-hot encoding","definition":"Turning a categorical column into one 0/1 column per category so models can use it. OneHotEncoder with handle_unknown set to ignore copes with unseen categories.","lesson":"l-ml-4-2","course":"ml-crash-course"},{"id":"data-leakage","term":"Data leakage","definition":"Information available during training or evaluation that will not be available at prediction time, such as features recorded after the prediction date or preprocessing fitted on validation rows.","lesson":"l-ml-4-4","course":"ml-crash-course"},{"id":"k-means","term":"k-means","definition":"A clustering algorithm that alternates between assigning each point to its nearest centre and moving each centre to the mean of its points, for a chosen number of clusters k.","lesson":"l-ml-5-1","course":"ml-crash-course"},{"id":"pca","term":"PCA (principal component analysis)","definition":"A technique that finds new axes, each a weighted mix of the original columns, ordered by how much of the data’s variance they capture, so a few can summarise many.","lesson":"l-ml-5-1","course":"ml-crash-course"},{"id":"epoch","term":"Epoch","definition":"One complete pass of a neural network’s training algorithm over the whole training set. Training usually runs for many epochs while the loss falls.","lesson":"l-ml-5-2","course":"ml-crash-course"},{"id":"embedding","term":"Embedding","definition":"A fixed-length vector produced by a model to represent a text or other item, arranged so that items with similar meaning have nearby vectors.","lesson":"l-ml-5-3","course":"ml-crash-course"},{"id":"data-drift","term":"Data drift","definition":"A change over time in the distribution of a model’s inputs compared with its training data, which can make predictions less reliable and should be monitored.","lesson":"l-ml-5-4","course":"ml-crash-course"},{"id":"type","term":"Type","definition":"The kind of a value, which decides what you can do with it. JavaScript’s basic types include number, string, boolean, undefined and null; the typeof operator reports a value’s type.","lesson":"l-js-1-2","course":"javascript-fundamentals"},{"id":"variable","term":"Variable","definition":"A name that points at a value so a program can use it later. In JavaScript the value has a type, not the variable, so one variable can point at different types over time.","lesson":"l-js-1-2","course":"javascript-fundamentals"},{"id":"let-const","term":"let and const","definition":"The two modern ways to declare a variable. A const name can never be pointed at another value; a let name can be reassigned. Default to const and use let only when needed.","lesson":"l-js-1-2","course":"javascript-fundamentals"},{"id":"floating-point","term":"Floating-point number","definition":"A number stored in binary with limited precision, as all JavaScript numbers are. Many decimals cannot be stored exactly, so 0.1 + 0.2 gives 0.30000000000000004; store money as whole cents instead.","lesson":"l-js-1-3","course":"javascript-fundamentals"},{"id":"strict-equality","term":"Strict equality (===)","definition":"A comparison that is true only when both values have the same type and the same value. Unlike loose equality (==), it never converts types first, so “5” === 5 is false.","lesson":"l-js-1-3","course":"javascript-fundamentals"},{"id":"template-literal","term":"Template literal","definition":"A string written with backticks that can insert the value of any expression with ${ } and can span several lines, such as <code dir=\"ltr\">Total: ${total}</code>.","lesson":"l-js-1-4","course":"javascript-fundamentals"},{"id":"truthy-falsy","term":"Truthy and falsy","definition":"How JavaScript treats any value used as a condition. Eight values are falsy: false, 0, -0, 0n, the empty string, null, undefined and NaN. Every other value is truthy.","lesson":"l-js-2-1","course":"javascript-fundamentals"},{"id":"function","term":"Function","definition":"A named, reusable block of code. It declares parameters, receives arguments when called, runs its body and hands a result back with return; without return the result is undefined.","lesson":"l-js-2-3","course":"javascript-fundamentals"},{"id":"arrow-function","term":"Arrow function","definition":"A shorter function syntax, such as (cents) =&gt; cents / 100. With a single expression after the arrow, that expression is returned automatically; with curly braces, an explicit return is needed.","lesson":"l-js-2-3","course":"javascript-fundamentals"},{"id":"callback","term":"Callback","definition":"A function passed to another function, which decides when to call it. Array methods like map, event listeners and timers all take callbacks.","lesson":"l-js-2-3","course":"javascript-fundamentals"},{"id":"scope","term":"Scope","definition":"The region of code where a name can be used. let and const are scoped to the nearest block, and name lookups go outward from inner scopes to outer ones, never inward.","lesson":"l-js-2-4","course":"javascript-fundamentals"},{"id":"closure","term":"Closure","definition":"A function together with the variables from the scope where it was created. The function keeps access to them even after the outer function has returned, which gives it private, remembered state.","lesson":"l-js-2-4","course":"javascript-fundamentals"},{"id":"array","term":"Array","definition":"An ordered list of values, written in square brackets and indexed from 0. Arrays have methods such as map, filter, find and reduce for transforming and searching their items.","lesson":"l-js-3-1","course":"javascript-fundamentals"},{"id":"object","term":"Object","definition":"A value that groups named properties, such as { label: “Coffee”, amount: 450 }. Properties are read with dot notation, or with brackets when the name is in a variable.","lesson":"l-js-3-2","course":"javascript-fundamentals"},{"id":"reference","term":"Reference","definition":"What a variable holds for an object or array: a pointer to it, not a copy. Assigning or passing it shares the same object, so a change through one name is visible through all.","lesson":"l-js-3-2","course":"javascript-fundamentals"},{"id":"spread","term":"Spread syntax","definition":"Three dots that copy the items of an array or the properties of an object into a new one, as in […list, item] or { …expense, amount: 500 }. The copy is shallow.","lesson":"l-js-3-2","course":"javascript-fundamentals"},{"id":"destructuring","term":"Destructuring","definition":"Syntax that unpacks properties or array items into variables in one step, such as const { label, amount } = expense. It supports default values and works in function parameters.","lesson":"l-js-3-2","course":"javascript-fundamentals"},{"id":"reduce","term":"reduce","definition":"An array method that walks the items while carrying an accumulator, returning the final accumulator. Used for totals and grouping; always pass an initial value as its second argument.","lesson":"l-js-3-3","course":"javascript-fundamentals"},{"id":"optional-chaining","term":"Optional chaining (?.)","definition":"An operator that reads a property only if the value on its left is not null or undefined, returning undefined instead of throwing a TypeError, as in expense.receipt?.url.","lesson":"l-js-3-4","course":"javascript-fundamentals"},{"id":"nullish-coalescing","term":"Nullish coalescing (??)","definition":"An operator that returns its right side only when the left side is null or undefined. Unlike ||, it keeps real values such as 0 and the empty string.","lesson":"l-js-3-4","course":"javascript-fundamentals"},{"id":"dom","term":"DOM","definition":"The Document Object Model: the browser’s live tree of objects representing the page. Changing these objects with JavaScript, for example an element’s textContent, updates what the user sees immediately.","lesson":"l-js-4-1","course":"javascript-fundamentals"},{"id":"event-delegation","term":"Event delegation","definition":"Handling events for many child elements with one listener on their container. Events bubble up to the container, and event.target.closest() finds which child was involved, including children added later.","lesson":"l-js-4-2","course":"javascript-fundamentals"},{"id":"json","term":"JSON","definition":"JavaScript Object Notation, a text format for data. JSON.stringify turns values into JSON text and JSON.parse turns it back; it holds strings, numbers, booleans, null, arrays and plain objects.","lesson":"l-js-4-4","course":"javascript-fundamentals"},{"id":"promise","term":"Promise","definition":"An object standing for a result that is not ready yet. It starts pending and settles once, either fulfilled with a value or rejected with an error; then and catch attach what happens next.","lesson":"l-js-4-5","course":"javascript-fundamentals"},{"id":"async-await","term":"async/await","definition":"Syntax for working with promises. Inside an async function, await pauses that function until a promise settles and gives its value, so asynchronous code reads top to bottom and errors are caught with try/catch.","lesson":"l-js-4-5","course":"javascript-fundamentals"},{"id":"event-loop","term":"Event loop","definition":"The mechanism that lets single-threaded JavaScript wait without freezing. When the call stack is empty, it runs all queued promise callbacks (microtasks), then the next task such as a timer or click.","lesson":"l-js-4-5","course":"javascript-fundamentals"},{"id":"module","term":"Module","definition":"A JavaScript file with its own scope that shares values with other files only through export and import. In the browser, the entry module is loaded with script type=“module”.","lesson":"l-js-5-1","course":"javascript-fundamentals"},{"id":"class","term":"Class","definition":"A blueprint for objects that bundles data with the methods that act on it. new runs the constructor and returns an instance; private fields marked with # are hidden from outside code.","lesson":"l-js-5-2","course":"javascript-fundamentals"},{"id":"stack-trace","term":"Stack trace","definition":"The list of function calls, with file names and line numbers, that led to an error, most recent first. It shows where the error happened and how the program got there.","lesson":"l-js-5-3","course":"javascript-fundamentals"},{"id":"breakpoint","term":"Breakpoint","definition":"A marker in DevTools, or a debugger statement in code, that pauses execution on a line so you can inspect every variable, the call stack, and step through the code one line at a time.","lesson":"l-js-5-3","course":"javascript-fundamentals"},{"id":"version-control","term":"Version control","definition":"A system that records snapshots of a project over time, so you can see what changed, when and why, return to earlier versions, and combine work from several people.","lesson":"l-git-1-1","course":"git-github"},{"id":"repository","term":"Repository","definition":"A project’s complete history and settings, stored in the hidden .git folder; it holds every commit, branch and tag, and is created with git init or git clone.","lesson":"l-git-1-2","course":"git-github"},{"id":"commit","term":"Commit","definition":"A recorded snapshot of every tracked file, with an author, date, message and a pointer to its parent commit. Its ID is a hash of all of that, so it never changes.","lesson":"l-git-1-1","course":"git-github"},{"id":"working-tree","term":"Working tree","definition":"The project files on disk that you open and edit. Git compares them with the index and the last commit to report what has changed.","lesson":"l-git-1-3","course":"git-github"},{"id":"index","term":"Index (staging area)","definition":"The next commit being assembled. git add copies a file’s current content into it, git commit turns it into a commit, and git restore --staged takes content back out.","lesson":"l-git-1-3","course":"git-github"},{"id":"untracked-file","term":"Untracked file","definition":"A file in the working tree that Git has never recorded and that isn’t staged. It stays out of commits until you git add it, and .gitignore can hide it.","lesson":"l-git-1-2","course":"git-github"},{"id":"dag","term":"Commit graph (DAG)","definition":"Git history as a directed acyclic graph: each commit points to its parent or parents, and following those links backwards from any commit gives its history.","lesson":"l-git-1-4","course":"git-github"},{"id":"merge-commit","term":"Merge commit","definition":"A commit with two parents, created when Git combines two branches that have both moved on. Its snapshot contains the work from both lines of history.","lesson":"l-git-1-4","course":"git-github"},{"id":"branch","term":"Branch","definition":"A named, movable pointer to one commit. Committing while on a branch moves it forward to the new commit; creating one copies no files.","lesson":"l-git-2-1","course":"git-github"},{"id":"head","term":"HEAD","definition":"Git’s pointer to where you are. It usually names the current branch, which names a commit; HEAD~1 means the commit before the one you’re on.","lesson":"l-git-2-1","course":"git-github"},{"id":"detached-head","term":"Detached HEAD","definition":"The state where HEAD points straight at a commit instead of a branch. New commits made there belong to no branch until you create one with git switch -c.","lesson":"l-git-2-1","course":"git-github"},{"id":"fast-forward","term":"Fast-forward","definition":"A merge where the current branch hasn’t moved since the other branch started, so Git simply slides the pointer forward and creates no merge commit.","lesson":"l-git-2-2","course":"git-github"},{"id":"merge-base","term":"Merge base","definition":"The most recent commit two branches share. Git compares each branch tip with it during a three-way merge to decide which changes to take.","lesson":"l-git-2-2","course":"git-github"},{"id":"merge-conflict","term":"Merge conflict","definition":"What happens when both branches changed the same lines since their merge base. Git writes both versions between markers and waits for you to edit, git add and continue.","lesson":"l-git-2-3","course":"git-github"},{"id":"rebase","term":"Rebase","definition":"Replaying a branch’s commits on top of another commit, producing new commits with new IDs and a linear history. Safe only for commits nobody else has built on.","lesson":"l-git-2-4","course":"git-github"},{"id":"force-with-lease","term":"git push --force-with-lease","definition":"A force-push that only overwrites the remote branch if it still points where you last saw it, so you won’t silently erase commits someone else pushed since your last fetch.","lesson":"l-git-2-4","course":"git-github"},{"id":"remote","term":"Remote","definition":"A named URL for another copy of the repository, usually on GitHub. origin is the conventional name for the one you cloned from or push to.","lesson":"l-git-3-1","course":"git-github"},{"id":"remote-tracking-branch","term":"Remote-tracking branch","definition":"A local, read-only record such as origin/main of where a branch was on a remote at your last fetch, pull or push. It moves only when you talk to the remote.","lesson":"l-git-3-1","course":"git-github"},{"id":"upstream-branch","term":"Upstream branch","definition":"The remote branch a local branch tracks, set with git push -u. It lets plain git push and git pull work and lets git status report ahead and behind counts.","lesson":"l-git-3-1","course":"git-github"},{"id":"ssh-key","term":"SSH key pair","definition":"Two linked keys used to prove who you are to GitHub: the private key stays on your machine, and the .pub public key is added to your GitHub account.","lesson":"l-git-3-2","course":"git-github"},{"id":"pull-request","term":"Pull request","definition":"A GitHub proposal to merge one branch into another, where reviewers comment, automated checks run, and the change is finally merged. New pushes to the branch update it.","lesson":"l-git-3-3","course":"git-github"},{"id":"fork","term":"Fork","definition":"Your own copy of someone else’s repository on GitHub. You push branches to it and open pull requests back to the original, conventionally called upstream.","lesson":"l-git-3-4","course":"git-github"},{"id":"revert","term":"git revert","definition":"A command that creates a new commit applying the exact opposite of an earlier commit. It undoes changes without rewriting history, so it’s safe on shared branches.","lesson":"l-git-4-1","course":"git-github"},{"id":"reflog","term":"Reflog","definition":"A local log of every position HEAD has had, such as commits, resets, rebases and switches. It lets you find and restore commits that no branch points to any more.","lesson":"l-git-4-1","course":"git-github"},{"id":"stash","term":"Stash","definition":"A place to park uncommitted changes and get a clean working tree. git stash push saves them, git stash pop brings them back; add -u to include untracked files.","lesson":"l-git-4-2","course":"git-github"},{"id":"gitignore","term":".gitignore","definition":"A file listing patterns of untracked files Git should never track, such as node_modules/, build output and .env. It doesn’t affect files that are already tracked.","lesson":"l-git-4-2","course":"git-github"},{"id":"conventional-commits","term":"Conventional Commits","definition":"A commit message format, type(optional scope): description, using types like feat, fix and docs, so tools can generate changelogs and semantic version numbers.","lesson":"l-git-4-3","course":"git-github"},{"id":"annotated-tag","term":"Annotated tag","definition":"A permanent, named marker on a commit that also stores the tagger, date and a message. Created with git tag -a, it’s the usual way to mark a release.","lesson":"l-git-4-3","course":"git-github"},{"id":"github-actions-workflow","term":"GitHub Actions workflow","definition":"A YAML file in .github/workflows/ that runs jobs on GitHub’s machines when events like pull_request happen. Each job reports a status check on the pull request.","lesson":"l-git-4-4","course":"git-github"},{"id":"ruleset","term":"Ruleset","definition":"A named set of GitHub rules for branches or tags, such as requiring a pull request, requiring status checks to pass and blocking force pushes on main.","lesson":"l-git-4-4","course":"git-github"},{"id":"situational-disability","term":"Situational disability","definition":"A temporary limitation caused by circumstances rather than a person’s body, such as glare on a screen, a noisy room or holding a baby in one arm. Designs that serve permanent disabilities usually help here too.","lesson":"l-a11y-1-1","course":"web-accessibility"},{"id":"assistive-technology","term":"Assistive technology (AT)","definition":"Software or hardware people use to operate a computer in a way that suits them, such as screen readers, screen magnifiers, switch devices and voice control. It reads the page through the accessibility tree.","lesson":"l-a11y-1-2","course":"web-accessibility"},{"id":"accessibility-tree","term":"Accessibility tree","definition":"A simplified tree the browser builds from the DOM and CSS, where each node has a role, a name and any states or value. Assistive technologies read this tree, not the pixels on screen.","lesson":"l-a11y-1-2","course":"web-accessibility"},{"id":"screen-reader","term":"Screen reader","definition":"Assistive software that turns the accessibility tree into speech or braille and lets users navigate by headings, landmarks, links and form fields. Common ones are JAWS, NVDA, VoiceOver and TalkBack.","lesson":"l-a11y-1-2","course":"web-accessibility"},{"id":"visually-hidden","term":"Visually hidden text","definition":"Text clipped to a 1px box with CSS so it stays in the accessibility tree but takes no visible space. Unlike display: none, screen readers still announce it.","lesson":"l-a11y-1-2","course":"web-accessibility"},{"id":"wcag","term":"WCAG","definition":"The Web Content Accessibility Guidelines, the W3C standard for accessible web content. Version 2.2, published in October 2023, organises testable success criteria under four principles and three conformance levels.","lesson":"l-a11y-1-3","course":"web-accessibility"},{"id":"pour","term":"POUR","definition":"The four principles at the top of WCAG: content must be Perceivable, Operable, Understandable and Robust. Every guideline and success criterion sits under one of them.","lesson":"l-a11y-1-3","course":"web-accessibility"},{"id":"conformance-level","term":"Conformance level (A, AA, AAA)","definition":"The level at which a success criterion sits and at which conformance is claimed. Level AA, which includes all A criteria, is the target required by most laws and policies.","lesson":"l-a11y-1-3","course":"web-accessibility"},{"id":"european-accessibility-act","term":"European Accessibility Act (EAA)","definition":"EU Directive 2019/882, applying since 28 June 2025, which requires covered products and services such as e-commerce, banking and ticketing to be accessible. Its reference standard, EN 301 549, maps to WCAG 2.1 AA, with a WCAG 2.2 update published in 2026.","lesson":"l-a11y-1-3","course":"web-accessibility"},{"id":"landmark","term":"Landmark","definition":"A region of a page with a role that screen reader users can list and jump to, such as banner, navigation, main and contentinfo. HTML elements like header, nav, main and footer create them.","lesson":"l-a11y-2-1","course":"web-accessibility"},{"id":"autocomplete-token","term":"Autocomplete token","definition":"A value of the HTML autocomplete attribute, such as name, email or cc-number, that declares a field’s purpose so browsers can fill it in. It satisfies WCAG 1.3.5 Identify Input Purpose.","lesson":"l-a11y-2-3","course":"web-accessibility"},{"id":"alt-text","term":"Alt text","definition":"The text alternative of an image, given in its alt attribute. It should convey the image’s purpose in context: what it shows if informative, or what it does if it is a link or button.","lesson":"l-a11y-2-4","course":"web-accessibility"},{"id":"decorative-image","term":"Decorative image","definition":"An image that adds no information in its context, such as a divider or an ambient photo. It gets an empty alt attribute (alt=“”) so screen readers skip it instead of reading its file name.","lesson":"l-a11y-2-4","course":"web-accessibility"},{"id":"focus-order","term":"Focus order","definition":"The sequence in which Tab moves through focusable elements. It follows the DOM order, so markup should match the visual reading order, and positive tabindex values should never be used.","lesson":"l-a11y-3-1","course":"web-accessibility"},{"id":"focus-visible","term":":focus-visible","definition":"A CSS pseudo-class that matches when the browser decides focus should be shown, such as during keyboard navigation. Styling it with a strong outline gives keyboard users a clear indicator without showing rings on mouse clicks.","lesson":"l-a11y-3-1","course":"web-accessibility"},{"id":"skip-link","term":"Skip link","definition":"A link at the very start of a page, usually hidden until focused, that jumps to the main content. It lets keyboard users bypass repeated navigation, meeting WCAG 2.4.1 Bypass Blocks.","lesson":"l-a11y-3-1","course":"web-accessibility"},{"id":"modal-dialog","term":"Modal dialog","definition":"A window that blocks the rest of the page until closed. The native dialog element opened with showModal() moves focus inside, makes the page inert, closes on Escape and restores focus afterwards.","lesson":"l-a11y-3-2","course":"web-accessibility"},{"id":"inert","term":"inert","definition":"An HTML attribute that removes an element and its descendants from focus, pointer interaction and the accessibility tree. It suits closed drawers, off-screen panels and content behind a custom overlay.","lesson":"l-a11y-3-2","course":"web-accessibility"},{"id":"aria","term":"ARIA","definition":"Accessible Rich Internet Applications, a set of attributes for roles, states and properties that change what the accessibility tree exposes. It never adds behaviour, so native HTML is preferred whenever it exists.","lesson":"l-a11y-3-3","course":"web-accessibility"},{"id":"live-region","term":"Live region","definition":"An element whose content changes are announced by screen readers without moving focus. role=“status” is polite and role=“alert” is assertive; the region must exist before its text changes.","lesson":"l-a11y-3-3","course":"web-accessibility"},{"id":"apg","term":"ARIA Authoring Practices Guide (APG)","definition":"A W3C guide describing common widget patterns such as tabs, disclosure, dialog and menu button, with the roles, states and keyboard interaction users expect from each.","lesson":"l-a11y-3-4","course":"web-accessibility"},{"id":"roving-tabindex","term":"Roving tabindex","definition":"A technique for composite widgets where only the active item has tabindex=“0” and the rest have “-1”. The widget is one Tab stop, and arrow keys move focus and the 0 between items.","lesson":"l-a11y-3-4","course":"web-accessibility"},{"id":"contrast-ratio","term":"Contrast ratio","definition":"WCAG’s measure of the difference in relative luminance between two colours, from 1:1 to 21:1. Level AA needs 4.5:1 for normal text and 3:1 for large text and essential non-text elements.","lesson":"l-a11y-4-1","course":"web-accessibility"},{"id":"reflow","term":"Reflow","definition":"WCAG 1.4.10: content must fit a 320 CSS pixel wide viewport without horizontal scrolling, the width of a 1280px window at 400% zoom. Data tables and maps are exempt.","lesson":"l-a11y-4-2","course":"web-accessibility"},{"id":"prefers-reduced-motion","term":"prefers-reduced-motion","definition":"A CSS media feature that reflects the user’s operating system setting for less motion. Use it to replace large animations with fades or remove them for people with vestibular disorders.","lesson":"l-a11y-4-2","course":"web-accessibility"},{"id":"accessible-name","term":"Accessible name","definition":"The text that identifies an element to assistive technology. Browsers compute it from aria-labelledby, then aria-label, then native labelling such as label or alt, then content, then title.","lesson":"l-a11y-4-3","course":"web-accessibility"},{"id":"label-in-name","term":"Label in Name","definition":"WCAG 2.5.3: when a control has visible text, its accessible name must contain that text, ideally at the start, so voice control users can activate it by saying what they see.","lesson":"l-a11y-4-3","course":"web-accessibility"},{"id":"logical-properties","term":"Logical properties","definition":"CSS properties such as margin-inline-start and padding-inline-end that follow the writing direction instead of physical sides, so layouts mirror automatically for right-to-left languages like Arabic.","lesson":"l-a11y-4-4","course":"web-accessibility"},{"id":"axe-core","term":"axe-core","definition":"An open-source accessibility rules engine by Deque that runs in the page and reports violations with WCAG references. It powers axe DevTools, Lighthouse’s accessibility audit and test integrations such as @axe-core/playwright.","lesson":"l-a11y-5-1","course":"web-accessibility"},{"id":"browse-mode","term":"Browse mode","definition":"The NVDA mode in which a virtual cursor reads the page and single letters jump between elements, such as H for headings. Focus mode instead sends keys to the focused control for typing.","lesson":"l-a11y-5-2","course":"web-accessibility"},{"id":"testing-trophy","term":"Testing trophy","definition":"A model of a test suite with four layers: static analysis, unit, integration and end-to-end tests. It is widest at integration, which usually gives the most confidence for its cost.","lesson":"l-tj-1-1","course":"testing-javascript"},{"id":"unit-test","term":"Unit test","definition":"A test that checks one function or module in isolation, usually in milliseconds. Ideal for pure logic with many edge cases, such as rounding money.","lesson":"l-tj-1-1","course":"testing-javascript"},{"id":"integration-test","term":"Integration test","definition":"A test that checks several units working together, such as a form component using the real parsing code with a faked network. It catches wiring bugs unit tests miss.","lesson":"l-tj-1-1","course":"testing-javascript"},{"id":"end-to-end-test","term":"End-to-end test","definition":"A test that drives the real application in a real browser, through the UI, API and data layer. The most realistic and the most expensive kind of test.","lesson":"l-tj-4-1","course":"testing-javascript"},{"id":"watch-mode","term":"Watch mode","definition":"Vitest’s default locally: after a run it waits, and when you save a file it reruns only the tests affected by that change, using Vite’s module graph.","lesson":"l-tj-1-2","course":"testing-javascript"},{"id":"aaa","term":"Arrange, Act, Assert","definition":"A three-part shape for tests: build the inputs, perform the one action under test, then state what should now be true. It makes tests easy to scan.","lesson":"l-tj-1-3","course":"testing-javascript"},{"id":"assertion","term":"Assertion","definition":"A check inside a test that throws when a value is not what you expected, such as <code dir=\"ltr\">expect(total).toBe(1000)</code>. A test fails when an assertion throws.","lesson":"l-tj-1-3","course":"testing-javascript"},{"id":"implementation-detail","term":"Implementation detail","definition":"How code produces its result (private helpers, internal state, call order), as opposed to the behaviour callers observe. Tests coupled to it break on harmless refactors.","lesson":"l-tj-2-1","course":"testing-javascript"},{"id":"invariant","term":"Invariant","definition":"A property that holds for every valid input, such as “the shares add up to the total”. Asserting an invariant across several inputs catches whole families of bugs.","lesson":"l-tj-2-1","course":"testing-javascript"},{"id":"boundary-value","term":"Boundary value analysis","definition":"Testing inputs just below, on and just above each limit in a rule, such as 0 and 0.01 or two and three decimals, because bugs cluster at those edges.","lesson":"l-tj-2-2","course":"testing-javascript"},{"id":"table-driven-test","term":"Table-driven test","definition":"A test written once and run for each row of a table of inputs and expected outputs. In Vitest, <code dir=\"ltr\">test.each</code> creates one named test per row.","lesson":"l-tj-2-2","course":"testing-javascript"},{"id":"stub","term":"Stub","definition":"A stand-in collaborator that returns canned answers so a test can control a dependency, for example an API object whose <code dir=\"ltr\">post</code> method always resolves with an id.","lesson":"l-tj-2-3","course":"testing-javascript"},{"id":"test-double","term":"Test double","definition":"Any stand-in for a real collaborator in a test: stubs return canned answers, spies record calls, mocks are spies you assert on, and fakes are simpler working versions.","lesson":"l-tj-2-4","course":"testing-javascript"},{"id":"spy","term":"Spy","definition":"A function or method wrapper that records how it was called. <code dir=\"ltr\">vi.spyOn(object, method)</code> watches a real method and can also override it until restored.","lesson":"l-tj-2-4","course":"testing-javascript"},{"id":"fake-timers","term":"Fake timers","definition":"A test clock that replaces <code dir=\"ltr\">setTimeout</code>, <code dir=\"ltr\">setInterval</code> and <code dir=\"ltr\">Date</code>, so tests can skip ahead with calls like <code dir=\"ltr\">vi.advanceTimersByTime(2000)</code> instead of waiting in real time.","lesson":"l-tj-2-4","course":"testing-javascript"},{"id":"accessible-name","term":"Accessible name","definition":"The name assistive technology announces for an element, computed from <code dir=\"ltr\">aria-labelledby</code>, <code dir=\"ltr\">aria-label</code>, an associated label or its text. Role queries match on it.","lesson":"l-tj-3-1","course":"testing-javascript"},{"id":"query-priority","term":"Query priority","definition":"Testing Library’s recommended order for finding elements: by role, label, placeholder, text or display value first; then alt text and title; test ids last.","lesson":"l-tj-3-1","course":"testing-javascript"},{"id":"user-event","term":"user-event","definition":"A Testing Library package that simulates whole user interactions, including pointer, focus and keyboard events, instead of dispatching single events like <code dir=\"ltr\">fireEvent</code> does.","lesson":"l-tj-3-2","course":"testing-javascript"},{"id":"findby","term":"findBy query","definition":"An asynchronous Testing Library query that retries until a matching element appears, resolving with it or rejecting after a timeout (one second by default).","lesson":"l-tj-3-3","course":"testing-javascript"},{"id":"msw","term":"MSW (Mock Service Worker)","definition":"A library that intercepts network requests in Node and the browser and answers them with handlers you define, so your real fetch and data code still run in tests.","lesson":"l-tj-3-4","course":"testing-javascript"},{"id":"locator","term":"Locator","definition":"In Playwright, a lazy, strict description of how to find an element, such as <code dir=\"ltr\">page.getByRole('button', { name: 'Save' })</code>. It is resolved again on every action.","lesson":"l-tj-4-1","course":"testing-javascript"},{"id":"web-first-assertion","term":"Web-first assertion","definition":"A Playwright assertion on a locator, such as <code dir=\"ltr\">toHaveText</code>, that re-checks the page until it passes or times out, instead of reading a value once.","lesson":"l-tj-4-1","course":"testing-javascript"},{"id":"fixture","term":"Fixture","definition":"In Playwright, a value a test requests by name, like <code dir=\"ltr\">page</code> or a custom <code dir=\"ltr\">group</code>, with setup before <code dir=\"ltr\">use()</code> and teardown after it, created only for tests that need it.","lesson":"l-tj-4-2","course":"testing-javascript"},{"id":"trace","term":"Trace","definition":"A Playwright recording of a test run with every action, DOM snapshots before and after it, console output and network calls, opened in the trace viewer.","lesson":"l-tj-4-3","course":"testing-javascript"},{"id":"flaky-test","term":"Flaky test","definition":"A test that sometimes passes and sometimes fails without any code change, usually because of timing, shared data or uncontrolled time. It teaches teams to ignore failures.","lesson":"l-tj-4-3","course":"testing-javascript"},{"id":"tdd","term":"Test-driven development","definition":"Writing one failing test, making it pass with the simplest code, then refactoring with the tests green, in short repeated cycles known as red, green, refactor.","lesson":"l-tj-5-1","course":"testing-javascript"},{"id":"code-coverage","term":"Code coverage","definition":"The share of statements, branches, functions and lines that ran during the tests. It shows untested code but not whether the executed code was actually checked.","lesson":"l-tj-5-2","course":"testing-javascript"},{"id":"mutation-testing","term":"Mutation testing","definition":"Grading a test suite by making small deliberate bugs (mutants) in the code and rerunning the tests; killed mutants were caught, survived mutants reveal weak tests.","lesson":"l-tj-5-3","course":"testing-javascript"},{"id":"equivalent-mutant","term":"Equivalent mutant","definition":"A mutant whose change does not alter any behaviour a caller could observe, so no reasonable test can kill it. It should be ignored, not chased.","lesson":"l-tj-5-3","course":"testing-javascript"},{"id":"required-check","term":"Required status check","definition":"A CI job that must pass before a pull request can merge into a protected branch, turning the test pipeline from a suggestion into a gate.","lesson":"l-tj-5-4","course":"testing-javascript"}]