madr.se

Innehåll från 2025

September, 2025

Använd abbr-elementet för förkortningar, men skippa title-attributet

Kort och träffsäkert om hantering av förkortningar, akronymer och numeronymer:

  • The title attribute content is only practically available to mouse users.
  • The title attribute display for mouse users with low vision is problematic, to say the least.
  • The title attribute content is available to users of JAWS and NVDA screen reader users if they enable it, by default it’s ignored.
  • VoiceOver simply does not announce the title attribute content on \<abbr\>
  • No amount of clever tricks with ARIA, CSS and JavaScript will make it not suck.

Lösningen är kort och gott att falla tillbaka på traditionella skrivmetoden: att alltid skriva ut den långa betydelsen i en parantes första gången förkortningen förekommer, och därefter skippa det.

title-attributet kan fortsätta användas som en nice to have för att berika muspekarinteraktioner, men det är en otillräcklig lösning för tillgänglighet.

Följande CSS-snippet kommer aldrig att anses dålig, men däremot överflödig:

abbr[title] {
  cursor: help;
}

Använd tabeller för att märka upp kalenderdata

Skrivet om tillgänglighet rörande kalendervyer, t ex månads- eller veckovyer.

  • These visual calendar grids should be tables (which allows column & row headers and table navigation commands).
  • If you want to support screen readers, the current date should use aria-current.

Jag satt själv med detta som en tankeövning nyligen, och insåg också ganska fort att detta förmodligen är ett av de sällsynta fallen där tabeller är att föredra.

Det går att jobba en del med ARIA-attribut istället, för att få spalter och rader att samverka - men tabeller har detta inbyggt, och det kan skärmläsare förstå och skapa värde av.

Skräms vi av välstånd och överflöd?

Träffsäkert om Abundance, som på svenska kan översättas till välstånd eller överflöd.

I sometimes think we’re allergic to plenty. Abundance is here, and it terrifies us.

Jag kan känna igen mig i känslan av att hela tiden tänka att saker kan gå åt helvete när som helst. Att man ska vara på sin vakt och inte gapa efter för mycket, eftersom man då har mer att förlora.

Det är kanske fel sätt att se det på. Kanske borde man istället vara tacksam för att livet ändå, trots allt, kunde vara - och har varit - så påtagligt mycket sämre än nu.

Källa: Abundance now

Augusti, 2025

The Old Mayhem

Om något av följande påståenden är din åsikt:

  • Euronymous förtjänade att dö.
  • Euronymous var en manipulativ ond människa som drev Dead till självmord.
  • Dead var en harmlös, missförstådd person.
  • Dead gjorde ingen något ont.

Så kan jag verkligen rekommendera The Old Mayhem. Det är två nördar som gräver fram gamla brev och intervjuer för att visa Deads och Euronymous egna ord från Mayhems epok 1987-1993.

Jag har ändrat uppfattning om Dead och Euronymous efter att ha tagit del av deras publikationer, och lärt känna sidor av Oystein och Pelle som jag inte hade någon aning om.

De finns även på Instagram och Tumblr, men det är den här bloggen som jag äntligen välkomnar med varm hand. Äntligen finns denna guldgruva av information på en bra plattform.

Källa: The old Mayhem

Köra podman-containers som root är ibland säkrare

Rootless är väl alltid att föredra, väl? Inte riktigt! Köra som root är inte alls dumt, med --userns auto.

It is actually more secure. If you run two containers as a rootless user, they run in the same user namespace so they can attack each other from a User Namespace point of view.

If you run two containers as root with podman run –userns auto, then they run in unigue user namespace and are isolated.

Rootless containers are great for containers run by users on a system, but if you are just running containers on a server, then –userns=auto is a more secure solution.

Jag har kört rootless i många år utan att ifrågasätta det, så det var uppfriskande att få litet perspektiv.

Juli, 2025

Total Metal

Utställning på Kulturhuset Stadsteatern, Stockholm den 12 juli 2025

Affisch

Vibe coding I all ära, men …

The fundamental problem is that vibe coding creates what experts call “pseudo-developers.” These are people who can generate code but can’t understand, debug, or maintain it. When AI-generated code breaks, these developers are helpless.

As one industry observer notes: “The first to get replaced will be the vibe coders. The ones who thrive will be those who know how to guide the tools, not just follow them.”

Som seniorer behöver vi bli bättre på att styra våra juniora talanger. De ska ju ta hand om vårt arv sen.

För egen del har jag inget emot att använda AI, men jag ogillar verkligen den påträngande “varför genererar du inte bara koden istället?”-pressen som uppstått det senaste året. Det rimmar illa med den traditionella synen på tekniskt ägarskap.

Det finns en känsla av att många duktiga juniorer kommer gå förlorade för att de inte får lära sig.

10 regler för att bli en bättre programmerare - från 1971

Förvånansvärt litet har ändrats i denna, trots att det gått över 50 år.

Jag minns själv när dessa slog mig som en snyting:

  1. You are not your code. Remember that the entire point of a review is to find problems, and problems will be found. Don’t take it personally when one is uncovered.
  2. Critique code instead of people – be kind to the coder, not to the code. As much as possible, make all of your comments positive and oriented to improving the code. Relate comments to local standards, program specs, increased performance, etc.

Den mer juniora versionen av mig behövde verkligen få läsa det för att sluta ta allt personligt, och jag minns den tidpunkten som en vändpunkt för hur jag såg på saker och ting.

Jag har också påmint många efter mig om dessa, då de precis som jag behövt höra det.

Juni, 2025

April, 2025

Zeal & Ardor

Konsert på Debaser strand, Stockholm den 24 april 2025

Affisch

Mars, 2025

Hemsidan behöver återuppstå

I want a world where finding content is harder. Where it takes a little more work, and where we appreciate what we read, watch, and consume because it didn’t come easily.

I want a world where musicians don’t have to tailor their music to the 5-second attention span of a million swiping doomscrollers and can instead rely on the support of an audience who care enough not to sleepwalk their way through the Internet.

I want a world where not every writer is devoting their time - and their audience’s time - to helping Substack justify its VC valuation through the homogenization of the Internet.

Även jag vill detta. Primärt för att småföretagen, föreningarna och vännerna alla kräver att jag kör Facebook eller Instagram för att få vara med i loopen. En vanlig hemsida eller en E-postlista hade inkluderat fler.

Läsvärd artikel som bör läsas i sin helhet.

Video: Vi lever i en värld där utvecklare hatar Firefox pga lyxproblem

Wow.

Firefox är skit och går inte att använda för att Firefox saknar 100% täckning på allt ögongodis tillgängligt i W3C Working Drafts.

Ett bra exempel på att dagens webbutvecklare har sina huvuden uppkörda så långt i sina egna ändtarmar, att de saknar förmåga att se utifrån en vanlig användares perspektiv.

Ingen vanlig användare på Internet bryr sig om ögongodis. De har fullt upp med att ägna 50% av sin tid åt att klicka bort invasiv reklam och godkänna cookies, samt bli stressade av att texten de läser hoppar på grund av att reklam sprängs in medans de bläddrar. Och har de fått tipset att stänga av spårare eller tredjeparts-cookies, så slutar 50% av Internet att fungera för dem. Har de dessutom lämnat Facebook, X och Instagram kommer hälften av alla länkar de fått till sig inte ens leda någonstans.

Framförallt är det inga vanliga användare som någonsin skulle uppskatta de poweruser-funktioner som Arc, Zen och Vivaldi ger.

Det är en bra tid vi lever i, om uteblivet ögongodis (som rimligen borde vara en perfekt progressiv enhancement) anses vara så kränkande att det leder till hat mot webbläsare som inte stödjer dem.

Personligen är jag otroligt optimistisk. Tiden med Netscape 4, Internet Explorer 6-11 är över. Flash är över. Java Applets är över. Tiden vi jagade KB att spara verkar ingen minnas. Tiden när SPA:er var sköra som glas är förbi.

Vi lever i en fantastisk tid. Visa litet jävla respekt mot resan som krävdes för att komma hit, för fan.

Februari, 2025

En rad CSS istället för 300 rader JavaScript

textarea {
  field-sizing: content;
}

Jag har suttit tiotals timmar för att lösa avrundningsfel med JavaScript-lösningar för självväxande textareas, där scrolls på 1px skapas vid vissa inzoomningar när vissa typsnitt används.

För en mer utförlig demo, se This CSS Property Replaces Hundreds of Lines of Code.

Det är surrealistiskt att detta behov snart är möjligt att tillgodose med en rad CSS, som går alldeles utmärkt att applicera med progressive enhancement.

Video: studioägare delar lärdomar från att spela in en hitlåt med prosumer audio interface

Don’t get too distracted by the tools. The tools are there to facilitate what you are doing. The things that matter the most: no 1, the song; no 2, your skills, take your time. No 3: work with good and skilled people. The song, your skills, the people you work with, and then tools, in that order.

Lättsmält film som visar vad man kan åstadkomma med begränsad utrustning. Flera bra tips om rummickar visas, samt hur trummor bäst mickas upp när det inte finns oändligt med ingångar.

För mig bekräftar det att ett bra ljudbehandlat rum där flera personer kan ta tid på sig att tillsammans arbeta på en låt förmodligen är viktigare än att ha ytterligare 20 mickar, gitarrer eller förstärkare.

Kan knappat bärga mig med att få till ett bra musikrum i källaren :)

Video: En historik om varför skrivbordsmiljöerna på Linux stinker

Med en lagom skopa av “det var bättre förr”, såklart.

I princip var GNOME 2 och KDE 3.5 mycket tilltalande vid sidan av Windows Vista, och det skapade intresse för att byta till Linux.

Sedan hände KDE 4, och GNOME 3. Kontroversiella och alldeles för omdömeslösa storsteg framåt. Eftersom KDE 4 hände först, blev GNOME “the golden standard”. Detta är ett arv som sådde frön för nya frustationsmoment.

Januari, 2025

POC på Offline-first PWA med Phoenix LiveView och Svelte

  • Phoenix LiveView, PubSub, and Ecto/PostgreSQL for real-time syncing and data persistence.
  • Svelte (via LiveSvelte) for the frontend UI and state management.
  • Service Workers, Web Storage, and IndexedDB (via y-indexeddb) for offline support.
  • CRDTs (via Yjs) to resolve conflicts between distributed app states.

Conflict-free Replicated Data Type (CRDT) är ett koncept jag ofta filosoferat kring, men aldrig brytt mig om att se om det faktiskt finns. Nu är jag upplyst!

Det verkar också som att Svelte håller på att bli community-favorit för att ge utvecklare möjlighet att flytta logik från servern till webbläsarfliken i projekt med Phoenix LiveView.