Robuta

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