I recently used CSS has() to show and hide buttons based on the content of a sibling of the parent. I considered using two classes to refer to one element; one to style a container and another one to check for content inside it. Using them separately, we can change the styling class name without …
Using CSS has() to write complex selectors is fun, especially when we compare the logic to JavaScript and can see how different the two languages are at doing the same.
A colleague and I recently made two buttons to expand and collapse all the levels in a documentation schema, and we didn’t want to …
Images, text, music and other artificial intelligence products (AI) will never be the artistic output it mimics because it’s not about creating; it’s just consumption.
In terms of process, there is little difference between putting on a movie or song that already exists and prompting AI for …
Suppose you ask artificial intelligence (AI) why you like your favourite band. It will look at other bands you like, find the one closest to your favourite by predefined category parameters, and spit out that band name as an answer. It won’t be entirely wrong – the two have some connection, and we …
My career-long aversion to post-it notes peaked after an intense period of workshops. Small, contained, limited and limiting; the tiny, sticky paper is the antithesis of a yes phase and attracts more lint than ideas.
Post-its play a crucial role in many stupid things:
Writing down passwords and …
Getting people to participate in meetings, workshops and their field of expertise goes beyond removing gates and lowering thresholds. We must also work with the participants’ inner threshold, whether too high or too low, because there is no correlation between one person’s words per meeting and the …
Most interfaces, design systems and UI frameworks seem to be made by someone who has only heard stories of interfaces.
It’s what we get when imitating each other. It’s what we get when bad practices become expectations. It’s what we get when making decisions without reasoning.
We know what …
When we work as if interfaces can reach completion, our fixes and new features tend to turn into redesign projects. We set out to make things right this time around; we might improve them but also change them to a degree where we introduce new issues.
This form of redesign not only makes testing …
Successfully designing web interfaces requires the intentional picking of HTML elements. As interfaces aren’t clickable visuals, we can’t avoid code and we can’t hand things off to be "translated" into code it later.
Knowing HTML doesn’t mean knowing each element by heart. Knowing HTML means …
One of the largest Norwegian online cookbooks. Featuring recipes from all over the world, this project has been run by my wife since 2010. It runs on Craft CMS with custom Twig templates, CSS and JS.
A web application that logs and calculates firewood usage. My final project in Harvard’s CS50x: CS50’s Introduction to Computer Science. I used Python with Flask and a SQL database in the backend, and Jinja, JavaScript, HTML and CSS for the frontend.
I contributed to Style Stage, a project showcasing different ways to style one page just by switching the CSS. Sysfonts is meant to demonstrate system fonts, which I see as the best option for web and native applications.
Norwegian site on how to prepare things for print. A way of keeping and sharing some of the things I learned while working in printing. Features calculators for image resolution and paper weight written in JS. Uses Craft CMS and Twig templates.
A JavaScript experiment that calculates how many pieces of chocolate is needed in a recipe. Written a few years back using jQuery, later refactored to ES6 and then currently into Svelte.