<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Code Knowledgebase</title><description>Published articles from the code knowledgebase.</description><link>https://bothe.at/</link><item><title>A short history of Git</title><link>https://bothe.at/code/version-control-systems/git/fundamentals/a-short-history-of-git/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/git/fundamentals/a-short-history-of-git/</guid><description>Git began in 2005 when the Linux kernel lost BitKeeper and needed a new distributed version control system fast. This overview follows Linus Torvalds&apos; design goals, Junio Hamano&apos;s long stewardship, GitHub&apos;s rise, and the defaults and hash algorithms teams use today.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>git</category><category>version-control</category><category>history</category></item><item><title>A short history of JavaScript</title><link>https://bothe.at/code/languages/javascript-core/history-and-standards/a-short-history-of-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/history-and-standards/a-short-history-of-javascript/</guid><description>JavaScript began as a ten-day prototype in a browser and became the shared runtime of the web, servers, and tools. This overview follows that arc from Netscape in 1995 through ECMAScript, Node.js, transpilers, and today&apos;s yearly language releases.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>history</category><category>ecmascript</category></item><item><title>A short history of MongoDB</title><link>https://bothe.at/code/databases/mongodb/fundamentals/a-short-history-of-mongodb/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/fundamentals/a-short-history-of-mongodb/</guid><description>Document databases grew out of web-scale workloads that relational schemas struggled to keep up with. This overview situates MongoDB in the NoSQL landscape and follows the product from 10gen through WiredTiger, Atlas, transactions, and today&apos;s search and embedding features.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>nosql</category><category>history</category></item><item><title>A short history of Unix and Linux</title><link>https://bothe.at/code/operating-systems/linux/fundamentals/a-short-history-of-unix-and-linux/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/fundamentals/a-short-history-of-unix-and-linux/</guid><description>Unix began as a research operating system at Bell Labs and grew into a family of standards and kernels. This overview traces BSD and GNU, the 1991 Linux kernel, the GPL, how distributions bundle the stack, and where Linux runs today—from servers to Android.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>unix</category><category>history</category><category>debian</category></item><item><title>Accepting payments with Stripe Checkout</title><link>https://bothe.at/code/commercial-integrations/stripe/payments/accepting-payments-with-stripe-checkout/</link><guid isPermaLink="true">https://bothe.at/code/commercial-integrations/stripe/payments/accepting-payments-with-stripe-checkout/</guid><description>Stripe Checkout hosts the payment UI on Stripe&apos;s domain: your server creates a Session, the browser redirects, and webhooks confirm the sale. This runbook wires Checkout into Express for one-time Prices with success and cancel pages.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>stripe</category><category>payments</category><category>javascript</category><category>nodejs</category><category>express</category></item><item><title>Advanced Git</title><link>https://bothe.at/code/version-control-systems/git/branching-and-history/advanced-git/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/git/branching-and-history/advanced-git/</guid><description>Revision syntax, log search, blame, reflog, history filtering, bisect, worktrees, hooks, and rerere—for when everyday commands are not enough to find a commit, recover a lost branch, or automate repository policy.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>git</category><category>version-control</category></item><item><title>Application lifecycle hooks in NestJS</title><link>https://bothe.at/code/server-development/nestjs/building-applications/application-lifecycle-hooks-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/building-applications/application-lifecycle-hooks-in-nestjs/</guid><description>NestJS calls methods on your providers at fixed points while the application starts and stops. This chapter lists the hooks and their order, shows where startup work and cleanup belong, and explains why shutdown hooks have to be switched on before a container stop is handled gracefully.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>lifecycle</category></item><item><title>Artifact Registry</title><link>https://bothe.at/code/cloud-platforms/google-cloud-platform/ci-cd/artifact-registry/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/google-cloud-platform/ci-cd/artifact-registry/</guid><description>Artifact Registry stores build artifacts such as Docker images and npm packages in regional repositories with IAM and optional scanning. This chapter creates a Docker repository, authenticates docker push, and publishes the series file API image.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>gcp</category><category>ci-cd</category><category>docker</category></item><item><title>Astro cheat sheet</title><link>https://bothe.at/code/web-frameworks/astro/astro-cheat-sheet/</link><guid isPermaLink="true">https://bothe.at/code/web-frameworks/astro/astro-cheat-sheet/</guid><description>CLI commands, special files, component syntax, directives, routing patterns, and content collection functions in one scannable page, meant to sit beside the Astro series.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>astro</category><category>web-framework</category><category>cheat-sheet</category></item><item><title>Astro components</title><link>https://bothe.at/code/web-frameworks/astro/fundamentals/astro-components/</link><guid isPermaLink="true">https://bothe.at/code/web-frameworks/astro/fundamentals/astro-components/</guid><description>An .astro file is a server-side script and an HTML template in one file. This page covers the component script, template expressions, typed props, slots, scoped styles, client scripts, and the Image component, which together make up most of the Astro code you will write.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>astro</category><category>web-framework</category><category>typescript</category></item><item><title>Async/await in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/asynchronous-javascript/async-await-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/asynchronous-javascript/async-await-in-javascript/</guid><description>Async functions always return a Promise, and await pauses until a Promise settles—giving sequential async code without nested then chains. This chapter covers syntax, parallel awaits, and error handling patterns.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>async</category></item><item><title>Async iterators and for await..of</title><link>https://bothe.at/code/languages/javascript-core/iteration-and-generators/async-iterators-and-for-await/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/iteration-and-generators/async-iterators-and-for-await/</guid><description>Async iterables produce values that may arrive after await, which fits streams, paginated APIs, and backpressure-friendly pipelines. This chapter covers Symbol.asyncIterator, async generators, and for await..of consumption.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>async</category><category>iterators</category></item><item><title>Authentication and authorization in GraphQL</title><link>https://bothe.at/code/server-development/graphql/security/authentication-and-authorization-in-graphql/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/security/authentication-and-authorization-in-graphql/</guid><description>GraphQL needs identity in context and authorization at field granularity. This chapter covers transport auth, resolver and field guards, NestJS GqlExecutionContext, node(id) IDOR risks, and subscription connection_init.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>security</category><category>authentication</category><category>nestjs</category><category>server-development</category></item><item><title>Authentication in MongoDB</title><link>https://bothe.at/code/databases/mongodb/fundamentals/authentication-in-mongodb/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/fundamentals/authentication-in-mongodb/</guid><description>MongoDB separates who you are from what you may do. Authentication verifies identity with SCRAM; authorization assigns roles on databases and collections. This page covers users, built-in roles, connection strings, Docker bootstrap credentials, and Atlas database users from application code.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>authentication</category><category>security</category></item><item><title>Authentication in NestJS</title><link>https://bothe.at/code/server-development/nestjs/security/authentication-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/security/authentication-in-nestjs/</guid><description>NestJS authentication is built from guards: one checks a password and issues a token, another verifies that token on every later request. This chapter wires Passport&apos;s local and JWT strategies into a Nest app, then protects every route by default with a global guard and a @Public() opt-out.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>security</category><category>authentication</category><category>jwt</category></item><item><title>Authorization in NestJS</title><link>https://bothe.at/code/server-development/nestjs/security/authorization-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/security/authorization-in-nestjs/</guid><description>Once a NestJS request has a user, authorization decides what that user may do. This chapter builds role checks from a typed decorator and a guard, orders them after authentication, adds a @CurrentUser() parameter, and moves ownership checks into the service where the data is.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>security</category><category>authorization</category></item><item><title>Booting Linux and systemd</title><link>https://bothe.at/code/operating-systems/linux/system-startup-and-services/booting-linux-and-systemd/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/system-startup-and-services/booting-linux-and-systemd/</guid><description>From firmware to login, boot is a chain of loaders, an initial RAM disk, and PID 1. This overview covers UEFI and GRUB, initramfs, systemd units and targets, journald, and how Debian differs from older init and macOS launchd at a glance.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>systemd</category></item><item><title>Breaking up long tasks</title><link>https://bothe.at/code/languages/javascript-core/under-the-hood/breaking-up-long-tasks/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/under-the-hood/breaking-up-long-tasks/</guid><description>A page that ignores clicks for a moment, a spinner that never appears, or a poor Interaction to Next Paint score usually has one cause: a single task holding the main thread. This page shows how to confirm it, why await alone does not help, and the three fixes — yield, defer, or move the work.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>performance</category><category>runtime</category></item><item><title>Building a GraphQL server with NestJS</title><link>https://bothe.at/code/server-development/graphql/servers/building-a-graphql-server-with-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/servers/building-a-graphql-server-with-nestjs/</guid><description>NestJS can expose a code-first GraphQL API with the Apollo driver, auto- generated SDL, decorators for types and resolvers, validation pipes, request- scoped DataLoaders, and graphql-ws subscriptions. This runbook walks from install to a working endpoint.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>nestjs</category><category>apollo</category><category>server-development</category><category>typescript</category></item><item><title>Callbacks and timers</title><link>https://bothe.at/code/languages/javascript-core/asynchronous-javascript/callbacks-and-timers/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/asynchronous-javascript/callbacks-and-timers/</guid><description>Host APIs still expose completion handlers as functions you pass in. This chapter covers callback conventions, setTimeout and setInterval, and why nested callbacks led to promises and async/await.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>async</category><category>callbacks</category></item><item><title>Cancellation with AbortController</title><link>https://bothe.at/code/languages/javascript-core/asynchronous-javascript/cancellation-with-abortcontroller/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/asynchronous-javascript/cancellation-with-abortcontroller/</guid><description>Promises do not cancel themselves; AbortController provides a standard signal for fetch, streams, and your own async tasks. This chapter covers signals, abort reasons, and cleaning up listeners when work is no longer needed.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>async</category></item><item><title>Classes in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/objects-and-classes/classes-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/objects-and-classes/classes-in-javascript/</guid><description>class syntax is mostly syntactic sugar over prototypes: constructors install own state, methods live on the prototype, extends wires the chain. Fields, private #members, and static blocks match what Java or C# developers expect with a few JavaScript-specific rules.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category></item><item><title>Cloud Logging</title><link>https://bothe.at/code/cloud-platforms/google-cloud-platform/observability/cloud-logging/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/google-cloud-platform/observability/cloud-logging/</guid><description>Cloud Logging ingests logs from Cloud Run, load balancers, and your app’s stdout. This chapter writes structured JSON from the series API, queries logs in Logs Explorer, and outlines sinks and audit logs.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>gcp</category><category>observability</category><category>nodejs</category></item><item><title>Cloud Monitoring</title><link>https://bothe.at/code/cloud-platforms/google-cloud-platform/observability/cloud-monitoring/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/google-cloud-platform/observability/cloud-monitoring/</guid><description>Cloud Monitoring collects metrics from Cloud Run and load balancers, builds dashboards, and fires alerts. This chapter explores key metrics, uptime checks, alerting policies, and SLOs for the series file API.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>gcp</category><category>observability</category></item><item><title>Code review and pull request hygiene</title><link>https://bothe.at/code/version-control-systems/git/collaboration/code-review-and-pull-request-hygiene/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/git/collaboration/code-review-and-pull-request-hygiene/</guid><description>Good pull requests are small, test-backed, and easy to revert; good reviews focus on design and risk, not style nitpicks. Practices for authors and reviewers when Git history is shared on a protected main branch.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>git</category><category>version-control</category><category>workflow</category><category>github</category></item><item><title>Collaborating with Git</title><link>https://bothe.at/code/version-control-systems/git/collaboration/collaborating-with-git/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/git/collaboration/collaborating-with-git/</guid><description>Git stores history; teams add agreements on top—who merges, how branches are named, and how review happens before code reaches main. This overview maps those social layers to remotes, pull requests, and protected branches.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>git</category><category>version-control</category><category>workflow</category></item><item><title>Concurrency with workers</title><link>https://bothe.at/code/languages/javascript-core/under-the-hood/concurrency-with-workers/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/under-the-hood/concurrency-with-workers/</guid><description>Workers are how JavaScript runs in parallel: each one is a separate thread with its own heap and event loop, talking to the others through messages. This chapter covers starting workers in browsers and Node, what copying, transferring, and sharing memory each cost, and which kind of worker fits which job.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>workers</category><category>runtime</category></item><item><title>Configuration in NestJS</title><link>https://bothe.at/code/server-development/nestjs/building-applications/configuration-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/building-applications/configuration-in-nestjs/</guid><description>@nestjs/config loads environment variables and .env files into an injectable ConfigService. This chapter covers loading and precedence, namespaced and typed configuration, failing fast on missing values, and giving each feature module only the settings it needs.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>configuration</category><category>environment-variables</category></item><item><title>Content collections in Astro</title><link>https://bothe.at/code/web-frameworks/astro/routing-and-content/content-collections-in-astro/</link><guid isPermaLink="true">https://bothe.at/code/web-frameworks/astro/routing-and-content/content-collections-in-astro/</guid><description>Content collections give Markdown, JSON, and remote data a schema, typed queries, and validation at build time. This page defines collections with the glob and file loaders, validates frontmatter with Zod, links entries with references, and generates one page per entry.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>astro</category><category>web-framework</category><category>typescript</category><category>markdown</category></item><item><title>Continuous delivery with Cloud Build</title><link>https://bothe.at/code/cloud-platforms/google-cloud-platform/ci-cd/continuous-delivery-with-cloud-build/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/google-cloud-platform/ci-cd/continuous-delivery-with-cloud-build/</guid><description>Cloud Build runs containerized build steps on Google’s infrastructure and can push to Artifact Registry and deploy Cloud Run. This chapter defines cloudbuild.yaml for the series API and outlines GitHub triggers.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>gcp</category><category>ci-cd</category><category>docker</category></item><item><title>Control flow in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/language-basics/control-flow-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/language-basics/control-flow-in-javascript/</guid><description>if and switch follow C-shaped syntax, but switch uses strict equality and falls through unless you break. Labeled break and continue apply to any statement, not only loops—a feature most statically typed languages omit. Ternary expressions fill the same niche as other languages’ inline conditionals.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>control-flow</category></item><item><title>Controllers in NestJS</title><link>https://bothe.at/code/server-development/nestjs/fundamentals/controllers-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/fundamentals/controllers-in-nestjs/</guid><description>Controllers map HTTP routes to methods and turn their return values into responses. This chapter covers route decorators, reading parameters, query strings and bodies into DTOs, status codes and headers, and the escape hatch to the underlying Express response.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>rest</category></item><item><title>Creating an Astro project</title><link>https://bothe.at/code/web-frameworks/astro/fundamentals/creating-an-astro-project/</link><guid isPermaLink="true">https://bothe.at/code/web-frameworks/astro/fundamentals/creating-an-astro-project/</guid><description>Scaffold a project with the create-astro wizard, learn which folders Astro treats specially, and run the dev, build, preview, and check commands. The steps end with a configured project ready for the rest of the series.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>astro</category><category>web-framework</category><category>typescript</category></item><item><title>CRUD operations in MongoDB</title><link>https://bothe.at/code/databases/mongodb/fundamentals/crud-operations-in-mongodb/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/fundamentals/crud-operations-in-mongodb/</guid><description>Documents are BSON records in collections; the Node.js driver maps them to TypeScript types. This chapter walks through insert, find, update, and delete with filters, projections, array operators, upserts, bulk writes, and the ObjectId versus string boundary at HTTP APIs.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>typescript</category><category>nodejs</category></item><item><title>Custom payment forms with the Payment Element</title><link>https://bothe.at/code/commercial-integrations/stripe/payments/custom-payment-forms-with-the-payment-element/</link><guid isPermaLink="true">https://bothe.at/code/commercial-integrations/stripe/payments/custom-payment-forms-with-the-payment-element/</guid><description>When Checkout&apos;s hosted page is not enough, embed the Payment Element: your server creates a PaymentIntent, the browser mounts Stripe.js UI, and confirmPayment finishes authentication. This runbook compares that path with Checkout for Express apps.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>stripe</category><category>payments</category><category>javascript</category><category>nodejs</category><category>express</category></item><item><title>Customers in Stripe</title><link>https://bothe.at/code/commercial-integrations/stripe/customers-and-products/customers-in-stripe/</link><guid isPermaLink="true">https://bothe.at/code/commercial-integrations/stripe/customers-and-products/customers-in-stripe/</guid><description>A Stripe Customer is the billing profile for someone in your app: email, metadata, and saved payment methods. This chapter shows how to create customers at signup, map them to your user ids, and save cards for on-session and off-session charges with SetupIntents.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>stripe</category><category>payments</category><category>javascript</category><category>nodejs</category><category>express</category></item><item><title>Data types in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/values-and-types/data-types-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/values-and-types/data-types-in-javascript/</guid><description>ECMAScript divides values into seven primitives and Object. typeof is the everyday type check, but it has well-known holes. This overview maps the type system and points to chapters on copying, coercion, numbers, strings, and symbols.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>types</category></item><item><title>Dates and Temporal</title><link>https://bothe.at/code/languages/javascript-core/standard-library/dates-and-temporal/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/standard-library/dates-and-temporal/</guid><description>Date has been the built-in clock since ES1, but mutability and time-zone gaps push new code toward Temporal. This comparison covers what Date still does, what Temporal fixes, and how to choose in browsers and Node today.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>temporal</category><category>date</category></item><item><title>Deploying containers with Cloud Run</title><link>https://bothe.at/code/cloud-platforms/google-cloud-platform/compute/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/google-cloud-platform/compute/</guid><description>Cloud Run runs stateless containers on demand with HTTPS URLs, revisions, and autoscaling. This chapter deploys the series file API from Artifact Registry, configures the runtime service account, scaling, and ingress.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>gcp</category><category>docker</category><category>nodejs</category><category>typescript</category></item><item><title>Destructuring and spread</title><link>https://bothe.at/code/languages/javascript-core/language-basics/destructuring-and-spread/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/language-basics/destructuring-and-spread/</guid><description>Destructuring unpacks arrays and objects into bindings; spread copies iterables and expands objects in literals. Together they replace much of the manual indexing common in Java or Go. Rest in patterns collects leftovers without the arguments object.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>destructuring</category></item><item><title>Dynamic modules in NestJS</title><link>https://bothe.at/code/server-development/nestjs/building-applications/dynamic-modules-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/building-applications/dynamic-modules-in-nestjs/</guid><description>forRoot(), forFeature(), and forRootAsync() are how NestJS modules accept options from the application that imports them. This chapter shows what a dynamic module returns, the naming conventions, async configuration through the injector, and generating the boilerplate with ConfigurableModuleBuilder.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>dependency-injection</category><category>architecture</category></item><item><title>ECMAScript versions cheat sheet</title><link>https://bothe.at/code/languages/javascript-core/history-and-standards/ecmascript-versions-cheat-sheet/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/history-and-standards/ecmascript-versions-cheat-sheet/</guid><description>Each yearly ECMAScript edition bundles finished proposals. This cheat sheet lists headline additions from ES5 through recent editions so you can map syntax you see in tutorials to the standard that introduced it.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>ecmascript</category><category>cheat-sheet</category></item><item><title>Everyday Git commands</title><link>https://bothe.at/code/version-control-systems/git/everyday-git/everyday-git-commands/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/git/everyday-git/everyday-git-commands/</guid><description>Configure identity, create commits, inspect history, manage branches, and ignore build artifacts—the commands you use on most working days. Assumes you know how Git&apos;s working tree, index, and repository fit together.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>git</category><category>version-control</category></item><item><title>Evolving a GraphQL schema</title><link>https://bothe.at/code/server-development/graphql/schema-evolution/evolving-a-graphql-schema/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/schema-evolution/evolving-a-graphql-schema/</guid><description>GraphQL favors continuous schema evolution over versioned URLs. This chapter classifies safe and breaking changes, documents @deprecated fields and enum values, outlines a deprecation workflow, and shows deprecationReason in NestJS code-first schemas.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>schema</category><category>deprecation</category><category>api-design</category><category>server-development</category></item><item><title>Exception filters in NestJS</title><link>https://bothe.at/code/server-development/nestjs/request-lifecycle/exception-filters-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/request-lifecycle/exception-filters-in-nestjs/</guid><description>Exception filters are where a NestJS application decides what an error looks like to the client. This chapter covers the built-in HTTP exceptions, attaching a cause, custom exception classes, writing a filter, and a catch-all filter that gives every error one shape.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>request-lifecycle</category><category>error-handling</category></item><item><title>Execution contexts and the call stack</title><link>https://bothe.at/code/languages/javascript-core/under-the-hood/execution-contexts-and-the-call-stack/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/under-the-hood/execution-contexts-and-the-call-stack/</guid><description>Every running piece of code has an execution context that says where its variables are, what this is, and which realm&apos;s built-ins it sees. This chapter follows contexts onto and off the call stack, explains hoisting, closures, suspension, and realms in those terms, and shows how to read the stack traces that come out of it.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>runtime</category><category>scope</category></item><item><title>Finding memory leaks</title><link>https://bothe.at/code/languages/javascript-core/under-the-hood/finding-memory-leaks/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/under-the-hood/finding-memory-leaks/</guid><description>A JavaScript leak is memory the program can still reach but will never use again. This page is the procedure for finding one: confirm the growth survives garbage collection, use heap snapshots to find what is retained and by what, then fix the reference. It ends with the causes behind most leaks.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>memory</category><category>debugging</category></item><item><title>Formatting and validating Terraform files</title><link>https://bothe.at/code/cloud-platforms/terraform/configuration-language/formatting-and-validating-terraform-files/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/terraform/configuration-language/formatting-and-validating-terraform-files/</guid><description>Consistent HCL and early validation catch mistakes before plan or apply. This page covers terraform fmt and validate, variable and lifecycle checks, TFLint, pre-commit hooks, and a minimal CI gate—with a pointer to terraform test for module regressions.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>terraform</category><category>infrastructure-as-code</category><category>gcp</category></item><item><title>QuickTip: Freezing and sealing objects</title><link>https://bothe.at/code/languages/javascript-core/objects-and-classes/freezing-and-sealing-objects/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/objects-and-classes/freezing-and-sealing-objects/</guid><description>Object.preventExtensions, seal, and freeze tighten what can change on an object—useful for config snapshots and defensive copies, not deep immutability.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category></item><item><title>From source code to machine code</title><link>https://bothe.at/code/languages/javascript-core/under-the-hood/from-source-code-to-machine-code/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/under-the-hood/from-source-code-to-machine-code/</guid><description>An engine has to start running code within milliseconds and still end up with fast machine code for the functions that matter. This chapter follows a function through V8&apos;s parser, interpreter, and three compilers, shows how type feedback drives optimization, and explains why optimized code gets thrown away.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>v8</category><category>runtime</category><category>performance</category></item><item><title>Full-text search in MongoDB</title><link>https://bothe.at/code/databases/mongodb/search-and-ai/full-text-search-in-mongodb/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/search-and-ai/full-text-search-in-mongodb/</guid><description>Community deployments offer regex and text indexes; Atlas Search adds Lucene- style analyzers, fuzzy matching, and facets. This chapter compares those paths, defines Atlas Search indexes from TypeScript, runs $search locally on Atlas Local, and paginates with searchAfter.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>search</category></item><item><title>Functional patterns in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/functions-and-scope/functional-patterns-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/functions-and-scope/functional-patterns-in-javascript/</guid><description>IIFEs isolate scope before modules were universal; currying, compose, and memoize express reusable function plumbing. JavaScript is multi-paradigm—these patterns are idiomatic where they reduce noise, not mandatory style.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category></item><item><title>Functions in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/language-basics/functions-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/language-basics/functions-in-javascript/</guid><description>Functions are first-class values: declarations hoist differently from const bindings, arrow functions inherit lexical this, and the rest parameter replaces most uses of the arguments object. Default parameters run at call time and can reference earlier parameters—unlike overload sets in Java or C#.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>functions</category></item><item><title>Geospatial queries in MongoDB</title><link>https://bothe.at/code/databases/mongodb/querying/geospatial-queries-in-mongodb/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/querying/geospatial-queries-in-mongodb/</guid><description>Location-aware apps store coordinates as GeoJSON and query them with 2dsphere indexes. This chapter covers point and polygon shapes, near and within operators, geoNear in aggregation, legacy 2d indexes, and a store locator example in TypeScript.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>geospatial</category></item><item><title>Getting started with Terraform on Google Cloud</title><link>https://bothe.at/code/cloud-platforms/terraform/fundamentals/getting-started-with-terraform-on-google-cloud/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/terraform/fundamentals/getting-started-with-terraform-on-google-cloud/</guid><description>A step-by-step runbook to install Terraform, authenticate with Google Cloud, and manage a storage bucket, a VPC, and a small Compute Engine VM through init, plan, apply, and destroy—using the standard file layout.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>terraform</category><category>infrastructure-as-code</category><category>gcp</category></item><item><title>Getting started with urql</title><link>https://bothe.at/code/server-development/graphql/clients/getting-started-with-urql/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/clients/getting-started-with-urql/</guid><description>urql 5 wires React apps to GraphQL through a client, exchanges, and hooks. This chapter shows createClient with cacheExchange and fetchExchange, auth headers, request policies, mutations, document-cache invalidation, and subscription exchanges.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>urql</category><category>react</category><category>server-development</category></item><item><title>Git cheat sheet</title><link>https://bothe.at/code/version-control-systems/git/git-cheat-sheet/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/git/git-cheat-sheet/</guid><description>Scannable Git commands for daily work—config, commits, branches, remotes, undo, and merge—grouped for quick lookup beside the Git and GitHub series.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>git</category><category>version-control</category><category>cheat-sheet</category></item><item><title>Git glossary</title><link>https://bothe.at/code/version-control-systems/git/git-glossary/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/git/git-glossary/</guid><description>Git and GitHub terms used across the series—blob, index, rebase, pull request, and more—each defined briefly and linked to the chapter that explains the idea in depth.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>git</category><category>github</category><category>version-control</category><category>glossary</category></item><item><title>Git workflows for teams</title><link>https://bothe.at/code/version-control-systems/git/collaboration/git-workflows-for-teams/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/git/collaboration/git-workflows-for-teams/</guid><description>Trunk-based development, Git Flow, and GitHub Flow compared—how branch lifetimes, release cadence, and CI maturity drive the model, plus scaling patterns for monorepos and open source.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>git</category><category>version-control</category><category>workflow</category></item><item><title>GitHub Actions</title><link>https://bothe.at/code/version-control-systems/github/github-actions/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/github/github-actions/</guid><description>GitHub Actions runs workflows on Git events—push, pull request, schedule— using YAML in .github/workflows. This overview covers jobs, steps, runners, reusable actions, secrets, matrices, caching, and a complete Node CI pipeline you can adapt.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>github</category><category>git</category><category>ci-cd</category><category>github-actions</category></item><item><title>Google Cloud glossary</title><link>https://bothe.at/code/cloud-platforms/google-cloud-platform/google-cloud-glossary/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/google-cloud-platform/google-cloud-glossary/</guid><description>Google Cloud Platform terms used in the series—project, service account, Artifact Registry, Cloud Run revision, and more—each defined briefly and linked to the chapter that goes deeper.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>gcp</category><category>glossary</category></item><item><title>Graphical desktops on Linux</title><link>https://bothe.at/code/operating-systems/linux/user-interfaces/graphical-desktops-on-linux/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/user-interfaces/graphical-desktops-on-linux/</guid><description>Linux graphics stack from kernel modesetting through compositors and toolkits to desktop environments. This overview compares X11 and Wayland, GNOME and KDE on Debian, display managers, and GTK versus Qt.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>desktop</category></item><item><title>GraphQL clients compared</title><link>https://bothe.at/code/server-development/graphql/clients/graphql-clients-compared/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/clients/graphql-clients-compared/</guid><description>Browsers and React apps can talk to GraphQL with fetch, thin wrappers, urql, Apollo Client, Relay, or TanStack Query. This comparison covers what each layer adds—caching, codegen, normalized stores—and when to pick one.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>urql</category><category>apollo</category><category>relay</category><category>react</category><category>server-development</category></item><item><title>GraphQL federation</title><link>https://bothe.at/code/server-development/graphql/federation/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/federation/</guid><description>Federation lets independent teams publish subgraphs that compose into one supergraph queried through a router. This overview explains composition, entities and @key, migration directives, major platforms, a NestJS subgraph sketch, and when federation is worth the operational cost.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>federation</category><category>architecture</category><category>nestjs</category><category>server-development</category></item><item><title>GraphQL glossary</title><link>https://bothe.at/code/server-development/graphql/graphql-glossary/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/graphql-glossary/</guid><description>Terms used across the GraphQL series—from schema and SDL through resolvers, urql exchanges, deprecation, persisted queries, and federation—each defined briefly and linked to the chapter that goes deeper.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>glossary</category><category>server-development</category></item><item><title>Guards in NestJS</title><link>https://bothe.at/code/server-development/nestjs/request-lifecycle/guards-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/request-lifecycle/guards-in-nestjs/</guid><description>A guard answers one question before a NestJS handler runs: may this request continue? This chapter covers the CanActivate contract, reading the request and the handler from the ExecutionContext, steering a guard with metadata, and binding guards to routes or to the whole application.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>request-lifecycle</category><category>security</category></item><item><title>Hardware and devices in Linux</title><link>https://bothe.at/code/operating-systems/linux/storage-and-devices/hardware-and-devices-in-linux/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/storage-and-devices/hardware-and-devices-in-linux/</guid><description>Drivers, firmware, and device nodes connect the kernel to hardware. This overview explains /dev, udev, block devices and partitions, firmware on Debian, and how USB and PCI devices appear on a running system.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>hardware</category></item><item><title>HCL structure in Terraform</title><link>https://bothe.at/code/cloud-platforms/terraform/configuration-language/hcl-structure-in-terraform/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/terraform/configuration-language/hcl-structure-in-terraform/</guid><description>HashiCorp Configuration Language is how Terraform files declare providers, resources, variables, and outputs. This page walks through blocks and expressions, meta-arguments, dependency graphs, and sensible file layout—with Google Cloud examples throughout.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>terraform</category><category>infrastructure-as-code</category><category>gcp</category></item><item><title>Hidden classes and inline caches</title><link>https://bothe.at/code/languages/javascript-core/under-the-hood/hidden-classes-and-inline-caches/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/under-the-hood/hidden-classes-and-inline-caches/</guid><description>In the language, an object is a bag of named properties that can change at any time. Engines make property access fast anyway by giving objects hidden shapes and caching what each access site has seen. This chapter shows how shapes form, what breaks them, how arrays get the same treatment, and how to check it yourself.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>v8</category><category>performance</category></item><item><title>Higher-order functions and callbacks</title><link>https://bothe.at/code/languages/javascript-core/functions-and-scope/higher-order-functions-and-callbacks/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/functions-and-scope/higher-order-functions-and-callbacks/</guid><description>Functions are first-class values: pass them as arguments, return them, store them in data structures. Array methods and async APIs build on that model— familiar if you have used map/filter in Python or streams in Java.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category></item><item><title>How ECMAScript is standardized</title><link>https://bothe.at/code/languages/javascript-core/history-and-standards/how-ecmascript-is-standardized/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/history-and-standards/how-ecmascript-is-standardized/</guid><description>ECMAScript is maintained by TC39 at Ecma International. Proposals move through numbered stages, are validated by test262, and ship as yearly editions — separate from HTML, fetch, and other host specifications.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>ecmascript</category><category>standards</category></item><item><title>How Git works</title><link>https://bothe.at/code/version-control-systems/git/fundamentals/how-git-works/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/git/fundamentals/how-git-works/</guid><description>Git tracks snapshots of your project as commits linked in a graph, not as a single linear tape of diffs. This page explains what version control is solving, the four areas where your files live during a command, and how blobs, trees, and commits fit together.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>git</category><category>version-control</category></item><item><title>IAM in Google Cloud</title><link>https://bothe.at/code/cloud-platforms/google-cloud-platform/security/iam-in-google-cloud/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/google-cloud-platform/security/iam-in-google-cloud/</guid><description>Cloud IAM decides who can call which API on which resource. This chapter covers principals, roles, allow policies, service accounts, and least privilege, then creates deployer and runtime identities for the series file API.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>gcp</category><category>security</category></item><item><title>Indexes and query performance in MongoDB</title><link>https://bothe.at/code/databases/mongodb/querying/indexes-and-query-performance-in-mongodb/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/querying/indexes-and-query-performance-in-mongodb/</guid><description>Indexes turn collection scans into range or point lookups. This chapter covers single and compound indexes, the ESR rule, specialty indexes, explain plans, covered queries, creating indexes from TypeScript, and capped and time series collections.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>performance</category></item><item><title>Input types and arguments</title><link>https://bothe.at/code/server-development/graphql/fundamentals/input-types-and-arguments/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/fundamentals/input-types-and-arguments/</guid><description>Arguments tune individual fields; input object types bundle structured write payloads. GraphQL keeps input and output types separate, which shapes how you design mutations, validate data, and avoid breaking clients when forms evolve.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>schema</category><category>mutations</category><category>server-development</category></item><item><title>Installing and connecting to MongoDB</title><link>https://bothe.at/code/databases/mongodb/fundamentals/installing-and-connecting-to-mongodb/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/fundamentals/installing-and-connecting-to-mongodb/</guid><description>You can run MongoDB locally in Docker, exercise Atlas Search features with the Atlas Local image, or use a free Atlas cluster in the cloud. This runbook installs those options and connects from TypeScript with the official Node.js driver, pooling, and a clean shutdown path.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>typescript</category><category>nodejs</category></item><item><title>Interceptors in NestJS</title><link>https://bothe.at/code/server-development/nestjs/request-lifecycle/interceptors-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/request-lifecycle/interceptors-in-nestjs/</guid><description>An interceptor wraps a NestJS route handler, so it can act both before the handler runs and on whatever the handler returns. This chapter covers the NestInterceptor contract, the RxJS operators that do most of the work, and the built-in interceptors for serialization and caching.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>request-lifecycle</category><category>rxjs</category></item><item><title>Internationalization with Intl</title><link>https://bothe.at/code/languages/javascript-core/standard-library/internationalization-with-intl/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/standard-library/internationalization-with-intl/</guid><description>Intl formats numbers, dates, lists, and plural messages using locale data built into the engine—without shipping your own locale files for common cases. This page maps the main constructors and when to reach for each.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>intl</category><category>i18n</category></item><item><title>Islands and client directives in Astro</title><link>https://bothe.at/code/web-frameworks/astro/rendering-and-interactivity/islands-and-client-directives-in-astro/</link><guid isPermaLink="true">https://bothe.at/code/web-frameworks/astro/rendering-and-interactivity/islands-and-client-directives-in-astro/</guid><description>Client directives decide whether a framework component stays static HTML or hydrates in the browser, and when. This page covers framework integrations, the five client directives, what props can cross into an island, sharing state between islands, server islands, and client-side navigation with view transitions.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>astro</category><category>web-framework</category><category>react</category><category>performance</category></item><item><title>Iterator helpers</title><link>https://bothe.at/code/languages/javascript-core/iteration-and-generators/iterator-helpers/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/iteration-and-generators/iterator-helpers/</guid><description>ES2025 adds lazy iterator objects with map, filter, take, and related helpers so you can chain sequence operations without copying arrays. This chapter covers Iterator.from, chaining, and when helpers beat array methods.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>iterators</category><category>es2025</category></item><item><title>JavaScript engine glossary</title><link>https://bothe.at/code/languages/javascript-core/under-the-hood/javascript-engine-glossary/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/under-the-hood/javascript-engine-glossary/</guid><description>The Under the Hood series uses terms from three sources: the ECMAScript specification, the HTML Standard&apos;s event loop, and the engines&apos; own documentation. This glossary defines each of them in a sentence or two, grouped by topic, and links to the chapter that explains it.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>glossary</category><category>runtime</category></item><item><title>JavaScript syntax at a glance</title><link>https://bothe.at/code/languages/javascript-core/language-basics/javascript-syntax-at-a-glance/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/language-basics/javascript-syntax-at-a-glance/</guid><description>JavaScript blurs the line between statements and expressions more than C-style languages do, and parsers apply automatic semicolon insertion when you omit terminators. This chapter maps strict mode, script versus module goals, and the syntactic habits that surprise newcomers from Java, Go, or Python.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>syntax</category></item><item><title>JSON in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/standard-library/json-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/standard-library/json-in-javascript/</guid><description>JSON.parse and JSON.stringify are the built-in bridge between JavaScript values and UTF-8 text. This page covers syntax limits, revivers/replacers, and safe parsing—plus where jq fits when JSON lives in shell pipelines.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>json</category></item><item><title>Limiting query depth and cost</title><link>https://bothe.at/code/server-development/graphql/security/limiting-query-depth-and-cost/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/security/limiting-query-depth-and-cost/</guid><description>Depth limits, complexity analysis, alias caps, timeouts, persisted query allowlists, and disabling introspection protect GraphQL from expensive operations. This chapter shows NestJS complexity plugins and gateway-level controls.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>security</category><category>performance</category><category>nestjs</category><category>server-development</category></item><item><title>Linux cheat sheet</title><link>https://bothe.at/code/operating-systems/linux/linux-cheat-sheet/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/linux-cheat-sheet/</guid><description>Scannable commands for systemd, journals, files, processes, packages, users, and networking on Debian—grouped for quick lookup beside the Linux operating system series.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>cheat-sheet</category></item><item><title>Linux distributions and Debian</title><link>https://bothe.at/code/operating-systems/linux/fundamentals/linux-distributions-and-debian/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/fundamentals/linux-distributions-and-debian/</guid><description>A distribution turns the Linux kernel into an installable system with policies, packages, and support timelines. This overview explains what distros add, how Debian&apos;s stable, testing, and unstable branches work, common derivatives, and how other families compare when you choose a base.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>distribution</category></item><item><title>Linux filesystems</title><link>https://bothe.at/code/operating-systems/linux/storage-and-devices/linux-filesystems/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/storage-and-devices/linux-filesystems/</guid><description>Paths, inodes, and mount points organize storage on Linux. This overview covers the Filesystem Hierarchy Standard, hard and symbolic links, common on-disk formats, /etc/fstab, virtual filesystems like /proc and /sys, and swap.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>filesystem</category></item><item><title>Linux glossary</title><link>https://bothe.at/code/operating-systems/linux/linux-glossary/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/linux-glossary/</guid><description>Terms for the Linux operating system series—kernel, distribution, systemd, inode, namespace, and more—each defined briefly and linked to the chapter that goes deeper.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>glossary</category></item><item><title>Linux on Windows, WSL, containers, and VMs</title><link>https://bothe.at/code/operating-systems/linux/running-linux/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/running-linux/</guid><description>Linux runs on bare metal, inside VMs, in containers on a shared kernel, and on Windows via WSL2. This overview compares isolation and use cases and points to Docker and security chapters elsewhere in the knowledgebase.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>virtualization</category><category>docker</category></item><item><title>Linux security primitives</title><link>https://bothe.at/code/operating-systems/linux/security/linux-security-primitives/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/security/linux-security-primitives/</guid><description>Beyond file modes, Linux isolates and constrains processes with capabilities, namespaces, cgroups, seccomp, and mandatory access control. This overview explains AppArmor on Debian, SELinux elsewhere, and how containers combine these kernel features.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>security</category></item><item><title>Loops in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/language-basics/loops-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/language-basics/loops-in-javascript/</guid><description>for-of iterates values; for-in walks enumerable keys and is the wrong default for arrays. Classic for loops with var still show up in legacy code and create closure bugs in callbacks. break, continue, and labels behave like C, with for-await-of added for async iterables.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>loops</category></item><item><title>Managing GraphQL schemas in organizations</title><link>https://bothe.at/code/server-development/graphql/schema-evolution/managing-graphql-schemas-in-organizations/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/schema-evolution/managing-graphql-schemas-in-organizations/</guid><description>Large companies rarely expose one undifferentiated graph. This overview covers public, partner, and internal APIs, schema registries and contracts, CI checks against real operations, ownership, and versioning strategies from continuous evolution to dated releases.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>schema</category><category>governance</category><category>federation</category><category>server-development</category></item><item><title>Map and WeakMap</title><link>https://bothe.at/code/languages/javascript-core/collections/map-and-weakmap/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/collections/map-and-weakmap/</guid><description>Map and WeakMap associate keys with values when object identity or garbage collection behavior matters more than string property names. This page compares APIs, iteration, and typical use cases next to plain objects and Set.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>collections</category></item><item><title>Memory management and garbage collection</title><link>https://bothe.at/code/languages/javascript-core/under-the-hood/memory-management-and-garbage-collection/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/under-the-hood/memory-management-and-garbage-collection/</guid><description>JavaScript gives you no way to free memory, only ways to stop referring to it. This chapter explains what the heap holds, how a tracing collector decides what is garbage, why V8 splits the heap into generations, how heap limits and weak references work, and why cleanup of files and sockets cannot be left to the collector.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>runtime</category><category>memory</category></item><item><title>Merging versus rebasing</title><link>https://bothe.at/code/version-control-systems/git/branching-and-history/merging-versus-rebasing/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/git/branching-and-history/merging-versus-rebasing/</guid><description>Merge and rebase both integrate branch work, but they rewrite history differently—one adds merge commits, the other replays commits on a new base. Compare fast-forward merges, conflict resolution, squash merges, interactive rebase, and when each approach fits a team.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>git</category><category>version-control</category><category>workflow</category></item><item><title>Middleware in NestJS</title><link>https://bothe.at/code/server-development/nestjs/request-lifecycle/middleware-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/request-lifecycle/middleware-in-nestjs/</guid><description>Middleware is the first code a NestJS request meets, and the only stage that runs before Nest knows which handler will answer. This chapter covers class and function middleware, binding it to routes in a module, global middleware, and the jobs that belong in a later stage instead.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>request-lifecycle</category><category>middleware</category></item><item><title>Modules in NestJS</title><link>https://bothe.at/code/server-development/nestjs/fundamentals/modules-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/fundamentals/modules-in-nestjs/</guid><description>A NestJS module is the unit that decides which classes exist, which ones other parts of the app may use, and what it depends on. This chapter covers the root and feature modules, exports and imports, shared and re-exported modules, and the narrow case for global modules.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>architecture</category></item><item><title>MongoDB Aggregation Framework</title><link>https://bothe.at/code/databases/mongodb/querying/mongodb-aggregation-framework/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/querying/mongodb-aggregation-framework/</guid><description>Aggregation runs a pipeline of stages that filter, reshape, join, and summarize documents. This chapter covers stage order, grouping and lookups, facets, window functions, writing results with merge or out, views, typed pipelines in TypeScript, memory limits, and why server-side JavaScript stages should be avoided.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>aggregation</category></item><item><title>MongoDB cheat sheet</title><link>https://bothe.at/code/databases/mongodb/mongodb-cheat-sheet/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/mongodb-cheat-sheet/</guid><description>A scannable reference for everyday mongosh commands, query and update operators, aggregation stages, index types, and the Node.js driver methods that implement the same operations—meant to sit beside the MongoDB series.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>cheat-sheet</category></item><item><title>MongoDB glossary</title><link>https://bothe.at/code/databases/mongodb/mongodb-glossary/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/mongodb-glossary/</guid><description>Terms used across the MongoDB series—from BSON and WiredTiger through replica sets, search indexes, and embeddings—each defined briefly and linked to the chapter that goes deeper.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>glossary</category></item><item><title>MongoDB with Mongoose in NestJS</title><link>https://bothe.at/code/server-development/nestjs/building-applications/mongodb-with-mongoose-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/building-applications/mongodb-with-mongoose-in-nestjs/</guid><description>@nestjs/mongoose wraps Mongoose in a dynamic module, so a connection is configured once and models are injected like any provider. This chapter connects with settings from ConfigService, defines a schema with decorators, and builds a service around an injected model.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>mongodb</category><category>mongoose</category></item><item><title>Mongoose with MongoDB</title><link>https://bothe.at/code/databases/mongodb/data-modeling/mongoose-with-mongodb/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/data-modeling/mongoose-with-mongodb/</guid><description>Mongoose adds schemas, validation, middleware, and populate on top of the official driver. This focused chapter explains when an ODM helps, how to type schemas in TypeScript, and how lean queries differ from hydrated documents—without replacing the driver-first approach used elsewhere.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>typescript</category><category>nodejs</category></item><item><title>NestJS glossary</title><link>https://bothe.at/code/server-development/nestjs/nestjs-glossary/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/nestjs-glossary/</guid><description>The terms used across the NestJS series, from modules and providers through the request lifecycle, configuration, security, and testing. Each entry is a short definition with a link to the chapter that covers it in depth.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>glossary</category><category>server-development</category></item><item><title>Networking on Linux</title><link>https://bothe.at/code/operating-systems/linux/networking/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/networking/</guid><description>Sockets and routing are universal; Linux adds interface naming, iproute2, distro-specific network management, systemd-resolved, and netfilter. This overview focuses on the host stack on Debian and points to protocol detail elsewhere in the knowledgebase.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>network</category></item><item><title>Normalized caching with urql Graphcache</title><link>https://bothe.at/code/server-development/graphql/clients/normalized-caching-with-urql-graphcache/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/clients/normalized-caching-with-urql-graphcache/</guid><description>Graphcache stores records and links like a client-side database, enabling mutation updates, optimistic UI, schema-aware keys, and offline replay. This chapter configures @urql/exchange-graphcache for urql 5.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>urql</category><category>cache</category><category>react</category><category>server-development</category></item><item><title>Numbers and BigInt in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/values-and-types/numbers-and-bigint/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/values-and-types/numbers-and-bigint/</guid><description>JavaScript numbers are IEEE-754 double-precision values with a safe integer range and familiar binary rounding surprises. BigInt stores arbitrary integers but cannot mix with number in arithmetic without an explicit conversion. This chapter covers literals, safety checks, and when to use each type.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>types</category></item><item><title>Object types and scalars</title><link>https://bothe.at/code/server-development/graphql/fundamentals/object-types-and-scalars/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/fundamentals/object-types-and-scalars/</guid><description>Object types model entities with fields; scalars are the leaves that hold concrete values. This chapter covers built-in and custom scalars, enums, lists and non-null markers, interfaces, unions, and the __typename field clients use for polymorphism.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>schema</category><category>types</category><category>server-development</category></item><item><title>Objects in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/objects-and-classes/objects-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/objects-and-classes/objects-in-javascript/</guid><description>Plain objects are string-keyed maps with a prototype chain, not fixed structs like C structs or Java POJOs. Literals, property access, shorthand, computed keys, and references versus copies set the baseline for everything else in this series.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category></item><item><title>Operators in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/language-basics/operators-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/language-basics/operators-in-javascript/</guid><description>Beyond familiar arithmetic and comparison, JavaScript adds nullish coalescing, optional chaining, and logical assignment operators that behave differently from || and &amp;&amp; in other languages. Precedence tables from C do not fully apply; this page covers the operators that change control flow and defaulting logic.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>operators</category></item><item><title>Package management on Debian</title><link>https://bothe.at/code/operating-systems/linux/software-management/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/software-management/</guid><description>Debian ships software as signed .deb packages installed and upgraded with dpkg and APT. This overview covers repositories, suite components, deb822 sources, backports, pinning, security updates, and Flatpak and Snap beside the system package set.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>package-manager</category></item><item><title>Pagination in MongoDB</title><link>https://bothe.at/code/databases/mongodb/querying/pagination-in-mongodb/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/querying/pagination-in-mongodb/</guid><description>Listing large collections page by page needs a strategy that stays fast as offsets grow and stays stable when rows are inserted or deleted. This chapter compares offset pagination with keyset cursors, total counts, and a typed paginate helper in TypeScript.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>pagination</category></item><item><title>Pipes and validation in NestJS</title><link>https://bothe.at/code/server-development/nestjs/request-lifecycle/pipes-and-validation-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/request-lifecycle/pipes-and-validation-in-nestjs/</guid><description>Pipes are the last stage before a NestJS handler runs, and they see each argument on its own. This chapter covers the built-in parsing pipes, request validation with ValidationPipe and class-validator, writing a custom pipe, and where pipes should be bound.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>request-lifecycle</category><category>validation</category></item><item><title>Pitfalls when updating a GraphQL backend</title><link>https://bothe.at/code/server-development/graphql/schema-evolution/pitfalls-when-updating-a-graphql-backend/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/schema-evolution/pitfalls-when-updating-a-graphql-backend/</guid><description>Schema changes that look safe on paper still break mobile clients, caches, and federation. This troubleshooting guide lists common symptoms, root causes, and fixes—from nullability shifts to persisted queries and deploy order.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>schema</category><category>troubleshooting</category><category>server-development</category></item><item><title>Processes and inter-process communication</title><link>https://bothe.at/code/operating-systems/linux/processes/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/processes/</guid><description>Programs run as processes created by fork and exec, coordinated with signals and IPC. This overview covers the process tree, states, pipes, sockets, shared memory, and D-Bus on Linux—with links to shell and Node boundaries covered elsewhere in the knowledgebase.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>process</category></item><item><title>Products and prices in Stripe</title><link>https://bothe.at/code/commercial-integrations/stripe/customers-and-products/products-and-prices-in-stripe/</link><guid isPermaLink="true">https://bothe.at/code/commercial-integrations/stripe/customers-and-products/products-and-prices-in-stripe/</guid><description>Products describe what you sell; Prices say how much and how often. Prices are immutable, so catalog changes mean new Price objects. This chapter covers one-time and recurring prices, lookup keys, and seeding a catalog from Node.js.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>stripe</category><category>payments</category><category>javascript</category><category>nodejs</category></item><item><title>Promises in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/asynchronous-javascript/promises-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/asynchronous-javascript/promises-in-javascript/</guid><description>A Promise represents one eventual result—fulfilled or rejected—and gives shared combinators for sequencing and racing async work. This chapter covers construction, then/catch/finally, Promise.all, and common pitfalls.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>async</category><category>promises</category></item><item><title>Protecting services with Cloud Armor</title><link>https://bothe.at/code/cloud-platforms/google-cloud-platform/security/protecting-services-with-cloud-armor/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/google-cloud-platform/security/protecting-services-with-cloud-armor/</guid><description>Cloud Armor attaches WAF rules and rate limits to Google Cloud external load balancers. This chapter fronts the series Cloud Run service with an HTTPS load balancer and a security policy.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>gcp</category><category>security</category><category>networking</category></item><item><title>Prototypes and inheritance</title><link>https://bothe.at/code/languages/javascript-core/objects-and-classes/prototypes-and-inheritance/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/objects-and-classes/prototypes-and-inheritance/</guid><description>JavaScript links objects through prototypes, not class tables copied at compile time. Property lookup walks the chain; methods live on shared prototype objects—similar in spirit to Ruby modules, unlike Java subclass field layout.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category></item><item><title>Providers and dependency injection in NestJS</title><link>https://bothe.at/code/server-development/nestjs/fundamentals/providers-and-dependency-injection-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/fundamentals/providers-and-dependency-injection-in-nestjs/</guid><description>Providers hold the work of a Nest application, and the injector decides when to create them and who receives them. This chapter shows how the injector resolves a dependency by token, the four kinds of custom provider, injection scopes, and how to break a circular dependency.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>dependency-injection</category></item><item><title>Proxy and Reflect</title><link>https://bothe.at/code/languages/javascript-core/objects-and-classes/proxy-and-reflect/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/objects-and-classes/proxy-and-reflect/</guid><description>Proxy wraps an object and intercepts get, set, and other operations— validation, logging, reactivity, and virtual properties. Reflect mirrors those operations as functions for consistent defaults in traps.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category></item><item><title>Pull requests with and without GitHub</title><link>https://bothe.at/code/version-control-systems/github/pull-requests-with-and-without-github/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/github/pull-requests-with-and-without-github/</guid><description>Review and integrate changes through pull requests on GitHub—or through email patches and git request-pull when no host is involved. Covers forks, the PR lifecycle, merge strategies, branch protection, and the gh CLI.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>git</category><category>github</category><category>version-control</category><category>workflow</category></item><item><title>Regular expressions in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/standard-library/regular-expressions-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/standard-library/regular-expressions-in-javascript/</guid><description>RegExp matches patterns in strings—literals, flags, groups, and common String methods. This page summarizes syntax and API surface, including modern named groups and the RegExp.escape helper from recent editions.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>regexp</category></item><item><title>Replica sets in MongoDB</title><link>https://bothe.at/code/databases/mongodb/replication-and-transactions/replica-sets-in-mongodb/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/replication-and-transactions/replica-sets-in-mongodb/</guid><description>A replica set copies data across multiple mongod processes for redundancy and automatic failover. This chapter explains primary and secondary roles, elections, a local three-node Docker Compose layout, read preferences, write concern, and replica set connection strings.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>replication</category></item><item><title>The NestJS request lifecycle</title><link>https://bothe.at/code/server-development/nestjs/request-lifecycle/request-lifecycle-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/request-lifecycle/request-lifecycle-in-nestjs/</guid><description>Between the socket and your route handler, a NestJS request passes through middleware, guards, interceptors, and pipes, and exception filters wait for anything that goes wrong. This overview shows the order, what each stage is for, and how global, controller, and route bindings stack.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>request-lifecycle</category></item><item><title>Resolvers and execution</title><link>https://bothe.at/code/server-development/graphql/servers/resolvers-and-execution/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/servers/resolvers-and-execution/</guid><description>Resolvers connect schema fields to data sources. This chapter explains the four resolver arguments, default resolvers, parallel query execution, per- request context, the N+1 problem, DataLoader, and how errors bubble through nullable fields.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>resolvers</category><category>dataloader</category><category>nestjs</category><category>server-development</category></item><item><title>Routing in Astro</title><link>https://bothe.at/code/web-frameworks/astro/routing-and-content/routing-in-astro/</link><guid isPermaLink="true">https://bothe.at/code/web-frameworks/astro/routing-and-content/routing-in-astro/</guid><description>Astro maps files in src/pages to URLs. This page covers static and dynamic routes, getStaticPaths, rest parameters, endpoints that return JSON or feeds, redirects, custom error pages, and the precedence rules that decide which file wins when several match.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>astro</category><category>web-framework</category><category>routing</category></item><item><title>Scheduling tasks with cron and systemd timers</title><link>https://bothe.at/code/operating-systems/linux/system-startup-and-services/scheduling-tasks-with-cron-and-systemd-timers/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/system-startup-and-services/scheduling-tasks-with-cron-and-systemd-timers/</guid><description>Linux runs recurring and one-shot jobs through several schedulers. This overview compares cron and crontab syntax, anacron, systemd timers, and at, and explains when each fits on a typical Debian server or desktop.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>systemd</category></item><item><title>Schema design in GraphQL</title><link>https://bothe.at/code/server-development/graphql/servers/schema-design-in-graphql/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/servers/schema-design-in-graphql/</guid><description>Good GraphQL schemas mirror how clients use data, not how tables are joined. This chapter covers query-driven design, naming and nullability, Relay-style connections, mutation payloads, and modeling errors as typed results versus the top-level errors array.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>schema</category><category>api-design</category><category>server-development</category></item><item><title>Schema design in MongoDB</title><link>https://bothe.at/code/databases/mongodb/data-modeling/schema-design-in-mongodb/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/data-modeling/schema-design-in-mongodb/</guid><description>Flexible schemas speed up early product work but query patterns still need deliberate shape. This chapter compares embedding and referencing, common modeling patterns, anti-patterns, the 16 MB document limit, and optional JSON Schema validation at the collection level.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>data-modeling</category></item><item><title>Schemas and SDL</title><link>https://bothe.at/code/server-development/graphql/fundamentals/schemas-and-sdl/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/fundamentals/schemas-and-sdl/</guid><description>A GraphQL schema is the contract between client and server: types, fields, and root operations written in Schema Definition Language or generated from code. This chapter explains SDL syntax, the Query/Mutation/Subscription roots, schema-first versus code-first workflows, and introspection.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>schema</category><category>sdl</category><category>server-development</category></item><item><title>Scope and closures</title><link>https://bothe.at/code/languages/javascript-core/functions-and-scope/scope-and-closures/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/functions-and-scope/scope-and-closures/</guid><description>Lexical scope decides which bindings are visible where; closures keep outer variables alive after the outer function returns. If you know block scope from C#, Java, or Rust, JavaScript&apos;s var hoisting and function closures are the pieces that differ most.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category></item><item><title>Securing GraphQL APIs</title><link>https://bothe.at/code/server-development/graphql/security/securing-graphql-apis/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/security/securing-graphql-apis/</guid><description>A single /graphql endpoint concentrates power and risk. This overview maps GraphQL-specific threats—introspection, deep queries, alias abuse, CSRF, and verbose errors—to controls you should layer at the gateway and in resolvers.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>security</category><category>api</category><category>server-development</category></item><item><title>Server rendering in Astro</title><link>https://bothe.at/code/web-frameworks/astro/rendering-and-interactivity/server-rendering-in-astro/</link><guid isPermaLink="true">https://bothe.at/code/web-frameworks/astro/rendering-and-interactivity/server-rendering-in-astro/</guid><description>Static output is the default, but any route can render on demand once an adapter is installed. This page covers prerendering per route, adapters, request data and cookies, middleware with locals, actions for forms, and typed environment variables.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>astro</category><category>web-framework</category><category>server</category></item><item><title>Strings and template literals in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/values-and-types/strings-and-template-literals/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/values-and-types/strings-and-template-literals/</guid><description>JavaScript strings are immutable sequences of UTF-16 code units, not full Unicode code points. Template literals add interpolation, multiline text, and tagged functions. This chapter covers creation, indexing, iteration, and common Unicode pitfalls.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>types</category></item><item><title>Stripe API keys and the Node.js SDK</title><link>https://bothe.at/code/commercial-integrations/stripe/fundamentals/stripe-api-keys-and-the-node-sdk/</link><guid isPermaLink="true">https://bothe.at/code/commercial-integrations/stripe/fundamentals/stripe-api-keys-and-the-node-sdk/</guid><description>Publishable keys belong in the browser, secret and restricted keys stay on the server, and every call goes through a Stripe client instance. This chapter shows how to wire the official stripe npm package into Express, pin an API version, and handle idempotency and errors safely.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>stripe</category><category>payments</category><category>javascript</category><category>nodejs</category><category>express</category><category>security</category></item><item><title>Stripe beyond payments</title><link>https://bothe.at/code/commercial-integrations/stripe/stripe-beyond-payments/</link><guid isPermaLink="true">https://bothe.at/code/commercial-integrations/stripe/stripe-beyond-payments/</guid><description>Checkout and subscriptions cover most SaaS needs, but Stripe also runs marketplaces, tax, fraud tools, invoicing, in-person Terminal, and identity checks. This overview names each product so you know what to reach for next without duplicating Stripe&apos;s full documentation.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>stripe</category><category>payments</category><category>javascript</category><category>nodejs</category></item><item><title>Stripe cheat sheet</title><link>https://bothe.at/code/commercial-integrations/stripe/stripe-cheat-sheet/</link><guid isPermaLink="true">https://bothe.at/code/commercial-integrations/stripe/stripe-cheat-sheet/</guid><description>Commands and API calls you reach for daily when integrating Stripe with Node.js: CLI forwarding, test cards, key prefixes, and stripe-node snippets grouped by object. Use with the narrative chapters when you need a quick lookup.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>stripe</category><category>payments</category><category>javascript</category><category>nodejs</category><category>cheat-sheet</category></item><item><title>Stripe glossary</title><link>https://bothe.at/code/commercial-integrations/stripe/stripe-glossary/</link><guid isPermaLink="true">https://bothe.at/code/commercial-integrations/stripe/stripe-glossary/</guid><description>Terms used across the Stripe series—from Customer and Price through PaymentIntent, Checkout Session, webhook Events, and Connect—each defined briefly and linked to the chapter that goes deeper.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>stripe</category><category>payments</category><category>glossary</category></item><item><title>Subscriptions in Stripe</title><link>https://bothe.at/code/commercial-integrations/stripe/payments/subscriptions-in-stripe/</link><guid isPermaLink="true">https://bothe.at/code/commercial-integrations/stripe/payments/subscriptions-in-stripe/</guid><description>Subscriptions bill Customers on a recurring Price, generate Invoices, and change state over time. This chapter uses Checkout in subscription mode, syncs access through webhooks, and touches upgrades, trials, and the Customer Portal.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>stripe</category><category>payments</category><category>javascript</category><category>nodejs</category><category>express</category><category>subscriptions</category></item><item><title>Symbols in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/values-and-types/symbols-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/values-and-types/symbols-in-javascript/</guid><description>A symbol is a unique, immutable primitive used as a property key that will not collide with string keys or other libraries. Well-known symbols customize built-in behavior. This chapter covers creation, registry symbols, and where symbols show up in everyday APIs.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>types</category></item><item><title>Terminals and shells in Linux</title><link>https://bothe.at/code/operating-systems/linux/user-interfaces/terminals-and-shells-in-linux/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/user-interfaces/terminals-and-shells-in-linux/</guid><description>A terminal is a character device; a shell is a program that interprets commands. This overview covers TTYs, PTYs, virtual consoles, terminal emulators, login versus interactive shells, dash as /bin/sh, and where Bash scripting is documented separately.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>shell</category></item><item><title>Terraform cheat sheet</title><link>https://bothe.at/code/cloud-platforms/terraform/terraform-cheat-sheet/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/terraform/terraform-cheat-sheet/</guid><description>Scannable Terraform CLI commands for init, fmt, validate, plan, apply, state, import, workspaces, and common environment variables—grouped for quick lookup beside the Terraform series.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>terraform</category><category>infrastructure-as-code</category><category>cheat-sheet</category><category>gcp</category></item><item><title>Terraform glossary</title><link>https://bothe.at/code/cloud-platforms/terraform/terraform-glossary/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/terraform/terraform-glossary/</guid><description>Terraform terms used across the series—provider, state, backend, plan, drift, and more—each defined briefly and linked to the chapter that explains the idea in depth.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>terraform</category><category>infrastructure-as-code</category><category>glossary</category><category>gcp</category></item><item><title>Terraform modules</title><link>https://bothe.at/code/cloud-platforms/terraform/configuration-language/terraform-modules/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/terraform/configuration-language/terraform-modules/</guid><description>Modules bundle resources into reusable units with inputs and outputs. This page covers root versus child modules, calling modules from local paths, git, and the Registry, versioning with terraform-google-modules, and refactoring with moved blocks.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>terraform</category><category>infrastructure-as-code</category><category>gcp</category></item><item><title>Terraform vs OpenTofu and alternatives</title><link>https://bothe.at/code/cloud-platforms/terraform/terraform-vs-opentofu-and-alternatives/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/terraform/terraform-vs-opentofu-and-alternatives/</guid><description>Terraform is not the only way to define infrastructure. This comparison covers OpenTofu as a compatible fork, Pulumi&apos;s general-purpose languages, cloud-native tools on GCP AWS and Azure, and Ansible for configuration after provisioning.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>terraform</category><category>opentofu</category><category>pulumi</category><category>infrastructure-as-code</category><category>gcp</category></item><item><title>Testing NestJS applications</title><link>https://bothe.at/code/server-development/nestjs/testing/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/testing/</guid><description>Dependency injection is what makes a NestJS app easy to test: any provider can be swapped for a fake before the module is compiled. This chapter covers unit tests with the testing module, overriding providers and guards, and end-to-end tests that send real HTTP requests with supertest.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category><category>testing</category><category>jest</category></item><item><title>The event loop, tasks, and microtasks</title><link>https://bothe.at/code/languages/javascript-core/under-the-hood/the-event-loop-tasks-and-microtasks/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/under-the-hood/the-event-loop-tasks-and-microtasks/</guid><description>The event loop is what turns one thread into a responsive program: it picks a task, runs it to completion, drains the microtasks, and gives the browser a chance to render. This chapter walks one turn of the loop, predicts the output of ordering puzzles from first principles, and shows where Node&apos;s loop differs.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>async</category><category>runtime</category></item><item><title>The Linux kernel</title><link>https://bothe.at/code/operating-systems/linux/fundamentals/the-linux-kernel/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/fundamentals/the-linux-kernel/</guid><description>The kernel is the privileged core that talks to hardware and exposes system calls to programs. This overview separates kernel space from user space, explains monolithic design and loadable modules, and covers scheduling, memory, versions, and how Debian ships kernel packages.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>kernel</category><category>debian</category></item><item><title>The this keyword</title><link>https://bothe.at/code/languages/javascript-core/functions-and-scope/the-this-keyword/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/functions-and-scope/the-this-keyword/</guid><description>this is not lexical like most variables—it is set when a function runs. Call site, method syntax, bind/call/apply, arrow functions, and classes each follow rules that differ from Python&apos;s self or Java&apos;s implicit receiver.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category></item><item><title>Transactions in MongoDB</title><link>https://bothe.at/code/databases/mongodb/replication-and-transactions/transactions-in-mongodb/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/replication-and-transactions/transactions-in-mongodb/</guid><description>Single-document updates are atomic; multi-document business rules need sessions and transactions on a replica set. This chapter covers withTransaction, read and write concern inside transactions, limits, and when schema design removes the need for cross-collection locks.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>transactions</category></item><item><title>Type coercion and equality in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/values-and-types/type-coercion-and-equality/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/values-and-types/type-coercion-and-equality/</guid><description>Operators and built-ins convert operands when types do not match. Loose equality runs a long conversion pipeline; strict equality compares type and value without coercion. This chapter maps the rules that explain surprising console output.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>types</category></item><item><title>Typed arrays and ArrayBuffer</title><link>https://bothe.at/code/languages/javascript-core/collections/typed-arrays-and-arraybuffer/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/collections/typed-arrays-and-arraybuffer/</guid><description>Typed arrays view raw bytes in an ArrayBuffer as integers or floats—used by WebGL, audio, binary protocols, and WASM interop. This page explains buffers, views, endianness, and how they differ from normal JavaScript arrays.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>collections</category></item><item><title>Typed operations with GraphQL Codegen</title><link>https://bothe.at/code/server-development/graphql/clients/typed-operations-with-graphql-codegen/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/clients/typed-operations-with-graphql-codegen/</guid><description>GraphQL Codegen client-preset generates typed document nodes and React hooks from .graphql files and your schema. This runbook configures codegen.ts, the graphql() helper, fragment masking, watch mode, and optional persisted operation hashes.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>codegen</category><category>urql</category><category>typescript</category><category>server-development</category></item><item><title>Undoing and moving changes</title><link>https://bothe.at/code/version-control-systems/git/everyday-git/undoing-and-moving-changes/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/git/everyday-git/undoing-and-moving-changes/</guid><description>Stash work in progress, amend the last commit, reset or restore files, revert published history safely, undo merges, and cherry-pick fixes onto other branches—without guessing which Git area each command touches.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>git</category><category>version-control</category></item><item><title>Users, groups and permissions in Linux</title><link>https://bothe.at/code/operating-systems/linux/security/users-groups-and-permissions-in-linux/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/linux/security/users-groups-and-permissions-in-linux/</guid><description>Every process runs as a user with group memberships and file mode bits. This overview covers UIDs and GIDs, passwd and shadow, rwx and umask, special bits, ACLs, sudo, and PAM on Debian.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>linux</category><category>debian</category><category>security</category></item><item><title>Variables and declarations</title><link>https://bothe.at/code/languages/javascript-core/language-basics/variables-and-declarations/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/language-basics/variables-and-declarations/</guid><description>Three declaration keywords—var, let, and const—interact with hoisting and the temporal dead zone in ways that differ from block-scoped languages like Java or Rust. const only freezes the binding, not deep object contents. This chapter is the reference for choosing among them in modern code.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>javascript</category><category>scope</category></item><item><title>Vector search and embeddings in MongoDB</title><link>https://bothe.at/code/databases/mongodb/search-and-ai/vector-search-and-embeddings-in-mongodb/</link><guid isPermaLink="true">https://bothe.at/code/databases/mongodb/search-and-ai/vector-search-and-embeddings-in-mongodb/</guid><description>Semantic search stores embedding vectors next to documents and finds nearest neighbors with $vectorSearch. This chapter generates embeddings through Voyage AI, defines vector indexes on Atlas, runs hybrid queries with $rankFusion, and sketches a small RAG retrieval function in TypeScript.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>mongodb</category><category>database</category><category>ai</category><category>embeddings</category></item><item><title>Webhooks in Stripe</title><link>https://bothe.at/code/commercial-integrations/stripe/fundamentals/webhooks-in-stripe/</link><guid isPermaLink="true">https://bothe.at/code/commercial-integrations/stripe/fundamentals/webhooks-in-stripe/</guid><description>Webhooks deliver signed Event objects when payments and subscriptions change. Your Express handler verifies signatures, stays idempotent, and fulfills orders there—not on the success page. This chapter covers routing, key events, and local testing with the Stripe CLI.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>stripe</category><category>payments</category><category>javascript</category><category>nodejs</category><category>express</category><category>webhooks</category><category>security</category></item><item><title>What is Astro</title><link>https://bothe.at/code/web-frameworks/astro/fundamentals/what-is-astro/</link><guid isPermaLink="true">https://bothe.at/code/web-frameworks/astro/fundamentals/what-is-astro/</guid><description>Astro renders pages to HTML on the server and ships JavaScript only for the components that need it. This overview explains the islands model, the kind of site Astro is built for, how the project got here, and when another framework is the better choice.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>astro</category><category>web-framework</category><category>javascript</category></item><item><title>What is Google Cloud Platform?</title><link>https://bothe.at/code/cloud-platforms/google-cloud-platform/fundamentals/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/google-cloud-platform/fundamentals/</guid><description>Google Cloud Platform is a suite of managed services for compute, storage, networking, and operations, scoped to projects inside an organization. This overview explains the resource hierarchy, regions, billing, and how to install the Cloud SDK so later chapters can deploy one small container app.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>gcp</category><category>nodejs</category><category>typescript</category><category>docker</category></item><item><title>What is GraphQL</title><link>https://bothe.at/code/server-development/graphql/fundamentals/what-is-graphql/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/fundamentals/what-is-graphql/</guid><description>GraphQL is a typed query language for APIs: clients describe the shape of the data they need, and the server returns JSON that matches. This overview covers how requests flow from parse to execution, how responses differ from REST, and when a GraphQL layer is worth the complexity.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>api</category><category>server-development</category><category>javascript</category></item><item><title>What is NestJS</title><link>https://bothe.at/code/server-development/nestjs/fundamentals/what-is-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nestjs/fundamentals/what-is-nestjs/</guid><description>NestJS is a TypeScript framework that gives a Node.js server a fixed architecture: modules, controllers, and providers, wired together by dependency injection. This overview shows what it adds on top of Express or Fastify, how a project starts, and when the structure is worth it.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>typescript</category><category>server-development</category></item><item><title>What is Stripe?</title><link>https://bothe.at/code/commercial-integrations/stripe/fundamentals/what-is-stripe/</link><guid isPermaLink="true">https://bothe.at/code/commercial-integrations/stripe/fundamentals/what-is-stripe/</guid><description>Stripe sits between your web application, your server, and the card networks: it stores customers and catalog data, runs Checkout or custom payment flows, and notifies your backend through webhooks. This overview maps the main API objects and test environments before you write integration code.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>stripe</category><category>payments</category><category>javascript</category><category>nodejs</category></item><item><title>Working with remotes</title><link>https://bothe.at/code/version-control-systems/git/everyday-git/working-with-remotes/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/git/everyday-git/working-with-remotes/</guid><description>Clone a repository, add a remote, fetch and push commits, and set upstream tracking branches—the mechanics of sharing history with GitHub or any Git server, plus pitfalls when pulling or force-pushing with teammates.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>git</category><category>version-control</category><category>github</category></item><item><title>Writing GraphQL operations</title><link>https://bothe.at/code/server-development/graphql/fundamentals/writing-graphql-operations/</link><guid isPermaLink="true">https://bothe.at/code/server-development/graphql/fundamentals/writing-graphql-operations/</guid><description>Operations are the queries, mutations, and subscriptions clients send. This chapter covers operation names, variables, aliases, reusable fragments, inline fragments for unions, and @include/@skip—patterns you will use in urql and codegen-backed apps.</description><pubDate>Sun, 01 Nov 2026 00:00:00 GMT</pubDate><category>graphql</category><category>queries</category><category>mutations</category><category>server-development</category></item><item><title>A short history of Artificial Intelligence</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/a-short-history-of-artificial-intelligence/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/a-short-history-of-artificial-intelligence/</guid><description>Artificial intelligence did not start with chatbots. It went through decades of bold predictions, two funding collapses, and a slow shift from hand-written rules to learning from data. This overview follows that path from the 1940s to the language models of the late 2010s.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>history</category><category>machine-learning</category></item><item><title>Agentic AI</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/agentic-ai/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/agentic-ai/</guid><description>A chat assistant answers. An agent acts: it plans, calls tools, reads the results, and keeps going until a goal is reached. This overview explains the agent loop, tools, and the harness around the model, how agents evolved since 2022, and where workflow tools like n8n and personal agents like OpenClaw fit.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>llm</category><category>agents</category><category>automation</category></item><item><title>AI and data privacy</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/ai-and-data-privacy/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/ai-and-data-privacy/</guid><description>Every prompt sends data somewhere. This overview follows that data: where it goes, how long it is kept, whether it trains future models, and what data protection law requires. It ends with practical rules for people and companies that want to use AI without leaking personal or confidential information.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>privacy</category><category>security</category></item><item><title>AI basic concepts</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/ai-basic-concepts/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/ai-basic-concepts/</guid><description>Model, training, token, prompt, context window, hallucination: a small set of terms explains most of what is said about AI. This overview defines each one in plain language and shows how they fit together, without math and without a specific product in mind.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>machine-learning</category><category>llm</category></item><item><title>AI glossary</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/ai-glossary/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/ai-glossary/</guid><description>A reference of the terms that come up when people talk about AI, from token and context window to harness, RAG, and alignment. Each entry gives a short definition and points to the article in this collection that explains the idea in more depth.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>llm</category><category>glossary</category></item><item><title>AI in software development</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/ai-in-software-development/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/ai-in-software-development/</guid><description>Software development changed faster with AI than almost any other kind of work. This overview follows the path from code completion to chat in the editor and autonomous coding agents, and covers what the tools do well, where they fail, and the habits that keep AI-written code trustworthy.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>llm</category><category>agents</category><category>software-development</category></item><item><title>AI regulation</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/ai-regulation/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/ai-regulation/</guid><description>Governments regulate AI in very different ways. The EU has a single law that sorts AI by risk, the United States relies on executive orders and state laws, and China regulates specific services. This overview explains the main approaches as of late 2026 and what they mean for companies that build or use AI.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>regulation</category></item><item><title>AI safety and risks</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/ai-safety-and-risks/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/ai-safety-and-risks/</guid><description>The risks of AI range from a chatbot inventing a fact to fears about systems that people can no longer control. This overview sorts the risks into groups, explains each in plain terms, and describes what companies, governments, and users do about them, including the open debate about human-level AI.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>security</category><category>safety</category></item><item><title>AI versus non-AI</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/ai-versus-non-ai/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/ai-versus-non-ai/</guid><description>A traditional program follows rules a developer wrote. An AI system follows rules it learned from examples, or instructions written in plain language. This comparison shows what that changes for correctness, testing, cost, and failure, and when each approach is the right one.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>machine-learning</category><category>llm</category></item><item><title>Evaluating AI models</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/evaluating-ai-models/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/evaluating-ai-models/</guid><description>Every new model claims top scores. This overview explains what benchmarks and leaderboards actually measure, why their numbers need care, and how to build a small evaluation of your own that answers the question that matters: is this model good enough for my task?</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>llm</category><category>evaluation</category></item><item><title>Frontier AI companies</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/frontier-ai-companies/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/frontier-ai-companies/</guid><description>A handful of companies build the most capable AI models, and a few more supply the chips and data centers those models run on. This overview sorts the leading companies by the role they play, names their main products, and explains how the layers depend on each other.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>llm</category><category>companies</category></item><item><title>Generative AI beyond text</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/generative-ai-beyond-text/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/generative-ai-beyond-text/</guid><description>The same advances that produced chat assistants also generate images, speech, music, and video. This overview explains how each kind of media is generated, what the tools are used for, and the questions they raise about copyright, consent, and telling real content from generated content.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>generative-ai</category></item><item><title>How large language models are built</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/how-large-language-models-are-built/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/how-large-language-models-are-built/</guid><description>A chat assistant is the end of a long pipeline: collecting text, training a model to predict the next token, teaching it to follow instructions, aligning it with human preferences, and testing it before release. This article walks through each stage and what it adds to the finished model.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>llm</category><category>machine-learning</category></item><item><title>Open-weight versus closed models</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/open-weight-versus-closed-models/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/open-weight-versus-closed-models/</guid><description>You can rent a model through a provider&apos;s API or download open weights and run the model yourself. This comparison explains what &quot;open&quot; really means for AI models, how the two options differ in capability, cost, privacy, and control, and when each one is the better choice.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>llm</category><category>open-weights</category></item><item><title>pnpm</title><link>https://bothe.at/code/building-bundling-and-packaging/pnpm/</link><guid isPermaLink="true">https://bothe.at/code/building-bundling-and-packaging/pnpm/</guid><description>pnpm keeps one copy of each dependency file and links it into every project that needs it. This page explains that layout, how it compares with npm, Yarn, and Bun, and the commands you run day to day.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>javascript</category><category>package-manager</category></item><item><title>Prompting fundamentals</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/prompting-fundamentals/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/prompting-fundamentals/</guid><description>The same model can give a vague answer or an excellent one, depending on what it is told. This overview covers what makes a prompt work: a clear task, enough context, examples, a defined output, and a habit of testing and revising, plus why context matters more as models get stronger.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>llm</category><category>prompting</category></item><item><title>Retrieval-augmented generation explained</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/retrieval-augmented-generation/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/retrieval-augmented-generation/</guid><description>A language model only knows its training data. Retrieval-augmented generation looks up relevant passages in your own documents and hands them to the model with the question. This article explains the indexing and query steps, where RAG systems go wrong, and how RAG compares with fine-tuning and long context windows.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>llm</category><category>rag</category></item><item><title>The cost of AI</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/the-cost-of-ai/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/the-cost-of-ai/</guid><description>AI has a price at every level: per token for a developer, per month for a user, billions for a training run, and terawatt-hours for the power grid. This overview explains where the money and energy go, why prices per task keep falling while total spending rises, and how to keep your own costs under control.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>ai</category><category>llm</category><category>energy</category></item><item><title>Yarn</title><link>https://bothe.at/code/building-bundling-and-packaging/yarn/yarn/</link><guid isPermaLink="true">https://bothe.at/code/building-bundling-and-packaging/yarn/yarn/</guid><description>Yarn keeps one zip of each package and, by default, points Node at those zips instead of copying them into node_modules. This page explains that layout, how it compares with npm, pnpm, and Bun, and the commands you run day to day.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>javascript</category><category>package-manager</category></item><item><title>Foundation Model Providers (LLMs &amp; APIs): Companies, Models, and Use Cases</title><link>https://bothe.at/code/artificial-intelligence/ai-fundamentals/foundation-model-providers/</link><guid isPermaLink="true">https://bothe.at/code/artificial-intelligence/ai-fundamentals/foundation-model-providers/</guid><description>Using a language model in your own software means picking a provider, a model family, and a way to call it. This page explains the ways to access models, how an API call and its pricing work, which providers offer which model families, and how to match a model to a use case.</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate><category>ai</category><category>llm</category><category>api</category></item><item><title>Code Execution Boundaries in Node.js: CLI, Modules, HTTP, RPC, and Process Isolation</title><link>https://bothe.at/code/open-standards-and-concepts/code-execution-boundaries-in-node-js-cli-modules-http-rpc-and-process-isolation/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/code-execution-boundaries-in-node-js-cli-modules-http-rpc-and-process-isolation/</guid><description>Modern Node.js applications expose functionality through many different invocation mechanisms. A piece of business logic might be executed directly inside the process, triggered through an HTTP…</description><pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate></item><item><title>VPC networks in Google Cloud</title><link>https://bothe.at/code/cloud-platforms/google-cloud-platform/networking/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/google-cloud-platform/networking/</guid><description>A VPC network is your private address space in GCP: subnets, routes, firewalls, NAT, and peering. This chapter maps those pieces on Google Cloud, including Direct VPC egress for Cloud Run.</description><pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate><category>gcp</category><category>networking</category><category>security</category></item><item><title>Mastering JSON in Bash: A Practical Guide to jq</title><link>https://bothe.at/code/consoles/jq/</link><guid isPermaLink="true">https://bothe.at/code/consoles/jq/</guid><description>APIs and CLI tools often print JSON. jq filters, formats, and reshapes that output on the pipe without loading it into an editor — this guide walks through the filters you reach for daily in Bash.</description><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate><category>bash</category><category>jq</category><category>json</category></item><item><title>Infrastructure as Code with Terraform</title><link>https://bothe.at/code/cloud-platforms/terraform/fundamentals/infrastructure-as-code-with-terraform/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/terraform/fundamentals/infrastructure-as-code-with-terraform/</guid><description>Terraform lets you describe cloud infrastructure in version-controlled configuration and reconcile it with a plan/apply loop. This overview covers why IaC matters, how Terraform&apos;s declarative model works, the core moving parts, the standard workflow, and authenticating to Google Cloud.</description><pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate><category>terraform</category><category>infrastructure-as-code</category><category>gcp</category></item><item><title>State data in Terraform</title><link>https://bothe.at/code/cloud-platforms/terraform/state/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/terraform/state/</guid><description>Terraform state maps configuration to real resource IDs and attributes. This page explains what state contains, local versus GCS backends with locking, state commands, import and moved blocks, drift, sensitive values, workspaces, and when to use remote state data sources.</description><pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate><category>terraform</category><category>infrastructure-as-code</category><category>gcp</category></item><item><title>Typical errors that occur when module types mismatch</title><link>https://bothe.at/code/languages/javascript-core/js-modules/typical-errors-that-occur-when-module-types-mismatch/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/js-modules/typical-errors-that-occur-when-module-types-mismatch/</guid><description>The following error indicates that you are attempting to use the require() statement to import an ECMAScript Module (ESM) in a context where CommonJS is expected. This error typically occurs when…</description><pubDate>Thu, 09 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Build-time vs Runtime modules</title><link>https://bothe.at/code/languages/javascript-core/js-modules/build-time-vs-runtime-modules/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/js-modules/build-time-vs-runtime-modules/</guid><description>Let&apos;s dive into how module systems behave at build-time vs runtime , and the distinctions between CommonJS (CJS) , ECMAScript Modules (ESM) , and tools like TypeScript and webpack . I’ll go step by…</description><pubDate>Tue, 02 Sep 2025 00:00:00 GMT</pubDate></item><item><title>File extensions for module imports</title><link>https://bothe.at/code/languages/javascript-core/js-modules/file-extensions-for-module-imports/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/js-modules/file-extensions-for-module-imports/</guid><description>If you want, I can make a visual map showing all 6 file extensions, what TypeScript sees, and what Node sees , with arrows showing what extension to use in each import. It’s a really handy cheat…</description><pubDate>Tue, 02 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Module interoperability</title><link>https://bothe.at/code/languages/javascript-core/js-modules/module-interoperability/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/js-modules/module-interoperability/</guid><description>This articles gives an overview about how the different modules systems can or cannot be used together.</description><pubDate>Tue, 02 Sep 2025 00:00:00 GMT</pubDate><category>javascript</category></item><item><title>Subpath imports and exports in package.json</title><link>https://bothe.at/code/languages/javascript-core/js-modules/subpath-imports-and-exports-in-package-json/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/js-modules/subpath-imports-and-exports-in-package-json/</guid><description>Let’s take a look at subpath imports and exports in Node.js , how they interact with TypeScript compiler settings , and what the practical use cases and best practices are.</description><pubDate>Tue, 02 Sep 2025 00:00:00 GMT</pubDate></item><item><title>AMD and UMD</title><link>https://bothe.at/code/languages/javascript-core/js-modules/amd-and-umd/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/js-modules/amd-and-umd/</guid><description>In the world of JavaScript, modularity is key to writing clean, maintainable, and scalable code. Two popular module formats that have emerged to facilitate this are AMD (Asynchronous Module…</description><pubDate>Mon, 18 Nov 2024 00:00:00 GMT</pubDate></item><item><title>CommonJS modules</title><link>https://bothe.at/code/languages/javascript-core/js-modules/commonjs-modules/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/js-modules/commonjs-modules/</guid><description>CommonJS modules have been a foundational part of JavaScript, especially in Node.js, since before ES modules (ESM) were officially adopted. Designed to enable modular and maintainable code, CommonJS…</description><pubDate>Mon, 18 Nov 2024 00:00:00 GMT</pubDate></item><item><title>ES modules</title><link>https://bothe.at/code/languages/javascript-core/js-modules/es6-modules/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/js-modules/es6-modules/</guid><description>ESM, or ECMAScript Modules, is the official module system introduced in ECMAScript 6 (ES6), also known as ECMAScript 2015. ESM provides a native, standardized way to organize and structure code in…</description><pubDate>Mon, 18 Nov 2024 00:00:00 GMT</pubDate></item><item><title>Modules in Bundlers</title><link>https://bothe.at/code/languages/javascript-core/js-modules/modules-in-bundlers/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/js-modules/modules-in-bundlers/</guid><description>The need to specify file extensions in import statements depends on your runtime and compilation environment, and also on whether you are using ES modules (the  import  syntax) or CommonJS modules…</description><pubDate>Mon, 18 Nov 2024 00:00:00 GMT</pubDate></item><item><title>Authentication Mechanisms in Web Technology: An Overview</title><link>https://bothe.at/code/open-standards-and-concepts/authentication/authentication-mechanisms-in-web-technology-an-overview/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/authentication/authentication-mechanisms-in-web-technology-an-overview/</guid><description>To better understand this article, I recommend reading my article on Authentication - Terms and concepts .</description><pubDate>Sun, 17 Nov 2024 00:00:00 GMT</pubDate></item><item><title>Authentication - Terms and concepts</title><link>https://bothe.at/code/open-standards-and-concepts/authentication/authentication-related-terminology/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/authentication/authentication-related-terminology/</guid><description>Authentication and authorization are foundational concepts in web security, yet they are often confused.</description><pubDate>Sun, 17 Nov 2024 00:00:00 GMT</pubDate></item><item><title>Network Tunneling</title><link>https://bothe.at/code/open-standards-and-concepts/networking/network-tunneling/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/networking/network-tunneling/</guid><description>Network tunneling is a technique used to securely transport data from one network to another. It encapsulates the data packets of one protocol (e.g. HTTP) within the packets of another protocol (e.g.…</description><pubDate>Sun, 21 Jul 2024 00:00:00 GMT</pubDate></item><item><title>Testing TypeScript with Jest</title><link>https://bothe.at/code/testing/jest/testing-typescript-with-jest/</link><guid isPermaLink="true">https://bothe.at/code/testing/jest/testing-typescript-with-jest/</guid><description>Refer to https://jestjs.io/docs/getting-started</description><pubDate>Fri, 05 Apr 2024 00:00:00 GMT</pubDate><category>javascript</category><category>testing</category></item><item><title>Decorators in TypeScript</title><link>https://bothe.at/code/languages/typescript-core/decorators-in-typescript/</link><guid isPermaLink="true">https://bothe.at/code/languages/typescript-core/decorators-in-typescript/</guid><description>TypeScript decorators are a way to modify or extend the behavior of classes, methods, or properties in a declarative manner. They are denoted by the @ symbol and are applied using a syntax similar to…</description><pubDate>Thu, 20 Apr 2023 00:00:00 GMT</pubDate><category>decorator</category><category>javascript</category></item><item><title>JetBrains IDE shortcuts for effective code navigation</title><link>https://bothe.at/code/integrated-development-environments/jetbrains-ide-shortcuts-for-effective-code-navigation/</link><guid isPermaLink="true">https://bothe.at/code/integrated-development-environments/jetbrains-ide-shortcuts-for-effective-code-navigation/</guid><description>Ctrl + Shift + Backspace : Go back to the previous edited position Ctrl + Shift + E : Display recent code positions Ctrl + B : Go to declaration Ctrl + F12 : Show current file structure F2 : Go to…</description><pubDate>Thu, 20 Apr 2023 00:00:00 GMT</pubDate></item><item><title>Alignment Cheatsheet for CSS and Tailwind</title><link>https://bothe.at/code/html-css/tailwind/</link><guid isPermaLink="true">https://bothe.at/code/html-css/tailwind/</guid><description>Tailwind’s alignment utilities are the CSS justify and align properties with shorter names. This sheet pairs each utility with the property it sets, whether it moves on the inline or stacking axis, and which boxes it applies to.</description><pubDate>Wed, 29 Mar 2023 00:00:00 GMT</pubDate><category>css</category><category>tailwind</category></item><item><title>A quick introduction to modules</title><link>https://bothe.at/code/languages/javascript-core/js-modules/module-types-in-javascript-and-typescript-and-fixes-for-common-problems/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/js-modules/module-types-in-javascript-and-typescript-and-fixes-for-common-problems/</guid><description>JavaScript uses several module systems in the wild — CommonJS, ESM, and legacy AMD/UMD — each shaped by its host. This introduction maps those systems before the deeper chapters in the JS Modules series.</description><pubDate>Mon, 20 Feb 2023 00:00:00 GMT</pubDate><category>javascript</category><category>modules</category></item><item><title>Yarn link</title><link>https://bothe.at/code/building-bundling-and-packaging/yarn/yarn-link/</link><guid isPermaLink="true">https://bothe.at/code/building-bundling-and-packaging/yarn/yarn-link/</guid><description>yarn link is a command that allows you to link a local npm package to your current project. Why is that useful? To consume code of a package you usually simply install the package as a dependency to…</description><pubDate>Mon, 20 Feb 2023 00:00:00 GMT</pubDate></item><item><title>Caching</title><link>https://bothe.at/code/open-standards-and-concepts/caching/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/caching/</guid><description>A cache&apos;s primary purpose is  to increase data retrieval performance by reducing the need to access the underlying slower storage layer . Trading off capacity for speed, a cache typically stores a…</description><pubDate>Wed, 01 Feb 2023 00:00:00 GMT</pubDate></item><item><title>JWT, JWS, JWE, and JOSE</title><link>https://bothe.at/code/open-standards-and-concepts/authentication/web-tokens-jwt-jws-jwe-jose/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/authentication/web-tokens-jwt-jws-jwe-jose/</guid><description>JOSE is the specification family for signing and encrypting a set of claims in a URL-safe token. This page separates JWT, JWS, JWE, and JWK, shows how the compact forms are assembled, and lists the checks a recipient makes before trusting those claims.</description><pubDate>Wed, 18 Jan 2023 00:00:00 GMT</pubDate><category>authentication</category><category>jwt</category><category>security</category></item><item><title>Defining object properties in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/objects-and-classes/defining-object-properties-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/objects-and-classes/defining-object-properties-in-javascript/</guid><description>Object.defineProperty and friends attach data or accessor descriptors with explicit writable, enumerable, and configurable flags—closer to Java Bean descriptors than to a simple field assignment.</description><pubDate>Wed, 11 Jan 2023 00:00:00 GMT</pubDate><category>javascript</category></item><item><title>Searching in GitHub</title><link>https://bothe.at/code/version-control-systems/github/github/</link><guid isPermaLink="true">https://bothe.at/code/version-control-systems/github/github/</guid><description>GitHub search spans code, paths, commits, issues, and pull requests with qualifiers such as in:file, language, and repo—plus links to the docs when you need the full query syntax.</description><pubDate>Wed, 11 Jan 2023 00:00:00 GMT</pubDate><category>github</category><category>version-control</category></item><item><title>API Routes and middleware in NextJS</title><link>https://bothe.at/code/server-development/nextjs/api-routes-and-middleware-in-nextjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nextjs/api-routes-and-middleware-in-nextjs/</guid><description>API Routes let you create an API endpoint inside a Next.js app. An endpoint that shall be available at localhost:3000/api/hello must have a file pages/api/hello.js with the following content:</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate><category>nextjs</category></item><item><title>Customizing App, Document and Error Pages in NextJS</title><link>https://bothe.at/code/server-development/nextjs/customizing-app-document-and-error-pages-in-nextjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nextjs/customizing-app-document-and-error-pages-in-nextjs/</guid><description>Next.js uses the App component to initialize pages. You can override it creating a ./pages/_app.js file if, for example. you want to do some of the following things:</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate><category>nextjs</category></item><item><title>Deploying a NextJS app</title><link>https://bothe.at/code/server-development/nextjs/deploying-a-nextjs-app/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nextjs/deploying-a-nextjs-app/</guid><description>next build builds the production application in the .next folder. After building, next start starts a Node.js server that supports hybrid pages , serving both statically generated and server-side…</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate><category>nextjs</category></item><item><title>Environment variables in NextJS</title><link>https://bothe.at/code/server-development/nextjs/environment-variables-in-nextjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nextjs/environment-variables-in-nextjs/</guid><description>Next.js has built-in support for loading environment variables from .env.local into process.env .</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate><category>nextjs</category></item><item><title>Handling images and other assets in NestJS</title><link>https://bothe.at/code/server-development/nextjs/handling-images-and-other-assets-in-nestjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nextjs/handling-images-and-other-assets-in-nestjs/</guid><description>Files inside public can be referenced from the root of the application. That is useful to serve static assets like robots.txt and images. For example, if you add an image to public/me.png , the…</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate><category>nextjs</category></item><item><title>Next CLI</title><link>https://bothe.at/code/server-development/nextjs/next-cli/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nextjs/next-cli/</guid><description>// Start the application in development mode (hot-code reloading, error reporting, etc) next dev next dev mydir -p 8080 // build application in current directory&apos;s .next folder next build next build…</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate><category>nextjs</category></item><item><title>Pages, Routing and Navigation in NextJS</title><link>https://bothe.at/code/server-development/nextjs/pages-routing-and-navigation-in-nextjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nextjs/pages-routing-and-navigation-in-nextjs/</guid><description>In Next.js, a page is a React Component exported from a file ( .js , .jsx , .ts , or .tsx ) in the pages directory . The component can have any name, but you must export it as a default export.</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate><category>nextjs</category></item><item><title>Rendering and data fetching in NextJS</title><link>https://bothe.at/code/server-development/nextjs/rendering-and-data-fetching-in-nextjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nextjs/rendering-and-data-fetching-in-nextjs/</guid><description>Each generated HTML is associated with minimal JavaScript code necessary for that page. When a page is loaded by the browser, its JavaScript code runs and makes the page fully interactive. This…</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate><category>nextjs</category></item><item><title>Installing NextJS</title><link>https://bothe.at/code/server-development/nextjs/setting-up-nextjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nextjs/setting-up-nextjs/</guid><description>As of december 2022 you need node version 14.6 or later to run NextJS.</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate><category>nextjs</category></item><item><title>Styling in NextJS</title><link>https://bothe.at/code/server-development/nextjs/styling-in-nextjs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nextjs/styling-in-nextjs/</guid><description>Next.js allows several possibilities for styling:</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate><category>nextjs</category></item><item><title>Testing with Jest in NextJS for TypeScript</title><link>https://bothe.at/code/server-development/nextjs/testing-with-jest-in-nextjs-for-typescript/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nextjs/testing-with-jest-in-nextjs-for-typescript/</guid><description>Add to package.json :</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate><category>nextjs</category></item><item><title>Using NextJS with TypeScript</title><link>https://bothe.at/code/server-development/nextjs/using-nextjs-with-typescript/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nextjs/using-nextjs-with-typescript/</guid><description>Create an empty tsconfig.json file in the root of your project and add dependencies:</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate><category>nextjs</category></item><item><title>Semantic Versioning</title><link>https://bothe.at/code/open-standards-and-concepts/semantic-versioning/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/semantic-versioning/</guid><description>A version of 3.6.12 means</description><pubDate>Sun, 13 Nov 2022 00:00:00 GMT</pubDate></item><item><title>Docker networking</title><link>https://bothe.at/code/virtualization/docker/docker-networking/</link><guid isPermaLink="true">https://bothe.at/code/virtualization/docker/docker-networking/</guid><description>Docker connects containers with bridge networks, veth pairs, and drivers. This page covers compose-style networking; the Linux host stack—iproute2, nftables, and interface naming—is in the Linux networking chapter.</description><pubDate>Wed, 09 Nov 2022 00:00:00 GMT</pubDate><category>docker</category><category>network</category><category>linux</category></item><item><title>Docker Volumes</title><link>https://bothe.at/code/virtualization/docker/docker-volumes/</link><guid isPermaLink="true">https://bothe.at/code/virtualization/docker/docker-volumes/</guid><description>Containers have a &quot;scratch space&quot; that allows you to store files only temporarily, meaning as long as the container is running. But once the container stopped the data is gone.</description><pubDate>Wed, 09 Nov 2022 00:00:00 GMT</pubDate><category>docker</category></item><item><title>Installing Docker</title><link>https://bothe.at/code/virtualization/docker/installing-docker/</link><guid isPermaLink="true">https://bothe.at/code/virtualization/docker/installing-docker/</guid><description>Docker Toolbox is outdated and I won&apos;t describe it in this article, but it used to be the only option for Windows 7/8 users in the past. It includes Docker Client, Docker Compose, Docker Kitematic…</description><pubDate>Wed, 09 Nov 2022 00:00:00 GMT</pubDate><category>docker</category></item><item><title>Managing Docker containers</title><link>https://bothe.at/code/virtualization/docker/managing-docker-containers/</link><guid isPermaLink="true">https://bothe.at/code/virtualization/docker/managing-docker-containers/</guid><description>Run docker inspect &lt;container&gt; to check it. The result could be:</description><pubDate>Wed, 09 Nov 2022 00:00:00 GMT</pubDate><category>docker</category></item><item><title>Managing Docker images</title><link>https://bothe.at/code/virtualization/docker/managing-docker-images/</link><guid isPermaLink="true">https://bothe.at/code/virtualization/docker/managing-docker-images/</guid><description>An image actually consists of many images, aka image layers. The main reasons being that those can be cached and thus don&apos;t have to be rebuild every time you create an image.</description><pubDate>Wed, 09 Nov 2022 00:00:00 GMT</pubDate><category>docker</category></item><item><title>Debug NextJS with Nx in Jetbrains</title><link>https://bothe.at/code/server-development/nextjs/debug-nextjs-with-nx-in-jetbrains/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nextjs/debug-nextjs-with-nx-in-jetbrains/</guid><description>Creating a debug session for NextJS within a Nx workspace is not an easy straightforward task as this NX issue shows (after two years the issue is still open). Solutions are mentioned for VSCode, but…</description><pubDate>Thu, 03 Nov 2022 00:00:00 GMT</pubDate><category>jetbrains</category><category>nextjs</category><category>nx</category></item><item><title>Proxy-, Reverse-Proxy Server and Load Balancer</title><link>https://bothe.at/code/open-standards-and-concepts/networking/proxy-reverse-proxy-server-and-load-balancer/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/networking/proxy-reverse-proxy-server-and-load-balancer/</guid><description>Client and Proxy are in the same network. If a client wants to communicate with a resource outside of the network, it does not do so directly, but instead asks the proxy to do that. Reasons why that…</description><pubDate>Wed, 02 Nov 2022 00:00:00 GMT</pubDate></item><item><title>REST vs RPC</title><link>https://bothe.at/code/open-standards-and-concepts/rest-vs-rpc/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/rest-vs-rpc/</guid><description>Representational State Transfer (ReST or REST) follows a structured approach and necessitates that developers clearly organize their resources using universal resource identifiers ( URIs ). REST APIs…</description><pubDate>Wed, 02 Nov 2022 00:00:00 GMT</pubDate></item><item><title>Managing different node version with nvm on Windows</title><link>https://bothe.at/code/server-development/nodejs/managing-different-node-version-with-nvm-on-windows/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nodejs/managing-different-node-version-with-nvm-on-windows/</guid><description>Nvm ( Node Version Manager ) allows you to quickly install and use different versions of node via the command line.</description><pubDate>Mon, 31 Oct 2022 00:00:00 GMT</pubDate><category>nodejs</category></item><item><title>SinonJS with Mocha</title><link>https://bothe.at/code/testing/sinonjs-with-mocha/</link><guid isPermaLink="true">https://bothe.at/code/testing/sinonjs-with-mocha/</guid><description>Fakes, spies and stubs are created in the default sandbox which needs to be restored after each test to prevent memory leaks. We use a Mocha hook plugin for that:</description><pubDate>Mon, 31 Oct 2022 00:00:00 GMT</pubDate><category>javascript</category><category>testing</category></item><item><title>The concepts of testing</title><link>https://bothe.at/code/testing/the-concepts-of-testing/</link><guid isPermaLink="true">https://bothe.at/code/testing/the-concepts-of-testing/</guid><description>When it comes to speaking how many tests there should be for each test type then you can assume that you will write mostly Unit Tests, a moderate amount of Integration Tests and a relatively small…</description><pubDate>Sun, 30 Oct 2022 00:00:00 GMT</pubDate><category>javascript</category><category>testing</category></item><item><title>Ethernet and Switching</title><link>https://bothe.at/code/open-standards-and-concepts/networking/ethernet-and-switching/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/networking/ethernet-and-switching/</guid><description>CSMA/CD (Carrier Sense Multiple Access with Collision Detection). In an old fashioned Bus structure all connected devices were listening and sending on the same wire one at a time. If a device…</description><pubDate>Thu, 27 Oct 2022 00:00:00 GMT</pubDate><category>network</category></item><item><title>IP Addressing</title><link>https://bothe.at/code/open-standards-and-concepts/networking/ip-addressing/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/networking/ip-addressing/</guid><description>Classful Addressing was used mainly before 1995. Today Classless Addressing is used.</description><pubDate>Thu, 27 Oct 2022 00:00:00 GMT</pubDate><category>network</category></item><item><title>IP Routing</title><link>https://bothe.at/code/open-standards-and-concepts/networking/ip-routing/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/networking/ip-routing/</guid><description>IP Routing is all about sending information from one IP address to another. That might sound like a straight forward thing to do, but it gets a bit complicated, because a destination IP address often…</description><pubDate>Thu, 27 Oct 2022 00:00:00 GMT</pubDate><category>network</category></item><item><title>Network topology</title><link>https://bothe.at/code/open-standards-and-concepts/networking/network-topology/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/networking/network-topology/</guid><description>There used to be Bus (every device on one wire) and Token Ring by IBM (a token goes around in a ring and visits every device), but today it is mostly a Star topology (many devices connected to a…</description><pubDate>Thu, 27 Oct 2022 00:00:00 GMT</pubDate><category>network</category></item><item><title>Network segmentation</title><link>https://bothe.at/code/open-standards-and-concepts/networking/vlan/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/networking/vlan/</guid><description>Network segmentation is a fundamental practice in modern network design aimed at enhancing performance, security, and manageability. By dividing a larger network into smaller, isolated segments,…</description><pubDate>Thu, 27 Oct 2022 00:00:00 GMT</pubDate><category>network</category></item><item><title>Error handling in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/language-basics/error-handling-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/language-basics/error-handling-in-javascript/</guid><description>JavaScript has no compile step in the browser: syntax fails at parse time, everything else surfaces at runtime through throw and the Error hierarchy. try/catch/finally, the cause option, custom Error subclasses, and AggregateError cover sync code and Promise rejection paths.</description><pubDate>Fri, 21 Oct 2022 00:00:00 GMT</pubDate><category>javascript</category><category>errors</category></item><item><title>QuickTip: React forwardRef with TypeScript</title><link>https://bothe.at/code/ui-development/react/react-forwarref-with-typescript/</link><guid isPermaLink="true">https://bothe.at/code/ui-development/react/react-forwarref-with-typescript/</guid><description>import {HTMLAttributes, FC, forwardRef} from &apos;react&apos; interface Props extends HTMLAttributes&lt;HTMLDivElement&gt; { } export const PageCover = forwardRef&lt;HTMLDivElement, Props&gt;((props, ref) =&gt; { return (…</description><pubDate>Sun, 16 Oct 2022 00:00:00 GMT</pubDate><category>react</category></item><item><title>JavaScript Fails</title><link>https://bothe.at/code/languages/javascript-core/values-and-types/javascript-fails/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/values-and-types/javascript-fails/</guid><description>JavaScript will look you in the eye and insist that these results are normal. NaN is a number, 0.1 + 0.2 is not 0.3, and two empty arrays added together become a string. This page keeps each famous expression, the value it produces, and the rule that makes the despair official.</description><pubDate>Fri, 14 Oct 2022 00:00:00 GMT</pubDate><category>javascript</category></item><item><title>Commands and tasks in NX</title><link>https://bothe.at/code/building-bundling-and-packaging/nx/commands-and-tasks-in-nx/</link><guid isPermaLink="true">https://bothe.at/code/building-bundling-and-packaging/nx/commands-and-tasks-in-nx/</guid><description>In NX a command represents something like nx run header:build , whereas build is the target , header is the project and header:build is the task .</description><pubDate>Mon, 10 Oct 2022 00:00:00 GMT</pubDate><category>nx</category></item><item><title>Apps and libs with NX</title><link>https://bothe.at/code/building-bundling-and-packaging/nx/generating-apps-and-libs-with-nx/</link><guid isPermaLink="true">https://bothe.at/code/building-bundling-and-packaging/nx/generating-apps-and-libs-with-nx/</guid><description>There are many different kinds of applications you can create, such as React, Angular, Express, Node etc. Nx is lets you add those via plugins. If you create your first workspace then you can…</description><pubDate>Mon, 10 Oct 2022 00:00:00 GMT</pubDate><category>nx</category></item><item><title>Setting up a workspace in Nx</title><link>https://bothe.at/code/building-bundling-and-packaging/nx/setting-up-a-workspace-in-nx/</link><guid isPermaLink="true">https://bothe.at/code/building-bundling-and-packaging/nx/setting-up-a-workspace-in-nx/</guid><description>A  monorepo  is a version-controlled code repository that holds many projects. While these projects may be related, they are often logically independent and run by different teams. NX is a build…</description><pubDate>Mon, 10 Oct 2022 00:00:00 GMT</pubDate><category>nx</category></item><item><title>Updating Nx and its dependencies</title><link>https://bothe.at/code/building-bundling-and-packaging/nx/updating-nx-and-its-dependencies/</link><guid isPermaLink="true">https://bothe.at/code/building-bundling-and-packaging/nx/updating-nx-and-its-dependencies/</guid><description>Updating to the latest version of Nx involves these steps.</description><pubDate>Mon, 10 Oct 2022 00:00:00 GMT</pubDate><category>nx</category></item><item><title>Using Nx with Jetbrains IDE</title><link>https://bothe.at/code/building-bundling-and-packaging/nx/using-nx-with-jetbrains-ide/</link><guid isPermaLink="true">https://bothe.at/code/building-bundling-and-packaging/nx/using-nx-with-jetbrains-ide/</guid><description>Here is how you have to configure Jetbrains IDE to make Jest work within a NX workspace. When I say &quot;work&quot; I mean to make it possible that Jetbrains UI is used to visually indicate failed and…</description><pubDate>Mon, 10 Oct 2022 00:00:00 GMT</pubDate><category>nx</category></item><item><title>Async generator in TypeScript</title><link>https://bothe.at/code/languages/typescript-core/async-generator-in-typescript/</link><guid isPermaLink="true">https://bothe.at/code/languages/typescript-core/async-generator-in-typescript/</guid><description>TypeScript types async generators with AsyncGenerator, AsyncIterable, and AsyncIterator so yield and for await..of stay checked at compile time. This page covers return types, TReturn/TNext, and typing consumers.</description><pubDate>Wed, 05 Oct 2022 00:00:00 GMT</pubDate><category>typescript</category><category>async</category><category>generators</category></item><item><title>Module resolution deep-dive</title><link>https://bothe.at/code/languages/javascript-core/js-modules/module-resolution-in-typescript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/js-modules/module-resolution-in-typescript/</guid><description>or Non-relatively:</description><pubDate>Wed, 05 Oct 2022 00:00:00 GMT</pubDate><category>typescript</category></item><item><title>QuickTip: Automatically switch light and dark mode in Windows</title><link>https://bothe.at/code/operating-systems/windows/schedule-light-and-dark-mode-in-windows/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/windows/schedule-light-and-dark-mode-in-windows/</guid><description>Install Auto Dark Mode from https://github.com/AutoDarkMode/Windows-Auto-Night-Mode by using a command prompt with administrative rights and then run:</description><pubDate>Wed, 05 Oct 2022 00:00:00 GMT</pubDate><category>windows</category></item><item><title>Symbols in TypeScript</title><link>https://bothe.at/code/languages/typescript-core/symbols-in-typescript/</link><guid isPermaLink="true">https://bothe.at/code/languages/typescript-core/symbols-in-typescript/</guid><description>TypeScript treats symbol keys as a distinct property kind with unique typing rules. This page shows how to declare symbol properties, narrow objects that carry them, and avoid accidental string-key collisions in typed APIs.</description><pubDate>Wed, 05 Oct 2022 00:00:00 GMT</pubDate><category>typescript</category></item><item><title>Type Guards in TypeScript</title><link>https://bothe.at/code/languages/typescript-core/type-guards-in-typescript/</link><guid isPermaLink="true">https://bothe.at/code/languages/typescript-core/type-guards-in-typescript/</guid><description>Type Guards are used to check whether you are dealing with a certain type or not. Getting from a more general type to a more specific type is called Narrowing . There are different ways to &apos;type…</description><pubDate>Wed, 05 Oct 2022 00:00:00 GMT</pubDate><category>typescript</category></item><item><title>TypeScript installation and configuration</title><link>https://bothe.at/code/languages/typescript-core/typescript-installation-and-configuration/</link><guid isPermaLink="true">https://bothe.at/code/languages/typescript-core/typescript-installation-and-configuration/</guid><description>Now you can use the TypeScript compiler running tsc . To test whether a TypeScript file compiles create a simple file:</description><pubDate>Wed, 05 Oct 2022 00:00:00 GMT</pubDate><category>typescript</category></item><item><title>Utility Types in TypeScript</title><link>https://bothe.at/code/languages/typescript-core/utility-types-in-typescript/</link><guid isPermaLink="true">https://bothe.at/code/languages/typescript-core/utility-types-in-typescript/</guid><description>Utility types let you create types based on other types. Have a look at the official TypeScript page for example about utility types.</description><pubDate>Wed, 05 Oct 2022 00:00:00 GMT</pubDate><category>typescript</category></item><item><title>Resetting Windows files and folder permissions</title><link>https://bothe.at/code/operating-systems/windows/resetting-windows-files-and-folder-permissions/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/windows/resetting-windows-files-and-folder-permissions/</guid><description>Open the command prompt with administrative rights, then run one of these:</description><pubDate>Mon, 03 Oct 2022 00:00:00 GMT</pubDate><category>windows</category></item><item><title>Scan and fix corrupted Windows system files</title><link>https://bothe.at/code/operating-systems/windows/scan-and-fix-corrupted-windows-system-files/</link><guid isPermaLink="true">https://bothe.at/code/operating-systems/windows/scan-and-fix-corrupted-windows-system-files/</guid><description>Start a command prompt with administrative privileges, then run</description><pubDate>Mon, 03 Oct 2022 00:00:00 GMT</pubDate><category>windows</category></item><item><title>Set in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/collections/set-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/collections/set-in-javascript/</guid><description>A Set stores unique values using SameValueZero equality—handy for deduplication, membership tests, and set algebra. This page covers construction, iteration, and the native union/intersection helpers added in ES2025.</description><pubDate>Wed, 28 Sep 2022 00:00:00 GMT</pubDate><category>javascript</category><category>collections</category></item><item><title>QuickTip: Force a non-empty array in TypeScript</title><link>https://bothe.at/code/languages/typescript-core/force-a-non-empty-array-in-typescript/</link><guid isPermaLink="true">https://bothe.at/code/languages/typescript-core/force-a-non-empty-array-in-typescript/</guid><description>This is how you can force TypeScript to always have at least one item in an array. Or in other words: to not allow empty arrays.</description><pubDate>Fri, 01 Apr 2022 00:00:00 GMT</pubDate><category>typescript</category></item><item><title>QuickTip: Grouping React components in surrounding components</title><link>https://bothe.at/code/ui-development/react/grouping-react-components-in-surrounding-components/</link><guid isPermaLink="true">https://bothe.at/code/ui-development/react/grouping-react-components-in-surrounding-components/</guid><description>Let&apos;s assume you have an array of data:</description><pubDate>Fri, 07 Jan 2022 00:00:00 GMT</pubDate><category>react</category></item><item><title>PowerShell</title><link>https://bothe.at/code/consoles/powershell/</link><guid isPermaLink="true">https://bothe.at/code/consoles/powershell/</guid><description>PowerShell is a shell and a scripting language whose pipeline carries objects. This overview explains how that differs from bash, how Windows PowerShell 5.1 and PowerShell 7 relate, where the current release runs, and when a .ps1 script is the right tool.</description><pubDate>Fri, 05 Nov 2021 00:00:00 GMT</pubDate><category>shell</category><category>powershell</category></item><item><title>Testing with Cypress.io 12</title><link>https://bothe.at/code/testing/testing-with-cypress-io-12/</link><guid isPermaLink="true">https://bothe.at/code/testing/testing-with-cypress-io-12/</guid><description>Selenium and most other testing tools run outside of the browser and execute remote commands across the network. Cypress does the opposite as it is executed in the same run loop as the application.…</description><pubDate>Fri, 08 Oct 2021 00:00:00 GMT</pubDate><category>testing</category></item><item><title>QuickTip: Filter object properties by key</title><link>https://bothe.at/code/languages/javascript-core/objects-and-classes/filter-object-properties-by-key/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/objects-and-classes/filter-object-properties-by-key/</guid><description>Pick or drop keys on a plain object without mutating the original—destructuring for one key, Object.fromEntries with filter for allowlists.</description><pubDate>Mon, 12 Jul 2021 00:00:00 GMT</pubDate><category>javascript</category></item><item><title>Firestore with NextJS</title><link>https://bothe.at/code/firebase/firestore-with-nextjs/</link><guid isPermaLink="true">https://bothe.at/code/firebase/firestore-with-nextjs/</guid><description>Cloud Firestore is a cloud-hosted, NoSQL database that your iOS, Android, and web apps can access directly via native SDKs.</description><pubDate>Sun, 11 Jul 2021 00:00:00 GMT</pubDate><category>firebase</category><category>nextjs</category></item><item><title>QuickTip: Use useRef to fix React state update on unmounted component</title><link>https://bothe.at/code/ui-development/react/use-useref-to-fix-react-state-update-on-unmounted-component/</link><guid isPermaLink="true">https://bothe.at/code/ui-development/react/use-useref-to-fix-react-state-update-on-unmounted-component/</guid><description>When React tries to set state on a component that has been unmounted from the DOM you get that error:</description><pubDate>Wed, 26 May 2021 00:00:00 GMT</pubDate><category>react</category></item><item><title>React with Recoil state management</title><link>https://bothe.at/code/ui-development/react/react-with-recoil-state-management/</link><guid isPermaLink="true">https://bothe.at/code/ui-development/react/react-with-recoil-state-management/</guid><description>Add RecoilRoot to your root component</description><pubDate>Tue, 25 May 2021 00:00:00 GMT</pubDate><category>react</category></item><item><title>React and rerendering</title><link>https://bothe.at/code/ui-development/react/react-and-rerendering/</link><guid isPermaLink="true">https://bothe.at/code/ui-development/react/react-and-rerendering/</guid><description>A functional component will refresh any time it receives new props, more precisely if its old and new props fail a referential identity check.</description><pubDate>Mon, 24 May 2021 00:00:00 GMT</pubDate><category>react</category></item><item><title>CSS Flexbox in Tailwind</title><link>https://bothe.at/code/html-css/css-flexbox-in-tailwind/</link><guid isPermaLink="true">https://bothe.at/code/html-css/css-flexbox-in-tailwind/</guid><description>Flexbox lays out items in a single row or column and decides where the leftover space goes. This page explains the two axes that every flex class refers to, then walks through Tailwind&apos;s direction, alignment, wrapping, and sizing classes with live demos you can change.</description><pubDate>Sat, 22 May 2021 00:00:00 GMT</pubDate><category>css</category><category>tailwind</category><category>layout</category></item><item><title>QuickTip: Smooth scrolling effect with pure CSS only</title><link>https://bothe.at/code/html-css/quicktip-smooth-scrolling-effect-with-pure-css-only/</link><guid isPermaLink="true">https://bothe.at/code/html-css/quicktip-smooth-scrolling-effect-with-pure-css-only/</guid><description>Smooth scrolling effect with pure CSS only, without JavaScript</description><pubDate>Mon, 17 May 2021 00:00:00 GMT</pubDate><category>css</category></item><item><title>Google Cloud cheat sheet</title><link>https://bothe.at/code/cloud-platforms/google-cloud-platform/google-cloud-cheat-sheet/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/google-cloud-platform/google-cloud-cheat-sheet/</guid><description>Scannable gcloud commands for projects, IAM, Cloud Storage, Artifact Registry, Cloud Run, Cloud Build, logging, and monitoring—grouped for quick lookup beside the Google Cloud Platform series.</description><pubDate>Tue, 13 Apr 2021 00:00:00 GMT</pubDate><category>gcp</category><category>cheat-sheet</category></item><item><title>Types in TypeScript</title><link>https://bothe.at/code/languages/typescript-core/nodejs-with-typescript/</link><guid isPermaLink="true">https://bothe.at/code/languages/typescript-core/nodejs-with-typescript/</guid><description>Boolean, Number, String, Array, Enum, Void, Null, Undefined, Never, Any.</description><pubDate>Tue, 06 Apr 2021 00:00:00 GMT</pubDate><category>typescript</category></item><item><title>QuickStart: React with TypeScript</title><link>https://bothe.at/code/ui-development/react/react-with-typescript-the-essence/</link><guid isPermaLink="true">https://bothe.at/code/ui-development/react/react-with-typescript-the-essence/</guid><description>You need Node &gt;= 10.16 and npm &gt;= 5.6 .</description><pubDate>Tue, 06 Apr 2021 00:00:00 GMT</pubDate><category>react</category></item><item><title>Bundling files with Webpack 5</title><link>https://bothe.at/code/building-bundling-and-packaging/webpack/</link><guid isPermaLink="true">https://bothe.at/code/building-bundling-and-packaging/webpack/</guid><description>Your application might consist of hundreds of files. To run those files in production you need to optimize them. There are many ways to optimize your source code for production. Webpack is helping…</description><pubDate>Thu, 25 Feb 2021 00:00:00 GMT</pubDate></item><item><title>Google Cloud Storage</title><link>https://bothe.at/code/cloud-platforms/google-cloud-platform/storage/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/google-cloud-platform/storage/</guid><description>Cloud Storage holds object data in buckets with storage classes, lifecycle rules, and IAM. This chapter places GCS next to disks and databases, configures a bucket for the series API, and implements upload and list with the Node.js client.</description><pubDate>Tue, 02 Feb 2021 00:00:00 GMT</pubDate><category>gcp</category><category>nodejs</category><category>typescript</category></item><item><title>OSI Model</title><link>https://bothe.at/code/open-standards-and-concepts/networking/networking-concepts-and-protocols/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/networking/networking-concepts-and-protocols/</guid><description>The OSI model groups network behavior into seven layers for teaching and troubleshooting. This page maps common protocols to those layers; Linux host configuration—interfaces, routing, and firewalls—lives in the Linux networking chapter.</description><pubDate>Fri, 22 Jan 2021 00:00:00 GMT</pubDate><category>network</category></item><item><title>Packaging Kubernetes applications with Helm</title><link>https://bothe.at/code/virtualization/kubernetes/packaging-kubernetes-applications-with-helm/</link><guid isPermaLink="true">https://bothe.at/code/virtualization/kubernetes/packaging-kubernetes-applications-with-helm/</guid><description>What is Helm and why would you need it? What problem does it solve?</description><pubDate>Tue, 19 Jan 2021 00:00:00 GMT</pubDate><category>kubernetes</category></item><item><title>Kubernetes Deployments</title><link>https://bothe.at/code/virtualization/kubernetes/kubernetes-deployments/</link><guid isPermaLink="true">https://bothe.at/code/virtualization/kubernetes/kubernetes-deployments/</guid><description>The word deployment is a bit overloaded with different meanings: A deployment is about getting your application code running on servers. In Kubernetes a Deployment is also the name of a resource or…</description><pubDate>Mon, 18 Jan 2021 00:00:00 GMT</pubDate><category>kubernetes</category></item><item><title>Managing Pods in Kubernetes</title><link>https://bothe.at/code/virtualization/kubernetes/kubernetes-managing-pods/</link><guid isPermaLink="true">https://bothe.at/code/virtualization/kubernetes/kubernetes-managing-pods/</guid><description>As mentioned before, a Pod is Kubernetes&apos; most atomic deployable unit. Containers must always be placed within a Pod. A Pod always belongs to one and only one node (which is located at a certain…</description><pubDate>Mon, 18 Jan 2021 00:00:00 GMT</pubDate></item><item><title>Kubernetes Multi-Container Patterns</title><link>https://bothe.at/code/virtualization/kubernetes/kubernetes-multi-container-patterns/</link><guid isPermaLink="true">https://bothe.at/code/virtualization/kubernetes/kubernetes-multi-container-patterns/</guid><description>A classic example of multi container pods is when you have your Main app Container separated from a Container that has helper code. That way you separate responsibility and the Helper Container can…</description><pubDate>Mon, 18 Jan 2021 00:00:00 GMT</pubDate><category>kubernetes</category></item><item><title>Kubernetes Networking and Services</title><link>https://bothe.at/code/virtualization/kubernetes/kubernetes-networking-and-services/</link><guid isPermaLink="true">https://bothe.at/code/virtualization/kubernetes/kubernetes-networking-and-services/</guid><description>Each Pod has its own IP address. Containers within a Pod can communicate with each other via their ports over localhost . But how does one Pod communicate with another? We cannot rely on a Pod&apos;s IP…</description><pubDate>Mon, 18 Jan 2021 00:00:00 GMT</pubDate><category>kubernetes</category></item><item><title>Docker Compose</title><link>https://bothe.at/code/virtualization/docker/docker-compose/</link><guid isPermaLink="true">https://bothe.at/code/virtualization/docker/docker-compose/</guid><description>The basic idea behind Docker Compose is to save you a lot of typing when creating, configuring, stopping, rebuilding or inspecting your containers. We create a docker-compose,yml file to define our…</description><pubDate>Sun, 17 Jan 2021 00:00:00 GMT</pubDate><category>docker</category></item><item><title>Docker overview</title><link>https://bothe.at/code/virtualization/docker/docker/</link><guid isPermaLink="true">https://bothe.at/code/virtualization/docker/docker/</guid><description>Docker packages applications as images and runs them as isolated containers on a shared Linux kernel. This overview covers terminology and workflows; namespaces, cgroups, and when to prefer VMs are in the Linux OS series.</description><pubDate>Thu, 14 Jan 2021 00:00:00 GMT</pubDate><category>docker</category><category>linux</category></item><item><title>Kubernetes Data Persistence</title><link>https://bothe.at/code/virtualization/kubernetes/data-persistence-with-kubernetes/</link><guid isPermaLink="true">https://bothe.at/code/virtualization/kubernetes/data-persistence-with-kubernetes/</guid><description>Here is the assumed prerequisite: Your application runs in Containers. You use Kubernetes for orchestration and know that those Containers are put inside Pods . What your application needs is a way…</description><pubDate>Wed, 13 Jan 2021 00:00:00 GMT</pubDate><category>kubernetes</category></item><item><title>Kubernetes Overview</title><link>https://bothe.at/code/virtualization/kubernetes/kubernetes/</link><guid isPermaLink="true">https://bothe.at/code/virtualization/kubernetes/kubernetes/</guid><description>The basic idea behind Kubernetes (aka K8s) is that you declare/describe the desired state of your application infrastructure via a manifest file, for example: &quot;Run 3 nodes in 1 cluster, each…</description><pubDate>Mon, 11 Jan 2021 00:00:00 GMT</pubDate><category>kubernetes</category></item><item><title>Shellscripting with Bash</title><link>https://bothe.at/code/consoles/shellscripting-with-bash/</link><guid isPermaLink="true">https://bothe.at/code/consoles/shellscripting-with-bash/</guid><description>Bash scripts glue commands together with variables, tests, and pipelines. This article is the language and scripting reference; for TTYs, login shells, and why /bin/sh is dash on Debian, see the Linux series terminals chapter.</description><pubDate>Sat, 17 Oct 2020 00:00:00 GMT</pubDate><category>shell</category><category>bash</category><category>linux</category></item><item><title>Testing React Components</title><link>https://bothe.at/code/testing/jest/testing-react-components/</link><guid isPermaLink="true">https://bothe.at/code/testing/jest/testing-react-components/</guid><description>We are going to have a look at how you can test your React Components and your Redux reducers and actions.</description><pubDate>Sun, 11 Oct 2020 00:00:00 GMT</pubDate><category>react</category><category>testing</category></item><item><title>Testing JavaScript NodeJS files with Mocha and Chai</title><link>https://bothe.at/code/testing/testing-javascript-nodejs-files-with-mocha-and-chai/</link><guid isPermaLink="true">https://bothe.at/code/testing/testing-javascript-nodejs-files-with-mocha-and-chai/</guid><description>This article will demonstrate how to test JavaScript files in NodeJS using the libraries Sinon, Mocha and Chai. Sinon is often installed together with Mocha and Chai, but it is not required.</description><pubDate>Sat, 10 Oct 2020 00:00:00 GMT</pubDate><category>javascript</category><category>nodejs</category><category>testing</category></item><item><title>Env vars, process and globals in NodeJS</title><link>https://bothe.at/code/server-development/nodejs/environment-variables-and-process-module-in-nodejs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nodejs/environment-variables-and-process-module-in-nodejs/</guid><description>You can define custom env variables in two ways:</description><pubDate>Mon, 28 Sep 2020 00:00:00 GMT</pubDate><category>nodejs</category></item><item><title>Executing commands and files in NodeJS</title><link>https://bothe.at/code/server-development/nodejs/executing-commands-and-files/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nodejs/executing-commands-and-files/</guid><description>There are a couple of ways to execute files and commands, but all use the module child_process .</description><pubDate>Mon, 28 Sep 2020 00:00:00 GMT</pubDate><category>nodejs</category></item><item><title>Load balancing an HTTP server with cluster module</title><link>https://bothe.at/code/server-development/nodejs/load-balancing-an-http-server-with-cluster-module/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nodejs/load-balancing-an-http-server-with-cluster-module/</guid><description>There are many strategies to scale your application:</description><pubDate>Mon, 28 Sep 2020 00:00:00 GMT</pubDate><category>nodejs</category></item><item><title>Event Loop in NodeJS</title><link>https://bothe.at/code/server-development/nodejs/node-js-event-loop/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nodejs/node-js-event-loop/</guid><description>Slow I/O operations such as accessing disk and network resources are handled via Node&apos;s Event Loop . The Event Loop is started once you run a node script and exits once there are no more callbacks to…</description><pubDate>Mon, 28 Sep 2020 00:00:00 GMT</pubDate><category>nodejs</category></item><item><title>File system operations in NodeJS</title><link>https://bothe.at/code/server-development/nodejs/node-js-file-system-operations/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nodejs/node-js-file-system-operations/</guid><description>Node offers both, sync and async methods to handle files. Sync methods (having sync in the method name, e.g. fs.readFileSync() ) will block the execution of the program until it has finished…</description><pubDate>Mon, 28 Sep 2020 00:00:00 GMT</pubDate><category>nodejs</category></item><item><title>NodeJS modules</title><link>https://bothe.at/code/server-development/nodejs/nodejs-modules/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nodejs/nodejs-modules/</guid><description>In the REPL all node modules are already present so you do not have to explicitly require() them first. But when you write your own files you must choose between one of two options:</description><pubDate>Mon, 28 Sep 2020 00:00:00 GMT</pubDate><category>nodejs</category></item><item><title>V8 and the REPL in NodeJS</title><link>https://bothe.at/code/server-development/nodejs/nodejs-v8-and-the-repl/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nodejs/nodejs-v8-and-the-repl/</guid><description>Node&apos;s build-in JavaScript engine is V8, but others such as Chakra (by Microsoft) can be used. V8 has three feature groups:</description><pubDate>Mon, 28 Sep 2020 00:00:00 GMT</pubDate><category>nodejs</category></item><item><title>Streams in NodeJS</title><link>https://bothe.at/code/server-development/nodejs/streams-in-nodejs/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nodejs/streams-in-nodejs/</guid><description>Streams are collections of data that might not be available all at once and don&apos;t have to fit in memory all at once. For example if you want to serve a file that is 1GB over HTTP you would create a…</description><pubDate>Mon, 28 Sep 2020 00:00:00 GMT</pubDate><category>nodejs</category></item><item><title>Working with HTTP and HTTPS in NodeJS</title><link>https://bothe.at/code/server-development/nodejs/working-with-http-and-https/</link><guid isPermaLink="true">https://bothe.at/code/server-development/nodejs/working-with-http-and-https/</guid><description>What you can achieve are things like:</description><pubDate>Mon, 28 Sep 2020 00:00:00 GMT</pubDate><category>nodejs</category></item><item><title>npm - Node Package Manager</title><link>https://bothe.at/code/building-bundling-and-packaging/npm-node-package-manager/</link><guid isPermaLink="true">https://bothe.at/code/building-bundling-and-packaging/npm-node-package-manager/</guid><description>A file named package.json allows package management in your project. To create it by answering prompts run npm init , add -y if you want to create it instantly, skipping questions.</description><pubDate>Thu, 24 Sep 2020 00:00:00 GMT</pubDate></item><item><title>Pass by value and reference in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/values-and-types/pass-by-value-and-reference-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/values-and-types/pass-by-value-and-reference-in-javascript/</guid><description>Primitives are copied by value; objects are shared by copying a reference to the same identity. Reassigning a binding is not the same as mutating an object. This chapter explains what actually moves when you pass arguments or assign to another variable.</description><pubDate>Wed, 22 Jul 2020 00:00:00 GMT</pubDate><category>javascript</category><category>types</category></item><item><title>OAuth2 - What it is and how it works</title><link>https://bothe.at/code/open-standards-and-concepts/authentication/oauth2-what-it-is-and-how-it-works/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/authentication/oauth2-what-it-is-and-how-it-works/</guid><description>This article gives a big picture overview on how OAuth2 works</description><pubDate>Sun, 24 May 2020 00:00:00 GMT</pubDate></item><item><title>Error handling with async/await in TypeScript</title><link>https://bothe.at/code/languages/typescript-core/error-handling-with-async-await-in-typescript/</link><guid isPermaLink="true">https://bothe.at/code/languages/typescript-core/error-handling-with-async-await-in-typescript/</guid><description>TypeScript narrows results when you separate success and failure with typed tuples or Result-like helpers, and it types catch clauses under useUnknownInCatchVariables. This page focuses on typing async error paths—not on try/catch mechanics.</description><pubDate>Fri, 15 May 2020 00:00:00 GMT</pubDate><category>typescript</category><category>async</category><category>errors</category></item><item><title>Async and defer loading of JavaScript</title><link>https://bothe.at/code/languages/web-apis/async-and-defer-loading-of-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/web-apis/async-and-defer-loading-of-javascript/</guid><description>Classic script tags block HTML parsing while they download and run. The async and defer attributes change when download and execution happen relative to the document, and module scripts follow different rules again.</description><pubDate>Sun, 16 Feb 2020 00:00:00 GMT</pubDate><category>javascript</category><category>html</category></item><item><title>Azure Compute</title><link>https://bothe.at/code/cloud-platforms/azure/azure-compute-overview/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/azure/azure-compute-overview/</guid><description>This article gives a short overview over the Azure Compute Services</description><pubDate>Sat, 18 Jan 2020 00:00:00 GMT</pubDate><category>azure</category></item><item><title>Arrays in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/collections/all-about-arrays-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/collections/all-about-arrays-in-javascript/</guid><description>Arrays are ordered, indexable lists and the default collection in most JavaScript code. This cheat sheet groups creation, mutation, search, and higher-order methods—including ES2023 non-mutating updates—so you can scan the API without rereading a tutorial.</description><pubDate>Wed, 18 Dec 2019 00:00:00 GMT</pubDate><category>javascript</category><category>cheat-sheet</category><category>collections</category></item><item><title>Generators in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/iteration-and-generators/generators-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/iteration-and-generators/generators-in-javascript/</guid><description>Generator functions pause at yield and resume on next(), which makes them the standard way to build iterators without manual state. This chapter covers two-way yield, for..of, yield*, and early completion with return and throw.</description><pubDate>Sat, 30 Nov 2019 00:00:00 GMT</pubDate><category>javascript</category><category>generators</category></item><item><title>Iterators in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/iteration-and-generators/iterators-in-javascript/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/iteration-and-generators/iterators-in-javascript/</guid><description>Iterators expose a uniform way to walk values one step at a time, whether the source is an array, a map, or a custom sequence. This chapter covers the iterator and iterable protocols, for..of, and when manual next() beats a loop.</description><pubDate>Wed, 30 Oct 2019 00:00:00 GMT</pubDate><category>javascript</category><category>iterators</category></item><item><title>CSS Transitions and Animations</title><link>https://bothe.at/code/html-css/css-transitions-and-animations/</link><guid isPermaLink="true">https://bothe.at/code/html-css/css-transitions-and-animations/</guid><description>CSS provides (at least) two ways to set elements in motion: transitions and animations. In this article we compare them and show how they work.</description><pubDate>Mon, 30 Sep 2019 00:00:00 GMT</pubDate><category>css</category><category>tailwind</category></item><item><title>React hooks</title><link>https://bothe.at/code/ui-development/react/react-hooks/</link><guid isPermaLink="true">https://bothe.at/code/ui-development/react/react-hooks/</guid><description>React hooks are a new way to enhance your React Functional Components, for example to let them handle state or reference DOM elements. Before hooks were introduced the only way to achieve this was to…</description><pubDate>Wed, 11 Sep 2019 00:00:00 GMT</pubDate><category>react</category></item><item><title>Web Accessibility Guidelines</title><link>https://bothe.at/code/open-standards-and-concepts/web-accessibility-guidelines/</link><guid isPermaLink="true">https://bothe.at/code/open-standards-and-concepts/web-accessibility-guidelines/</guid><description>In this article we take a look at Web Accessibility Guidelines. What they are and when and why you should apply them.</description><pubDate>Thu, 29 Aug 2019 00:00:00 GMT</pubDate></item><item><title>Prompt user for input in Microsoft Bot Framework</title><link>https://bothe.at/code/cloud-platforms/azure/azure-chatbot/prompt-user-for-input-in-microsoft-bot-framework/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/azure/azure-chatbot/prompt-user-for-input-in-microsoft-bot-framework/</guid><description>In this example we are going to ask the user for name, age and a flight date. The challenge is to validate the input, store it in memory and send prompts to the user until we have all the infos.</description><pubDate>Thu, 13 Jun 2019 00:00:00 GMT</pubDate></item><item><title>JavaScript under the hood</title><link>https://bothe.at/code/languages/javascript-core/under-the-hood/javascript-under-the-hood/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/under-the-hood/javascript-under-the-hood/</guid><description>Your code runs inside an engine, the engine runs inside a host, and the host decides when your code runs at all. This overview maps those layers, follows one small program through all of them, and points to the chapter that takes each layer apart.</description><pubDate>Thu, 06 Jun 2019 00:00:00 GMT</pubDate><category>javascript</category><category>runtime</category></item><item><title>Managing state with Microsoft Bot Framework</title><link>https://bothe.at/code/cloud-platforms/azure/azure-chatbot/managing-state-with-microsoft-bot-framework/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/azure/azure-chatbot/managing-state-with-microsoft-bot-framework/</guid><description>In this article we are going to add state to our bot that we created earlier. We want that our bot asks for our name, remembers it and then greets us using the name. Without state management the bot…</description><pubDate>Wed, 24 Apr 2019 00:00:00 GMT</pubDate></item><item><title>Sending messages and cards in Microsoft Bot Framework</title><link>https://bothe.at/code/cloud-platforms/azure/azure-chatbot/sending-messages-and-cards-in-microsoft-bot-framework/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/azure/azure-chatbot/sending-messages-and-cards-in-microsoft-bot-framework/</guid><description>TurnContext provides information to process an incoming activity within Microsoft Bot Framework. In this article we find out how to send messages and files using cards.</description><pubDate>Wed, 17 Apr 2019 00:00:00 GMT</pubDate></item><item><title>Inspecting the generated TypeScript code of the Chatbot</title><link>https://bothe.at/code/cloud-platforms/azure/azure-chatbot/inspecting-the-generated-typescript-code-of-the-bot/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/azure/azure-chatbot/inspecting-the-generated-typescript-code-of-the-bot/</guid><description>We take a closer look at the files that the Yeoman generator produced for our Chatbot.</description><pubDate>Tue, 16 Apr 2019 00:00:00 GMT</pubDate></item><item><title>Setting up a Chatbot with Microsoft Bot Framework and TypeScript</title><link>https://bothe.at/code/cloud-platforms/azure/azure-chatbot/setting-up-a-chatbot-with-microsoft-bot-framework-and-typescript/</link><guid isPermaLink="true">https://bothe.at/code/cloud-platforms/azure/azure-chatbot/setting-up-a-chatbot-with-microsoft-bot-framework-and-typescript/</guid><description>In this article we will setup a Chatbot that echoes whatever we enter using Microsoft Bot Framework SDK v4 with TypeScript. We will use Yeoman to generate code that we will further enhance in…</description><pubDate>Fri, 12 Apr 2019 00:00:00 GMT</pubDate></item><item><title>Asynchronous data handling</title><link>https://bothe.at/code/languages/javascript-core/asynchronous-javascript/asynchronous-data-handling/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/asynchronous-javascript/asynchronous-data-handling/</guid><description>JavaScript runs user code on one thread per realm, yet programs must respond to timers, network I/O, and user input without blocking. This overview maps callbacks, promises, async/await, cancellation, and observables—and when each fits.</description><pubDate>Tue, 09 Apr 2019 00:00:00 GMT</pubDate><category>javascript</category><category>async</category></item><item><title>Observing element changes with MutationObserver in JavaScript</title><link>https://bothe.at/code/languages/web-apis/mutationobserver-observing-element-changes/</link><guid isPermaLink="true">https://bothe.at/code/languages/web-apis/mutationobserver-observing-element-changes/</guid><description>MutationObserver runs a callback after the DOM changes — attributes, child nodes, or text — without polling. This page shows how to configure observation narrowly so you pay only for the mutations you care about.</description><pubDate>Tue, 09 Apr 2019 00:00:00 GMT</pubDate><category>javascript</category><category>dom</category></item><item><title>Observables in JavaScript</title><link>https://bothe.at/code/languages/javascript-core/asynchronous-javascript/observables-the-basics/</link><guid isPermaLink="true">https://bothe.at/code/languages/javascript-core/asynchronous-javascript/observables-the-basics/</guid><description>Observables push many values over time and support unsubscribe, which suits events and live streams but adds weight promises avoid. This comparison chapter covers push versus pull, RxJS basics, and when to stay with promises.</description><pubDate>Mon, 01 Apr 2019 00:00:00 GMT</pubDate><category>javascript</category><category>async</category><category>observables</category></item></channel></rss>