2020–2026
1,355 posts
2026 411
October 2026
- Test your SaaS replacement before cancelling the original
- How to make it easy to leave your SaaS
- Build or buy calculator: when does your replacement cost less?
- Research keywords through OpenSEO MCP
- Build a tiny site-audit crawler with Workers and Queues
- The best voice to text apps for a Mac
- Build an agent approval flow that survives a restart
- Lessons for builders from Sam Altman's Cheeky Pint interview
- When one product pays another
- Pi Durable, Cloudflare Workflows, or Vercel Workflow?
- How to customize Cloudflare Access pages
- How to use TinyFish
- The best macOS browsers for AI agents, and how to use them
- Give coding agents checks they can learn from
- Practicing engineering judgment with AI
- The complete guide to AI image generation
- The big players in AI coding: models, tools, and who to follow
- Internet Business Lab is open
- Which business advantages can a solo developer build?
- How to use GPT-6.1 Terra, OpenAI's new fast vision model
- Chrome Alternatives in 2026: 50 Web Browsers Compared
- How to work with coding agents from your phone
- How to protect secrets when coding agents deploy your app
- How to use MCP Tasks and Elicitations in Claude Code
- The complete guide to Convex
- How to use Grok Build
- A pull request workflow for code written by agents
- Prompt caching, compression, and compaction in coding agents
- Pushing to main still needs a process
- What changes when you stop opening the code editor?
- Cloudflare Hyperdrive tutorial: use PostgreSQL with Workers
- What teaching can tell us about prompting
- Too many conversations with coding agents
- Software with a point of view
- What would make an overnight agent useful?
- I care more about the AI product I can use
- How to use Cursor Computer Use
- The complete guide to LM Studio Bionic
- How to secure a VPS with Tailscale and Cloudflare Tunnel
- What to check before submitting a native app to App Review
- Triage support tickets in one request with OpenAI's Decisions API
- How to publish a Chrome extension to the Chrome Web Store
- What to check before upgrading the Anthropic SDK
- How to use a coding agent without another subscription
- How to create a DMG installer for a Mac app
- AI video editing tools: what agents need to work safely
- A deep dive into Claude Duet
- Paid traffic for SaaS validation: how to test product demand
- Security in the age of AI
- Give your coding agent a state machine
- PSA: update PHP today
- Jev vs structured outputs: when to use each
- Vite toolchain: Cloudflare, vinext, and shared web tooling
- SPA vs server-side rendering: which should you choose?
- A deep dive into tsrs
- How to update all global npm packages
- Cloudflare Pages vs Workers: which should you choose?
- How AI agents make existing software more useful
- AI-assisted code migration: how to switch frameworks safely
- AI coding agent context: how to document project decisions
- How to speed up tests for AI coding agents
- How to compare OpenCode, Claude Code, and Codex CLI
- How I would evaluate Muse Wonder in Cursor
- 15 apps you can vibe code instead of subscribing
- See all news →
- Codex vs Claude Code vs Cursor: how to choose
- Parallel coding agents: how to coordinate and review changes
- How to use OpenCode with a local model in LM Studio
- A practical review workflow for T3 Code threads
- Selling SaaS to developers: how to find paying customers
- MCP server design: tools, authentication, and rate limits
- OpenCode Code Mode explained: JavaScript instead of repeated tool calls
- Changing package managers doesn't remove your npm registry dependency
- How to compete with AI-generated SaaS clones
- Build vs buy software: when AI can replace a SaaS
- How to write an OpenCode plugin with the v2 API
- How OpenSEO works and how to self-host it
- How to build agents that survive crashes with Pi Durable
- How to use OpenCode
- The complete guide to Void: full-stack Vite apps with Hono and Cloudflare
- Meta released Muse Spark Open: what you can run, and what it takes
- How to handle web requests in C with CGI 1.1
- What “open weights” means for AI models
- How to build AI agents with LangChain and LangGraph in TypeScript
- How I fixed a full Ubuntu server disk with Codex
- How to create an Apple TV app
- How to install your own apps on your iPhone with Xcode
- LiveKit tutorial: how to build a voice AI agent
- How to use Jev with Claude Code, Codex and Cursor
- See all posts →
- How to avoid the "Open Anyway" message when building macOS apps
- Use WhatCable to figure out what your USB cable can do
- How to compile JavaScript into a single executable
- How to use Jev with the Vercel AI SDK
- Use npkill to find and delete old node_modules folders
- What happens when AI agents shop for us
- I built Footage Ferry, a Mac app to import Blackmagic Camera videos
- I open sourced testvm, so your coding agents can test Mac apps in a VM
- I built Repo Foyer, a Chrome extension that puts my repos on the GitHub home page
- Planning CloudKit sync between a Mac app and an iPhone app
- How to schedule cron jobs on Linux and macOS
- Payment picker: find how to get paid for your app
- Which web host should I use? Hosting comparison tool
- How to use cf, the new Cloudflare CLI
- I built Architecture Dissector, a Mac app that shows how my apps are built
- I built Couch Snake, the classic phone game for the Apple TV
- I built Chip Pops, 6,000 8-bit sound effects for my apps
- How to use Jev confidence scores
- How to fix "Stacked PRs are not enabled for this repository"
- Should you pay for the Apple Developer Program?
- How to let coding agents test Mac apps in a VM
- How to add automatic updates to a Mac app using GitHub Releases
- I built Slide Lookout, a Chrome extension that shows your next slide
- What running a one-person software business costs per month
- Herdr alternatives: terminal workspaces and agent managers compared
- How to create and publish a ChatGPT plugin
- What is poteto-mode in pstack?
- How to classify text with Jev
- I built Post Slide Deck, slides from posts on X for my videos
- I built VM Peek, a Mac app that shows what your coding agents do in the test VM
- Every product I launched this summer, and what happened to each
- How to use the Codex CLI
- How to use your ChatGPT subscription in other apps
- How to use the OpenAI Agents API in JavaScript
- Herdr keyboard shortcuts
- How to use Codex Cloud
- A deep dive into Clef, Cloudflare's decision model
September 2026
- A deep dive into OpenAI dots
- Things I let coding agents do unattended, and things I never do
- How to use Jev with Python
- How to use the unslop skill
- GPT-6.1 Sol API tutorial: build a Node.js code reviewer
- Payment processing fees compared: Stripe, Paddle, and more
- How to stop X from turning a domain into a link
- The MCP servers connected to my editor, and the ones I actually use
- How to use Jev in Node.js
- PostgreSQL and SQLite hosting: free and paid options
- The 10 fundamentals still worth learning when AI writes the code
- How much does Jev cost?
- The CLI tools I use every day
- Linux server commands for troubleshooting and maintenance
- How to use Cloudflare Worker Previews
- How to get access to Jev and an API key
- Which AI model is best for coding? A hands-on comparison
- Every hosting provider's free tier, side by side (checked September 2026)
- The complete guide to Cloudflare Tunnel
- The complete guide to Cloudflare Quick Tunnels
- A deep dive into Pi
- The stack I use to run this blog, 2026 edition
- How to build a terminal app people can SSH into
- How AI models are measured and compared
- 12 CSS features you can use today with no build step
- Slop grenades
- How to use Vercel's fx coding agent
- Node.js built-ins that replaced npm packages
- Grok Bot vs Cursor Projects: when to use which
- 10 browser APIs that replaced a library I used to install
- Updating self-hosted Plausible Analytics using AI
- Solving an issue with sending emails on my server
- How Cap makes money from open source software
- How to safely add paid AI features to a desktop app
- How to build a scraping tool
- How to build typed decisions with Jev
- IDE, CLI, vibe coding tool, …how to decide?
- Vercel tutorial: deploy a web app from Git or the CLI
- How I built a paid membership site with Astro and Convex
- Debugging a process killed on my server with Codex
- How to use the Codex desktop app
- How I fixed my DevOps mistakes with AI
- Securing a server using AI
- What I learned in the past 6 months about using agentic AI
- Where to host your web app: how to choose
- Merchant of Record or payment processor? How to choose how to get paid online
- When more people are building software, what's the value of software?
- Software was never worth the hours it took
- Understanding tsconfig.json
- What is tldraw? The canvas, SDK, MCP, Offline and Flash
- How to make AI harnesses talk less
- JSONL: a practical guide to JSON Lines
- How to use Cursor Projects
- Native email and password authentication on Cloudflare Workers
- AI and the joy of programming
- A deep dive into Ghostty
- Why I think more clearly when I type
- The Cloudflare products I actually use
- How to use tmux: sessions, windows, panes, and shortcuts
- Vercel AI Gateway tutorial
- Why your MacBook runs hotter at high altitude
- Build a language model on your Mac with Language Model Builder
- How AI agents can log in without seeing your passwords
- Passkeys and WebAuthn explained
- Content Security Policy (CSP) explained
- Zustand: simple React state management
- A deep dive into exe.dev
- Build a chatbot with Cloudflare Workers AI
- How to prevent AI agents from taking irreversible actions
- Build a documentation site with Astro and Markdown
- Introduction to TanStack Query
- Run a local LLM with Ollama
- How to stream LLM responses with server-sent events
- How to resize and optimize images with Cloudflare Images
- What happens when Bun runs a TypeScript file
- Biome: one tool for linting and formatting
- How to build an LLM from scratch
- Use AI to understand code
- How to build an MCP server
- What is an AGENTS.md file
- Email for developers and AI agents: how to choose a provider
- How to scan your code with the Codex Security CLI
- SSH for developers
- The jq command
- How to add WebMCP tools to your website for AI agents
- Run Cursor cloud agents on your own Mac mini
August 2026
- Git hooks for AI engineering
- How to connect AI agents to MCP servers and APIs with Executor
- ZCode review: Z.ai's GLM-5.3 coding agent on a real project
- node:sqlite: SQLite built into Node.js
- I built 37 terminal text effects in pure JavaScript
- How to scan your code for security issues with DeepSec
- How to run a Cloudflare D1 database locally
- HTMX 4 is here
- The Node.js built-in test runner
- A bot added around 5,000 addresses to my newsletter
- Introduction to Docker Compose
- How to manage environment variables with 1Password
- A deep dive into T3 Code
- Use 1Password Developer Environments with Cursor
- DARP: Durable Activity Record Protocol
- How to use GitHub Actions for CI/CD
- A deep dive into StyleX
- How to exit Herdr: detach, close or stop without losing work
- A deep dive into Ponytail
- How to use HEY email from the terminal with hey-cli
- Using Herdr from a phone
- What is Cursor Origin? Cursor's Git hosting vs GitHub
- Build an idempotent scheduled job with Cloudflare Queues and D1
- How to send email with Cloudflare Email Service
- How to use zoxide
- How to design 3D-printable parts with AI using Nurb
- Scroll-driven CSS animations
- Herdr vs tmux vs Zellij
- Choosing anti-slop skills for writing and code
- Modern CSS colors: oklch() and color-mix()
- CSS Subgrid
- A practical guide to Herdr plugins
- A deep dive into Grok Bot
- How to group array items with Object.groupBy()
- Swamp tutorial: make AI agent work repeatable
- JavaScript immutable array methods: toSorted(), toReversed(), toSpliced(), with()
- How to use Herdr skills and herdr --skill
- A deep dive into pstack
- The View Transitions API
- Native CSS Nesting
- The Popover API
- MutationObserver and ResizeObserver
- The HTML dialog tag
- Find command-line tools from a macOS app
- CSS Container Queries
- What I learned reading Claude's system prompts
- The CSS :has() selector
- The Intersection Observer API
- AbortController: how to cancel a fetch request in JavaScript
- Add a local LLM without making your app depend on it
- Cloudflare Workers AI: run LLMs without API keys
- Cloudflare AI Gateway: put a proxy in front of your LLM calls
- WebAssembly tutorial
- HTTP/2 and HTTP/3: what changed and why it matters
- A deep dive into cmux
- How to build server-rendered interfaces with HTMX 2
- What your photos leak: EXIF metadata and GPS
- How to use Kysely with TypeScript and PostgreSQL
- Herdr vs cmux: terminal persistence and the Mac browser workflow
- How Hono handles requests: routing, middleware, and context
- How open-weight AI models work: weights and quantization
- Deploying Hono on Cloudflare Workers
- Glob patterns explained (and why .gitignore behaves that way)
- How to manage coding agents with Herdr
- How Cloudflare Computer runs code for AI agents
- Hono: middleware, cookies, headers, redirects
- How workerd, the Cloudflare Workers runtime, is built
- SPF, DKIM, and DMARC explained for developers
- Hono: a modern web framework for JavaScript
- How bb, the programmable IDE for coding agents, is built
- Kitesurf: Cloudflare's browser built for AI agents
- How Astro is built
- Use fetch, queue, and scheduled handlers in one Cloudflare Worker
- Bun: a faster JavaScript runtime
- Vercel Observability tutorial: debug a slow or failing Function
- How celld runs Workers on your own infrastructure
- robots.txt in the age of AI crawlers
- The HTTP security headers every site should send
- How OAuth 2.0 works: authorization code flow and PKCE
- What happens after your email API says accepted
- Server-Sent Events: streaming from server to browser
- @keyframes and prefers-reduced-motion done right
- How I fixed a stuck Cloudflare Pages build queue
- Build scanner-safe double opt-in
- How Plausible Analytics Community Edition is built
- Vitest: an introduction
- The CSS aspect-ratio property and the math behind it
- How I auto-publish scheduled posts with a Cloudflare Worker cron
- Vercel Blob tutorial: upload and serve files
- libSQL and Turso: SQLite for production
- conic-gradient and the modern CSS gradient toolbox
- How I made this Astro site build faster and cut its deploy size
- Build idempotent double opt-in signup
- Drizzle ORM: an introduction
- CSS easing functions: what cubic-bezier actually does
- Harden a public form endpoint
- How to use the JavaScript Temporal API for dates and time zones
- How JWT signing actually works (HS256 with Web Crypto)
- Vercel Queues tutorial: process background jobs reliably
July 2026
- UUID v4 vs v7, and what's inside a UUID
- Kubernetes for developers: a complete beginner's guide
- Cloud platform plugins and skills for AI coding agents
- How to write JavaScript sort comparators
- Storybook tutorial: build and test UI components in isolation
- Run a Dockerfile on Vercel
- Stateless MCP: what changed in the July 2026 specification
- Promise.all vs allSettled vs race vs any
- Tauri tutorial: build a desktop app with web technologies
- How I turned fstack into a software factory
- Vercel Workflows tutorial: build a durable background job
- What is MCP, the Model Context Protocol
- RAG chunking explained: chunk size, overlap, and what it costs
- Build a Vite plugin from scratch
- Canvas UI puts WebGL shaders over real, interactive HTML
- Terraform for developers: a complete beginner's guide
- Running LLMs locally vs paying for an API: the actual math
- Liquid Software: When Software Can Change Its Shape
- How to build an Astro integration
- How much VRAM do you need to run an LLM locally?
- Production at the Edge
- Build and publish a TypeScript package to npm
- Vercel Sandbox tutorial: run untrusted code safely
- Record a product demo with Playwright
- How I built Notion to Site, and how I'd build it today
- Integration testing Node.js with Testcontainers
- GitHub Stacked PRs: a practical guide to gh stack
- An LLM adapter pattern for Cloudflare Workers
- Load testing a web API with k6
- Buzz: a workspace where humans and AI agents work together
- How to use Notion as Code
- Detect a tech stack from a GitHub repo URL
- Background jobs in Node.js with BullMQ
- v0 tutorial: build and deploy a full-stack app
- Self-drawing SVG connection lines
- OpenTelemetry tutorial for Node.js: traces and metrics from scratch
- Build a draggable node diagram without a library
- OpenAPI tutorial: document and validate a REST API
- Don't let the LLM do the math
- Build a Chrome extension from scratch with JavaScript
- Vercel AI SDK tutorial: build a streaming chatbot with tools
- Playwright tutorial: end-to-end testing from scratch
- First-party analytics with SQLite
- Dynamic sitemap.xml in Astro SSR
- How I added Polar payments to an Astro app
- Better Auth in Astro on Cloudflare Workers
- Versioning reference data with effective_from dates
- Transactional email from Workers with Resend
- The Swift Guide
- The SQL and Databases Guide
- The Python Guide
- The PHP Guide
- The Laravel Guide
- The htmx Guide
- The HTML Guide
- The Go Guide
- The Cloudflare Guide
- The Command Line Guide
- The C Guide
- The Astro Guide
- The Alpine.js Guide
- The AI Guide for Developers
- Astro SSR with D1 and Drizzle ORM
- fstack, the simple stack
- How I log every Git commit to a plain text file
- How I use the same Git work log with Codex and ChatGPT
- Rate limiting with Cloudflare KV
- Serving my site as Markdown to AI agents
- HMAC-signed URLs on Cloudflare Workers
- How I investigated why my iPhone was running hot
- What iPhone Developer Mode does, and when you should enable it
- Cloudflare Artifacts: Git storage built for AI agents
- Better Auth: an introduction
- Moondream 3.1 on Workers AI: fast vision at the edge
- Workers Caching: a cache in front of your Cloudflare Worker
- Temporary Cloudflare accounts: agents can now deploy without signing up
- Cloudflare Drop: drag a folder, get a live site
- How the Cloudflare Pages build cache works
- How I generate an Open Graph image for every post
- How I added search to my static site with Pagefind
- How to rebuild a Cloudflare site on a schedule
- Cloudflare Email Workers: run code when an email arrives
- Cloudflare Turnstile: stop bots without annoying CAPTCHAs
- Cloudflare Workers: secrets and environments
June 2026
- Cloudflare Workers observability: logs and traces
- Cloudflare Analytics Engine: store and query metrics
- Cloudflare Cron Triggers: run a Worker on a schedule
- Cloudflare Durable Objects tutorial
- Cloudflare Queues: run work in the background
- Cloudflare R2: object storage without egress fees
- Cloudflare KV: a key-value store for your Workers
- Cloudflare D1: a SQL database for your Workers
- Serving a website with Cloudflare Workers static assets
- Wrangler: the Cloudflare Workers command line tool
- Vercel eve: an open framework for building AI agents
- Cloudflare Workers: your first serverless function
- Flue: the open framework for building AI agents
- How to build APIs and scheduled jobs with Val Town
- A hands-on guide to The Agency, a collection of AI agents
2025 20
October 2025
- Setting up Tailwind CSS on Vite
- Railway deployment guide: apps, databases, domains, pricing
- How to use Zod with TypeScript: validate data and infer types
- Managing node_modules efficiently with pnpm and Bun
- The React Context API
- Git Worktrees
April 2025
- Deploying an Astro + PostgreSQL app on Railway
- Build it and they will come
- How to recover lost data from an SD card
- My own little corner shop on the Internet
- Freeing space on a Mac
March 2025
February 2025
January 2025
2024 68
December 2024
- The use hook
- The useOptimistic hook
- The useFormStatus Hook
- The useActionState hook
- Server Actions
- Form Actions
- Why learn to code if finding a job is more difficult?
November 2024
- The Path to Learn Web Development
- Full-Stack TypeScript Stack vs Laravel-Rails
- Will AI replace Web Developers?
October 2024
September 2024
- Next.js, passing an id to a server action
- How to install shadcn-ui on latest Next.js beta-RC
- use() and data fetching
- How to get the Request headers in Next.js app router
- Generate UUIDs in JavaScript with crypto.randomUUID()
- What’s new in React 19
- Using reCAPTCHA on a Astro form
- Using Cloudflare Turnstile on an Astro form
- Show or hide an element by parent class in Tailwind
- Next.js embed youtube video
- Hide HTML elements based on HTMX request status
- Astro, set response header
- Astro, set caching headers
- An HTML element id is a global variable
August 2024
- The Git Cheat Sheet
- How to install Git on Linux (Ubuntu)
- How to install Git on macOS
- How to Install Git on Windows
July 2024
June 2024
May 2024
April 2024
- Benefits of using Git (and GitHub) as a solo dev
- Git, what if you forgot to add a file to a commit?
- Git, detached HEAD
- Git, rebase vs merge
- Git, squashing vs not squashing
- Run client-side JS in Astro MDX
- Dynamic function name in JS
- Using Railway private networking
- Fix 'Too many redirects' after enabling Cloudflare proxy
March 2024
- Unregister service workers in Safari
- How I fixed some trouble importing types in .d.ts files
- Disabled form fields are not POSTed
- Why not write logic in Astro layouts
- Using Astro locals
- Unterminated string literal
- Astro page layout and middleware execution order
- Pasting code snippets in Discord
- Fixing TS issues in VS Code - Astro
February 2024
January 2024
- Why I use htmx
- Why I use Alpine.js
- Simplicity
- Decide to render a partial or not dynamically in Astro
- Render different HTML based on HTTP method in Astro
- How to create a sidebar that’s sticky but also scrolls
- Dockerfiles used to deploy Astro and PocketBase on Railway
- Had an issue with bfcache
- Run PocketBase on fly.io
- Run an app on fly.io
- Fly.io, list all regions available
- Fix 'Cannot find module fs' in VS Code
- Dockerfile to run Astro Node SSR on fly.io
- Deployment strategy on fly.io
2023 106
December 2023
- htmx trigger request via JS event
- Redirect to a link when user selects option in a select
- Conditionally set an HTML attribute
- TypeScript type for a string or array of strings
- htmx send files using htmx.ajax() call
- htmx, include hidden input fields outside of a form
- How to implement file upload with drag and drop with Alpine
- File upload with drag and drop in vanilla JavaScript
- htmx forms and Astro View Transitions
- Cookie not being set in Safari
- htmx + Alpine template tag
- How to disable 1Password in an input field
- Why I use Astro
- Set custom cookie in the header and then redirect in Astro
- htmx, redirect after request
- Fix tsconfig.json 'cannot find type definition file for node'
- How to automatically run Prettier on all files in a project
November 2023
- Customizing visited links
- Google Recaptcha missing-input-secret
- Running a recent Node version on DigitalOcean App platform
- Sending emails with nodemailer on Vercel
- Local PostgreSQL vs Vercel Postgres (now Neon) with Kysely
- How to reset Postgres SERIAL number
- Change the color of a webpage dynamically using JS and CSS
October 2023
- Use React component in Astro
- Passing Astro components to React components
- HTMX, perform something on page load
- htmx and Astro View Transitions
- Astro, prerendering a single component in a SSR page
- Render app deploy stuck on in progress
- How to destructure an object to an already defined variable
- Fix Node.js imports types errors in VS Code
- Astro, fix .md in links
- Astro, embed an image in markdown without relative path
- Astro View Transitions and Dark Mode
June 2023
- Creating CLI commands in Laravel
- Deploying a site to Laravel Forge
- Only authenticated users can add items to the database
- Setting up authentication using Laravel Breeze
- Using Tailwind CSS with Laravel
- Store form input in the database with Laravel
- Dynamic routes in Laravel
- Laravel migrations: create and modify a database schema
- Connecting a database to Laravel
- How to use Blade templates in Laravel
- Introduction to Laravel
May 2023
- Fix Cloudflare 'too many redirects' on Laravel Forge SSL
- How to use custom fonts with Tailwind CSS
- SQL injection
- How to click a link with a specific text with Puppeteer
- How to do a screenshot using Puppeteer
- Save some text to a file in Node.js
- CSRF (Cross Site Request Forgery) tutorial
- nodemailer, how to embed an image into an email
- How to send an email using nodemailer
- Restarting a Node process without file changes
April 2023
March 2023
- Fix Uncaught Error Objects are not valid as a React child
- How to slugify a string in JavaScript
- How to turn an image into a data URI string
- How to get an image width and height using Node
- Revalidation and ISR gotcha on Vercel
- How to download an image from URL in Node
February 2023
- Fix the “Objects are not valid as a React child” error
- How to add a simple dark mode
- Ensure an image upload is smaller than a specific size
- CSS, how to select elements that do NOT have a class
- The valley of sorrow in learning programming
- Why blog?
- Notion API, how to retrieve the entries in a database
- Logging all the requests coming through an Express app
- Axios crashes the Node.js process when the request fails
- How to play a sound from the macOS command line
- Persist aliases and other configuration in Fish Shell
- SQL, copy data from one table to another
- Vite Tutorial
- Hiding classes in VS Code
- What is SWC?
- AppleScript by example, episode 1
January 2023
- How to concatenate strings in AppleScript
- How to find the bundle ID of a Mac app
- How to add an “Open in Terminal” icon in macOS Finder
- How to add an “Open in VS Code” icon in macOS Finder
- Ubuntu how to upgrade Node.js
- How to add a path to Fish Shell
- Notion API, update the icon emoji of a page
- Notion API, update a checkbox value in a database
- How to self-host Plausible analytics
- Run a Node.js script from your macOS menu bar
- JavaScript, how to remove multiple line breaks
- Optimize images from a Node.js script
- Calling the ImageOptim macOS app from a Node.js script
- How to execute a shell command using Node.js
- Notion API, select all pages with a specific emoji
- How to trigger a static-site redeploy safely
- Get all regex matches with capturing groups in JavaScript
- JavaScript regex to capture a URL without query string
- Getting year-month-date from JS dates
- How to use .env files in Node.js with import syntax
- How to download and save an image using Node.js
- Slugify a string in JavaScript
- Using Vite to create a new React app
- CSS box-sizing: border-box
- How to access configuration values in Astro components
- How to have a flex child not fill entire height
2022 137
December 2022
- How to clone anything in JavaScript
- Fish Shell, how to remove the welcome message
- How to remove the “Last login..” message from the shell
- How to use import in Node.js
- How to embed YouTube videos using the correct aspect ratio
- How to bulk convert file names using Node.js
- Replace spaces with underscores in filenames (shell script)
- You can’t generate classes dynamically in Tailwind
November 2022
October 2022
September 2022
- Software development has no gatekeeping
- How to add leading zero to a number in JavaScript
- Interfaces in Go
- Methods in Go
- Pointers in Go
- Functions in Go
- Structs in Go
- Operators in Go
- Conditionals in Go
- Loops in Go
- Maps in Go
- Slices in Go
- Arrays in Go
- Strings in Go
- Variables and types in Go
- Introduction to Go workspaces
- How to compile and run a Go program
- How to create your first Go program
- Introduction to the Go programming language
- Deploying PHP applications
- How to use Composer and Packagist in PHP
- How to work with files/folders in PHP
- How to use PHP Cookie-based Sessions
August 2022
- How to use Cookies in PHP
- How to use HTTP Headers in PHP
- How to use forms in PHP
- Handling HTTP requests in PHP
- How to use exceptions in PHP
- How to deal with errors in PHP
- How to create your first PHP program
- How to set up PHP
July 2022
- How to learn programming
- How to await in a loop in JavaScript
- How to do an endless video stream
- How to lazy load images in Hugo
- JavaScript, how to get string until character
- How to select the first child element with CSS
- What to do if WebRTC on iOS shows a black box
- Asking Google to index your page
- Trigger deploys on Netlify with submodules
- Using git submodules to have a portion of a website public
- Remove the first or last characters in a shell script
- How to get current file name in Hugo without .md
- How to get the current url in Hugo
- Fix PostCSS 'must export a plugins key' error in Next.js
- How to repeat displaying something in JSX
- Force download links in HTML
- How to redirect to a new URL using JavaScript
- Hide a broken image in HTML when the file is missing
- Hugo iterate pages of section
- Hugo embed HTML in Markdown
- How to add Tailwind to Hugo
- Fix a package.json error after installing Prettier
- Create multiple folders using Bash
- Tracking file downloads from a website
June 2022
- How to fix prettier messing up your HTML on save
- VS Code regex replace: capture groups with $1 and $2
- Fix 'Unknown at rule @tailwind' warning in VS Code
- How to use Supabase as your PostgreSQL hosting
- Where to host a PostgreSQL database
- How to use the FormData object
- How to make sure your input field can only upload images
- Fix uploading files using fetch and multipart/form-data
- 24 tips for beginner programmers
May 2022
- How to create ebooks with Markdown
- How to use useEffect callback with event callbacks
- Fix a PostCSS Webpack error ruleSet rules oneOf... etc etc
- How to update your Ubuntu server packages
- Syntax highlight any block on a Web Page
- How to hide a file or folder in macOS Finder
- Take screenshots as JPG on macOS
- How to change image URLs in a markdown string
- How to run a script build time in Next.js
- How to fix the ffmpeg not found error with yt-dlp or youtube-dl
- Node.js get all files in a folder recursively
- How to use the Node.js fs module with async/await
- Fix installing the Node.js canvas package on macOS
- How to fix the objectID required error on Algolia
- How to define an auto increment primary key in PostgreSQL
- Fix PostgreSQL 'relation does not exist' error
- How to dynamically import JavaScript modules
- How to remove the shadow from window screenshots in macOS
- How to quickly create a Windows computer on AWS
- Why does useEffect run two times?
- How to loop over an array in Bash
- Fix the 'Parse failure: Unterminated string constant' error
- How to fix error serializing Date object JSON in Next.js
- How to list files in a folder in Node
- How to empty a folder in Node.js
- How to create a function in a Bash shell script
- How to solve the document is not defined error
- How to set up a cron job that runs a Node.js app
- How to set the fragment part of a URL
- How to get the fragment part of a URL
April 2022
- npm can install packages in the parent folder
- JavaScript, how to get the class name of an object
- Cloud cron jobs with Netlify Scheduled Functions
- Set the current working directory of a Node.js program
- Format Astro files in VS Code with Prettier
- How to fix decimals arithmetic in JavaScript
- referenceerror: window is not defined, how to solve
- Stick an element to the bottom of the page with Flexbox
- How to use Netlify Edge Functions
- How to set up Git and GitHub from Zero
- Fix 'import call expects exactly one argument' error
- Fix 'cannot use import statement outside a module'
- Fix '__dirname is not defined in ES module scope'
- What's the use of the hashtag # (number sign) in the links?
- Fix tsconfig.json 'No inputs were found in config file'
- npm run dev: what it does, how to stop it, change the port
- How to create an IAM user in AWS
- How to upload an image to S3 using Node.js
- Blank page after router.push() in Next.js?
- How to add days to a date in JavaScript
- How to test Netlify Functions locally
February 2022
- How to debug JavaScript code
- Roadmap to become a Web Developer in 2022
- Build a REST API using Node.js, Express and MongoDB
January 2022
- How to use Redis from Node.js
- Introduction to Programming
- How to prepare for a software engineer job interview
- How to find a job as a software engineer
- Prepare for technical interview questions
- Learn how to find solutions and ask for help
- Soft skills to thrive as a software developer
- Become a great Dev Team Member
2021 296
December 2021
November 2021
- How to authenticate to GitHub using username and password
- What is a webhook?
- Fetching data from the network in Astro
- Where do you see yourself in 5 years?
- Introduction to Remix
- A big whiteboard is one of the best investments on yourself
- Show an image when you share a link: Open Graph tags in HTML
- How to set GitHub credentials for macOS
- Moving a simple site to Astro
- How to restore a Git remote after removing origin
- Building composable layouts in Astro
- Astro Props
- How I built a dashboard for the iPad with JavaScript
- Astro Components
- Introduction to Astro
- From no-code to some-code
- How to hide an HTML hr line and keep the space
- You can't replicate the success of other people
- How to download a file from a server using the terminal
- Convert an image or resize it using macOS Shortcuts
- Why Safari is a great browser
- Remove EXIF data from images
- Low data mode
October 2021
- A way to set up automations in macOS easily
- Create a system for your blog
- Expand your reach with an email list
- Making money with a blog
- Content is king
- Should you have a personal blog or a company/product blog?
- Why a blog and not videos or podcasts?
- How to pick a niche for your blog
- Is blogging still relevant?
- The benefits of having a successful blog
- Pick a goal for your blog
- Ups and downs of having a blog
- Practical content suggestions for your blog
- How to make the first step and start a blog
- Thoughts on intentionally keeping your business small
- How do I update my website using the iPad
- How to solve the most common learning to code problems
- The day I forgot to write a post
- Why you should own your platform
- How to get people to your blog
- Reverting a file to a previous version, on a Mac
- My current video recording setup
- How to add search to a Ghost site
- Swift: How to use SF Symbols
- SwiftUI: the Label view
- SwiftUI: how to create a Tab View
- SwiftUI: NavigationView and NavigationStack
- SwiftUI: formatting decimals in Text view
- SwiftUI: conditionally show items in the view
September 2021
- SwiftUI forms: DatePicker
- SwiftUI forms: Stepper
- SwiftUI forms: Slider
- SwiftUI forms: Picker
- SwiftUI forms: Toggle
- SwiftUI forms: TextField
- SwiftUI forms
- SwiftUI: the ForEach view
- SwiftUI List: rows, sections, ForEach and list styles
- How do you manage to learn several languages?
- SwiftUI: images
- SwiftUI: alert messages
- SwiftUI: the Button view and updating the app state
- SwiftUI: properties
- SwiftUI: spacing
- SwiftUI: stacks and groups
- SwiftUI: exploring views and modifiers
- Introduction to SwiftUI
- Swift Modules
- Why iOS
- Some thoughts on SwiftUI
- Building a passive revenue stream as a developer
- Don't hop from one language to another
- Introduction to Swift and iOS development for Web developers
- On writing about different topics
- How to become a Web Developer in 2021
- How to make the jump and become a developer
- Installing iOS and Mac beta releases
- How to join the Apple Developer Program
August 2021
- Control a browser game with an Arduino joystick (Johnny Five)
- Tsundoku
- Learning to code takes time
- I don't want to manage your data
- Read values from an Arduino via HTTP
- Fix psql 'could not connect to server' in PostgreSQL
- Scraping with Puppeteer
- Solopreneurship
- What's bad with freelancing
- Cleaning my newsletter
- The Trail System of the Park
- How I set up a Next.js project structure
- On blogging for 3.5 years
- The story of how I became a content creator
- Selective ignorance
- Some days are just better than others
- The best stack might be the one you know best. Or maybe not.
- Recurring revenue vs one-time revenue
- Calculating Ah from Watts
July 2021
- Survivorship bias
- Handling VAT in the EU as a creator
- Using multiple fields for a unique key in Prisma
- How to create a PostgreSQL database
- Fish Shell, how to avoid recording commands to history
- How to conditionally load data with SWR
- How to use SWR
- How to make an element smaller or bigger with CSS
- Clear the terminal in Visual Studio Code (and fix Cmd+K)
- How to create a platformer game with Phaser.js
- How to copy the properties of an inner object to the outer
- Services vs products
- React DOM events on components
- Prisma, how to reverse order
- Prisma, how to clear the database
- Prisma relations
- React, how to make responsive JSX
- Change the Heroicons SVG stroke width in React
- React, how to dynamically choose a component to render
- Fix 'Constructor requires new operator' in Next.js
- Setup your website to allow full-screen on iOS
- How to use Prisma
- Fix Homebrew 'Permission denied @ apply2files' error
- Disable TypeScript 'declared but never read' check
- Music for programming
- Acronyms in Web Development
- Preserving white space and line breaks in a string in HTML
- Fix 'prisma/client did not initialize yet' on Vercel
June 2021
- Fix the 'module not found' error in Next.js
- How to parse Markdown in Next.js
- How to add Google Analytics 4 to Next.js
- How to upload files in a Next.js form
- Next.js, adding features just to development mode
- Next.js, how to open a link in a new window
- How to make your S3 buckets public
- How to upload files to S3 from Node.js
- How to convert a callback into async/await
- How to get the file extension in Node.js from the MIME type
- How to get the file extension in Node.js
- Fix 'resolver is not a function' in React
- How to add ReCaptcha to a Next.js form
- React, how to make a checked checkbox editable
- Swift, how to get a random item from an array
- How to shuffle an array in Swift
- Swift Operators Precedence and Associativity
- Swift Protocols
- Swift Functions
- Swift Classes
- Swift Structures
- Swift Enumerations
- Swift optionals and nil
- Swift Tuples
- Swift Dictionaries
- Swift Sets
- Arrays in Swift
- Booleans in Swift
- Strings in Swift
May 2021
- Numbers in Swift
- Semicolons in Swift
- Swift Comments
- Swift Loops Control Transfer Statements
- Swift loops: the repeat-while loop
- Swift loops: the while loop
- Swift loops: the for-in loop
- Swift Conditionals: ternary conditional
- Swift conditionals: the switch statement
- Swift conditionals: the if statement
- Swift Operators
- Swift Objects
- Swift Variables
- Introduction to the Swift programming language
- Next.js Email Authentication using NextAuth
- Cache data globally in Next.js at build time
- Fix 'Already 10 Prisma Clients are actively running'
- Fix 'PrismaClient is unable to be run in the browser' in Next.js
- CSS Border inside the element
- Fix 'TypeError: Attempted to assign to readonly property'
- Absolute imports in Next.js
- How to programmatically change a route in Next.js
- How to force a page refresh in Next.js
- Next.js: show in development, hide in production
- Fix Next.js component state not refreshing on navigation
- Fix the 'can't resolve module' error in Next.js
- How to create an empty SQLite database
- Fix Tailwind 'unable to resolve dependency tree' in Next.js
- Fix the 'Upload preset not found' error in Cloudinary
- Push to 2 Git repositories at once and keep them in sync
April 2021
- Johnny Five, receiving input from the device
- Johnny Five, how to use a REPL
- Johnny Five, how to work with an LCD Screen
- Johnny Five, how to light a LED
- Phaser: Multiple scenes
- Phaser: Playing sounds
- Phaser: Mouse input
- Phaser: The game loop
- Phaser: Adding images
- Phaser: GameObjects
- Phaser: Scenes
- Phaser: The Canvas
- Johnny Five Tutorial
- Ideas are like fish, both stink after three days
- The Full-Stack Independent Developer
- Ideas
- How to use window.confirm()
- How to use window.prompt()
- How to apply padding to multiple lines in CSS
- Fix the 'Unable to import django.db' error in VS Code
- Arduino project: light the built-in LED using your browser
- Arduino project: control a servo motor with a potentiometer
March 2021
- Arduino Serial Communication
- Arduino: using libraries
- Arduino project: the map() function
- Arduino project: build a digital thermometer
- Arduino project: the tone() function
- Arduino project: the analogWrite() function and PWM
- Arduino project: use an active buzzer
- Arduino project: use a passive buzzer
- Arduino project: read analog input
- Arduino project: read a digital input
- Electronic Project: Build a voltage divider
- Electronic Project: Build a LED dimmer with a potentiometer
- Electronic components: Servo Motors
- DHT11 temperature and humidity sensor with Arduino
- 1602 LCD display with Arduino: wiring and code
- Electronic components: Analog Joystick
- Electronic components: Buzzers
- Electronic components: Potentiometers
- Electronic components: RGB LEDs
- Electronic components: Diodes
- Electronic components: LEDs
- Electronic components: Buttons
- Electronic components: Resistors
- Fix 'Your CLT does not support macOS 11' error
- The easy-peasy React state management library
- How to automatically cut silence in videos
- How to use pm2 to serve a Node.js app
- How to check if a variable is a number in Python
- How to check if a variable is a string in Python
February 2021
- How to use Python reduce()
- How to use Python filter()
- How to use Python map()
- Introduction to multithreading in Python
- Powering an Arduino with a power bank
- The PEP8 Python style guide
- Python Ternary Operator
- Python Operator Overloading
- Python Polymorphism
- Python Constants
- Python Enums
- How to check the current Python version
- How to install Pygame Zero on macOS
- GUI programming in Python with tkinter
- Python List comprehensions
- Regular Expressions in Python
- Python, how to write to a file
- Python, create a TCP server
- Python, create a Web (HTTP) server
- How to host a Web Application using DigitalOcean Apps
- useLocation and useHistory undefined in React Router
- React Router, how to get data from a dynamic route
- Wait for all promises to resolve in JavaScript
- React, edit text on doubleclick
- React, focus an item in React when added to the DOM
- Python, read the content of a file
- Install third-party Python packages with pip
January 2021
- Python, create a network request
- The with statement in Python
- Python, how to create an empty file
- Python, how to create a directory
- Python Exceptions
- Python, how to check if a file or directory exists
- Python, how to get the details of a file
- How to check if a number is odd or even in Python (with %)
- Python, how to list files and folders in a directory
- Python Annotations
- Python Introspection
- Python Docstrings
- Python Decorators
- Python, how to create a list from a string
- How to remove a Git remote
- How to run a Web Server on an Arduino
- How to connect to a WiFi network using an Arduino
- The Arduino Cloud platform
- How I deleted all my old tweets using Python
- How to update Pi-hole
- Use a GoPro as a remote webcam using Python
- Python Virtual Environments
- Python Closures
- Python Lambda Functions
- Python Nested Functions
- Python Recursion
- Python, accept arguments from command line
- Python variables scope
- Debugging Python
- The Python Standard Library
2020 317
December 2020
- Breadboard Power Supply Module
- The Arduino built-in LED
- Arduino project: blink a LED
- What to buy to get started with Arduino and Electronics
- Measuring voltage, current and resistance using a multimeter
- Python Classes
- Python Modules
- Python Loops
- Python Objects
- Python Functions
- Python Dictionaries
- Python Sets
- Python Tuples
- Electronics Basics: using a multimeter
- Electronics Basics: Prototyping using breadboards
- Electronics Basics: Your first circuit
- Electronics Basics: Short Circuit
- Electronics Basics: Resistance
- Electronics Basics: Vcc, ground, ...
- Electronics Basics: Voltage
- Electronics Basics: Current
- Electronics Basics: Analog vs digital
- Introduction to Electronics
- Python Lists
- Python Control Statements
- Python, Accepting Input
- Python Numbers
- Python Booleans
- Python Strings
- Python Operators
- Python Data Types
November 2020
- The basics of working with Python
- Python 2 vs Python 3
- Running Python programs
- Installing Python 3 on macOS
- Introduction to Python
- JavaScript Algorithms: Bubble Sort
- JavaScript Algorithms: Merge Sort
- JavaScript Algorithms: Quicksort
- JavaScript Algorithms: Selection Sort
- JavaScript Algorithms: Binary Search
- JavaScript Algorithms: Linear Search
- Algorithm Complexity and Big O Notation
- JavaScript, how to replace an item of an array
- How to use Netcat
- JavaScript, how to find duplicates in an array
- JavaScript, how to extend a class
- JavaScript, how to filter an array
- JavaScript, how to find a character in a string
- JavaScript, how to exit a function
- JavaScript, how to export multiple functions
- JavaScript Data Structures: Linked lists
- JavaScript Data Structures: Queue
- A short guide to nano
- A short guide to emacs
- A short guide to vim
- A short guide to the ed editor
October 2020
- The Stack JavaScript Data Structure
- The Array JavaScript Data Structure
- How to move around blocks of code with React and Tailwind
- Using useState with an object: how to update
- Destructure a JavaScript object to existing variables
- Fix 'cannot update a component while rendering' in React
- Fix 'EMFILE: too many open files, watch' in React Native
- Fix 'iphoneos cannot be located' in React Native
- Fix 'unrecognized command run-ios' in React Native
- Linux commands: env
- Linux commands: printenv
- Linux commands: basename
- Linux commands: crontab
- Linux commands: export
- Linux commands: tar
- Linux commands: traceroute
- Linux commands: ping
- Linux commands: gunzip
- Linux commands: gzip
- Linux commands: xargs
- Linux commands: df
- Linux commands: diff
- Linux commands: uniq
- Linux commands: sort
- Linux commands: uname
- Linux commands: man
September 2020
- Linux commands: grep
- Linux commands: umask
- Linux commands: du
- Linux commands: open
- Linux commands: chmod
- Linux commands: chown
- Linux commands: sudo
- Linux commands: clear
- Linux commands: who
- Linux commands: alias
- Linux commands: kill
- Linux commands: top
- Linux echo command: -e, -n, and examples in Bash
- Linux commands: ps
- Linux commands: ln
- Linux commands: find
- Linux commands: cat
- Linux commands: tail
August 2020
- The less command in Linux: scroll, search, jump to the end
- Linux commands: cp
- Linux commands: mv
- Linux commands: ls
- Linux commands: cd
- Linux commands: mkdir
- How to set up hot reload on Electron
- How to change a Next.js app port
- How to create your first VPS on DigitalOcean
- How to get the index of an item in a JavaScript array
- What is a reverse proxy?
- Fix 'util.pump is not a function' in Node.js
- Serve an HTML page using Node.js
- Find and kill the process using a port on Linux or Mac (lsof)
- Nginx reverse proxy for multiple Node.js apps in subfolders
- How to configure Nginx for HTTPS
- Fix the 'cb.apply is not a function' error in GitBook
- How to swap two array elements in JavaScript
- How to configure HTTPS in a React app on localhost
- How to simulate a for loop in Svelte templates
- How to dynamically apply CSS in Svelte
- How to install a local SSL certificate in macOS
- How to use Sequelize to interact with PostgreSQL
July 2020
- Redis Publish/subscribe
- How to use Redis Hashes
- How to use Redis Sorted Lists
- Using Redis Sets
- Redis Lists
- First steps with Redis
- How to install Redis
- Introduction to Redis
- How to handle promise rejections
- Introduction to Linux
- Updating a deployed container based on a Docker image
- How to commit changes to a Docker image
- How to access files outside a Docker container
- Sharing Docker Images on Docker Hub
- Working with Docker Images from the command line
- Working with Docker Containers from the command line
- What to do if a Docker container immediately exits
- Build a Node.js Hello World Docker container
- The difference between Frontend and Backend Web Development
- Using Docker Desktop to manage a Container
- First steps with Docker after the installation
- Installing Docker on macOS
- Dockerfiles
- Introduction to Docker Containers
- Introduction to Docker Images
- Introduction to Docker
- The Command Line for Complete Beginners
- How to use Google Fonts
- Chaining method calls in JavaScript
- A curious usage of commas in JavaScript
- Namespaces in JavaScript
June 2020
- Custom errors in JavaScript
- Custom events in JavaScript
- Are values passed by reference or by value in JavaScript?
- Introduction to XState
- The JavaScript super keyword
- Event delegation in the browser using vanilla JavaScript
- JavaScript Proxy Objects
- How to accept unlimited parameters in a JavaScript function
- How to check if a value is a number in JavaScript
- The importance of timing when working with the DOM
- How to change commas into dots with JavaScript
- How to remove empty lines in VS Code
- What is hoisting in JavaScript?
- The JavaScript for..of loop
- What are the ways we can break out of a loop in JavaScript?
- null vs undefined in JavaScript: the difference
- How to check the current Node.js version at runtime
- Arrow functions vs regular functions in JavaScript
- Primitive types vs objects in JavaScript
- I love books
- Software is a superpower
- preventDefault vs stopPropagation vs return false
- Event bubbling and event capturing
May 2020
- How to check if a key exists in a JavaScript object
- How to shuffle elements in a JavaScript array
- How I use text expanding to save time
- Get the last segment of a path or URL in JavaScript
- Subfolder vs subdomain
- How to use environment variables in Netlify functions
- How to create a staging version of your site
- How to store passwords in the database
- How to add an image to the DOM using JavaScript
- GraphQL API vs REST API
- Sharing the Journey Towards Building a Software Product Business
- How to start freelancing as a developer
- This is my little Digital Garden
- How to go from tutorials to your own project
- Changing the favicon in dark mode
- Squashing Git commits
- Introduction to Deno
- Object destructuring with types in TypeScript
- Productivity gains of using a Mac and an iOS device
- How to detect if an Adblocker is being used with JavaScript
- Fix 'regeneratorRuntime is not defined' in Parcel
- Responsive images using srcset
- How to detect dark mode using JavaScript
- Safari, warn before quitting
- How to use insertAdjacentHTML
- Gatsby, how to change the favicon
- Fix the 'is not a function' error in JavaScript
April 2020
- How to force credentials to every Axios request
- How to change an HTML image URL in dark mode
- How to check if an element is a descendant of another
- How to create an exit intent popup
- How to test an npm package locally
- Use promises and await with Node.js callbacks
- Fix 'Cannot assign to read only property exports' in JS
- Fix React form state not updating on browser autofill
- How to remove the first character of a string in JavaScript
- Remove a trailing character with JavaScript slice(0, -1)
- How to split a JavaScript array into halves or chunks
- How to cut a string into words in JavaScript
- How to load an image in an HTML canvas
- How to distinguish files from directories in Node.js
- A very short introduction to COBOL
- How to remove all CSS from a page at once
- How to mass rename files in Node.js
- How to get the first n items in an array in JS
- The same POST API call in various JavaScript libraries
- How to download an image using Node.js
- How to create and save an image with Node.js and Canvas
- How to print a canvas to a data URL
- SQL Views
- SQL Joins
- SQL, how to delete data and tables
- SQL, how to update a table structure
March 2020
- SQL, how to update data
- SQL, Unique and Primary keys
- SQL, Handling empty cells
- SQL, how to use SELECT
- SQL, adding data to a table
- SQL, creating a table
- Setting up a project to build a JavaScript game with Phaser
- What is a GB-second?
- What is a JavaScript Frontend Framework?
- Incrementing multiple folders numbers at once using Node.js
- An introduction to REST APIs
- The Node Core Modules
- My plan for being hired as a Go developer. In 2017
- How TCP works
- DNS, Domain Name System
- Get query string values with URLSearchParams
- How to reload the browser window when you save a file
- How to remove all the node_modules folders content
- The Developer’s Dilemma
- How to convert an Array to a String in JavaScript
- Should I be a generalist or specialize?
- What is a magic number in programming?
- The Arduino MKR WiFi 1010
- Give your Raspberry Pi a static IP address
- How to connect to a Raspberry Pi using a Mac
- List of keywords and reserved words in JavaScript
- How to open VS Code from the command line
- The C Preprocessor
February 2020
- C Header Files
- C Structures
- C Enumerated Types
- The typedef keyword in C
- C Global Variables
- Static variables in C
- Can you nest functions in C?
- Scope of variables in C
- How to access the command line parameters in C
- C conversion specifiers and modifiers
- How to print a percentage sign in C: why % fails, %% works
- How to check a character value in C
- Fix the C 'implicitly declaring library function' warning
- How to return a string from a C function
- Double quotes vs single quotes in C
- Basic I/O concepts in C
- NULL in C: what it is, how to check for it, and C23 nullptr
- Introduction to C Functions
- Booleans in C
- Looping through an array with C
- Introduction to C Pointers
- How to find the length of a string in C
- Introduction to C Strings
- How to determine the length of an array in C
- Introduction to C Arrays
- How to work with loops in C
- C Conditionals
- C Operators
- C Constants
January 2020
- C Variables and types
- Introduction to the C Programming Language
- I wrote 1 blog post every day for 2 years. Here's 5 things I learned about SEO
- Milli, micro, nano, pico: what they mean and how to convert
- Non-printable ASCII characters list
- Printable ASCII characters list and how to check them in C
- Arduino programming language: what it is (C++), how to use it
- The Arduino Uno WiFi rev 2 board
- The Arduino Uno rev 3 board
- An introduction to Arduino
- Coding is an art
- How to block distractions using uBlock Origin
- How to send the authorization header using Axios
- MySQL User Permissions
- SQLite User Permissions
- Converting Numbers from Decimal to Binary
- The Binary Number System
- Write what you don't know
- The GPL License
- The Decimal Number System
- Finite State Machines
- PostgreSQL vs MySQL, a comparison
- How to start a blog using Hugo
- Creating a user on MySQL
- How to install MySQL on macOS
- How to list tables in the current database using PostgreSQL
- How to list all databases using PostgreSQL
- How to switch database using PostgreSQL
- How to list all users in PostgreSQL