https://github.com/schalkneethling
schalkneethling (Schalk Neethling) · GitHub
✌️ Frontend engineer, web accessibility, and open web evangelist. ❤️ - schalkneethling
schalk neethlinggithub
https://schalkneethling.com/posts/panozoom-the-accidental-web-app/
Panozoom: The Accidental Web App - Schalk Neethling - Open Web Engineer
What started as a question about a free macOS image viewer turned into a deep dive into pan and zoom math, pointer events, WheelEvent quirks, and a TypeScript...
schalk neethling openweb appaccidentalengineer
https://schalkneethling.com/posts/cleaner-temp-directory-cleanup-in-nodejs-tests-with-mkdtempdisposable/
Cleaner Temp Directory Cleanup in Node.js With mkdtempDisposable - Schalk Neethling - Open Web...
Working with temporary directories in Node.js just became cleaner and more intentional with mkdtempDisposable and explicit resource management.
schalk neethling opennode jscleanertempdirectory
https://schalkneethling.com/tags/byte-sized/
Posts tagged with byte-sized - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedbyte sizedwebengineer
https://schalkneethling.com/tags/algolia/
Posts tagged with algolia - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedalgoliawebengineer
https://schalkneethling.com/tags/research/
Posts tagged with research - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedresearchwebengineer
https://schalkneethling.com/posts/curiosity-collaboration-and-innovation-at-any-scale/
Curiosity, Collaboration, and Innovation At Any Scale - Schalk Neethling - Open Web Engineer
Harness the power of open source and an innovative culture to drive creativity and collaboration within your team—inspired by Mozilla, GitHub, OddBird, Igalia,...
schalk neethling opencuriositycollaborationinnovationscale
https://schalkneethling.com/posts/git-recovering-when-you-branched-from-the-wrong-branch/
Git: Recovering When You Branched From the Wrong Branch - Schalk Neethling - Open Web Engineer
A practical walkthrough for when you realise your feature branch was created from the wrong base, covering git log, merge parents, cherry-pick, and bypassing...
schalk neethling opengitrecoveringbranchedwrong
https://schalkneethling.com/posts/semantic-html-just-might-make-your-css-less-fragile/
Semantic HTML Just Might Make Your CSS Less Fragile - Schalk Neethling - Open Web Engineer
A real-world exploration of how choosing the right HTML elements for interview transcripts solves both semantic and styling challenges in one cascading swoop.
schalk neethling openmight makesemantichtmlcss
https://schalkneethling.com/posts/css-translate-scale-rotate-have-a-new-home/
CSS translate, scale, and rotate have a new home and it’s splendid! Come on in. - Schalk Neethling...
Unlock simpler web development with CSS's new individual transform properties—cleaner syntax, more intuitive styling, and delightful animations.
csstranslatescalerotatenew
https://www.inaudiology.co.za/
Izelle Neethling Audiology
neethlingaudiology
https://kninstitute.com/
Home - The Kobus Neethling Institute Beyonder Training Programme
Mar 7, 2025 - The Beyonder training programme focuses on the process to attain the essential skill of creative thinking and focuses on developing unique insights.
kobusneethlinginstitutebeyondertraining
https://schalkneethling.com/posts/opening-and-closing-dialogs-without-javascript-using-html-invoker-commands/
Opening and Closing Dialogs Without JavaScript Using HTML Invoker Commands - Schalk Neethling -...
Learn how to use HTML invoker commands to open and close dialogs without writing any JavaScript.
without javascriptusing htmlopeningclosingdialogs
https://schalkneethling.com/tags/mental-health/
Posts tagged with mental-health - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedmental healthwebengineer
https://schalkneethling.com/posts/the-benefits-of-typing-function-return-values/
Raise The Red Flag Early: The Power of Explicit Return Types in TypeScript - Schalk Neethling -...
Learn how explicit return types in TypeScript can help you catch potential bugs early, improve code reliability, and create more predictable and maintainable...
red flagraiseearlypowerexplicit
https://schalkneethling.com/posts/build-a-profile-page-html-css-part6-dialog-form-netlify/
Building a Profile Page with HTML and CSS: A form, A Dialog, and Netlify - Schalk Neethling - Open...
In this part, we will add a form to our profile page, use a dialog to display our form, deploy our page using Netlify, and set up Netlify to handle form...
schalk neethlingbuildingprofilehtmlcss
https://schalkneethling.com/posts/accessible-text-colour-with-the-css-contrast-color-function/
Accessible Text Colour with the CSS contrast-color() Function - Schalk Neethling - Open Web Engineer
The CSS contrast-color() function lets the browser pick the most readable text colour for any background. Here is what it does, how it works, and why it...
schalk neethling opencontrast coloraccessibletextcolour
https://schalkneethling.com/tags/javascript/
Posts tagged with javascript - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedjavascriptwebengineer
https://schalkneethling.com/posts/the-first-real-autoresearch-run-was-expensive-messy-and-extremely-useful/
The First Real Autoresearch Run Was Expensive, Messy, and Extremely Useful - Schalk Neethling -...
I pointed the skills autoresearch harness at a real frontend security project. It cost roughly four dollars, failed before completing a full improvement loop,...
first realrunexpensivemessyextremely
https://schalkneethling.com/posts/flexsearch-tokenizers-learning-through-writing-tests/
Flexsearch tokenizers - Learning through writing tests - Schalk Neethling - Open Web Engineer
An introduction to Flexsearch and its tokenizers through writing and interpreting tests.
schalk neethling openwriting teststokenizerslearningweb
https://schalkneethling.com/posts/style-details-content-with-details-content/
Style Details Content with ::details-content - Schalk Neethling - Open Web Engineer
Learn how to use the new CSS ::details-content pseudo-element to style the content area of HTML details elements with greater control and flexibility.
schalk neethling openstyledetailscontentweb
https://smitneethling.co.za/
Home - Smit Neethling Incorporated
Jan 10, 2024 - A Light Wind Swept Over The Corn, And All Nature Laughed In The Sunshine. Projects Forest Wilderness Get started with lorem ipsum dolor sit amet consectetur.
smitneethlingincorporated
https://schalkneethling.com/posts/announcing-minimalist-modern-css-library-for-most-web-projects/
Announcing Minimalist: A Minimal Modern CSS Library for Most Web Projects - Schalk Neethling - Open...
Introducing Minimalist, a modern, lightweight, and customizable CSS library designed to provide a solid foundation for styling websites and web applications....
modern cssweb projectsschalk neethlingannouncingminimalist
https://schalkneethling.com/posts/10-top-accessibility-errors-and-how-to-avoid-and-fix-them/
10 Top accessibility errors and how to avoid and fix them - Schalk Neethling - Open Web Engineer
In late December of 2023, TPGi posted its list of the top accessibility errors found through its ARC automation tools in 2023. In this post I explain these...
schalk neethling opentopaccessibilityerrorsavoid
https://schalkneethling.com/posts/safely-selecting-elements-with-special-characters-using-css-escape/
Safely Selecting Elements with Special Characters Using CSS.escape() - Schalk Neethling - Open Web...
Learn how to safely select DOM elements with special characters in their IDs or classes using CSS.escape() to avoid selector parsing errors.
schalk neethling openspecial charactersusing csssafelyselecting
https://schalkneethling.com/posts/to-polyfill-or-not-to-polyfill-io/
To Polyfill Or Not To Polyfill.io - Schalk Neethling - Open Web Engineer
The topic of Polyfill.io and its sale came across my radar about a week ago when Tobie Langel shared a link to LinkedIn on the OpenJS Foundation Slack.
schalk neethling openpolyfilliowebengineer
https://11tybundle.dev/authors/schalk-neethling/
Schalk Neethling
Posts in the 11ty Bundle by: Schalk Neethling
schalkneethling
https://schalkneethling.com/posts/stop-storing-secrets-on-disk-replace-your-env-with-varlock-and-1password/
Stop Storing Secrets on Disk — Replace Your .env With Varlock and 1Password - Schalk Neethling -...
How I replaced my local .env file with Varlock and 1Password, gaining type safety, validation, secret scanning, and a single source of truth for environment...
stopstoringsecretsdiskreplace
https://schalkneethling.com/posts/the-prompt-is-the-product-writing-effective-prompts-for-ai-coding-agents/
The Prompt is the Product: Writing Effective Prompts for AI Coding Agents - Schalk Neethling - Open...
How I structure prompts for AI coding agents to get considered implementation plans instead of premature code.
ai coding agentsschalk neethlingpromptproductwriting
https://schalkneethling.com/tags/code-review/
Posts tagged with code-review - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedcode reviewwebengineer
https://schalkneethling.com/posts/structuring-feature-specifications-for-ai-agents/
Part 1: Structuring Feature Specifications for AI Agents - Schalk Neethling - Open Web Engineer
How to structure a handoff document that enables AI agents to perform gap analysis and implementation planning—with traceable acceptance criteria, UI state...
schalk neethling openai agentspartstructuringfeature
https://schalkneethling.com/posts/typescript-6-0-and-css-side-effect-imports-what-changed-and-how-to-fix-it/
TypeScript 6.0 and CSS Side-Effect Imports: What Changed and How to Fix It - Schalk Neethling -...
TypeScript 6.0 enables noUncheckedSideEffectImports by default, which causes a TS2882 error for CSS side-effect imports like import './style.css'. Here is what...
side effecttypescriptcssimportschanged
https://schalkneethling.com/tags/vuejs/
Posts tagged with vuejs - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedvuejswebengineer
https://schalkneethling.com/tags/security/
Posts tagged with security - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedsecuritywebengineer
https://schalkneethling.com/posts/watched-it-the-good-the-bad-web-components/
Watched It - The Good, The Bad, and The Web Components - Zach Leatherman - Schalk Neethling - Open...
My takeaways from Zach Leatherman's talk on web components at the 2023 JSHeroes conference.
good badweb componentsschalk neethlingwatchedzach
https://schalkneethling.com/posts/publishing-simple-cli-tool-npm/
Publishing a simple CLI tool on NPM - Schalk Neethling - Open Web Engineer
A step by step guide to publishing a simple CLI tool to the NPM registry.
schalk neethling opencli toolpublishingsimplenpm
https://schalkneethling.com/posts/the-hidden-costs-of-creativity-in-tech-a-personal-reflection/
The Hidden Costs of Creativity in Tech: A Personal Reflection - Schalk Neethling - Open Web Engineer
The financial pressures of modern life can make it hard to justify creative pursuits that don't promise immediate returns. This post explores the hidden costs...
schalk neethling openhidden costscreativitytechpersonal
https://schalkneethling.com/
Scripting on Caffeine - Schalk Neethling - Open Web Engineer
schalk neethling openscriptingcaffeinewebengineer
https://schalkneethling.com/tags/watched-it/
Posts tagged with watched-it - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedwatchedwebengineer
https://schalkneethling.com/posts/what-is-wcag/
What is WCAG? - A Brief Overview - Schalk Neethling - Open Web Engineer
Learn about WCAG (Web Content Accessibility Guidelines), including WCAG 2.2 principles, conformance levels, and upcoming WCAG 3 changes, plus insights on...
schalk neethling openwcagbriefoverviewweb
https://schalkneethling.com/contact/
Get in touch! - Schalk Neethling - Open Web Engineer
schalk neethling opengettouchwebengineer
https://schalkneethling.com/posts/installing-node-and-managing-versions/
Installing Nodejs across platforms and managing versions - Schalk Neethling - Open Web Engineer
A quick post on best practices when installing Nodejs on different platforms and managing multiple versions.
schalk neethling openacross platformsinstallingnodejsmanaging
https://schalkneethling.com/tags/typescript/
Posts tagged with typescript - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedtypescriptwebengineer
https://schalkneethling.com/tags/accessibility/
Posts tagged with accessibility - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedaccessibilitywebengineer
https://schalkneethling.com/posts/css-property-type-validator-is-getting-much-closer-to-real-world-css-workflows/
CSS Property Type Validator Is Getting Much Closer to Real-World CSS Workflows - Schalk Neethling -...
An update on the CSS Property Type Validator, focusing on recent improvements that make it better suited to practical, real-world CSS development workflows.
css propertyreal worldtypevalidatorgetting
https://schalkneethling.com/posts/merging-a-repository-into-existing-repo-keeping-history/
Merging a repository into an existing repository without losing commit history - Schalk Neethling -...
How do I merge one repository into another without losing commit history? This is a quick guide on how to do this.
without losingmergingrepositoryexistingcommit
https://schalkneethling.com/tags/developer-tools/
Posts tagged with developer-tools - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggeddeveloper toolswebengineer
https://schalkneethling.com/posts/introducing-masonry-gridlanes-wc-a-native-first-masonry-web-component/
Introducing masonry-gridlanes-wc: A Native-First Masonry Web Component - Schalk Neethling - Open...
A light-DOM custom element for CSS masonry layouts that uses display: grid-lanes when available and falls back to a spec-aligned JavaScript placement engine....
first webschalk neethlingintroducingmasonrywc
https://schalkneethling.com/tags/github/
Posts tagged with github - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedgithubwebengineer
https://schalkneethling.com/posts/exporting-algolia-indices-to-json-skip-the-custom-scripts/
Exporting Algolia Indices to JSON: Skip the Custom Scripts - Schalk Neethling - Open Web Engineer
Export your Algolia search indices to JSON without building custom export scripts using the Algolia CLI.
schalk neethling openexportingalgoliaindicesjson
https://schalkneethling.com/posts/comparing-sets-in-javascript-with-difference-and-symmetricdifference/
Comparing Sets in JavaScript With difference() and symmetricDifference() - Schalk Neethling - Open...
How the new Set methods difference() and symmetricDifference() can replace verbose Set comparisons with clear, expressive code.
schalk neethlingcomparingsetsjavascriptdifference
https://schalkneethling.com/tags/workflows/
Posts tagged with workflows - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedworkflowswebengineer
https://schalkneethling.com/posts/build-a-profile-page-html-css-planning/
Part One: Building a Profile Page with HTML and CSS: Planning - Schalk Neethling - Open Web Engineer
In this part of the series we will break down the design into components using Atomic Design, set up our repository on GitHub, and create the issues we will...
schalk neethling openpart onebuildingprofilehtml
https://schalkneethling.com/posts/pwa-in-2021/
Progressive Web Apps (PWA) in 2021 - Schalk Neethling - Open Web Engineer
Some thoughts on the current state and challenges with regards to building a PWA in 2021.
progressive web appsschalk neethling openpwaengineer
https://schalkneethling.com/tags/best-practices/
Posts tagged with best-practices - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedbest practiceswebengineer
https://schalkneethling.com/posts/css-anchor-positioning-scoping-implicit-anchors-and-conditional-hiding/
CSS Anchor Positioning: Scoping, Implicit Anchors, and Conditional Hiding - Schalk Neethling - Open...
Manage anchor relationships with anchor-scope, leverage the Popover API's implicit anchors, and hide positioned elements gracefully with position-visibility.
css anchor positioningschalk neethlingscopingimplicitanchors
https://schalkneethling.com/tags/automation/
Posts tagged with automation - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedautomationwebengineer
https://schalkneethling.com/posts/css-property-type-validator-assignment-site-validation/
CSS Property Type Validator: Assignment-Site Validation - Schalk Neethling - Open Web Engineer
The CSS property type validator now catches type mismatches at the point of assignment, not just at var() usage.
schalk neethling opencss propertytypevalidatorassignment
https://schalkneethling.com/posts/21-pieces-of-unsolicited-advice-for-junior-web-developers/
21 Pieces Of Unsolicited Advice For Junior Web Developers - Schalk Neethling - Open Web Engineer
In this post, I share 21 pieces of unsolicited advice for junior web developers. I emphasize the challenges of learning web development, encourage...
schalk neethling openweb developerspiecesunsolicitedadvice
https://schalkneethling.com/posts/targeting-svg-images-with-css-attribute-selectors-and-filter-invert/
Targeting SVG Images with CSS Attribute Selectors and filter: invert() - Schalk Neethling - Open...
When you cannot inline an SVG or use it as a mask-image, a combination of the ends-with attribute selector and filter: invert() offers a clean, CSS-only...
schalk neethlingtargetingsvgimagescss
https://schalkneethling.com/posts/three-reasons-your-scroll-snap-container-may-be-overflowing-on-mobile/
Three Reasons Your scroll-snap Container May Be Overflowing on Mobile - Schalk Neethling - Open Web...
Take a fieldset, pour some radio buttons and visually hidden labels into it, wrap it in scroll-snap, and you have a clean, semantic horizontal scroller on...
schalk neethling openthree reasonsscroll snapcontainermay
https://schalkneethling.com/tags/open-source/
Posts tagged with open-source - Schalk Neethling - Open Web Engineer
posts taggedopen sourceschalk neethlingwebengineer
https://schalkneethling.com/tags/general/
Posts tagged with general - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedgeneralwebengineer
https://schalkneethling.com/tags/html/
Posts tagged with html - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedhtmlwebengineer
https://schalkneethling.com/posts/announcing-the-css-property-type-validator-vscode-extension/
Announcing the CSS Property Type Validator Extension for VSCode - Schalk Neethling - Open Web...
A new editor extension that validates your CSS @property registrations and catches incompatible var() usage as you type.
schalk neethling opencss propertyannouncingtypevalidator
https://schalkneethling.com/posts/understanding-local-in-at-font-face-a-deep-dive/
Understanding local() in @font-face: A Deep Dive - Schalk Neethling - Open Web Engineer
Learn how to build a responsive profile page with modern typography, media queries, and CSS Grid. Part three of our hands-on web development tutorial series.
schalk neethling openfont facedeep diveunderstandinglocal
https://schalkneethling.com/posts/cancelling-asynchronous-operations-with-abortcontroller/
Cancelling asynchronous operations with AbortController - Schalk Neethling - Open Web Engineer
How to cancel asynchronous operations with the AbortController API.
schalk neethling opencancellingasynchronousoperationsweb
https://schalkneethling.com/about/
Who dat? - Schalk Neethling - Open Web Engineer
schalk neethling opendatwebengineer
https://schalkneethling.com/posts/number-and-currency-formatting-in-javascript-using-intl-numberformat/
Number and Currency Formatting in JavaScript using Intl.NumberFormat - Schalk Neethling - Open Web...
While this post does not by any means aim to cover all the amazing things you can do with Intl.NumberFormat, I do cover two very common use cases you may have...
schalk neethling opennumbercurrencyformattingjavascript
https://schalkneethling.com/posts/using-npm-link-for-local-package-development/
Using npm link for Local Package Development - Schalk Neethling - Open Web Engineer
Learn how to use npm link to test your NPM packages locally before publishing to the registry. With some common troubleshooting tips and best practices.
schalk neethling openpackage developmentusingnpmlocal
https://schalkneethling.com/now/
What I'm doing now - Schalk Neethling - Open Web Engineer
schalk neethling openwebengineer
https://schalkneethling.com/posts/what-if/
What if... - Schalk Neethling - Open Web Engineer
What if we embraced authenticity, take creative risks, and live deliberately without fear of judgment - a reflection on finding freedom through self-acceptance...
schalk neethling openwebengineer
https://schalkneethling.com/posts/code-reviewing-ai-generated-javascript-what-i-found/
Code Reviewing AI-Generated JavaScript: What I Found - Schalk Neethling - Open Web Engineer
What I learned reviewing AI-generated JavaScript: real-world issues, code review tips, and ways to ensure robust, production-ready code.
schalk neethling openai generatedcodereviewingjavascript
https://schalkneethling.com/posts/reconsidering-double-equals-in-javascript/
Reconsidering double equals in JavaScript - Schalk Neethling - Open Web Engineer
Could it be that the == operator in JavaScript had a bad rap and it’s time to reconsider it?
schalk neethling openreconsideringdoubleequalsjavascript
https://schalkneethling.com/posts/pushing-to-github-and-codeberg-simultaneously-with-git/
Pushing to GitHub and Codeberg Simultaneously with Git - Schalk Neethling - Open Web Engineer
Learn how to configure Git to push your code to both GitHub and Codeberg with a single command, including SSH key setup and a handy shell alias for...
schalk neethling openpushinggithubcodebergsimultaneously
https://schalkneethling.com/posts/dynamically-enable-and-disable-map-scroll-wheel-zoom-with-leaflet-js/
Dynamically enable and disable map scroll wheel zoom with Leaflet.js - Schalk Neethling - Open Web...
Learn how to programmatically require the presence of a modifier key to enable scroll wheel zoom support in Leaflet maps.
schalk neethling opendynamicallyenabledisablemap
https://schalkneethling.com/posts/freeze-your-object-constants-for-better-type-inference/
Freeze Your Object Constants for Better Type Inference - Schalk Neethling - Open Web Engineer
How combining JSDoc annotations with Object.freeze gives you literal type inference, runtime immutability, and better IDE support for JavaScript constant...
schalk neethling openfreezeobjectconstantsbetter
https://schalkneethling.com/posts/timelapse-a-pwa-putting-cursors-composer-2-to-the-test/
Timelapse: A PWA - Putting Cursor's Composer 2 To The Test - Schalk Neethling - Open Web Engineer
Timelapse is a progressive web app (PWA) with acollection of widgets that shows how much time has elapsed in the day, week, month, quarter, and year. Widgets...
schalk neethling opentimelapsepwaputtingcursor
https://schalkneethling.com/posts/why-i-care-deeply-about-web-accessibility-and-you-should-too/
Why I Care Deeply About Web Accessibility And You Should Too - Schalk Neethling - Open Web Engineer
In this post, I discuss why I care deeply about web accessibility, emphasizing its importance in ensuring equal access for people with disabilities and...
schalk neethling openweb accessibilitycaredeeplyengineer
https://schalkneethling.com/posts/css-property-deserves-better-tooling-so-i-am-building-a-validator/
CSS @property Deserves Better Tooling — So I Am Building a Validator - Schalk Neethling - Open Web...
CSS @property gives authors a type contract for custom properties, but no tooling enforces it at the consumption site. CSS Property Type Validator is an...
schalk neethling opencss propertydeserves bettertoolingbuilding
https://schalkneethling.com/posts/preventing-common-issues-when-working-with-ai-generated-code/
Preventing Common Issues When Working with AI-Generated Code - Schalk Neethling - Open Web Engineer
AI coding agents have made me significantly more productive as an engineer, but they have a systematic problem: as context fills, they drift from explicit...
ai generated codeschalk neethling opencommon issuespreventingworking
https://schalkneethling.com/posts/when-claude-does-not-get-your-git/
When Claude does not get your git - Schalk Neethling - Open Web Engineer
Why you should be careful copying and pasting proposed solutions from LLMs.
schalk neethling openclaudegetgitweb
https://schalkneethling.com/posts/living-and-making-peace-with-anxiety-a-personal-journey/
Living and Making Peace with Anxiety - A personal journey - Schalk Neethling - Open Web Engineer
Ok so, this is very different from what I usually post. It is also, hands down, the hardest post I have ever written. But, there is no point in keeping this to...
schalk neethling openmaking peacepersonal journeylivinganxiety
https://schalkneethling.com/tags/zod/
Posts tagged with zod - Schalk Neethling - Open Web Engineer
schalk neethling openposts taggedzodwebengineer