atomstr - RSS/Atom-to-Nostr bridge https://lobste.rs/s/hzqxq5 #release #web
https://atomstr.data.haus/
atomstr.data.haus
Hashtag
1,090 posts tagged with this hashtag.
atomstr - RSS/Atom-to-Nostr bridge https://lobste.rs/s/hzqxq5 #release #web
https://atomstr.data.haus/
atomstr.data.haus
Building Groovie, an Advanced Web-Based Drum Machine / Beat Sequencer via @abnv https://lobste.rs/s/ejx00p #art #web
https://pointersgonewild.com/2026-08-06-building-groovie-an-advanced-web-based-drum-beat-sequencer/
pointersgonewild.com
Building Groovie, an Advanced Web-Based Drum Machine / Beat Sequencer
Informing HTTP Extension Design with Data https://lobste.rs/s/ed9llx #web
https://mnot.net/blog/2026/linting_the_web
mnot.net
What 120 million HTTP responses from Common Crawl reveal about how protocol extensions actually get deployed — and what that should tell us when we design new ones.
the web server deployment model breaks at hobby scale https://lobste.rs/s/rn4inr #web
https://w.on-t.work/web-deployment-model
w.on-t.work
a 3D SVG Renderer that projects textures without rasterization https://lobste.rs/s/uwaoor #css #web
https://seve.blog/p/i-made-a-3d-svg-renderer-that-projects
seve.blog
How can you make affine transformations (the only ones SVGs are capable of) resemble perspective transformations?
Setup a simple web server with bozohttpd on NetBSD https://lobste.rs/s/titphm #netbsd #web
https://bozo.httpd.rocks/
bozo.httpd.rocks
Google Is Building an AI Fence Around the Internet It Once Championed, by @cong:
archive.md
archived 30 Jul 2026 11:40:04 UTC
I love bumping into super-old websites that just keep running.
Case in point:
ryanbrill.com
The personal site of Ryan Brill. Promoting standards compliance and CSS design, while proving that CSS layouts can be aesthetically pleasing.
w3.org
The anniversary of the first public release of Web Open Font Format (WOFF) is a very interesting historical milestone on the decades-long road of W3C’s work on fonts on the web.
Anti-fascist PieFed features https://lobste.rs/s/q7oa04 #culture #web
https://join.piefed.social/2026/08/04/anti-fascist-piefed-features/
join.piefed.social
Some time ago some fascists took a copy of Mastodon and made Truth Social with it. Arguably the damage caused by Truth Social to the world is greater than the good Mastodon brought to a few of us. This is my greatest fear, for PieFed. I can’t stop fascists from using software I made but […]
The current state of the web assumes that the reader is an adversary to be trapped and monetized.
When a news website forces you through three dismissive actions just to read a headline, they are burning your cognitive budget before delivering any value. You are greeted by a cookie banner taking up the bottom 30% of your screen, a "Subscribe!" modal dead center, an autoplaying video pinned to the corner and a prompt begging to send you push notifications.
I wrote about the state of news websites. Would love to hear your thoughts✨🙏
https://thatshubham.com/blog/news-audit
#enshittification #darkpattern #web #technology #socialmedia #indieweb #ux #privacy
bonsai: A library for building dynamic webapps, using Js_of_ocaml via @soapdog https://lobste.rs/s/mdm2yk #ml #web
https://github.com/janestreet/bonsai
github.com
A library for building dynamic webapps, using Js_of_ocaml - janestreet/bonsai
Which software ecosystems have you been brave and courageous enough **to abandon completely**? Check all that apply
Please boost for #Science
#SocialMedia #Meta #Google #Microsoft #internet #web #apps #Bigtech
Which software ecosystems have you been brave and courageous enough **to abandon completely**? Check all that apply
Please boost for #Science
#SocialMedia #Meta #Google #Microsoft #internet #web #apps #Bigtech
Which software ecosystems have you been brave and courageous enough **to abandon completely**? Check all that apply
Please boost for #Science
#SocialMedia #Meta #Google #Microsoft #internet #web #apps #Bigtech
If, like me, you love 1990s Web sites, back when the internet wasn't enshittified by Big Tech yet, have a look at Wiby, a Web 1.0 search engine.
Click on "Surprise me…" for random discoveries, often personal Web pages about obscure niche subjects, but sometimes you find a hidden gem…
#web #internet #online #RetroComputing #RetroTech #VintageComputing #retro #history #computing #IT #1990s #tech #technology #vintage #nostalgia #digital
wiby.org
Wiby is a search engine for older style pages, lightweight and based on a subject of interest. Building a web more reminiscent of the early internet.
Atom is better than RSS, in ways that matter https://lobste.rs/s/80cn4r #web
https://chrismorgan.info/atom%3Erss
chrismorgan.info
Let’s Play “htmx 4: the game” 🐴
#htmx 4 was published exclusively for the Game Boy and Game Boy Color platforms. I recorded my play-through including the source code. This game is tough!
sethmlarson.dev
Moments ago I just finished playing “htmx 4: the game”, the first JavaScript library published exclusively for Game Boy and Game Boy Color. I've recorded my play session and published the video to ...
Let’s Play “htmx 4: the game” 🐴
#htmx 4 was published exclusively for the Game Boy and Game Boy Color platforms. I recorded my play-through including the source code. This game is tough!
sethmlarson.dev
Moments ago I just finished playing “htmx 4: the game”, the first JavaScript library published exclusively for Game Boy and Game Boy Color. I've recorded my play session and published the video to ...
June in Servo: real world compat, media queries, SharedWorker, and more https://lobste.rs/s/7tggvc #browsers #web
https://servo.org/blog/2026/07/31/june-in-servo/
We now have a new way for you to help us write the monthly updates :)
“If you don't want #AIScrapers training themselves on your website, there's a new way to stop them that doesn't involve server-side blocking or praying they respect your instructions in robots.txt. A team of creatives have teamed up with a typography company to create a new type of font that’ll trick #LLM scrapers into ingesting poisoned gibberish.
Dubbed #ShieldFont, the #OpenSource project almost seems like magic if you're not familiar with the ins and outs of computer fonts. Look at a #web page written using a ShieldFont font and it’ll appear exactly as one would expect: All the content words (the nouns, verbs, adjectives and adverbs that give a sentence meaning) are the same as the writer originally wrote”
I’m going to try this ☺️
#AI / #ArtificialIntelligence / #scrapers / #AIPoisoning / #GSUB <https://www.theregister.com/ai-and-ml/2026/07/30/open-source-project-fools-ai-scrapers-with-poisoned-font/5281303>
<https://github.com/isaqueseneda/shieldfont> (source)
<https://shieldfont.org/encoder> (demo)
shieldfont.org
Publish for humans, not for crawlers. A web font that swaps the words in your HTML, so readers see your writing and AI training gets a stale copy.
“If you don't want #AIScrapers training themselves on your website, there's a new way to stop them that doesn't involve server-side blocking or praying they respect your instructions in robots.txt. A team of creatives have teamed up with a typography company to create a new type of font that’ll trick #LLM scrapers into ingesting poisoned gibberish.
Dubbed #ShieldFont, the #OpenSource project almost seems like magic if you're not familiar with the ins and outs of computer fonts. Look at a #web page written using a ShieldFont font and it’ll appear exactly as one would expect: All the content words (the nouns, verbs, adjectives and adverbs that give a sentence meaning) are the same as the writer originally wrote”
I’m going to try this ☺️
#AI / #ArtificialIntelligence / #scrapers / #AIPoisoning / #GSUB <https://www.theregister.com/ai-and-ml/2026/07/30/open-source-project-fools-ai-scrapers-with-poisoned-font/5281303>
<https://github.com/isaqueseneda/shieldfont> (source)
<https://shieldfont.org/encoder> (demo)
shieldfont.org
Publish for humans, not for crawlers. A web font that swaps the words in your HTML, so readers see your writing and AI training gets a stale copy.
Hey folks, can you help me out with a little something: trying to come up with a good number of files limit for a file scan (for Kitten so you don’t hit heap memory limits if you run it from the wrong directory by mistake) and I’d love some statistics from real JavaScript/TypeScript Node.js projects of the number of files in them (excluding .git and node_modules).
Would you be kind enough to run the following command in Terminal in your largest projects and let me know what number your get (along with a short description of the project):
find . \( -name "node_modules" -o -name ".git" \) -prune -o -print | wc -l
Thank you :)
#Kitten #SmallWeb #SmallTech #NodeJS #web #dev #stats #helpWanted
Building Progressively Enhanced Forms Using htmx by @raffomania https://lobste.rs/s/4bvpqh #javascript #web
https://www.rafa.ee/articles/progressive-enhanced-forms-htmx/
rafa.ee
Software engineer, artist and musician
Elixir-lang.org has a new design
Comments: https://news.ycombinator.com/item?id=48959042
#HackerNews #Elixir #Lang #New #Design #Update #Elixir #Community #Web #Design
⚙️ New CSS Generator!
Use the new shape() function and create a lot of fancy frames (Squiggly, Ragged, Wavy, Torn, etc.). Play with the settings and get the code in no time!
https://css-generators.com/fancy-frame/
It's responsive and works with any elements, including images.
Show me your best frame 👇
Streaming the IETF MoQ sessions with MoQ… kinda https://lobste.rs/s/lqs02q #browsers #networking #web
https://www.meetecho.com/blog/moq-ietf126/
meetecho.com
For quite some time, Meetecho has been the official tool for remote participation at IETF meetings. While this includes a plethora of different tools to support all the different features that are required in IETF meeting sessions (e.g., Zulip integration, slide sharing, queue management, polls, etc.), the core of the remote participation functionality is rooted
Setup a Simple, Self-Hosted Web Server with OpenBSD https://lobste.rs/s/nfcclq #openbsd #web
https://btxx.org/posts/self-hosted-openbsd/
btxx.org
Thinking about a new domain+project...
Anyone have the TL;DR; on self hosted fediverse software?
Mastodon vs Snac vs Pleroma vs ?
I'm looking for something that is super low maintenance and lightweight / easy on resources but as full featured as practical within those constraints.
Something easy to tune re: post lengths and media types would be cool too. A "text first" platform is desired.
I've run Mastodon in the past and it's like fishing with nukes for this use case.
What's out there?
Thinking about a new domain+project...
Anyone have the TL;DR; on self hosted fediverse software?
Mastodon vs Snac vs Pleroma vs ?
I'm looking for something that is super low maintenance and lightweight / easy on resources but as full featured as practical within those constraints.
Something easy to tune re: post lengths and media types would be cool too. A "text first" platform is desired.
I've run Mastodon in the past and it's like fishing with nukes for this use case.
What's out there?
Thinking about a new domain+project...
Anyone have the TL;DR; on self hosted fediverse software?
Mastodon vs Snac vs Pleroma vs ?
I'm looking for something that is super low maintenance and lightweight / easy on resources but as full featured as practical within those constraints.
Something easy to tune re: post lengths and media types would be cool too. A "text first" platform is desired.
I've run Mastodon in the past and it's like fishing with nukes for this use case.
What's out there?
Hi @wincent @lualang
I'm not familiar with #openwrt s packaging - so you think e.g. https://downloads.openwrt.org/releases/packages-25.12/x86_64/luci/luci-lua-runtime-26.207.72448~3727980.apk may have it. But it's not a .tar.gz - how can I unpack it's content?
I think of #CGI s starting with tiny ones like https://mro.name/g/u28br or https://qr.mro.name, ranging over http://mro.name/radio-privatkopie up to maybe even https://seppo.mro.name/development. Most of https://codeberg.org/explore/repos?q=rfc3875
On self-hosted #homelab s as well as shared #web hosting.
They should be able to survive several decades untouched and still allow tweaks without maintaining a toolchain.
codeberg.org
wondering if #lua is a good choice for long-term, low-maintenance, lightweight #CGI for #convivial #web-development? Downside is, shared web hosters rarely offer it and I'm not aware of a static Linux amd64 binary.
wondering if #lua is a good choice for long-term, low-maintenance, lightweight #CGI for #convivial #web-development? Downside is, shared web hosters rarely offer it and I'm not aware of a static Linux amd64 binary.
Microformats – building blocks for data-rich web pages https://lobste.rs/s/fw69uj #web
https://microformats.org/
microformats.org
Hey gang, I'm looking for a new full-time role for the first time since… I think 2012?
I've been building software for more than 20 years, I have deep experience with a variety of languages and platforms, and I've led multiple successful engineering teams.
I'm open to remote work, or in-person local to Pittsburgh, PA.
I appreciate any boosts you're willing to give.
#fedihire #web #ios #macos #swift #python #typescript #frontend #backend #fullstack #pittsburgh
Hey gang, I'm looking for a new full-time role for the first time since… I think 2012?
I've been building software for more than 20 years, I have deep experience with a variety of languages and platforms, and I've led multiple successful engineering teams.
I'm open to remote work, or in-person local to Pittsburgh, PA.
I appreciate any boosts you're willing to give.
#fedihire #web #ios #macos #swift #python #typescript #frontend #backend #fullstack #pittsburgh
Hey gang, I'm looking for a new full-time role for the first time since… I think 2012?
I've been building software for more than 20 years, I have deep experience with a variety of languages and platforms, and I've led multiple successful engineering teams.
I'm open to remote work, or in-person local to Pittsburgh, PA.
I appreciate any boosts you're willing to give.
#fedihire #web #ios #macos #swift #python #typescript #frontend #backend #fullstack #pittsburgh
Hey gang, I'm looking for a new full-time role for the first time since… I think 2012?
I've been building software for more than 20 years, I have deep experience with a variety of languages and platforms, and I've led multiple successful engineering teams.
I'm open to remote work, or in-person local to Pittsburgh, PA.
I appreciate any boosts you're willing to give.
#fedihire #web #ios #macos #swift #python #typescript #frontend #backend #fullstack #pittsburgh
Hi @liaizon,
I stick to https://en.wikipedia.org/wiki/Social_web and consider the 'open' whimsical and redundant.
There is no such thing as a 'closed #social #web' to distinguish from.
en.wikipedia.org
Justif: Knuth-Plass justification and microtypography for the web https://lobste.rs/s/p1jpv1 #show #design #web
https://justif.lyall.co/
justif.lyall.co
So Reddit has decided that plain HTML is unsafe https://lobste.rs/s/gqdvdt #rant #web
https://www.cole-k.com/2026/07/21/reddit/
cole-k.com
I am equally unsurprised and upset
Hi @plinubius,
gleich und gleich gesellt sich gern - große Strukturen mögen (und verstehen) andere große Strukturen. Die sind gegenseitig sozialisiert und fluktuieren horizontal durch die #PR Abteilungen. Und das #Social #Web hat keine. Hm.
Die #Regionalität könnte ein #Killerfeature sein. Lokale Timelines, Hashtags. Stichwort #Provinz- (jaja, ländlicher Raum) und #Kulturförderung, #Lokaljournalismus.
Zum Anschub muß aber eine Henne ein Ei legen. A la https://Bonn.social
bonn.social
Bonn.social ist ein Mastodon-Instanz für Bonn, Rhein-Sieg und für alle, die Bonn und die Region mögen. ❤️
Some more things about Django I've been enjoying https://lobste.rs/s/x5ewgv #python #web
https://jvns.ca/blog/2026/07/21/more-nice-django-things/
jvns.ca
Some more things about Django I've been enjoying
The Small, Real, Original Web, by @jake4480:
https://spacetimetech.wordpress.com/2026/07/19/the-small-real-original-web/?ref=frontenddogma.com
spacetimetech.wordpress.com
The ‘small’ web, the ‘slow’ web, or the ‘indie’ web – the non corporate, original style internet we knew and loved in the 90s and early 2000s (people just …
Hardcore IndieWeb: Run your own website 100% independently for only $0.01/day https://lobste.rs/s/l9rap5 #practices #web
https://www.neatnik.net/hardcore-indieweb

neatnik.net
wp2shell: Pre Authentication RCE in WordPress Core https://lobste.rs/s/aipvbn #security #web
https://wp2shell.com/
wp2shell.com
Check whether your WordPress site is affected by the pre-authentication RCE in WordPress Core. A free checker from Searchlight Cyber.
Elixir-lang.org has a new design
Comments: https://news.ycombinator.com/item?id=48959042
#HackerNews #Elixir #Lang #New #Design #Update #Elixir #Community #Web #Design
topcoat: A batteries-included framework for building web apps https://lobste.rs/s/zmg7ot #rust #web
https://github.com/tokio-rs/topcoat
github.com
A batteries-included framework for building web apps - tokio-rs/topcoat
The “Father of the Internet” Is Finally Retiring, by @timfernholz.com (@TechCrunch):
Framework-agnostic design systems: a practical approach to web components https://lobste.rs/s/w3gaou #css #design #javascript #web
https://piccalil.li/blog/framework-agnostic-design-systems-part-1/
piccalil.li
Baking framework lock-in into your design system from day one is a recipe for obsolescence. Component documentation is often tedious and out-of-sync with development. Let’s build a documentation-first, framework-agnostic component library using web standards and solve this admittedly esoteric combination of problems.
The Long Tail of Work Left Until ActivityPub Has E2EE https://lobste.rs/s/0ae9j5 #cryptography #distributed #web
https://soatok.blog/2026/07/15/the-long-tail-of-work-left-until-activitypub-has-e2ee/
soatok.blog
Separate from my proposal for key transparency for the Fediverse (which I’ve certainly blogged about a lot), the W3C has been working on building out end-to-end encryption (E2EE) for Activity…
A modern HTTP request https://lobste.rs/s/q5rxuc #web
https://nelsonslog.wordpress.com/2026/07/14/a-modern-http-request/
nelsonslog.wordpress.com
I got curious about what HTTP headers Chrome is requesting so I stood up a trivial HTTP server and this is what is on the wire. $ while true; do echo -e "HTTP/1.1 200 OK\nContent-Length: 3\n\n…
You should probably check on your smart appliances by @cadey https://lobste.rs/s/slrak5 #web
https://xeiaso.net/notes/2026/check-your-smart-tv/
xeiaso.net
TL;DR: is your refrigerator running malware? If so, you better catch it!
CSS-DOS — A computer made of CSS via @vale https://lobste.rs/s/jvvfbe #css #vibecoding #web
https://css-dos.ahmedamer.co.uk/
css-dos.ahmedamer.co.uk
Just Let Me Write Digits https://lobste.rs/s/yf6vbc #a11y #javascript #web
https://gendignoux.com/blog/2026/07/13/input-digits.html
gendignoux.com
Digital identities and what they mean for the web have become a hot topic of discussion in the last few years.They have also brought many controversies: age verification laws and what they mean for online anonymity, Wikipedia potentially having to verify the identify of its users in the UK, the reliance on official iOS and Android operating systems as mandatory form factors for digital identity wallets, not to mention what these inter-dependencies mean when your US digital accounts are cancel...
Don’t Use aria-label on Static Text Elements (2024) via @ethanhawksley https://lobste.rs/s/2q39ny #a11y #web
https://benmyers.dev/blog/dont-use-aria-label-on-static-text-elements/
benmyers.dev
Don’t use the aria-label or aria-labelledby attributes on divs, spans, or other elements representing static/noninteractive text-level semantics, unless you’re also updating roles.
WebExtension to query any HTML table with PRQL https://lobste.rs/s/goqanz #browsers #databases #web
https://avlasov.cabal.run/notes/001/index.html
avlasov.cabal.run
Memories Can’t Wait—or, How I Learned to Keep Worrying About the Web, by @zeldman:
zeldman.com
The web is still the best hope we have for a durable, shared memory. But it requires us to be gardeners, not merely tenants.
"VIVALDI was a direct response to what Opera had become."
- Jon von Tetzchner -
youtube.com
Opera was once one of the most innovative browser companies in the world. Founded in Norway by Jon von Tetzchner, it helped pioneer features like tabbed brow...
Today I Rescued 7,234 Old GIFs https://lobste.rs/s/pdbktp #retrocomputing #web
https://danq.me/2026/07/10/rescuing-7234-gifs/
danq.me
As Web standards have moved on, a particular 1990s library of GIFs has been hard to effectively archive and was at risk of being lost forever. So I swooped in, wrote some hacky code, and now a few thousand low-res images have been saved for posterity. Hurrah, I guess?
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
Working With AI: A Concrete Example https://lobste.rs/s/my94an #vibecoding #web
https://htmx.org/essays/working-with-ai/
htmx.org
In this essay, Carson Gross walks through a concrete bug fix in hyperscript to show where AI helped, where it fell short, and why keeping a knowledgeable human in the loop is what kept complexity in check.
"VIVALDI was a direct response to what Opera had become."
- Jon von Tetzchner -
youtube.com
Opera was once one of the most innovative browser companies in the world. Founded in Norway by Jon von Tetzchner, it helped pioneer features like tabbed brow...
I converted an Android app to a webpage via @abnv https://lobste.rs/s/vhbvwc #mobile #web
https://danq.me/2026/07/09/your-app-could-have-been-a-webpage/
danq.me
I was asked to install a mobile app to get access to the itinerary of a trip to Disneyland I'm taking with the kids. Fuck that noise: couldn't it have just been a Web page? An hour of reverse-engineering later, it is, and it's superior in virtually every way to the "app" that it replaces.
Two Ways To Design https://lobste.rs/s/ey7far #practices #web
https://wiki.c2.com/?TwoWaysToDesign
🎉 20 ans déjà pour la #Scop grenobloise Mezcalito !
Depuis 2006, elle accompagne des projets #web en réunissant stratégie, #UX, #UI, développement, e-commerce, création et hébergement au sein d’une même équipe #coopérative.
Deux décennies à concevoir des outils numériques solides. Bravo à toute l'équipe !
#numérique, #OpenSource
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
Fucking "app culture" drives me crazy. I got asked to install a mobile app just to look at the itinerary and accommodation information for a trip I'm going on.
Why isn't it just a web page?
So obviously I said "fuck that noise, hold my beer", reverse-engineered the app, and re-implemented it as a web page generator. It does all the same things as the "app" except now there's no tracking, no ads, and you get all the Web's features "for free" (deep links, copy-pasting, search-in-page, printing, works on anything, etc.).
Here's the full story:
🔗 https://danq.me/your-app-could-have-been-a-webpage
#appCulture #app #android #web #webPage #openStandards #reverseEngineering
danq.me
I was asked to install a mobile app to get access to the itinerary of a trip to Disneyland I'm taking with the kids. Fuck that noise: couldn't it have just been a Web page? An hour of reverse-engineering later, it is, and it's superior in virtually every way to the "app" that it replaces.
Page weight matters https://lobste.rs/s/eehcpl #performance #web
https://nh3.dev/blog/05-bloat
nh3.dev
Fucking "app culture" drives me crazy. I got asked to install a mobile app just to look at the itinerary and accommodation information for a trip I'm going on.
Why isn't it just a web page?
So obviously I said "fuck that noise, hold my beer", reverse-engineered the app, and re-implemented it as a web page generator. It does all the same things as the "app" except now there's no tracking, no ads, and you get all the Web's features "for free" (deep links, copy-pasting, search-in-page, printing, works on anything, etc.).
Here's the full story:
🔗 https://danq.me/your-app-could-have-been-a-webpage
#appCulture #app #android #web #webPage #openStandards #reverseEngineering
danq.me
I was asked to install a mobile app to get access to the itinerary of a trip to Disneyland I'm taking with the kids. Fuck that noise: couldn't it have just been a Web page? An hour of reverse-engineering later, it is, and it's superior in virtually every way to the "app" that it replaces.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
Fucking "app culture" drives me crazy. I got asked to install a mobile app just to look at the itinerary and accommodation information for a trip I'm going on.
Why isn't it just a web page?
So obviously I said "fuck that noise, hold my beer", reverse-engineered the app, and re-implemented it as a web page generator. It does all the same things as the "app" except now there's no tracking, no ads, and you get all the Web's features "for free" (deep links, copy-pasting, search-in-page, printing, works on anything, etc.).
Here's the full story:
🔗 https://danq.me/your-app-could-have-been-a-webpage
#appCulture #app #android #web #webPage #openStandards #reverseEngineering
danq.me
I was asked to install a mobile app to get access to the itinerary of a trip to Disneyland I'm taking with the kids. Fuck that noise: couldn't it have just been a Web page? An hour of reverse-engineering later, it is, and it's superior in virtually every way to the "app" that it replaces.
Fucking "app culture" drives me crazy. I got asked to install a mobile app just to look at the itinerary and accommodation information for a trip I'm going on.
Why isn't it just a web page?
So obviously I said "fuck that noise, hold my beer", reverse-engineered the app, and re-implemented it as a web page generator. It does all the same things as the "app" except now there's no tracking, no ads, and you get all the Web's features "for free" (deep links, copy-pasting, search-in-page, printing, works on anything, etc.).
Here's the full story:
🔗 https://danq.me/your-app-could-have-been-a-webpage
#appCulture #app #android #web #webPage #openStandards #reverseEngineering
danq.me
I was asked to install a mobile app to get access to the itinerary of a trip to Disneyland I'm taking with the kids. Fuck that noise: couldn't it have just been a Web page? An hour of reverse-engineering later, it is, and it's superior in virtually every way to the "app" that it replaces.
I was asked to install a mobile app to get access to the itinerary of a trip to Disneyland I'm taking with the kids. Fuck that noise: couldn't it have just been a Web page? An hour of reverse-engineering later, it is, and it's superior in virtually every way to the "app" that it replaces.
Read more: https://danq.me/2026/07/09/your-app-could-have-been-a-webpage/
#article #android #appCulture #hacking #proxy #security #web #webDevelopment
danq.me
I was asked to install a mobile app to get access to the itinerary of a trip to Disneyland I'm taking with the kids. Fuck that noise: couldn't it have just been a Web page? An hour of reverse-engineering later, it is, and it's superior in virtually every way to the "app" that it replaces.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
Fucking "app culture" drives me crazy. I got asked to install a mobile app just to look at the itinerary and accommodation information for a trip I'm going on.
Why isn't it just a web page?
So obviously I said "fuck that noise, hold my beer", reverse-engineered the app, and re-implemented it as a web page generator. It does all the same things as the "app" except now there's no tracking, no ads, and you get all the Web's features "for free" (deep links, copy-pasting, search-in-page, printing, works on anything, etc.).
Here's the full story:
🔗 https://danq.me/your-app-could-have-been-a-webpage
#appCulture #app #android #web #webPage #openStandards #reverseEngineering
danq.me
I was asked to install a mobile app to get access to the itinerary of a trip to Disneyland I'm taking with the kids. Fuck that noise: couldn't it have just been a Web page? An hour of reverse-engineering later, it is, and it's superior in virtually every way to the "app" that it replaces.
I was asked to install a mobile app to get access to the itinerary of a trip to Disneyland I'm taking with the kids. Fuck that noise: couldn't it have just been a Web page? An hour of reverse-engineering later, it is, and it's superior in virtually every way to the "app" that it replaces.
Read more: https://danq.me/2026/07/09/your-app-could-have-been-a-webpage/
#article #android #appCulture #hacking #proxy #security #web #webDevelopment
danq.me
I was asked to install a mobile app to get access to the itinerary of a trip to Disneyland I'm taking with the kids. Fuck that noise: couldn't it have just been a Web page? An hour of reverse-engineering later, it is, and it's superior in virtually every way to the "app" that it replaces.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
Experimenting with random() in CSS via @vale https://lobste.rs/s/sdweip #css #web
https://polypane.app/blog/experimenting-with-random-in-css/
polypane.app
CSS is getting a random() function that lets you set properties with a random value, opening up a lot of interesting creative possibilities. All demos in this…
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.
AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.
I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.
A bug which only affected left-handed users https://lobste.rs/s/oj9lal #web
https://shkspr.mobi/blog/2026/07/a-bug-which-only-affected-left-handed-users/
shkspr.mobi
Verily, some of our brethren (and sistren) be afflicted with a sinister disposition. While the righteous scroll using the thumb of their right hand - as is good and proper - an accurs'd minority swing the other way. Look, you try writing an interesting bug report without sounding like a clanker, OK! I try to optimise my blog as much as possible. It may not look like much, but it has got it…
BotKit: Standalone ActivityPub bots in TypeScript by @hongminhee https://lobste.rs/s/tbs5t3 #javascript #web
https://botkit.fedify.dev/
botkit.fedify.dev
BotKit is a TypeScript framework for building standalone ActivityPub bots for the fediverse: its own server, not a Mastodon or Misskey account. Built by the Fedify team.
BotKit: Standalone ActivityPub bots in TypeScript by @hongminhee https://lobste.rs/s/tbs5t3 #javascript #web
https://botkit.fedify.dev/
botkit.fedify.dev
BotKit is a TypeScript framework for building standalone ActivityPub bots for the fediverse: its own server, not a Mastodon or Misskey account. Built by the Fedify team.
A bug which only affected left-handed users https://lobste.rs/s/oj9lal #web
https://shkspr.mobi/blog/2026/07/a-bug-which-only-affected-left-handed-users/
shkspr.mobi
Verily, some of our brethren (and sistren) be afflicted with a sinister disposition. While the righteous scroll using the thumb of their right hand - as is good and proper - an accurs'd minority swing the other way. Look, you try writing an interesting bug report without sounding like a clanker, OK! I try to optimise my blog as much as possible. It may not look like much, but it has got it…
The Web We Know Is Going to Disappear, by (not on Mastodon or Bluesky):
https://www.minid.net/2026/6/15/the-web-is-going-to-dissapear?ref=frontenddogma.com
minid.net
Every generation of computing believes the interface it loves will last forever. It never does. I saw information move from floppy disks to BBSs, from BBSs to the Web, from the Web to Flash, from Flash back to open standards, from websites to mobile apps, and now from search engines to AI chat interfaces. The Web will not vanish overnight, but the Web as we know it, the open place where people search, click, read, browse, publish, and discover, is already being replaced by something more convenient, more centralized, and much harder to escape.
«SSL-Automation — Drei Risiken der 200-Tage-Regel:
Am 1. Okt. 2026 laufen die ersten SSL-Zertifikate mit der neuen Maximallaufzeit von 200 Tagen aus. Damit endet eine zwanzigjährige Routine, in der ein Zertifikat einmal jährlich erneuert werden musste.
[…] 200 Tage seit März 2026, 100 Tage ab März 2027, 47 Tage ab März 2029. […]»
Mal sehen was da auf uns zu kommt. Ich befürworte es und behaupte, dass dies sich zum größeren Teil automatisieren lässt.
🔐 https://www.it-daily.net/it-sicherheit/cloud-security/ssl-automation
it-daily.net
Am 1. Oktober 2026 laufen die ersten SSL-Zertifikate mit der neuen Maximallaufzeit von 200 Tagen aus.
Wikipedia Is Battling for the Soul of the Internet, by (not on Mastodon or Bluesky):
archive.md
archived 5 Jul 2026 18:51:38 UTC
Time-based background colour transitions with Temporal and CSS color-mix via @darius https://lobste.rs/s/hzurnm #css #javascript #web
https://localghost.dev/blog/time-based-background-colour-transitions-with-temporal-and-css-color-mix/
localghost.dev
A visual refresh with a background that changes colour according to the time of day, using the new Temporal API along with CSS custom properties that blend into each other.
Today, youtuber dzuma made a video about my age verification bypass browser extension.
And since then, I've got a nonstop influx of people downloading the add-on, and it became the mosr starred one on my GitHub in just a matter of hours!
So, thanks a lot!! Glad I'm not the only one who's annoyed by this!
The video :
https://www.youtube.com/watch?v=VBL76_0jD8k
The extension :
https://github.com/helloyanis/age-verification-bypass
github.com
Extension to bypass age verification on some websites - helloyanis/age-verification-bypass
Today, youtuber dzuma made a video about my age verification bypass browser extension.
And since then, I've got a nonstop influx of people downloading the add-on, and it became the mosr starred one on my GitHub in just a matter of hours!
So, thanks a lot!! Glad I'm not the only one who's annoyed by this!
The video :
https://www.youtube.com/watch?v=VBL76_0jD8k
The extension :
https://github.com/helloyanis/age-verification-bypass
github.com
Extension to bypass age verification on some websites - helloyanis/age-verification-bypass
Today, youtuber dzuma made a video about my age verification bypass browser extension.
And since then, I've got a nonstop influx of people downloading the add-on, and it became the mosr starred one on my GitHub in just a matter of hours!
So, thanks a lot!! Glad I'm not the only one who's annoyed by this!
The video :
https://www.youtube.com/watch?v=VBL76_0jD8k
The extension :
https://github.com/helloyanis/age-verification-bypass
github.com
Extension to bypass age verification on some websites - helloyanis/age-verification-bypass
Hi @spielleitung,
"folge uns auf 🦋" (und kein föderiertes #Social #Web sichtbar)
Tab wieder zu.
Today, youtuber dzuma made a video about my age verification bypass browser extension.
And since then, I've got a nonstop influx of people downloading the add-on, and it became the mosr starred one on my GitHub in just a matter of hours!
So, thanks a lot!! Glad I'm not the only one who's annoyed by this!
The video :
https://www.youtube.com/watch?v=VBL76_0jD8k
The extension :
https://github.com/helloyanis/age-verification-bypass
github.com
Extension to bypass age verification on some websites - helloyanis/age-verification-bypass
Lemmy Development Update June 2026 and 1.0.0-beta.1 https://lobste.rs/s/p7z8ip #distributed #release #web
https://lemmy.ml/post/49561214
lemmy.ml
Last month we fixed a lot of the problems that were reported so far during 1.0 Beta Testing [https://join-lemmy.org/news/2026-05-19_-_Open_beta_testing_for_Lemmy_1.0.0]. These fixes are released in a new version 1.0.0-beta.1. Please continue testing on voyager.lemmy.ml [http://voyager.lemmy.ml] and reporting problems. Edit: Note the Lemmy backend version 1.0.0-beta.1 is still building [https://woodpecker.join-lemmy.org/repos/129/pipeline/20977/1], and will take about 12 hours to complete. In the upcoming months, as app devs continue to give feedback on the Lemmy 1.0 API, we’ll be tweaking it as necessary. We’ll also be working on lemmy-ui and jerboa. You can follow our development progress with these milestone links: - https://github.com/LemmyNet/lemmy/milestone/24 [https://github.com/LemmyNet/lemmy/milestone/24] - https://github.com/LemmyNet/lemmy-ui/milestone/5 [https://github.com/LemmyNet/lemmy-ui/milestone/5] - https://github.com/LemmyNet/jerboa/milestone/1 [https://github.com/LemmyNet/jerboa/milestone/1] Here are all the changes from June: ::: spoiler Full list of changes by repo ## lemmy - Handle accept activity with object id (fixes 6595) [https://github.com/LemmyNet/lemmy/pull/6596] by @Nutomic - Adding community moderators to GetPost [https://github.com/LemmyNet/lemmy/pull/6593] by @dessalines - Update activity count of dead communities (fixes #5794) [https://github.com/LemmyNet/lemmy/pull/6589] by @w-k-s - Adds additional attachments to end of post (fixes #6229) [https://github.com/LemmyNet/lemmy/pull/6585] by @w-k-s - Federate warnings (fixes #6326) [https://github.com/LemmyNet/lemmy/pull/6582] by @Nutomic - Fix for private community accept federation (fixes #6576) [https://github.com/LemmyNet/lemmy/pull/6580] by @Nutomic - Remove duplicate schema entry [https://github.com/LemmyNet/lemmy/pull/6579] by @Nutomic - Auto-approve private comm follows for admins/mods [https://github.com/LemmyNet/lemmy/pull/6578] by @Nutomic - Add child_count to modlog, used for bulk_action_parents. [https://github.com/LemmyNet/lemmy/pull/6569] by @dessalines - In nginx config use $remote_addr [https://github.com/LemmyNet/lemmy/pull/6575] by @Nutomic - Include your own private messages when using creator_id filter. [https://github.com/LemmyNet/lemmy/pull/6572] by @dessalines - Feature flag for plugins [https://github.com/LemmyNet/lemmy/pull/6570] by @Nutomic - Splitting out show_media and hide_posts_with_media user settings. [https://github.com/LemmyNet/lemmy/pull/6566] by @dessalines - Use correct Activitypub id for private community follow Accept/Reject (fixes #6561) [https://github.com/LemmyNet/lemmy/pull/6562] by @Nutomic - Adding post filtering by tag. [https://github.com/LemmyNet/lemmy/pull/6567] by @dessalines - Add missing permission checks for private community (fixes #6529) [https://github.com/LemmyNet/lemmy/pull/6559] by @Nutomic - Federate private message reports (fixes #4436) [https://github.com/LemmyNet/lemmy/pull/6557] by @Nutomic - Remove wrong community title check [https://github.com/LemmyNet/lemmy/pull/6558] by @Nutomic - Adding a few lemmy_api_common exports needed for lemmy-rs-client. [https://github.com/LemmyNet/lemmy/pull/6551] by @dessalines - Prevent user enumeration via login endpoint [https://github.com/LemmyNet/lemmy/pull/6531] by @Nutomic - Dont show community mods in pending follows list (fixes #6549) [https://github.com/LemmyNet/lemmy/pull/6556] by @Nutomic - Truncate federation displayname if too long [https://github.com/LemmyNet/lemmy/pull/6544] by @Nutomic - Reduce actor name min length to 2, make community.title optional (fixes #6509) [https://github.com/LemmyNet/lemmy/pull/6548] by @Nutomic ## lemmy-ui - Revert “Update babel monorepo to v8” [https://github.com/LemmyNet/lemmy-ui/pull/4267] by @dessalines - Showing community moderators on post page. [https://github.com/LemmyNet/lemmy-ui/pull/4253] by @dessalines - Adding stacked mobile tables [https://github.com/LemmyNet/lemmy-ui/pull/4228] by @dessalines - Fix mod / admin being able to comment on locked comment. [https://github.com/LemmyNet/lemmy-ui/pull/4243] by @dessalines - Fix private community visibility check [https://github.com/LemmyNet/lemmy-ui/pull/4227] by @Nutomic - Reduce actor name min length to 2, make community title optional [https://github.com/LemmyNet/lemmy-ui/pull/4192] by @Nutomic - Adding ability to filter community page by tag dropdown filter. [https://github.com/LemmyNet/lemmy-ui/pull/4217] by @dessalines - Adding hide memes filter to home and community pages. [https://github.com/LemmyNet/lemmy-ui/pull/4215] by @dessalines - Hide notification icons without unread items on desktop (fixes #4205) [https://github.com/LemmyNet/lemmy-ui/pull/4207] by @Nutomic - Add community context to pending follows list. [https://github.com/LemmyNet/lemmy-ui/pull/4218] by @dessalines - Fix clipping in iOS Safari [https://github.com/LemmyNet/lemmy-ui/pull/4221] by @Trying2KnowMyself - Add OAuth preset for Reddit (fixes #4124) [https://github.com/LemmyNet/lemmy-ui/pull/4134] by @Nutomic - Show children for modlog items (fixes #4103) [https://github.com/LemmyNet/lemmy-ui/pull/4209] by @Nutomic - Stricter CSP without style-src unsafe-inline [https://github.com/LemmyNet/lemmy-ui/pull/4214] by @Nutomic - Make community title optional, reduce min actor name length [https://github.com/LemmyNet/lemmy-ui/pull/4206] by @Nutomic - Fixing filter chip wrong background. [https://github.com/LemmyNet/lemmy-ui/pull/4212] by @dessalines - Post / Comment listing fixes [https://github.com/LemmyNet/lemmy-ui/pull/4181] by @dessalines - Change large card view to use full width [https://github.com/LemmyNet/lemmy-ui/pull/4110] by @Nutomic - Swap library for markdown media embeds [https://github.com/LemmyNet/lemmy-ui/pull/4210] by @Nutomic - Fixing a few typos [https://github.com/LemmyNet/lemmy-ui/pull/4208] by @dessalines - Community tag colors [https://github.com/LemmyNet/lemmy-ui/pull/4173] by @dessalines - Fixing empty body by not ignoring initialContent. [https://github.com/LemmyNet/lemmy-ui/pull/4193] by @dessalines - Allow approve (after an accidental deny) to a private community. [https://github.com/LemmyNet/lemmy-ui/pull/4194] by @dessalines - Notification display fixes [https://github.com/LemmyNet/lemmy-ui/pull/4179] by @dessalines ## joinlemmy-site - apps: default desktop visitors to web clients [https://github.com/LemmyNet/joinlemmy-site/pull/623] by @aeharding - Add 0.19.19 release notes [https://github.com/LemmyNet/joinlemmy-site/pull/621] by @dessalines - Adding codeowners [https://github.com/LemmyNet/joinlemmy-site/pull/622] by @dessalines ## lemmy-js-client - Modlist with get post [https://github.com/LemmyNet/lemmy-js-client/pull/999] by @dessalines - Fixing tsoa build [https://github.com/LemmyNet/lemmy-js-client/pull/986] by @dessalines - Add tag_id to GetPosts [https://github.com/LemmyNet/lemmy-js-client/pull/981] by @dessalines - Split show media settings. [https://github.com/LemmyNet/lemmy-js-client/pull/978] by @dessalines - Add child_count to modlog, used for bulk_action_parents [https://github.com/LemmyNet/lemmy-js-client/pull/980] by @Nutomic - Fix request state [https://github.com/LemmyNet/lemmy-js-client/pull/979] by @dessalines - API docs without RequestState [https://github.com/LemmyNet/lemmy-js-client/pull/977] by @Nutomic - Make community.title optional [https://github.com/LemmyNet/lemmy-js-client/pull/976] by @Nutomic ## lemmy-client-rs - Adding release script [https://github.com/LemmyNet/lemmy-client-rs/pull/78] by @dessalines - Use a versioned lemmy_api_common [https://github.com/LemmyNet/lemmy-client-rs/pull/77] by @dessalines - Swap out cargo machete in favor of cargo shear [https://github.com/LemmyNet/lemmy-client-rs/pull/76] by @dessalines ::: Or see the full list of changes at the links below: - Backend [https://github.com/LemmyNet/lemmy/pulls?q=merged%3A2026-06-01..2026-06-30+sort%3Acomments-desc] - Frontend [https://github.com/LemmyNet/lemmy-ui/pulls?q=merged%3A2026-06-01..2026-06-30+-author%3Aapp%2Frenovate+sort%3Acomments-desc] - join-lemmy.org [https://github.com/LemmyNet/joinlemmy-site/pulls?q=merged%3A2026-06-01..2026-06-30+-author%3Aapp%2Frenovate+sort%3Acomments-desc] - Jerboa [https://github.com/LemmyNet/jerboa/pulls?q=merged%3A2026-06-01..2026-06-30+-author%3Aapp%2Frenovate+sort%3Acomments-desc] — An open source project the size of Lemmy needs constant work to manage the project, implement new features and fix bugs. Dessalines and Nutomic work full-time on these tasks and more. As there is no advertising or tracking, all of our work is funded through donations. Even so there is barely enough time in the day, and no time for a second job. The only available option are user donations. To keep it viable donations need to reach a minimum of 5000€ per month, resulting in a modest salary of 2500€ per developer. If that goal is reached we can stop worrying about money, and fully focus on improving the software for the benefit of all users and instances. We especially rely on recurring donations to secure the long-term development and make Lemmy the best it can be. Donate [https://join-lemmy.org/donate]
Self-Hosted AI news aggregator using Cloudflare Workers, Vectorize, and Nostr https://lobste.rs/s/u7ls6b #show #ai #api #privacy #web
https://github.com/delirehberi/news
github.com
Contribute to delirehberi/news development by creating an account on GitHub.
Hi @jwildeboer
the #social #web lacks a low-barrier #micropayment option like coins IRL.
@Taler maybe could do that, but lacks adoption so far - I think I can't use it as of today to drop e.g. you a Euro. #Taler @glsbank @Taler
I want to see this changed.
proposal-async-context: Async Context for JavaScript via @hibachrach https://lobste.rs/s/65hqvm #javascript #web
https://github.com/tc39/proposal-async-context
github.com
Async Context for JavaScript. Contribute to tc39/proposal-async-context development by creating an account on GitHub.
Today, youtuber dzuma made a video about my age verification bypass browser extension.
And since then, I've got a nonstop influx of people downloading the add-on, and it became the mosr starred one on my GitHub in just a matter of hours!
So, thanks a lot!! Glad I'm not the only one who's annoyed by this!
The video :
https://www.youtube.com/watch?v=VBL76_0jD8k
The extension :
https://github.com/helloyanis/age-verification-bypass
github.com
Extension to bypass age verification on some websites - helloyanis/age-verification-bypass
Hi @sabrinkmann
hör' ich Termine im #Social #Web, denk ich @linos. Viele Grüße nach #Graz!
😲 My website was featured in the @astro newsletter 😊 https://gregwolanski.com #astro #newsletter #indieweb #weird #weirdwideweb #www #web #typewriter
The Physics of Memory (aka can Javascript ECS?) https://lobste.rs/s/q8vdre #show #compsci #games #javascript #wasm #web
https://www.dmurph.com/posts/2026/06/ecs_vs_oop_benchmark/ecs_vs_oop_benchmark.html
dmurph.com
A real-time comparison of Entity Component System (ECS) and Object-Oriented Programming (OOP) paradigms using AssemblyScript WASM and native JavaScript.
The Internet I Grew Up With Doesn’t Exist Anymore https://lobste.rs/s/pth2bm #historical #web
https://cleberg.net/blog/internet.html
cleberg.net
A thorough retrospective of my time on the internet.
😲 My website was featured in the @astro newsletter 😊 https://gregwolanski.com #astro #newsletter #indieweb #weird #weirdwideweb #www #web #typewriter
pomerium: Pomerium is an identity and context-aware access proxy https://lobste.rs/s/9mtucy #networking #security #web
https://github.com/pomerium/pomerium
github.com
Pomerium is an identity and context-aware access proxy. - pomerium/pomerium
Longinus: 2 Boundaries in One Bug, Piercing Chrome’s Renderer and V8 Sandbox with a Single Vulnerability, CVE-2026-6307 https://lobste.rs/s/uaoe9y #security #web
https://nebusec.ai/research/v8-cve-2026-6307-writeup/
nebusec.ai
Chrome V8 JavaScript engine features a heap sandbox to prevent an attacker from writing outside of the sandbox region with only a vulnerability in their JavaScript engine. However, VEGA discovered a special bug in the JIT compiler that allows an attacker to gain arbitrary read/write primitives in sandbox and even escape the sandbox to write outside of it solely on its own. This writeup will cover the technical details of the vulnerability.
The curse of AI bots.
I’m coming across way too many broken Cloudflare turnstile and Anubis installations.
If you want to block bots make sure you don’t block humans as well. The bots won’t, but the humans will go somewhere else.

A cartoon character with brown hair and a nurse's cap holds a stop sign and looks concerned. The text above her says "Oh noes!" and below, it says “Internal Server Error: administrator has misconfigured Anubis. Please contact the administrator and ask them to look for the logs around: fast.”
The curse of AI bots.
I’m coming across way too many broken Cloudflare turnstile and Anubis installations.
If you want to block bots make sure you don’t block humans as well. The bots won’t, but the humans will go somewhere else.

A cartoon character with brown hair and a nurse's cap holds a stop sign and looks concerned. The text above her says "Oh noes!" and below, it says “Internal Server Error: administrator has misconfigured Anubis. Please contact the administrator and ask them to look for the logs around: fast.”
The HTTP QUERY Method https://lobste.rs/s/3orizi #web
https://httpwg.org/http-extensions/draft-ietf-httpbis-safe-method-w-body.html#section-1-5.2
httpwg.org
This specification defines the QUERY method for HTTP. A QUERY requests that the request target process the enclosed content in a safe and idempotent manner and then respond with the result of that processing. This is similar to POST requests but can be automatically repeated or restarted without concern for partial state changes.
Sacr3d: A rendering engine toolbox to do 3D graphics in Scheme https://lobste.rs/s/gkqien #graphics #lisp #web
https://teddd.srht.site/sacr3d/
teddd.srht.site
window.showDirectoryPicker opens up a whole new world https://lobste.rs/s/bowuo3 #browsers #javascript #vibecoding #web
https://steveharrison.dev/showdirectorypicker-opens-up-a-whole-new-world/
steveharrison.dev
Chrome introduced a new API, window.showDirectoryPicker() that allows the user to grant access to a directory on their computer and allow a website to read/write everything inside.
Introducing the MDN MCP server https://lobste.rs/s/ttuhgn #javascript #vibecoding #web
https://developer.mozilla.org/en-US/blog/introducing-mdn-mcp-server/
developer.mozilla.org
MDN's MCP server brings MDN's documentation and browser compatibility data directly into your editor or IDE, giving your LLM or coding agent access to accurate, up-to-date web platform information.
Cloudflare Collaborates With Leading Browsers to Develop a Privacy-First Protocol For the Global Internet https://lobste.rs/s/fdwnzt #privacy #web
https://cloudflare.net/news/news-details/2026/Cloudflare-Collaborates-With-Leading-Browsers-to-Develop-a-Privacy-First-Protocol-For-the-Global-Internet/default.aspx
Keeping the Web Open and Private in the Bot Era https://lobste.rs/s/sdqqbb #browsers #cryptography #web
https://blog.mozilla.org/en/privacy-security/keeping-the-web-open-and-private-in-the-bot-era/
blog.mozilla.org
If you’ve been running into endless CAPTCHAS or website login requests lately, you’re not imagining things. Websites, facing a rising tide of abu
metasearch: a self hosted metasearch engine https://lobste.rs/s/1vj7cj #privacy #web
https://github.com/tiagozip/metasearch
github.com
search the web without slop. pretty, fast, privacy-friendly metasearch engine. - tiagozip/metasearch
Matt’s Script Archive: The Scripts That Reshaped The Web https://lobste.rs/s/mvjcxs #historical #perl #web
https://tedium.co/2026/06/22/matts-script-archive-retrospective/
tedium.co
The high schooler who developed everyone’s forums and guestbooks in 1996 didn’t really think about security. But Matt’s Script Archive was more than exploits.
Look at this super short post by @matuzo
https://www.matuzo.at/blog/2026/select-fieldsize
Literally 23 seconds read and you can learn a thing. I love this kind of web! Give me more useful web tips like this.
Kinda related as it highlights the kind of web I don't want to see:https://noslopgrenade.com
noslopgrenade.com
Stop throwing AI-generated walls of text into conversations. If they wanted an AI essay, they would have asked ChatGPT themselves.
The curious history the invention of the CMD+K quick switcher https://lobste.rs/s/zszeab #historical #web
https://ux.stackexchange.com/questions/153299/how-did-cmd-k-come-to-be-the-standard-shortcut-for-both-adding-a-hyperlink-and-o
ux.stackexchange.com
⌘+K (or CTRL+K on Windows) is the standard keyboard shortcut for two extremely different actions, even in tools that necessitate both actions. Adding a hyperlink Highlighting text and then hitting ...
Hyperblam: a declarative implementation of the Web Audio API via @matheusrich https://lobste.rs/s/nv90oc #art #web
https://hyperblam.how/
hyperblam.how
Documentation for HyperBlam. Make HTML make music.
p99 0ms* autocomplete for 240 million domain names via @nemin https://lobste.rs/s/xhpauz #javascript #web
https://ruurtjan.com/articles/p99-0ms-autocomplete-for-240-million-domain-names
ruurtjan.com
How Wirewiki's domain-name autocomplete renders suggestions next frame for 99% of keystrokes.
Mark-of-the-web and pinning installers to sites https://lobste.rs/s/z4vrld #security #web
https://blog.randomoracle.io/2026/06/20/mark-of-the-web-and-pinning-installers-to-sites/
blog.randomoracle.io
Is it possible to create an application that behaves differently based on which website it is downloaded from? At first glance, this seems impossible if the problem is interpreted strictly: the dow…
Lighthouse agentic browsing scoring via @ethanhawksley https://lobste.rs/s/rdrtip #ai #browsers #web
https://developer.chrome.com/docs/lighthouse/agentic-browsing/scoring
developer.chrome.com
Learn how the Agentic Browsing category is scored and how audits are determined.
Town Square, the community deserves connection https://lobste.rs/s/gdwaqt #web
https://cauenapier.com/blog/town-square-the-community-deserves-connection/
cauenapier.com
A short update on Town Square after launch: the map is live, new features keep emerging from people enjoying it, and the best part has been seeing how much...
RFC 10008: The HTTP QUERY Method via @aks https://lobste.rs/s/y9zfbv #web
https://blainsmith.com/articles/rfc-10008-http-query-method/
blainsmith.com
https://flow.org/ is back, yeah ... and it has and always had exhaustive checks built in.
Glad to have you back #flow
flow.org
Flow is a typed dialect of JavaScript — a static type system plus first-class language constructs, built for safety and scale.
This week's #WebOrigami comic: Making your complete site content public
More about JSON Keys protocol: https://weborigami.org/async-tree/jsonKeys.html
HTML comic: https://weborigami.org/comics/making-your-complete-site-content-public.html
The protocol is simple and independent of the Web Origami project.
Everyone benefits from an open web!

The web's View Source command taught HTML to a generation! But it only lets you see one page.

The simple JSON Keys protocol lets you tell the world what's on your site in a way that's easy to view.

For any given route, type or generate a .keys.json file as an array of the names that extend that route.

This lets people see part or all of your site, including downloading it!
savearoundtrip: publish an HTTPS DNS record, skip a round trip https://lobste.rs/s/wlm6dv #networking #web
https://savearoundtrip.com/
savearoundtrip.com
Publish an HTTPS DNS record. Let browsers reach HTTP/3 on the first connection instead of wasting a round trip.
This week's #WebOrigami comic: Making your complete site content public
More about JSON Keys protocol: https://weborigami.org/async-tree/jsonKeys.html
HTML comic: https://weborigami.org/comics/making-your-complete-site-content-public.html
The protocol is simple and independent of the Web Origami project.
Everyone benefits from an open web!

The web's View Source command taught HTML to a generation! But it only lets you see one page.

The simple JSON Keys protocol lets you tell the world what's on your site in a way that's easy to view.

For any given route, type or generate a .keys.json file as an array of the names that extend that route.

This lets people see part or all of your site, including downloading it!
Speed Matters for Google Web Search [2009] https://lobste.rs/s/dju5t9 #pdf #web
https://services.google.com/fh/files/blogs/google_delayexp.pdf
Turn your site into a place people can bump into each other https://lobste.rs/s/bsavh7 #web
https://cauenapier.com/blog/townsquare_release/
cauenapier.com
Releasing Town Square. Bring back the feeling that real people are browsing your site with you.
The Road to Component Model 1.0 https://lobste.rs/s/radh1n #wasm #web
https://bytecodealliance.org/articles/the-road-to-component-model-1-0
bytecodealliance.org
WASI P3 is almost here, bringing native async support to the WebAssembly System Interface (WASI) and Component Model. In this post, we’re looking to the next big milestone: a stable, formally specified Component Model 1.0.At February’s B...
#tech #technology #BigTech #data #security #privacy #safety #InfoSec #IT #surveillance #computing #digital #online #internet #web #cloud #meme

Meme, showing a continuous circle of data breach messages from corporations… Ahaha you're not gonna believe this but we had a bit of a data breach. Your data is probably for sale online now. That means someone could easily impersonate you. Going forward we're gonna need more of your data to make sure its you.
#tech #technology #BigTech #data #security #privacy #safety #InfoSec #IT #surveillance #computing #digital #online #internet #web #cloud #meme

Meme, showing a continuous circle of data breach messages from corporations… Ahaha you're not gonna believe this but we had a bit of a data breach. Your data is probably for sale online now. That means someone could easily impersonate you. Going forward we're gonna need more of your data to make sure its you.
#tech #technology #BigTech #data #security #privacy #safety #InfoSec #IT #surveillance #computing #digital #online #internet #web #cloud #meme

Meme, showing a continuous circle of data breach messages from corporations… Ahaha you're not gonna believe this but we had a bit of a data breach. Your data is probably for sale online now. That means someone could easily impersonate you. Going forward we're gonna need more of your data to make sure its you.
Building a multiplayer podcast editor with Automerge https://lobste.rs/s/uoisno #distributed #web
https://www.adamsolove.com/ui/ducking/2026/06/10/podcast-multiplayer.html
adamsolove.com
Experience report of building a complex collaborative UI on top of a sync and versioning engine
I've told this story at conferences - but due to the general situation I thought I'd retell it here.
A few years ago I was doing policy research in a housing benefits office in London. They are singularly unlovely places. The walls are brightened up with posters offering helpful services for people fleeing domestic violence. The security guards on the door are cautiously indifferent to anyone walking in. The air is filled with tense conversations between partners - drowned out by the noise of screaming kids.
In the middle, a young woman sits on a hard plastic chair. She is surrounded by canvas-bags containing her worldly possessions. She doesn't look like she is in a great emotional place right now. Clutched in her hands is a games console - a PlayStation Portable. She stares at it intensely; blocking out the world with Candy Crush.
Or, at least, that's what I thought.
Walking behind her, I glance at her console and recognise the screen she's on. She's connected to the complementary WiFi and is browsing the GOV.UK pages on Housing Benefit. She's not slicing fruit; she's arming herself with knowledge.
The PSP's web browser is - charitably - pathetic. It is slow, frequently runs out of memory, and can only open 3 tabs at a time.
But the GOV.UK pages are written in simple HTML. They are designed to be lightweight and will work even on rubbish browsers. They have to. This is for everyone.
Not everyone has a big monitor, or a multi-core CPU burning through the teraflops, or a broadband connection.
The photographer Chase Jarvis coined the phrase "the best camera is the one that’s with you". He meant that having a crappy instamatic with you at an important moment is better than having the best camera in the world locked up in your car.
The same is true of web browsers. If you have a smart TV, it probably has a crappy browser.

My old car had a built-in crappy web browser.

Both are painful to use - but they work!
If your laptop and phone both got stolen - how easily could you conduct online life through the worst browser you have? If you have to file an insurance claim online - will you get sent a simple HTML form to fill in, or a DOCX which won't render?
What vital information or services are forbidden to you due to being trapped in PDFs or horrendously complicated web sites?
Are you developing public services? Or a system that people might access when they're in desperate need of help? Plain HTML works. A small bit of simple CSS will make look decent. JavaScript is probably unnecessary - but can be used to progressively enhance stuff. Add alt text to images so people paying per MB can understand what the images are for (and, you know, accessibility).
Go sit in an uncomfortable chair, in an uncomfortable location, and stare at an uncomfortably small screen with an uncomfortably outdated web browser. How easy is it to use the websites you've created?
I chatted briefly to the young woman afterwards. She'd been kicked out by her parents and her friends had given her the bus fare to the housing benefits office. She had nothing but praise for how helpful the staff had been. I asked about the PSP - a hand-me-down from an older brother - and the web browser. Her reply was "It's shit. But it worked."
I think that's all we can strive for.
Here are some stats on games consoles visiting GOV.UK
#HTML5 #web #WeekNotes #workMatt Hobbs (@TheRealNooshu@hachyderm.io)
@TheRealNooshuReplying to @TheRealNooshuInterestingly we have 3,574 users visiting GOV.UK on games consoles:
• Xbox - 2,062
• Playstation 4 - 1,457
• Playstation Vita - 25
• Nintendo WiiU - 14
• Nintendo 3DS - 16
20/22
x.com
Interestingly we have 3,574 users visiting https://t.co/CcU3PLPTpj on games consoles: • Xbox - 2,062 • Playstation 4 - 1,457 • Playstation Vita - 25 • Nintendo WiiU - 14 • Nintendo 3DS - 16 20/22
Such an honour to finally meet @sarajw in person at #TheWebYouWant!
It was whimsica11
How building an HTML-first site doubled our users overnight https://lobste.rs/s/esvncd #web
https://mohkohn.co.uk/writing/html-first/
mohkohn.co.uk
My client was a utility company, and they had a big problem...
For the record, here are the other impulsive, spontaneous, unhinged research questions I came up with in 10 minutes of rapid brainstorming, last Wednesday.
#researchQuestion #XPUB #XPUBthesis #thesis #socialCapital #networking #netwerking #Web #surfing #Internet #p2p
I am far from actually beginning my research for the thesis I will be writing at @xpub next year. Still, together with my class we are already exploring interests, ideas, and PMOMMs. A pattern should be emerging out of them, outlining our research focus.
Yesterday, as I was chatting with @barbs, I somehow came up with a research question that feels particularly close to me. I am publishing it here for posterity, because I am super curious about how this will evolve over time.
What is the relationship between in-person networking and Web surfing in accruing social capital?
I want to investigate how life crossovers relate with clicking links and surfing the Web. Then, how do the two contribute to growing a person’s (or a community’s) social capital, in the interpretation of the word specific to Bourdieu’s philosophy?
#researchQuestion #XPUB #XPUBthesis #thesis #socialCapital #networking #netwerking #Web #surfing #Internet
en.wikipedia.org
For the record, here are the other impulsive, spontaneous, unhinged research questions I came up with in 10 minutes of rapid brainstorming, last Wednesday.
#researchQuestion #XPUB #XPUBthesis #thesis #socialCapital #networking #netwerking #Web #surfing #Internet #p2p
I am far from actually beginning my research for the thesis I will be writing at @xpub next year. Still, together with my class we are already exploring interests, ideas, and PMOMMs. A pattern should be emerging out of them, outlining our research focus.
Yesterday, as I was chatting with @barbs, I somehow came up with a research question that feels particularly close to me. I am publishing it here for posterity, because I am super curious about how this will evolve over time.
What is the relationship between in-person networking and Web surfing in accruing social capital?
I want to investigate how life crossovers relate with clicking links and surfing the Web. Then, how do the two contribute to growing a person’s (or a community’s) social capital, in the interpretation of the word specific to Bourdieu’s philosophy?
#researchQuestion #XPUB #XPUBthesis #thesis #socialCapital #networking #netwerking #Web #surfing #Internet
en.wikipedia.org
CSS: Unavoidable Bad Parts via @lesley https://lobste.rs/s/pwmlvz #css #web
https://matklad.github.io/2026/06/04/css-unavoidable-bad-parts.html
matklad.github.io
An ersatz CSS tutorial for people who need to style a web page, but aren't web developers. I am a wrong person to write this kind of thing, as I have neither the time, nor experience. I'd much rather read a book about this. Alas, I had to learn all this stuff from trawling MDN, so perhaps it is valuable to document what I have so far.
📅 Next Web Talks at Mozilla Berlin Meetup is happening Thu, June 11, 18:00 🦊
Two talks:
• Sunil Mayya on "Keep Off My LAN": Firefox's implementation of Local Network Access
• @freddy on "The Devil is in the Defaults": defending against XSS with Trusted Types and the Sanitizer API
https://www.meetup.com/de-DE/berlin-mozilla-meetup/events/314623241/
meetup.com
Save the date! The Mozilla Meetup series continues with talks focused on modern web technologies. To account for typical **no-show rates**, we’ve opened more RSVP spots th
Using the Screen Capture API to record a browser window https://lobste.rs/s/tvr60w #javascript #web
https://alexwlchan.net/2026/record-browser-video/
alexwlchan.net
When I saw a cool animation, I used the browser's native screen capture API to get a high-quality screen recording, audio included.
Forgejo monthly report - May 2026 https://lobste.rs/s/ewaxh7 #vcs #web
https://forgejo.org/2026-05-monthly-report/
forgejo.org
🆕 blog! “How many consecutive hyphens can you have in a domain name?”
A seemingly simple question which sent me down into the murky depths of standards. How many consecutive hyphens can you have in a domain name? It probably isn't sensible to name your online presence a----------hyphen.com - but is there anything technically…
👀 Read more: https://shkspr.mobi/blog/2026/06/how-many-consecutive-hyphens-can-you-have-in-a-domain-name/
⸻
#dns #ICANN #IETF #internet #standards #web
shkspr.mobi
A seemingly simple question which sent me down into the murky depths of standards. How many consecutive hyphens can you have in a domain name? It probably isn't sensible to name your online presence a----------hyphen.com - but is there anything technically stopping you? Table of ContentsHistoryTLD RestrictionsAnomaliesSo What? History Let's do some history! This is 1978's "HOST NAMES…
I just wanted to say thank you.
https://pawelgrzybek.com/fuck-thank-you/
Thank you for the inspiration @kevinpowell
pawelgrzybek.com
Some of the tech giants for the past few years have tried hard to kill the most important tool of the web, links. The web is changing and folks are losing hope. I just wanted to thank those who made the internet interesting for me.
🆕 blog! “How many consecutive hyphens can you have in a domain name?”
A seemingly simple question which sent me down into the murky depths of standards. How many consecutive hyphens can you have in a domain name? It probably isn't sensible to name your online presence a----------hyphen.com - but is there anything technically…
👀 Read more: https://shkspr.mobi/blog/2026/06/how-many-consecutive-hyphens-can-you-have-in-a-domain-name/
⸻
#dns #ICANN #IETF #internet #standards #web
shkspr.mobi
A seemingly simple question which sent me down into the murky depths of standards. How many consecutive hyphens can you have in a domain name? It probably isn't sensible to name your online presence a----------hyphen.com - but is there anything technically stopping you? Table of ContentsHistoryTLD RestrictionsAnomaliesSo What? History Let's do some history! This is 1978's "HOST NAMES…
A seemingly simple question which sent me down into the murky depths of standards. How many consecutive hyphens can you have in a domain name? It probably isn't sensible to name your online presence a----------hyphen.com - but is there anything technically stopping you?
Let's do some history!
This is 1978's "HOST NAMES ON-LINE". Early Internet standards described the - character as "minus" rather than hyphen.
up to 48 characters drawn from the alphabet (A-Z),
digits (0-9), and the minus sign (-) ... specifically, no blank or space characters allowed;
no distinction between upper and lower case letters;
the first character is a letter;
the last character is NOT a minus sign;
no other restrictions on content or syntax.
So, originally, you could have as many hyphens as you wanted after the first symbol - which had to be a letter. The last symbol had to be a letter or number0.
That was later formalised in 1981's "DoD INTERNET HOST TABLE SPECIFICATION"
RFC 810 GRAMMATICAL HOST TABLE SPECIFICATION
<name> ::= <let>[*[<let-or-digit-or-hyphen>]<let-or-digit>]
That's carried in the the slightly more modern RFC 952.
By the time we hit 1987, the word "minus" has gone. Note, there are no restrictions on the number of hyphens - just as long as your domain name doesn't start or end with one1.
RFC 1035 2.3.1. Preferred name syntax
The labels must follow the rules for ARPANET host names. They must start with a letter, end with a letter or digit, and have as interior characters only letters, digits, and hyphen.
By 1989, the "DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION" was tweaked again:
RFC 1123 2. GENERAL ISSUES
The syntax of a legal Internet host name was specified in RFC-952. One aspect of host name syntax is hereby changed: the restriction on the first character is relaxed to allow either a letter or a digit. Host software MUST support this more liberal syntax.
And, from then on, things stayed pretty stable until the futuristic year 2010. That was when Internationalised Domain Names (IDN) became available. They use the xn-- string at the start of the name so, the spec now says:
RFC 5891 4.2.3.1. Hyphen Restrictions
The Unicode string MUST NOT contain "--" (two consecutive hyphens) in the third and fourth character positions and MUST NOT start or end with a "-" (hyphen).
What they really mean is that "--" is banned in position 3 & 4 unless the first two characters are "xn"2.
So, in theory, you can have up to 59 consecutive hyphens by ensuring that they start in position 4 and end at position 62.
Something like abc---[…]---z.com should be fine.
OR IS IT?!?!?
There's what the RFC's say, and what a Top Level Domain (TLD) will allow. The Registry (the organisation which administers the TLD) may set their own, more restrictive, policies. Some will ban naughty words, or refuse IDN registrations, or prevent impersonation of Public Suffix domain, etc.
For example, South Sudan's .ss policies refuse to allow any hyphens.
Nominet, who run the .uk Registry, don't have any restrictions on the use of hyphens other than refusing to register xn-- domains.
But, in general, you can register multi-hyphened domain names with most Registries.

Of course, the mighty Internet mostly runs on spit and hope3. Naturally there are going to be mistakes, glitches, exceptions, and anomalies.
My delightful friend Q Misell had a rummage through her archives and helped track down some of the domain names which violate the modern rules. It's somewhat difficult to query every domain name, nevertheless, there are hundreds of multi-hyphened domains lurking within DNS.
Some, like ok--computer.com are long dead, but some are still active4!
Possibly the most consecutive hyphens belongs to http://a-------------------------------------------------------------a.com/
Sixty-one hyphens! The maximum possible, and it still works! The website looks like it hasn't been updated since it was first registered in 2000.
But what about more modern domains? The spookily named http://zz--icann-monitoring.uk/ was registered in 2024 - long after the rules were updated. But as Nominet doesn't allow xn-- domains, I guess it is fine?
There are some domains like bq--3bhauz7frjrgbka.com which look like they were pseudo-randomly generated. Perhaps as command-and-control servers?
Here's a quick table showing some of the ones Q found:
| Domain | Creation Date | Status |
|---|---|---|
0-------------------------------------------------------------0.com |
1999 | Down |
0-------------------------------------------------------------5.com |
2001 | Live |
0---------------------0.com |
2000 | Live |
0----------------0.com |
2000 | Live |
0---------0.com |
2000 | Live |
pr--newswire.org.uk |
2005 | Down |
0o--o0.com |
2000 | Down |
a-----a.net |
2000 | Down |
pr--newswire.uk |
2019 | Down |
uk--domain--names.uk |
2019 | Live |
zz--icann-monitoring.uk |
2024 | Live |
cd--storage-shelves.co.uk |
2012 | Live |
mb--uk.co.uk |
2015 | Live |
o---t.co.uk |
2016 | Live |
om--tat-sat.co.uk |
1999 | Live |
pr--newswire.co.uk |
2005 | Down |
uk--domain--names.co.uk |
2000 | Down |
we--buy--any--car.co.uk |
2009 | Down |
i---i.net |
2001 | Down |
a-------------------------------------------------------------a.com |
2000 | Live |
a---b.com |
2000 | Down |
v---v.net |
2000 | Down |
we--care.net |
1999 | Down |
b---h.com |
2001 | Down |
bq--3bhauz7frjrgbka.com |
2000 | Down |
bq--3bhauz7frjrgbkdcia.com |
2000 | Down |
bq--3cbpcty2rjyq.com |
2000 | Down |
bq--744a.com |
2000 | Down |
bq--abs7czi.com |
2000 | Down |
bq--abxgt4lb.com |
2000 | Down |
bq--azbukkckjavdc.com |
2000 | Down |
bq--azdecny.com |
2000 | Live |
bq--eh7xj73b75xp62x7mh7xgah7ad7xj73b75xa.com |
2000 | Down |
bq--gbbpy2enmnhq.com |
2000 | Down |
bq--gbtfs2a.com |
2000 | Down |
bq--s7z76.com |
2000 | Down |
bq--zzzz.com |
2000 | Down |
c-------7.com |
2001 | Live |
f---you.com |
1998 | Down |
id--design.com |
1999 | Down |
ok--computer.com |
2001 | Down |
t---28.com |
2000 | Live |
t---taz---t.com |
2001 | Down |
Note, "Live" just means an HTTP request returned something. There may, of course, be other services running on that domain, or on subdomains.
Without a full list of every domain name, it's rather hard to draw firm conclusions. But, in the absence of anything better to do, here are some thoughts.
If you know of any weird multi-hyphenated domains, please stick a comment in the box 😊
Way back in the year 1999, several domains were registered with trailing hyphens. This was swiftly corrected and the domains deleted. ↩︎
Note, I think this is when domain names expanded from 48 characters to 63. But that's a different Yak to Shave. ↩︎
I wonder why this isn't zero-based like so many other computery things. But that's a different rabbit hole. ↩︎
And, so I'm told, a cabal of vicious Furries waiting to pounce. ↩︎
There are also quite a few for sale. ↩︎
tinysub: full-featured web player for Open Subsonic compatible music servers https://lobste.rs/s/pfrdqs #show #web
https://tangled.org/devins.page/tinysub
tangled.org
a simple but full-featured web player for Open Subsonic compatible music servers (Navidrome, Gonic, etc)
In Defense of YAML https://lobste.rs/s/metnis #web
https://opensource.posit.co/blog/2026-05-21_in-defense-of-yaml/
opensource.posit.co
A common refrain among developers: YAML is bad and TOML is good. This post argues otherwise, tracing the history of configuration formats, examining what YAML 1.2 actually fixed, and introducing py-yaml12, a new Rust-backed Python library for working with the modern spec.
Crashing cars and improving hover detection https://lobste.rs/s/aufohg #games #web
https://motion.dev/magazine/collision-detection-in-hover-detection
motion.dev
Fast pointer movements can skip over elements, breaking hover detection. The surprising solution can be found in game development.
Curatube: a distraction free interface for YT playlists to focus on learning https://lobste.rs/s/boq8pb #show #web
https://curatube-demo.vercel.app/
curatube-demo.vercel.app
A distraction free learning environment for YouTube courses
A Post-Quantum Future for Let's Encrypt via @fanf https://lobste.rs/s/djguny #security #web
https://letsencrypt.org/2026/06/03/pq-certs.html
letsencrypt.org
Let’s Encrypt is committed to a post-quantum-safe Web PKI. The path we’re planning to take is Merkle Tree Certificates (“MTCs”), a new approach that adds post-quantum authentication to the web without sacrificing the speed and reliability that have made TLS universal. This post is about these plans and why we believe MTCs are worth pursuing as a key to a post-quantum future. An increasingly urgent problem For much of the last several years, the conversation about post-quantum cryptography has been a conversation about encryption. The reasoning was straightforward: an attacker who records encrypted traffic today might be able to decrypt it years from now once quantum computers can break the underlying math. Authentication, the part of TLS that indicates a server is who it says it is, has been a less urgent problem. A quantum computer needs to forge a signature in real time, not retroactively, so threats to authentication hinge on the existence of a cryptographically relevant quantum computer (CRQC).
Parsing XML EXIF from .avif files (plus a rant) by @sheephorse https://lobste.rs/s/jx44nm #python #web
https://sheep.horse/2026/6/parsing_xml_exif_from_.avif_files_(plus_a_rant).html
.furry - A Top-Level Domain for furries via @aks https://lobste.rs/s/1bie2j #web
https://www.dotfurry.org/
dotfurry.org
$24,901 raised of $90,000 goal 27.7% funded Campaign ends August 1, 2026 at 00:00 -0700 58 days 20 hours 26 minutes 54 seconds Campaign closed
Full Disclosure: 1-Click GitHub Token Stealing via a VSCode Bug https://lobste.rs/s/fysuyw #security #vscode #web
https://blog.ammaraskar.com/github-token-stealing/
My blog, mostly about programming
Another shameless selfplug 😬
I will be hosting a workshop on Digital Independence at the 'Web You Want' conference on Wednesday June 10th in Amsterdam.
This event is organised by CMD Amsterdam, the school of design at the Amsterdam University of Applied Sciences
Free admission, but registration required.
More info:
https://the-web-you-want.org/?css=vasilis2
#BigTech #Conference #Amsterdam #WebDev #Web #Design #DigitalAutonomy #DigitaleAutonomie #Doeidag #OpenSource
the-web-you-want.org
A two day conference about the web, with some time to think between the two days. April 17, 2026, and June 10, 2026.
Another shameless selfplug 😬
I will be hosting a workshop on Digital Independence at the 'Web You Want' conference on Wednesday June 10th in Amsterdam.
This event is organised by CMD Amsterdam, the school of design at the Amsterdam University of Applied Sciences
Free admission, but registration required.
More info:
https://the-web-you-want.org/?css=vasilis2
#BigTech #Conference #Amsterdam #WebDev #Web #Design #DigitalAutonomy #DigitaleAutonomie #Doeidag #OpenSource
the-web-you-want.org
A two day conference about the web, with some time to think between the two days. April 17, 2026, and June 10, 2026.
Five Years of Trying to Add Recursion to lychee via @vbernat https://lobste.rs/s/fsltyn #distributed #rust #web
https://endler.dev/2026/lychee-recursion/
endler.dev
Recursion has been <a rel="external" href="http…
Front-End’s Missing Metric: The TBT Window https://lobste.rs/s/8eaumi #performance #web
https://csswizardry.com/2026/06/front-ends-missing-metric-the-tbt-window/
csswizardry.com
The TBT Window is the FCP-to-TTI interval used to calculate Total Blocking Time. If FCP or TTI moves, TBT can change even when long tasks do not.
What Is a Dickover? https://lobste.rs/s/xsurh7 #design #satire #web
https://daringfireball.net/2026/05/what_is_a_dickover
daringfireball.net
dickover — a modal panel, popover, or curtain presented by a website or app, deliberately obscuring its own content to frustrate the user with an unwanted, unnecessary, mandatory interaction; e.g. asking the user to accept “cookies”, subscribe to a newsletter, install the website’s mobile app, agree to terms of service, or anything else that the user couldn’t give two shits about.
DOM Templating API Proposal: Explainer https://lobste.rs/s/cqcqsm #browsers #web
https://github.com/justinfagnani/dom-templating-api-proposal/blob/main/EXPLAINER.md
github.com
A proposal for a new DOM Templating API. Contribute to justinfagnani/dom-templating-api-proposal development by creating an account on GitHub.
Avoid using "<![CDATA[ ... ]]>" in RSS https://lobste.rs/s/l9qosq #web
https://waspdev.com/articles/2026-05-11/avoid-using-cdata-in-rss
waspdev.com
"<![CDATA[ ... ]]>" is often used in feeds to escape XML special characters. However, it can cause issues in some edge cases.
『補助犬の話は、つい「犬を受け入れましょう」という話に見えてしまうことがあります。でも本質はそこではありません。補助犬を伴う人が、店に入り、移動し、サービスを利用し、社会の一員として当たり前に暮らすための話です。』
補助犬を「犬の話」で終わらせないために――A11y Tokyo Meetupで考えた人権とアクセシビリティ #Web - Qiita https://qiita.com/tomokusaba/items/86e037121e83788ad2e7
qiita.com
はじめに A11y Tokyo Meetup の 4本足のパートナー“聴導犬”と考えるアクセシビリティ に参加しました。 補助犬という言葉自体は知っていましたし、盲導犬・介助犬・聴導犬がいることも頭では分かっていたつもりでした。ですが、実際に当事者の方の話を聞くと、私が理...
Websites Are Not Going to Die:
AI search feels like a threat to the open Web, but the future of the Web does not depend on select large players.
meiert.com
AI search feels like a threat to the open Web, but the future of the Web does not depend on select large players.
Let Equals Equal Equals https://lobste.rs/s/pr2wmh #a11y #web
https://bennypowers.dev/posts/let-equals-equal-equals/

bennypowers.dev
Setting `ariaDescribedByElements` on a node silently fails when the target is in a different shadow root. The spec broke `=` to preserve encapsulation purity. This violates the Priority of Constituencies, harms AT users, and should be fixed immediately. Reference Target is complementary and welcome, but it is not a substitute for making imperative assignment work.
Websites Are Not Going to Die:
AI search feels like a threat to the open Web, but the future of the Web does not depend on select large players.
meiert.com
AI search feels like a threat to the open Web, but the future of the Web does not depend on select large players.
📅 Next Web Talks at Mozilla Berlin Meetup is happening Thu, June 11, 18:00 🦊
Two talks:
• Sunil Mayya on "Keep Off My LAN": Firefox's implementation of Local Network Access
• @freddy on "The Devil is in the Defaults": defending against XSS with Trusted Types and the Sanitizer API
https://www.meetup.com/de-DE/berlin-mozilla-meetup/events/314623241/
meetup.com
Save the date! The Mozilla Meetup series continues with talks focused on modern web technologies. To account for typical **no-show rates**, we’ve opened more RSVP spots th
I wonder if the people at #X ever read their own announcements.
Literally explaining how they sold out and enshittified the "blue checkmark".
This also seem like yet another step towards mandatory #IDverification on social media! (only to protect them kids & democratize the platforms of course 😉)
#Enshittification #SocialMedia #Twitter #Internet #announcement #news #web #verification #online #privacy #privacymatters #europe #eu #decision #digital #id #rights #legal
. []
As you know, on 1 April 2023 we began winding down Twitter's legacy
verification program:
Previously, to receive the blue checkmark, [highlighted in yellow] accounts had to be authentic,
active, and deemed notable by Twitter staff [] (for more information on the
legacy policy, please click here).
Now, following the changes implemented to democratize the platform, the
blue checkmark has a different meaning and identifies accounts that have an
active subscription to X Premium/X Premium+ (including services such as
reply prioritization) and are complete, active, secure and non-deceptive,
regardless of perceived notability. X supports freedom of speech and does not endorse or validate the views expressed on accounts featuring checkmarks.](https://media.social.fedify.dev/media/019e6d8b-0b54-7b46-af7e-519ab3b59381/thumbnail.webp)
Screenshot of an X notification: Update on X's blue checkmark Following the European Commission's Decision of 5 December 2025, we must explain the meaning of our blue checkmark and verification policies: Premium accounts featuring the blue checkmark are not verified under identity or authenticity criteria [highlighted in yellow](accounts verified based on an ID are labelled as "ID verified"). [] As you know, on 1 April 2023 we began winding down Twitter's legacy verification program: Previously, to receive the blue checkmark, [highlighted in yellow] accounts had to be authentic, active, and deemed notable by Twitter staff [] (for more information on the legacy policy, please click here). Now, following the changes implemented to democratize the platform, the blue checkmark has a different meaning and identifies accounts that have an active subscription to X Premium/X Premium+ (including services such as reply prioritization) and are complete, active, secure and non-deceptive, regardless of perceived notability. X supports freedom of speech and does not endorse or validate the views expressed on accounts featuring checkmarks.
💡 Why is archiving web pages only a kludge, and why do we need forkable, git-style architecture for websites?
📹 Watch @brewsterkahle share his vision at the DWeb Meetup at @cbase, and come to discuss it with him at #DWebCamp on July 8–12!
https://archive.org/details/dweb-meetup-berlin-20260228-brewster-kahle
#DWeb #camp #Web #WebDev #archive #InternetArchive #archiving #library #digitalLibrary #digitalPreservation
archive.org
Presentation by Brewster Kahle at the DWeb Berlin Meetup (c-base, February 28, 2026). In this talk about the past and future of the web, Kahle covers:The...
💡 Why is archiving web pages only a kludge, and why do we need forkable, git-style architecture for websites?
📹 Watch @brewsterkahle share his vision at the DWeb Meetup at @cbase, and come to discuss it with him at #DWebCamp on July 8–12!
https://archive.org/details/dweb-meetup-berlin-20260228-brewster-kahle
#DWeb #camp #Web #WebDev #archive #InternetArchive #archiving #library #digitalLibrary #digitalPreservation
archive.org
Presentation by Brewster Kahle at the DWeb Berlin Meetup (c-base, February 28, 2026). In this talk about the past and future of the web, Kahle covers:The...
CVE-2026-48710 Starlette Host-Header Auth Bypass https://lobste.rs/s/cmsgwo #python #web
https://badhost.org
badhost.org
Scan your Starlette or FastAPI server for CVE-2026-48710 (BadHost): a critical auth bypass via Host header injection affecting MCP servers, LLM proxies, AI agent frameworks, and thousands of Python ASGI applications.
Fully in-browser container builds https://lobste.rs/s/vvb79k #devops #programming #web
https://ochagavia.nl/blog/fully-in-browser-container-builds/
ochagavia.nl
Containers are fun. The ecosystem is incredibly open, with the internals right there for anyone to explore. Once you wrap your head around the specifications, you unlock the power to build custom tools and may even discover unexpected use cases1. Speaking of “unexpected use cases”, today I have a demo to share: a web application that builds containers right in your browser, relying only on client-side code. Try it out Seeing is believing, so why don’t you head to the demo and build a container?
JS Crossword - a crossword where the clue = eval(answer) by @rebane2001 https://lobste.rs/s/nkrgmr #javascript #web
https://lyra.horse/fun/jscrossword/
lyra.horse
a crossword where the clue = eval(answer)
Declarative partial updates via @nemin https://lobste.rs/s/qgq6ur #api #browsers #web
https://developer.chrome.com/blog/declarative-partial-updates
developer.chrome.com
درباره قابلیتهای جدید پخش خارج از ترتیب و روشهای جدید درج و پخش HTML که برای آزمایش از Chrome 148 در دسترس هستند، اطلاعات کسب کنید.
HTML5 Foster Parenting https://lobste.rs/s/gvyjud #browsers #web
https://www.rushis.com/html5-foster-parenting/
rushis.com
Instead of a tag what happens when a custom tag element is placed inside a tag. I was trying to write a custom directive in angular which was doing the same thing as mentioned above. To my surprise the result was not the desired one. And this is how I accidentally stumbled upon
A Forth-inspired language for writing websites https://lobste.rs/s/1acyon #concatenative #web
https://robida.net/entries/2026/05/21/a-forth-inspired-language-for-writing-websites
robida.net
I don't remember where the idea came from, but I decided that it would be cool if I could write websites using a stack-based language. Something like this: : h1 ( s -- ) "<h1>" emit . "</h1>" em…
Announcing Web Serial Support in Firefox https://lobste.rs/s/tbxmm1 #browsers #web
https://hacks.mozilla.org/2026/05/web-serial-support-in-firefox/
hacks.mozilla.org
Support for Web Serial in Firefox 151 for Desktop Firefox can now connect directly to microcontrollers, development boards, 3D printers, power meters, and other serial-connected hardware from the web. Starting ...
Tailwind: Suffering From Success via @aks https://lobste.rs/s/w0uimq #web
https://blog.sebin-nyshkim.net/posts/tailwind-suffering-from-success/
blog.sebin-nyshkim.net
In November 2025, a pull request was opened for the Tailwind website repository to add llms.txt as an endpoint for, you guessed it, providing an LLM-friendly version of the popular CSS framework’s documentation. It first sat idle for a while and the issuer started pinging Tailwind employees for review. After not getting any kind of response, Tailwind’s creator chimed in and laid down some bad news.
Aggressive AI scrapers are making it kinda suck to run wikis https://lobste.rs/s/k21pdb #web
https://weirdgloop.org/blog/clankers
weirdgloop.org
Bots are currently scraping the internet for LLM training data at unprecedented rates[1][2][3], driving up costs and destabilizing public-facing websites. I want to talk about how this has been particularly difficult for wikis, and has gotten much worse in the last few months.
Just noticed this little @codepen demo got featured:
https://codepen.io/thebabydino/pen/XJNpeYL
Detailed explanation for the how behind the mathy solution in this thread 👉 https://mastodon.social/@anatudor/116594229219732729
#CSS #cssGradient #code #coding #web #dev #webDev #webDevelopment #frontend #Maths #cssMaths

Animated GIF. Shows 4 rectangles with a 5:1 aspect ratio and an animated border glow going around the perimeter. For the first rectangle, this is achieved by linearly animating a conic-gradient angle. Since the rectangle is very far from a 1:1 aspect ratio, the glow accelerates and stretches at the corners. For the next two rectangles (one with no rounded corners and one with rounded corners), what's animated is the progress around the perimeter, then the conic gradient angle is computed from it, giving us a constant speed, constant length glow. This also allows for a pretty good approximation if we have not too big rounded corners. For the final rectangle, we animate a linear gradient glow 4x, once along each edge. This does not work for rounded corners.
Just noticed this little @codepen demo got featured:
https://codepen.io/thebabydino/pen/XJNpeYL
Detailed explanation for the how behind the mathy solution in this thread 👉 https://mastodon.social/@anatudor/116594229219732729
#CSS #cssGradient #code #coding #web #dev #webDev #webDevelopment #frontend #Maths #cssMaths

Animated GIF. Shows 4 rectangles with a 5:1 aspect ratio and an animated border glow going around the perimeter. For the first rectangle, this is achieved by linearly animating a conic-gradient angle. Since the rectangle is very far from a 1:1 aspect ratio, the glow accelerates and stretches at the corners. For the next two rectangles (one with no rounded corners and one with rounded corners), what's animated is the progress around the perimeter, then the conic gradient angle is computed from it, giving us a constant speed, constant length glow. This also allows for a pretty good approximation if we have not too big rounded corners. For the final rectangle, we animate a linear gradient glow 4x, once along each edge. This does not work for rounded corners.
In Yesterday’s IO Keynote Google declared war on the remnants of the Web. (See longer description on their website.) TL;DR: They are pushing Search more into the “here’s your processed answer” direction that “AI Overviews” have established (you know, those AI snippets in current Search that are wrong about 10% of the time). So they are mostly giving up on the paradigm of providing links to information.
While they packaged it as a lot of “AI” talk and “agentic” and whatnot, what their whole approach of decontextualizing information, of taking away links to sources and instead producing some LLM generated response means is that they want to establish a new abstraction layer on the web. Where Zuckerberg with his Metaverse failed Google is starting the next attack: Your website, your work no longer matters. The web is being fully hidden behind a Google-controlled surface. And I am not even talking about their browser monopoly.
Your work, your writing or art do matter a bit still: As (unpaid) raw material for their synthetic text extruders. You get to work for free so Google can have tight control on the flow of information and make sure that the responses people get are in line with what they need them to be. But your work is no longer seen as an important cultural artifact you can share with others.
This is a literal revolution but one against the participatory web, against us: The goal is to take away the web and guide people into Google’s abstraction on top of it. An abstraction they control and moderate. It’s about monopolizing access to information. A true Metaverse unbound by open standards and your ability to build your own corner of the web according to your needs and desires. Which – given how strong Google’s influence is on web standards – will change the shape of the standards for the technological landscape we are building the web on.
The next step will be Google or other companies in that space developing and deploying a new derogatory term for the web marking it as unclean, unruly, dangerous, bad (similar to “the Dark Web”) and making their abstraction the “safe” web.
If you do care about the web, about people’s ability to participate in it as more than mere passive consumers, this needs to be taken seriously. De-googlifying your mental apparatus becomes more urgent today. Find other search engines, don’t use the Chrome browser. Or wake up in a slopified AOL kind of environment where your access to information is limited to what Google’s synthetic text extruders deem relevant.
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Almost looks like a... real website? https://lobste.rs/s/qfftwx #vibecoding #web
https://jasmcole.com/2026/05/04/almost-looks-like-a-real-website
jasmcole.com
It's been a long time since this site has had a refresh - the last time was 12 years ago when I decided to go for a purple fractal theme... Needless to say, it's been long overdue some love! Let's see what's fresh.
The Unreasonable Effectiveness of ProseMirror Model in Rich Text Transformation https://lobste.rs/s/syambe #web
https://smoores.dev/post/unreasonable_effectiveness_of_prosemirror/
smoores.dev
About month a go I might have added a minimal implementation of ProseMirror Model in Storyteller’s alignment package. But I can explain! It’s not my fault! It’s just that ProseMirror’s data model is such a good fit for rich text. I couldn’t resist. I don’t have a problem, you have a problem.
Cross-Document View Transitions: The Gotchas Nobody Mentions via @lesley https://lobste.rs/s/4hnsdc #css #web
https://css-tricks.com/cross-document-view-transitions-part-1/
css-tricks.com
This is Part 1 of a two-part series about cross-document view transitions, going over all the gotchas, from ditching the deprecated way to opt into them to a little-known 4-second timeout.
A Linux-like kernel in a browser tab - deep dive in the BrowserPod architecture https://lobste.rs/s/s3wqhi #linux #wasm #web
https://labs.leaningtech.com/blog/browserpod-deep-dive.html
labs.leaningtech.com
How the BrowserPod kernel supports running many Linux applications concurrently in the browser using WebAssembly.
Bitsocial: Open Source P2P Network for Social Apps https://lobste.rs/s/hg4sew #distributed #web
https://bitsocial.net/
bitsocial.net
Bitsocial is an open-source IPFS-backed peer-to-peer network for social apps, with no servers, no global bans, where users and communities are cryptographic property.
Cutting the Gordian Hairball https://lobste.rs/s/hetkyy #web
https://buttondown.com/dorian/archive/cutting-the-gordian-hairball/
buttondown.com
A meditation on the close of a veritable odyssey, and how Intertwingler—the application server I'm creating—is actually a frontal assault on link rot.
Explore Wikipedia Like a Windows XP Desktop https://lobste.rs/s/lrpbpg #web #windows
https://explorer.samismith.com/
explorer.samismith.com
A working Windows XP desktop in your browser. Wikipedia and Wikimedia Commons as folder trees, Earth as a scrapbook. By Sami Smith.
shader-doodle: A friendly web-component for writing and rendering shaders https://lobste.rs/s/6drkf8 #web
https://sr.ht/~merl/shader-doodle/
sr.ht
Community building at the edge of the Internet https://lobste.rs/s/ouayo0 #distributed #web
https://news.dyne.org/the-edge-of-the-internet/
news.dyne.org
What if your community could exist without phone numbers, email addresses or third party websites? What if all your community needed to provide digital services to its constituents was a Nostr Relay on the Local Area Network?
Waiting for website changes in the browser https://lobste.rs/s/d2rnlh #python #web
https://alexwlchan.net/2026/livereload-in-browser/
alexwlchan.net
I'm using HTTP long polling and Python's threading module to tell my browser when my site has finished rebuilding. This gives me near-instant reloading, with no third-party dependencies.
The <noscript> element as a trap via @RunxiYu https://lobste.rs/s/26xxyq #web
https://hacktivis.me/articles/no-noscript-element
hacktivis.me
Exploring the HTML-in-Canvas Proposal https://lobste.rs/s/dx4s7g #web
https://tympanus.net/codrops/2026/05/13/exploring-the-html-in-canvas-proposal/
tympanus.net
A quick look at the HTML-in-Canvas proposal, how it works, and what it enables with a few practical demos.
Browsers Treat Big Sites Differently https://lobste.rs/s/wij1pq #browsers #web
https://denodell.com/blog/browsers-treat-big-sites-differently
denodell.com
Safari and Firefox change how big sites render based on the domain. TikTok, Netflix, Instagram… even SeatGuru. Chrome doesn’t. Why is that?
5 Years and $5M Later: Inventing a New Programming Language for Web Development Was a Mistake | Wasp https://lobste.rs/s/pfbph4 #plt #web
https://wasp.sh/blog/2026/05/13/new-language-for-web-dev-was-a-mistake
wasp.sh
After 5 years and $5M building Wasp, we're replacing our custom config language with TypeScript. Here's why we thought a new language was a good idea, what we learned, and why TypeScript won.
Setting up a free *.city.state.us locality domain via @adam https://lobste.rs/s/g4lj0n #web
https://fredchan.org/blog/locality-domains-guide/
fredchan.org
In the US, you can get a domain name like `somename.city.state.us` for free. If your town has its own domain, you can get nameservers from Amazon Lightsail, send the *Interim .US Domain Template* to the delegated manager for your locality, then point DNS entries at your webhost.
Dart Live, a compiler, VM, analyzer and hot reload on the web via Wasm https://lobste.rs/s/qwoixg #assembly #compilers #debugging #programming #wasm #web
https://modulovalue.github.io/dart-live/
modulovalue.github.io
Soon We Can Finally Banish JavaScript to the ShadowRealm https://lobste.rs/s/txgfvc #web
https://css-tricks.com/soon-we-can-finally-banish-javascript-to-the-shadowrealm/
css-tricks.com
The proposed ShadowRealm API introduces a new kind of realm specifically designed for isolation, and only that.
Watching for file changes on macOS https://lobste.rs/s/hpjufw #mac #python #swift #web
https://alexwlchan.net/2026/watch-files-on-macos/
alexwlchan.net
I've written a Swift script that uses the FSEvents API to get notified of file changes, then I'm using stdout as a bridge to forward those notifications to Python.
CSS & vertical rhythm for text, images, and tables by @vbernat https://lobste.rs/s/bvqio4 #web
https://vincent.bernat.ch/en/blog/2026-css-vertical-rhythm
vincent.bernat.ch
Hold vertical rhythm with the rlh CSS unit for text, a bit of JavaScript for images, some CSS wizardry for tables.
WebKit Features for Safari 26.5 https://lobste.rs/s/aedmog #ios #mac #web
https://webkit.org/blog/17938/webkit-features-for-safari-26-5/
webkit.org
Safari 26.5 is here, delivering the :open pseudo-class, the element-scoped keyword for random(), color-interpolation for SVG gradients, the ToggleEvent.source property for popovers, and the Origin API.
Piping terminal output to the browser using systemfd https://lobste.rs/s/pdhf7w #browsers #linux #practices #web
https://blog.izissise.net/posts/webdev-livecompile/
blog.izissise.net
Web Feeds in 2026: A Survey https://lobste.rs/s/spxvp4 #web
https://mnot.net/blog/2026/feed-survey
mnot.net
I looked through Common Crawl and found over 300,000 parseable RSS/Atom feeds, confirming that Web feeds are still a major part of the Open Web. But most aren’t high quality, and autodiscovery often points users at stale or abandoned feeds.
My pastebin clone Vivipara and language musings by @aks https://lobste.rs/s/wnylwv #programming #web
https://akselmo.dev/posts/vivipara-and-languages/
akselmo.dev
I just spent this weekend writing my own little pastebin clone, called Vivipara.I also have bunch of thoughts about various programming languages. Read about it all in this one blogpost!
I Will Not Add Query Strings to Your URLs by @susam https://lobste.rs/s/vbit2a #web
https://susam.net/no-query-strings.html
susam.net
Serving a Website on a Raspberry Pi Zero Running Entirely in RAM https://lobste.rs/s/fsueos #networking #web
https://btxx.org/posts/memory/
btxx.org
Wii IP6 webserver https://lobste.rs/s/3kjqec #netbsd #web
http://wii.sjmulder.nl
I’m building a new website. It needs to be super modern, bleeding edge, literally page from the future!
I follow all the web standards and protocols carefully. Also to get inspired, I ordered a “Usability Engineering” by Jakob Nielsen (1993) and “The Design of Everyday Things” by Donald Norman (2013). This is how much I care about the modern frontend frameworks 😄
building a web server in aarch64 assembly to give my life (a lack of) meaning via @nemin https://lobste.rs/s/wfqsc4 #assembly #web
https://imtomt.github.io/ymawky/

imtomt.github.io
a static http server in aarch64 assembly
Just Fucking Use React https://lobste.rs/s/o6fdba #web
https://justfuckingusereact.com
justfuckingusereact.com
An opinionated guide on why and when to use React (or similar JavaScript frameworks) for modern web development, especially for complex, interactive applications. Challenges the 'pure HTML' narrative.
From Supabase to Clerk to Better Auth https://lobste.rs/s/gxogzo #web
https://blog.val.town/better-auth
blog.val.town
Updates and articles from the Val Town team
現在的網頁設計太膨脹了。不應該是這樣的...業界每過幾年就換一個前端JS框架卻忽略了要表達的內涵,各種現成同質性的的模板主題也抹殺了學HTML自製網頁的樂趣。
看看 #Neocities 的Web 2.0設計,沒有JavaScript,網頁就只是網頁,沒有傷害使用者的能力。對極簡主義者(suckless)來說,網頁設計應該是要不依賴JavaScript就能運作的。所有功能應該用plain HTML與CSS來implement,JavaScript最多只是執行個小工具,不應該使用前端框架,更不該加密與過度混淆。雖然這會讓網頁看起來很簡陋(參考FSF的設計風格,他們難以讓網頁全寬顯示。Neocities上很多網站也是這樣),但這讓網頁是可被信任的被稽核的。網頁設計不應該只考慮在Firefox與Chrome的渲染效果,還要在純文字的終端機w3m也能閱讀。甚至讀者想要的話應該要能閱讀HTML(例如Richard Stallman他老人家不用瀏覽器,而是用curl下載網頁閱讀)就能看到本文。
JavaScript的話要符合LibreJS的標準,宣告自身是開源的可信賴的才載入。
Major DNS Outage Hits .de Domains: DNSSEC Failure on May 5, 2026 https://lobste.rs/s/gprclr #networking #security #web
https://www.ip.network/blog/de-domain-dnssec-outage-may-2026
現在的網頁設計太膨脹了。不應該是這樣的...業界每過幾年就換一個前端JS框架卻忽略了要表達的內涵,各種現成同質性的的模板主題也抹殺了學HTML自製網頁的樂趣。
看看 #Neocities 的Web 2.0設計,沒有JavaScript,網頁就只是網頁,沒有傷害使用者的能力。對極簡主義者(suckless)來說,網頁設計應該是要不依賴JavaScript就能運作的。所有功能應該用plain HTML與CSS來implement,JavaScript最多只是執行個小工具,不應該使用前端框架,更不該加密與過度混淆。雖然這會讓網頁看起來很簡陋(參考FSF的設計風格,他們難以讓網頁全寬顯示。Neocities上很多網站也是這樣),但這讓網頁是可被信任的被稽核的。網頁設計不應該只考慮在Firefox與Chrome的渲染效果,還要在純文字的終端機w3m也能閱讀。甚至讀者想要的話應該要能閱讀HTML(例如Richard Stallman他老人家不用瀏覽器,而是用curl下載網頁閱讀)就能看到本文。
JavaScript的話要符合LibreJS的標準,宣告自身是開源的可信賴的才載入。
How an HTTP header caused time.gov to skew from UTC https://lobste.rs/s/3i1ulr #web
https://alexsci.com/blog/how-time-gov-works/

alexsci.com
Exploring a clock synchronization problem
Scroll-Driven Animations https://lobste.rs/s/zn53g8 #css #web
https://www.joshwcomeau.com/animation/scroll-driven-animations/
joshwcomeau.com
The new Animation Timeline API allows us to create dynamic scroll animations without any JavaScript! It’s honestly a very lovely API, and in this blog post, we’ll explore some of the super cool things we can do with it.
Trustworthy JavaScript for the Open Web https://lobste.rs/s/rojlaw #security #web
https://hacks.mozilla.org/2026/05/trustworthy-javascript-for-the-open-web/
hacks.mozilla.org
The open web is a critical platform for applications that handle highly sensitive data, from private communications to financial transactions and medical records. Traditionally, servers are trusted to deliver the ...
"You do not have to wait for someone to rebuild what you lost. You are standing in it." #web
RSS Feeds Send Me More Traffic Than Google https://lobste.rs/s/z0nkyf #web
https://shkspr.mobi/blog/2026/05/rss-feeds-send-me-more-traffic-than-google/
shkspr.mobi
Yeah yeah, I know, data-point of 1. I recently read Susam's blog post where they said that "most of the traffic to my personal website still comes from web feeds" - I wondered if that was true for my site. I've been writing this blog for a while. I've never much bothered with "aggressive" SEO - I have a fairly semantic layout, all my reviews have metadata, and stuff like that - but I'm not…
Byline: Structured Identity for Syndication Feeds via @jparise https://lobste.rs/s/onby0z #web
https://www.bylinespec.org/
bylinespec.org
An open specification that adds author context to RSS, Atom, and JSON Feed.
How I create static websites for tiny archives (2025) https://lobste.rs/s/o9hnbc #javascript #web
https://alexwlchan.net/2025/mildly-dynamic-websites/
alexwlchan.net
Start with a simple HTML file, then add features like templates, sorting, and filtering as they become useful.
Reminder: You Can Stitch Together Lots of Little HTML Pages With Navigations For Interactions via @lesley https://lobste.rs/s/6cmh6h #web
https://blog.jim-nielsen.com/2026/small-html-pages/
blog.jim-nielsen.com
Writing about the big beautiful mess that is making things for the world wide web.
git-async web demo - A git browser in the browser https://lobste.rs/s/pwwn0j #show #rust #vcs #wasm #web
https://git-async.donk.systems/
git-async.donk.systems
What fun websites do you know? by @aks https://lobste.rs/s/ncngka #ask #web
lobste.rs
1 comment
The Seven Deadly Fediverse UX Sins: A Redemption Report Card https://lobste.rs/s/lc6yxh #web
https://wedistribute.org/2026/04/the-seven-deadly-fediverse-ux-sins-a-redemption-report-card/
wedistribute.org
Six months after an initial analysis, two Fediverse experts come back to examine where user experience has changed. Are we on the path of redemption, or repeating the same old sins?
Typing Your Django Project in 2026 https://lobste.rs/s/ckczrr #python #web
https://blog.pecar.me/typing-your-django-project-in-2026/
blog.pecar.me
The first version of Django was released about 10 years before Python standardized its type hints syntax. Because of this it’s not surprising that getting type hints to work in your Django project is not going to be trivial. django-stubs with mypy If you want your Django codebase to be type checked then django-stubs is the go to package to use. It ships both type-stubs for most of Django’s public APIs as well as a mypy plugin that fills in the typing information for all the dynamic black magic that we love Django for. You’ll also want to include the monkeypatch from django-stubs-ext for best results.
micro-benchmarks don’t tell the whole story by @aziz https://lobste.rs/s/havzoc #lisp #performance #web
https://hyper.dev/2026/chez-scheme-letloop-transparent-async-microbenchmark/
hyper.dev
The Seven Deadly Fediverse UX Sins: A Redemption Report Card https://lobste.rs/s/lc6yxh #web
https://wedistribute.org/2026/04/the-seven-deadly-fediverse-ux-sins-a-redemption-report-card/
wedistribute.org
Six months after an initial analysis, two Fediverse experts come back to examine where user experience has changed. Are we on the path of redemption, or repeating the same old sins?
Mozilla's position on the Prompt API https://lobste.rs/s/pcymmp #web
https://mastodon.social/@firefoxwebdevs/116492853483021978
mastodon.social
Chrome looks set to ship an LLM Prompt API to the web platform. At Mozilla, we oppose this API. We feel it has a large interoperability risk, and Google imposing T&Cs on a web API sets a dangerous precedent. Full details: https://github.com/mozilla/standards-positions/issues/1213#issuecomment-4347988313
The end of responsive images https://lobste.rs/s/dsomuk #web
https://piccalil.li/blog/the-end-of-responsive-images/
piccalil.li
Mat Marquis has waited 14 years to write this article. The sizes attribute has been a necessary evil but now, with an auto value capability, it’s completely transformed authoring responsive images on the web.
Distributing the Keys for Private Access to the Web https://lobste.rs/s/gg5n7g #cryptography #security #web
https://cdt.org/insights/distributing-the-keys-for-private-access-to-the-web/
cdt.org
Breaking the DNS Dependencych-22" class="toc-anchor">ECH’s Catch-22thing-strange-in-the-dns" href="#something-strange-in-the-dns" class="toc-anchor">Something Strange in the DNS use it. That’s the fundamental challenge facing encrypted DNS and Encrypted Client Hello (ECH). These protocols can protect your browsing from prying eyes, but only if you can first obtain the cryptographic configurations that make them work. In places like China, censors have […]
The Day I Logged 1 In Every 2000 Public IPv4: Visualizing The AI Scraper DDoS https://lobste.rs/s/9bkq7o #web
https://vulpinecitrus.info/blog/one-in-every-2000-ipv4-visualizing-ddos-ai-web-scrapers/
vulpinecitrus.info
In an attempt to grasp the magnitude of web scraper attacks against my websites, i went the way of visualizing.
Code-golfing riki's HTML templating engine in Julia https://lobste.rs/s/a50exb #web
https://gist.github.com/OTDE/96584a4a83c73fb02e463eef83170cc3
gist.github.com
Code-golfing riki's HTML templating engine in Julia - code-golfing-rikis-template-engine-in-julia.jl
Building a threadiverse community platform by @hongminhee https://lobste.rs/s/gbgfec #distributed #web
https://fedify.dev/tutorial/threadiverse
fedify.dev
In this tutorial, we will build a small threadiverse-style community platform that federates with Lemmy, Mbin, and NodeBB using Fedify and Next.js.
Building a threadiverse community platform by @hongminhee https://lobste.rs/s/gbgfec #distributed #web
https://fedify.dev/tutorial/threadiverse
fedify.dev
In this tutorial, we will build a small threadiverse-style community platform that federates with Lemmy, Mbin, and NodeBB using Fedify and Next.js.
Building a threadiverse community platform by @hongminhee https://lobste.rs/s/gbgfec #distributed #web
https://fedify.dev/tutorial/threadiverse
fedify.dev
In this tutorial, we will build a small threadiverse-style community platform that federates with Lemmy, Mbin, and NodeBB using Fedify and Next.js.
Building a threadiverse community platform by @hongminhee https://lobste.rs/s/gbgfec #distributed #web
https://fedify.dev/tutorial/threadiverse
fedify.dev
In this tutorial, we will build a small threadiverse-style community platform that federates with Lemmy, Mbin, and NodeBB using Fedify and Next.js.
Building a threadiverse community platform by @hongminhee https://lobste.rs/s/gbgfec #distributed #web
https://fedify.dev/tutorial/threadiverse
fedify.dev
In this tutorial, we will build a small threadiverse-style community platform that federates with Lemmy, Mbin, and NodeBB using Fedify and Next.js.
Building a threadiverse community platform by @hongminhee https://lobste.rs/s/gbgfec #distributed #web
https://fedify.dev/tutorial/threadiverse
fedify.dev
In this tutorial, we will build a small threadiverse-style community platform that federates with Lemmy, Mbin, and NodeBB using Fedify and Next.js.
Lua can be a really cool HTML templating engine https://lobste.rs/s/ukar7d #lua #web
https://riki.house/lua-html
riki.house
«#Proton CEO warns global #ageVerification push will mean "the death of anonymity online"
Protecting children #online is crucial, but forcing every user to hand over their ID is a privacy #nightmare waiting to happen, according to the head of the #Swiss #privacy firm»
It's never about #childProtection that's just an argument to convince people to voluntarily hand over their #personalData. In today's #Internet, people are the product and the #web is their #market.
techradar.com
Protecting children online is crucial, but forcing every user to hand over their ID is a privacy nightmare waiting to happen, according to the head of the Swiss privacy firm
«#Proton CEO warns global #ageVerification push will mean "the death of anonymity online"
Protecting children #online is crucial, but forcing every user to hand over their ID is a privacy #nightmare waiting to happen, according to the head of the #Swiss #privacy firm»
It's never about #childProtection that's just an argument to convince people to voluntarily hand over their #personalData. In today's #Internet, people are the product and the #web is their #market.
techradar.com
Protecting children online is crucial, but forcing every user to hand over their ID is a privacy nightmare waiting to happen, according to the head of the Swiss privacy firm
«400.000 Dollar Gewinn mit Insiderwette auf Maduro-Entführung — US-Soldat in Haft:
Nach der Entführung von Maduro war bekannt geworden, dass sich wohl jemand mit Insiderwissen über 400.000 US-Dollar erwettet hat. Nun gab es eine Festnahme»
Immer wider "lustig" zu sehen, dass viele glauben durch ihr Synonyme zB im @torproject online anonym zu sein. So simpel ist die absolute Anonymität im Web nicht was aber viele naive glauben.
heise.de
Nach der Entführung von Maduro war bekannt geworden, dass sich wohl jemand mit Insiderwissen über 400.000 US-Dollar erwettet hat. Nun gab es eine Festnahme.
Everyone Wants Servers And Nobody Wants Servers via @hongminhee https://lobste.rs/s/nepijn #distributed #web
https://connectedplaces.online/reports/fr160-everyone-wants-servers-and-nobody-wants-servers/
connectedplaces.online
What makes a social network resilient?
Olive CSS: Lisp powered vanilla CSS utility-class a la Tailwind https://lobste.rs/s/unbgyx #css #lisp #web
https://codeberg.org/jjba23/olive-css
codeberg.org
Utility-class vanilla CSS framework inspired by Tailwind syntax, easy to learn and hack, written in Lisp (Guile Scheme)
418 I'm a teapot https://lobste.rs/s/41tx1p #satire #web
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/418
developer.mozilla.org
The HTTP 418 I'm a teapot status response code indicates that the server refuses to brew coffee because it is, permanently, a teapot. A combined coffee/tea pot that is temporarily out of coffee should instead return 503. This error is a reference to Hyper Text Coffee Pot Control Protocol defined in April Fools' jokes in 1998 and 2014.
Modern Frontend Complexity: essential or accidental? https://lobste.rs/s/y5nowq #web
https://binaryigor.com/modern-frontend-complexity.html
binaryigor.com
Once upon a time, at the dawn of the web, browsers and websites were simple ... Then slowly, step by step, more and more interactivity was added.
Why would you randomly scroll through Facebook or Instagram when we have this?
blogroll.org
You are viewing a humanly curated list fine personal & independent blogs and sites that are updated regularly. No algorithms ever!
Vercel April 2026 security incident https://lobste.rs/s/aaqbdy #security #web
https://vercel.com/kb/bulletin/vercel-april-2026-security-incident
vercel.com
We’ve identified a security incident that involved unauthorized access to certain internal Vercel systems.
How (and why) we rewrote our production C++ frontend infrastructure in Rust https://lobste.rs/s/jzgjbm #c++ #rust #web
https://blog.nearlyfreespeech.net/2026/04/17/how-and-why-we-rewrote-our-production-c-frontend-infrastructure-in-rust/
blog.nearlyfreespeech.net
Psatina: the sprinkle-oriented JavaScript library by @dz4k https://lobste.rs/s/txrqku #javascript #web
https://psatina.dz4k.com/
psatina.dz4k.com
Is there something like Kagi's 'Small Web' but for finding small online businesses? I'm looking for something that lets me browse by different shopping categories and subcategories, and under each category is a curated list of links to the websites of various small online stores. #web #shopping #search #kagi
Tech Note: Sidenotes https://lobste.rs/s/rswccw #a11y #web
https://unbreaking.org/blog/tech-note-sidenotes/
unbreaking.org
Occasionally we add a feature that’s interesting to people who build on the web, so if you like to wrestle with markup, CSS, and JavaScript, this one’s for you.
Testing OpenGraph on localhost from the CLI before you go public by @deevus https://lobste.rs/s/51obiz #release #web #zig
https://simonhartcher.com/posts/2026-04-15-testing-opengraph-on-localhost-from-the-cli
simonhartcher.com
og-check fetches a URL and renders its OpenGraph and Twitter Card metadata directly in your terminal, images and all. Point it at localhost and skip the tunnel.
Uses for nested promises – The If Works https://lobste.rs/s/im8jhc #javascript #web
https://blog.jcoglan.com/2026/03/23/uses-for-nested-promises/
«Clicking "reject cookies" might not actually do anything:
Google, Microsoft, and Meta largely ignore cookie opt-outs, independent audit says»
…and then they complain that users reduce their spying by tracking banners such as @ublockorigin, @noscript, @privacybadger or/and @libredirect?!
🍪 https://www.techspot.com/news/112073-clicking-reject-cookies-might-not-actually-do-anything.html
#cookies #google #microsoft #meta #web #ignorance #optout #click #block #spying #rejectcookies #cookieblocking
«Clicking "reject cookies" might not actually do anything:
Google, Microsoft, and Meta largely ignore cookie opt-outs, independent audit says»
…and then they complain that users reduce their spying by tracking banners such as @ublockorigin, @noscript, @privacybadger or/and @libredirect?!
🍪 https://www.techspot.com/news/112073-clicking-reject-cookies-might-not-actually-do-anything.html
#cookies #google #microsoft #meta #web #ignorance #optout #click #block #spying #rejectcookies #cookieblocking
What happened to Metalink? by @boramalper https://lobste.rs/s/guy1vp #ask #historical #web
lobste.rs
0 comments
No one can force me to have a secure website https://lobste.rs/s/gvgrij #pdf #security #web
https://tom7.org/httpv/httpv.pdf
Servo 0.1.0 (first LTS version) is now available on crates.io https://lobste.rs/s/f8vyzy #browsers #release #web
https://servo.org/blog/2026/04/13/servo-0.1.0-release/
Initial crates.io release and LTS version of Servo
A list of recent hostile moves by #Google's #Chrome team; handy for sharing with your entourage, to explain why they should stop using #Chromium / #GoogleChrome and use #Firefox or #Epiphany as their main #web #browser :
* The "Manifest v3" sabotage of content blocking extensions: https://www.theverge.com/2022/6/10/23131029/mozilla-ad-blocking-firefox-google-chrome-privacy-manifest-v3-web-request
* The attempted sabotage of #JPEGXL: https://www.cnet.com/tech/computing/chrome-banishes-jpeg-xl-photo-format-that-could-save-phone-space/
* #WebEnvironmentIntegrity a.k.a. #DRM for whole websites would hurt the web, #opensource browsers and OSes: https://arstechnica.com/gadgets/2023/07/googles-web-integrity-api-sounds-like-drm-for-the-web/
arstechnica.com
It's just a "proposal," but it's also being prototyped inside Chrome right now.
There are interesting paradigm shifts possible today, which result in great opportunities to break the browser oligopoly, and SaaS + cloud vendor hegemony of Web 2.0 with its Rube Goldberg technology stack.
@strypey referred to one of them, in a post to the Open App Ecosystem community group on #Loomio: The #hypermedia #web.
Since my hobby (it doesn't earn income yet) involves elaborating #SX methodology as a Social experience designer, I thought it interesting to add my follow-up from that perspective..
https://www.loomio.com/d/VYPyO17M/building-interactive-websites-in-a-post-framework-web/13

loomio.com
I recently stumbled across Daz's guide to building websites using HDA (Hypermedia-Driven Architecture), as an replacement for heavy and regularly obsoleted JavaScript frameworks like React. The finer details of his code examples go over my head, but what I think I understand from his description of the architecture, and the reasoning behind it, seems groundbreaking.The examples in Daz's guide are based around using HTMX. A comment on SH mentioned DataStar, which is maybe an alternative to HTMX? Certainly seems to have similar goals from what I read on their homepage.From what I read in Daz's guide, it seems like adopting this kind of approach to interactive web interfaces like Loomio, and fediverse web apps, could be a game-changer. Massively reducing the complexity of feature development and maintenance, and avoiding the cycle of having to massively refactor every time the JS framework in use becomes obsolete.Thoughts?
The free built-in VPN is currently rolling out as a beta to Firefox desktop users in 4 counties only. If you live in the United States, the United Kingdom, Germany or France, you have access to this new feature if you are using Firefox 149. Firefox plans to expand this new VPN feature to additional countries over the next several releases, so stay tuned.
The free built-in VPN is currently rolling out as a beta to Firefox desktop users in 4 counties only. If you live in the United States, the United Kingdom, Germany or France, you have access to this new feature if you are using Firefox 149. Firefox plans to expand this new VPN feature to additional countries over the next several releases, so stay tuned.
LinkedIn Is Illegally Searching Your Computer
#tech #technology #BigTech #IT #enshittification #microslop #microsoft #LinkedIn #social #media #SocialMedia #data #security #safety #InfoSec #internet #web
browsergate.eu
Microsoft is running one of the largest corporate espionage operations in modern history. Every time any of LinkedIn’s one billion users visits linkedin.com, hidden code searches their computer for installed software, collects the results, and transmits them to LinkedIn’s servers and to third-party companies including an American-Israeli cybersecurity firm. The user is never asked. Never told. LinkedIn’s privacy policy does not mention it. Because LinkedIn knows each user’s real name, employer, and job title, it is not searching anonymous visitors. It is searching identified people at identified companies. Millions of companies. Every day. All over the world.
The unusual browser feature I use most is Reader Mode.
SO MANY STUPIDLY DESIGNED WEBSITES!
Reader Mode: "Here is the main text in a sensible typeface at a reasonable size with high contrast and appropriate margins."
There should not be a need for Reader Mode. RM's utility is a solid indictment against web designers.
Look at your site-intended-to-convey-textual-information with Reader Mode. If it breaks, fix that. If the page is suddenly much easier to read... you have work to do.
Typeface.
Size.
Contrast.
Margins.
LinkedIn Is Illegally Searching Your Computer
#tech #technology #BigTech #IT #enshittification #microslop #microsoft #LinkedIn #social #media #SocialMedia #data #security #safety #InfoSec #internet #web
browsergate.eu
Microsoft is running one of the largest corporate espionage operations in modern history. Every time any of LinkedIn’s one billion users visits linkedin.com, hidden code searches their computer for installed software, collects the results, and transmits them to LinkedIn’s servers and to third-party companies including an American-Israeli cybersecurity firm. The user is never asked. Never told. LinkedIn’s privacy policy does not mention it. Because LinkedIn knows each user’s real name, employer, and job title, it is not searching anonymous visitors. It is searching identified people at identified companies. Millions of companies. Every day. All over the world.
LinkedIn Is Illegally Searching Your Computer
#tech #technology #BigTech #IT #enshittification #microslop #microsoft #LinkedIn #social #media #SocialMedia #data #security #safety #InfoSec #internet #web
browsergate.eu
Microsoft is running one of the largest corporate espionage operations in modern history. Every time any of LinkedIn’s one billion users visits linkedin.com, hidden code searches their computer for installed software, collects the results, and transmits them to LinkedIn’s servers and to third-party companies including an American-Israeli cybersecurity firm. The user is never asked. Never told. LinkedIn’s privacy policy does not mention it. Because LinkedIn knows each user’s real name, employer, and job title, it is not searching anonymous visitors. It is searching identified people at identified companies. Millions of companies. Every day. All over the world.
LinkedIn Is Illegally Searching Your Computer
#tech #technology #BigTech #IT #enshittification #microslop #microsoft #LinkedIn #social #media #SocialMedia #data #security #safety #InfoSec #internet #web
browsergate.eu
Microsoft is running one of the largest corporate espionage operations in modern history. Every time any of LinkedIn’s one billion users visits linkedin.com, hidden code searches their computer for installed software, collects the results, and transmits them to LinkedIn’s servers and to third-party companies including an American-Israeli cybersecurity firm. The user is never asked. Never told. LinkedIn’s privacy policy does not mention it. Because LinkedIn knows each user’s real name, employer, and job title, it is not searching anonymous visitors. It is searching identified people at identified companies. Millions of companies. Every day. All over the world.
The unusual browser feature I use most is Reader Mode.
SO MANY STUPIDLY DESIGNED WEBSITES!
Reader Mode: "Here is the main text in a sensible typeface at a reasonable size with high contrast and appropriate margins."
There should not be a need for Reader Mode. RM's utility is a solid indictment against web designers.
Look at your site-intended-to-convey-textual-information with Reader Mode. If it breaks, fix that. If the page is suddenly much easier to read... you have work to do.
Typeface.
Size.
Contrast.
Margins.
🔁 From our "Digital Crossroads" collection:
The Algorithm Is on Trial - https://saanyaojha.substack.com/p/the-algorithm-is-on-trial?ref=feedle.world
---
See other stories like this one here: https://feedle.world/digital-crossroads

feedle.world
Making the Web a little more open - one story at a time.
I Think a Lot of Developers Are Quietly Grieving the Old Internet, by (not on Mastodon or Bluesky):
https://dev.to/the_nortern_dev/i-think-a-lot-of-developers-are-quietly-grieving-the-old-internet-3d8
dev.to
I think a lot of developers are carrying a kind of grief right now, but rarely naming it. Not...
🔁 From our "Digital Crossroads" collection:
The Algorithm Is on Trial - https://saanyaojha.substack.com/p/the-algorithm-is-on-trial?ref=feedle.world
---
See other stories like this one here: https://feedle.world/digital-crossroads

feedle.world
Making the Web a little more open - one story at a time.
Jeg tenker flytte over web og epost til Nordhost. Noen som har noen innvendinger (som i dårlige erfaringer)?
Retut for reach.
Jeg tenker flytte over web og epost til Nordhost. Noen som har noen innvendinger (som i dårlige erfaringer)?
Retut for reach.
Wander 0.2.0 is now available.
This is a small, decentralised, self-hosted web console that lets you and visitors to your website explore interesting websites and pages recommended by a community of independent personal website owners.
For a detailed account of the changes, see: https://susam.net/code/news/wander/0.2.0.html
To try Wander, go to: https://susam.net/wander/
README: https://codeberg.org/susam/wander#readme
#web #technology #programming #html #webdev #indieweb #blogging
It's finally here! The new Newsmast Foundation website 🎉
Our new website focuses on our Apps for Change programme which is bringing real values-aligned organisations and groups to the Social Web.
It's a big change from our original website with an increased focus on actions and solutions to protect information sharing ecosystems on social media.
Check it out 👇
newsmastfoundation.org
Wander: a decentralized console for the small web
https://boingboing.net/2026/03/19/wander-a-decentralized-console-for-the-small-web.html
During my recent blogging revival I’ve already written about how I love the web1. I’ve also commented a couple of times about uses of AI and Large Language Models and the kinds of confusion that can be caused.
Today, I noticed an exchange between the brilliant Sara Joy and Stefan Bohacek on Mastodon, in which Stefan accidentally reminded me of something interesting that I hadn’t properly explored the first time around.
About 20 years ago – actually 24 years ago, according to this Wikipedia article – there was a thing called FOAF, or Friend-of-a-Friend, an early online vocabularly / ontology for describing relationships between people and things online. There was also a related concept called DOAP, Description of a Project, that I was interested in and implemented in a couple of things I worked on back then. I did some digging, but the only references I can find on this blog are some passing mentions in the early 2000s, and I’ve lost my original foaf.rdf file but I might have to go hunting for that for posterity, at some stage.
I’m mentioning all of this because it reminds me that I’ve always been interested in the Semantic Web space, and also in the people aspects of the web, beyond just the words and the technology – Who is making What, and How it is all connected.
Back to the ~present!
About 10 years ago – actually 12 years ago, according the last updated date in the original humans.txt file – there was the quiet proposal of an idea, for a humans.txt file, that could live in parallel to the robots.txt file on a web server.
The robots.txt file is intended for site owners to provide instructions to web crawlers – “robots”, or automated programs – as to how to behave in relation to the content of the site: this is the agreed-upon standard way in which the web works, and signals to search engines how to index websites, going all the way back to the early days of 1994-7, and later fully documented by Google and others.

The idea for the humans.txt file was that we should have a simple way to credit the people who made a website, in a super easy to create and publish format, regardless of the technology stack used to build the site or the URL formats and layout of the site. It was briefly documented and lightly promoted on humanstxt.org. I remember noticing it at the time, loving the idea, but then not really doing anything with it, and I admit that I didn’t end up using it myself.
However, Stefan is using this on his site (and wrote about it 11 years ago, because of course he’s ahead of me again 😀) and it made me think:
robots.txt in relation to AI crawlers/scrapers in the past 6-12 months. Let’s re-emphasise the human aspect here.
REMEMBER THE JOY THE INTERNET CAN BRING ❤️
https://donotreply.cards/en/do-post-what-it-felt-like-to-make-your-first-website
— Dan Hon (@danhon@dan.mastohon.com) 2024-08-24T17:53:01.066Z
What I’m saying, is this – Thank You, Stefan, and Sara, and Dan Hon2 and everyone else from XOXO and everywhere all over the internet, for reminding me that the web is great, humans are incredible, and hey, why don’t we all give this humans.txt thing one more try? I’m on board with that.
It's finally here! The new Newsmast Foundation website 🎉
Our new website focuses on our Apps for Change programme which is bringing real values-aligned organisations and groups to the Social Web.
It's a big change from our original website with an increased focus on actions and solutions to protect information sharing ecosystems on social media.
Check it out 👇
newsmastfoundation.org
Wander: a decentralized console for the small web
https://boingboing.net/2026/03/19/wander-a-decentralized-console-for-the-small-web.html
The current state of the web assumes that the reader is an adversary to be trapped and monetized.
When a news website forces you through three dismissive actions just to read a headline, they are burning your cognitive budget before delivering any value. You are greeted by a cookie banner taking up the bottom 30% of your screen, a "Subscribe!" modal dead center, an autoplaying video pinned to the corner and a prompt begging to send you push notifications.
I wrote about the state of news websites. Would love to hear your thoughts✨🙏
https://thatshubham.com/blog/news-audit
#enshittification #darkpattern #web #technology #socialmedia #indieweb #ux #privacy
Comme on a pour projet de faire un forum web façon "années 2000" généraliste, on a fait un pad pour avoir des idées sur les catégories, groupes de topics, topics et design pour ce futur forum !
N'hésitez pas à y proposer vos idées et en parler à vos ami·es à qui les forum manquent et à retoot :
pad.notiz.fr
It is interesting that SVG supports detecting system language settings without using javascript.
systemLanguage - SVG | MDN
https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/systemLanguage
developer.mozilla.org
The systemLanguage attribute represents a list of supported language tags. This list is matched against the language defined in the user preferences.
It is interesting that SVG supports detecting system language settings without using javascript.
systemLanguage - SVG | MDN
https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/systemLanguage
developer.mozilla.org
The systemLanguage attribute represents a list of supported language tags. This list is matched against the language defined in the user preferences.
Comme on a pour projet de faire un forum web façon "années 2000" généraliste, on a fait un pad pour avoir des idées sur les catégories, groupes de topics, topics et design pour ce futur forum !
N'hésitez pas à y proposer vos idées et en parler à vos ami·es à qui les forum manquent et à retoot :
pad.notiz.fr
I just spent the last 24 hours building... a free tool to create your very own handwriting font quickly within the browser (no logins, all local processing):
https://arcade.pirillo.com/fontcrafter.html
Having tested it extensively on my own manuscript, I can definitely say that it works. ;) Download the OTF and/or TTF when done!
The current state of the web assumes that the reader is an adversary to be trapped and monetized.
When a news website forces you through three dismissive actions just to read a headline, they are burning your cognitive budget before delivering any value. You are greeted by a cookie banner taking up the bottom 30% of your screen, a "Subscribe!" modal dead center, an autoplaying video pinned to the corner and a prompt begging to send you push notifications.
I wrote about the state of news websites. Would love to hear your thoughts✨🙏
https://thatshubham.com/blog/news-audit
#enshittification #darkpattern #web #technology #socialmedia #indieweb #ux #privacy
Just back from my very first @w3c @tag Face-to-Face in London, and it was so cool!
🌐 It was a packed week covering many topics, including the health of the #web, the impact of #AI, the global download of AI models as an architectural concept, age verification, and more.
🤝 The freshly formed #TAG worked really well together, and I’m excited to help shape the future of the web.
🎉 Thanks to Google for hosting us, and Samsung for hosting the developer meetup.
Fairplayer is sort of like a federated Bandcamp...
"Fairplayer plays music from a decentralized ecosystem. Artists and communities publish their music on their own websites and link them to a player where the user can listen to them all."
fairplayer.band
Fairplayer is sort of like a federated Bandcamp...
"Fairplayer plays music from a decentralized ecosystem. Artists and communities publish their music on their own websites and link them to a player where the user can listen to them all."
fairplayer.band
Fairplayer is sort of like a federated Bandcamp...
"Fairplayer plays music from a decentralized ecosystem. Artists and communities publish their music on their own websites and link them to a player where the user can listen to them all."
fairplayer.band
Fairplayer is sort of like a federated Bandcamp...
"Fairplayer plays music from a decentralized ecosystem. Artists and communities publish their music on their own websites and link them to a player where the user can listen to them all."
fairplayer.band
Hello all 🙂
This saturday, I have tried a new interesting tool developed by @mapache : FediProfile or Link-in-Bio designed for the Fediverse. It alows you to gather, on one page, your web presence and activities. As an example : https://hub.vocalcat.com/culturediff
To try it by yourself, have a look at this : https://hub.vocalcat.com/ ... and get in touch with the creator of this very useful tool, Maho (a very nice person) : @mapache
Hello all 🙂
This saturday, I have tried a new interesting tool developed by @mapache : FediProfile or Link-in-Bio designed for the Fediverse. It alows you to gather, on one page, your web presence and activities. As an example : https://hub.vocalcat.com/culturediff
To try it by yourself, have a look at this : https://hub.vocalcat.com/ ... and get in touch with the creator of this very useful tool, Maho (a very nice person) : @mapache
Fairplayer is sort of like a federated Bandcamp...
"Fairplayer plays music from a decentralized ecosystem. Artists and communities publish their music on their own websites and link them to a player where the user can listen to them all."
fairplayer.band
I just spent the last 24 hours building... a free tool to create your very own handwriting font quickly within the browser (no logins, all local processing):
https://arcade.pirillo.com/fontcrafter.html
Having tested it extensively on my own manuscript, I can definitely say that it works. ;) Download the OTF and/or TTF when done!
I just spent the last 24 hours building... a free tool to create your very own handwriting font quickly within the browser (no logins, all local processing):
https://arcade.pirillo.com/fontcrafter.html
Having tested it extensively on my own manuscript, I can definitely say that it works. ;) Download the OTF and/or TTF when done!
I just spent the last 24 hours building... a free tool to create your very own handwriting font quickly within the browser (no logins, all local processing):
https://arcade.pirillo.com/fontcrafter.html
Having tested it extensively on my own manuscript, I can definitely say that it works. ;) Download the OTF and/or TTF when done!
Every time you click this link, it will send you to a random Web 1.0 website
I just spent the last 24 hours building... a free tool to create your very own handwriting font quickly within the browser (no logins, all local processing):
https://arcade.pirillo.com/fontcrafter.html
Having tested it extensively on my own manuscript, I can definitely say that it works. ;) Download the OTF and/or TTF when done!
I just spent the last 24 hours building... a free tool to create your very own handwriting font quickly within the browser (no logins, all local processing):
https://arcade.pirillo.com/fontcrafter.html
Having tested it extensively on my own manuscript, I can definitely say that it works. ;) Download the OTF and/or TTF when done!
I just spent the last 24 hours building... a free tool to create your very own handwriting font quickly within the browser (no logins, all local processing):
https://arcade.pirillo.com/fontcrafter.html
Having tested it extensively on my own manuscript, I can definitely say that it works. ;) Download the OTF and/or TTF when done!
Google, a company that built its fortune by making it easy for people to find web pages, is now making a larger fortune by preventing people from finding web pages.
https://futurism.com/artificial-intelligence/google-ai-overviews-media
futurism.com
Google's AI overviews have eviscerated the media landscape, with some top publications losing up to 97 percent of their web traffic.
Every time you click this link, it will send you to a random Web 1.0 website
⚙️ New CSS Generator!
Use the new shape() function and create a lot of fancy frames (Squiggly, Ragged, Wavy, Torn, etc.). Play with the settings and get the code in no time!
https://css-generators.com/fancy-frame/
It's responsive and works with any elements, including images.
Show me your best frame 👇
I just saw the dumbest thing ever. A company has it.com. They are selling subdomains on it.com as if it's worth anything. WTAF? Come on people. With the amount of gTLDs exploding, wtf would I want a subdomain at it.com? Seriously? I don't get the play. Ugh, people will try anything, won't they.
🔹 Session 7 May 1: Language, page titles, frames & iFrames
🔹 Session 8 May 15: Sensory contrast & tables
🔹 Session 9 May 29: CSS positioning, audio‑only & video‑only animations
🔹 Session 10 June 12: Synchronized media
🔹 Session 11 June 26: Resizable text, multiple ways & parsing
🔹 Session 12 (final session) July 10: Alternate versions, non‑interference, reporting & Q&A
#accessibility #a11y #web #Testing #Blind
curriculum
🔹 Session 1 February 6: Section 508 basics & testing tools
🔹 Session 2 March 6: Auto‑playing, auto‑updating & flashing content
🔹 Session 3 March 12 (attention: Thursday 6 pm instead of Friday 4pm): Keyboard access & focus management
🔹 Session 4 March 20: Forms & validation
🔹 Session 5 April 3: Links, images & adjustable time limits
🔹 Session 6 April 17: Repetitive content & structure
#accessibility #a11y #blind #web
This is sad 😢
UPDATE (2026-03-02): This toot has gotten a lot more attention than what I would ever anticipate. Some clarifications are needed. A follow up is here: https://infosec.exchange/@dazo/116158898983233133
This is sad 😢
UPDATE (2026-03-02): This toot has gotten a lot more attention than what I would ever anticipate. Some clarifications are needed. A follow up is here: https://infosec.exchange/@dazo/116158898983233133
#Mozilla has lost their ground and is now in a free fall into a sinkhole. I doubt they'll ever get out if this again unless they do a 180-turn within the coming days. Mozilla has lost a lot of trust and credibility over the last couple of years. This accelerates that distrust even more.
https://blog.mozilla.org/en/firefox/update-on-terms-of-use/
It looks promising, until you hit the last paragraph (my highlight)
In order to make Firefox commercially viable, there are a number of places where we collect and share some data with our partners, including our optional ads on New Tab and providing sponsored suggestions in the search bar. We set all of this out in our privacy notice. Whenever we share data with our partners, we put a lot of work into making sure that the data that we share is stripped of potentially identifying information, or shared only in the aggregate, or is put through our privacy preserving technologies (like OHTTP).
In my book, that's indirectly selling data.
Goodbye, #Firefox.
blog.mozilla.org
On Wednesday we shared that we’re introducing a new terms of use (TOU) and privacy notice for Firefox. Since then, we’ve been listening to some of our
This is sad 😢
UPDATE (2026-03-02): This toot has gotten a lot more attention than what I would ever anticipate. Some clarifications are needed. A follow up is here: https://infosec.exchange/@dazo/116158898983233133
I missed this but it's brilliant :
« We Need To Rewild The Internet - The internet has become an extractive and fragile monoculture. But we can revitalize it using lessons learned by ecologists. » by @mariafarrell & @robin Berjon
« Our online spaces are not ecosystems, though tech firms love that word. They’re plantations; highly concentrated and controlled environments … that madden the creatures trapped within. »
noemamag.com
The internet has become an extractive and fragile monoculture. But we can revitalize it using lessons learned by ecologists.
Attention Media ≠ Social Networks: https://susam.net/attention-media-vs-social-networks.html
Attention Media ≠ Social Networks: https://susam.net/attention-media-vs-social-networks.html
Attention Media ≠ Social Networks: https://susam.net/attention-media-vs-social-networks.html
Bad Bot Problem
Following a report on the situation with Social Media and bots, Lewis Stuart of University of Nottingham is inspired to see just how easy it is to fire up his own botnet and puts them to work on a fake social media site: 'scroll hole.'
📺 https://www.youtube.com/watch?v=AjQNDCYL5Rg
#socialmedia #botproblems #aislop #web #botnet #internet #youtube #video #yt #bot #ai #badbot #badbots #fake #social #fakesocialists #network
youtube.com
Following a report on the situation with Social Media and bots, Lewis Stuart of University of Nottingham is inspired to see just how easy it is to fire up hi...
Bad Bot Problem
Following a report on the situation with Social Media and bots, Lewis Stuart of University of Nottingham is inspired to see just how easy it is to fire up his own botnet and puts them to work on a fake social media site: 'scroll hole.'
📺 https://www.youtube.com/watch?v=AjQNDCYL5Rg
#socialmedia #botproblems #aislop #web #botnet #internet #youtube #video #yt #bot #ai #badbot #badbots #fake #social #fakesocialists #network
youtube.com
Following a report on the situation with Social Media and bots, Lewis Stuart of University of Nottingham is inspired to see just how easy it is to fire up hi...
Internationalise The Fediverse via @hongminhee https://lobste.rs/s/gkv4xd #distributed #web
https://shkspr.mobi/blog/2024/02/internationalise-the-fediverse/
shkspr.mobi
We live in the future now. It is OK to use Unicode everywhere. It seems bizarre to me that modern Internet services sometimes "forget" that there's a world outside the Anglosphere. Some people have the temerity to speak foreign languages! And some of those languages have accents on their letters!! Even worse, some don't use English letters at all!!! A decade ago, I was miffed that GitHub only…
Using the Browser’s <canvas> for Data Compression
When building static websites and Single-Page Applications (SPAs), we sometimes need functionality in JavaScript front ends—such as compression—that is usually handled on the back end instead. […]
🔄 https://jstrieb.github.io/posts/canvas-compress/
#browser #webdev #compression #data #javascript #js #datacompression #web #webfrontend #frontend #staticsite #html #canvas #singlepage #singlepageapps
jstrieb.github.io
Old browsers don’t have JavaScript compression APIs, so we store data in pixel color channels and export to PNG to compress data.
I missed this but it's brilliant :
« We Need To Rewild The Internet - The internet has become an extractive and fragile monoculture. But we can revitalize it using lessons learned by ecologists. » by @mariafarrell & @robin Berjon
« Our online spaces are not ecosystems, though tech firms love that word. They’re plantations; highly concentrated and controlled environments … that madden the creatures trapped within. »
noemamag.com
The internet has become an extractive and fragile monoculture. But we can revitalize it using lessons learned by ecologists.
I missed this but it's brilliant :
« We Need To Rewild The Internet - The internet has become an extractive and fragile monoculture. But we can revitalize it using lessons learned by ecologists. » by @mariafarrell & @robin Berjon
« Our online spaces are not ecosystems, though tech firms love that word. They’re plantations; highly concentrated and controlled environments … that madden the creatures trapped within. »
noemamag.com
The internet has become an extractive and fragile monoculture. But we can revitalize it using lessons learned by ecologists.
Why #DMCA is bad for #web, specially #IndieWeb.
I had a covid19 stories archive online running since 2020. I got the DMCA take down today. I have it offline currently.
What's interesting is the legal agency cant act on behalf of Network18 as the contract has expired. This is from their authorization letter.
``` This letter of authorization granted to Aiplex Software Private Limited having their registered office at N Cube Centre, # 91A 3rd Floor, Ideal Homes Circle, Next to Nimishambha Temple, Rajarajeshwari Nagar (“Aiplex”) the right and authority on its behalf to take all necessary remedial legal actions and protect the trademark/word mark, impersonation/fake accounts and legal interests of Network 18 for the mentioned Channels which includes removal of fake accounts, trademark and wordmark violations etc., operating on your network, platform or website. Please ensure that immediate action is taken in response to any and all legal notices reported by Aiplex on behalf of Network 18. Such authorization will be valid for a period of One year effective from 51 August, 2024 to 4% August 2025, unless terminated by Network 18 Media & Investments Limited ```
https://codeberg.org/thejeshgn/covid19-stories-archive-takedown-notice
codeberg.org
* I had a covid19 stories archive online running since 2020. I got the DMCA take down today. I have it offline currently. * Whats interesting is the legal agency cant act on behalf of Network18 as the contract has expired. ``` This letter of authorization granted to Aiplex Software Privat...
Why #DMCA is bad for #web, specially #IndieWeb.
I had a covid19 stories archive online running since 2020. I got the DMCA take down today. I have it offline currently.
What's interesting is the legal agency cant act on behalf of Network18 as the contract has expired. This is from their authorization letter.
``` This letter of authorization granted to Aiplex Software Private Limited having their registered office at N Cube Centre, # 91A 3rd Floor, Ideal Homes Circle, Next to Nimishambha Temple, Rajarajeshwari Nagar (“Aiplex”) the right and authority on its behalf to take all necessary remedial legal actions and protect the trademark/word mark, impersonation/fake accounts and legal interests of Network 18 for the mentioned Channels which includes removal of fake accounts, trademark and wordmark violations etc., operating on your network, platform or website. Please ensure that immediate action is taken in response to any and all legal notices reported by Aiplex on behalf of Network 18. Such authorization will be valid for a period of One year effective from 51 August, 2024 to 4% August 2025, unless terminated by Network 18 Media & Investments Limited ```
https://codeberg.org/thejeshgn/covid19-stories-archive-takedown-notice
codeberg.org
* I had a covid19 stories archive online running since 2020. I got the DMCA take down today. I have it offline currently. * Whats interesting is the legal agency cant act on behalf of Network18 as the contract has expired. ``` This letter of authorization granted to Aiplex Software Privat...
plz boost and comment
RSS feeds:
On a personal / music / artist blog with an RSS feed containing full blog posts.
I prefer that the feed includes:
plz boost and comment
RSS feeds:
On a personal / music / artist blog with an RSS feed containing full blog posts.
I prefer that the feed includes:
heavens, the #web has become starkly unusable without umatrix.
heavens, the #web has become starkly unusable without umatrix.
🦫 alert!
We need to rewild the Web. Doing my part with a @servo based user agent in https://tangled.org/me.webbeef.org/browser.html/
tangled.org
Rewild Your Web
#PeerWeb - #Decentralized Website #Hosting | #web #p2p https://peerweb.lol/
peerweb.lol
PeerWeb is a revolutionary way to host and share websites using WebTorrent technology. Instead of relying on centralized servers, websites are distributed across a peer-to-peer network, making them censorship-resistant and always available. 🌍✨
🦫 alert!
We need to rewild the Web. Doing my part with a @servo based user agent in https://tangled.org/me.webbeef.org/browser.html/
tangled.org
Rewild Your Web
Every person joining the fediverse is a digital hero.
You may think it's a small thing. Yes, it's small thing but also a big step to make Internet better and people-first.
Made by the people for the people.
Oh, and also made for cats, dogs, capybaras and other puppies.
So, enjoy, encourage friends to join and let's make it a nice, inclusive and cozy space for everyone.
#fediverse #internet #SocialWeb #web #SocialMedia #Vebinet #Mastodon #Pixelfed #Loops #PeopleFirst
Listen to an album with me here:
http://konigsradio.rahim.li (sorry for http, will fix after fosdem)
Joan Chamorro presenta Rita Payés
Every person joining the fediverse is a digital hero.
You may think it's a small thing. Yes, it's small thing but also a big step to make Internet better and people-first.
Made by the people for the people.
Oh, and also made for cats, dogs, capybaras and other puppies.
So, enjoy, encourage friends to join and let's make it a nice, inclusive and cozy space for everyone.
#fediverse #internet #SocialWeb #web #SocialMedia #Vebinet #Mastodon #Pixelfed #Loops #PeopleFirst
Listen to an album with me here:
http://konigsradio.rahim.li (sorry for http, will fix after fosdem)
"Poison Kiss" by The Last Goodnight
This is their one and only album before the band dismantled. But it was a pop radio hit in 2007, "Pictures of You" song being the most listened one. Starting the stream in 2 minutes :)
Fuck AI with #Anubis:
Web AI Firewall Utility that weighs the soul of your connection using one or more challenges protecting upstream resources from bots.
Designed to protect the small internet from AI companies endless requests, Anubis is lightweight so ***everyone*** can afford to protect the communities closest to them.
Fuck AI
https://lock.cmpxchg8b.com/anubis.html
#fuckAI #selfHosted #fediverse #web #webDev #homeLab #security #ai #cyberSecurity #webDevelopment #networking #foss #github #selfHosting
Fuck AI with #Anubis:
Web AI Firewall Utility that weighs the soul of your connection using one or more challenges protecting upstream resources from bots.
Designed to protect the small internet from AI companies endless requests, Anubis is lightweight so ***everyone*** can afford to protect the communities closest to them.
Fuck AI
https://lock.cmpxchg8b.com/anubis.html
#fuckAI #selfHosted #fediverse #web #webDev #homeLab #security #ai #cyberSecurity #webDevelopment #networking #foss #github #selfHosting
I was lucky to be a privileged tester of @codepen 2.0, and now they have released the Private Beta.
It's finally time to unleash some cool "View Transition" demos because with the 2.0 version, we can have many pages in one pen 👀
Kudos to @chriscoyier and the entire team!
Pour faciliter la prise de RDV, j'aimerais intégrer mon calendrier pro (publié en calDav) sur mon site web.
Existe-t-il une solution simple pour le faire sans avoir recours à Google ?
Pour faciliter la prise de RDV, j'aimerais intégrer mon calendrier pro (publié en calDav) sur mon site web.
Existe-t-il une solution simple pour le faire sans avoir recours à Google ?
@feb So viel finanzielle Kraft und Linkedin-Vernetzung (meint: Verbindungen zu EntscheiderInnen) hätte manches OpenSource-Projekt auch gerne (unseres auch). Aber wenn grundlegende und strategische Entscheidungen nicht richtig gefällt werden, dann lässt sich das auch mit Beziehungen und Geld nicht wettmachen.
Eine neues Netzwerk muss zwingend folgende Kriterien erfüllen:
- dezentrale Struktur (SelfhosterInnen nehmen diskriminierungsfrei am gesamten Netzwerk teil),
- baut auf W3C-Standrads auf (Web, ActivityPub etc., jede Veröffentlichung bekommt eine Web-URL),
- Durchlässigkeit und Konnektivität zu anderen Netzwerken baut Tendenz zum Walled Garden vor,
- Private Chats sind anerkannten OpenSource-Lösungen verschlüsselt,
- ist nachweisbar werbe- und trackingfrei (realpolitisch: zumindest gegen kleine Gebühr).
Etwas vergessen?
Temporal is out!
It's about time (literally).
Time to delete some abhorrent regex.
piccalil.li
Temporal is the Date system we always wanted in JavaScript. It's extremely close to being available so Mat Marquis thought it would be a good idea to explain exactly what is better about this new JavaScript date system.
One last time for old times sake. Collab with @olivia yielded 15/28
jsdate.wtf
How well do you know JavaScript's Date class?
Temporal is out!
It's about time (literally).
Time to delete some abhorrent regex.
piccalil.li
Temporal is the Date system we always wanted in JavaScript. It's extremely close to being available so Mat Marquis thought it would be a good idea to explain exactly what is better about this new JavaScript date system.
One last time for old times sake. Collab with @olivia yielded 15/28
jsdate.wtf
How well do you know JavaScript's Date class?
Temporal is out!
It's about time (literally).
Time to delete some abhorrent regex.
piccalil.li
Temporal is the Date system we always wanted in JavaScript. It's extremely close to being available so Mat Marquis thought it would be a good idea to explain exactly what is better about this new JavaScript date system.
Temporal is out!
It's about time (literally).
Time to delete some abhorrent regex.
piccalil.li
Temporal is the Date system we always wanted in JavaScript. It's extremely close to being available so Mat Marquis thought it would be a good idea to explain exactly what is better about this new JavaScript date system.
Drupal turns 25 today. A quarter of a century. I captured 25 lessons from the journey. https://dri.es/25-years-of-drupal-what-i-have-learned #foss #opensource #web
dri.es
Dries is the Founder and Project Lead of Drupal and the Co-founder and Executive Chair of Acquia.
Drupal turns 25 today. A quarter of a century. I captured 25 lessons from the journey. https://dri.es/25-years-of-drupal-what-i-have-learned #foss #opensource #web
dri.es
Dries is the Founder and Project Lead of Drupal and the Co-founder and Executive Chair of Acquia.
‚Snowflake ist eine für den Tor Browser verfügbare austauschbare Übertragungsart, mit der sich Internetzensur umgehen lässt. Wie eine Tor-Brücke kann ein Benutzer auf das offene Internet zugreifen, wenn selbst reguläre Tor-Verbindungen zensiert werden. Die Verwendung von Snowflake ist so einfach wie der Wechsel zu einer neuen Brücken-Konfiguration im Tor-Browser.‘
https://support.torproject.org/de/anti-censorship/what-is-snowflake/
Starte die Nutzung von #Snowflake jetzt:
--> https://snowflake.torproject.org/de/
snowflake.torproject.org
Variable aspect ratio cards with conic gradients meeting along the diagonal.
First coded this when we didn't have inverse trigonometric functions in #CSS - can you figure out how on your own?
@csstricks post https://css-tricks.com/variable-aspect-ratio-card-with-conic-gradients-meeting-along-the-diagonal/
@codepen demo https://codepen.io/thebabydino/pen/XWpyowX
#code #CSSMaths #trigonometry #Maths #cssGradient #conicGradient #coding #web #dev #webDev #webDevelopment #frontend

Animated GIF. Shows a grid of cards with color backgrounds made from conic gradients. The gradients appear like stripes that extend from opposite corners of the card. Each card reads Hello Gorgeous in a fancy script font. We have a slider that allows us to change the aspect ratio, but while doing so, the conic gradients at the two opposing corners still meet along the diagonal.
Variable aspect ratio cards with conic gradients meeting along the diagonal.
First coded this when we didn't have inverse trigonometric functions in #CSS - can you figure out how on your own?
@csstricks post https://css-tricks.com/variable-aspect-ratio-card-with-conic-gradients-meeting-along-the-diagonal/
@codepen demo https://codepen.io/thebabydino/pen/XWpyowX
#code #CSSMaths #trigonometry #Maths #cssGradient #conicGradient #coding #web #dev #webDev #webDevelopment #frontend

Animated GIF. Shows a grid of cards with color backgrounds made from conic gradients. The gradients appear like stripes that extend from opposite corners of the card. Each card reads Hello Gorgeous in a fancy script font. We have a slider that allows us to change the aspect ratio, but while doing so, the conic gradients at the two opposing corners still meet along the diagonal.
🎷🦣 Introducing Mastoshare — universal links for the Fediverse.
Paste any Mastodon post, profile, or text → get a link that opens on anyone's home instance. No more copy-paste-search!
✓ No tracking
✓ EU hosted
✓ Free & open source
Available on https://mastoshare.link
#mastodon #fediverse #opensource #builtinpublic #web #webdev #frontend
🎷🦣 Introducing Mastoshare — universal links for the Fediverse.
Paste any Mastodon post, profile, or text → get a link that opens on anyone's home instance. No more copy-paste-search!
✓ No tracking
✓ EU hosted
✓ Free & open source
Available on https://mastoshare.link
#mastodon #fediverse #opensource #builtinpublic #web #webdev #frontend
Which browser is your "daily driver" in 2026?
#linux #fedora #askfedi #ubuntu #debian #security #infosec #tech #technology #cybersecurity #firefox #mozilla #chrome #google #edge #microsoft #manjaro #gameDev #devops #web #webdev #brave #vivaldi #gnome #kde #opensource #privacy #software #foss
Which browser is your "daily driver" in 2026?
#linux #fedora #askfedi #ubuntu #debian #security #infosec #tech #technology #cybersecurity #firefox #mozilla #chrome #google #edge #microsoft #manjaro #gameDev #devops #web #webdev #brave #vivaldi #gnome #kde #opensource #privacy #software #foss
I successfully installed and deployed my very first Mastodon server that uses Docker instead of other methods! Docker is well known for containerisation and sustainability. 😄👈👉 Have a nice day!
#mastodon #selfhosting #docker #fediverse #opensource #technology #servers #sysadmin #linux #decentralization #internet #web #community #opensourcecommunity
Wake up, wake up, wake up!
If you're a Cheetah+ supporter on Ko-fi or Patreon, then first of all thank you 🙏 and second, I've just published a massive post about an improved technique for flexible irregular shapes.
❇️ https://ko-fi.com/post/New-year-new-technique-S6S21RHL27
❇️ https://www.patreon.com/posts/new-year-new-147448951
#CSS #SVG #filter #cssGrid #cssLayout #cssSubgrid #containerQueryUnits #code #container #svgFilter #coding #frontend #web #dev #webDev #webDevelopment

A square image with cutouts depending on the dimensions of corner elements, dimensions that in turn depend on how the text in those corner elements reflows at different viewports.

Stepped shape with rounded corners on the right, step height depending on the height of the elements on the left, whose height is given by their content and how it wraps at different viewports.

Irregular shaped image with both convex & concave roundings. Shape depends on the dimensions and aspect ratio of other elements, how they scale/ wrap as the viewport changes.

Three cards wrap around buttons of different sizes in the bottom right corner. All corners of the card shapes, whether convex or concave, are rounded.
Wake up, wake up, wake up!
If you're a Cheetah+ supporter on Ko-fi or Patreon, then first of all thank you 🙏 and second, I've just published a massive post about an improved technique for flexible irregular shapes.
❇️ https://ko-fi.com/post/New-year-new-technique-S6S21RHL27
❇️ https://www.patreon.com/posts/new-year-new-147448951
#CSS #SVG #filter #cssGrid #cssLayout #cssSubgrid #containerQueryUnits #code #container #svgFilter #coding #frontend #web #dev #webDev #webDevelopment

A square image with cutouts depending on the dimensions of corner elements, dimensions that in turn depend on how the text in those corner elements reflows at different viewports.

Stepped shape with rounded corners on the right, step height depending on the height of the elements on the left, whose height is given by their content and how it wraps at different viewports.

Irregular shaped image with both convex & concave roundings. Shape depends on the dimensions and aspect ratio of other elements, how they scale/ wrap as the viewport changes.

Three cards wrap around buttons of different sizes in the bottom right corner. All corners of the card shapes, whether convex or concave, are rounded.
Pure, minimal #CSS responsive hex #grid with no breakpoints 🎇
Live on @codepen https://codepen.io/thebabydino/pen/QwWQqeR
#Maths #cssGrid #cssLayout #cssMaths #web #dev #webDev #webDevelopment #code #coding #frontend
Created a small scrobbler for my website!
It's a small #Python script that'll take the yt URL as a command line arg, fetch its metadata and thumbnail, use Pillow to extract the 3 most dominant colors, and emit a #HTML fragment that I can then paste into my log.
Code - https://github.com/mnvr/youtube-colors
In action - https://mnvr.in/2026-a#01-03-c
"A website to destroy all websites: How to win the War for the Soul of the Internet. and build the #Web We Want."
An inspiring article to lift our spirit, by https://front-end.social/@henry
https://henry.codes/writing/a-website-to-destroy-all-websites/
henry.codes
How to win the war for the soul of the internet, and build the Web We Want.
"A website to destroy all websites: How to win the War for the Soul of the Internet. and build the #Web We Want."
An inspiring article to lift our spirit, by https://front-end.social/@henry
https://henry.codes/writing/a-website-to-destroy-all-websites/
henry.codes
How to win the war for the soul of the internet, and build the Web We Want.
🎷🦣 Introducing Mastoshare — universal links for the Fediverse.
Paste any Mastodon post, profile, or text → get a link that opens on anyone's home instance. No more copy-paste-search!
✓ No tracking
✓ EU hosted
✓ Free & open source
Available on https://mastoshare.link
#mastodon #fediverse #opensource #builtinpublic #web #webdev #frontend
BTW, in the #Dillo the article looks pretty good, lol
I was searching for some information about how to setup HTTPS inside the local network, with internal DNS server, so the certbot and Letsencrypt weren't help, since they are don't have access to this network. And I found this gem, see screenshots.
L. M. A. O. :-DDDDDD
How pathetic. A website proudly named «"Software Engineering Standard"» which has the most shitty layout I saw — enormously big white, unused space on the both sides of tiny column of actual text. And the things become worsen, if I open Sideberry, so the active width of browser window shrinks 🤡 🤡 🤡
But … looking to the state of IT now — maybe it is not lying and this abomination is definitely an engineering standard now?

Website with black header and a thin column of text in the center, while there are a lot of wasted unused space left and right on it. Header proudly states "Software Engineering Standard".

Website with black header and a thin column of text in the center, while there are a lot of wasted unused space left and right on it. Header proudly states "Software Engineering Standard". The Sideberry panel is opened, so the column of text is extremely thin.
🎷🦣 Introducing Mastoshare — universal links for the Fediverse.
Paste any Mastodon post, profile, or text → get a link that opens on anyone's home instance. No more copy-paste-search!
✓ No tracking
✓ EU hosted
✓ Free & open source
Available on https://mastoshare.link
#mastodon #fediverse #opensource #builtinpublic #web #webdev #frontend
Nilch ─ A not-for-profit search engine with no ads, no AI, and supporting all DuckDuckGo bangs…
#search #internet #web #WebDev #tools #software #tech #technology #tip #tips #FediTips #MastoTips #free
nilch.org
I'll be hosting these 3 sessions at this years #39c3 🚀
All are connected to open networks and social #sovereignty.
We will speak about 🇪🇺 #advocacy for #social #networks based on #open #protocols like #ActivityPub or #ATproto
Also about our 4 demands for #opennetworks ✊ #EDIC
Join us: @cbase #Fediverse Assembly ✨
27.12. #Advocacy for the #Social #Web https://events.ccc.de/congress/2025/hub/de/event/detail/advocacy-for-the-social-web
28.12. Meet-up Alliance @offene_netzwerke
https://events.ccc.de/congress/2025/hub/de/event/detail/meet-up-bundnis-offene-netzwerke-meet-up-alliance-
29.12. #Fediday26
https://events.ccc.de/congress/2025/hub/de/event/detail/fediday-2026-ruckblicke-und-ausblicke-fediday-2026
I'll be hosting these 3 sessions at this years #39c3 🚀
All are connected to open networks and social #sovereignty.
We will speak about 🇪🇺 #advocacy for #social #networks based on #open #protocols like #ActivityPub or #ATproto
Also about our 4 demands for #opennetworks ✊ #EDIC
Join us: @cbase #Fediverse Assembly ✨
27.12. #Advocacy for the #Social #Web https://events.ccc.de/congress/2025/hub/de/event/detail/advocacy-for-the-social-web
28.12. Meet-up Alliance @offene_netzwerke
https://events.ccc.de/congress/2025/hub/de/event/detail/meet-up-bundnis-offene-netzwerke-meet-up-alliance-
29.12. #Fediday26
https://events.ccc.de/congress/2025/hub/de/event/detail/fediday-2026-ruckblicke-und-ausblicke-fediday-2026
Drop what you're doing and listen to @masinter Larry Masinter talk about computing history and lore. He tells first hand stories on the early web, Gopher, Hypertext Coffee Pot Control Protocol, mailto:, and a whole lot more including Interlisp.
https://netstack.fm/#episode-17
@Jayhoffmann may be interested.
netstack.fm
Interviews, monologues, and deep dives into Rust and modern networking systems.
Episode 17 of the Netstack.FM podcast features an interview with @masinter Larry Masinter on Interlisp and the Medley Interlisp project, the Xerox PARC environment, the early history of the web, standards and protocols, and more.
https://netstack.fm/#episode-17
youtube.com
episode 17 — Early Web History and Interlisp with Larry Masinter.We sit down with internet pioneer and longtime IETF contributor Larry Masinter to revisit th...
Split text with blended half shadow on @codepen https://codepen.io/thebabydino/pen/LYvdBQm?editors=1100
No text duplication whatsoever, no images other than #CSS gradients, no funky fonts* - all done with #SVG #filter magic! 🪄✨
*font used here is https://fonts.google.com/specimen/Rubik+Mono+One - you can see the effect isn't baked into it
#svgFilter #cssGradient #code #coding #web #dev #webDev #webDevelopment #textEffect #textEffects #frontend

Demo screenshot. The text "success" in all caps with a diagonal half split across its face, the bottom right part having an aqua background in addition to being hashed like the top left part. The bottom right part also has a fuchsia drop shadow that is blended with it. The fine print at the bottom says, in a much smaller cursive font with less contrast: "wake up early, work hard and never give up, your dreams can come true... if you're born rich!"
Build your own RSS daily digest using GitHub Actions/Pages in 5 minutes https://lobste.rs/s/fy1dlq #go #web
https://github.com/piqoni/go-digest
github.com
Matcha Daily Digest for the Go Programming Languages - piqoni/go-digest
polyproto: A refreshingly simple decentralised, federated protocol https://lobste.rs/s/xzxetz #networking #web
https://polyproto.org/
polyproto.org
The polyproto federation protocol
Felt like writing a more #UX focused post earlier tonight:
"Hyperlinks Should Have Context"
btxx.org
Felt like writing a more #UX focused post earlier tonight:
"Hyperlinks Should Have Context"
btxx.org
Vanhan kansan ihmisenä luen mielelläni veppisivuja tietokoneella niin, että vieritän ruudullisen kerrallaan välilyöntinäppäimellä. Siksi minua risovat sivujen ylä- ja alareunan kelluvat elementit, jotka aina peittävät osan tekstistä niin, että joutuu peruuttamaan pari riviä.
En tiedä, miten Librewolf teknisesti tekee sen, mutta sillä ruutu kerrallaan vierittäminen onnistuu paljon useammin kuin muilla selaimilla. Ehkä se poistaa näkyvistä niin paljon roskaa, että sisältö näkyy paremmin. Vai onko kysymys jostain muusta CSS- tai HTML-jutusta.
Joka tapauksessa olen sitä mieltä, ettei veppisivuja saa tehdä pelkästään kosketusnäyttöjä tai hipaisuhiiriä ajatellen.
Fifty problems with standard web APIs in 2025 via @robey https://lobste.rs/s/jm0sdf #games #web
https://zerotrickpony.com/articles/browser-bugs/
zerotrickpony.com
I've just seen an absolutely disgusting article. I said "seen", not "read", because I'm blind and I could not read it.
for your reference, here's the first beautiful sentence of this article:
"ffGE ARrj XRejm XAj bZgui cB R EXZgl, Rmi mjji jrjg-DmygjREDmI XgRDmDmI iRXR XZ DlkgZrj."
I don't know the technology behind this BS, but screen readers see it as scrambled text, kind of encrypted or something like this. I guess it's some font juggling (ChatGPT supposed it's gliph scrambling, where random Unicode values are mapped to random letters — I'll trust her in this because I really don't care about the tech behind it), but if you have a tiny little grain of empathy, never ever ever do this, for goodness sake.
https://tilschuenemann.de/projects/sacrificing-accessibility-for-not-getting-web-scraped
#Accessibility #Blindness #Empathy #BadPractices #Web #Text
tilschuenemann.de
social.labmonkeys.space
I've just seen an absolutely disgusting article. I said "seen", not "read", because I'm blind and I could not read it.
for your reference, here's the first beautiful sentence of this article:
"ffGE ARrj XRejm XAj bZgui cB R EXZgl, Rmi mjji jrjg-DmygjREDmI XgRDmDmI iRXR XZ DlkgZrj."
I don't know the technology behind this BS, but screen readers see it as scrambled text, kind of encrypted or something like this. I guess it's some font juggling (ChatGPT supposed it's gliph scrambling, where random Unicode values are mapped to random letters — I'll trust her in this because I really don't care about the tech behind it), but if you have a tiny little grain of empathy, never ever ever do this, for goodness sake.
https://tilschuenemann.de/projects/sacrificing-accessibility-for-not-getting-web-scraped
#Accessibility #Blindness #Empathy #BadPractices #Web #Text
tilschuenemann.de
Drop what you're doing and listen to @masinter Larry Masinter talk about computing history and lore. He tells first hand stories on the early web, Gopher, Hypertext Coffee Pot Control Protocol, mailto:, and a whole lot more including Interlisp.
https://netstack.fm/#episode-17
@Jayhoffmann may be interested.
netstack.fm
Interviews, monologues, and deep dives into Rust and modern networking systems.
Episode 17 of the Netstack.FM podcast features an interview with @masinter Larry Masinter on Interlisp and the Medley Interlisp project, the Xerox PARC environment, the early history of the web, standards and protocols, and more.
https://netstack.fm/#episode-17
youtube.com
episode 17 — Early Web History and Interlisp with Larry Masinter.We sit down with internet pioneer and longtime IETF contributor Larry Masinter to revisit th...
Episode 17 of the Netstack.FM podcast features an interview with @masinter Larry Masinter on Interlisp and the Medley Interlisp project, the Xerox PARC environment, the early history of the web, standards and protocols, and more.
https://netstack.fm/#episode-17
youtube.com
episode 17 — Early Web History and Interlisp with Larry Masinter.We sit down with internet pioneer and longtime IETF contributor Larry Masinter to revisit th...
2 DAYS LEFT! Help @bonfire hit their first #stretchgoal and let's keep #funding #open #web #development
https://www.indiegogo.com/en/projects/bonfire/community?refcode=uMxfxdtM7kaxrjwxZLShUA
#bonfire #fedi #fediverse #foss
2 DAYS LEFT! Help @bonfire hit their first #stretchgoal and let's keep #funding #open #web #development
https://www.indiegogo.com/en/projects/bonfire/community?refcode=uMxfxdtM7kaxrjwxZLShUA
#bonfire #fedi #fediverse #foss
The untold history of web development:
1990: HTML invented.
1994: CSS invented to fix HTML.
1995: JS invented to fix HTML/CSS.
2006: jQuery invented to fix JS.
2010: AngularJS invented to fix jQuery.
2013: React invented to fix AngularJS.
2014: Vue invented to fix React & Angular.
2016: Angular 2 invented to fix AngularJS & React.
2019: Svelte 3 invented to fix React, Angular, Vue.
2019: React hooks invented to fix React.
2020: Vue 3 invented to fix React hooks.
2020: Solid invented to fix React, Angular, Svelte, Vue.
2020: HTMX 1.0 invented to fix React, Angular, Svelte, Vue, Solid.
2021: React suspense invented to fix React, again.
2023: Svelte Runes invented to fix Svelte.
2024: jQuery still used on 75% of websites.
(By https://twitter.com/fireship_dev)
#Web #Development #HTML #CSS #JavaScript #React #ReactJS #JQuery #Svelte #Angular #AngularJS
The untold history of web development:
1990: HTML invented.
1994: CSS invented to fix HTML.
1995: JS invented to fix HTML/CSS.
2006: jQuery invented to fix JS.
2010: AngularJS invented to fix jQuery.
2013: React invented to fix AngularJS.
2014: Vue invented to fix React & Angular.
2016: Angular 2 invented to fix AngularJS & React.
2019: Svelte 3 invented to fix React, Angular, Vue.
2019: React hooks invented to fix React.
2020: Vue 3 invented to fix React hooks.
2020: Solid invented to fix React, Angular, Svelte, Vue.
2020: HTMX 1.0 invented to fix React, Angular, Svelte, Vue, Solid.
2021: React suspense invented to fix React, again.
2023: Svelte Runes invented to fix Svelte.
2024: jQuery still used on 75% of websites.
(By https://twitter.com/fireship_dev)
#Web #Development #HTML #CSS #JavaScript #React #ReactJS #JQuery #Svelte #Angular #AngularJS
social.retroedge.tech
social.retroedge.tech
The untold history of web development:
1990: HTML invented.
1994: CSS invented to fix HTML.
1995: JS invented to fix HTML/CSS.
2006: jQuery invented to fix JS.
2010: AngularJS invented to fix jQuery.
2013: React invented to fix AngularJS.
2014: Vue invented to fix React & Angular.
2016: Angular 2 invented to fix AngularJS & React.
2019: Svelte 3 invented to fix React, Angular, Vue.
2019: React hooks invented to fix React.
2020: Vue 3 invented to fix React hooks.
2020: Solid invented to fix React, Angular, Svelte, Vue.
2020: HTMX 1.0 invented to fix React, Angular, Svelte, Vue, Solid.
2021: React suspense invented to fix React, again.
2023: Svelte Runes invented to fix Svelte.
2024: jQuery still used on 75% of websites.
(By https://twitter.com/fireship_dev)
#Web #Development #HTML #CSS #JavaScript #React #ReactJS #JQuery #Svelte #Angular #AngularJS
At the November 2025 TPAC event, Roy Ran, W3C Principal Accessibility Specialist, presented: "Web & AI in W3C" explaining how W3C is engaging with AI, why AI matters for the web, and what AI-related standards already exist (like WebNN, WebGPU, and data/identity technologies). He highlighted ongoing work on responsible AI, announced the new Web & AI Interest Group, and mentioned plans for a future workshop on AI agents and browsers.
#w3cTPAC #Web&AI
https://www.youtube.com/watch?v=ACXhxBZuYl0
(Bernie Sanders.jpg)
I am once again asking people who run websites to have a dedicated "About" page that says what their website actually does in concise plain language without any marketing hype or long personal histories.
This is getting rarer and rarer, and it's often impossible to know if a website is a news site, personal blog, press release aggregator, charity initiative, commercial PR, AI slop or whatever.
It would take you just a few seconds to write and it would get you lots of potential links, follows and recommendations.
I would highly recommend any techbro (and any developer) to spend some time on slow, laggy or even cutting out internet. So just they can see how their always-online web apps plainly crash when unable to cope with a short offline time. Absolute tragic #UX, loss of data common!
#webdev #usability #accessibility #a11y #web
Il y a tout juste 30 ans, Netscape et Sun Microsystems annoncaient la disponibilité d'un nouveau langage pour le Web : Javascript. Je ne sais pas s'il faut s'en réjouir... #Web #Javascript https://arstechnica.com/gadgets/2025/12/in-1995-a-netscape-employee-wrote-a-hack-in-10-days-that-now-runs-the-internet/
arstechnica.com
Thirty years later, JavaScript is the glue that holds the interactive web together, warts and all.
He creado un cuento.
Sinópsis: "Una pequeña luciérnaga, Luzi, sueña con conocer a Luna, aunque estos deseos hayan sido rechazados por sus padres y compañeros debido al lugar donde se encuentra. Un día, cansada de esperar, se escabulle en un peligroso viaje para cumplir sus ideales y descubrir la verdad sobre aquel gran astro".
Enlace: https://yggdrasil.forestry.md/luzienaga/luzienaga/
#literaverso #jardín #jardindigital #digitalgarden #obsidian #web #literatura #cuento #luna #cuentoinfantil
Il y a tout juste 30 ans, Netscape et Sun Microsystems annoncaient la disponibilité d'un nouveau langage pour le Web : Javascript. Je ne sais pas s'il faut s'en réjouir... #Web #Javascript https://arstechnica.com/gadgets/2025/12/in-1995-a-netscape-employee-wrote-a-hack-in-10-days-that-now-runs-the-internet/
arstechnica.com
Thirty years later, JavaScript is the glue that holds the interactive web together, warts and all.
#EU and the #internet: one step forwards, one step backwards.
https://www.heise.de/en/opinion/The-Russmedia-ruling-of-the-ECJ-Towards-a-Cleannet-11102550.html
I wonder if identity checking requirements would become irrelevant if the #web was peer-to-peer, with individuals being publishers and data controllers at the same time.
heise.de
A change in liability privilege for online providers will lead to a “cleaner”, but also more rigid, monitored internet, says Joerg Heidrich.
#EU and the #internet: one step forwards, one step backwards.
https://www.heise.de/en/opinion/The-Russmedia-ruling-of-the-ECJ-Towards-a-Cleannet-11102550.html
I wonder if identity checking requirements would become irrelevant if the #web was peer-to-peer, with individuals being publishers and data controllers at the same time.
heise.de
A change in liability privilege for online providers will lead to a “cleaner”, but also more rigid, monitored internet, says Joerg Heidrich.
First 20 minutes of this video are a great introduction to WebAssembly, and why one should care
youtube.com
🤔 Is wasm just another hype bubble or is it about time to retire docker and kubernetes? 🤔 What all these words mean: WAT, WIT, WASI, WARG?.. 🤔 Why on Eart...
Curlie - The Collector of URLs
Some search engines for the web are also based on @Curlie, among other things. You can also enter your websites in this so that they can be found more easily when people search for keywords that relate to your pages.
#websearch #searchengine #collection #url #curlie #internet #webfind #find #webpage #web #followerfriday #website #keywords

curlie.org
Collector of URLs
"Maintain the versionless, feature-tested and backwards-compatible evolution story of the Web"
Love this phrasing from the WebAssembly docs. It's easy to forget how unique and decentralized the web actually is, and how entropy-defying gift we all have had. Seeing the wasm folks pay homage to the web is great!
Bun was bought by Anthropic. For #web devs, it's now:
#Node - OpenJS (non-profit)
vs
#Deno - Deno Land Inc (for-profit)
vs
#Bun - Anthropic (for-profit valued at $350 billion)
https://www.anthropic.com/news/anthropic-acquires-bun-as-claude-code-reaches-usd1b-milestone
anthropic.com
Anthropic is an AI safety and research company that's working to build reliable, interpretable, and steerable AI systems.
Did you know there is a book called "Mastodon For Dummies"?
It's part of the widely read and well known 'For Dummies' series.
This is the cover of the one I brought home from my local library.
Does your library have a copy? If not, maybe you can suggest a new acquisition! It's only 14.99 US, 17.99 CAN, and 11.99 UK.
#mastodon #MastodonHelp #library #fediverse #web #socialmedia
Did you know there is a book called "Mastodon For Dummies"?
It's part of the widely read and well known 'For Dummies' series.
This is the cover of the one I brought home from my local library.
Does your library have a copy? If not, maybe you can suggest a new acquisition! It's only 14.99 US, 17.99 CAN, and 11.99 UK.
#mastodon #MastodonHelp #library #fediverse #web #socialmedia
Paperless-ngx
Paperless-ngx is a community-supported open-source document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper.
🌱 https://docs.paperless-ngx.com
#opensource #alternative #paperless #api #lesspaperwork #evernote #documents #web #online #searchable #archive
docs.paperless-ngx.com
Paperless-ngx
Paperless-ngx is a community-supported open-source document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper.
🌱 https://docs.paperless-ngx.com
#opensource #alternative #paperless #api #lesspaperwork #evernote #documents #web #online #searchable #archive
docs.paperless-ngx.com
Hello Masto !
Pour mes enfants de 11 et 14 ans, je cherche des ressources pour les aider à mettre un pied dans l'univers du développement de jeux vidéos. Ils commencent à tourner en rond avec ce qu'ils ont sous la main, ils veulent passer à l'étape d'après :D
Contraintes :
- matériel standard, pas de CPU/GPU dernière génération
- Linux uniquement
- pas *trop* de lecture (les bouquins type Eyrolles, même junior, ce n'est pas pour mon fils)
- côté compétences graphiques on va dire que c'est le minimum du minimum :D
Les deux sont très à l'aise avec un ordi ou une tablette, ont l'habitude de faire du Scratch ou même des mods Minecraft pour mon fils, et sont à l'aise avec l'anglais écrit (et même oral pour mon fils).
J'ai déjà comme ressources en attente :
- https://godotengine.org/
- https://github.com/kitao/pyxel
- https://developer.mozilla.org/en-US/docs/Games/Tutorials
Je prends donc les idées, les recommandations, les tutos (y compris Youtube), etc.
Merci d'avance, et boosts appréciés !
developer.mozilla.org
This page contains multiple tutorial series that highlight different workflows for effectively creating different types of web games.
Hello Masto !
Pour mes enfants de 11 et 14 ans, je cherche des ressources pour les aider à mettre un pied dans l'univers du développement de jeux vidéos. Ils commencent à tourner en rond avec ce qu'ils ont sous la main, ils veulent passer à l'étape d'après :D
Contraintes :
- matériel standard, pas de CPU/GPU dernière génération
- Linux uniquement
- pas *trop* de lecture (les bouquins type Eyrolles, même junior, ce n'est pas pour mon fils)
- côté compétences graphiques on va dire que c'est le minimum du minimum :D
Les deux sont très à l'aise avec un ordi ou une tablette, ont l'habitude de faire du Scratch ou même des mods Minecraft pour mon fils, et sont à l'aise avec l'anglais écrit (et même oral pour mon fils).
J'ai déjà comme ressources en attente :
- https://godotengine.org/
- https://github.com/kitao/pyxel
- https://developer.mozilla.org/en-US/docs/Games/Tutorials
Je prends donc les idées, les recommandations, les tutos (y compris Youtube), etc.
Merci d'avance, et boosts appréciés !
developer.mozilla.org
This page contains multiple tutorial series that highlight different workflows for effectively creating different types of web games.
Hello Masto !
Pour mes enfants de 11 et 14 ans, je cherche des ressources pour les aider à mettre un pied dans l'univers du développement de jeux vidéos. Ils commencent à tourner en rond avec ce qu'ils ont sous la main, ils veulent passer à l'étape d'après :D
Contraintes :
- matériel standard, pas de CPU/GPU dernière génération
- Linux uniquement
- pas *trop* de lecture (les bouquins type Eyrolles, même junior, ce n'est pas pour mon fils)
- côté compétences graphiques on va dire que c'est le minimum du minimum :D
Les deux sont très à l'aise avec un ordi ou une tablette, ont l'habitude de faire du Scratch ou même des mods Minecraft pour mon fils, et sont à l'aise avec l'anglais écrit (et même oral pour mon fils).
J'ai déjà comme ressources en attente :
- https://godotengine.org/
- https://github.com/kitao/pyxel
- https://developer.mozilla.org/en-US/docs/Games/Tutorials
Je prends donc les idées, les recommandations, les tutos (y compris Youtube), etc.
Merci d'avance, et boosts appréciés !
developer.mozilla.org
This page contains multiple tutorial series that highlight different workflows for effectively creating different types of web games.
There is a moment, right after stacking your tabs, where the room goes quiet and you could swear your chair lifts a few centimetres. 🧘♂️
There is a moment, right after stacking your tabs, where the room goes quiet and you could swear your chair lifts a few centimetres. 🧘♂️
I am begging you, please don't split your heading into two separate `h2` elements with an `img` in between just to have the image in between your heading words.
This is what subgrid was made for!
#CSS #layout #cssLayout #code #coding #web #dev #webDev #webDevelopment

HTML: ``` <!-- ❌ DON'T DO THIS 🚫 --> <section> <h2>Classic</h2> <img src='classic-bar.png' alt=''/> <h2>Flavour</h2> </section> <!-- ✅ DO THIS ✅ --> <section> <h2> <span>Classic</span> <span>Flavour</span> </h2> <img src='classic-bar.png' alt='the classic chocolate bar'/> </section> ``` CSS: ``` section, h2 { display: grid } section { grid-template-rows: repeat(3, auto) } h2 { grid-area: 1/ 1/ span 3; grid-template-rows: subgrid; span:last-child { grid-row: 3 } } img { grid-area: 2/ 1 } ```
I am begging you, please don't split your heading into two separate `h2` elements with an `img` in between just to have the image in between your heading words.
This is what subgrid was made for!
#CSS #layout #cssLayout #code #coding #web #dev #webDev #webDevelopment

HTML: ``` <!-- ❌ DON'T DO THIS 🚫 --> <section> <h2>Classic</h2> <img src='classic-bar.png' alt=''/> <h2>Flavour</h2> </section> <!-- ✅ DO THIS ✅ --> <section> <h2> <span>Classic</span> <span>Flavour</span> </h2> <img src='classic-bar.png' alt='the classic chocolate bar'/> </section> ``` CSS: ``` section, h2 { display: grid } section { grid-template-rows: repeat(3, auto) } h2 { grid-area: 1/ 1/ span 3; grid-template-rows: subgrid; span:last-child { grid-row: 3 } } img { grid-area: 2/ 1 } ```
Is X down? Please postpone restoration as long as possible! 😆
toot.community
Cloudflare, X, More are down: https://www.cloudflarestatus.com/?t=1 Discussion: http://news.ycombinator.com/item?id=45963780
Cloudflare, X, More are down: https://www.cloudflarestatus.com/?t=1
Discussion: http://news.ycombinator.com/item?id=45963780

news.ycombinator.com
Is X down? Please postpone restoration as long as possible! 😆
toot.community
Cloudflare, X, More are down: https://www.cloudflarestatus.com/?t=1 Discussion: http://news.ycombinator.com/item?id=45963780
Cloudflare, X, More are down: https://www.cloudflarestatus.com/?t=1
Discussion: http://news.ycombinator.com/item?id=45963780

news.ycombinator.com
Blocking LLM crawlers without JavaScript - (owl.is)
https://www.owl.is/blogg/blocking-crawlers-without-javascript/
owl.is
Blocking LLM crawlers without JavaScript - (owl.is)
https://www.owl.is/blogg/blocking-crawlers-without-javascript/
owl.is
Threads displaying Fediverse content is a gateway for Meta to exploit our data. I refuse to be their free product. Admins must block Meta domains immediately to protect data sovereignty and fight digital injustice.
https://weblog.kalvin.my/threads-is-now-displaying-fediverse-contents-in-their-feed/
#fediverse #threads #meta #datasovereignty #decentralisation #exploitation #socialmedia #tech #community #privacy #injustice #technology #web #networking #autonomy #ethics #bigtech #future #internet #mastodon #activism #blockmeta #digital #rights #online
weblog.kalvin.my
Threads by Instagram, by Meta, now includes posts from across the Fediverse in the dedicated tab. Link to the information is here. Yeah, it's nice language that Meta said it's "easier" to see the posts from the Fediverse now. The language sounds like the... err... nice "gateway" to the Fediverse,
Vivaldi 7.7 has arrived! 🎨
✅ All your tabs, structured, anywhere you need them
✅ Unified Start Page layout
✅ Brand new performance controls
✅ Privacy Dashboard redesigned
✅ Refined Mail panel
More on the update: https://vivaldi.com/blog/vivaldi-on-desktop-7-7/
#Browser #Web #Vivaldi #Browsers #App #Linux #Windows #macOS
Vivaldi 7.7 has arrived! 🎨
✅ All your tabs, structured, anywhere you need them
✅ Unified Start Page layout
✅ Brand new performance controls
✅ Privacy Dashboard redesigned
✅ Refined Mail panel
More on the update: https://vivaldi.com/blog/vivaldi-on-desktop-7-7/
#Browser #Web #Vivaldi #Browsers #App #Linux #Windows #macOS
I wonder if there’s something that would allow me to make a website with some amount of interactivity without touching anything related to Javascript (or Typescript) or NPM? Preferably Python as I could leverage existing code that way. Or is the web doomed to be a JS swamp of mediocrity?
»Nach langer Vorbereitung: Mastodon kann jetzt lange geforderte "Quote Posts"
Als er @Mastodon gegründet hat, war Erfinder @Gargron gegen die Zitierfunktion. Später hat sich seine Meinung geändert und ein Update führt sie jetzt ein.«
Es gibt Menschen die dies kritisieren und andere die es befürworten. Ich muss es mir erst mal noch ansehen wie es umgesetzt ist nach dem Server Update.
#mastodon #update #quoteposts #zitat #fediverse #retoot #web #server #some
heise.de
Als er Mastodon gegründet hat, war Erfinder Eugen Rochko gegen die Zitierfunktion. Später hat sich seine Meinung geändert und ein Update führt sie jetzt ein.
If anyone is building stuff based on the accounts we have verified on Gaza Verified, you can now get a list of the Mastodon URLs of the verified accounts in JSON format at:
https://gaza-verified.org/people.json
For a human-readable list, just remove the .json:
https://gaza-verified.org/people
For more details on Gaza Verified, please see the main page:
💕
#Gaza #Palestine #GazaVerified #TechForPalestine #tech #web #dev #APIs #JSON #FreePalestine

gaza-verified.org
We’ve personally had video conversations on Signal with the people from Gaza whose Mastodon accounts on the fediverse are listed here and we verify that their accounts are genuine. – Joy & Aral Balkan
If anyone is building stuff based on the accounts we have verified on Gaza Verified, you can now get a list of the Mastodon URLs of the verified accounts in JSON format at:
https://gaza-verified.org/people.json
For a human-readable list, just remove the .json:
https://gaza-verified.org/people
For more details on Gaza Verified, please see the main page:
💕
#Gaza #Palestine #GazaVerified #TechForPalestine #tech #web #dev #APIs #JSON #FreePalestine

gaza-verified.org
We’ve personally had video conversations on Signal with the people from Gaza whose Mastodon accounts on the fediverse are listed here and we verify that their accounts are genuine. – Joy & Aral Balkan
we need a search engine where someone can publish a post like in #mastodon / #fediverse and other users can boost that article. And this will make the post more relevant if you search for it. So basically a human centered ranking system combined with a search engine. #web
Gooey reflowable text: a little Haloween demo on @codepen https://codepen.io/thebabydino/pen/yyeRNww
#SVG #filter #CSS #svgFilter #code #coding #web #dev #webDev #webDevelopment #frontend
🤖 AI browsers are NOT safe!
There is a thing called "prompt injection" and it works.¹
Funnily the thing that most see as a major issue with AI, the
crawling of the #web and one-way use of it's content, is exactly what makes their AI browsers unsafe.
If you place malicious #code in that very content, the AI scans it & then runs it² on your OS 🤯
This issue has been known to the #tech corps for years³, but they released their #AI browsers nonetheless 🤑
1/2
🤖 AI browsers are NOT safe!
There is a thing called "prompt injection" and it works.¹
Funnily the thing that most see as a major issue with AI, the
crawling of the #web and one-way use of it's content, is exactly what makes their AI browsers unsafe.
If you place malicious #code in that very content, the AI scans it & then runs it² on your OS 🤯
This issue has been known to the #tech corps for years³, but they released their #AI browsers nonetheless 🤑
1/2
✍️ New post – in reply to @adactio:
Echoes of Connection
#blogtober #web #indieweb #webmentions #websites
https://matthiasott.com/notes/echoes-of-connection
matthiasott.com
Matthias Ott is an independent user experience designer and web design engineer from Stuttgart, Germany. He also teaches Interface Prototyping at the Muthesius Academy of Fine Arts and Design.
✍️ New post – in reply to @adactio:
Echoes of Connection
#blogtober #web #indieweb #webmentions #websites
https://matthiasott.com/notes/echoes-of-connection
matthiasott.com
Matthias Ott is an independent user experience designer and web design engineer from Stuttgart, Germany. He also teaches Interface Prototyping at the Muthesius Academy of Fine Arts and Design.
I love the web. Earlier today I saw an emulated risc based linux distro running on the browser. (Lost the link unfortunately)
Later on, we were talking about morse code at dinner for some reason, and in 3 seconds I found this site that plays the morse code of a string.
https://lucassedberg.com/tools/morse?text=I+Love+the+web
So much cool stuff on the #web
lucassedberg.com
Translate text to Morse code and vice versa.
ChatGPT's Atlas: The Browser That's Anti-Web - Anil Dash
"OpenAI, the company behind ChatGPT, released their own browser called Atlas, and it actually is something new: the first browser that actively fights against the web. Let's talk about what that means, and what dangers there are from an anti-web browser made by an AI company — one that probably needs a warning label when you install it."
https://www.anildash.com/2025/10/22/atlas-anti-web-browser/
#ai #atlas #chatgpt #genai #openai #web

anildash.com
A blog about making culture. Since 1999.
https://shkspr.mobi/blog/2025/10/alpha-launch-well-known-avatar-feedback-wanted/
I've gotten sufficiently annoyed with a trivial problem that I'm preparing to write an IETF RFC. Yeah. That's how ticked off I am!
Every site that I sign up for asks me to upload an avatar to represent myself. Whenever I change my photo, I have to log in to a hundred sites and change it there0.
Perhaps they could all use Gravatar - but that's a centralised service1 and doesn't work with wildcard email addresses. Libravatar also relies on email addresses and requires implementers to set up new DNS entries.
So I'm proposing .well-known/avatar. Here's how it works (for now). I'd like your feedback before going further2.
I sign up to a service and use the email address whatever@shkspr.mobi.
The service looks up my avatar using a well-known path. For example, request https://shkspr.mobi/.well-known/avatar?resource=acct:whatever@shkspr.mobi and you'll get back this JSON:
JSON
{ "subject": "acct:whatever@shkspr.mobi", "links": [ { "rel": "http:\/\/webfinger.net\/rel\/avatar", "type": "image\/webp", "href": "https:\/\/shkspr.mobi\/.well-known\/avatar\/avatar-1024.webp", "sizes": "1024x1024" }, { "rel": "http:\/\/webfinger.net\/rel\/avatar", "type": "image\/jpeg", "href": "https:\/\/shkspr.mobi\/.well-known\/avatar\/avatar-512.jpg", "sizes": "512x512" } ]}
That's a slightly enhanced https://webfinger.net/rel/#avatar which adds a sizes parameter. The service can then pick the appropriate MIME and size.
Alternatively, you can request the same URl but with a header of Accept: image/gif and receive the default sized avatar in that specific format.
Try it by running:
Bash
curl -H "Accept: image/avif" https://shkspr.mobi/.well-known/avatar/ --output "test.avif"
You should receive an auto-converted version of my avatar.
Please add your thoughts to the comments box. Here's some feedback I've received so far.
Perhaps this is too complicated? What's wrong with just serving up an image when the URl is requested? That would make it easier for static sites.
What about a size parameter?
Will anyone actually use it?
What about hashing the email?
You've already given the service your email address, and your domain already knows your account name - so there's no privacy leak here. Obviously, a service shouldn't hotlink to your avatar image.
How about DNS?
I like it. Is there an argument that service / endpoint should be specifiable at the DNS level?As others in your comments pointed out, if your site is currently just static, some users might prefer to run an entirely separate dedicated avatar service.
Personally, I think that's a bit complicated, but I'm happy to be convinced.
I think the default should be to return an image.
If an accept of image/… is requested, the server should try to return an image in that format.
If an accept of application/json or similar is requested, the server should return a JSON document listing the available avatars.
I don't think a ?size= GET parameter is necessary; services can resize once they've downloaded, or use the JSON document to get the right size.
A limited amount of alt text could be added using the title attribute in the JSON.
Before I start writing up anything formal - I'd love your constructive criticism on this.
🆕 blog! “Alpha launch - .well-known/avatar - feedback wanted”
I've gotten sufficiently annoyed with a trivial problem that I'm preparing to write an IETF RFC. Yeah. That's how ticked off I am!
Every site that I sign up for asks me to upload an avatar to represent myself. Whenever I change my photo, I have to log in to a hundred sites and change it…
👀 Read more: https://shkspr.mobi/blog/2025/10/alpha-launch-well-known-avatar-feedback-wanted/
⸻
#IETF #ReDeCentralize #standards #web
shkspr.mobi
I've gotten sufficiently annoyed with a trivial problem that I'm preparing to write an IETF RFC. Yeah. That's how ticked off I am! Every site that I sign up for asks me to upload an avatar to represent myself. Whenever I change my photo, I have to log in to a hundred sites and change it there. Perhaps they could all use Gravatar - but that's a centralised service and doesn't work with wildcard…
https://shkspr.mobi/blog/2025/10/alpha-launch-well-known-avatar-feedback-wanted/
I've gotten sufficiently annoyed with a trivial problem that I'm preparing to write an IETF RFC. Yeah. That's how ticked off I am!
Every site that I sign up for asks me to upload an avatar to represent myself. Whenever I change my photo, I have to log in to a hundred sites and change it there0.
Perhaps they could all use Gravatar - but that's a centralised service1 and doesn't work with wildcard email addresses. Libravatar also relies on email addresses and requires implementers to set up new DNS entries.
So I'm proposing .well-known/avatar. Here's how it works (for now). I'd like your feedback before going further2.
I sign up to a service and use the email address whatever@shkspr.mobi.
The service looks up my avatar using a well-known path. For example, request https://shkspr.mobi/.well-known/avatar?resource=acct:whatever@shkspr.mobi and you'll get back this JSON:
JSON
{ "subject": "acct:whatever@shkspr.mobi", "links": [ { "rel": "http:\/\/webfinger.net\/rel\/avatar", "type": "image\/webp", "href": "https:\/\/shkspr.mobi\/.well-known\/avatar\/avatar-1024.webp", "sizes": "1024x1024" }, { "rel": "http:\/\/webfinger.net\/rel\/avatar", "type": "image\/jpeg", "href": "https:\/\/shkspr.mobi\/.well-known\/avatar\/avatar-512.jpg", "sizes": "512x512" } ]}
That's a slightly enhanced https://webfinger.net/rel/#avatar which adds a sizes parameter. The service can then pick the appropriate MIME and size.
Alternatively, you can request the same URl but with a header of Accept: image/gif and receive the default sized avatar in that specific format.
Try it by running:
Bash
curl -H "Accept: image/avif" https://shkspr.mobi/.well-known/avatar/ --output "test.avif"
You should receive an auto-converted version of my avatar.
Please add your thoughts to the comments box. Here's some feedback I've received so far.
Perhaps this is too complicated? What's wrong with just serving up an image when the URl is requested? That would make it easier for static sites.
What about a size parameter?
Will anyone actually use it?
What about hashing the email?
You've already given the service your email address, and your domain already knows your account name - so there's no privacy leak here. Obviously, a service shouldn't hotlink to your avatar image.
How about DNS?
I like it. Is there an argument that service / endpoint should be specifiable at the DNS level?As others in your comments pointed out, if your site is currently just static, some users might prefer to run an entirely separate dedicated avatar service.
Personally, I think that's a bit complicated, but I'm happy to be convinced.
I think the default should be to return an image.
If an accept of image/… is requested, the server should try to return an image in that format.
If an accept of application/json or similar is requested, the server should return a JSON document listing the available avatars.
I don't think a ?size= GET parameter is necessary; services can resize once they've downloaded, or use the JSON document to get the right size.
A limited amount of alt text could be added using the title attribute in the JSON.
Before I start writing up anything formal - I'd love your constructive criticism on this.
JUST ANNOUNCED: public pre-orders are now available for the autumn 2025 issue of #goodinternet ! magazines will begin being shipped next month!
https://goodinternetmagazine.com/pre-orders-now-available-for-autumn-2025-issue/
#indie #zine #zines #indieweb #personalwebsite #web #internet #enshittification #socialmedia #neocities #nekoweb #html #webdev #css #webdesign #website #blog #blogger #digitalart #opensource #tech #foss
goodinternetmagazine.com
It's officially time for our pre-orders, open to the public! Pre-ordering your copy helps us pay for our upfront printing costs, which can reach up to $700 a run or more. Your help, even pre-ordering a digital copy, allows us to pay for larger batches so more folks can receive
JUST ANNOUNCED: public pre-orders are now available for the autumn 2025 issue of #goodinternet ! magazines will begin being shipped next month!
https://goodinternetmagazine.com/pre-orders-now-available-for-autumn-2025-issue/
#indie #zine #zines #indieweb #personalwebsite #web #internet #enshittification #socialmedia #neocities #nekoweb #html #webdev #css #webdesign #website #blog #blogger #digitalart #opensource #tech #foss
goodinternetmagazine.com
It's officially time for our pre-orders, open to the public! Pre-ordering your copy helps us pay for our upfront printing costs, which can reach up to $700 a run or more. Your help, even pre-ordering a digital copy, allows us to pay for larger batches so more folks can receive
JUST ANNOUNCED: public pre-orders are now available for the autumn 2025 issue of #goodinternet ! magazines will begin being shipped next month!
https://goodinternetmagazine.com/pre-orders-now-available-for-autumn-2025-issue/
#indie #zine #zines #indieweb #personalwebsite #web #internet #enshittification #socialmedia #neocities #nekoweb #html #webdev #css #webdesign #website #blog #blogger #digitalart #opensource #tech #foss
goodinternetmagazine.com
It's officially time for our pre-orders, open to the public! Pre-ordering your copy helps us pay for our upfront printing costs, which can reach up to $700 a run or more. Your help, even pre-ordering a digital copy, allows us to pay for larger batches so more folks can receive
“Unless you were an expert, you would almost certainly think I had typed in a search box and gotten back a web page with search results. But in reality, I had typed in a prompt box and gotten back a synthesized response that superficially resembles a web page, and it uses some web technologies to display its output. Instead of a list of links to websites that had information about the topic, it had bullet points describing things it thought I should know.“
me.dm
Imagine a browser where you type in “Taylor Swift” and it doesn’t even admit that her website exists. I write about Atlas, ChatGPT’s new anti-web browser that should come with a warning label. https://www.anildash.com/2025/10/22/atlas-anti-web-browser/
Tiens on dirait que la centralisation excessive des services web fait encore des siennes, même zoom est down au taf ... (poke @delta )
#web
#internet
#AWSdown
#SnapChatDown
#SignalDown
#Centralisation
#DeltaChat
#DecentraliseEverything

Actu AWS outage affects everything from Signal to Snapchat Published: 20 October 2025 Issues affecting Amazon Web Services (AWS) has caused massive outages Affecting a multiude of services including Signal, Snapchat, Amazon, Ring, and many others. Almost 50 websites and apps appear to be down, with up to 13,000 users reporting issues, according to DownDetector, a platform where users can self report website outages. meme : image de Scruffy les mains derrière la tête : Moi j'utilise Delta Chat un outil réellement décentralisé avec zéro bullshit dedans.
»KeePassDX 4.2.0 unterstützt endlich Passkeys«
Nun endlich Passkeys auch auf dem Smartphone nutzbar und dies ohne kommerziellen Drittanbietern. Die Desktop Variante @keepassxc unterstützt Passkeys schon länger. Ich vertraue denen mehr obwohl deren Nutzung minimal umständlicher ist.
🔐 https://stadt-bremerhaven.de/keepassdx-4-2-0-unterstuetzt-endlich-passkeys/
#passkeys #keepassdx #mobile #app #opensource #keepass #itsicherheit #web #smartphone #datenschutz #login
stadt-bremerhaven.de
Wer auf der Suche nach einem Passwortmanager für Android ist, hat ja einiges an Auswahl. Bitwarden, 1Password, Enpass, vielleicht sogar ...
»KeePassDX 4.2.0 unterstützt endlich Passkeys«
Nun endlich Passkeys auch auf dem Smartphone nutzbar und dies ohne kommerziellen Drittanbietern. Die Desktop Variante @keepassxc unterstützt Passkeys schon länger. Ich vertraue denen mehr obwohl deren Nutzung minimal umständlicher ist.
🔐 https://stadt-bremerhaven.de/keepassdx-4-2-0-unterstuetzt-endlich-passkeys/
#passkeys #keepassdx #mobile #app #opensource #keepass #itsicherheit #web #smartphone #datenschutz #login
stadt-bremerhaven.de
Wer auf der Suche nach einem Passwortmanager für Android ist, hat ja einiges an Auswahl. Bitwarden, 1Password, Enpass, vielleicht sogar ...
"Not all people using screen readers are blind. Some may have enough vision to know that an image is on the screen but not to make out its content. And some people with thinking disabilities may see the image but struggle to interpret it. All these people expect their screen reader to describe the image for them."
by Ela Gorla: https://tetralogical.com/blog/2025/10/14/common-misconceptions-about-screen-readers/ via @SaraSoueidan
#webDev #accessibility #a11y #Web #UX #screenReaders #impairments

tetralogical.com
Screen readers are familiar to many in digital, but how they work in practice can be less clear. In this post, we shed some light on the topic.
🎤 Upcoming at SeaGL 2025:
📍 09:10 AM on November 07
🗣️ "Free the Social Web"
👥 Speaker(s): Evan Prodromou
📍 Room: Room 145
🏷️ Track: Keynote
📝 As Free and Open Source Software enthusiasts, we sometimes concentrate on our own experiences with s...
#SeaGL2025 #keynote #data #web #FLOSS #opensource #ActivityPub #Fediverse
🔗 https://pretalx.seagl.org/2025/talk/88THX7/
✍️ New post: Compressed Fluid Typography
#blogtober #css #web #typography
https://matthiasott.com/notes/compressed-fluid-typography
matthiasott.com
Matthias Ott is an independent user experience designer and web design engineer from Stuttgart, Germany. He also teaches Interface Prototyping at the Muthesius Academy of Fine Arts and Design.
🎤 Upcoming at SeaGL 2025:
📍 09:10 AM on November 07
🗣️ "Free the Social Web"
👥 Speaker(s): Evan Prodromou
📍 Room: Room 145
🏷️ Track: Keynote
📝 As Free and Open Source Software enthusiasts, we sometimes concentrate on our own experiences with s...
#SeaGL2025 #keynote #data #web #FLOSS #opensource #ActivityPub #Fediverse
🔗 https://pretalx.seagl.org/2025/talk/88THX7/
🎤 Upcoming at SeaGL 2025:
📍 09:10 AM on November 07
🗣️ "Free the Social Web"
👥 Speaker(s): Evan Prodromou
📍 Room: Room 145
🏷️ Track: Keynote
📝 As Free and Open Source Software enthusiasts, we sometimes concentrate on our own experiences with s...
#SeaGL2025 #keynote #data #web #FLOSS #opensource #ActivityPub #Fediverse
🔗 https://pretalx.seagl.org/2025/talk/88THX7/
✍️ New post: Compressed Fluid Typography
#blogtober #css #web #typography
https://matthiasott.com/notes/compressed-fluid-typography
matthiasott.com
Matthias Ott is an independent user experience designer and web design engineer from Stuttgart, Germany. He also teaches Interface Prototyping at the Muthesius Academy of Fine Arts and Design.
»HTML’s Best Kept Secret — The <output> Tag:
Every developer knows <input>. It’s the workhorse of the web. But <output>? Most have never touched it. Some don’t even know it exists. […]«
— by @denodell
You never stop learning and you can't know everything about as a WebDev. Nice to see how you can use the HTML interface actiev.
🧑💻 https://denodell.com/blog/html-best-kept-secret-output-tag
#html #javascript #output #webdev #web #input #htmlform #form #interactive
denodell.com
Make your dynamic content accessible by default with the HTML tag that time forgot.
In case you missed my post from day 3 of #blogtober: It’s about a legendary piece of gear that shaped the sound of Abbey Road studios – and what it all has to do with building for the #Web. 🤓
matthiasott.com
Matthias Ott is an independent user experience designer and web design engineer from Stuttgart, Germany. He also teaches Interface Prototyping at the Muthesius Academy of Fine Arts and Design.
The lesson of #iceblock is that it should have been a website, not an app. If you're standing up to your government, going through an app store is a quick way to get defeated.
Use the #web.
And even better, make it federated or somehow distributed so that many instances can spring up all over the place and hosted from different parts of the world.
iceblock.app
TIL: Safari has built-in WebDriver support
https://yossarian.net/til/post/safari-has-built-in-webdriver-support/
yossarian.net
TIL: Safari has built-in WebDriver support
https://yossarian.net/til/post/safari-has-built-in-webdriver-support/
yossarian.net
Introducing Offcast - A local-first podcast player built for the web.
Check it out at https://offcast.fm
It’s completely free, no sign-up, no accounts.
offcast.fm
In case you missed my post from day 3 of #blogtober: It’s about a legendary piece of gear that shaped the sound of Abbey Road studios – and what it all has to do with building for the #Web. 🤓
matthiasott.com
Matthias Ott is an independent user experience designer and web design engineer from Stuttgart, Germany. He also teaches Interface Prototyping at the Muthesius Academy of Fine Arts and Design.
For details about the how, check out my newest article: Inset Shadows Directly on `img` Elements https://frontendmasters.com/blog/inset-shadows-directly-on-img-elements-part-1/
It has step by step interactive demos to help with getting a better feel for the technique.
#SVG #filter #CSS #svgFilter #coding #web #dev #webDevelopment #webDev #code #frontend #interactive
frontendmasters.com
Inset `box-shadow` doesn't work directly on image elements. There are work-arounds, but this SVG filter can do it directly. Don't run! There is powerful stuff to learn here through interactive demos.
Little @codepen demo: single `img` squircles + grainy inset shadow https://codepen.io/thebabydino/pen/LEGEwdp
(for `img`, the actual image is content & gets painted on top of shadows; the earlier workaround has been a sibling/ parent's pseudo used as a "cover" that gets the shadow; none of it here 😼)
#CSS #SVG #svgFilter #filter #grainy #code #web #dev #webDevelopment #webDev #coding #frontend
I Reinstated My Guestbook After 20 Years: https://susam.net/reinstated-guestbook.html
For details about the how, check out my newest article: Inset Shadows Directly on `img` Elements https://frontendmasters.com/blog/inset-shadows-directly-on-img-elements-part-1/
It has step by step interactive demos to help with getting a better feel for the technique.
#SVG #filter #CSS #svgFilter #coding #web #dev #webDevelopment #webDev #code #frontend #interactive
frontendmasters.com
Inset `box-shadow` doesn't work directly on image elements. There are work-arounds, but this SVG filter can do it directly. Don't run! There is powerful stuff to learn here through interactive demos.
Little @codepen demo: single `img` squircles + grainy inset shadow https://codepen.io/thebabydino/pen/LEGEwdp
(for `img`, the actual image is content & gets painted on top of shadows; the earlier workaround has been a sibling/ parent's pseudo used as a "cover" that gets the shadow; none of it here 😼)
#CSS #SVG #svgFilter #filter #grainy #code #web #dev #webDevelopment #webDev #coding #frontend
Little @codepen demo: single `img` squircles + grainy inset shadow https://codepen.io/thebabydino/pen/LEGEwdp
(for `img`, the actual image is content & gets painted on top of shadows; the earlier workaround has been a sibling/ parent's pseudo used as a "cover" that gets the shadow; none of it here 😼)
#CSS #SVG #svgFilter #filter #grainy #code #web #dev #webDevelopment #webDev #coding #frontend
Tim Berners-Lee (@timbl) explains why he gave away the #WWW for free.
https://www.theguardian.com/technology/2025/sep/28/why-i-gave-the-world-wide-web-away-for-free
"For the web to have everything on it, everyone had to be able to use it, and want to do so. This was already asking a lot. I couldn’t also ask that they pay for each search or upload they made. In order to succeed, therefore, it would have to be free. That’s why, in 1993, I convinced my #CERN managers to donate the intellectual property of the world wide web, putting it into the public domain. We gave the web away to everyone."
But he adds:
"Today, I look at my invention and I am forced to ask: is the web still free today? No, not all of it. We see a handful of large platforms harvesting users’ private data to share with commercial brokers or even repressive governments…Trading personal data for use certainly does not fit with my vision for a free web."
theguardian.com
My vision was based on sharing, not exploitation – and here’s why it’s still worth fighting for
Tim Berners-Lee (@timbl) explains why he gave away the #WWW for free.
https://www.theguardian.com/technology/2025/sep/28/why-i-gave-the-world-wide-web-away-for-free
"For the web to have everything on it, everyone had to be able to use it, and want to do so. This was already asking a lot. I couldn’t also ask that they pay for each search or upload they made. In order to succeed, therefore, it would have to be free. That’s why, in 1993, I convinced my #CERN managers to donate the intellectual property of the world wide web, putting it into the public domain. We gave the web away to everyone."
But he adds:
"Today, I look at my invention and I am forced to ask: is the web still free today? No, not all of it. We see a handful of large platforms harvesting users’ private data to share with commercial brokers or even repressive governments…Trading personal data for use certainly does not fit with my vision for a free web."
theguardian.com
My vision was based on sharing, not exploitation – and here’s why it’s still worth fighting for
Tim Berners-Lee (@timbl) explains why he gave away the #WWW for free.
https://www.theguardian.com/technology/2025/sep/28/why-i-gave-the-world-wide-web-away-for-free
"For the web to have everything on it, everyone had to be able to use it, and want to do so. This was already asking a lot. I couldn’t also ask that they pay for each search or upload they made. In order to succeed, therefore, it would have to be free. That’s why, in 1993, I convinced my #CERN managers to donate the intellectual property of the world wide web, putting it into the public domain. We gave the web away to everyone."
But he adds:
"Today, I look at my invention and I am forced to ask: is the web still free today? No, not all of it. We see a handful of large platforms harvesting users’ private data to share with commercial brokers or even repressive governments…Trading personal data for use certainly does not fit with my vision for a free web."
theguardian.com
My vision was based on sharing, not exploitation – and here’s why it’s still worth fighting for
I ran into this site while looking up things and it's incredible how some dev's personal site can bring so much joy and awe.
Minimize the blog post and explore the Start menu! I hope you weren't planning on doing anything productive in the next 20 minutes.
https://ashk.au/2022/10/03/a-self-hosters-guide-to-port-forwarding-and-ssh-tunnels/

0.0.7.230
Tonight I set up a ssh tunnel that punches out from my server skipping the NAT, forwarding, and DNS complexities entirely. It’ll dial home from anywhere there’s network so I could even take my server to the park and it should work over 5g.
I came across this post by @Jo , that captured a feeling I’ve had for a long time:
“Fun internet Theory” states that there are still a lot of cool and interesting things to do online.
This is a reference to the Dead Internet Theory, which states that the internet is invaded with bots and algorithmic slop.
(The theory has way more strange and absurd ramifications if you dig far enough. They are not worth your time, so this is the basic understanding most people have when they hear the term.)
I love how positive this definition of the Fun Internet Theory is. It’s an optimism that is more realistic than you might think.
You see, I refuse to think of the internet as what is being served by algorithms and mainstream social media. It’s as absurd as looking at the top grossing films every year and being like “Man, all movies are the same these days”.
The old internet, or at least the part we cherish, did not disappear. It wasn’t replaced by bots; we got our attention stolen from it.
We’ve deluded ourselves into thinking that social media (and thus the web) is all there is to see. That you must keep up with international news and the discourse of the day. You must hold an opinion and defend it, or at least find people that confirm your biases.
I refuse to think that the internet is only this.
The other thing I love about Fun Internet Theory is that it states that there are a lot of cool things to do on the web.
The internet is a much sadder place when all you do is consume passively whatever is delivered to you this day. Instead, being active should be at the forefront. But being active doesn’t mean you need to run your own website! It starts with you being more involved in what you see and how you interact with it.
This is not only gonna bring you to interesting places, interesting people (like you!), but it’s also way more satisfying! Even if from the outside view you are missing out on the daily noise.
So go, explore the weirder parts of the web! Weird wiki on a specific topic, obscure game on itch.io, small musician on Soundcloud, or random people’s blog.
But even better, be a part of it!
Comment on someone’s post, share a montage of your favorite game screenshot, seed a torrent, make a meme! Or make friends and help people in a small Discord server!
Do cool things on the internet, because there are and always will be a lot of cool and interesting things to do :)
hi.nighten.fr
Salut ! Je suis toujours en recherche de contrat d'apprentissage concepteur développeur d'application aux alentours de Pau ou remote, ma formation commence aujourd'hui, j'ai déjà le titre pro développeur web et je suis bien chaud pour la suite ! J'ai déja fait un stage de deux mois en entreprise où j'ai pu pratiquer Angular 19 et le fonctionnement sur le terrain. Je suis dispo en DM pour plus d'infos et pour mon CV/motivation.
Merci d'avance pour les partages !
Salut ! Je suis toujours en recherche de contrat d'apprentissage concepteur développeur d'application aux alentours de Pau ou remote, ma formation commence aujourd'hui, j'ai déjà le titre pro développeur web et je suis bien chaud pour la suite ! J'ai déja fait un stage de deux mois en entreprise où j'ai pu pratiquer Angular 19 et le fonctionnement sur le terrain. Je suis dispo en DM pour plus d'infos et pour mon CV/motivation.
Merci d'avance pour les partages !
I really believe in supporting Servo as an independent, non-profit rendering engine (and boy do we need one now!).
I followed this account in hopes of finding some cool updates that I could share with people to help promote the project.
The trouble is that the updates posted always just read like developer jargon and don't give much of a sense of what's useful or exciting about the latest improvements.
Maybe it would help to have pictures of what a webpage would have looked like before and after the improvements would help? Just something to translate improvements back to something people outside the project would understand.
Anyway, keep up the great work. It's appreciated, now more than ever!
🚨 #JOB ALERT 🚨
Here at the Department of Communication of @esoastronomy in #Germany we're offering two jobs in our #web team:
Head of Digital Communications: https://recruitment.eso.org/jobs/2025_0065#
Web Developer: https://recruitment.eso.org/jobs/2025_0066#
Deadline: 4 October 2025. More info in the links above or at vacancy@eso.org
📷 Cool pic of comet NEOWISE & noctilucent clouds over our offices by my webteam friend Raquel Shida
I had a really nice chat with @davew about the #web #wordpress #wordland #apis #blogging #rss #textcasting #reallyreallysimplesyndication #activitypub #fediverse and #mastodon
…and you‘ll be able to hear it on https://openchannels.fm in a few days ☺️
openchannels.fm
Do the Woo is a podcast channel for WooCommerce and WordPress builders and businesses. From agencies to freelancers, plugin to SaaS builders.
🚨 #JOB ALERT 🚨
Here at the Department of Communication of @esoastronomy in #Germany we're offering two jobs in our #web team:
Head of Digital Communications: https://recruitment.eso.org/jobs/2025_0065#
Web Developer: https://recruitment.eso.org/jobs/2025_0066#
Deadline: 4 October 2025. More info in the links above or at vacancy@eso.org
📷 Cool pic of comet NEOWISE & noctilucent clouds over our offices by my webteam friend Raquel Shida
🚨 #JOB ALERT 🚨
Here at the Department of Communication of @esoastronomy in #Germany we're offering two jobs in our #web team:
Head of Digital Communications: https://recruitment.eso.org/jobs/2025_0065#
Web Developer: https://recruitment.eso.org/jobs/2025_0066#
Deadline: 4 October 2025. More info in the links above or at vacancy@eso.org
📷 Cool pic of comet NEOWISE & noctilucent clouds over our offices by my webteam friend Raquel Shida
I'll write about this on my blog later I swear, but RE: https://app.wafrn.net/fediverse/post/d01d4de5-3c2e-4aa8-ab55-21d484ea4764
I'm actually colorblind (protanomaly for the color nerds), so it's hard for me to pick colors that look "high contrast" to me without accidentally picking like, four shades of green or something.
So instead of picking colors from scratch, I did a lot of referencing the xkcd color survey! These colors were chosen by @xkcd.com based on data from a viewer survey, and are fairly representative of what color someone is actually thinking of when they say "magenta" (hint: it's NOT ff00ff).
For convenience, I've converted this list into a CSS library, xkcd.css. I use this all the time for putting colors on my webbed site :3

app.wafrn.net
Wafrn is a federated social media inspired by tumblr that connects with the fediverse and bluesky
I'll write about this on my blog later I swear, but RE: https://app.wafrn.net/fediverse/post/d01d4de5-3c2e-4aa8-ab55-21d484ea4764
I'm actually colorblind (protanomaly for the color nerds), so it's hard for me to pick colors that look "high contrast" to me without accidentally picking like, four shades of green or something.
So instead of picking colors from scratch, I did a lot of referencing the xkcd color survey! These colors were chosen by @xkcd.com based on data from a viewer survey, and are fairly representative of what color someone is actually thinking of when they say "magenta" (hint: it's NOT ff00ff).
For convenience, I've converted this list into a CSS library, xkcd.css. I use this all the time for putting colors on my webbed site :3

app.wafrn.net
Wafrn is a federated social media inspired by tumblr that connects with the fediverse and bluesky
An estimated 5.56 billion people have access to the internet. Across social media there are 5.24 billion individual accounts. But there's only a handful of platform owners.
Something isn't adding up.
This gap leaves room for all sorts of dodgy dealing, god-like complexes, and unlawful behaviour.
Open social media, like the Open Social Web, can be the answer.
#SocialWeb #Fediverse #Mastodon #SocialMedia #Web #Tech #Change

An image showing 5.56 billion web users compared to 5.24 billion social accounts. The copy reads: Not everyone on the internet uses social media. But most do. That’s why we believe social media should be built for the public, putting their social experience at the forefront, not the needs of advetisers.
An estimated 5.56 billion people have access to the internet. Across social media there are 5.24 billion individual accounts. But there's only a handful of platform owners.
Something isn't adding up.
This gap leaves room for all sorts of dodgy dealing, god-like complexes, and unlawful behaviour.
Open social media, like the Open Social Web, can be the answer.
#SocialWeb #Fediverse #Mastodon #SocialMedia #Web #Tech #Change

An image showing 5.56 billion web users compared to 5.24 billion social accounts. The copy reads: Not everyone on the internet uses social media. But most do. That’s why we believe social media should be built for the public, putting their social experience at the forefront, not the needs of advetisers.
Si desean conocer los jardines digitales, aprovechando que no he pasado el enlace anteriormente, dejo mi árticulo sobre estos:
It's hard to overstate just how much the ManT1S-Bridge improves the T1S #developer #experience. When I started working with the first ManT1S #prototypes, it was hard. Here were these devices providing #web APIs, but the only way I could test them was with another T1S device! It felt like working on a tech island, isolated from the rest of the world and none of the tools you're familiar with work.
To make our 5 million users who use Midori Browser have a smoother, faster, more private, and customizable experience, we're creating a new update that will change the playing field.
Where privacy, security, personalization, and productivity are the primary driver
A new Midori coming soon.
#privacy #browser #tech #technology #linux #web #privacy #debian #ubuntu #opensuse #archlinux
#CSS is amazing.
It’s a bit unfortunate that #LLMs default to slapping Tailwind classes in HTML instead of modern CSS that’s more maintainable and will never break.
lyra.horse
An overview of what makes modern CSS so awesome.
#CSS is amazing.
It’s a bit unfortunate that #LLMs default to slapping Tailwind classes in HTML instead of modern CSS that’s more maintainable and will never break.
lyra.horse
An overview of what makes modern CSS so awesome.
#cssChallenge2025 How would you code this with:
✨ 1 HTML element, no JS, no SVG
✨ inner border interrupted by text box shape
✨ responsive
✨ text wraps depending on space
✨ contenteditable
✨ 1 image = the background one
(if you're Cheetah+ on Ko-fi/ Patreon, you know where to find the answer)
#CSS #cssLayout #code #coding #frontend #web #dev #webDev #webDevelopment
#cssChallenge2025 How would you code this with:
✨ 1 HTML element, no JS, no SVG
✨ inner border interrupted by text box shape
✨ responsive
✨ text wraps depending on space
✨ contenteditable
✨ 1 image = the background one
(if you're Cheetah+ on Ko-fi/ Patreon, you know where to find the answer)
#CSS #cssLayout #code #coding #frontend #web #dev #webDev #webDevelopment
Wow! You know that #Web #Tech is getting really good when you are able to replace significant amounts of #JavaScript with a few lines of #HTML and #CSS. Best part is the fact that you get #a11y out of the box with native widgets 🙌
A few examples: `<dialog closedby="any">`, stylable `<select>` and even HTML autocomplete/typeahead using the `<datalist>`.
Wow! You know that #Web #Tech is getting really good when you are able to replace significant amounts of #JavaScript with a few lines of #HTML and #CSS. Best part is the fact that you get #a11y out of the box with native widgets 🙌
A few examples: `<dialog closedby="any">`, stylable `<select>` and even HTML autocomplete/typeahead using the `<datalist>`.
【TCP/IP】重要な技術すぎる #Web - Qiita https://qiita.com/im_yoneda/items/10f0dc871c28639631d8
Googleさん、ぼくのためだと言ってなんでもかんでも拾わんでくれ。Geminiちゃんが質を評価してからオススメしてくれんかのぅ。あと、ここの会社の人もこういうのはいったん先輩にレビューさせてから公開しなさいよー
qiita.com
はじめに TCP/IPを学んで衝撃を受けたのでまとめます。 現代がこんなに便利なのはこの技術のおかげかもしれません。 TCP/IPって何? TCP/IPは「Transmission Control Protocol/Internet Protocol」の略で、インターネ...
»CrowdBucks is a new payment system for the Fediverse:
An open source, self-hostable payment system.«
It's exciting to see that there is now @crowdbucks in the Fediverse, but on the other hand, I don't know if this makes any sense at all, since they are also tied to Stripe again – at least not to PayPal.
💲 https://wedistribute.org/2025/08/introducing-crowdbucks/
#fediverse #crowdbucks #money #stripe #spending #payment #paypal #paying #spending #spendmoney #opensource #web #internet
wedistribute.org
A new, open source, self-hostable fundraising system for the Fediverse has been released. The project is very young, but there’s a huge amount of promise.
I've had it with the aggressive #AI #crawlers now. Some bot has been hitting #MacPorts with a legitimate enough user agent that I can't block it without also blocking users.
Yesterday, it sent 377k requests (62 % of the total), 369k to URLs forbidden in robots.txt from 274k unique IPs. Most of it for content that could be analyzed quicker using `svn checkout` or `git clone`.
Dynamic content on the #web is broken. There's just no way to do that anymore. What a waste of energy.
I've had it with the aggressive #AI #crawlers now. Some bot has been hitting #MacPorts with a legitimate enough user agent that I can't block it without also blocking users.
Yesterday, it sent 377k requests (62 % of the total), 369k to URLs forbidden in robots.txt from 274k unique IPs. Most of it for content that could be analyzed quicker using `svn checkout` or `git clone`.
Dynamic content on the #web is broken. There's just no way to do that anymore. What a waste of energy.
this is it! TOMORROW is the deadline for #goodinternet magazine submissions for the autumn issue! 🍂
https://goodinternetmagazine.com/contact
we can only continue this project with submissions, so i’m so grateful to all of you submitting something this issue!!! 💖 thank you!!
#indieweb #SmallWeb #webdesign #openweb #webdev #internet #web #magazine #blogging #blog #posse
goodinternetmagazine.com
Pitching stories Unfortunately, at this time, we cannot pay for article submissions or art. Appropriate topics Articles can either be sourced and journalistic or first-hand accounts and personal stories. Since our magazine is geared towards hobbyists, articles should not be aimed at those who do not already own personal websites
this is it! TOMORROW is the deadline for #goodinternet magazine submissions for the autumn issue! 🍂
https://goodinternetmagazine.com/contact
we can only continue this project with submissions, so i’m so grateful to all of you submitting something this issue!!! 💖 thank you!!
#indieweb #SmallWeb #webdesign #openweb #webdev #internet #web #magazine #blogging #blog #posse
goodinternetmagazine.com
Pitching stories Unfortunately, at this time, we cannot pay for article submissions or art. Appropriate topics Articles can either be sourced and journalistic or first-hand accounts and personal stories. Since our magazine is geared towards hobbyists, articles should not be aimed at those who do not already own personal websites
On the subject of removing XSLT from the browser, https://blog.saxonica.com/norm/2025/08/20-removing-xslt.html #xml #xslt #web
blog.saxonica.com
Norm Tovey-Walsh's Saxonica weblog.
On the subject of removing XSLT from the browser, https://blog.saxonica.com/norm/2025/08/20-removing-xslt.html #xml #xslt #web
blog.saxonica.com
Norm Tovey-Walsh's Saxonica weblog.
interesting approach to #web security.
The new integrated Markdown parser I’ve been implementing in Kitten has been kicking my ass for the past few weeks but I think I finally have it fully working and seamlessly so. Expect a new release this/next week that brings the parsing of Markdown pages (.page.md files) in your apps up to the standard of the recently-improved runtime Markdown parsing in Kitten HTML tagged-template strings (within `<markdown>…</markdown>` blocks).
The coolest thing is I was able to implement this without introducing any new syntax. In fact, I was able to simplify things so that you can now add arbitrary JavaScript to your Markdown pages within a multi-line script block in the YAML front matter (`script: |`) and use JavaScript string interpolation syntax in your Markdown (and, of course, Kitten components and conditionals, which, themselves, rely on string interpolation).
The only place where you have to deviate from standard Markdown in your Markdown pages is if you have JavaScript string interpolations or Kitten components/conditionals in code fences within your Markdown. In that case, you’ll have to escape them (e.g., `<\${Component} />`, `\<if \${something}>something\</if>`, etc.). And, to be fair, the person most impacted by this is likely me as the Kitten documentation at https://kitten.small-web.org is written in Kitten so I had a lot of escaping to do. But for any other use case, it means that things should just work and work exactly as they do in JavaScript pages (page.js files).
Anyway, so this is going to be a breaking change so I thought I’d give you (the three of you playing with Kitten right now?) a heads up. Of course, I’ll be updating the documentation to reflect all this.
(Remember, Kitten is in pre-release and it’s the framework I’m building/using to create Catalyst – the Small Web hosting solution – and Yarn – a small web – peer to peer – personal site app. So Kitten isn’t the means, not the end. And, at least until the Version 1 API freeze, things can and will break. That said, there’s nothing stopping you from playing with it now and, to be fair, at this point, such breaking changes should become rarer and rarer).
💕
#Kitten #SmallWeb #SmallTech #web #dev #Markdown #JavaScript #HTML #CSS #JavaScript #NodeJS
kitten.small-web.org
⚠️ IMPORTANT for domain owners ⚠️
ICANN will have a new policy on domain ownership effective August 21st.
If your domain registration includes a company name, the company owns the domain, not you. Even if you use your first/last name AND a company, the company reigns.
So if your domain is yours and no one else’s, make sure it’s properly registered to you: leave the company name empty.
https://www.icann.org/en/contracted-parties/consensus-policies/registration-data-policy
#ICANN #Domain #DomainNames #DomainRegistration #News #Web #Internet
icann.org
The Registration Data Policy ("Policy") is an ICANN Consensus Policy that describes requirements for Processing Registration Data for each ICANN-accredited Registrar ("Registrar") and gTLD Registry Operator that has an agreement with ICANN ("Registry Operator").
To elaborate on my hostility against WebKit: WebKit does nothing but get in my way whenever I work on literally any website.
When I rewrote nouveau's website in late 2023, the website worked perfectly fine on Firefox (Gecko) and Chromium (Blink), but was broken on Epiphany/Safari (WebKit). The logo, which is an SVG, would not adapt to dark style, because, to this day, WebKit still does not support prefers-color-scheme in SVGs. So, as a workaround, instead of having one SVG file for both color schemes, we have one SVG file for light style, and one for dark style.
Another example: On my website, some elements are intentionally made to be unselectable using user-select: none;, such as the command-line decoration and the “Table of Contents” text, but on WebKit, these elements continue to be selectable because it does not properly support the user-select property. And no, using the vendor prefix is completely unacceptable, especially considering that it behaves differently.
Lastly, WebKit does not yet fully support the ::marker pseudo-element. This means, in my articles, numbered list items in the table of contents are completely wrong and don't represent the same numbers as headings.
Apple has consistently proved that they don't care about WebKit, because otherwise browsers like Safari and Epiphany would have worked as well as they do on Firefox and Chromium. There's absolutely no reason to force WebKit onto iOS and iPadOS if they're not even willing to invest in WebKit. Likewise, Apple employees working on WebKit should really stop calling themselves “WebKit evangelists” if their inferior engine regularly gets in developers’ way. So yes, WebKit sucks, and this is 100% on Apple. I don't care about being harsh. Apple is a multi-trillion dollar company, most of which came from exploiting people. The least they can do is invest in their projects.
For clarity, my hostility towards WebKit is purely targeted at Apple's lack of involvement with WebKit, not the browsers using it.
developer.mozilla.org
The ::marker CSS pseudo-element selects the marker box of a list item, which typically contains a bullet or number. It works on any element or pseudo-element set to display: list-item, such as the <li> and <summary> elements.
To elaborate on my hostility against WebKit: WebKit does nothing but get in my way whenever I work on literally any website.
When I rewrote nouveau's website in late 2023, the website worked perfectly fine on Firefox (Gecko) and Chromium (Blink), but was broken on Epiphany/Safari (WebKit). The logo, which is an SVG, would not adapt to dark style, because, to this day, WebKit still does not support prefers-color-scheme in SVGs. So, as a workaround, instead of having one SVG file for both color schemes, we have one SVG file for light style, and one for dark style.
Another example: On my website, some elements are intentionally made to be unselectable using user-select: none;, such as the command-line decoration and the “Table of Contents” text, but on WebKit, these elements continue to be selectable because it does not properly support the user-select property. And no, using the vendor prefix is completely unacceptable, especially considering that it behaves differently.
Lastly, WebKit does not yet fully support the ::marker pseudo-element. This means, in my articles, numbered list items in the table of contents are completely wrong and don't represent the same numbers as headings.
Apple has consistently proved that they don't care about WebKit, because otherwise browsers like Safari and Epiphany would have worked as well as they do on Firefox and Chromium. There's absolutely no reason to force WebKit onto iOS and iPadOS if they're not even willing to invest in WebKit. Likewise, Apple employees working on WebKit should really stop calling themselves “WebKit evangelists” if their inferior engine regularly gets in developers’ way. So yes, WebKit sucks, and this is 100% on Apple. I don't care about being harsh. Apple is a multi-trillion dollar company, most of which came from exploiting people. The least they can do is invest in their projects.
For clarity, my hostility towards WebKit is purely targeted at Apple's lack of involvement with WebKit, not the browsers using it.
developer.mozilla.org
The ::marker CSS pseudo-element selects the marker box of a list item, which typically contains a bullet or number. It works on any element or pseudo-element set to display: list-item, such as the <li> and <summary> elements.
What I like about the @kagihq built-in LLM answers:
- It's only(!) triggered on request, i.e. when your query ends with a question mark.
- It always admits when it couldn't find good information or there is no clear answer.
- It always cites sources, usually word for word.
I find myself not so much "believing the AI" but rather using it as a guide as to which result has the information I need.
What the fuck is wrong with #GoogleChrome / #Blink developers and their obsession with making the #web worse for *everybody*?
https://github.com/whatwg/html/issues/11523
We need to break #Google's dominance on the #web yesterday, and make it painful for them.
github.com
What is the issue with the HTML Standard? XSLT v1.0, which all browsers adhere to, was standardized in 1999. In the meantime, XSLT has evolved to v2.0 and v3.0, adding features, and growing apart f...
Je découvre que les jeux web abandonnés par Motion Twin renaissent progressivement de leurs cendres via des projets indépendants dont Motion Twin a partagé le code d'origine sur GitHub.
eternaltwin.org
What the fuck is wrong with #GoogleChrome / #Blink developers and their obsession with making the #web worse for *everybody*?
https://github.com/whatwg/html/issues/11523
We need to break #Google's dominance on the #web yesterday, and make it painful for them.
github.com
What is the issue with the HTML Standard? XSLT v1.0, which all browsers adhere to, was standardized in 1999. In the meantime, XSLT has evolved to v2.0 and v3.0, adding features, and growing apart f...
Why Semantic HTML Still Matters via @RunxiYu https://lobste.rs/s/kewo98 #web
https://www.jonoalderson.com/conjecture/why-semantic-html-still-matters/
jonoalderson.com
If you want to build for performance, accessibility, discoverability, or resilience, you must start with HTML that means something.
Why Semantic HTML Still Matters via @RunxiYu https://lobste.rs/s/kewo98 #web
https://www.jonoalderson.com/conjecture/why-semantic-html-still-matters/
jonoalderson.com
If you want to build for performance, accessibility, discoverability, or resilience, you must start with HTML that means something.
Je découvre que les jeux web abandonnés par Motion Twin renaissent progressivement de leurs cendres via des projets indépendants dont Motion Twin a partagé le code d'origine sur GitHub.
eternaltwin.org
Hat hier jemand Erfahrung mit Dynamischen Alerts in HTML/Javascript und Screenreadern? Soweit ich das verstehe sollte der Bereich mit role=alert ja bereits leer existieren damit dann sich ändernder Inhalt vom Browser announced wird. Reicht es diese section beim initialen laden mit JS anzulegen oder sollte die wirklich schon im Serverseitig erstellten html stehen? #accessibility #a11y #web
I finally came around to writing up the details behind the CSS-only code listings I use on my blog. These listings wrap on page resize with line continuation markers, show scrollbars past a configurable minimum width, support native text selection without the line numbers being copied, and number lines in plain CSS without any JS involved. Have a look, the post is simultaneously a demo:

A code listing with line numbers showing some HTML source code. Some long lines are wrapped, with little arrows shown in the line number column to indicated wrapped lines. Wrapped lines are indented. A part of the listing's code is selected, and the selection does not extend over the line numbers.
I finally came around to writing up the details behind the CSS-only code listings I use on my blog. These listings wrap on page resize with line continuation markers, show scrollbars past a configurable minimum width, support native text selection without the line numbers being copied, and number lines in plain CSS without any JS involved. Have a look, the post is simultaneously a demo:

A code listing with line numbers showing some HTML source code. Some long lines are wrapped, with little arrows shown in the line number column to indicated wrapped lines. Wrapped lines are indented. A part of the listing's code is selected, and the selection does not extend over the line numbers.
Using zip bombs to protect your server
idiallo.com
The majority of the traffic on the web is from bots. For the most part, these bots are used to discover new content. These are RSS Feed readers, search engines crawling your content, or nowadays AI bo
Using zip bombs to protect your server
idiallo.com
The majority of the traffic on the web is from bots. For the most part, these bots are used to discover new content. These are RSS Feed readers, search engines crawling your content, or nowadays AI bo
I feel I am even unable to follow current law projects against #encryption or #AgeVerification arguments. I am just tired, angry and annoyed with this crap. The most annoying thing is their lying about "protecting children"... all while everyone makes intentional effort to exploit the same children for own profit. And even if this part would be true... Why they have to choose one group to be safe and everyone else would have to deal with increasing #internet toxicity?
It's like they said "we made this area poisonus and radioactive and now we have to think about poor children affected by this. So let's verify everyone's identity to make sure they are mature enough to deal with radioactivity!"
And then "Oh, by the way, it could be convenient to mark dissidents' zones as harmful too..."
And even now they actively create more and more harmful things, embracing it and poison everything with it... also killing planet in the process.
I don't want to reveal my identity and don't want to deal with their radioactivity at all!
#BigTech #corpfree #capitalism #SurveillanceCapitalism #web #enshittification #ChatControl #OnlineSafetyAct
techcrunch.com
We’ve compiled an overview of some of the top alternative browsers available today aiming to challenge Chrome and Safari.
techcrunch.com
We’ve compiled an overview of some of the top alternative browsers available today aiming to challenge Chrome and Safari.
Venting.
If I have to open the browser's dev tools, dig through the DOM to find where you've set the background colour of the page, and then change it manually, just to be able to read what you've written, you have failed utterly at web design, user experience, and accessibility simultaneously.
Yes, I'm looking at you, https://www.meditationsinanemergency.com/please-shout-fire-this-tis-burning/ .
#colour #color #background #readability #accessibility #design #WebDesign #DevTools #DOM #hack #web #venting #browser
meditationsinanemergency.com
The United States is being destroyed from within, and mainstream journalism isn't making that clear. When I was a kid, there was a popular phrase--"what if they had a war and no one came?" What if we were in a war and no one noticed? Obviously all the people
#writers, #blog aficionados, #web enjoyers, #website browsers: lend me your ears! i need help with a big push to get the word out about #writing for GOOD INTERNET magazine's autumn issue! a digital AND physical magazine that ships all over the world, run & contributed to by volunteers! (‼️)
in case you're unaware, GOOD INTERNET covers a lot of different aspects of the #SmallWeb: unplugging from the corporate web, fighting #enshittification, migrating from data-harvesting corpo social media, creating your own personal website, using code and website-building as an art form, federation, and creating websites for fun. the aim is to be approachable for beginners and enjoyable for seasoned #indieweb travelers!
you don't have to be a professional #webdev or a #coding smartypants to write about all the good things happening on "this side" of the web. the idea here is to spread the word about and share thoughts, independent web projects, services, methods, sites, meet-ups, and celebrate the non-corporate web together while making it easier for us to partake and unplug from #bigtech.
📏 looking for 1,000- to 4,000-word articles aimed at website owners and hobbyists, digital (and traditional) #artists, #internet culture enthusiasts, #technology nerds, #socialmedia expatriates, & anyone who wants to unplug from the corporate-owned #web.
⏲️ the deadline is AUGUST 22, 2025 ⏲️
ℹ️ more info here: https://goodinternetmagazine.com/contact/
#personalweb #websites #web #fediverse #neocities #nekoweb #html #css #zine #zines #indie #independent #creativity #tech #smalltech #opensource #degoogle #media
goodinternetmagazine.com
Pitching stories Unfortunately, at this time, we cannot pay for article submissions or art. Appropriate topics Articles can either be sourced and journalistic or first-hand accounts and personal stories. Since our magazine is geared towards hobbyists, articles should not be aimed at those who do not already own personal websites
Hey, #FediHire me! 🥳
I'm looking for a decent #job, preferably remote.
Any help is appreciated.
I bring a ton of skills and more than a decade of experience as a #software #engineer, have been working mostly on #web #applications and some #mobile over the years, and done lots of #systems programming and #firmware in my spare time projects. 🧑💻⚙️
My main languages are Rust and JavaScript/TypeScript.
I'm based in Germany.
More details and CV are at https://dan.orangecms.org/.
Please #boost, thanks!

dan.orangecms.org
If you've been using #neocities or #nekoweb to host your HTML site and you miss the convenience of *markdown and stuff,* I have a tutorial for you! It's a quick no-nonsense guide through installing Eleventy and using it to add Markdown to your HTML website!
https://github.com/nycki93/eleventy-for-neocities-users
edit: if you found this tutorial helpful, let me know! even just a "yeah this worked" is good feedback!
@aral That's a shame.
Not sure if you've seen this, but there might be options to solve this (see tickets screenshot) please contact the organization about this, they might be able to do something about this.
It would be a pity if you aren't able to participate due to a funding issue.

A screenhot of the WHY2025 Dutch Hackercamp ticket options highlighting the 'Low on funds nerd' ticket type with the following text: "Can't afford a full priced ticket? No problem! Please let us know what you are able to afford for a ticket. Please note we will manual validate these tickets and might get in touch with you on the e-mail address of the order. If you have any question about this, please feel free to contact us at friends@why2025.org."
Had my talk on Small Web accepted at #why2025 but I hadn’t realised (my bad) that not only do you have to cover your own travel and accommodation but you also have to buy a ticket to speak. I’m sorry, as part of a tiny two-person not-for-profit working for the common good, I can’t afford to pay to speak at events. I’m not Deloitte. So I sadly had to withdraw my talk.
If any conferences do want to hear about the Small Web and are willing to support our work by paying us to speak about it, please feel free to get in touch:
https://small-tech.org/contact-us/
#SmallTech #SmallWeb #speaking #events #conferences #decentralisation #humanRights #personhood #democracy #peerToPeer #web #design #dev
small-tech.org
We’re available for speaking engagements, media interviews about our work, and to chat to VPS hosts about working together.
I wrote a new article for Frontend Masters: Step Gradients with a Given Number of Steps!
Consider this problem: you are given 2 hex codes + a number of steps. How would you code a step gradient? Think about it, then see my solution https://frontendmasters.com/blog/step-gradients-with-a-given-number-of-steps/
Hope you enjoy, a lot of work went into it.
#CSS #SVG #filter #svgFilter #code #coding #web #dev #webDev #webDevelopment #frontend #cssGradient
I wrote a new article for Frontend Masters: Step Gradients with a Given Number of Steps!
Consider this problem: you are given 2 hex codes + a number of steps. How would you code a step gradient? Think about it, then see my solution https://frontendmasters.com/blog/step-gradients-with-a-given-number-of-steps/
Hope you enjoy, a lot of work went into it.
#CSS #SVG #filter #svgFilter #code #coding #web #dev #webDev #webDevelopment #frontend #cssGradient
Introducing Web Numbers
Domains? Where we’re going, we don’t need domains!
Get ready for an exciting new (old?) way to address (small) web sites in 2026.
https://ar.al/2025/06/25/web-numbers/
💕
(Thanks to @letsencrypt.)
#WebNumbers #SmallWeb #domainNames #IPAddresses #TLS #HTTPS #LetsEncrypt #web #decentralisation #SmallTech
ar.al
Domains? Where we’re going, we don’t need domains! Until the end of this year, the only way to have a secure web site is to have it accessible via a domain name. That, however, is changing. And the design of the Small Web will be changing along with it. IP addresses are about to make a comeback on the web in a big (ok, small) way, thanks to upcoming support for security certificates for IP addresses by Let’s Encrypt.
Introducing Web Numbers
Domains? Where we’re going, we don’t need domains!
Get ready for an exciting new (old?) way to address (small) web sites in 2026.
https://ar.al/2025/06/25/web-numbers/
💕
(Thanks to @letsencrypt.)
#WebNumbers #SmallWeb #domainNames #IPAddresses #TLS #HTTPS #LetsEncrypt #web #decentralisation #SmallTech
ar.al
Domains? Where we’re going, we don’t need domains! Until the end of this year, the only way to have a secure web site is to have it accessible via a domain name. That, however, is changing. And the design of the Small Web will be changing along with it. IP addresses are about to make a comeback on the web in a big (ok, small) way, thanks to upcoming support for security certificates for IP addresses by Let’s Encrypt.
🔁 From our "Digital Crossroads" collection:
Google Should Pay for Crawling - https://veselin.blog/2025/06/25/google-should-pay-for-crawling/?ref=feedle.world
---
See other stories like this one here: https://feedle.world/digital-crossroads

feedle.world
Making the Web a little more open - one story at a time.
🔁 From our "Digital Crossroads" collection:
Google Should Pay for Crawling - https://veselin.blog/2025/06/25/google-should-pay-for-crawling/?ref=feedle.world
---
See other stories like this one here: https://feedle.world/digital-crossroads

feedle.world
Making the Web a little more open - one story at a time.
I was on a new podcast called WTF Now. My episode is called How the internet went wrong. Sad title, but you will understand when you listen.
This is really back to my strong belief that we need regulation when it comes to user profiling. IMHO it should just be banned. Have a listen and let me know what you think!
#Vivaldi #Browser #AI #SurveillanceCapitalism #Meta #Politics #internet #Web
youtube.com
Enjoying the podcast? Tap follow, leave a review, or give us a like.As the internet grows more polarised and manipulated, we’re joined by Jon von Tetzchner—c...
I was on a new podcast called WTF Now. My episode is called How the internet went wrong. Sad title, but you will understand when you listen.
This is really back to my strong belief that we need regulation when it comes to user profiling. IMHO it should just be banned. Have a listen and let me know what you think!
#Vivaldi #Browser #AI #SurveillanceCapitalism #Meta #Politics #internet #Web
youtube.com
Enjoying the podcast? Tap follow, leave a review, or give us a like.As the internet grows more polarised and manipulated, we’re joined by Jon von Tetzchner—c...
I was on a new podcast called WTF Now. My episode is called How the internet went wrong. Sad title, but you will understand when you listen.
This is really back to my strong belief that we need regulation when it comes to user profiling. IMHO it should just be banned. Have a listen and let me know what you think!
#Vivaldi #Browser #AI #SurveillanceCapitalism #Meta #Politics #internet #Web
youtube.com
Enjoying the podcast? Tap follow, leave a review, or give us a like.As the internet grows more polarised and manipulated, we’re joined by Jon von Tetzchner—c...
La belle matérialité du site https://mater.digital/
La belle matérialité du site https://mater.digital/
#web #javascript
Cet article est absolument parfait: Il cristallise tout ce qui me fait techniquement VOMIR le web tel qu'il est actuellement, aussi bien en tant qu'utilisateur du web qu'en tant que développeur.
https://sebsauvage.net/links/?3j-1qA
🙏AMEN !
sebsauvage.net
#web #javascript
Cet article est absolument parfait: Il cristallise tout ce qui me fait techniquement VOMIR le web tel qu'il est actuellement, aussi bien en tant qu'utilisateur du web qu'en tant que développeur.
https://sebsauvage.net/links/?3j-1qA
🙏AMEN !
sebsauvage.net
Google is wholeheartedly embracing AI technology and its new tool could rejuvenate the internet or bring about the apocalypse for websites.
@tomgermain goes into detail in this BBC Future long read:
https://flip.it/KQXC3E
bbc.com
Google says adding more AI to its search engine will rejuvenate the internet. Others predict an apocalypse for websites. One thing is clear: this era of online history is closing.
Google is wholeheartedly embracing AI technology and its new tool could rejuvenate the internet or bring about the apocalypse for websites.
@tomgermain goes into detail in this BBC Future long read:
https://flip.it/KQXC3E
bbc.com
Google says adding more AI to its search engine will rejuvenate the internet. Others predict an apocalypse for websites. One thing is clear: this era of online history is closing.
Happy to announce the 0.1.0 release of my Rust web framework! 🎉🦀
🐭 **Ratzilla** — Build terminal-themed web applications.
🌀 Now supports WebGL2 and dynamically calling JS functions!
🦀 Built with Rust, WebAssembly & @ratatui_rs
⭐ GitHub: https://github.com/orhun/ratzilla
#rustlang #ratatui #tui #webassembly #web #framework #webgl2 #rendering #javascript #terminal
Happy to announce the 0.1.0 release of my Rust web framework! 🎉🦀
🐭 **Ratzilla** — Build terminal-themed web applications.
🌀 Now supports WebGL2 and dynamically calling JS functions!
🦀 Built with Rust, WebAssembly & @ratatui_rs
⭐ GitHub: https://github.com/orhun/ratzilla
#rustlang #ratatui #tui #webassembly #web #framework #webgl2 #rendering #javascript #terminal
Two Approaches to Solving the “Quiet Fediverse” Problem: Conversation Backfilling Mechanisms https://lobste.rs/s/akvlo8 #distributed #web
https://hackers.pub/@hongminhee/2025/quiet-fediverse-two-approaches/en
hackers.pub
This post addresses the "quiet fediverse" problem, where users often experience fragmented conversations on decentralized social networks. The core issue stems from ActivityPub's distributed nature, where conversations are spread across multiple servers, leading to incomplete views of discussions. The author explores two main approaches to solve this: reply tree crawling and the context owner approach. Reply tree crawling, pioneered by Mastodon, involves fetching all replies to reconstruct the conversation, while the context owner approach centralizes conversation management with the original author or designated entity. The post details the technical mechanisms, advantages, and disadvantages of each method, highlighting the importance of the `context` attribute in ActivityPub. It also discusses ongoing debates, such as moderation paradigms and solutions for missing parent propagation, and introduces additional backfill mechanisms like periodic crawling and mention-based discovery. The article emphasizes the need for hybrid approaches, combining multiple strategies to ensure more complete conversations, and underscores the importance of standardization efforts and collaboration among different implementations. Ultimately, the post provides a comprehensive overview of the challenges and potential solutions for creating a more connected and coherent user experience in the fediverse.
Two Approaches to Solving the “Quiet Fediverse” Problem: Conversation Backfilling Mechanisms https://lobste.rs/s/akvlo8 #distributed #web
https://hackers.pub/@hongminhee/2025/quiet-fediverse-two-approaches/en
hackers.pub
This post addresses the "quiet fediverse" problem, where users often experience fragmented conversations on decentralized social networks. The core issue stems from ActivityPub's distributed nature, where conversations are spread across multiple servers, leading to incomplete views of discussions. The author explores two main approaches to solve this: reply tree crawling and the context owner approach. Reply tree crawling, pioneered by Mastodon, involves fetching all replies to reconstruct the conversation, while the context owner approach centralizes conversation management with the original author or designated entity. The post details the technical mechanisms, advantages, and disadvantages of each method, highlighting the importance of the `context` attribute in ActivityPub. It also discusses ongoing debates, such as moderation paradigms and solutions for missing parent propagation, and introduces additional backfill mechanisms like periodic crawling and mention-based discovery. The article emphasizes the need for hybrid approaches, combining multiple strategies to ensure more complete conversations, and underscores the importance of standardization efforts and collaboration among different implementations. Ultimately, the post provides a comprehensive overview of the challenges and potential solutions for creating a more connected and coherent user experience in the fediverse.
Two Approaches to Solving the “Quiet Fediverse” Problem: Conversation Backfilling Mechanisms https://lobste.rs/s/akvlo8 #distributed #web
https://hackers.pub/@hongminhee/2025/quiet-fediverse-two-approaches/en
hackers.pub
This post addresses the "quiet fediverse" problem, where users often experience fragmented conversations on decentralized social networks. The core issue stems from ActivityPub's distributed nature, where conversations are spread across multiple servers, leading to incomplete views of discussions. The author explores two main approaches to solve this: reply tree crawling and the context owner approach. Reply tree crawling, pioneered by Mastodon, involves fetching all replies to reconstruct the conversation, while the context owner approach centralizes conversation management with the original author or designated entity. The post details the technical mechanisms, advantages, and disadvantages of each method, highlighting the importance of the `context` attribute in ActivityPub. It also discusses ongoing debates, such as moderation paradigms and solutions for missing parent propagation, and introduces additional backfill mechanisms like periodic crawling and mention-based discovery. The article emphasizes the need for hybrid approaches, combining multiple strategies to ensure more complete conversations, and underscores the importance of standardization efforts and collaboration among different implementations. Ultimately, the post provides a comprehensive overview of the challenges and potential solutions for creating a more connected and coherent user experience in the fediverse.
Elementary OS 8: Gestos renovados e dock otimizada redefinem a experiência
🔗 https://tugatech.com.pt/t67577-elementary-os-8-gestos-renovados-e-dock-otimizada-redefinem-a-experiencia
tugatech.com.pt
A equipa por trás do popular sistema operativo focado na privacidade e usabilidade, o elementary OS, acaba de lançar a mais recente atualização para a sua vers
Here are three new apps building out the open social web https://www.theverge.com/news/680895/fediverse-fediforum-2025-open-social-web-apps #News #Tech #Web
theverge.com
The open web continues to grow.
Here are three new apps building out the open social web https://www.theverge.com/news/680895/fediverse-fediforum-2025-open-social-web-apps #News #Tech #Web
theverge.com
The open web continues to grow.
I do analysis of apps and other solutions for organizations from time to time, usually providing decision frameworks.
Nothing brings me more pleasure that stopping a good business buying an app whose website is littered with stolen content, obviously fake testimonials and api keys strewn throughout their front end code (that and as always, code that seems to have been stolen from another failed startup).
Guys it’s super easy to see if a biz is selling vaporware. But if you need some help we’re always here
Elementary OS 8: Gestos renovados e dock otimizada redefinem a experiência
🔗 https://tugatech.com.pt/t67577-elementary-os-8-gestos-renovados-e-dock-otimizada-redefinem-a-experiencia
tugatech.com.pt
A equipa por trás do popular sistema operativo focado na privacidade e usabilidade, o elementary OS, acaba de lançar a mais recente atualização para a sua vers
Covert Web-to-App Tracking via Localhost on Android
#HackerNews #Covert #Web-to-App #Tracking #Localhost #Android #Privacy #Security
localmess.github.io
How does this work? While there are subtle differences in the way Meta and Yandex bridge web and mobile contexts and identifiers, both of them essentially misuse the unvetted access to localhost sockets. The Android OS allows any installed app with the INTERNET permission to open a listening socket on the loopback interface (127.0.0.1). Browsers running on the same device also access this interface without user consent or platform mediation. This allows JavaScript embedded on web pages to communicate with native Android apps and share identifiers and browsing habits, bridging ephemeral web identifiers to long-lived mobile app IDs using standard Web APIs.
If you missed this great conversation about the future of black experiences on the web, organised by @DAIR you can catch up now 👇
https://www.twitch.tv/videos/2472547406
Big thanks to @rudyfraser.com Catt Small, Ra'il I'Nasah Kiam & Roland X. Pullia for sharing their experiences.
We really hope to see more conversations showcasing the experiences of black people on the web in the future.
#BlackVoices #BlackExperience #SocialWeb #Web #Technology #Community #Fediverse #Mastodon
twitch.tv
dair_institute went live on Twitch. Catch up on their Science & Technology VOD now.
If you missed this great conversation about the future of black experiences on the web, organised by @DAIR you can catch up now 👇
https://www.twitch.tv/videos/2472547406
Big thanks to @rudyfraser.com Catt Small, Ra'il I'Nasah Kiam & Roland X. Pullia for sharing their experiences.
We really hope to see more conversations showcasing the experiences of black people on the web in the future.
#BlackVoices #BlackExperience #SocialWeb #Web #Technology #Community #Fediverse #Mastodon
twitch.tv
dair_institute went live on Twitch. Catch up on their Science & Technology VOD now.
NaaS – No-as-a-Service
No-as-a-Service (NaaS) is a simple API that returns a random rejection reason. Use it when you need a realistic excuse, a fun “no,” or want to simulate being turned down in style.
– from @hothead
❌ https://github.com/hotheadhacker/no-as-a-service
#naas #noasaservice #api #webdev #http #json #random #web #no #reaction #js #javascript #nonsense #asaservice #joke
Shared: Good Internet https://goodinternetmagazine.com/.
A magazine about the internet. Lots of articles about the web, blogging, personal websites, small web, etc.
goodinternetmagazine.com
A magazine for the non-corporate web, using code as an art medium, and web development enthusiasm of hobbyists and professionals alike.
Color blindness simulator: Takes an image and shows what it looks like with varying vision. This one has academic citations for the simulation filters
https://daltonlens.org/colorblindness-simulator
#colorblindness #accessibility #colorblind #images #color #web #+
daltonlens.org
Software and technical posts about color blindness.
this is it -- GOOD INTERNET magazine is LIVE, BABY~ 🥂 🎊 🥳
https://goodinternetmagazine.com/
https://goodinternetmagazine.com/
https://goodinternetmagazine.com/
i present the spring 2025 issue of GOOD INTERNET, featuring stories by @binarydigit, @internetarchive, @Leilukin, @greg, @surprisetalk, and SO MUCH MORE!
with only 6.5 hours to go before my surgery, the website is now launched! you can order physical or digital copies of the magazine! :) there are some initial stories on the website now, but more are coming over the next week, so keep an eye on your RSS feeds!!
‼️quick note: pre-ordered print editions will begin shipping out this week (!!!) and digital editions will go out this week as well to emails!
🙏 THANK YOU SO MUCH to EVERYONE who helped with this. thank you to the contributors (like @robb/ @echofeed, & @adam/ @omgdotlol). thank you to the writers, thank you to everyone who thought about this project, shared it with others, and got the word out. i am so so so stoked to bring y'all this.
🕛 issue 2 is in the fall! :) get your submission ideas in!!
#html #css #web #indieweb #smallweb #socialmedia #internet #enshittification #website #webdev #webdesign #neocities #indie #zine #coding #code #personalweb #blog #blogging
goodinternetmagazine.com
A magazine for the non-corporate web, using code as an art medium, and web development enthusiasm of hobbyists and professionals alike.
this is it -- GOOD INTERNET magazine is LIVE, BABY~ 🥂 🎊 🥳
https://goodinternetmagazine.com/
https://goodinternetmagazine.com/
https://goodinternetmagazine.com/
i present the spring 2025 issue of GOOD INTERNET, featuring stories by @binarydigit, @internetarchive, @Leilukin, @greg, @surprisetalk, and SO MUCH MORE!
with only 6.5 hours to go before my surgery, the website is now launched! you can order physical or digital copies of the magazine! :) there are some initial stories on the website now, but more are coming over the next week, so keep an eye on your RSS feeds!!
‼️quick note: pre-ordered print editions will begin shipping out this week (!!!) and digital editions will go out this week as well to emails!
🙏 THANK YOU SO MUCH to EVERYONE who helped with this. thank you to the contributors (like @robb/ @echofeed, & @adam/ @omgdotlol). thank you to the writers, thank you to everyone who thought about this project, shared it with others, and got the word out. i am so so so stoked to bring y'all this.
🕛 issue 2 is in the fall! :) get your submission ideas in!!
#html #css #web #indieweb #smallweb #socialmedia #internet #enshittification #website #webdev #webdesign #neocities #indie #zine #coding #code #personalweb #blog #blogging
goodinternetmagazine.com
A magazine for the non-corporate web, using code as an art medium, and web development enthusiasm of hobbyists and professionals alike.
Ein sehr informativer Podcast über den gesteuerten Rechtsruck der U$A:
»Die Peter Thiel Story:
Peter Thiel ist der Strippenzieher hinter dem kulturellen Rechtsruck in den USA und einer der wichtigsten Unterstützer von Donald Trump. Mit Paypal und Facebook ist er reich geworden. Das ist die Geschichte des geheimnisvollen Tech-Milliardärs.«
🔊 https://www.deutschlandfunk.de/die-peter-thiel-story-100.html
#peterthiel #paypal #facebook #usa #web #rechtsruck #rechtsradikalismus #uspol #thielverse #trump #donaldtrump #podcast #rechts
Ein sehr informativer Podcast über den gesteuerten Rechtsruck der U$A:
»Die Peter Thiel Story:
Peter Thiel ist der Strippenzieher hinter dem kulturellen Rechtsruck in den USA und einer der wichtigsten Unterstützer von Donald Trump. Mit Paypal und Facebook ist er reich geworden. Das ist die Geschichte des geheimnisvollen Tech-Milliardärs.«
🔊 https://www.deutschlandfunk.de/die-peter-thiel-story-100.html
#peterthiel #paypal #facebook #usa #web #rechtsruck #rechtsradikalismus #uspol #thielverse #trump #donaldtrump #podcast #rechts
this is it -- GOOD INTERNET magazine is LIVE, BABY~ 🥂 🎊 🥳
https://goodinternetmagazine.com/
https://goodinternetmagazine.com/
https://goodinternetmagazine.com/
i present the spring 2025 issue of GOOD INTERNET, featuring stories by @binarydigit, @internetarchive, @Leilukin, @greg, @surprisetalk, and SO MUCH MORE!
with only 6.5 hours to go before my surgery, the website is now launched! you can order physical or digital copies of the magazine! :) there are some initial stories on the website now, but more are coming over the next week, so keep an eye on your RSS feeds!!
‼️quick note: pre-ordered print editions will begin shipping out this week (!!!) and digital editions will go out this week as well to emails!
🙏 THANK YOU SO MUCH to EVERYONE who helped with this. thank you to the contributors (like @robb/ @echofeed, & @adam/ @omgdotlol). thank you to the writers, thank you to everyone who thought about this project, shared it with others, and got the word out. i am so so so stoked to bring y'all this.
🕛 issue 2 is in the fall! :) get your submission ideas in!!
#html #css #web #indieweb #smallweb #socialmedia #internet #enshittification #website #webdev #webdesign #neocities #indie #zine #coding #code #personalweb #blog #blogging
goodinternetmagazine.com
A magazine for the non-corporate web, using code as an art medium, and web development enthusiasm of hobbyists and professionals alike.
🔟 521 ❤️ Pure #CSS #3D toggle with a single `input[type=checkbox]` and its `label` - check it out on @codepen https://codepen.io/thebabydino/pen/ajpqYW
🔟 521 ❤️ Pure #CSS #3D toggle with a single `input[type=checkbox]` and its `label` - check it out on @codepen https://codepen.io/thebabydino/pen/ajpqYW
9️⃣ 593 ❤️ Cycling gradient glow with no text duplication - see it on @codepen https://codepen.io/thebabydino/pen/rNPOpJK
A super simple, but cool #SVG #filter trick.
We create the gradient text.
The filter creates a blurred copy of it and places it underneath.
We then animate the #CSS #gradient stops... magic! 🪄✨
#cssGradient #svgFilter #glow #coding #filterEffect #gradientGlow #frontend #web #dev #webDev #webDevelopment #code
8️⃣ 736 ♥️ Pure #CSS 1 div card patterns (no SVG, no images other than CSS gradients) - see it on @codepen https://codepen.io/thebabydino/pen/NWxBzRv
A bunch of variations on the pure CSS #halftone technique detailed in this article https://frontendmasters.com/blog/pure-css-halftone-effect-in-3-declarations/
#cssPattern #cssPatterns #cssGradient #halftonePattern #frontend #coding #web #dev #webDev #webDevelopment #code
Deadname -
Comment trouver le prénom de naissance d’une personne trans ? Comment connaître le vrai prénom d’un trans ? Voici un lien très utile qui permet d’obtenir cette information cruciale en quelques clics https://deadname.fr/
Ça se voit que je n’arrive pas à écrire en oppre-cis ? N’hésitez pas à partager largement, le but est que le lien arrive quand quelqu’un cherche vraiment cette question.
jena.pink
7️⃣ 749 ❤️ Pure #CSS Möbius 6hedrons https://codepen.io/thebabydino/pen/mJojKd
The how behind I live coded it in 30 minutes https://css-tricks.com/how-i-live-coded-my-most-hearted-codepen-demo/
Could be improved with CSS variables nowadays, see https://css-tricks.com/simplifying-css-cubes-custom-properties/ as well as by using CSS trigonometric functions.
#3D #Maths #geometry #cssTransform #cssTransforms #trigonometry #code #web #dev #webDev #webDevelopment #coding #frontend
6️⃣ 816 ❤️ no sprite, no JS twitter 🤍 animation https://codepen.io/thebabydino/pen/RRRRZE
Behind the demo https://css-tricks.com/recreating-the-twitter-heart-animation/
Now twitter uses an SVG heart 👍 (that path data though 😵) and upon clicking, inserts a div with the sparks. There are better ways to do it... still better than sprites!
#CSS #code #coding #frontend #webDev #web #dev #webDevelopment
A little thing I made on @codepen.io: breathing with `shape()`
https://codepen.io/thebabydino/pen/vEEqMWo
`shape()` is supported in Chrome 135+ and Safari 18.4+.
Firefox 126+ supports it for simple shapes (but not for this demo) when setting thelayout.css.basic-shape-shape.enabled to true in about:config.
#CSS #clipPath #cssClipPath #animation #cssShapes #code #coding #clipping #web #dev #webDevelopment #webDev #frontend
A little thing I made on @codepen.io: breathing with `shape()`
https://codepen.io/thebabydino/pen/vEEqMWo
`shape()` is supported in Chrome 135+ and Safari 18.4+.
Firefox 126+ supports it for simple shapes (but not for this demo) when setting thelayout.css.basic-shape-shape.enabled to true in about:config.
#CSS #clipPath #cssClipPath #animation #cssShapes #code #coding #clipping #web #dev #webDevelopment #webDev #frontend
5️⃣ 850 ♥️ No SVG, no image fluid slider https://codepen.io/thebabydino/pen/qByGqOm
#JS used only for
a) feature support detection
b) updating slider value in --val
Uses only
1 × input[type=range] for actual slider
1 × output for current value display
1 × datalist for ruler
One of my best sliders on @codepen.
#CSS #slider #rangeInput #coding #web #dev #webDevelopment #webDev #code #frontend #cssGrid #cssMask #cssGradient

Fluid vertical slider. Dragging the thumb bends the track and ruller around it. The ruler markings also dynamically fade the further away from the thumb they are. On the right, there is a DevTools panel open to show that this is made with a range input, an output and a datalist with options, all inside a group wrapper.
«Easier Onboarding for Your Fediverse Experience»
Getting started with #ActivityPub on #WordPress just got a lot easier. A new guided onboarding experience is now part of the plugin, designed to help you configure key settings and understand how your site connects to the #Fediverse—from the moment you activate it.
https://activitypub.blog/2025/05/14/5-9-0-easier-onboarding-for-your-fediverse-experience/
activitypub.blog
Getting started with ActivityPub on WordPress just got a lot easier. A new guided onboarding experience is now part of the plugin, designed to help you configure key settings and understand how you…
Just noticed an issue with Look Over There!¹ where some of the sites I was forwarding to archive.org began to fail.
I’ve now documented the proper way to redirect to archive.org in Look Over There! and I also wrote a brief post on the relevant Reddit to alert the folks at The Internet Archive about this and suggest an improvement that could benefit findability on sites with redirects in general:
¹ e.g., See our instance for Small Technology Foundation at https://look-over-there.small-web.org
#TheInternetArchive #LookOverThere #SmallWeb #SmallTech #web #archiving

Screenshot of Look Over There!’s admin interface, now showing an information callout with instructions on how to properly foward to The Internet Archive: When forwarding to The Internet Archive, make sure you forward to a specific crawl (ensure the URL has the crawl timestamp in it). If not, the next time it crawls the site, it will find the redirect to itself and your redirect will start to fail. e.g., When forwarding better.fyi: Correct: https://web.archive.org/web/20250418214123/https://better.fyi/ Incorrect: https://web.archive.org/web/https://better.fyi/
Just noticed an issue with Look Over There!¹ where some of the sites I was forwarding to archive.org began to fail.
I’ve now documented the proper way to redirect to archive.org in Look Over There! and I also wrote a brief post on the relevant Reddit to alert the folks at The Internet Archive about this and suggest an improvement that could benefit findability on sites with redirects in general:
¹ e.g., See our instance for Small Technology Foundation at https://look-over-there.small-web.org
#TheInternetArchive #LookOverThere #SmallWeb #SmallTech #web #archiving

Screenshot of Look Over There!’s admin interface, now showing an information callout with instructions on how to properly foward to The Internet Archive: When forwarding to The Internet Archive, make sure you forward to a specific crawl (ensure the URL has the crawl timestamp in it). If not, the next time it crawls the site, it will find the redirect to itself and your redirect will start to fail. e.g., When forwarding better.fyi: Correct: https://web.archive.org/web/20250418214123/https://better.fyi/ Incorrect: https://web.archive.org/web/https://better.fyi/
«Easier Onboarding for Your Fediverse Experience»
Getting started with #ActivityPub on #WordPress just got a lot easier. A new guided onboarding experience is now part of the plugin, designed to help you configure key settings and understand how your site connects to the #Fediverse—from the moment you activate it.
https://activitypub.blog/2025/05/14/5-9-0-easier-onboarding-for-your-fediverse-experience/
activitypub.blog
Getting started with ActivityPub on WordPress just got a lot easier. A new guided onboarding experience is now part of the plugin, designed to help you configure key settings and understand how you…
«Easier Onboarding for Your Fediverse Experience»
Getting started with #ActivityPub on #WordPress just got a lot easier. A new guided onboarding experience is now part of the plugin, designed to help you configure key settings and understand how your site connects to the #Fediverse—from the moment you activate it.
https://activitypub.blog/2025/05/14/5-9-0-easier-onboarding-for-your-fediverse-experience/
activitypub.blog
Getting started with ActivityPub on WordPress just got a lot easier. A new guided onboarding experience is now part of the plugin, designed to help you configure key settings and understand how you…
«Easier Onboarding for Your Fediverse Experience»
Getting started with #ActivityPub on #WordPress just got a lot easier. A new guided onboarding experience is now part of the plugin, designed to help you configure key settings and understand how your site connects to the #Fediverse—from the moment you activate it.
https://activitypub.blog/2025/05/14/5-9-0-easier-onboarding-for-your-fediverse-experience/
activitypub.blog
Getting started with ActivityPub on WordPress just got a lot easier. A new guided onboarding experience is now part of the plugin, designed to help you configure key settings and understand how you…
4️⃣ 909 ♥️ neon hex https://codepen.io/thebabydino/pen/zGmdep
Most people know my CSS stuff, but this was my most hearted @codepen demo for some three quarters of a decade... and it's a #canvas one! The #JS feels dated nowadays, but oh, well... still got a soft spot for this one.
#code #coding #frontend #hexGrid #web #dev #webDev #webDevelopment #geometry
«Easier Onboarding for Your Fediverse Experience»
Getting started with #ActivityPub on #WordPress just got a lot easier. A new guided onboarding experience is now part of the plugin, designed to help you configure key settings and understand how your site connects to the #Fediverse—from the moment you activate it.
https://activitypub.blog/2025/05/14/5-9-0-easier-onboarding-for-your-fediverse-experience/
activitypub.blog
Getting started with ActivityPub on WordPress just got a lot easier. A new guided onboarding experience is now part of the plugin, designed to help you configure key settings and understand how you…
3️⃣ 1044 ♥️ Pure #CSS gravity button https://codepen.io/thebabydino/pen/bGzeQrv - a bit mixed about it, it was just an exercise in getting a certain result - don't use it in the wild!
My first ever @codepen demo to get to 1K ♥️. And it got copied left and right.
¯\_(ツ)_/¯
#cssTransforms #cssTransform #coding #web #dev #webDev #webDevelopment #code #frontend

Screenshot of the gravity button. Shows round particles appearing and getting pulled towards the button. As they approach, they accelerate and get stretched before smashing into the button and causing sparks.

August 2024 post showing how I found this demo on a website, wrapped in AI-generated crap that claims to explain what's going on. Except it gets it very wrong. And they don't indicate in any way that someone else (me!) made it.

My post about finding my demo on in a video on the Indiamoon YouTube channel. The video is 90 seconds of auto-typing code and also doesn't credit me.
2️⃣ 1076 ♥️ Simplest inner glow card animation https://codepen.io/thebabydino/pen/WNVPdJg - a super simple pure #CSS demo I made in a few minutes to answer a reddit question and never expected would even get noticed much. It was my only 2024 demo to make into the most hearted 100 Pens of the year on @codepen.
#cssFilter #borderImage #glow #code #cssGradient #conicGradient #coding #web #dev #webDevelopment #webDev #frontend
"Sam Altman's AI army is laughing its silicon balls off while you're knee-deep in React's virtual DOMshit, praying your app doesn't choke on its own bloated corpse. This isn't progress. It's a fucking tragedy. You've got a shiny new Ferrari in your garage, and you're still riding a rusty tricycle with a flat tire. Grow the fuck up."
justfuckingusehtml.com
Stop reinventing the wheel. The web was doing just fine before your bloated frameworks crawled out of the sewer.
"Sam Altman's AI army is laughing its silicon balls off while you're knee-deep in React's virtual DOMshit, praying your app doesn't choke on its own bloated corpse. This isn't progress. It's a fucking tragedy. You've got a shiny new Ferrari in your garage, and you're still riding a rusty tricycle with a flat tire. Grow the fuck up."
justfuckingusehtml.com
Stop reinventing the wheel. The web was doing just fine before your bloated frameworks crawled out of the sewer.
Internet artifacts
https://neal.fun/internet-artifacts
Today is Global Accessibility Awareness Day! W3C’s vision includes a web that is accessible to all. Learn more about our work by exploring @wai. Today is a day to learn, reflect and take action so that the one billion people with disabilities/impairments can benefit from and contribute to the development of the #web. Consider our sponsorship opportunities or make a donation to help us make the web work, for everyone. #GAAD #WebAccessibility #WAI
https://www.w3.org/sponsor/
"Sam Altman's AI army is laughing its silicon balls off while you're knee-deep in React's virtual DOMshit, praying your app doesn't choke on its own bloated corpse. This isn't progress. It's a fucking tragedy. You've got a shiny new Ferrari in your garage, and you're still riding a rusty tricycle with a flat tire. Grow the fuck up."
justfuckingusehtml.com
Stop reinventing the wheel. The web was doing just fine before your bloated frameworks crawled out of the sewer.
popeye's #pipe /cigar (in sideeye-view) uhm ...looks "bit broken" aswell x-P
https://www.pinterest.com/pin/774689573399372376/
#web #internet #filter #smoking #google #searchengine #search #filtering #result #results #pipes #images #pics #fail #fails #funny #humor #lol
pinterest.com
This Pin was discovered by Jose Angel Nava. Discover (and save!) your own Pins on Pinterest
I turn 13 on @codepen in June, so here are my 13 most hearted demos:
1️⃣ 1092 ♥️ #CSS infinite #scroll gallery https://codepen.io/thebabydino/pen/XJrYqGb - my only demo to ever get to 1K ♥️ without being in most hearted of the year first
mostly CSS scroll-driven animations + tiniest bit of JS (~200 bytes for infinity part)
#cssVariables #cssTransforms #coding #code #frontend #cssTransform #3D #web #webDev #webDevelopment #dev #maths #mathematics #geometry #filter
Hey there, I thought I'd #askFedi because I'm already tired of #AI (#LLM) #slop killing the #web (and #computing in general), and it looks like it's only going to get worse. Is there a #movement that seeks to connect and promote content, #software, services, etc. made by actual #humanBeings? Maybe with a campaign badge.
Hey there, I thought I'd #askFedi because I'm already tired of #AI (#LLM) #slop killing the #web (and #computing in general), and it looks like it's only going to get worse. Is there a #movement that seeks to connect and promote content, #software, services, etc. made by actual #humanBeings? Maybe with a campaign badge.
(Almost) the last embarrasing GNOME website revamped! Big shoutout to @felipeborges
developer.gnome.org
Personal blog posts from the GNOME community.
(Almost) the last embarrasing GNOME website revamped! Big shoutout to @felipeborges
developer.gnome.org
Personal blog posts from the GNOME community.
(Almost) the last embarrasing GNOME website revamped! Big shoutout to @felipeborges
developer.gnome.org
Personal blog posts from the GNOME community.
In this talk, Jean-François Abramatic, former W3C Chairman who established W3C Europe 30 years ago, reflects on the origins of the #web. He honors pioneers like Vannevar Bush, Doug Engelbart, Ted Nelson, Vint Cerf, and Charles Goldfarb, and shares his role in the creation and growth of @w3c—emphasizing key figures, early challenges, and the value of collaboration and humility. #W3C30
🎬 Watch "Founding W3C Europe in the early days of the web": https://youtu.be/Qhaaanm79U4
In this talk, Jean-François Abramatic, former W3C Chairman who established W3C Europe 30 years ago, reflects on the origins of the #web. He honors pioneers like Vannevar Bush, Doug Engelbart, Ted Nelson, Vint Cerf, and Charles Goldfarb, and shares his role in the creation and growth of @w3c—emphasizing key figures, early challenges, and the value of collaboration and humility. #W3C30
🎬 Watch "Founding W3C Europe in the early days of the web": https://youtu.be/Qhaaanm79U4
(Almost) the last embarrasing GNOME website revamped! Big shoutout to @felipeborges
developer.gnome.org
Personal blog posts from the GNOME community.
In this talk, Jean-François Abramatic, former W3C Chairman who established W3C Europe 30 years ago, reflects on the origins of the #web. He honors pioneers like Vannevar Bush, Doug Engelbart, Ted Nelson, Vint Cerf, and Charles Goldfarb, and shares his role in the creation and growth of @w3c—emphasizing key figures, early challenges, and the value of collaboration and humility. #W3C30
🎬 Watch "Founding W3C Europe in the early days of the web": https://youtu.be/Qhaaanm79U4
Every once in a while, I read my old blog posts that link to other articles or blogs. 99% of those sites are now offline or show a domain-for-sale page. It kind of makes me sad. Most of my own websites are still online after 20+ years. I wonder why they gave up.
That being said, this instance will be online forever - I'll make sure of it. Even after my passing, I want it to live on. My websites have survived even when hosting companies went bankrupt, and so will this instance.
#MementoMoriSocial #Websites #SelfHosted #Blogging #Blogs #Links #Web #URLs
I'm working on setting up a #NonProfit for #BTFree , which is a #digital #privacy, #advocacy and #consulting #platform, aka running #social #web platforms such as #Peertube or to help folks set up their own.
So I'm going to need to take #donations . Looking at @Liberapay , but they still need a #payment #processor like #Paypal.
So what's the advantage of something like Liberapay if I still need Paypal to handle actual donations? Not criticizing, attempting to learn. #Fedi
I'm working on setting up a #NonProfit for #BTFree , which is a #digital #privacy, #advocacy and #consulting #platform, aka running #social #web platforms such as #Peertube or to help folks set up their own.
So I'm going to need to take #donations . Looking at @Liberapay , but they still need a #payment #processor like #Paypal.
So what's the advantage of something like Liberapay if I still need Paypal to handle actual donations? Not criticizing, attempting to learn. #Fedi
Every once in a while, I read my old blog posts that link to other articles or blogs. 99% of those sites are now offline or show a domain-for-sale page. It kind of makes me sad. Most of my own websites are still online after 20+ years. I wonder why they gave up.
That being said, this instance will be online forever - I'll make sure of it. Even after my passing, I want it to live on. My websites have survived even when hosting companies went bankrupt, and so will this instance.
#MementoMoriSocial #Websites #SelfHosted #Blogging #Blogs #Links #Web #URLs
Every once in a while, I read my old blog posts that link to other articles or blogs. 99% of those sites are now offline or show a domain-for-sale page. It kind of makes me sad. Most of my own websites are still online after 20+ years. I wonder why they gave up.
That being said, this instance will be online forever - I'll make sure of it. Even after my passing, I want it to live on. My websites have survived even when hosting companies went bankrupt, and so will this instance.
#MementoMoriSocial #Websites #SelfHosted #Blogging #Blogs #Links #Web #URLs
Chers.ères mastonautes. Je souhaite me fabriquer un #blog pour y raconter ma vie, y mettre mes photos etc. Quel outil me conseilleriez-vous ? Merci de me raconter
#question #web #personnel
are there any ‘good’ #WordPress + #WooCommerce self-host alts? 😩
i want to be rid of Automattic, but my options are limited on a shared server…
i _yearn_ for low maint & simplified UX
i'd like to attempt #ActivityPub WP integration but… spam, security, mgmt
Woo is bloated & the WP #UI / #UX continues to devolve
my ideal would be to nix all ecomm & have a gallery/art rep, but i could be delusional…
> i need art sales + social marketing <
not another barrier
💻 🤷🏽
are there any ‘good’ #WordPress + #WooCommerce self-host alts? 😩
i want to be rid of Automattic, but my options are limited on a shared server…
i _yearn_ for low maint & simplified UX
i'd like to attempt #ActivityPub WP integration but… spam, security, mgmt
Woo is bloated & the WP #UI / #UX continues to devolve
my ideal would be to nix all ecomm & have a gallery/art rep, but i could be delusional…
> i need art sales + social marketing <
not another barrier
💻 🤷🏽
Chers.ères mastonautes. Je souhaite me fabriquer un #blog pour y raconter ma vie, y mettre mes photos etc. Quel outil me conseilleriez-vous ? Merci de me raconter
#question #web #personnel
@w3c This is all so that the browsers can soak up every last bit of resource a system can give, instead of sharing nicely with all the other apps a user wants to run. Things are going the wrong way. The W3C isn't doing a good job; the trick is to work out how to use the minimum of resources, NOT the maximum.
🔁 From our "Digital Crossroads" collection:
🔗 Some Nice Things with SVG - https://www.yellowduck.be/posts/some-nice-things-with-svg?ref=feedle.world
---
See other stories like this one here: https://feedle.world/digital-crossroads

feedle.world
Making the Web a little more open - one story at a time.
🔁 From our "Digital Crossroads" collection:
🔗 Some Nice Things with SVG - https://www.yellowduck.be/posts/some-nice-things-with-svg?ref=feedle.world
---
See other stories like this one here: https://feedle.world/digital-crossroads

feedle.world
Making the Web a little more open - one story at a time.
Security engineer @alexhaydock acquired a Wii at the #EMF2024 Swap Shop. He intended to use it to emulate games, but when he realized that it could be used to host a website, he decided to try that instead. @404mediaco’s Samantha Cole spoke to him about how well it’s working, and what he’s planning to do with it (#EMF2026, here he comes). Check out the second link to find out how our friends at 404 are doing, and what they’re cooking up next.
https://www.404media.co/this-website-is-running-on-a-wii/
https://www.404media.co/how-404-media-is-navigating-economic-headwinds/
#Technology #Tech #Web #OperatingSystems #Wii #Nintendo #Emulation #Modding #Newstodon #NewstodonFriday #FollowFriday
404media.co
The economy is bad. Here's how we're doing, and how you can help us.
Security engineer @alexhaydock acquired a Wii at the #EMF2024 Swap Shop. He intended to use it to emulate games, but when he realized that it could be used to host a website, he decided to try that instead. @404mediaco’s Samantha Cole spoke to him about how well it’s working, and what he’s planning to do with it (#EMF2026, here he comes). Check out the second link to find out how our friends at 404 are doing, and what they’re cooking up next.
https://www.404media.co/this-website-is-running-on-a-wii/
https://www.404media.co/how-404-media-is-navigating-economic-headwinds/
#Technology #Tech #Web #OperatingSystems #Wii #Nintendo #Emulation #Modding #Newstodon #NewstodonFriday #FollowFriday
404media.co
The economy is bad. Here's how we're doing, and how you can help us.
New Kitten release 🥳
Fixes:
• Components with slotted content in Markdown pages¹ are now properly supported.
• Backticks in content slotted into components in Markdown pages are now automatically escaped.
Enjoy!
💕
#Kitten #SmallWeb #release #markdown #fixes #components #web #dev
¹ https://kitten.small-web.org/reference/#markdown-pages-page-md-files
kitten.small-web.org
New Kitten release 🎉
• New: Lovely new icons¹ and new callouts in Kitten Settings²
• New: Markdown now supports attributes and bracketed spans³
• New: client-side `kitten` global with `trigger` function for triggering events on the server from the client. (Useful when streaming client-side JavaScript when using Kitten’s Streaming HTML⁴ workflow. e.g., when you have to use a client-only web API like the Clipboard API but you want to keep all your logic on your server-side page.⁵)
• Fixed: The bound render function returned by `KittenComponent` class’s `component` getter now correctly awaits asynchronous templates. (In Kitten, you don’t have to care whether your templates contain promises. Kitten handles all that for you.)
Enjoy! 💕
¹ https://kitten.small-web.org/reference/#icons
² https://mastodon.ar.al/@aral/114381983893061099
³ https://kitten.small-web.org/reference/#markdown-support (also see https://mastodon.ar.al/@aral/114381462302862256)
⁴ https://kitten.small-web.org/tutorials/streaming-html/
⁵ e.g., See how I use this to implement a copy to clipboard button in the database page of Kitten’s Settings: https://codeberg.org/kitten/app/src/branch/main/web/%F0%9F%90%B1/settings%F0%9F%94%92/db/index.page.js#L33 Of course, you don’t have to use this and you can just write client-side JavaScript or use the built-in Alpine.js integration. e.g., how I do it on the (older) settings/identity page: https://codeberg.org/kitten/app/src/branch/main/web/%F0%9F%90%B1/settings%F0%9F%94%92/identity/index.page.js#L7
#Kitten #SmallWeb #web #dev #markdown #icons #PhosphorIcons #HTML #CSS #JavaScript #StreamingHTML #htmx #WebSocket #NodeJS
codeberg.org
app - A web development kit that’s small, purrs, and loves you.
New Kitten release 🎉
• New: Lovely new icons¹ and new callouts in Kitten Settings²
• New: Markdown now supports attributes and bracketed spans³
• New: client-side `kitten` global with `trigger` function for triggering events on the server from the client. (Useful when streaming client-side JavaScript when using Kitten’s Streaming HTML⁴ workflow. e.g., when you have to use a client-only web API like the Clipboard API but you want to keep all your logic on your server-side page.⁵)
• Fixed: The bound render function returned by `KittenComponent` class’s `component` getter now correctly awaits asynchronous templates. (In Kitten, you don’t have to care whether your templates contain promises. Kitten handles all that for you.)
Enjoy! 💕
¹ https://kitten.small-web.org/reference/#icons
² https://mastodon.ar.al/@aral/114381983893061099
³ https://kitten.small-web.org/reference/#markdown-support (also see https://mastodon.ar.al/@aral/114381462302862256)
⁴ https://kitten.small-web.org/tutorials/streaming-html/
⁵ e.g., See how I use this to implement a copy to clipboard button in the database page of Kitten’s Settings: https://codeberg.org/kitten/app/src/branch/main/web/%F0%9F%90%B1/settings%F0%9F%94%92/db/index.page.js#L33 Of course, you don’t have to use this and you can just write client-side JavaScript or use the built-in Alpine.js integration. e.g., how I do it on the (older) settings/identity page: https://codeberg.org/kitten/app/src/branch/main/web/%F0%9F%90%B1/settings%F0%9F%94%92/identity/index.page.js#L7
#Kitten #SmallWeb #web #dev #markdown #icons #PhosphorIcons #HTML #CSS #JavaScript #StreamingHTML #htmx #WebSocket #NodeJS
codeberg.org
app - A web development kit that’s small, purrs, and loves you.
backdooms: A self-contained game that fits inside a QR code https://lobste.rs/s/nijc2a #art #games #web
https://github.com/Kuberwastaken/backdooms
github.com
A self-contained game that fits inside a QR code inspired by DOOM 1993 and The Backrooms - Kuberwastaken/backdooms
Coming tomorrow to Kitten… Kitten icons!
Kitten will have built-in support for the Phosphor icons set with full authoring-time language intelligence where you can search for icons via category and tag (in addition to the canonical alphabetical categorisation).
Thought this was going to take me a few hours but it took a few days thanks to running into issues with size limits, type inference from JavaScript types in modules, etc., with the TypeScript language server but I believe I’ve finally cracked it :)
💕
#Kitten #SmallWeb #icons #PhosphorIcons #staticTypes #taxonomy #web #dev #TypeScript #languageServer

Screenshot of detail of a Kitten template open in a code editor. Author is editing Kitten component reference in a markdown block, within a H2 header. The caret is at <${kitten.icons.tags. and the autocompletion box is open showing a list of possible fields: a11y, accessibility, accessible, accomodations, account, accounts, accuracy, acrobat, activity, add. The reasty of the line of code reads } weight=duotone size=1.5em/>
New Kitten release
• Fixes #236¹: The data preview pages in Kitten’s settings how handle circular references in the deserialised data (which may contain your custom classes if that’s what you were persisting in the database).
💕
PS. Those pages are very rudimentary at the moment and are good for getting quick visual overview of the data you’re persisting. For a fully interactive view, use Kitten’s interactive shell (REPL)² to explore your data until I’ve had a chance to implement a more comprehensive visual interface.
PPS. You persist data in Kitten using the built-in JavaScript Database (JSDB)³ (Or, of course, you can install and use any other database.)
¹ https://codeberg.org/kitten/app/issues/236
² https://kitten.small-web.org/reference/#kitten-s-interactive-shell-repl
³ https://codeberg.org/small-tech/jsdb#javascript-database-jsdb
#Kitten #SmallWeb #update #changes #database #JavaScriptDatabase #JSDB #javascript #nodeJS #web #dev
codeberg.org
A zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database for the Small Web that persists to a JavaScript transaction log.
New Kitten release
• Fixes #236¹: The data preview pages in Kitten’s settings how handle circular references in the deserialised data (which may contain your custom classes if that’s what you were persisting in the database).
💕
PS. Those pages are very rudimentary at the moment and are good for getting quick visual overview of the data you’re persisting. For a fully interactive view, use Kitten’s interactive shell (REPL)² to explore your data until I’ve had a chance to implement a more comprehensive visual interface.
PPS. You persist data in Kitten using the built-in JavaScript Database (JSDB)³ (Or, of course, you can install and use any other database.)
¹ https://codeberg.org/kitten/app/issues/236
² https://kitten.small-web.org/reference/#kitten-s-interactive-shell-repl
³ https://codeberg.org/small-tech/jsdb#javascript-database-jsdb
#Kitten #SmallWeb #update #changes #database #JavaScriptDatabase #JSDB #javascript #nodeJS #web #dev
codeberg.org
A zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database for the Small Web that persists to a JavaScript transaction log.
How am I only learning about mini_httpd now? Obviously not the most ideal for multi-site hosting, but still very cool!
acme.com
Ditch the DIY Drama: Why Use Fedify Instead of Building ActivityPub from Scratch? https://lobste.rs/s/ebab2d #distributed #web
https://hackers.pub/@hongminhee/2025/why-use-fedify
hackers.pub
So, you're captivated by the fediverse—the decentralized social web powered by protocols like ActivityPub. Maybe you're dreaming of building the next great federated app, a unique space connected to Mastodon, Lemmy, Pixelfed, and more. The temptation to dive deep and implement ActivityPub yourself, from the ground up, is strong. Total control, right? Understanding every byte? Sounds cool! But hold on a sec. Before you embark on that epic quest, let's talk reality. Implementing ActivityPub correctly isn't just one task; it's like juggling several complex standards while riding a unicycle… blindfolded. It’s hard. That's where Fedify comes in. It's a TypeScript framework designed to handle the gnarliest parts of ActivityPub development, letting you focus on what makes your app special, not reinventing the federation wheel. This post will break down the common headaches of DIY ActivityPub implementation and show how Fedify acts as the super-powered pain reliever, starting with the very foundation of how data is represented.Challenge #1: Data Modeling—Speaking ActivityStreams & JSON-LD Fluently At its core, ActivityPub relies on the ActivityStreams 2.0 vocabulary to describe actions and objects, and it uses JSON-LD as the syntax to encode this vocabulary. While powerful, this combination introduces significant complexity right from the start. First, understanding and correctly using the vast ActivityStreams vocabulary itself is a hurdle. You need to model everything—posts (Note, Article), profiles (Person, Organization), actions (Create, Follow, Like, Announce)—using the precise terms and properties defined in the specification. Manual JSON construction is tedious and prone to errors. Second, JSON-LD, the encoding layer, has specific rules that make direct JSON manipulation surprisingly tricky:Missing vs. Empty Array: In JSON-LD, a property being absent is often semantically identical to it being present with an empty array. Your application logic needs to treat these cases equally when checking for values. For example, these two Note objects mean the same thing regarding the name property:// No name property{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": "…"}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "name": [], "content": "…"}Single Value vs. Array: Similarly, a property holding a single value directly is often equivalent to it holding a single-element array containing that value. Your code must anticipate both representations for the same meaning, like for the content property here:// Single value{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": "Hello"}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": ["Hello"]}Object Reference vs. Embedded Object: Properties can contain either the full JSON-LD object embedded directly or just a URI string referencing that object. Your application needs to be prepared to fetch the object's data if only a URI is given (a process called dereferencing). These two Announce activities are semantically equivalent (assuming the URIs resolve correctly):{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Announce", // Embedded objects: "actor": { "type": "Person", "id": "http://sally.example.org/", "name": "Sally" }, "object": { "type": "Arrive", "id": "https://sally.example.com/arrive", /* ... */ }}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Announce", // URI references: "actor": "http://sally.example.org/", "object": "https://sally.example.com/arrive"}<Attempting to manually handle all these vocabulary rules and JSON-LD variations consistently across your application inevitably leads to verbose, complex, and fragile code, ripe for subtle bugs that break federation. Fedify tackles this entire data modeling challenge with its comprehensive, type-safe Activity Vocabulary API. It provides TypeScript classes for ActivityStreams types and common extensions, giving you autocompletion and compile-time safety. Crucially, these classes internally manage all the tricky JSON-LD nuances. Fedify's property accessors present a consistent interface—non-functional properties (like tags) always return arrays, functional properties (like content) always return single values or null. It handles object references versus embedded objects seamlessly through dereferencing accessors (like activity.getActor()) which automatically fetch remote objects via URI when needed—a feature known as property hydration. With Fedify, you work with a clean, predictable TypeScript API, letting the framework handle the messy details of AS vocabulary and JSON-LD encoding.Challenge #2: Discovery & Identity—Finding Your Actors Once you can model data, you need to make your actors discoverable. This primarily involves the WebFinger protocol (RFC 7033). You'd need to build a server endpoint at /.well-known/webfinger capable of parsing resource queries (like acct: URIs), validating the requested domain against your server, and responding with a precisely formatted JSON Resource Descriptor (JRD). This JRD must include specific links, like a self link pointing to the actor's ActivityPub ID using the correct media type. Getting any part of this wrong can make your actors invisible. Fedify simplifies this significantly. It automatically handles WebFinger requests based on the actor information you provide through its setActorDispatcher() method. Fedify generates the correct JRD response. If you need more advanced control, like mapping user-facing handles to internal identifiers, you can easily register mapHandle() or mapAlias() callbacks. You focus on defining your actors; Fedify handles making them discoverable.// Example: Define how to find actorsfederation.setActorDispatcher( "/users/{username}", async (ctx, username) => { /* ... */ });// Now GET /.well-known/webfinger?resource=acct:username@your.domain just works!<Challenge #3: Core ActivityPub Mechanics—Handling Requests and Collections Serving actor profiles requires careful content negotiation. A request for an actor's ID needs JSON-LD for machine clients (Accept: application/activity+json) but HTML for browsers (Accept: text/html). Handling incoming activities at the inbox endpoint involves validating POST requests, verifying cryptographic signatures, parsing the payload, preventing duplicates (idempotency), and routing based on activity type. Implementing collections (outbox, followers, etc.) with correct pagination adds another layer. Fedify streamlines all of this. Its core request handler (via Federation.fetch() or framework adapters like @fedify/express) manages content negotiation. You define actors with setActorDispatcher() and web pages with your framework (Hono, Express, SvelteKit, etc.)—Fedify routes appropriately. For the inbox, setInboxListeners() lets you define handlers per activity type (e.g., .on(Follow, ...)), while Fedify automatically handles validation, signature verification, parsing, and idempotency checks using its KV Store. Collection implementation is simplified via dispatchers (e.g., setFollowersDispatcher()); you provide logic to fetch a page of data, and Fedify constructs the correct Collection or CollectionPage with pagination.// Define inbox handlersfederation.setInboxListeners("/inbox", "/users/{handle}/inbox") .on(Follow, async (ctx, follow) => { /* Handle follow */ }) .on(Undo, async (ctx, undo) => { /* Handle undo */ });// Define followers collection logicfederation.setFollowersDispatcher( "/users/{handle}/followers", async (ctx, handle, cursor) => { /* ... */ });<Challenge #4: Reliable Delivery & Asynchronous Processing—Sending Activities Robustly Sending an activity requires more than a simple POST. Networks fail, servers go down. You need robust failure handling and retry logic (ideally with backoff). Processing incoming activities synchronously can block your server. Efficiently broadcasting to many followers (fan-out) requires background processing and using shared inboxes where possible. Fedify addresses reliability and scalability using its MessageQueue abstraction. When configured (highly recommended), Context.sendActivity() enqueues delivery tasks. Background workers handle sending with automatic retries based on configurable policies (like outboxRetryPolicy). Fedify supports various queue backends (Deno KV, Redis, PostgreSQL, AMQP). For high-traffic fan-out, Fedify uses an optimized two-stage mechanism to distribute the load efficiently.// Configure Fedify with a persistent queue (e.g., Deno KV)const federation = createFederation({ queue: new DenoKvMessageQueue(/* ... */), // ...});// Sending is now reliable and non-blockingawait ctx.sendActivity({ handle: "myUser" }, recipient, someActivity);<Challenge #5: Security—Avoiding Common Pitfalls Securing an ActivityPub server is critical. You need to implement HTTP Signatures (draft-cavage-http-signatures-12) for server-to-server authentication—a complex process. You might also need Linked Data Signatures (LDS) or Object Integrity Proofs (OIP) based on FEP-8b32 for data integrity and compatibility. Managing cryptographic keys securely is essential. Lastly, fetching remote resources risks Server-Side Request Forgery (SSRF) if not validated properly. Fedify is designed with security in mind. It automatically handles the creation and verification of HTTP Signatures, LDS, and OIP, provided you supply keys via setKeyPairsDispatcher(). It includes key management utilities. Crucially, Fedify's default document loader includes built-in SSRF protection, blocking requests to private IPs unless explicitly allowed.Challenge #6: Interoperability & Maintenance—Playing Nicely with Others The fediverse is diverse. Different servers have quirks. Ensuring compatibility requires testing and adaptation. Standards evolve with new Federation Enhancement Proposals (FEPs). You also need protocols like NodeInfo to advertise server capabilities. Fedify aims for broad interoperability and is actively maintained. It includes features like ActivityTransformers to smooth over implementation differences. NodeInfo support is built-in via setNodeInfoDispatcher().Challenge #7: Developer Experience—Actually Building Your App Beyond the protocol, building any server involves setup, testing, and debugging. With federation, debugging becomes harder—was the message malformed? Was the signature wrong? Is the remote server down? Is it a compatibility quirk? Good tooling is essential. Fedify enhances the developer experience significantly. Being built with TypeScript, it offers excellent type safety and editor auto-completion. The fedify CLI is a powerful companion designed to streamline common development tasks. You can quickly scaffold a new project tailored to your chosen runtime and web framework using fedify init. For debugging interactions and verifying data, fedify lookup is invaluable. It lets you inspect how any remote actor or object appears from the outside by performing WebFinger discovery and fetching the object's data. Fedify then displays the parsed object structure and properties directly in your terminal. For example, running:$ fedify lookup @fedify-example@fedify-blog.deno.dev<Will first show progress messages and then output the structured representation of the actor, similar to this:// Output of fedify lookup command (shows parsed object structure)Person { id: URL "https://fedify-blog.deno.dev/users/fedify-example", name: "Fedify Example Blog", published: 2024-03-03T13:18:11.857Z, // Simplified timestamp summary: "This blog is powered by Fedify, a fediverse server framework.", url: URL "https://fedify-blog.deno.dev/", preferredUsername: "fedify-example", publicKey: CryptographicKey { id: URL "https://fedify-blog.deno.dev/users/fedify-example#main-key", owner: URL "https://fedify-blog.deno.dev/users/fedify-example", publicKey: CryptoKey { /* ... CryptoKey details ... */ } }, // ... other properties like inbox, outbox, followers, endpoints ...}<This allows you to easily check how data is structured or troubleshoot why an interaction might be failing by seeing the actual properties Fedify parsed. Testing outgoing activities from your application during development is made much easier with fedify inbox. Running the command starts a temporary local server that acts as a publicly accessible inbox, displaying key information about the temporary actor it creates for receiving messages:$ fedify inbox✔ The ephemeral ActivityPub server is up and running: https://<unique_id>.lhr.life/✔ Sent follow request to @<some_test_account>@activitypub.academy.╭───────────────┬─────────────────────────────────────────╮│ Actor handle: │ i@<unique_id>.lhr.life │├───────────────┼─────────────────────────────────────────┤│ Actor URI: │ https://<unique_id>.lhr.life/i │├───────────────┼─────────────────────────────────────────┤│ Actor inbox: │ https://<unique_id>.lhr.life/i/inbox │├───────────────┼─────────────────────────────────────────┤│ Shared inbox: │ https://<unique_id>.lhr.life/inbox │╰───────────────┴─────────────────────────────────────────╯Web interface available at: http://localhost:8000/<You then configure your developing application to send an activity to the Actor inbox or Shared inbox URI provided. When an activity arrives, fedify inbox only prints a summary table to your console indicating that a request was received:╭────────────────┬─────────────────────────────────────╮│ Request #: │ 2 │├────────────────┼─────────────────────────────────────┤│ Activity type: │ Follow │├────────────────┼─────────────────────────────────────┤│ HTTP request: │ POST /i/inbox │├────────────────┼─────────────────────────────────────┤│ HTTP response: │ 202 │├────────────────┼─────────────────────────────────────┤│ Details │ https://<unique_id>.lhr.life/r/2 │╰────────────────┴─────────────────────────────────────╯<Crucially, the detailed information about the received request—including the full headers (like Signature), the request body (the Activity JSON), and the signature verification status—is only available in the web interface provided by fedify inbox. This web UI allows you to thoroughly inspect incoming activities during development.The Fedify Inbox web UI is where you view detailed activity information.<When you need to test interactions with the live fediverse from your local machine beyond just sending, fedify tunnel can securely expose your entire local development server temporarily. This suite of tools significantly eases the process of building and debugging federated applications.Conclusion: Build Features, Not Plumbing Implementing the ActivityPub suite of protocols from scratch is an incredibly complex and time-consuming undertaking. It involves deep dives into multiple technical specifications, cryptographic signing, security hardening, and navigating the nuances of a diverse ecosystem. While educational, it dramatically slows down the process of building the actual, unique features of your federated application. Fedify offers a well-architected, secure, and type-safe foundation, handling the intricacies of federation for you—data modeling, discovery, core mechanics, delivery, security, and interoperability. It lets you focus on your application's unique value and user experience. Stop wrestling with low-level protocol details and start building your vision for the fediverse faster and more reliably. Give Fedify a try! Getting started is straightforward. First, install the Fedify CLI using your preferred method. Once installed, create a new project template by running fedify init your-project-name. Check out the Fedify tutorials and Fedify manual to learn more. Happy federating!
Ditch the DIY Drama: Why Use Fedify Instead of Building ActivityPub from Scratch? https://lobste.rs/s/ebab2d #distributed #web
https://hackers.pub/@hongminhee/2025/why-use-fedify
hackers.pub
So, you're captivated by the fediverse—the decentralized social web powered by protocols like ActivityPub. Maybe you're dreaming of building the next great federated app, a unique space connected to Mastodon, Lemmy, Pixelfed, and more. The temptation to dive deep and implement ActivityPub yourself, from the ground up, is strong. Total control, right? Understanding every byte? Sounds cool! But hold on a sec. Before you embark on that epic quest, let's talk reality. Implementing ActivityPub correctly isn't just one task; it's like juggling several complex standards while riding a unicycle… blindfolded. It’s hard. That's where Fedify comes in. It's a TypeScript framework designed to handle the gnarliest parts of ActivityPub development, letting you focus on what makes your app special, not reinventing the federation wheel. This post will break down the common headaches of DIY ActivityPub implementation and show how Fedify acts as the super-powered pain reliever, starting with the very foundation of how data is represented.Challenge #1: Data Modeling—Speaking ActivityStreams & JSON-LD Fluently At its core, ActivityPub relies on the ActivityStreams 2.0 vocabulary to describe actions and objects, and it uses JSON-LD as the syntax to encode this vocabulary. While powerful, this combination introduces significant complexity right from the start. First, understanding and correctly using the vast ActivityStreams vocabulary itself is a hurdle. You need to model everything—posts (Note, Article), profiles (Person, Organization), actions (Create, Follow, Like, Announce)—using the precise terms and properties defined in the specification. Manual JSON construction is tedious and prone to errors. Second, JSON-LD, the encoding layer, has specific rules that make direct JSON manipulation surprisingly tricky:Missing vs. Empty Array: In JSON-LD, a property being absent is often semantically identical to it being present with an empty array. Your application logic needs to treat these cases equally when checking for values. For example, these two Note objects mean the same thing regarding the name property:// No name property{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": "…"}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "name": [], "content": "…"}Single Value vs. Array: Similarly, a property holding a single value directly is often equivalent to it holding a single-element array containing that value. Your code must anticipate both representations for the same meaning, like for the content property here:// Single value{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": "Hello"}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": ["Hello"]}Object Reference vs. Embedded Object: Properties can contain either the full JSON-LD object embedded directly or just a URI string referencing that object. Your application needs to be prepared to fetch the object's data if only a URI is given (a process called dereferencing). These two Announce activities are semantically equivalent (assuming the URIs resolve correctly):{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Announce", // Embedded objects: "actor": { "type": "Person", "id": "http://sally.example.org/", "name": "Sally" }, "object": { "type": "Arrive", "id": "https://sally.example.com/arrive", /* ... */ }}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Announce", // URI references: "actor": "http://sally.example.org/", "object": "https://sally.example.com/arrive"}<Attempting to manually handle all these vocabulary rules and JSON-LD variations consistently across your application inevitably leads to verbose, complex, and fragile code, ripe for subtle bugs that break federation. Fedify tackles this entire data modeling challenge with its comprehensive, type-safe Activity Vocabulary API. It provides TypeScript classes for ActivityStreams types and common extensions, giving you autocompletion and compile-time safety. Crucially, these classes internally manage all the tricky JSON-LD nuances. Fedify's property accessors present a consistent interface—non-functional properties (like tags) always return arrays, functional properties (like content) always return single values or null. It handles object references versus embedded objects seamlessly through dereferencing accessors (like activity.getActor()) which automatically fetch remote objects via URI when needed—a feature known as property hydration. With Fedify, you work with a clean, predictable TypeScript API, letting the framework handle the messy details of AS vocabulary and JSON-LD encoding.Challenge #2: Discovery & Identity—Finding Your Actors Once you can model data, you need to make your actors discoverable. This primarily involves the WebFinger protocol (RFC 7033). You'd need to build a server endpoint at /.well-known/webfinger capable of parsing resource queries (like acct: URIs), validating the requested domain against your server, and responding with a precisely formatted JSON Resource Descriptor (JRD). This JRD must include specific links, like a self link pointing to the actor's ActivityPub ID using the correct media type. Getting any part of this wrong can make your actors invisible. Fedify simplifies this significantly. It automatically handles WebFinger requests based on the actor information you provide through its setActorDispatcher() method. Fedify generates the correct JRD response. If you need more advanced control, like mapping user-facing handles to internal identifiers, you can easily register mapHandle() or mapAlias() callbacks. You focus on defining your actors; Fedify handles making them discoverable.// Example: Define how to find actorsfederation.setActorDispatcher( "/users/{username}", async (ctx, username) => { /* ... */ });// Now GET /.well-known/webfinger?resource=acct:username@your.domain just works!<Challenge #3: Core ActivityPub Mechanics—Handling Requests and Collections Serving actor profiles requires careful content negotiation. A request for an actor's ID needs JSON-LD for machine clients (Accept: application/activity+json) but HTML for browsers (Accept: text/html). Handling incoming activities at the inbox endpoint involves validating POST requests, verifying cryptographic signatures, parsing the payload, preventing duplicates (idempotency), and routing based on activity type. Implementing collections (outbox, followers, etc.) with correct pagination adds another layer. Fedify streamlines all of this. Its core request handler (via Federation.fetch() or framework adapters like @fedify/express) manages content negotiation. You define actors with setActorDispatcher() and web pages with your framework (Hono, Express, SvelteKit, etc.)—Fedify routes appropriately. For the inbox, setInboxListeners() lets you define handlers per activity type (e.g., .on(Follow, ...)), while Fedify automatically handles validation, signature verification, parsing, and idempotency checks using its KV Store. Collection implementation is simplified via dispatchers (e.g., setFollowersDispatcher()); you provide logic to fetch a page of data, and Fedify constructs the correct Collection or CollectionPage with pagination.// Define inbox handlersfederation.setInboxListeners("/inbox", "/users/{handle}/inbox") .on(Follow, async (ctx, follow) => { /* Handle follow */ }) .on(Undo, async (ctx, undo) => { /* Handle undo */ });// Define followers collection logicfederation.setFollowersDispatcher( "/users/{handle}/followers", async (ctx, handle, cursor) => { /* ... */ });<Challenge #4: Reliable Delivery & Asynchronous Processing—Sending Activities Robustly Sending an activity requires more than a simple POST. Networks fail, servers go down. You need robust failure handling and retry logic (ideally with backoff). Processing incoming activities synchronously can block your server. Efficiently broadcasting to many followers (fan-out) requires background processing and using shared inboxes where possible. Fedify addresses reliability and scalability using its MessageQueue abstraction. When configured (highly recommended), Context.sendActivity() enqueues delivery tasks. Background workers handle sending with automatic retries based on configurable policies (like outboxRetryPolicy). Fedify supports various queue backends (Deno KV, Redis, PostgreSQL, AMQP). For high-traffic fan-out, Fedify uses an optimized two-stage mechanism to distribute the load efficiently.// Configure Fedify with a persistent queue (e.g., Deno KV)const federation = createFederation({ queue: new DenoKvMessageQueue(/* ... */), // ...});// Sending is now reliable and non-blockingawait ctx.sendActivity({ handle: "myUser" }, recipient, someActivity);<Challenge #5: Security—Avoiding Common Pitfalls Securing an ActivityPub server is critical. You need to implement HTTP Signatures (draft-cavage-http-signatures-12) for server-to-server authentication—a complex process. You might also need Linked Data Signatures (LDS) or Object Integrity Proofs (OIP) based on FEP-8b32 for data integrity and compatibility. Managing cryptographic keys securely is essential. Lastly, fetching remote resources risks Server-Side Request Forgery (SSRF) if not validated properly. Fedify is designed with security in mind. It automatically handles the creation and verification of HTTP Signatures, LDS, and OIP, provided you supply keys via setKeyPairsDispatcher(). It includes key management utilities. Crucially, Fedify's default document loader includes built-in SSRF protection, blocking requests to private IPs unless explicitly allowed.Challenge #6: Interoperability & Maintenance—Playing Nicely with Others The fediverse is diverse. Different servers have quirks. Ensuring compatibility requires testing and adaptation. Standards evolve with new Federation Enhancement Proposals (FEPs). You also need protocols like NodeInfo to advertise server capabilities. Fedify aims for broad interoperability and is actively maintained. It includes features like ActivityTransformers to smooth over implementation differences. NodeInfo support is built-in via setNodeInfoDispatcher().Challenge #7: Developer Experience—Actually Building Your App Beyond the protocol, building any server involves setup, testing, and debugging. With federation, debugging becomes harder—was the message malformed? Was the signature wrong? Is the remote server down? Is it a compatibility quirk? Good tooling is essential. Fedify enhances the developer experience significantly. Being built with TypeScript, it offers excellent type safety and editor auto-completion. The fedify CLI is a powerful companion designed to streamline common development tasks. You can quickly scaffold a new project tailored to your chosen runtime and web framework using fedify init. For debugging interactions and verifying data, fedify lookup is invaluable. It lets you inspect how any remote actor or object appears from the outside by performing WebFinger discovery and fetching the object's data. Fedify then displays the parsed object structure and properties directly in your terminal. For example, running:$ fedify lookup @fedify-example@fedify-blog.deno.dev<Will first show progress messages and then output the structured representation of the actor, similar to this:// Output of fedify lookup command (shows parsed object structure)Person { id: URL "https://fedify-blog.deno.dev/users/fedify-example", name: "Fedify Example Blog", published: 2024-03-03T13:18:11.857Z, // Simplified timestamp summary: "This blog is powered by Fedify, a fediverse server framework.", url: URL "https://fedify-blog.deno.dev/", preferredUsername: "fedify-example", publicKey: CryptographicKey { id: URL "https://fedify-blog.deno.dev/users/fedify-example#main-key", owner: URL "https://fedify-blog.deno.dev/users/fedify-example", publicKey: CryptoKey { /* ... CryptoKey details ... */ } }, // ... other properties like inbox, outbox, followers, endpoints ...}<This allows you to easily check how data is structured or troubleshoot why an interaction might be failing by seeing the actual properties Fedify parsed. Testing outgoing activities from your application during development is made much easier with fedify inbox. Running the command starts a temporary local server that acts as a publicly accessible inbox, displaying key information about the temporary actor it creates for receiving messages:$ fedify inbox✔ The ephemeral ActivityPub server is up and running: https://<unique_id>.lhr.life/✔ Sent follow request to @<some_test_account>@activitypub.academy.╭───────────────┬─────────────────────────────────────────╮│ Actor handle: │ i@<unique_id>.lhr.life │├───────────────┼─────────────────────────────────────────┤│ Actor URI: │ https://<unique_id>.lhr.life/i │├───────────────┼─────────────────────────────────────────┤│ Actor inbox: │ https://<unique_id>.lhr.life/i/inbox │├───────────────┼─────────────────────────────────────────┤│ Shared inbox: │ https://<unique_id>.lhr.life/inbox │╰───────────────┴─────────────────────────────────────────╯Web interface available at: http://localhost:8000/<You then configure your developing application to send an activity to the Actor inbox or Shared inbox URI provided. When an activity arrives, fedify inbox only prints a summary table to your console indicating that a request was received:╭────────────────┬─────────────────────────────────────╮│ Request #: │ 2 │├────────────────┼─────────────────────────────────────┤│ Activity type: │ Follow │├────────────────┼─────────────────────────────────────┤│ HTTP request: │ POST /i/inbox │├────────────────┼─────────────────────────────────────┤│ HTTP response: │ 202 │├────────────────┼─────────────────────────────────────┤│ Details │ https://<unique_id>.lhr.life/r/2 │╰────────────────┴─────────────────────────────────────╯<Crucially, the detailed information about the received request—including the full headers (like Signature), the request body (the Activity JSON), and the signature verification status—is only available in the web interface provided by fedify inbox. This web UI allows you to thoroughly inspect incoming activities during development.The Fedify Inbox web UI is where you view detailed activity information.<When you need to test interactions with the live fediverse from your local machine beyond just sending, fedify tunnel can securely expose your entire local development server temporarily. This suite of tools significantly eases the process of building and debugging federated applications.Conclusion: Build Features, Not Plumbing Implementing the ActivityPub suite of protocols from scratch is an incredibly complex and time-consuming undertaking. It involves deep dives into multiple technical specifications, cryptographic signing, security hardening, and navigating the nuances of a diverse ecosystem. While educational, it dramatically slows down the process of building the actual, unique features of your federated application. Fedify offers a well-architected, secure, and type-safe foundation, handling the intricacies of federation for you—data modeling, discovery, core mechanics, delivery, security, and interoperability. It lets you focus on your application's unique value and user experience. Stop wrestling with low-level protocol details and start building your vision for the fediverse faster and more reliably. Give Fedify a try! Getting started is straightforward. First, install the Fedify CLI using your preferred method. Once installed, create a new project template by running fedify init your-project-name. Check out the Fedify tutorials and Fedify manual to learn more. Happy federating!
Ditch the DIY Drama: Why Use Fedify Instead of Building ActivityPub from Scratch? https://lobste.rs/s/ebab2d #distributed #web
https://hackers.pub/@hongminhee/2025/why-use-fedify
hackers.pub
So, you're captivated by the fediverse—the decentralized social web powered by protocols like ActivityPub. Maybe you're dreaming of building the next great federated app, a unique space connected to Mastodon, Lemmy, Pixelfed, and more. The temptation to dive deep and implement ActivityPub yourself, from the ground up, is strong. Total control, right? Understanding every byte? Sounds cool! But hold on a sec. Before you embark on that epic quest, let's talk reality. Implementing ActivityPub correctly isn't just one task; it's like juggling several complex standards while riding a unicycle… blindfolded. It’s hard. That's where Fedify comes in. It's a TypeScript framework designed to handle the gnarliest parts of ActivityPub development, letting you focus on what makes your app special, not reinventing the federation wheel. This post will break down the common headaches of DIY ActivityPub implementation and show how Fedify acts as the super-powered pain reliever, starting with the very foundation of how data is represented.Challenge #1: Data Modeling—Speaking ActivityStreams & JSON-LD Fluently At its core, ActivityPub relies on the ActivityStreams 2.0 vocabulary to describe actions and objects, and it uses JSON-LD as the syntax to encode this vocabulary. While powerful, this combination introduces significant complexity right from the start. First, understanding and correctly using the vast ActivityStreams vocabulary itself is a hurdle. You need to model everything—posts (Note, Article), profiles (Person, Organization), actions (Create, Follow, Like, Announce)—using the precise terms and properties defined in the specification. Manual JSON construction is tedious and prone to errors. Second, JSON-LD, the encoding layer, has specific rules that make direct JSON manipulation surprisingly tricky:Missing vs. Empty Array: In JSON-LD, a property being absent is often semantically identical to it being present with an empty array. Your application logic needs to treat these cases equally when checking for values. For example, these two Note objects mean the same thing regarding the name property:// No name property{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": "…"}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "name": [], "content": "…"}Single Value vs. Array: Similarly, a property holding a single value directly is often equivalent to it holding a single-element array containing that value. Your code must anticipate both representations for the same meaning, like for the content property here:// Single value{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": "Hello"}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": ["Hello"]}Object Reference vs. Embedded Object: Properties can contain either the full JSON-LD object embedded directly or just a URI string referencing that object. Your application needs to be prepared to fetch the object's data if only a URI is given (a process called dereferencing). These two Announce activities are semantically equivalent (assuming the URIs resolve correctly):{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Announce", // Embedded objects: "actor": { "type": "Person", "id": "http://sally.example.org/", "name": "Sally" }, "object": { "type": "Arrive", "id": "https://sally.example.com/arrive", /* ... */ }}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Announce", // URI references: "actor": "http://sally.example.org/", "object": "https://sally.example.com/arrive"}<Attempting to manually handle all these vocabulary rules and JSON-LD variations consistently across your application inevitably leads to verbose, complex, and fragile code, ripe for subtle bugs that break federation. Fedify tackles this entire data modeling challenge with its comprehensive, type-safe Activity Vocabulary API. It provides TypeScript classes for ActivityStreams types and common extensions, giving you autocompletion and compile-time safety. Crucially, these classes internally manage all the tricky JSON-LD nuances. Fedify's property accessors present a consistent interface—non-functional properties (like tags) always return arrays, functional properties (like content) always return single values or null. It handles object references versus embedded objects seamlessly through dereferencing accessors (like activity.getActor()) which automatically fetch remote objects via URI when needed—a feature known as property hydration. With Fedify, you work with a clean, predictable TypeScript API, letting the framework handle the messy details of AS vocabulary and JSON-LD encoding.Challenge #2: Discovery & Identity—Finding Your Actors Once you can model data, you need to make your actors discoverable. This primarily involves the WebFinger protocol (RFC 7033). You'd need to build a server endpoint at /.well-known/webfinger capable of parsing resource queries (like acct: URIs), validating the requested domain against your server, and responding with a precisely formatted JSON Resource Descriptor (JRD). This JRD must include specific links, like a self link pointing to the actor's ActivityPub ID using the correct media type. Getting any part of this wrong can make your actors invisible. Fedify simplifies this significantly. It automatically handles WebFinger requests based on the actor information you provide through its setActorDispatcher() method. Fedify generates the correct JRD response. If you need more advanced control, like mapping user-facing handles to internal identifiers, you can easily register mapHandle() or mapAlias() callbacks. You focus on defining your actors; Fedify handles making them discoverable.// Example: Define how to find actorsfederation.setActorDispatcher( "/users/{username}", async (ctx, username) => { /* ... */ });// Now GET /.well-known/webfinger?resource=acct:username@your.domain just works!<Challenge #3: Core ActivityPub Mechanics—Handling Requests and Collections Serving actor profiles requires careful content negotiation. A request for an actor's ID needs JSON-LD for machine clients (Accept: application/activity+json) but HTML for browsers (Accept: text/html). Handling incoming activities at the inbox endpoint involves validating POST requests, verifying cryptographic signatures, parsing the payload, preventing duplicates (idempotency), and routing based on activity type. Implementing collections (outbox, followers, etc.) with correct pagination adds another layer. Fedify streamlines all of this. Its core request handler (via Federation.fetch() or framework adapters like @fedify/express) manages content negotiation. You define actors with setActorDispatcher() and web pages with your framework (Hono, Express, SvelteKit, etc.)—Fedify routes appropriately. For the inbox, setInboxListeners() lets you define handlers per activity type (e.g., .on(Follow, ...)), while Fedify automatically handles validation, signature verification, parsing, and idempotency checks using its KV Store. Collection implementation is simplified via dispatchers (e.g., setFollowersDispatcher()); you provide logic to fetch a page of data, and Fedify constructs the correct Collection or CollectionPage with pagination.// Define inbox handlersfederation.setInboxListeners("/inbox", "/users/{handle}/inbox") .on(Follow, async (ctx, follow) => { /* Handle follow */ }) .on(Undo, async (ctx, undo) => { /* Handle undo */ });// Define followers collection logicfederation.setFollowersDispatcher( "/users/{handle}/followers", async (ctx, handle, cursor) => { /* ... */ });<Challenge #4: Reliable Delivery & Asynchronous Processing—Sending Activities Robustly Sending an activity requires more than a simple POST. Networks fail, servers go down. You need robust failure handling and retry logic (ideally with backoff). Processing incoming activities synchronously can block your server. Efficiently broadcasting to many followers (fan-out) requires background processing and using shared inboxes where possible. Fedify addresses reliability and scalability using its MessageQueue abstraction. When configured (highly recommended), Context.sendActivity() enqueues delivery tasks. Background workers handle sending with automatic retries based on configurable policies (like outboxRetryPolicy). Fedify supports various queue backends (Deno KV, Redis, PostgreSQL, AMQP). For high-traffic fan-out, Fedify uses an optimized two-stage mechanism to distribute the load efficiently.// Configure Fedify with a persistent queue (e.g., Deno KV)const federation = createFederation({ queue: new DenoKvMessageQueue(/* ... */), // ...});// Sending is now reliable and non-blockingawait ctx.sendActivity({ handle: "myUser" }, recipient, someActivity);<Challenge #5: Security—Avoiding Common Pitfalls Securing an ActivityPub server is critical. You need to implement HTTP Signatures (draft-cavage-http-signatures-12) for server-to-server authentication—a complex process. You might also need Linked Data Signatures (LDS) or Object Integrity Proofs (OIP) based on FEP-8b32 for data integrity and compatibility. Managing cryptographic keys securely is essential. Lastly, fetching remote resources risks Server-Side Request Forgery (SSRF) if not validated properly. Fedify is designed with security in mind. It automatically handles the creation and verification of HTTP Signatures, LDS, and OIP, provided you supply keys via setKeyPairsDispatcher(). It includes key management utilities. Crucially, Fedify's default document loader includes built-in SSRF protection, blocking requests to private IPs unless explicitly allowed.Challenge #6: Interoperability & Maintenance—Playing Nicely with Others The fediverse is diverse. Different servers have quirks. Ensuring compatibility requires testing and adaptation. Standards evolve with new Federation Enhancement Proposals (FEPs). You also need protocols like NodeInfo to advertise server capabilities. Fedify aims for broad interoperability and is actively maintained. It includes features like ActivityTransformers to smooth over implementation differences. NodeInfo support is built-in via setNodeInfoDispatcher().Challenge #7: Developer Experience—Actually Building Your App Beyond the protocol, building any server involves setup, testing, and debugging. With federation, debugging becomes harder—was the message malformed? Was the signature wrong? Is the remote server down? Is it a compatibility quirk? Good tooling is essential. Fedify enhances the developer experience significantly. Being built with TypeScript, it offers excellent type safety and editor auto-completion. The fedify CLI is a powerful companion designed to streamline common development tasks. You can quickly scaffold a new project tailored to your chosen runtime and web framework using fedify init. For debugging interactions and verifying data, fedify lookup is invaluable. It lets you inspect how any remote actor or object appears from the outside by performing WebFinger discovery and fetching the object's data. Fedify then displays the parsed object structure and properties directly in your terminal. For example, running:$ fedify lookup @fedify-example@fedify-blog.deno.dev<Will first show progress messages and then output the structured representation of the actor, similar to this:// Output of fedify lookup command (shows parsed object structure)Person { id: URL "https://fedify-blog.deno.dev/users/fedify-example", name: "Fedify Example Blog", published: 2024-03-03T13:18:11.857Z, // Simplified timestamp summary: "This blog is powered by Fedify, a fediverse server framework.", url: URL "https://fedify-blog.deno.dev/", preferredUsername: "fedify-example", publicKey: CryptographicKey { id: URL "https://fedify-blog.deno.dev/users/fedify-example#main-key", owner: URL "https://fedify-blog.deno.dev/users/fedify-example", publicKey: CryptoKey { /* ... CryptoKey details ... */ } }, // ... other properties like inbox, outbox, followers, endpoints ...}<This allows you to easily check how data is structured or troubleshoot why an interaction might be failing by seeing the actual properties Fedify parsed. Testing outgoing activities from your application during development is made much easier with fedify inbox. Running the command starts a temporary local server that acts as a publicly accessible inbox, displaying key information about the temporary actor it creates for receiving messages:$ fedify inbox✔ The ephemeral ActivityPub server is up and running: https://<unique_id>.lhr.life/✔ Sent follow request to @<some_test_account>@activitypub.academy.╭───────────────┬─────────────────────────────────────────╮│ Actor handle: │ i@<unique_id>.lhr.life │├───────────────┼─────────────────────────────────────────┤│ Actor URI: │ https://<unique_id>.lhr.life/i │├───────────────┼─────────────────────────────────────────┤│ Actor inbox: │ https://<unique_id>.lhr.life/i/inbox │├───────────────┼─────────────────────────────────────────┤│ Shared inbox: │ https://<unique_id>.lhr.life/inbox │╰───────────────┴─────────────────────────────────────────╯Web interface available at: http://localhost:8000/<You then configure your developing application to send an activity to the Actor inbox or Shared inbox URI provided. When an activity arrives, fedify inbox only prints a summary table to your console indicating that a request was received:╭────────────────┬─────────────────────────────────────╮│ Request #: │ 2 │├────────────────┼─────────────────────────────────────┤│ Activity type: │ Follow │├────────────────┼─────────────────────────────────────┤│ HTTP request: │ POST /i/inbox │├────────────────┼─────────────────────────────────────┤│ HTTP response: │ 202 │├────────────────┼─────────────────────────────────────┤│ Details │ https://<unique_id>.lhr.life/r/2 │╰────────────────┴─────────────────────────────────────╯<Crucially, the detailed information about the received request—including the full headers (like Signature), the request body (the Activity JSON), and the signature verification status—is only available in the web interface provided by fedify inbox. This web UI allows you to thoroughly inspect incoming activities during development.The Fedify Inbox web UI is where you view detailed activity information.<When you need to test interactions with the live fediverse from your local machine beyond just sending, fedify tunnel can securely expose your entire local development server temporarily. This suite of tools significantly eases the process of building and debugging federated applications.Conclusion: Build Features, Not Plumbing Implementing the ActivityPub suite of protocols from scratch is an incredibly complex and time-consuming undertaking. It involves deep dives into multiple technical specifications, cryptographic signing, security hardening, and navigating the nuances of a diverse ecosystem. While educational, it dramatically slows down the process of building the actual, unique features of your federated application. Fedify offers a well-architected, secure, and type-safe foundation, handling the intricacies of federation for you—data modeling, discovery, core mechanics, delivery, security, and interoperability. It lets you focus on your application's unique value and user experience. Stop wrestling with low-level protocol details and start building your vision for the fediverse faster and more reliably. Give Fedify a try! Getting started is straightforward. First, install the Fedify CLI using your preferred method. Once installed, create a new project template by running fedify init your-project-name. Check out the Fedify tutorials and Fedify manual to learn more. Happy federating!
Ditch the DIY Drama: Why Use Fedify Instead of Building ActivityPub from Scratch? https://lobste.rs/s/ebab2d #distributed #web
https://hackers.pub/@hongminhee/2025/why-use-fedify
hackers.pub
So, you're captivated by the fediverse—the decentralized social web powered by protocols like ActivityPub. Maybe you're dreaming of building the next great federated app, a unique space connected to Mastodon, Lemmy, Pixelfed, and more. The temptation to dive deep and implement ActivityPub yourself, from the ground up, is strong. Total control, right? Understanding every byte? Sounds cool! But hold on a sec. Before you embark on that epic quest, let's talk reality. Implementing ActivityPub correctly isn't just one task; it's like juggling several complex standards while riding a unicycle… blindfolded. It’s hard. That's where Fedify comes in. It's a TypeScript framework designed to handle the gnarliest parts of ActivityPub development, letting you focus on what makes your app special, not reinventing the federation wheel. This post will break down the common headaches of DIY ActivityPub implementation and show how Fedify acts as the super-powered pain reliever, starting with the very foundation of how data is represented.Challenge #1: Data Modeling—Speaking ActivityStreams & JSON-LD Fluently At its core, ActivityPub relies on the ActivityStreams 2.0 vocabulary to describe actions and objects, and it uses JSON-LD as the syntax to encode this vocabulary. While powerful, this combination introduces significant complexity right from the start. First, understanding and correctly using the vast ActivityStreams vocabulary itself is a hurdle. You need to model everything—posts (Note, Article), profiles (Person, Organization), actions (Create, Follow, Like, Announce)—using the precise terms and properties defined in the specification. Manual JSON construction is tedious and prone to errors. Second, JSON-LD, the encoding layer, has specific rules that make direct JSON manipulation surprisingly tricky:Missing vs. Empty Array: In JSON-LD, a property being absent is often semantically identical to it being present with an empty array. Your application logic needs to treat these cases equally when checking for values. For example, these two Note objects mean the same thing regarding the name property:// No name property{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": "…"}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "name": [], "content": "…"}Single Value vs. Array: Similarly, a property holding a single value directly is often equivalent to it holding a single-element array containing that value. Your code must anticipate both representations for the same meaning, like for the content property here:// Single value{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": "Hello"}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": ["Hello"]}Object Reference vs. Embedded Object: Properties can contain either the full JSON-LD object embedded directly or just a URI string referencing that object. Your application needs to be prepared to fetch the object's data if only a URI is given (a process called dereferencing). These two Announce activities are semantically equivalent (assuming the URIs resolve correctly):{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Announce", // Embedded objects: "actor": { "type": "Person", "id": "http://sally.example.org/", "name": "Sally" }, "object": { "type": "Arrive", "id": "https://sally.example.com/arrive", /* ... */ }}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Announce", // URI references: "actor": "http://sally.example.org/", "object": "https://sally.example.com/arrive"}<Attempting to manually handle all these vocabulary rules and JSON-LD variations consistently across your application inevitably leads to verbose, complex, and fragile code, ripe for subtle bugs that break federation. Fedify tackles this entire data modeling challenge with its comprehensive, type-safe Activity Vocabulary API. It provides TypeScript classes for ActivityStreams types and common extensions, giving you autocompletion and compile-time safety. Crucially, these classes internally manage all the tricky JSON-LD nuances. Fedify's property accessors present a consistent interface—non-functional properties (like tags) always return arrays, functional properties (like content) always return single values or null. It handles object references versus embedded objects seamlessly through dereferencing accessors (like activity.getActor()) which automatically fetch remote objects via URI when needed—a feature known as property hydration. With Fedify, you work with a clean, predictable TypeScript API, letting the framework handle the messy details of AS vocabulary and JSON-LD encoding.Challenge #2: Discovery & Identity—Finding Your Actors Once you can model data, you need to make your actors discoverable. This primarily involves the WebFinger protocol (RFC 7033). You'd need to build a server endpoint at /.well-known/webfinger capable of parsing resource queries (like acct: URIs), validating the requested domain against your server, and responding with a precisely formatted JSON Resource Descriptor (JRD). This JRD must include specific links, like a self link pointing to the actor's ActivityPub ID using the correct media type. Getting any part of this wrong can make your actors invisible. Fedify simplifies this significantly. It automatically handles WebFinger requests based on the actor information you provide through its setActorDispatcher() method. Fedify generates the correct JRD response. If you need more advanced control, like mapping user-facing handles to internal identifiers, you can easily register mapHandle() or mapAlias() callbacks. You focus on defining your actors; Fedify handles making them discoverable.// Example: Define how to find actorsfederation.setActorDispatcher( "/users/{username}", async (ctx, username) => { /* ... */ });// Now GET /.well-known/webfinger?resource=acct:username@your.domain just works!<Challenge #3: Core ActivityPub Mechanics—Handling Requests and Collections Serving actor profiles requires careful content negotiation. A request for an actor's ID needs JSON-LD for machine clients (Accept: application/activity+json) but HTML for browsers (Accept: text/html). Handling incoming activities at the inbox endpoint involves validating POST requests, verifying cryptographic signatures, parsing the payload, preventing duplicates (idempotency), and routing based on activity type. Implementing collections (outbox, followers, etc.) with correct pagination adds another layer. Fedify streamlines all of this. Its core request handler (via Federation.fetch() or framework adapters like @fedify/express) manages content negotiation. You define actors with setActorDispatcher() and web pages with your framework (Hono, Express, SvelteKit, etc.)—Fedify routes appropriately. For the inbox, setInboxListeners() lets you define handlers per activity type (e.g., .on(Follow, ...)), while Fedify automatically handles validation, signature verification, parsing, and idempotency checks using its KV Store. Collection implementation is simplified via dispatchers (e.g., setFollowersDispatcher()); you provide logic to fetch a page of data, and Fedify constructs the correct Collection or CollectionPage with pagination.// Define inbox handlersfederation.setInboxListeners("/inbox", "/users/{handle}/inbox") .on(Follow, async (ctx, follow) => { /* Handle follow */ }) .on(Undo, async (ctx, undo) => { /* Handle undo */ });// Define followers collection logicfederation.setFollowersDispatcher( "/users/{handle}/followers", async (ctx, handle, cursor) => { /* ... */ });<Challenge #4: Reliable Delivery & Asynchronous Processing—Sending Activities Robustly Sending an activity requires more than a simple POST. Networks fail, servers go down. You need robust failure handling and retry logic (ideally with backoff). Processing incoming activities synchronously can block your server. Efficiently broadcasting to many followers (fan-out) requires background processing and using shared inboxes where possible. Fedify addresses reliability and scalability using its MessageQueue abstraction. When configured (highly recommended), Context.sendActivity() enqueues delivery tasks. Background workers handle sending with automatic retries based on configurable policies (like outboxRetryPolicy). Fedify supports various queue backends (Deno KV, Redis, PostgreSQL, AMQP). For high-traffic fan-out, Fedify uses an optimized two-stage mechanism to distribute the load efficiently.// Configure Fedify with a persistent queue (e.g., Deno KV)const federation = createFederation({ queue: new DenoKvMessageQueue(/* ... */), // ...});// Sending is now reliable and non-blockingawait ctx.sendActivity({ handle: "myUser" }, recipient, someActivity);<Challenge #5: Security—Avoiding Common Pitfalls Securing an ActivityPub server is critical. You need to implement HTTP Signatures (draft-cavage-http-signatures-12) for server-to-server authentication—a complex process. You might also need Linked Data Signatures (LDS) or Object Integrity Proofs (OIP) based on FEP-8b32 for data integrity and compatibility. Managing cryptographic keys securely is essential. Lastly, fetching remote resources risks Server-Side Request Forgery (SSRF) if not validated properly. Fedify is designed with security in mind. It automatically handles the creation and verification of HTTP Signatures, LDS, and OIP, provided you supply keys via setKeyPairsDispatcher(). It includes key management utilities. Crucially, Fedify's default document loader includes built-in SSRF protection, blocking requests to private IPs unless explicitly allowed.Challenge #6: Interoperability & Maintenance—Playing Nicely with Others The fediverse is diverse. Different servers have quirks. Ensuring compatibility requires testing and adaptation. Standards evolve with new Federation Enhancement Proposals (FEPs). You also need protocols like NodeInfo to advertise server capabilities. Fedify aims for broad interoperability and is actively maintained. It includes features like ActivityTransformers to smooth over implementation differences. NodeInfo support is built-in via setNodeInfoDispatcher().Challenge #7: Developer Experience—Actually Building Your App Beyond the protocol, building any server involves setup, testing, and debugging. With federation, debugging becomes harder—was the message malformed? Was the signature wrong? Is the remote server down? Is it a compatibility quirk? Good tooling is essential. Fedify enhances the developer experience significantly. Being built with TypeScript, it offers excellent type safety and editor auto-completion. The fedify CLI is a powerful companion designed to streamline common development tasks. You can quickly scaffold a new project tailored to your chosen runtime and web framework using fedify init. For debugging interactions and verifying data, fedify lookup is invaluable. It lets you inspect how any remote actor or object appears from the outside by performing WebFinger discovery and fetching the object's data. Fedify then displays the parsed object structure and properties directly in your terminal. For example, running:$ fedify lookup @fedify-example@fedify-blog.deno.dev<Will first show progress messages and then output the structured representation of the actor, similar to this:// Output of fedify lookup command (shows parsed object structure)Person { id: URL "https://fedify-blog.deno.dev/users/fedify-example", name: "Fedify Example Blog", published: 2024-03-03T13:18:11.857Z, // Simplified timestamp summary: "This blog is powered by Fedify, a fediverse server framework.", url: URL "https://fedify-blog.deno.dev/", preferredUsername: "fedify-example", publicKey: CryptographicKey { id: URL "https://fedify-blog.deno.dev/users/fedify-example#main-key", owner: URL "https://fedify-blog.deno.dev/users/fedify-example", publicKey: CryptoKey { /* ... CryptoKey details ... */ } }, // ... other properties like inbox, outbox, followers, endpoints ...}<This allows you to easily check how data is structured or troubleshoot why an interaction might be failing by seeing the actual properties Fedify parsed. Testing outgoing activities from your application during development is made much easier with fedify inbox. Running the command starts a temporary local server that acts as a publicly accessible inbox, displaying key information about the temporary actor it creates for receiving messages:$ fedify inbox✔ The ephemeral ActivityPub server is up and running: https://<unique_id>.lhr.life/✔ Sent follow request to @<some_test_account>@activitypub.academy.╭───────────────┬─────────────────────────────────────────╮│ Actor handle: │ i@<unique_id>.lhr.life │├───────────────┼─────────────────────────────────────────┤│ Actor URI: │ https://<unique_id>.lhr.life/i │├───────────────┼─────────────────────────────────────────┤│ Actor inbox: │ https://<unique_id>.lhr.life/i/inbox │├───────────────┼─────────────────────────────────────────┤│ Shared inbox: │ https://<unique_id>.lhr.life/inbox │╰───────────────┴─────────────────────────────────────────╯Web interface available at: http://localhost:8000/<You then configure your developing application to send an activity to the Actor inbox or Shared inbox URI provided. When an activity arrives, fedify inbox only prints a summary table to your console indicating that a request was received:╭────────────────┬─────────────────────────────────────╮│ Request #: │ 2 │├────────────────┼─────────────────────────────────────┤│ Activity type: │ Follow │├────────────────┼─────────────────────────────────────┤│ HTTP request: │ POST /i/inbox │├────────────────┼─────────────────────────────────────┤│ HTTP response: │ 202 │├────────────────┼─────────────────────────────────────┤│ Details │ https://<unique_id>.lhr.life/r/2 │╰────────────────┴─────────────────────────────────────╯<Crucially, the detailed information about the received request—including the full headers (like Signature), the request body (the Activity JSON), and the signature verification status—is only available in the web interface provided by fedify inbox. This web UI allows you to thoroughly inspect incoming activities during development.The Fedify Inbox web UI is where you view detailed activity information.<When you need to test interactions with the live fediverse from your local machine beyond just sending, fedify tunnel can securely expose your entire local development server temporarily. This suite of tools significantly eases the process of building and debugging federated applications.Conclusion: Build Features, Not Plumbing Implementing the ActivityPub suite of protocols from scratch is an incredibly complex and time-consuming undertaking. It involves deep dives into multiple technical specifications, cryptographic signing, security hardening, and navigating the nuances of a diverse ecosystem. While educational, it dramatically slows down the process of building the actual, unique features of your federated application. Fedify offers a well-architected, secure, and type-safe foundation, handling the intricacies of federation for you—data modeling, discovery, core mechanics, delivery, security, and interoperability. It lets you focus on your application's unique value and user experience. Stop wrestling with low-level protocol details and start building your vision for the fediverse faster and more reliably. Give Fedify a try! Getting started is straightforward. First, install the Fedify CLI using your preferred method. Once installed, create a new project template by running fedify init your-project-name. Check out the Fedify tutorials and Fedify manual to learn more. Happy federating!
Ditch the DIY Drama: Why Use Fedify Instead of Building ActivityPub from Scratch? https://lobste.rs/s/ebab2d #distributed #web
https://hackers.pub/@hongminhee/2025/why-use-fedify
hackers.pub
So, you're captivated by the fediverse—the decentralized social web powered by protocols like ActivityPub. Maybe you're dreaming of building the next great federated app, a unique space connected to Mastodon, Lemmy, Pixelfed, and more. The temptation to dive deep and implement ActivityPub yourself, from the ground up, is strong. Total control, right? Understanding every byte? Sounds cool! But hold on a sec. Before you embark on that epic quest, let's talk reality. Implementing ActivityPub correctly isn't just one task; it's like juggling several complex standards while riding a unicycle… blindfolded. It’s hard. That's where Fedify comes in. It's a TypeScript framework designed to handle the gnarliest parts of ActivityPub development, letting you focus on what makes your app special, not reinventing the federation wheel. This post will break down the common headaches of DIY ActivityPub implementation and show how Fedify acts as the super-powered pain reliever, starting with the very foundation of how data is represented.Challenge #1: Data Modeling—Speaking ActivityStreams & JSON-LD Fluently At its core, ActivityPub relies on the ActivityStreams 2.0 vocabulary to describe actions and objects, and it uses JSON-LD as the syntax to encode this vocabulary. While powerful, this combination introduces significant complexity right from the start. First, understanding and correctly using the vast ActivityStreams vocabulary itself is a hurdle. You need to model everything—posts (Note, Article), profiles (Person, Organization), actions (Create, Follow, Like, Announce)—using the precise terms and properties defined in the specification. Manual JSON construction is tedious and prone to errors. Second, JSON-LD, the encoding layer, has specific rules that make direct JSON manipulation surprisingly tricky:Missing vs. Empty Array: In JSON-LD, a property being absent is often semantically identical to it being present with an empty array. Your application logic needs to treat these cases equally when checking for values. For example, these two Note objects mean the same thing regarding the name property:// No name property{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": "…"}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "name": [], "content": "…"}Single Value vs. Array: Similarly, a property holding a single value directly is often equivalent to it holding a single-element array containing that value. Your code must anticipate both representations for the same meaning, like for the content property here:// Single value{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": "Hello"}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "content": ["Hello"]}Object Reference vs. Embedded Object: Properties can contain either the full JSON-LD object embedded directly or just a URI string referencing that object. Your application needs to be prepared to fetch the object's data if only a URI is given (a process called dereferencing). These two Announce activities are semantically equivalent (assuming the URIs resolve correctly):{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Announce", // Embedded objects: "actor": { "type": "Person", "id": "http://sally.example.org/", "name": "Sally" }, "object": { "type": "Arrive", "id": "https://sally.example.com/arrive", /* ... */ }}// Equivalent to:{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Announce", // URI references: "actor": "http://sally.example.org/", "object": "https://sally.example.com/arrive"}<Attempting to manually handle all these vocabulary rules and JSON-LD variations consistently across your application inevitably leads to verbose, complex, and fragile code, ripe for subtle bugs that break federation. Fedify tackles this entire data modeling challenge with its comprehensive, type-safe Activity Vocabulary API. It provides TypeScript classes for ActivityStreams types and common extensions, giving you autocompletion and compile-time safety. Crucially, these classes internally manage all the tricky JSON-LD nuances. Fedify's property accessors present a consistent interface—non-functional properties (like tags) always return arrays, functional properties (like content) always return single values or null. It handles object references versus embedded objects seamlessly through dereferencing accessors (like activity.getActor()) which automatically fetch remote objects via URI when needed—a feature known as property hydration. With Fedify, you work with a clean, predictable TypeScript API, letting the framework handle the messy details of AS vocabulary and JSON-LD encoding.Challenge #2: Discovery & Identity—Finding Your Actors Once you can model data, you need to make your actors discoverable. This primarily involves the WebFinger protocol (RFC 7033). You'd need to build a server endpoint at /.well-known/webfinger capable of parsing resource queries (like acct: URIs), validating the requested domain against your server, and responding with a precisely formatted JSON Resource Descriptor (JRD). This JRD must include specific links, like a self link pointing to the actor's ActivityPub ID using the correct media type. Getting any part of this wrong can make your actors invisible. Fedify simplifies this significantly. It automatically handles WebFinger requests based on the actor information you provide through its setActorDispatcher() method. Fedify generates the correct JRD response. If you need more advanced control, like mapping user-facing handles to internal identifiers, you can easily register mapHandle() or mapAlias() callbacks. You focus on defining your actors; Fedify handles making them discoverable.// Example: Define how to find actorsfederation.setActorDispatcher( "/users/{username}", async (ctx, username) => { /* ... */ });// Now GET /.well-known/webfinger?resource=acct:username@your.domain just works!<Challenge #3: Core ActivityPub Mechanics—Handling Requests and Collections Serving actor profiles requires careful content negotiation. A request for an actor's ID needs JSON-LD for machine clients (Accept: application/activity+json) but HTML for browsers (Accept: text/html). Handling incoming activities at the inbox endpoint involves validating POST requests, verifying cryptographic signatures, parsing the payload, preventing duplicates (idempotency), and routing based on activity type. Implementing collections (outbox, followers, etc.) with correct pagination adds another layer. Fedify streamlines all of this. Its core request handler (via Federation.fetch() or framework adapters like @fedify/express) manages content negotiation. You define actors with setActorDispatcher() and web pages with your framework (Hono, Express, SvelteKit, etc.)—Fedify routes appropriately. For the inbox, setInboxListeners() lets you define handlers per activity type (e.g., .on(Follow, ...)), while Fedify automatically handles validation, signature verification, parsing, and idempotency checks using its KV Store. Collection implementation is simplified via dispatchers (e.g., setFollowersDispatcher()); you provide logic to fetch a page of data, and Fedify constructs the correct Collection or CollectionPage with pagination.// Define inbox handlersfederation.setInboxListeners("/inbox", "/users/{handle}/inbox") .on(Follow, async (ctx, follow) => { /* Handle follow */ }) .on(Undo, async (ctx, undo) => { /* Handle undo */ });// Define followers collection logicfederation.setFollowersDispatcher( "/users/{handle}/followers", async (ctx, handle, cursor) => { /* ... */ });<Challenge #4: Reliable Delivery & Asynchronous Processing—Sending Activities Robustly Sending an activity requires more than a simple POST. Networks fail, servers go down. You need robust failure handling and retry logic (ideally with backoff). Processing incoming activities synchronously can block your server. Efficiently broadcasting to many followers (fan-out) requires background processing and using shared inboxes where possible. Fedify addresses reliability and scalability using its MessageQueue abstraction. When configured (highly recommended), Context.sendActivity() enqueues delivery tasks. Background workers handle sending with automatic retries based on configurable policies (like outboxRetryPolicy). Fedify supports various queue backends (Deno KV, Redis, PostgreSQL, AMQP). For high-traffic fan-out, Fedify uses an optimized two-stage mechanism to distribute the load efficiently.// Configure Fedify with a persistent queue (e.g., Deno KV)const federation = createFederation({ queue: new DenoKvMessageQueue(/* ... */), // ...});// Sending is now reliable and non-blockingawait ctx.sendActivity({ handle: "myUser" }, recipient, someActivity);<Challenge #5: Security—Avoiding Common Pitfalls Securing an ActivityPub server is critical. You need to implement HTTP Signatures (draft-cavage-http-signatures-12) for server-to-server authentication—a complex process. You might also need Linked Data Signatures (LDS) or Object Integrity Proofs (OIP) based on FEP-8b32 for data integrity and compatibility. Managing cryptographic keys securely is essential. Lastly, fetching remote resources risks Server-Side Request Forgery (SSRF) if not validated properly. Fedify is designed with security in mind. It automatically handles the creation and verification of HTTP Signatures, LDS, and OIP, provided you supply keys via setKeyPairsDispatcher(). It includes key management utilities. Crucially, Fedify's default document loader includes built-in SSRF protection, blocking requests to private IPs unless explicitly allowed.Challenge #6: Interoperability & Maintenance—Playing Nicely with Others The fediverse is diverse. Different servers have quirks. Ensuring compatibility requires testing and adaptation. Standards evolve with new Federation Enhancement Proposals (FEPs). You also need protocols like NodeInfo to advertise server capabilities. Fedify aims for broad interoperability and is actively maintained. It includes features like ActivityTransformers to smooth over implementation differences. NodeInfo support is built-in via setNodeInfoDispatcher().Challenge #7: Developer Experience—Actually Building Your App Beyond the protocol, building any server involves setup, testing, and debugging. With federation, debugging becomes harder—was the message malformed? Was the signature wrong? Is the remote server down? Is it a compatibility quirk? Good tooling is essential. Fedify enhances the developer experience significantly. Being built with TypeScript, it offers excellent type safety and editor auto-completion. The fedify CLI is a powerful companion designed to streamline common development tasks. You can quickly scaffold a new project tailored to your chosen runtime and web framework using fedify init. For debugging interactions and verifying data, fedify lookup is invaluable. It lets you inspect how any remote actor or object appears from the outside by performing WebFinger discovery and fetching the object's data. Fedify then displays the parsed object structure and properties directly in your terminal. For example, running:$ fedify lookup @fedify-example@fedify-blog.deno.dev<Will first show progress messages and then output the structured representation of the actor, similar to this:// Output of fedify lookup command (shows parsed object structure)Person { id: URL "https://fedify-blog.deno.dev/users/fedify-example", name: "Fedify Example Blog", published: 2024-03-03T13:18:11.857Z, // Simplified timestamp summary: "This blog is powered by Fedify, a fediverse server framework.", url: URL "https://fedify-blog.deno.dev/", preferredUsername: "fedify-example", publicKey: CryptographicKey { id: URL "https://fedify-blog.deno.dev/users/fedify-example#main-key", owner: URL "https://fedify-blog.deno.dev/users/fedify-example", publicKey: CryptoKey { /* ... CryptoKey details ... */ } }, // ... other properties like inbox, outbox, followers, endpoints ...}<This allows you to easily check how data is structured or troubleshoot why an interaction might be failing by seeing the actual properties Fedify parsed. Testing outgoing activities from your application during development is made much easier with fedify inbox. Running the command starts a temporary local server that acts as a publicly accessible inbox, displaying key information about the temporary actor it creates for receiving messages:$ fedify inbox✔ The ephemeral ActivityPub server is up and running: https://<unique_id>.lhr.life/✔ Sent follow request to @<some_test_account>@activitypub.academy.╭───────────────┬─────────────────────────────────────────╮│ Actor handle: │ i@<unique_id>.lhr.life │├───────────────┼─────────────────────────────────────────┤│ Actor URI: │ https://<unique_id>.lhr.life/i │├───────────────┼─────────────────────────────────────────┤│ Actor inbox: │ https://<unique_id>.lhr.life/i/inbox │├───────────────┼─────────────────────────────────────────┤│ Shared inbox: │ https://<unique_id>.lhr.life/inbox │╰───────────────┴─────────────────────────────────────────╯Web interface available at: http://localhost:8000/<You then configure your developing application to send an activity to the Actor inbox or Shared inbox URI provided. When an activity arrives, fedify inbox only prints a summary table to your console indicating that a request was received:╭────────────────┬─────────────────────────────────────╮│ Request #: │ 2 │├────────────────┼─────────────────────────────────────┤│ Activity type: │ Follow │├────────────────┼─────────────────────────────────────┤│ HTTP request: │ POST /i/inbox │├────────────────┼─────────────────────────────────────┤│ HTTP response: │ 202 │├────────────────┼─────────────────────────────────────┤│ Details │ https://<unique_id>.lhr.life/r/2 │╰────────────────┴─────────────────────────────────────╯<Crucially, the detailed information about the received request—including the full headers (like Signature), the request body (the Activity JSON), and the signature verification status—is only available in the web interface provided by fedify inbox. This web UI allows you to thoroughly inspect incoming activities during development.The Fedify Inbox web UI is where you view detailed activity information.<When you need to test interactions with the live fediverse from your local machine beyond just sending, fedify tunnel can securely expose your entire local development server temporarily. This suite of tools significantly eases the process of building and debugging federated applications.Conclusion: Build Features, Not Plumbing Implementing the ActivityPub suite of protocols from scratch is an incredibly complex and time-consuming undertaking. It involves deep dives into multiple technical specifications, cryptographic signing, security hardening, and navigating the nuances of a diverse ecosystem. While educational, it dramatically slows down the process of building the actual, unique features of your federated application. Fedify offers a well-architected, secure, and type-safe foundation, handling the intricacies of federation for you—data modeling, discovery, core mechanics, delivery, security, and interoperability. It lets you focus on your application's unique value and user experience. Stop wrestling with low-level protocol details and start building your vision for the fediverse faster and more reliably. Give Fedify a try! Getting started is straightforward. First, install the Fedify CLI using your preferred method. Once installed, create a new project template by running fedify init your-project-name. Check out the Fedify tutorials and Fedify manual to learn more. Happy federating!
Hey #a11y folks, suppose I have a form with a button that opens a mini-form in a popover or dialog. Does it make sense to stick things like `aria-required` or `aria-invalid` on that button if things in the mini-form are required / invalid?
On one hand, this feels semantically wrong? The button itself is just a trigger and can't really be "invalid" in anyway. On the other, since the actual invalid elements are in the popover or dialog, there's no other indication of this state (apart from manual descriptions).
Hey #a11y folks, suppose I have a form with a button that opens a mini-form in a popover or dialog. Does it make sense to stick things like `aria-required` or `aria-invalid` on that button if things in the mini-form are required / invalid?
On one hand, this feels semantically wrong? The button itself is just a trigger and can't really be "invalid" in anyway. On the other, since the actual invalid elements are in the popover or dialog, there's no other indication of this state (apart from manual descriptions).
Coming tomorrow to Kitten… Kitten icons!
Kitten will have built-in support for the Phosphor icons set with full authoring-time language intelligence where you can search for icons via category and tag (in addition to the canonical alphabetical categorisation).
Thought this was going to take me a few hours but it took a few days thanks to running into issues with size limits, type inference from JavaScript types in modules, etc., with the TypeScript language server but I believe I’ve finally cracked it :)
💕
#Kitten #SmallWeb #icons #PhosphorIcons #staticTypes #taxonomy #web #dev #TypeScript #languageServer

Screenshot of detail of a Kitten template open in a code editor. Author is editing Kitten component reference in a markdown block, within a H2 header. The caret is at <${kitten.icons.tags. and the autocompletion box is open showing a list of possible fields: a11y, accessibility, accessible, accomodations, account, accounts, accuracy, acrobat, activity, add. The reasty of the line of code reads } weight=duotone size=1.5em/>
Mastodon 🦣 - can you help me out?
If you can test on actual Safari (not another browser), does https://codepen.io/thebabydino/pen/EaxJmwJ?editors=1100 look the same for you as it does in my Epiphany screen? Or does the `conic-gradient()` cover the entire area?
Retoots appreciated if you cannot test. Thanks!
PS: Yes, I know it does NOT work in Firefox or Chromium browsers https://github.com/web-platform-tests/interop/issues/717
#CSS #SVG #filter #svgFilter #cssFilter #web #dev #webDev #webDevelopment #code #coding #frontend
Mastodon 🦣 - can you help me out?
If you can test on actual Safari (not another browser), does https://codepen.io/thebabydino/pen/EaxJmwJ?editors=1100 look the same for you as it does in my Epiphany screen? Or does the `conic-gradient()` cover the entire area?
Retoots appreciated if you cannot test. Thanks!
PS: Yes, I know it does NOT work in Firefox or Chromium browsers https://github.com/web-platform-tests/interop/issues/717
#CSS #SVG #filter #svgFilter #cssFilter #web #dev #webDev #webDevelopment #code #coding #frontend
Launching BSSG - My Journey from Dynamic CMS to Bash Static Site Generator
#ITNotes #NoteHUB #blogging #bssg #freebsd #linux #netbsd #openbsd #ownyourdata #server #ssg #web
it-notes.dragas.net
Announcing the public release of BSSG, a Bash Static Site Generator born from a personal journey away from complex dynamic CMS. Discover a simple, portable alternative for your blog.
We are PeARS, a friendly project dedicated to the development of a fully open source and decentralised #Web #search #engine.
How does it work? Every instance of PeARS can be considered a mini search engine for a single topic of interest, which is populated and curated by people like you. One beautiful day, when enough instances are alive, they will come together to provide a generalised Web search solution. Owned by you.
Interested? Come and help us! Say hello here or on GitHub.
🚨 Let’s Encrypt at risk from Trump cuts to OTF: “Let’s Encrypt received around $800,000 in funding from the OTF”
Dear @EUCommission, get your heads out of your arses and let’s find @letsencrypt €1M/year (a rounding error in EU finances) and have them move to the EU.
If Let’s Encrypt is fucked, the web is fucked, and the Small Web is fucked too. So how about we don’t let that happen, yeah?
(In the meanwhile, if the Let’s Encrypt folks want to make a point about how essential they are, it might be an idea to refuse certificates to republican politicians. See how they like their donation systems breaking in real time…)
CC @nlnet @NGIZero@mastodon.xyz
#USA #fascism #OpenTechFund #LetsEncrypt #SSL #TLS #encryption #EU #web #tech #SmallWeb #SmallTech https://mastodon.social/@publictorsten/114223873439053263
mastodon.social
Wenn Let’s Encrypt plötzlich nicht mehr klappt, wird das halbe Internet aus Zertifikatsfehlern bestehen. https://www.heise.de/news/Nach-Trump-Dekret-Kampf-um-US-Foerdermittel-fuer-Tor-F-Droid-und-Let-s-Encrypt-10328226.html
🚨 Let’s Encrypt at risk from Trump cuts to OTF: “Let’s Encrypt received around $800,000 in funding from the OTF”
Dear @EUCommission, get your heads out of your arses and let’s find @letsencrypt €1M/year (a rounding error in EU finances) and have them move to the EU.
If Let’s Encrypt is fucked, the web is fucked, and the Small Web is fucked too. So how about we don’t let that happen, yeah?
(In the meanwhile, if the Let’s Encrypt folks want to make a point about how essential they are, it might be an idea to refuse certificates to republican politicians. See how they like their donation systems breaking in real time…)
CC @nlnet @NGIZero@mastodon.xyz
#USA #fascism #OpenTechFund #LetsEncrypt #SSL #TLS #encryption #EU #web #tech #SmallWeb #SmallTech https://mastodon.social/@publictorsten/114223873439053263
mastodon.social
Wenn Let’s Encrypt plötzlich nicht mehr klappt, wird das halbe Internet aus Zertifikatsfehlern bestehen. https://www.heise.de/news/Nach-Trump-Dekret-Kampf-um-US-Foerdermittel-fuer-Tor-F-Droid-und-Let-s-Encrypt-10328226.html
Hey Web devs!
Do you have any suggestions, tips, opinions, dos, don’ts about headless CMSes?
I have a growing list of small/mid non-profits and collectives asking for my help to (re)make their website. I totally want to help, but I don’t have much time, especially considering that they generally have little or no funding—I would most definitely point them to @VillageOneCoop, otherwise.
Therefore, I want a super simple and replicable solution where I can copy-paste most of the code, while providing them with a stable, fast, and modern solution. I had a look at the Headless CMS section in the Jamstack website, but I need opinions from people who actually used some of that software already.
Please, boost this and ask around! Links to videos, tutorials, and resources are welcome.
People whose perspective I would really value: @zachleat @harryfk @deno_land @jaredwhite @vanillaweb @stefan @mxbck @WeirdWriter @deadsuperhero (Sorry if I am spamming you!)
#Eleventy #11ty #CMS #HeadlessCMS #Ghost #DecapCMS #CraftCMS #Strapi #Web #WebDev #WebDesign #StaticGen #StaticWebsite #Website #HTML #CSS #YunoHost #SelfHosting #Wordpress
jamstack.org
Check out this showcase of some of the best, open source headless CMSes. This is community-drive so be sure to submit your favorite CMS today!
Hey Web devs!
Do you have any suggestions, tips, opinions, dos, don’ts about headless CMSes?
I have a growing list of small/mid non-profits and collectives asking for my help to (re)make their website. I totally want to help, but I don’t have much time, especially considering that they generally have little or no funding—I would most definitely point them to @VillageOneCoop, otherwise.
Therefore, I want a super simple and replicable solution where I can copy-paste most of the code, while providing them with a stable, fast, and modern solution. I had a look at the Headless CMS section in the Jamstack website, but I need opinions from people who actually used some of that software already.
Please, boost this and ask around! Links to videos, tutorials, and resources are welcome.
People whose perspective I would really value: @zachleat @harryfk @deno_land @jaredwhite @vanillaweb @stefan @mxbck @WeirdWriter @deadsuperhero (Sorry if I am spamming you!)
#Eleventy #11ty #CMS #HeadlessCMS #Ghost #DecapCMS #CraftCMS #Strapi #Web #WebDev #WebDesign #StaticGen #StaticWebsite #Website #HTML #CSS #YunoHost #SelfHosting #Wordpress
jamstack.org
Check out this showcase of some of the best, open source headless CMSes. This is community-drive so be sure to submit your favorite CMS today!
What is a bug?
A bug is something that was working earlier but now isn't. Everything else is a feature.
Too spicy a definition? Or too lame? Who cares? For all that and more: https://mnvr.in/bugs
mnvr.in
A bug is something that was working earlier but now isn't. Everything else is a feature.
I have been trying to make the point that when we give up our privacy, we give up our security for a long time. This is an article and short video from 2017. I could have made the same statements today.
I think many more are seeing the same. I know most of you here do.
vivaldi.com
Vivaldi CEO Jon von Tetzchner says Internet is one of the solutions for democracy.
I have been trying to make the point that when we give up our privacy, we give up our security for a long time. This is an article and short video from 2017. I could have made the same statements today.
I think many more are seeing the same. I know most of you here do.
vivaldi.com
Vivaldi CEO Jon von Tetzchner says Internet is one of the solutions for democracy.
I have been trying to make the point that when we give up our privacy, we give up our security for a long time. This is an article and short video from 2017. I could have made the same statements today.
I think many more are seeing the same. I know most of you here do.
vivaldi.com
Vivaldi CEO Jon von Tetzchner says Internet is one of the solutions for democracy.
One of my main #web gripes: HTML forms can only use GET and POST methods.
If <form> also supported PUT and DELETE, you could easily map CRUD to HTTP methods and that would feel so much cleaner than splitting functionality for the same types over a bunch of different paths.
🚨 Let’s Encrypt at risk from Trump cuts to OTF: “Let’s Encrypt received around $800,000 in funding from the OTF”
Dear @EUCommission, get your heads out of your arses and let’s find @letsencrypt €1M/year (a rounding error in EU finances) and have them move to the EU.
If Let’s Encrypt is fucked, the web is fucked, and the Small Web is fucked too. So how about we don’t let that happen, yeah?
(In the meanwhile, if the Let’s Encrypt folks want to make a point about how essential they are, it might be an idea to refuse certificates to republican politicians. See how they like their donation systems breaking in real time…)
CC @nlnet @NGIZero@mastodon.xyz
#USA #fascism #OpenTechFund #LetsEncrypt #SSL #TLS #encryption #EU #web #tech #SmallWeb #SmallTech https://mastodon.social/@publictorsten/114223873439053263
mastodon.social
Wenn Let’s Encrypt plötzlich nicht mehr klappt, wird das halbe Internet aus Zertifikatsfehlern bestehen. https://www.heise.de/news/Nach-Trump-Dekret-Kampf-um-US-Foerdermittel-fuer-Tor-F-Droid-und-Let-s-Encrypt-10328226.html
🚨 Let’s Encrypt at risk from Trump cuts to OTF: “Let’s Encrypt received around $800,000 in funding from the OTF”
Dear @EUCommission, get your heads out of your arses and let’s find @letsencrypt €1M/year (a rounding error in EU finances) and have them move to the EU.
If Let’s Encrypt is fucked, the web is fucked, and the Small Web is fucked too. So how about we don’t let that happen, yeah?
(In the meanwhile, if the Let’s Encrypt folks want to make a point about how essential they are, it might be an idea to refuse certificates to republican politicians. See how they like their donation systems breaking in real time…)
CC @nlnet @NGIZero@mastodon.xyz
#USA #fascism #OpenTechFund #LetsEncrypt #SSL #TLS #encryption #EU #web #tech #SmallWeb #SmallTech https://mastodon.social/@publictorsten/114223873439053263
mastodon.social
Wenn Let’s Encrypt plötzlich nicht mehr klappt, wird das halbe Internet aus Zertifikatsfehlern bestehen. https://www.heise.de/news/Nach-Trump-Dekret-Kampf-um-US-Foerdermittel-fuer-Tor-F-Droid-und-Let-s-Encrypt-10328226.html
🚨 Let’s Encrypt at risk from Trump cuts to OTF: “Let’s Encrypt received around $800,000 in funding from the OTF”
Dear @EUCommission, get your heads out of your arses and let’s find @letsencrypt €1M/year (a rounding error in EU finances) and have them move to the EU.
If Let’s Encrypt is fucked, the web is fucked, and the Small Web is fucked too. So how about we don’t let that happen, yeah?
(In the meanwhile, if the Let’s Encrypt folks want to make a point about how essential they are, it might be an idea to refuse certificates to republican politicians. See how they like their donation systems breaking in real time…)
CC @nlnet @NGIZero@mastodon.xyz
#USA #fascism #OpenTechFund #LetsEncrypt #SSL #TLS #encryption #EU #web #tech #SmallWeb #SmallTech https://mastodon.social/@publictorsten/114223873439053263
mastodon.social
Wenn Let’s Encrypt plötzlich nicht mehr klappt, wird das halbe Internet aus Zertifikatsfehlern bestehen. https://www.heise.de/news/Nach-Trump-Dekret-Kampf-um-US-Foerdermittel-fuer-Tor-F-Droid-und-Let-s-Encrypt-10328226.html
»The anatomy of visually-hidden«
by James Edwards
This article really is the absolutely best explanation of the declarations used in the visually-hidden hack.
Found the link in the phantastic »Web Accessiblity Cookbook« written by @matuzo.
Thanx a million to both for writing and publishing this.
tpgi.com
You've probably used visually-hidden content before. But how does the CSS actually work, and why do we use those particular properties?
Ever wanted to get the number of auto-fit columns in CSS?
```
--u: 5em;
grid-template-columns: repeat(auto-fit, minmax(var(--u), 1fr))
```
It's now possible! Using registered #CSS vars, the tan division hack and container query units! Here's a little test on @codepen:
https://codepen.io/thebabydino/pen/JojpBJr
#cssGrid #cssLayout #code #coding #web #dev #webDev #webDevelopment #layout #frontend
Flexy flex layout for any number n of items such that we have:
👉 at most 3 items on a row
👉 at least 2 items on a row IF we have at least 2 items in total
In only 5 (display, flex-wrap, gap, flex and flex-basis override) CSS declarations, working for any number n of items! 🎇
Because someone asked for this on reddit https://www.reddit.com/r/css/comments/1jayx5v/comment/mhq2ldw/
Here is the @codepen demo https://codepen.io/thebabydino/pen/OPJOepJ
#CSS #flexbox #layout #cssLayout #cssFlexbox #code #coding #frontend #web #dev #webDev #webDevelopment

Screenshot of the desired layout for the desired number of items.

The 5 CSS declarations: ``` section { gap: var(--s); display: flex; flex-wrap: wrap } .item { flex: 1 1 calc((100% - 2*var(--s))/3); &:nth-child(3n):nth-last-child(2), &:nth-child(3n + 1):last-child { flex-basis: calc(50% - .5*var(--s)) } } ```
Flexy flex layout for any number n of items such that we have:
👉 at most 3 items on a row
👉 at least 2 items on a row IF we have at least 2 items in total
In only 5 (display, flex-wrap, gap, flex and flex-basis override) CSS declarations, working for any number n of items! 🎇
Because someone asked for this on reddit https://www.reddit.com/r/css/comments/1jayx5v/comment/mhq2ldw/
Here is the @codepen demo https://codepen.io/thebabydino/pen/OPJOepJ
#CSS #flexbox #layout #cssLayout #cssFlexbox #code #coding #frontend #web #dev #webDev #webDevelopment

Screenshot of the desired layout for the desired number of items.

The 5 CSS declarations: ``` section { gap: var(--s); display: flex; flex-wrap: wrap } .item { flex: 1 1 calc((100% - 2*var(--s))/3); &:nth-child(3n):nth-last-child(2), &:nth-child(3n + 1):last-child { flex-basis: calc(50% - .5*var(--s)) } } ```
(Versione italiana nel post precedente)
Tomorrow will begin the unbelievable tour of Knitting Our Internet, bringing the workshop around Italy! ⛵
If you’ll be in the places where the workshop will be happening, you are most definitely welcome to join, 🆓 participation is completely free. If you won’t be around, please help me spread the word to friends and curious folks around the country! Everyone is invited. 💕
Thanks to the awesome people who will be hosting me! @collettivodemand @reclaimthetech
✨ Special note: while I will be in Bologna, we are planning to gather in person and collectively attend @fediforum, all together, from Scift, the newborn hackerspace in Làbas!
ℹ️ To get the latest info, visit https://ournet.rocks/
#LaNostraRete #LaNostraReteTour #OurNetTour #Milano #FaLaCosaGiusta #Napoli #Roma #Velletri #Làbas #UrbanArtLab #Bologna #Bolo #Verona #KnittingOurInternet #Internet #InternetHistory #Web #DWeb #Zero81 #Fediverse #decentralization #decentralizzazione #Demand #laboratorio #lab #Italy #hackerspace #FediForum #Fediverse

A graphics with red background and white text. On the top right, a pixelated black kitten pops out of the corner, at the bottom, in the center, there is a pixelated purple and green yarn. In the left part, the text recites: “Knitting Our Internet Italy tour 14/3 Fa’ la cosa giusta, Milan 18-19/3 Liceo Galilei, Verona (online) 18/3 Zero81, Naples 25/3 Villa Bernabei, Velletri 27/3 Roma (location TBD) 29/3 SCIFT, Làbas, Bologna 1-2/4 We’ll collectively connect to the FediForum from Làbas, Bologna More info: https://ournet.rocks” In the right part, a map of Italy with pins in all the locations where the workshop will be taking place.
(English version in the following post)
Da domani partirà il fantasmagorico imperdibile tour de La Nostra Rete, che porterà il workshop in giro per l’Italia! ⛵
Se sarete nei luoghi in cui si terrà il laboratorio siete assolutamente invitatз, 🆓 l’ingresso è libero e gratuito. Se non foste nei paraggi, condividete appppalla con amicз tecnoscetticз, tecnoinnamoratз, tecnoasceticз, tecnorepellenti o tecnoindifferenti. Sono tuttз benvenutз 💕
Grazie alle persone stratopiche che mi ospiteranno! @collettivodemand @reclaimthetech
✨ Nota speciale: mentre sarò a Bologna, ci stiamo organizzando per trovarci di persona e partecipare collettivamente al @fediforum, tuttз insieme da Scift, la nuova officina che aprirà domani a Làbas!
ℹ️ Per info aggiornate, visitate https://ournet.rocks/it/
#LaNostraRete #LaNostraReteTour #OurNetTour #Milano #FaLaCosaGiusta #Napoli #Roma #Velletri #Làbas #UrbanArtLab #Bologna #Bolo #Verona #KnittingOurInternet #Internet #InternetHistory #Web #DWeb #Zero81 #Fediverse #decentralization #decentralizzazione #Demand #laboratorio #lab

Una grafica con sfondo rosso e testo bianco. In alto a destra spunta un gattino nero pixelato, in basso in centro c’è un gomitolo pixelato viola scuro e verde. Nella parte sinistra, il testo recita: “14/3 Fa’ la cosa giusta, Milano 18-19/3 Liceo Galilei, Verona (online) 18/3 Zero81, Napoli 25/3 Villa Bernabei, Velletri 27/3 Roma (luogo da definirsi) 29/3 SCIFT, Làbas, Bologna 1-2/4 Ci connetteremo tuttз insieme al FediForum da Làbas, a Bologna Maggiori informazioni: https://ournet.rocks” Nella parte destra, una mappa dell’Italia con le tappe del tour evidenziate.
This is wild. I began designing and building websites in 1995. From today, in 2025, I’ve been designing and writing code for most of the internet’s existence. 👀
#Web #Internet #Design #Code #HTML #CSS #WebDesign
https://w3c.social/@w3c/114150554471950167
w3c.social
Today is the anniversary of the invention of the World Wide Web in 1989 by Tim Berners-Lee. W3C has continued to expand on what the web does by our mission to make the web work, for everyone. We bring together global stakeholders to develop open standards that enable a World Wide Web that connects and empowers humanity. https://www.w3.org/mission/
This is wild. I began designing and building websites in 1995. From today, in 2025, I’ve been designing and writing code for most of the internet’s existence. 👀
#Web #Internet #Design #Code #HTML #CSS #WebDesign
https://w3c.social/@w3c/114150554471950167
w3c.social
Today is the anniversary of the invention of the World Wide Web in 1989 by Tim Berners-Lee. W3C has continued to expand on what the web does by our mission to make the web work, for everyone. We bring together global stakeholders to develop open standards that enable a World Wide Web that connects and empowers humanity. https://www.w3.org/mission/
A first draft of the "Accessibility Roles and Responsibilities Mapping (ARRM)" document has been published!
https://www.w3.org/WAI/planning/arrm/
This resource helps "[…] defining roles, tasks, and responsibilities for meeting Web Content Accessibility Guidelines […]".
Worth a read!
#web #digital #accessibility #product #design #development #a11y
w3.org
ARRM helps you assign responsibilities for digital accessibility to appropriate roles (UX designer, content creator, developer) early in projects.
Coming up on my task list is getting multiple/different containers running on a single domain using subdomains… can that work?
So app1.example.com is one Podman container and app2.example.com is a different Podman container… (both using port 80)
I’ve found this guide I might try, but if you have a better way please let me know!
➡️ https://www.redhat.com/en/blog/podman-nginx-multidomain-applications
redhat.com
Managing different applications from different domains on the same host can be difficult when using different ports. When a colleague suggested I write an ar...
Throwing this out there, I am still available for work! If you have something #Web related, #Nix / #NixOS related, or #Kubernetes / #Containers related then I would love to chat!
You can find more about my background and projects on my website (which also includes contact information): https://jakehamilton.dev
jakehamilton.dev
just under TWO WEEKS until the submission deadline for Good Internet magazine: march 15, 2025!
☂️ Good Internet launches in May 2025. it's a volunteer-run, not-for-profit print and digital quarterly magazine for personal website owners and those interested in using the internet as a means of self-expression, art, and recreation.
🔎 we're looking for 1,500 to 4,000 word articles about anything for that audience!
👉 this means #webdev hobbyists, digital (and traditional) #artists, #internet culture enthusiasts, #technology nerds, #socialmedia expatriates, & anyone who wants to unplug from the corporate-owned #web.
topics could be:
* internet history
* personal websites & blogs
* #accessibility on the #indieweb
* finding inspiration for a #blog
* #webdesign trends (current or old)
* running from the #enshittification of the web
* lessons or post-mortems from web projects
* news or overviews of #opensource projects
* #privacy on the indieweb
🔍 also looking for any #art submissions centered around the web, coding, internet culture, and digital art!
if it relates to hobbies on "this side of the web," we probably want to run it!
✨ you can have your article submitted as text and images only OR you can code a whole webpage that helps tell your story!
🌊 if you're interested in learning more, sign up for our email list or check out the submission guidelines @ https://goodinternetmagazine.com!
🙏 (please boost if you can! <3 getting the word out helps so much!)
#writing #publishing #magazine #html #css #tech #css #javascript #rss #mastodon #google #facebook #amazon #resist
goodinternetmagazine.com
A print and digital magazine coming soon.
Cloudflare is the worst.
Banning people under 18 without warning, even when they want to use parental consent, is anti-youth entrepreneurship.
You build projects, buy domains, verify your identity, and they delete your whole account just for being young. ☠️
No second chance, no future. This affects many developers, and even Cloudflare themselves.
I'll never recommend Cloudflare, and I never will.
just under TWO WEEKS until the submission deadline for Good Internet magazine: march 15, 2025!
☂️ Good Internet launches in May 2025. it's a volunteer-run, not-for-profit print and digital quarterly magazine for personal website owners and those interested in using the internet as a means of self-expression, art, and recreation.
🔎 we're looking for 1,500 to 4,000 word articles about anything for that audience!
👉 this means #webdev hobbyists, digital (and traditional) #artists, #internet culture enthusiasts, #technology nerds, #socialmedia expatriates, & anyone who wants to unplug from the corporate-owned #web.
topics could be:
* internet history
* personal websites & blogs
* #accessibility on the #indieweb
* finding inspiration for a #blog
* #webdesign trends (current or old)
* running from the #enshittification of the web
* lessons or post-mortems from web projects
* news or overviews of #opensource projects
* #privacy on the indieweb
🔍 also looking for any #art submissions centered around the web, coding, internet culture, and digital art!
if it relates to hobbies on "this side of the web," we probably want to run it!
✨ you can have your article submitted as text and images only OR you can code a whole webpage that helps tell your story!
🌊 if you're interested in learning more, sign up for our email list or check out the submission guidelines @ https://goodinternetmagazine.com!
🙏 (please boost if you can! <3 getting the word out helps so much!)
#writing #publishing #magazine #html #css #tech #css #javascript #rss #mastodon #google #facebook #amazon #resist
goodinternetmagazine.com
A print and digital magazine coming soon.
today is officially *THREE* weeks until the submission deadline for Good Internet magazine!
Good Internet launches in May 2025. it's a volunteer-run, not-for-profit print and digital quarterly magazine for personal website owners and those interested in using the internet as a means of self-expression, art, and recreation.
🔍 we're looking for 1,500-4,000 word articles about anything related to that!
you could write about:
* #internet history
* personal #websites
* #accessibility on the #indieweb
* finding inspiration for a #blog
* #webdesign trends
* running from the #enshittification of the #web
* lessons or post-mortems from #webdev projects
* news or overviews of #opensource projects
if it relates to hobbies on "this side of the web," whether you call it the #smallweb or indieweb, we probably want to run it!
you can have your article as low-media (meaning only text and images) or interactive, where you code an entire webpage to help tell your story.
if you're interested in learning more, you can sign up for our email list for when we launch or you can check the submission guidelines @ https://goodinternetmagazine.com!
(please boost if you can! <3)
goodinternetmagazine.com
A print and digital magazine coming soon.
just under TWO WEEKS until the submission deadline for Good Internet magazine: march 15, 2025!
☂️ Good Internet launches in May 2025. it's a volunteer-run, not-for-profit print and digital quarterly magazine for personal website owners and those interested in using the internet as a means of self-expression, art, and recreation.
🔎 we're looking for 1,500 to 4,000 word articles about anything for that audience!
👉 this means #webdev hobbyists, digital (and traditional) #artists, #internet culture enthusiasts, #technology nerds, #socialmedia expatriates, & anyone who wants to unplug from the corporate-owned #web.
topics could be:
* internet history
* personal websites & blogs
* #accessibility on the #indieweb
* finding inspiration for a #blog
* #webdesign trends (current or old)
* running from the #enshittification of the web
* lessons or post-mortems from web projects
* news or overviews of #opensource projects
* #privacy on the indieweb
🔍 also looking for any #art submissions centered around the web, coding, internet culture, and digital art!
if it relates to hobbies on "this side of the web," we probably want to run it!
✨ you can have your article submitted as text and images only OR you can code a whole webpage that helps tell your story!
🌊 if you're interested in learning more, sign up for our email list or check out the submission guidelines @ https://goodinternetmagazine.com!
🙏 (please boost if you can! <3 getting the word out helps so much!)
#writing #publishing #magazine #html #css #tech #css #javascript #rss #mastodon #google #facebook #amazon #resist
goodinternetmagazine.com
A print and digital magazine coming soon.
Genuine question: if the end goal is an open web and user freedoms, how essential is having a diversity of browser engines?
If building/maintaining a browser engine separate from Blink and WebKit is a lot of effort, is that the most important effort for the community to invest in? Or are there other ways to influence the web that are higher value/lower cost?
I’d love to learn from anyone’s thoughts. I would request for folks to keep the discussion respectful.
I wrote up my thoughts on the bigger picture topic of Mozilla, Gecko, and what web browser dev probably ends up looking like.. or not. From the perspective of someone who stewarded Firefox for a couple years.
https://www.vmunix.com/gecko-mozilla-thoughts/
I’m pretty sure nobody comments on blogs and I'm really curious what people have to contribute to the discussion so I’ll post the paragraphs below.
vmunix.com
Lots of talk on the socials re: Mozilla and Firefox/Gecko triggered by the recent ToS changes. Thought I'd write up some thoughts on the bigger picture "what to do about gecko" stuff. Additions, corrections, giant gaping holes that need to be addressed.. all welcome feedback. :) The goal and awesomeness
Grainy distorted gradient blob: 1 #SVG `radialGradient` (setting a focal point `fx,fy`) vs. multiple #CSS `radial-gradient()` layers (no option to control focal point).
Using filters for distortion & grain effect.
A bit more detail on this https://www.reddit.com/r/css/comments/1j03iyv/comment/mf89ri9/
#svgGradient #cssGradient #blob #grainy #radialGradient #svgFilter #filter #grain #code #coding #frontend #distortion #web #dev #webDev #webDevelopment
#tinySVGtips: If you want a circle in the middle of your #SVG, choose your `viewBox` wisely.
Both options below produce the same visual result, but the second one makes it easier to use the circle later. To animate transform (make it pulse), to build (animated) pie/ 🍩 charts like here https://mastodon.social/@anatudor/114029549360689991
#code #coding #frontend #svgShapes #web #dev #webDev #webDevelopment #chart
#tinySVGtips: If you want a circle in the middle of your #SVG, choose your `viewBox` wisely.
Both options below produce the same visual result, but the second one makes it easier to use the circle later. To animate transform (make it pulse), to build (animated) pie/ 🍩 charts like here https://mastodon.social/@anatudor/114029549360689991
#code #coding #frontend #svgShapes #web #dev #webDev #webDevelopment #chart
Grainy distorted gradient blob: 1 #SVG `radialGradient` (setting a focal point `fx,fy`) vs. multiple #CSS `radial-gradient()` layers (no option to control focal point).
Using filters for distortion & grain effect.
A bit more detail on this https://www.reddit.com/r/css/comments/1j03iyv/comment/mf89ri9/
#svgGradient #cssGradient #blob #grainy #radialGradient #svgFilter #filter #grain #code #coding #frontend #distortion #web #dev #webDev #webDevelopment
Comment Mozilla est en train de s'aliéner ses 3 derniers % d'utilisateurs pour les convaincre d'aller voir ailleurs.
#Web
#Internet
#Mozilla
#Firefox
#Marketing
#Advertising
#ByTheWayIfAnyoneHereIsInMarketingOrAdvertisingKillYourself
via > https://mamot.fr/@kajer@infosec.exchange 🔗 https://infosec.exchange/@kajer/114072791125293312
@mozillaofficial right now
I keep seeing posts about Web pages disappearing, being backed up in extremis on the #Archive. And then other posts worrying about whether the Archive itself could one day disappear.
The obvious answer to this problem is that we need a #decentralized #Web archive. But where would this come from? There are both technical and legal considerations to take into account. I.e. how do we make it work, and how do we ensure it does not infringe #copyright laws? So here's a thought... \1
FediMeteo: How a Tiny €4 FreeBSD VPS Became a Global Weather Service for Thousands
#Fediverse #FreeBSD #RunBSD #Hosting #ITNotes #Networking #NoteHUB #Server #Snac #Snac2 #Social #Web
it-notes.dragas.net
How a simple idea turned into an international weather service on the Fediverse.
I keep seeing posts about Web pages disappearing, being backed up in extremis on the #Archive. And then other posts worrying about whether the Archive itself could one day disappear.
The obvious answer to this problem is that we need a #decentralized #Web archive. But where would this come from? There are both technical and legal considerations to take into account. I.e. how do we make it work, and how do we ensure it does not infringe #copyright laws? So here's a thought... \1
FediMeteo: How a Tiny €4 FreeBSD VPS Became a Global Weather Service for Thousands
#Fediverse #FreeBSD #RunBSD #Hosting #ITNotes #Networking #NoteHUB #Server #Snac #Snac2 #Social #Web
it-notes.dragas.net
How a simple idea turned into an international weather service on the Fediverse.
If you remember (and like) the "old web" (I would even say even almost BEFORE officially "Web 1.0" as labeled) then you might enjoy this nostalgic and hopeful look at the "fun" web:
"This page is under construction: A love letter to the personal website".
https://localghost.dev/blog/this-page-is-under-construction/
localghost.dev
If you take just one thing away from this article, I want it to be this: please build your own website.
If you remember (and like) the "old web" (I would even say even almost BEFORE officially "Web 1.0" as labeled) then you might enjoy this nostalgic and hopeful look at the "fun" web:
"This page is under construction: A love letter to the personal website".
https://localghost.dev/blog/this-page-is-under-construction/
localghost.dev
If you take just one thing away from this article, I want it to be this: please build your own website.
FediMeteo: How a Tiny €4 FreeBSD VPS Became a Global Weather Service for Thousands
#Fediverse #FreeBSD #RunBSD #Hosting #ITNotes #Networking #NoteHUB #Server #Snac #Snac2 #Social #Web
it-notes.dragas.net
How a simple idea turned into an international weather service on the Fediverse.
today is officially *THREE* weeks until the submission deadline for Good Internet magazine!
Good Internet launches in May 2025. it's a volunteer-run, not-for-profit print and digital quarterly magazine for personal website owners and those interested in using the internet as a means of self-expression, art, and recreation.
🔍 we're looking for 1,500-4,000 word articles about anything related to that!
you could write about:
* #internet history
* personal #websites
* #accessibility on the #indieweb
* finding inspiration for a #blog
* #webdesign trends
* running from the #enshittification of the #web
* lessons or post-mortems from #webdev projects
* news or overviews of #opensource projects
if it relates to hobbies on "this side of the web," whether you call it the #smallweb or indieweb, we probably want to run it!
you can have your article as low-media (meaning only text and images) or interactive, where you code an entire webpage to help tell your story.
if you're interested in learning more, you can sign up for our email list for when we launch or you can check the submission guidelines @ https://goodinternetmagazine.com!
(please boost if you can! <3)
goodinternetmagazine.com
A print and digital magazine coming soon.
today is officially *THREE* weeks until the submission deadline for Good Internet magazine!
Good Internet launches in May 2025. it's a volunteer-run, not-for-profit print and digital quarterly magazine for personal website owners and those interested in using the internet as a means of self-expression, art, and recreation.
🔍 we're looking for 1,500-4,000 word articles about anything related to that!
you could write about:
* #internet history
* personal #websites
* #accessibility on the #indieweb
* finding inspiration for a #blog
* #webdesign trends
* running from the #enshittification of the #web
* lessons or post-mortems from #webdev projects
* news or overviews of #opensource projects
if it relates to hobbies on "this side of the web," whether you call it the #smallweb or indieweb, we probably want to run it!
you can have your article as low-media (meaning only text and images) or interactive, where you code an entire webpage to help tell your story.
if you're interested in learning more, you can sign up for our email list for when we launch or you can check the submission guidelines @ https://goodinternetmagazine.com!
(please boost if you can! <3)
goodinternetmagazine.com
A print and digital magazine coming soon.
New Kitten release
• Fixes redirection from sign-in page when person is already authenticated.
To learn more about how Kitten automatically implements authentication for your Small Web sites and apps using public-key cryptography (so even your own server doesn’t know your secret)¹, please see the Authentication tutorial:
https://kitten.small-web.org/tutorials/authentication/
Enjoy!
💕
¹ The security (and privacy) of Domain/Kitten are based on a 32-byte cryptographically random secret string that only the person who owns/controls a domain knows.
This is basically a Base256-encoded ed25519 secret key where the Base256 alphabet is a set of curated emoji surrogate pairs without any special modifiers chosen mainly from the animals, plants, and food groups with some exceptions (to avoid common phobias or triggers, etc.) that we call KittenMoji.
…
When setting up a Small Web app via Domain, this key is generated in the person’s browser, on their own computer, and is never communicated to either the Domain instance or the Kitten app being installed. Instead the ed25519 public key is sent to both and signed token authentication is used when the server needs to verify the owner’s identity (e.g., before allowing access to the administration area).
The expected/encouraged behaviour is for the person to store this secret in their password manager of choice.
More: https://kitten.small-web.org/reference/#cryptographic-properties
#Kitten #SmallWeb #SmallTech #authentication #publicKeyCryptography #web #dev #NodeJS #JavaScript #HTML #CSS
kitten.small-web.org
New Kitten release
• Fixes redirection from sign-in page when person is already authenticated.
To learn more about how Kitten automatically implements authentication for your Small Web sites and apps using public-key cryptography (so even your own server doesn’t know your secret)¹, please see the Authentication tutorial:
https://kitten.small-web.org/tutorials/authentication/
Enjoy!
💕
¹ The security (and privacy) of Domain/Kitten are based on a 32-byte cryptographically random secret string that only the person who owns/controls a domain knows.
This is basically a Base256-encoded ed25519 secret key where the Base256 alphabet is a set of curated emoji surrogate pairs without any special modifiers chosen mainly from the animals, plants, and food groups with some exceptions (to avoid common phobias or triggers, etc.) that we call KittenMoji.
…
When setting up a Small Web app via Domain, this key is generated in the person’s browser, on their own computer, and is never communicated to either the Domain instance or the Kitten app being installed. Instead the ed25519 public key is sent to both and signed token authentication is used when the server needs to verify the owner’s identity (e.g., before allowing access to the administration area).
The expected/encouraged behaviour is for the person to store this secret in their password manager of choice.
More: https://kitten.small-web.org/reference/#cryptographic-properties
#Kitten #SmallWeb #SmallTech #authentication #publicKeyCryptography #web #dev #NodeJS #JavaScript #HTML #CSS
kitten.small-web.org
this will likely be a recurring reminder as the weeks go by, but i'm so excited about this project. i have to share! (this is the first time i've been nervous to announce something on this side of the web!)
i'm combining my 10 years of journalism experience with my love for the #indieweb by launching GOOD INTERNET, a regular periodical magazine in both print and digital formats. and this is a non-profit, completely independent endeavor!
https://goodinternetmagazine.com/
ultimately, Good Internet will cover a lot of different aspects of the small web: unplugging from the corporate web, fighting #enshittification, migrating from data-harvesting corpo social media, creating your own personal website, using code and website-building as an art form, federation, and creating websites for fun. it will be approachable for beginners and enjoyable for seasoned indie web travelers!
the #smallweb can be hard to keep up with if you aren't "plugged in," especially if you want to find other hobby website owners, folks coding for fun, weird web projects, or artists taking back their digital ownership. it's overdue that this side of the web has an analog publication!
having a central publication about the decentralized parts of the personal web makes me even more excited to share this hobby with those who might not even know about it--all within beautiful, high-res, high-quality pages.
the idea here is to have a physical celebration of this hobby in addition to being informative, helpful, and accessible.
consider signing up for email notifications when we launch the first issue in may 2025:
https://goodinternetmagazine.com
(if you're interested in #writing an article or op-ed about this side of the web/personal websites, coding an interactive article, or want to know what that even means, send an email to hello@goodinternetmagazine.com! taking pitches for may 2025!)
#internet #socialmedia #personalwebsites #blogging #blog #print #magazine #writer #technology #tech #coding #programming #html #webdev #webdesign #web #smalltech #css #html #dev #web
goodinternetmagazine.com
A print and digital magazine coming soon.
I was so inspired by @sophie's excellent write-up that I wrote one of my own. It mostly echoes what she said, since we share a similar history with the web, but I wanted to add my own perspective.
The true form of decentralization through the bliss of personal websites
https://rolle.design/the-true-form-of-decentralization-through-the-bliss-of-personal-websites
#OpenWeb #SocialWeb #Websites #PersonalWebsites #Web #WebDesign #OpenSource
rolle.design
Whenever someone argues that your personal tools or servers aren’t permanent and will eventually fail with you, I reply: yes, but they’re mine. My websites are always under construction – and that’s the whole point, it is what makes them uniquely my own. Running my own Mastodon server or a Dropbox equivalent with Nextcloud is […]
Je commence à suivre pas mal d'artisan·es et d'illustrateur·ices cool ici, je suis contente.
Mais où est le #mastodev fr ? Où êtes-vous les #devs, les #womenintech, les #opensource contributiors ?
De mon côté je suis principalement #web #frontend #javascript #emberjs, mais je fais aussi un peu d'autres choses des fois.
Are there any good open-source newsletter or mailing list tools that someone can recommend? I met a person who had a newsletter (not sure what service she was using) but she said the costs kept going up and she couldn't afford it anymore, so I promised I'd ask around and see if she can get something good and affordable. I've heard of Ghost, but wonder if there are free ones as well?
It is Saturday afternoon and I am relearning #web #development in #golang.
I want y'all web designers to look at https://www.brailleinstitute.org
It's beautiful. Text is actually black on white (or white on black) unlike your typical grey on grey. There is a nice 2 pixel border around sections and a thick shadow around buttons, giving them a retro feel but also making them clearly readable as buttons.
I love it. They also have a cool font available.
brailleinstitute.org
Free, life-changing services, classes, and more for people with low vision to no vision.
I want y'all web designers to look at https://www.brailleinstitute.org
It's beautiful. Text is actually black on white (or white on black) unlike your typical grey on grey. There is a nice 2 pixel border around sections and a thick shadow around buttons, giving them a retro feel but also making them clearly readable as buttons.
I love it. They also have a cool font available.
brailleinstitute.org
Free, life-changing services, classes, and more for people with low vision to no vision.
🗺️ As many people are angry with #Google & asking for alternatives to #GoogleMaps, here are some Free & #OpenSource options:
📱 App
- https://osmand.net/
- https://organicmaps.app
🌐 Web
- https://mapcarta.com
- https://www.openstreetmap.org
Not Open Source:
🌐&📱
https://en.mapy.cz
https://wego.here.com
https://www.mapquest.com
🌐
https://www.lokjo.com
📱
https://www.komoot.com
https://www.magicearth.com
#FCKGoogle #Alternative #Apps #App #Web #Software #News #Tech #Maps #Map #Technology #it
magicearth.com
Magic Earth is a free maps and navigation app based on OpenStreetMap data. Enjoy 3D maps, Satellite maps, Turn-by-turn navigation, HD Traffic, Offline maps
Donno about you guys but it sure is nice not to have to try and decipher the clusterfuck-like syntax of Hugo’s Go-based templating engine anymore…
The code on the left is Kitten¹, on the right is Hugo².
Kitten’s ‘template engine’ is just JavaScript tagged template strings.
(I’m porting the Small Technology Foundation web site³ from Site.js⁴ to Kitten, and in the process from being a Hugo-based static site to a dynamic one with a nice little admin panel I’m making to make it trivially easy to add new news items, events, and videos.)
¹ https://kitten.small-web.org
² https://gohugo.io
³ https://small-tech.org
⁴ https://sitejs.org
#Kitten #SmallWeb #SmallTech #Hugo #JavaScript #Go #web #dev #NodeJS #templating
![Screenshot of split terminal window showing the sample template in Kitten (on the left, as a JavaScript tagged template string) and on the right in Hugo’s Go-based templating system.
Partial code comparison:
Kitten:
<if ${db.news.posts.length > 0}>
<then>
<ul class='posts-list'>
${db.news.posts.map(post => kitten.html`
<li>
<h2 class='p-name'>${post.title}</h2>
<div class='entry-meta'>
<p>Posted: ${post.date} by ${post.author.name} on <a href='${post.author.siteLink}'>${post.author.siteName}</a>
</div>
<blockquote class='summary'>
${[kitten.md.render(post.summary)]}
</blockquote>
Hugo:
{{ $section := where .Site.RegularPages "Section" .Section }}
<ul class='posts-list'>
{{ range $section }}
<li>
<h2 class='p-name'>
{{ .Title }}
</h2>
<div class='entry-meta'><p>Posted: <time datetime='{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}'>
{{ .Date.Format "2" | humanize }} {{ .Date.Format "January, 2006" }}
</time> {{ with .Params.author }}by {{ . }} {{end}}on <a href='{{ .Params.SourceURL }}'>{{ .Params.SourceName }}</a></p></div>
<blockquote class='summary'>
<p>{{ .Summary }}</p>
</blockquote>](https://media.social.fedify.dev/media/0194f5a7-8f87-7015-bc7c-4207c1754592/thumbnail.webp)
Screenshot of split terminal window showing the sample template in Kitten (on the left, as a JavaScript tagged template string) and on the right in Hugo’s Go-based templating system. Partial code comparison: Kitten: <if ${db.news.posts.length > 0}> <then> <ul class='posts-list'> ${db.news.posts.map(post => kitten.html` <li> <h2 class='p-name'>${post.title}</h2> <div class='entry-meta'> <p>Posted: ${post.date} by ${post.author.name} on <a href='${post.author.siteLink}'>${post.author.siteName}</a> </div> <blockquote class='summary'> ${[kitten.md.render(post.summary)]} </blockquote> Hugo: {{ $section := where .Site.RegularPages "Section" .Section }} <ul class='posts-list'> {{ range $section }} <li> <h2 class='p-name'> {{ .Title }} </h2> <div class='entry-meta'><p>Posted: <time datetime='{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}'> {{ .Date.Format "2" | humanize }} {{ .Date.Format "January, 2006" }} </time> {{ with .Params.author }}by {{ . }} {{end}}on <a href='{{ .Params.SourceURL }}'>{{ .Params.SourceName }}</a></p></div> <blockquote class='summary'> <p>{{ .Summary }}</p> </blockquote>
🗺️ As many people are angry with #Google & asking for alternatives to #GoogleMaps, here are some Free & #OpenSource options:
📱 App
- https://osmand.net/
- https://organicmaps.app
🌐 Web
- https://mapcarta.com
- https://www.openstreetmap.org
Not Open Source:
🌐&📱
https://en.mapy.cz
https://wego.here.com
https://www.mapquest.com
🌐
https://www.lokjo.com
📱
https://www.komoot.com
https://www.magicearth.com
#FCKGoogle #Alternative #Apps #App #Web #Software #News #Tech #Maps #Map #Technology #it
magicearth.com
Magic Earth is a free maps and navigation app based on OpenStreetMap data. Enjoy 3D maps, Satellite maps, Turn-by-turn navigation, HD Traffic, Offline maps
🗺️ As many people are angry with #Google & asking for alternatives to #GoogleMaps, here are some Free & #OpenSource options:
📱 App
- https://osmand.net/
- https://organicmaps.app
🌐 Web
- https://mapcarta.com
- https://www.openstreetmap.org
Not Open Source:
🌐&📱
https://en.mapy.cz
https://wego.here.com
https://www.mapquest.com
🌐
https://www.lokjo.com
📱
https://www.komoot.com
https://www.magicearth.com
#FCKGoogle #Alternative #Apps #App #Web #Software #News #Tech #Maps #Map #Technology #it
magicearth.com
Magic Earth is a free maps and navigation app based on OpenStreetMap data. Enjoy 3D maps, Satellite maps, Turn-by-turn navigation, HD Traffic, Offline maps
We Replaced Our React Frontend with Go and WebAssembly - Dagger https://lobste.rs/s/gr3ghv #web
https://dagger.io/blog/replaced-react-with-go
dagger.io
Powerful, programmable CI/CD engine that runs your pipelines in containers — pre-push on your local machine and/or post-push in CI
Your web server having an interactive shell (REPL) where you can live update entries in your site/app’s database is pretty neat (if I do say so myself) :)
https://kitten.small-web.org/reference/#kitten-s-interactive-shell-repl
(I’m porting the Small Technology Foundation site¹ from Site.js² – and hence from being a static site generated via Site.js’s integrated Hugo³ – to Kitten⁴. In the process, I’m creating an admin panel⁵ for the news, events, and videos sections, which will make them easier to update, and storing the data in Kitten’s internal JavaScript Database⁶.)
¹ https://small-tech.org
² https://sitejs.org
³ https://gohugo.io/
⁴ https://kitten.small-web.org
⁵ It’s trivial to create authenticated routes in Kitten. You just add a lock emoji (🔒) to the end of your route’s name. e.g., admin🔒.page.js or /admin🔒/index.page.js (see https://kitten.small-web.org/reference/#sessions-and-authentication).
⁶ https://codeberg.org/small-tech/jsdb
#Kitten #REPL #shell #JavaScript #database #JavaScriptDatabase #JSDB #SmallTechnologyFoundation #SiteJS #Hugo #web #dev #NodeJS
![Screenshot of Kitten’s interactive shell, showing me alterning a database entry in development:
}
]
🐱 💬 kitten.db.news[0].link = kitten.db.news[0].postLink
'https://ar.al/2024/05/23/new-kitten-features-interactive-shell-repl-multi-page-settings-and-backup-and-restore-data-portability/'
🐱 💬 kitten.db.news[0]
Proxy [
News {
link: 'https://ar.al/2024/05/23/new-kitten-features-interactive-shell-repl-multi-page-settings-and-backup-and-restore-data-portability/',
title: 'New Kitten features: Interactive Shell (REPL), Multi-page Settings, and backup and restore (data portability)',
date: '2024-05-23',
image: '',
summary: 'In this video, Aral demonstrates the new features added to Kitten in May: including the new Interactive Shell (REPL), Multi-page Settings, and backup and restore (data portability).',
author: 'Aral Balkan',
sourceName: 'Aral’s Blog',
sourceLink: 'https://ar.al',
postLink: 'https://ar.al/2024/05/23/new-kitten-features-interactive-shell-repl-multi-page-settings-and-backup-and-restore-data-portability/',
presets: 'custom'
},
{
get: [Function: bound getHandler] { boundObject: [DataProxy] },
set: [Function: bound setHandler] { boundObject: [DataProxy] },
defineProperty: [Function: bound definePropertyHandler] { boundObject: [DataProxy] },
deleteProperty: [Function: bound deletePropertyHandler] { boundObject: [DataProxy] }
}
]](https://media.social.fedify.dev/media/0194f096-c3e8-778c-80e3-82b7fae53c60/thumbnail.webp)
Screenshot of Kitten’s interactive shell, showing me alterning a database entry in development: } ] 🐱 💬 kitten.db.news[0].link = kitten.db.news[0].postLink 'https://ar.al/2024/05/23/new-kitten-features-interactive-shell-repl-multi-page-settings-and-backup-and-restore-data-portability/' 🐱 💬 kitten.db.news[0] Proxy [ News { link: 'https://ar.al/2024/05/23/new-kitten-features-interactive-shell-repl-multi-page-settings-and-backup-and-restore-data-portability/', title: 'New Kitten features: Interactive Shell (REPL), Multi-page Settings, and backup and restore (data portability)', date: '2024-05-23', image: '', summary: 'In this video, Aral demonstrates the new features added to Kitten in May: including the new Interactive Shell (REPL), Multi-page Settings, and backup and restore (data portability).', author: 'Aral Balkan', sourceName: 'Aral’s Blog', sourceLink: 'https://ar.al', postLink: 'https://ar.al/2024/05/23/new-kitten-features-interactive-shell-repl-multi-page-settings-and-backup-and-restore-data-portability/', presets: 'custom' }, { get: [Function: bound getHandler] { boundObject: [DataProxy] }, set: [Function: bound setHandler] { boundObject: [DataProxy] }, defineProperty: [Function: bound definePropertyHandler] { boundObject: [DataProxy] }, deleteProperty: [Function: bound deletePropertyHandler] { boundObject: [DataProxy] } } ]
Your web server having an interactive shell (REPL) where you can live update entries in your site/app’s database is pretty neat (if I do say so myself) :)
https://kitten.small-web.org/reference/#kitten-s-interactive-shell-repl
(I’m porting the Small Technology Foundation site¹ from Site.js² – and hence from being a static site generated via Site.js’s integrated Hugo³ – to Kitten⁴. In the process, I’m creating an admin panel⁵ for the news, events, and videos sections, which will make them easier to update, and storing the data in Kitten’s internal JavaScript Database⁶.)
¹ https://small-tech.org
² https://sitejs.org
³ https://gohugo.io/
⁴ https://kitten.small-web.org
⁵ It’s trivial to create authenticated routes in Kitten. You just add a lock emoji (🔒) to the end of your route’s name. e.g., admin🔒.page.js or /admin🔒/index.page.js (see https://kitten.small-web.org/reference/#sessions-and-authentication).
⁶ https://codeberg.org/small-tech/jsdb
#Kitten #REPL #shell #JavaScript #database #JavaScriptDatabase #JSDB #SmallTechnologyFoundation #SiteJS #Hugo #web #dev #NodeJS
![Screenshot of Kitten’s interactive shell, showing me alterning a database entry in development:
}
]
🐱 💬 kitten.db.news[0].link = kitten.db.news[0].postLink
'https://ar.al/2024/05/23/new-kitten-features-interactive-shell-repl-multi-page-settings-and-backup-and-restore-data-portability/'
🐱 💬 kitten.db.news[0]
Proxy [
News {
link: 'https://ar.al/2024/05/23/new-kitten-features-interactive-shell-repl-multi-page-settings-and-backup-and-restore-data-portability/',
title: 'New Kitten features: Interactive Shell (REPL), Multi-page Settings, and backup and restore (data portability)',
date: '2024-05-23',
image: '',
summary: 'In this video, Aral demonstrates the new features added to Kitten in May: including the new Interactive Shell (REPL), Multi-page Settings, and backup and restore (data portability).',
author: 'Aral Balkan',
sourceName: 'Aral’s Blog',
sourceLink: 'https://ar.al',
postLink: 'https://ar.al/2024/05/23/new-kitten-features-interactive-shell-repl-multi-page-settings-and-backup-and-restore-data-portability/',
presets: 'custom'
},
{
get: [Function: bound getHandler] { boundObject: [DataProxy] },
set: [Function: bound setHandler] { boundObject: [DataProxy] },
defineProperty: [Function: bound definePropertyHandler] { boundObject: [DataProxy] },
deleteProperty: [Function: bound deletePropertyHandler] { boundObject: [DataProxy] }
}
]](https://media.social.fedify.dev/media/0194f096-c3e8-778c-80e3-82b7fae53c60/thumbnail.webp)
Screenshot of Kitten’s interactive shell, showing me alterning a database entry in development: } ] 🐱 💬 kitten.db.news[0].link = kitten.db.news[0].postLink 'https://ar.al/2024/05/23/new-kitten-features-interactive-shell-repl-multi-page-settings-and-backup-and-restore-data-portability/' 🐱 💬 kitten.db.news[0] Proxy [ News { link: 'https://ar.al/2024/05/23/new-kitten-features-interactive-shell-repl-multi-page-settings-and-backup-and-restore-data-portability/', title: 'New Kitten features: Interactive Shell (REPL), Multi-page Settings, and backup and restore (data portability)', date: '2024-05-23', image: '', summary: 'In this video, Aral demonstrates the new features added to Kitten in May: including the new Interactive Shell (REPL), Multi-page Settings, and backup and restore (data portability).', author: 'Aral Balkan', sourceName: 'Aral’s Blog', sourceLink: 'https://ar.al', postLink: 'https://ar.al/2024/05/23/new-kitten-features-interactive-shell-repl-multi-page-settings-and-backup-and-restore-data-portability/', presets: 'custom' }, { get: [Function: bound getHandler] { boundObject: [DataProxy] }, set: [Function: bound setHandler] { boundObject: [DataProxy] }, defineProperty: [Function: bound definePropertyHandler] { boundObject: [DataProxy] }, deleteProperty: [Function: bound deletePropertyHandler] { boundObject: [DataProxy] } } ]
No updates in 15 years but I did have to make two small edits. See if you can find them. 😜
(Also, I need to move this to Codeberg.)
github.com
Heard is a PHP/MySQL application that acts as a Last.fm mirror - GitHub - raster/Heard: Heard is a PHP/MySQL application that acts as a Last.fm mirror
Also, holy crap I wrote 'heard' back in 2010...
➡️ https://rasterweb.net/raster/2010/07/22/heard-a-last-fm-mirror/
rasterweb.net
I love Last.fm. I love music, and I love data, so it makes sense. Last.fm, for you unhep cats out there, allows you to keep a log of what you listen to by "scrobbling" your music - that is - it submits the info about the songs you listen to the Last.fm web site via [...]
If you are ever wondering "Hey, what is that weird Petey listening to?"
You can see this thing on my site that syncs data from last.fm and displays it on my own site.
rasterweb.net
New releases
• Kitten (rolling release)
• @small-tech/https version 5.3.2
• Auto Encrypt version 4.1.3
OCSP support has been reinstated in the server so existing sites with Let’s Encrypt certificates provisioned prior to the removal of the OCSP stapling requirement will not fail to load in Firefox.
Kitten servers in production will automatically update to this version in a few hours. You can also sign in to the Kitten settings page on your server and do a manual update to update Kitten immediately.
Thanks to @stefan and @s1r83r for bringing this to my attention. (https://mastodon.ar.al/@aral/113969540950647873)
#Kitten #SmallWeb #SmallTech #AutoEncrypt #TLS #SSL #HTTPS #OCSP #LetsEncrypt #web #dev #NodeJS #JavaScript
mastodon.ar.al
@s1r83r@pataterie.ca @stefan@gardenstate.social Thanks for the heads up, folks. So, here’s what’s happened: 1. Let’s Encrypt removed OCSP support and starting rejecting certificate requests that require OCSP stapling (a privacy feature that Kitten inherited from my Auto Encrypt module) for new server requests and will reject certificate renewal requests starting in May. 2. So I went ahead and removed the OCSP stapling requirement from the certificate requests Auto Encrypt makes to Let’s Encrypt. 3. I also removed OCSP support from the server. Makes sense, right? Sure does, until you consider what happens to servers with already-provisioned Let’s Encrypt certificates that have certificates that require OCSP stapling. (kitten.small-web.org’s certificate got renewed four days ago, before I’d released the updates.) *Doh!* 🤦♂️ Seems Safari and Chrom(ium) are fine with letting it pass. However, Firefox, (and correctly too, I might add), refuses to load the site. So I’m off to update Auto Encrypt to re-enable OCSP support with a note to disable it in May (by which time all certificates will have renewed anyway without the stapling requirement) and then issue new builds of @small-web/https and Kitten. Kitten servers should automatically upgrade and start working in Firefox in several hours. And you can also manually update them if you want to before then after I’ve announced the releases. Thanks again for letting me know. :kitten:💕 #Kitten #SmallWeb #AutoEncrypt #LetsEncrypt #TLS #SSL #HTTPS #OCSP
【ざっくりと理解するWeb技術入門】プロトコルってなんだ?
https://qiita.com/arunbabababababa/items/aa852d4084b1c3b8f748?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items
qiita.com
初めにweb周りの学習をし始めた時に必ず出てくる「プロトコル」いろんな参考書や動画で 「通信における決まりごと」 と解説されるのを見かけます。...決まり事?なんの...?(←最初にプロトコル…
Sendme
– from @n0iroh
File transfer doesn't need to be complicated. It's like scp without needing to know the IP address. Add some files to sendme, and it will give you a pastable ticket that you can give to anyone who needs your files. Sendme will connect your devices directly & transfer the data without any accounts or configuration.
📨 https://www.iroh.computer/sendme
#sendfiles #filesharing #nopasswords #rust #rustlang #terminal #sendme #web
iroh.computer
less net work for networks
this will likely be a recurring reminder as the weeks go by, but i'm so excited about this project. i have to share! (this is the first time i've been nervous to announce something on this side of the web!)
i'm combining my 10 years of journalism experience with my love for the #indieweb by launching GOOD INTERNET, a regular periodical magazine in both print and digital formats. and this is a non-profit, completely independent endeavor!
https://goodinternetmagazine.com/
ultimately, Good Internet will cover a lot of different aspects of the small web: unplugging from the corporate web, fighting #enshittification, migrating from data-harvesting corpo social media, creating your own personal website, using code and website-building as an art form, federation, and creating websites for fun. it will be approachable for beginners and enjoyable for seasoned indie web travelers!
the #smallweb can be hard to keep up with if you aren't "plugged in," especially if you want to find other hobby website owners, folks coding for fun, weird web projects, or artists taking back their digital ownership. it's overdue that this side of the web has an analog publication!
having a central publication about the decentralized parts of the personal web makes me even more excited to share this hobby with those who might not even know about it--all within beautiful, high-res, high-quality pages.
the idea here is to have a physical celebration of this hobby in addition to being informative, helpful, and accessible.
consider signing up for email notifications when we launch the first issue in may 2025:
https://goodinternetmagazine.com
(if you're interested in #writing an article or op-ed about this side of the web/personal websites, coding an interactive article, or want to know what that even means, send an email to hello@goodinternetmagazine.com! taking pitches for may 2025!)
#internet #socialmedia #personalwebsites #blogging #blog #print #magazine #writer #technology #tech #coding #programming #html #webdev #webdesign #web #smalltech #css #html #dev #web
goodinternetmagazine.com
A print and digital magazine coming soon.
Hey web devs, ever used CSS Grid or the :has() selector? Ever wondered how they actually made it into browsers?
Stephanie Stimac (@seaotta) from Igalia (@igalia) spills the beans on how new web features get funded, developed, and shipped. Turns out, it’s not as simple as you’d think.
Catch the convo on the latest For a Better Web Podcast.
📺 Watch: https://www.youtube.com/watch?v=loBPN54siCE
🎧 Listen: https://open.spotify.com/episode/1tzEQYpQ00fGx6gLwvkhXK
Hey web devs, ever used CSS Grid or the :has() selector? Ever wondered how they actually made it into browsers?
Stephanie Stimac (@seaotta) from Igalia (@igalia) spills the beans on how new web features get funded, developed, and shipped. Turns out, it’s not as simple as you’d think.
Catch the convo on the latest For a Better Web Podcast.
📺 Watch: https://www.youtube.com/watch?v=loBPN54siCE
🎧 Listen: https://open.spotify.com/episode/1tzEQYpQ00fGx6gLwvkhXK
I've added a new card to the landing page of flathub.org yesterday, focused on games.
We have been trying to do this for quiet some time and I know that the results (as in what is in which category) are not perfect, but putting this out there hopefully helps us move things.
#linux #flatpak #Flathub #web #nextjs #tailwind #xdg #freedesktop
I've added a new card to the landing page of flathub.org yesterday, focused on games.
We have been trying to do this for quiet some time and I know that the results (as in what is in which category) are not perfect, but putting this out there hopefully helps us move things.
#linux #flatpak #Flathub #web #nextjs #tailwind #xdg #freedesktop
uBlockOrigin & uBlacklist Huge AI Blocklist
A huge blocklist of manually curated sites (1000+) that contain AI generated content, for the purposes of cleaning image search engines (Google Search, DuckDuckGo, and Bing) with @ublockorigin or uBlacklist. Also works on mobile (iOS, iPadOS, Android) via uBlacklist, as well as pihole/adguard.
#blocklist #ublockorigin #noai #web #ai #websec #online #privacy #onlinesafety #android #ios #ipados #firefox #browser
github.com
A huge blocklist of manually curated sites that contain AI generated content for uBlock Origin & uBlacklist. - laylavish/uBlockOrigin-HUGE-AI-Blocklist
this will likely be a recurring reminder as the weeks go by, but i'm so excited about this project. i have to share! (this is the first time i've been nervous to announce something on this side of the web!)
i'm combining my 10 years of journalism experience with my love for the #indieweb by launching GOOD INTERNET, a regular periodical magazine in both print and digital formats. and this is a non-profit, completely independent endeavor!
https://goodinternetmagazine.com/
ultimately, Good Internet will cover a lot of different aspects of the small web: unplugging from the corporate web, fighting #enshittification, migrating from data-harvesting corpo social media, creating your own personal website, using code and website-building as an art form, federation, and creating websites for fun. it will be approachable for beginners and enjoyable for seasoned indie web travelers!
the #smallweb can be hard to keep up with if you aren't "plugged in," especially if you want to find other hobby website owners, folks coding for fun, weird web projects, or artists taking back their digital ownership. it's overdue that this side of the web has an analog publication!
having a central publication about the decentralized parts of the personal web makes me even more excited to share this hobby with those who might not even know about it--all within beautiful, high-res, high-quality pages.
the idea here is to have a physical celebration of this hobby in addition to being informative, helpful, and accessible.
consider signing up for email notifications when we launch the first issue in may 2025:
https://goodinternetmagazine.com
(if you're interested in #writing an article or op-ed about this side of the web/personal websites, coding an interactive article, or want to know what that even means, send an email to hello@goodinternetmagazine.com! taking pitches for may 2025!)
#internet #socialmedia #personalwebsites #blogging #blog #print #magazine #writer #technology #tech #coding #programming #html #webdev #webdesign #web #smalltech #css #html #dev #web
goodinternetmagazine.com
A print and digital magazine coming soon.
this will likely be a recurring reminder as the weeks go by, but i'm so excited about this project. i have to share! (this is the first time i've been nervous to announce something on this side of the web!)
i'm combining my 10 years of journalism experience with my love for the #indieweb by launching GOOD INTERNET, a regular periodical magazine in both print and digital formats. and this is a non-profit, completely independent endeavor!
https://goodinternetmagazine.com/
ultimately, Good Internet will cover a lot of different aspects of the small web: unplugging from the corporate web, fighting #enshittification, migrating from data-harvesting corpo social media, creating your own personal website, using code and website-building as an art form, federation, and creating websites for fun. it will be approachable for beginners and enjoyable for seasoned indie web travelers!
the #smallweb can be hard to keep up with if you aren't "plugged in," especially if you want to find other hobby website owners, folks coding for fun, weird web projects, or artists taking back their digital ownership. it's overdue that this side of the web has an analog publication!
having a central publication about the decentralized parts of the personal web makes me even more excited to share this hobby with those who might not even know about it--all within beautiful, high-res, high-quality pages.
the idea here is to have a physical celebration of this hobby in addition to being informative, helpful, and accessible.
consider signing up for email notifications when we launch the first issue in may 2025:
https://goodinternetmagazine.com
(if you're interested in #writing an article or op-ed about this side of the web/personal websites, coding an interactive article, or want to know what that even means, send an email to hello@goodinternetmagazine.com! taking pitches for may 2025!)
#internet #socialmedia #personalwebsites #blogging #blog #print #magazine #writer #technology #tech #coding #programming #html #webdev #webdesign #web #smalltech #css #html #dev #web
goodinternetmagazine.com
A print and digital magazine coming soon.
this will likely be a recurring reminder as the weeks go by, but i'm so excited about this project. i have to share! (this is the first time i've been nervous to announce something on this side of the web!)
i'm combining my 10 years of journalism experience with my love for the #indieweb by launching GOOD INTERNET, a regular periodical magazine in both print and digital formats. and this is a non-profit, completely independent endeavor!
https://goodinternetmagazine.com/
ultimately, Good Internet will cover a lot of different aspects of the small web: unplugging from the corporate web, fighting #enshittification, migrating from data-harvesting corpo social media, creating your own personal website, using code and website-building as an art form, federation, and creating websites for fun. it will be approachable for beginners and enjoyable for seasoned indie web travelers!
the #smallweb can be hard to keep up with if you aren't "plugged in," especially if you want to find other hobby website owners, folks coding for fun, weird web projects, or artists taking back their digital ownership. it's overdue that this side of the web has an analog publication!
having a central publication about the decentralized parts of the personal web makes me even more excited to share this hobby with those who might not even know about it--all within beautiful, high-res, high-quality pages.
the idea here is to have a physical celebration of this hobby in addition to being informative, helpful, and accessible.
consider signing up for email notifications when we launch the first issue in may 2025:
https://goodinternetmagazine.com
(if you're interested in #writing an article or op-ed about this side of the web/personal websites, coding an interactive article, or want to know what that even means, send an email to hello@goodinternetmagazine.com! taking pitches for may 2025!)
#internet #socialmedia #personalwebsites #blogging #blog #print #magazine #writer #technology #tech #coding #programming #html #webdev #webdesign #web #smalltech #css #html #dev #web
goodinternetmagazine.com
A print and digital magazine coming soon.
Improving snac Performance with Nginx Proxy Cache
https://it-notes.dragas.net/2025/01/29/improving-snac-performance-with-nginx-proxy-cache/
#Data #Fediverse #FreeBSD #Hosting #ITNotes #Networking #Nginx #NoteHUB #OwnYourData #Server #Snac #Snac2 #Social #TipsAndTricks #Tutorial #Web
it-notes.dragas.net
Using nginx to cache snac multimedia files to boost performance
@Vivaldi Congratulations on this great and memorable #milestone. 🥳🎈🥂🍾🎉
I've been using #VIVALDI since the first technical preview and I can't imagine working without it, both privately and professionally.
VIVALDI offers me unique opportunities to work organized, efficiently and securely. This is all thanks to the great team behind the best #browser in the world.
In addition to all the profit-orientated tech giants, it is invaluable to have good alternatives that protect the privacy of their users. 🛡️
I would like to thank the entire VIVALDI #team for their fantastic work over the last 10 years. You guys make the difference!
@Vivaldi Congratulations on this great and memorable #milestone. 🥳🎈🥂🍾🎉
I've been using #VIVALDI since the first technical preview and I can't imagine working without it, both privately and professionally.
VIVALDI offers me unique opportunities to work organized, efficiently and securely. This is all thanks to the great team behind the best #browser in the world.
In addition to all the profit-orientated tech giants, it is invaluable to have good alternatives that protect the privacy of their users. 🛡️
I would like to thank the entire VIVALDI #team for their fantastic work over the last 10 years. You guys make the difference!
Marginalia – A search engine that prioritizes non-commercial content
#search #SearchEngine #SearchEngines #Web #internet #online #tip #tips #MastoTips #FediTips
marginalia-search.com
Marginalia Search is a small independent do-it-yourself search engine for surprising but content-rich websites that never ask you to accept cookies or subscribe to newsletters. The goal is to bring you the sort of grass fed, free range HTML your grandma used to write.
#PhanpySocial 以外のクライアント使えない体になりつつある
デフォルトの #Web UI はたまに使うことあるけどなー
If you know people who don't really dare to leave Xitter, you can suggest @cyd. This is nin free and open source software and thus the tool for freedom.
Please don't just blame people, but help them and show them how to achieve personal freedom. The eXit tool is now free to use and no longer an obstacle.
#exit #opensource #xitter #x #twitter #xitter #free #freedom #freesoftware #tools #eXit #freetools #freedom #oss #newhere #socialmedia #web #internet
cyd.social
Automatically delete your data from tech platforms, except for what you want to keep
"The median page weight for a desktop page, as measured in October 2024 is 2,652 KB", we could fit two #Dillo releases there!
https://almanac.httparchive.org/en/2024/page-weight#fig-15
Amazing yearly report on the state of the #Web by the HTTP Archive, check it out:
"The median page weight for a desktop page, as measured in October 2024 is 2,652 KB", we could fit two #Dillo releases there!
https://almanac.httparchive.org/en/2024/page-weight#fig-15
Amazing yearly report on the state of the #Web by the HTTP Archive, check it out:
🧵 …surprise, surprise, propaganda is going on and I mean that I am right about the EU.
«EU says Bluesky is violating information disclosure rules:
Bluesky, the rapidly growing social media platform, is violating EU regulations by failing to disclose important details, a European Commission spokesperson told reporters during a daily briefing on Monday.»
🤷 https://neuters.de/technology/eu-says-bluesky-is-violating-information-disclosure-rules-2024-11-25/
#bluesky #eu #disclosure #violating #web #eupol #propaganda #uspol #socialmedia
neuters.de
Adding more beautiful error messages to Kitten. These should help make it easier to recover from common errors while authoring.
#Kitten #errorMessages #design #usability #authoring #SmallWeb #SmallTech #HTML #CSS #JavaScript #NodeJS #server #framework #platform #web #dev

Screenshot of Kitten error page with cute illustration of a grey kitten with pink ears and nose playing with a purple ball of yarn followed by the error message: 500 Error: Attempt to instantiate kitten.Component in markup without calling its connectedTo() static factory method: In your kitten.html``, replace: <{Uptime} /> With: <{Uptime.connectedTo(this)} /> Finally, there’s a partial view of a stack trace that scrolls off the page.
So last night, while recording the preview of Kitten’s¹ improved component model², I made a silly mistake (copying raw HTML into a JavaScript function instead of wrapping it in a kitten.html`` tagged template, easy to do when you’re refactoring to pull out components from pages).
Then, once I figured out what I’d done, I made another one by forgetting to return the value from the function (easy to do when you’re used to using one-line closures as render functions).
I would have caught both of those so much faster if Kitten had helpful error messages for those two pitfalls. And guess what, this morning, it does :)
Attached are screenshot showing the before and after error messages.
Enjoy!
💕
¹ https://kitten.small-web.org
² Scroll up the thread to watch the video.
#Kitten #SmallWeb #PeerToPeerWeb #web #server #framework #platform #design #usability #errorMessages #authoring #dev #JavaScript #HTML #CSS #htmx #hypermedia #WebSocket #StreamingHTML #SmallTech

Screenshot of first error message (before): 500 TypeError: Cannot read properties of undefined (reading 'match')

Screenshot of first error message (after): Error: Render function did not return kitten.html`` class Count extends kitten.Component { html { kitten.html`<h1 morph>${kitten.db.counter.count}</h1>` } onIncrement { kitten.db.counter.count++ this.update } }

Screenshot of second error message (before): 500 SyntaxError: Unexpected token '<

Screenshot of second error message (after): 500 SyntaxError: Unexpected token '< (Did you put raw HTML inside a function by mistake instead of wrapping it in a kitten.html`` tagged template?)
A Guide to Implementing ActivityPub in a Static Site (or Any Website) - Part 8 is out!
Follow the site here @blog or check the article here: https://maho.dev/2025/01/a-guide-to-implementing-activitypub-in-a-static-site-or-any-website-part-8/
#fediverse #activitypub #static-sites #hugo #azure #mastodon #web-development #social-web #webfinger #http #azure #azurefunctions
maho.dev
Find the index and earlier parts of this series here. We’re almost there! Thanks for sticking with me on this journey. In this final part, we’ll integrate replies and comments into your static website. Motivation Integrating replies is quite similar to how we handled subscriptions. Since our posts now exist in the Fediverse, we want to treat them as first-class citizens. This means replies to our posts should appear on our site.
A Guide to Implementing ActivityPub in a Static Site (or Any Website) - Part 8 is out!
Follow the site here @blog or check the article here: https://maho.dev/2025/01/a-guide-to-implementing-activitypub-in-a-static-site-or-any-website-part-8/
#fediverse #activitypub #static-sites #hugo #azure #mastodon #web-development #social-web #webfinger #http #azure #azurefunctions
maho.dev
Find the index and earlier parts of this series here. We’re almost there! Thanks for sticking with me on this journey. In this final part, we’ll integrate replies and comments into your static website. Motivation Integrating replies is quite similar to how we handled subscriptions. Since our posts now exist in the Fediverse, we want to treat them as first-class citizens. This means replies to our posts should appear on our site.
A Guide to Implementing ActivityPub in a Static Site (or Any Website) - Part 8 is out!
Follow the site here @blog or check the article here: https://maho.dev/2025/01/a-guide-to-implementing-activitypub-in-a-static-site-or-any-website-part-8/
#fediverse #activitypub #static-sites #hugo #azure #mastodon #web-development #social-web #webfinger #http #azure #azurefunctions
maho.dev
Find the index and earlier parts of this series here. We’re almost there! Thanks for sticking with me on this journey. In this final part, we’ll integrate replies and comments into your static website. Motivation Integrating replies is quite similar to how we handled subscriptions. Since our posts now exist in the Fediverse, we want to treat them as first-class citizens. This means replies to our posts should appear on our site.
A Guide to Implementing ActivityPub in a Static Site (or Any Website) - Part 8 is out!
Follow the site here @blog or check the article here: https://maho.dev/2025/01/a-guide-to-implementing-activitypub-in-a-static-site-or-any-website-part-8/
#fediverse #activitypub #static-sites #hugo #azure #mastodon #web-development #social-web #webfinger #http #azure #azurefunctions
maho.dev
Find the index and earlier parts of this series here. We’re almost there! Thanks for sticking with me on this journey. In this final part, we’ll integrate replies and comments into your static website. Motivation Integrating replies is quite similar to how we handled subscriptions. Since our posts now exist in the Fediverse, we want to treat them as first-class citizens. This means replies to our posts should appear on our site.
#cooperation and federation ?
beloved @dansup ...
thanks, thanks, #thanks for your
inspiration
i have a 14 years old daugther...
... just to know that super #Pixelfed exists, gives me the chance to have a better sleep at night , ah
The #web is more human friendly .. . like that ?
Cet article est paru le 20 janvier 2025 sur The Conversation France.
L’illustration choisie ici est un extrait de la BD de science-fiction Mediaentity, par Simon & Emilie (CC by-nc-sa)
Alors que Donald Trump, allié d’Elon Musk, le propriétaire du réseau X (ex-Twitter), s’installe à la Maison Blanche, l’inquiétude grandit concernant l’impact des grandes plates-formes américaines sur les dizaines de millions d’utilisateurs qui s’informent par leur intermédiaire. De nombreuses voix appellent à quitter ces plates-formes, mais quelles sont les alternatives ?
L’Observatoire international sur l’information et la démocratie, pensé comme un « GIEC » de notre écosystème informationnel, a publié son tout premier rapport, ce 15 janvier. Ce rapport intervient alors que l’état de notre écosystème d’information et de communication semble s’effondrer sous nos yeux.
En France l’année 2024 aura été marquée par les acquisitions de médias par des milliardaires. Aux USA, l’homme le plus riche du monde) a engagé sa plate-forme X (ex-Twitter) au profit de la campagne de Donald Trump. Elon Musk en était déjà le premier donateur.
Si rester sur X n’est plus une option, difficile de se résoudre à perdre des années de publications et de constitution d’une audience. Qu’à cela ne tienne : développée en partenariat avec le CNRS, la plate-forme HelloQuitX fournit tout le nécessaire pour migrer vers Mastodon ou Bluesky. Incarné dans les médias par le directeur de recherche David Chavalarias, le collectif apolitique et transpartisan a fixé la date de l’exode au 20 janvier 2025, date de l’investiture du nouveau président des États-Unis.
Reste un impensé de taille : est-il bien raisonnable de perpétuer une forme de communication modelée pour capter notre attention ?
À l’heure où Mark Zuckerberg emboîte le pas à Elon Musk pour aligner ses propres plates-formes (Facebook, Instagram, WhatsApp) avec les intérêts de l’administration Trump, il est crucial de reconnaître que les grands réseaux sociaux américains ne peuvent continuer de jouer le rôle d’infrastructures de nos communications. Surtout, la prise de contrôle de ces médias au profit de politiques réactionnaires vient révéler au grand jour leur pouvoir de nuisance, documenté de longue date par la recherche.
Dès lors, pouvons-nous nous contenter de remplacer des réseaux devenus infréquentables, par d’autres qui en reproduisent les fonctionnalités ?
Né de l’hybridation du blog et de la messagerie instantanée, le microblogage consiste à publier de courts messages par le biais d’une plate-forme qui assure leur diffusion en temps réel et leur archivage. À l’image des dépêches de presse, les publications sont agrégées sous forme de flux destinés à une consultation continue. C’est le format retenu par l’ensemble des grands réseaux sociaux contemporains.
En quelques années seulement, le « tweet » est devenu un rouage incontournable de la circulation de notre information. Alors que les politiques ont saisi la possibilité de s’exprimer en direct, les journalistes y ont trouvé une source familière d’informations en accès immédiat. Les uns comme les autres en sont devenus dépendants. À tel point que l’acquisition de Twitter par Elon Musk a révélé le cruel dilemme de journalistes tentés de partir mais bien en peine de sauter le pas. Quant aux politiques devenus dépendants de ce substitut aux communiqués de presse, ils semblent rechigner à montrer l’exemple.
Motivé par des enjeux de visibilité et de performance (nombre de followers, de republications et autres « engagements » mesurables), le microbloging incite à publier plusieurs fois par jour, pousse à jouer sur les émotions, entrave l’exposition d’analyses complexes et favorise le « clash ». Véritable technologie au service des « petites phrases », par ses contraintes Twitter aura renouvelé le discours politique d’une bien triste manière. Comme le résumait Romain Badouard, dès 2017:
« La forme l’emporte définitivement sur le fond et les spécificités techniques de la plate-forme ont fait naître un environnement d’échange à la fois simpliste, conflictuel et moralisateur. »
La plate-forme alternative Bluesky a beau donner le sentiment de renouer avec le Twitter des origines, elle n’en porte pas moins l’ADN, tant dans sa forme fonctionnelle que dans son financement. Plus vertueux, le réseau social open source Mastodon s’appuie sur l’infrastructure distribuée du Fediverse qui le met à l’abri des obligations de croissance exponentielle propres aux start-up à l’américaine telles que Bluesky. Pourtant sur le plan fonctionnel, Mastodon demeure un service de microbloging inspiré du modèle de feu-Twitter.
Qu’il s’agisse de Twitter, Facebook ou Google, tout un pan de la recherche en sciences de l’information a démontré que le développement des grandes plates-formes du numérique a détérioré notre écosystème informationnel. Le problème peut se traduire en 7 plaies (cf. infographie ci-dessous) qui s’articulent dans un véritable cercle vicieux. Celui-ci découle d’intérêts économiques évidents en matière de publicités à haute fréquence, mais aussi d’enjeux d’influence comme en attestent les récents développements politiques aux USA.
Avant l’avènement des grands réseaux sociaux, c’est la domination de Google qui a marqué durablement le web. Pour qu’une page soit bien référencée, le fait d’être reliée à beaucoup d’autres pages web est devenu plus important que la qualité et à l’originalité de son contenu (valorisation du lien hypertexte). Il est désormais plus rentable de produire une information dupliquée et non vérifiée qu’une information originale. Voilà pourquoi nous sommes noyés par des informations de piètre qualité (infobésité), parmi lesquelles nous avons grand peine à distinguer le vrai du faux (fake news). Les algorithmes de recommandation plébiscitent les contenus les plus sensationnels et les moins qualitatifs, tandis que la presse n’a plus les moyens d’investir dans la production d’une information originale et de qualité (défiance envers les médias). Notre entourage apparaît plus digne de confiance tandis que les réseaux sociaux amplifient cette tendance à s’informer auprès de personnes qui nous ressemblent (bulles de filtre). De plus en plus éloigné des points de vue différents, nous avons tendance à radicaliser nos positions et nos propos. Nos positions exacerbées deviennent inconciliables (brutalisation). Enfin, afin de maximiser les affichages publicitaires, les interfaces des plates-formes ont été peaufinées au fil des années pour capter et retenir l’attention. Ces pratiques entretiennent l’ensemble des six autres plaies pour constituer la septième (addiction).
Les plates-formes numériques n’auraient pas la forme que nous leur connaissons si elles n’étaient pas guidées par une course à la croissance exponentielle, la volonté de capturer notre attention et celle d’influencer nos comportements. Ce constat devrait nous décourager de compter sur d’hypothétiques géants européens du numérique inspirés par le modèle des géants américains : tout comme nos avions Airbus nuisent autant au climat que ceux de Boing, des « alternatives à » Twitter et Facebook ne sauveront pas l’écosystème informationnel.
Le 13 janvier 2025, l’équipe de Mastodon a annoncé la décision de confier l’avenir de la plate-forme à une organisation à but non lucratif de droit européen. Pour son fondateur, Eugen Rochko, la start-up n’a jamais été qu’un véhicule temporaire à son projet, étant donné que l’espace public doit nous appartenir à toutes et tous. De fait, comme toute autre innovation sociale, l’émergence d’alternatives dans le domaine du numérique exigerait un environnement plus favorable aux structures de l’économie sociale et solidaire (coopératives, mutuelles, associations, fondations et entrepreneurs sociaux).
Mais les garanties éthiques ne suffisent pas : encore faut-il imaginer d’autres formes de médiation que celles instaurées par les plates-formes dominantes. Alors que la recherche académique en sciences humaines et sociales recèle des gisements d’innovation, nous n’avons pas les dotations nécessaires pour développer des logiciels et surtout pour les maintenir et les faire évoluer sur le long terme. Contraint très tôt de « sortir du labo », les projets sont poussés à déboucher sur une création d’entreprise avec une logique de rentabilité. Si j’en crois mon expérience fondée sur la création de Needle (une plate-forme de partage et de découverte fondée sur l’intelligence collective), nos incubateurs et l’ensemble du dispositif de valorisation de la recherche manquent d’outils pour accompagner des innovations sociales et la création de sociétés coopératives.
La prise en compte de notre empreinte numérique est balbutiante. Nous sommes loin de disposer de médias numériques de service public financés par un impôt sur les revenus de la publicité en ligne, tels que le proposait le chercheur Ethan Zuckermann en 2020. Pourtant, nous avons toutes et tous une responsabilité dans la réinvention du web et pour explorer d’autres formes de découverte et de partage de l’information peut-être moins clinquantes, mais sans doute plus vertueuses.
Julien Falgas, Maître de conférences au Centre de recherche sur les médiations, Université de Lorraine
Cet article est republié à partir de The Conversation sous licence Creative Commons. Lire l’article original.
#médiasNumériques #modèleéconomique #needle #réseauxSociaux #web

Trois personnes et un chien contemplent le lever de soleil derrière les montagnes, depuis les hauteurs devant un mas provençal bordé d'un olivier. Au premier plan, l'avant d'une camionnette blanche. L'un des protagonistes, mains sur les hanches, dit aux autres : «Vous verrez, c'est dur au début, mais ça vaut le coup. »
I made a thing: scroll-driven, almost pure #CSS infinite circular gallery rotation - check it out on @codepen
https://codepen.io/thebabydino/pen/XJrYqGb
Using scroll-driven animations and the tiniest bit of JS for the infinity part of it.
Made with 🖤 for this week's #CodePenChallenge.
cc @bramus
#SVG #cssGrid #scrollAnimation #filter #svgFilter #cssFilter #cssLayout #3D #cssTransforms #code #coding #frontend #web #dev #webDev #webDevelopment
I made a thing: scroll-driven, almost pure #CSS infinite circular gallery rotation - check it out on @codepen
https://codepen.io/thebabydino/pen/XJrYqGb
Using scroll-driven animations and the tiniest bit of JS for the infinity part of it.
Made with 🖤 for this week's #CodePenChallenge.
cc @bramus
#SVG #cssGrid #scrollAnimation #filter #svgFilter #cssFilter #cssLayout #3D #cssTransforms #code #coding #frontend #web #dev #webDev #webDevelopment
Pretty soon, you’re going to be able to view your live pages and the events on them in real time while developing Kitten apps.
The improved component model with support for class-based routes (and a server-side component hiearchy that lets you build well-encapsulated components and pages and work in an event-driven way) is coming along nicely and I’m back to writing Place¹ using it.
(In the GIF, you’re looking at Place’s profile settings page. Not shown here but those profile changes reflect in realtime on all open pages. The highlighted piece of code is what streams the event details to the browser.)
¹ https://codeberg.org/place/app
#Kitten #StreamingHTML #SmallWeb #htmx #hypermedia #WebSockets #web #dev #eventDriven #objectOriented #JavaScript #NodeJS

Screen recording of two web browser windows, side by side. The one on the right is showing Kitten’s Settings page at state: pages. I open the detail veiw for the /settings/profile route and see its ID, session id, number of connected sockets (1) and an empty Events table with name and data. On the left, an instance of the /settings/profile route is open in the browser. I change the value of the Name field (erasing the t and s from Aral’s 1st) and I see two events pop up on the page on the right (Name: name, Data: { name: 'Aral’s 1s'}) and (Name: name, Data: { name: 'Aral’s 1'}). Then I add the deleted letters back and see the event (Name: name, Data: { name: 'Aral’s 1st'}). Finally, I toggle the Show name? and Show Image? checkboxes on and off and see the events (name: howOrHide, { showOrHide: 'on', item: 'Image' }), (name: showOrHide, { item: 'Image' }, showOrHide { showOrHide: 'on', item: 'Name' })

Screenshot of code. The showPageEvent method is highlighted. onAddToPage () { this.addEventHandler(kitten.events, `kittenPageEvent-${this._page.id}`, this.showPageEvent) } /** Stream new page event details to top of the events list, hiding the placeholder if necessary. @param {{ name: string, data: {HEADERS: any} }} event */ showPageEvent (event) { delete event.data.HEADERS // Hide placeholder if necessary. if (this.placeHolderIsVisible) { this.page.send(kitten.html` <tr id='placeholder-${this.id}' swap-target='delete'> `) this.placeHolderIsVisible = false } // Send the new event row with event details. this.page.send(kitten.html` <tbody id=${this.id} swap-target='afterend:#${this.id}'> <tr> <td>${event.name}</td> <td>${util.inspect(event.data)}</td> </tr> </tbody> `) } } class Pages extends kitten.Component { html() { // We could just display a “loading” message here // as we’re going to refresh the list at onConnect(), // but given how fast it all happens, we might was well // send the whole list instead of having an odd flash. const pages = Object.values(kitten.pages)
@matuzo seriously, thank you for your #web #accessibility cookbook!
We're currently fixing accessibility on our site (medium sized web shop) and nearly *every* page in your book hits a topic right before our eyes!
And it's clearly written and does not over explain things. It's just on point.
Never had such a strong recommendation for a book for #frontend #webdevs
@zverik @mvexel @ianthetechie #flutter looks good in general, I am also a bit worried that it will be abandoned one day by Google. Also there are less #dart programmers around than #javascript #typescript #react programmers.
since I do a lot of #web development #reactnative seems to be make a bit more sense to me, even though I am more into #vue #vuejs
what I understand from your comments is that #maplibre support for #reactnative seems to be better compared to #flutter That is a good insight
PrivTracker - Private BitTorrent tracker for everyone
PrivTracker allows to share torrent files just with your friends, nobody else. Unlike public trackers, it shares peers only within a group which is using the same Announce URL. It really works like a private tracker, but can be generated with one click of a button.
#bittorrent #tracker #share #web #privacy #privtracker #torrent #p2p #linux #macos #ShareFile #webshare #ShareData #files
privtracker.com
Mozilla wants you to "Share Your 2025 Tech & AI Predictions" using this form:
➡️ https://mozillafoundation.tfaforms.net/109
I let them know that I believe AI will be complete shit forced upon us by corporations and I hope Mozilla isn't one of them.
Mozilla wants you to "Share Your 2025 Tech & AI Predictions" using this form:
➡️ https://mozillafoundation.tfaforms.net/109
I let them know that I believe AI will be complete shit forced upon us by corporations and I hope Mozilla isn't one of them.
[Nouveau billet] In RSS we trust* - Patrimoine et numérique
➡️ https://patrimoine-et-numerique.fr/tutoriels/88-44-in-rss-we-trust
De l'utilité des flux RSS pour s'informer comme internaute / professionnel, et de la nécessité d'en fournir pour les sites Internet
*established since 2002
#RSS #RSSfeed #fluxRSS #information #numérique #infocom #web #RSN #veille
poke @agnes_vbb @BruantC
avec dedans un poil de #FreshRSS chez @zaclys et un pouet qui tombe à pic de @thibault_lh
Pure #CSS 1 div halftone-masked background card https://codepen.io/thebabydino/pen/GRNKqRv on @codepen.
Made this 4 years ago - can you guess how before checking the code?
Doesn't work in Firefox due to an old bug 🪲 not even related to the halftone mask, but caused by the duo text on the right.
#filter #code #coding #frontend #cssfFilter #web #dev #webDev #webDevelopment #blendMode #blending
Pure #CSS 1 div halftone-masked background card https://codepen.io/thebabydino/pen/GRNKqRv on @codepen.
Made this 4 years ago - can you guess how before checking the code?
Doesn't work in Firefox due to an old bug 🪲 not even related to the halftone mask, but caused by the duo text on the right.
#filter #code #coding #frontend #cssfFilter #web #dev #webDev #webDevelopment #blendMode #blending
★ 24.01. + 25.01 11:00 - 18:00 ~ Post-Platform Digital Publishing Toolkit #workshop
Declarations is an ongoing artistic research project into the visual, poetic & linguistic materiality of the CSS web-standard and its echoes on design and artistic practices. In this workshop, we inspect online #publishing platform and question our agency as individuals and collectivities on the #web through story telling, commenting, critiquing, degrading, improving, transforming websites into a poetic medium.
★ 24.01. + 25.01 11:00 - 18:00 ~ Post-Platform Digital Publishing Toolkit #workshop
Declarations is an ongoing artistic research project into the visual, poetic & linguistic materiality of the CSS web-standard and its echoes on design and artistic practices. In this workshop, we inspect online #publishing platform and question our agency as individuals and collectivities on the #web through story telling, commenting, critiquing, degrading, improving, transforming websites into a poetic medium.
“The web wasn’t built by solo tech geniuses, or finance firms, or luminaries with grand promises. It was time, and energy, compounded by millions of people. Collective action will be what brings us to the next era of the web.” — Jay Hoffmann
_____
#Business #Community #Web #FreeWeb #IndieWeb #SmallWeb #Website #Blog #Content #Evolution #Quotes
«GraphQL-Grundlagen-Tutorial:
GraphQL ist für viele Devs die erste Wahl, um effiziente, zukunftsfähige APIs zu entwickeln. So gelingen die ersten Schritte mit dem Open-Source-Tool.»
Nutzt dies wer im allgemeinen für Web-Produkte, sprich entwickelt damit Web-Apps die allgemein und nicht nur speziefisch nutzbar sind oder bestehen weiter viele auf REST API's? Ich entwickelte damit noch nie was.
🧑💻 https://www.computerwoche.de/article/2835212/graphql-grundlagen-tutorial.html
#webdev #graphql #rest #api #web #dev #restful #webentwicklung #internet #it
computerwoche.de
GraphQL ist für viele Devs die erste Wahl, um effiziente, zukunftsfähige APIs zu entwickeln. So gelingen die ersten Schritte mit dem Open-Source-Tool.
Blog | #MDZG (Markdown Zen Garden) ⬇️🧘
#Tutorial: Create your #blog with MDZG on #Neocities
https://monastic.neocities.org/blog/2024/tutorial_blog_with_mdzg/
#javascript #fetch #markdown #web #marked #zen #garden #pico

monastic.neocities.org
This is a tutorial to create your blog with MDZG (Markdown Zen Garden) ⬇️🧘 on Neocities
#MDZG (Markdown Zen Garden) ⬇️🧘
The idea is really simple but works:
https://monastic.neocities.org/
#javascript #fetch #markdown #web #marked #neocities #zen #garden #pico
리눅스 정보 찾아본다고 유튜브 좀 깔짝 거렸더니, 나처럼 옛날 컴퓨터('감자 컴'이라고 부른다)에 리눅스 깔아서 계속 쓰려는 사람들은 '요즘 인터넷은 너무 화려하게 만들어서 무겁고 느리다'며 불평하는 게 눈에 많이 들어왔다. 사실 넷북에 Puppy Linux든 Lubuntu든 돌려봤을 때 인터넷이 가장 문제였다.
넷북으로 간단한 노트 테이킹이나 초고·초안 쓰기 정도만 하려고 했지만, 뭐가 안 된다 싶으면 인터넷을 쓰기는 해야하니까.
그런 환경에서도 인터넷 접속과 정보 공유를 하려면 군더더기를 정말 많이 빼야겠다 싶었다.
【入力フォーム】CSSの「:user-invalid」がかなり便利だった
https://qiita.com/ngtnysk/items/70ca0d0a1126256896af?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items
Show the author of your blog post in the link preview using Open Graph #meta tags in the `<head>` section.
You can use the `og:article:author` and `fediverse:creator` tags for the author’s #Mastodon profile:
`<meta property="article:author" content="https:// typo.social/@Luke">`
Edit also add:
`<meta name="fediverse:creator" content="@Luke">`
Edit 2:
Also define the domains to your profile to confirm verified attribution (see screenshot):
https://blog.joinmastodon.org/2024/07/highlighting-journalism-on-mastodon/
laissez tomber les dernières versions de Chrome... dans 8 semaines le navigateur de Google commencera à surveiller tous vos appareils
d'un côté ils font croire qu'ils veulent éliminer les cookies tiers mais en réalité pour faire eux-même le travail de façon encore plus invasive (et en rendant les publicitaires dépendant de Google)
des dominants pervers
la finance, quoi
https://www.forbes.com/sites/zakdoffman/2024/12/21/forget-chrome-google-will-start-tracking-you-and-all-your-smart-devices-in-8-weeks/
for some reason, https://mas.to has been really damn slow for me. Media takes very long to load.
but this isn't the case with other popular #mastodon instances.
What's the issue?
@trumpet
@mastodonindians
Celebrate the number 10 bestseller of 2024, Server-Driven Web Apps with htmx by R. Mark Volkmann. Save 50% today on this title with code mvhtmx2024. (no minimum cart value)
Also, save 40% throughout the countdown on all the titles we publish with code topten2024 (min cart $50)
Details in the article: https://medium.com/@pragprog/3886d1cdfb8e
#htmx #web-development #programming #pragprog #books
Been on the Web since 1992. 32 years now. I feel a bit of ownership to it even, but so do you. We all need to work together to build a better Web!
We can all make choices and our choices matter. You being here was a good choice. Thanks!
When I have some time to kill, I'll make a Desktop Environment Framework using #NuxtJS with #NuxtUI and #SQLite.
In my mind: apps would work seamlessly between desktop environment, no matter the flavor.
The idea: Apps are processes, Desktop Bus ties Window to App, multiple Desktops (screens).
#WebDev #NAS #JavaScript #Framework #DesktopEnvironment #Programming #HomeServer #Nuxt #Desktop #Browser #Web #HTML #Development #WebDevelopment #FOSS #OpenSource #OSS
BlueSky is to the ATmosphere what Goggle is to the modern web. Discuss.
Keen to read arguments both for and against, including within the same post. Reasoned arguments I disagree with get more points than knee-jerk hot takes I agree with. Go!
🧵 …I am not surprised by this from China.
«As Bluesky takes flight, China has got a Twitter problem:
[…] For Chinese state media, the rise couldn’t have come at a worse time. They have sunk considerable resources into Twitter, via unlabeled state-sponsored influencers, huge bot networks, the famous 50 cent army, offline police harassment of users, and cultivating the platform’s owner Elon Musk»
🦋 https://toosimple.substack.com/p/bluesky-takes-flight-twitter
#bluesky #china #xitter #twitter #web #propaganda #elonmusk #musk #media
toosimple.substack.com
For years, state media have been seeking to grab the microphone. Now Musk has handed them it.. no one is listening?
This is an article that everyone should read by Tim Berners-Lee.
It is written in 2010. It talks of the importance of the Web, open Web standards and fighting silos. It is as true today as it was then.
It applies to the work we are doing here in building the Fediverse. Based on W3 standards, open and distributed.
https://www.scientificamerican.com/article/long-live-the-web/
アクセスビリティーとかも
> 必要な人が能動的に必要な情報にアクセスできる
という #Web の特性を活かすための発想で存在している概念だと思うので、宣伝とか広告的な観点で「アクセシビリティーをやる意味は」みたいな話になったりすると、もともとのところからバグってしまっている感じがする
🧵 …in addition to the above, in my opinion a very good explanation of why BlueSky is not anything and not decentralized and the Fediverse is this very much:
«How decentralized is Bluesky really?»
– from @cwebber
🦋 https://dustycloud.org/blog/how-decentralized-is-bluesky/
#bluesky #fediverse #decentralization #web #socialmedia #mastodon #blog #decentralized #activitypub #atproto
dustycloud.org
🧵 …now across from Thems at the top of this toot row: OK, this explains why I have some new followers (welcome to the Fediverse) and also why my pinned toot has been shared so many times.
«Mastodon sees a boost from the ‘X exodus,’ too, founder says»
https://techcrunch.com/2024/11/18/mastodon-sees-a-boost-from-the-x-exodus-too-founder-says/
#mastodon #fediverse #xitter #twitter #x #socialmedia #user #boost #toots #web
techcrunch.com
Decentralized social network Mastodon is also seeing some uplift from the X "exodus," founder Eugen Rochko shared on the platform just ahead of the
🧵 …this does not come unexpectedly and the surveillance state deliberately makes the rich richer and the poor poorer.
«The WIRED Guide to Protecting Yourself From Government Surveillance:
Donald Trump has vowed to deport millions and jail his enemies. To carry out that agenda, his administration will exploit America’s digital surveillance machine. Here are some steps you can take to evade it.»
🛡️ https://www.wired.com/story/the-wired-guide-to-protecting-yourself-from-government-surveillance/
#trump #america #surveillance #us #web #internet #usa #protection #expoit
wired.com
Donald Trump has vowed to deport millions and jail his enemies. To carry out that agenda, his administration will exploit America’s digital surveillance machine. Here are some steps you can take to evade it.
🧵 …where consumers now seem to be escaping is in another small, locked-in world because they follow celebrities (see above). The Fediverse is the real free alternative to this.
«People are fleeing Elon Musk’s X for Threads and Bluesky. Welcome to the era of social media fragmentation»
#fediverse #twitter #x #xitter #musk #us #web #internet #prominence #elonmusk #bluesky #threads #consumerism #trump
fortune.com
Many high-profile X users are leaving after Elon Musk's efforts to elect Donald Trump, adding to a new era of fragmented social media.
The first software I built was Fm2HTML, that took FrameMaker documents and converted them to HTML. This is the early days of the Web.
The conversion was for multi-file documents, which included links, images, tables, indexes and more. The structure of the original document was preserved, as was a lot of the formatting.
FrameMaker was widely used in the research community at the time. It was a very powerful tool for writing books and longer documents.
Hello. This is my #Introduction.
I have been working with Web technologies since 1992. I have co-founded two browser companies, Opera Software and Vivaldi Technologies. I was CEO at Opera and I am CEO at Vivaldi.
I am a strong proponent of open standards. I believe in building feature rich products that can be adapted to the needs of users without collecting information about usage. I believe no company has the right to profile their users.
#Vivaldi #browser #Web #surveillance #SurveillanceCapitalism #Windows #macos #Linux #Android #ios
Capture node screenshot in Chrome DevTools is such a time saver. Especially when creating screenshots for an article.
No more dragging handles back and forth forever because you can never get it right and you're always still off by a pixel or two.
Right click node & find it in dropdown.
#DevTools #code #coding #frontend #web #dev #webDevelopment #webDev
outerheaven.club
We are celebrating #AaronSwartzDay by hosting Knitting Our Internet workshop at #SFSCON today (Seminar 2, 10:40).
Not only on this occasion, I always dedicate the whole workshop to the inspiring, bright, loving human being #AaronSwartz was.
Thank you for still making us pursue a better #Internet, and a better world, Aaron.
(The event is free, no reservation required. It’s not going to be streamed, but its video recording will be published.)
@AaronSwartzDay #Web #WWW #SoftwareFreedom #FreeSoftware #PoliticalTechnology #FSFE #Fediverse #workshop #InternetHistory #SurveillanceCapitalism
W3C Sustainable Web Interest Group, nice!
https://www.w3.org/blog/2024/sustainable-web-interest-group-is-formed/
#ClimateChange #Sustainability #ClimateCrisis #Energy #WebDevelopment #Software #Web #W3C
I’m writing a #newsletter called Own Your Web about designing, building, creating, and publishing for and on the #Web. It took a little work-induced break but the next issue is ready and will go out this Sunday.
If that sounds interesting, sign up here:
Really enjoying adding end-to-end tests to Kitten¹ using Playwright² and my own little Kitten controller class for starting/stopping/otherwise interacting with the Kitten server.
Just wrote some that comprehensively test identity creation and authentication for Small Web places:
https://codeberg.org/kitten/app/src/branch/regression-tests/tests/end-to-end/examples.spec.js#L32
Lots more to write but I think I’ve found a good flow :)
💕
¹ https://kitten.small-web.org
² https://playwright.dev
#Kitten #SmallWeb #Playwright #testing #NodeJS #JavaScript #web #dev
@sebsauvage quelqu'un a des idées pour changer de fournisseur de nom de domaine.
Dommage c'était un beau nom. #web #Internet
👀
Btw, these circling radial gradients on the HTML element use CSS trigonometric functions https://mastodon.social/@anatudor/113317082616343514
#CSS #cssMaths #trigonometry #gradient #cssGradient #code #coding #frontend #web #dev #webDev #webDevelopment #Maths
One complaint I've seen here a bunch of times with `prefers-color-scheme` was about duplicating styles.
You don't have to do that when you switch by toggling a single `--dark` variable!
(from State of CSS results https://2024.stateofcss.com/)
#CSS #theming #code #coding #frontend #web #dev #webDev #webDevelopment
From the comments on `prefers-color-scheme`: * Not entirely related to this, but it would be amazing if we could target `prefers-color-scheme` along with user selected preferences, i.e. [data-theme=dark], in a single ruleset * Wish I could combo this with the inevitable user-control hook as well though. Some kind of hybrid @media and regular selector, so you don't have to repeat everything within both an @media clause and then again with some kind of global selector e.g. body[data-theme="dark"] * I really wish there was a way to use "dark mode" detection outside of a media query. I constantly want to treat "user selected dark mode" on my website the same as "auto theme + system dark mode", but I have to duplicate styles with the way CSS works right now! It's a huge bummer.
/* ✅ DO (DRY) ✅ */ body { --dark: 0; /* 0 initially for light theme; 1 for dark theme */ /* how much the dark version represents; * 0% in light theme case, 100% in dark theme case */ --perc: calc(var(--dark)*100%); background: color-mix(in hsl, $dark-back var(--perc), $light-back); color: color-mix(in hsl, $dark-text var(--perc), $light-text); } a { color: color-mix(in hsl, $dark-link var(--perc), $light-link) } /* other styles */ /* switch to dark theme cases */ body:has([data-theme-option='dark'][aria-pressed='true']) { --dark: 1 } @media (prefers-color-scheme: dark) { --dark: 1 }
Just added a code breakdown for the Draw Together¹ Kitten² app to my blog post with the tutorial video:
https://ar.al/2024/03/26/draw-together/
Draw Together, in ~50 lines of code, is a real-time collaborative drawing tool on a 20×20 pixel grid where people can click to toggle the colour of each pixel.
(The full source and explanations fit the four screenshots on this post.)
¹ https://draw-together.small-web.org
² https://kitten.small-web.org
#Kitten #DrawTogether #web #design #dev #SmallWeb #WebSockets #StreamingHTML
Screenshot of web page (detail, start of Source Code section) at URL https://ar.al/2024/03/26/draw-together/: Source code The code sets up a real-time collaborative drawing tool on a 20×20 pixel grid where people can click to toggle the colour of each pixel. Here’s a breakdown of the entire source code, detailing what each section does: Create 20×20 pixel grid const rows = new Array(20).fill().map(row => new Array(20).fill(0)) const colours = ['white', 'black'] Creates a 20x20 grid initialized with zeros. Each cell will store an index corresponding to the colours array. Validation function const isValid = data => typeof data === 'object' && typeof data.rowIndex === 'number' && typeof data.columnIndex === 'number' && data.rowIndex >= 0 && data.rowIndex <= rows.length-1 && data.columnIndex >= 0 && data.columnIndex <= rows[0].length-1 Checks if the data object has valid rowIndex and columnIndex within grid bounds. Handle connections and pixel updates export function onConnect ({ page }) { page.on('pixel', data => { if (!isValid(data)) return
Screenshot of web page (detail, cont.): rows[data.rowIndex][data.columnIndex]++ if (rows[data.rowIndex][data.columnIndex] === colours.length) { rows[data.rowIndex][data.columnIndex] = 0 } page.everyone.send(kitten.html` <${Pixel} rowIndex=${data.rowIndex} columnIndex=${data.columnIndex} pixelColourIndex=${rows[data.rowIndex][data.columnIndex]} /> `) }) } Listens for pixel updates, validates data, updates the grid, and sends the updated pixel state to everyone connected. Pixel component const Pixel = ({ rowIndex, columnIndex, pixelColourIndex }) => kitten.html` <button id='pixel-${rowIndex}-${columnIndex}' aria-label='pixel-${rowIndex}-${columnIndex}' name='pixel' style=' background-color: ${colours[pixelColourIndex]}; top: calc(5% * ${rowIndex}); left: calc(5% * ${columnIndex}); ' connect data='{rowIndex: ${rowIndex}, columnIndex: ${columnIndex}}' morph ></button> ` Defines a button element representing a pixel, styled according to
Screenshot of web page (detail, cont.): its colour and position. Canvas component const Canvas = () => kitten.html`${ rows.map((row, rowIndex) => row.map((pixelColourIndex, columnIndex) => kitten.html` <${Pixel} rowIndex=${rowIndex} columnIndex=${columnIndex} pixelColourIndex=${pixelColourIndex} /> `)) }` Renders the entire grid by mapping over each row and column, creating Pixel components. Styles component const Styles = () => kitten.css` [name='pixel'] { position: fixed; width: 5%; height: 5%; border: 0; } ` Applies CSS styles to the pixel buttons to size and position them correctly. Main export export default () => kitten.html` <page title='Draw Together'>
Screenshot of web page (detail, cont., last): Main export export default () => kitten.html` <page title='Draw Together'> <${Canvas} /> <${Styles} /> ` Constructs the main page with the canvas and styles. Like this? Fund us! Small Technology Foundation is a tiny, independent not-for-profit. We exist in part thanks to patronage by people like you. If you share our vision and want to support our work, please become a patron or donate to us today and help us continue to exist. Aral Balkan About the author I’m an activist, designer, and developer. I’m one-half of Small Technology Foundation, a tiny and independent two-person not-for-profit based in Ireland. We advocate for and build small technology to protect personhood and democracy in the digital network age. To support my work, become a patron of our foundation. I’m available for public speaking and media inquiries.
The first one is this text effect that uses absolutely no images whatsoever save for #CSS gradients.
Some #SVG filter magic 🪄 is responsible for the background texture and also for the 3D look of the text and its grainy gradients.
https://codepen.io/thebabydino/pen/gONbppb
#filter #svgFilter #texture #textEffect #textEffects #noise #cssGradient #code #coding #3D #3dText #frontend #web #dev #webDev #webDevelopment
The text "Dusty" in thick cursive. Each letter face has a top to bottom grainy gradient from lighter to darker blue. This has a discrete inner shadow and casts a shadow on top of its white outline. The whole thing is extruded, with the extrusion having a grainy mesh gradient. Top to bottom goes from gold to crimson, while also getting progressively darker as it goes further from letter face. The entire extruded assembly casts a diffuse shadow on top of a textured, top middle lighted, 3D striped bluish background.
11! of my demos throughout the first @codepen trending pages!
#SVG #CSS #filter #3D #svgFilter #graphicEffect #textEffects #texture #css3D #transform #code #coding #web #dev #webDev #webDevelopment #frontend
Animated GIF. Shows a recording of going through the first few Trending pages on CodePen. These contain a bunch of my demos: * No image dusty SVG filter effect * No text duplication slice & offset (SVG filter magic 🪄) * inputs with cutout * Grainy slice! No JS, no text duplication! (contenteditable) * Pure CSS text effect (no Firefox) * Pure CSS 3D text stack * Pure CSS vertical scroll, horizontal slide * No text duplication blended layers * Realistic grainy shadows with no image duplication * No text duplication stroke shadow 🌊 * No matrix filter gooey effect
HTML for People
"I feel strongly that anyone should be able to make a website with HTML if they want": JHarris posted Blake Watson's great, free, web book with simple directions and a nice pile of resources for marking it up old-school.
https://www.metafilter.com/205847/HTML-For-People
#bbook #coding #css #free #html #HypertextMarkupLanguage #OldSchool #web #WebPages
My #HomeServer feels lonely without users!
You can contact me to get a FREE ssh account + email. Just send you ssh pubkey and preferred username!
The server runs #Gentoo, and you can bootstrap a Gentoo Prefix to have more control over the software.
Additional services in the family available to YOU:
Expected dowtime is at least one day a month. Don't use my services for anything serious.
We are PeARS, a friendly project dedicated to the development of a fully open source and decentralised #Web #search #engine.
How does it work? Every instance of PeARS can be considered a mini search engine for a single topic of interest, which is populated and curated by people like you. One beautiful day, when enough instances are alive, they will come together to provide a generalised Web search solution. Owned by you.
Interested? Come and help us! Say hello here or on GitHub.
outerheaven.club
#Design #Initiatives
Manifesto for a humane web · We need to build a web by and for humans https://ilo.im/15ytz6
_____
#Web #Inclusion #Accessibility #Sustainability #Transparency #Ethics #Business #WebDesign #WebDev #Development
Oh, fascinating. The .io TLD might actually disappear fairly soon!
#cloudwards compared @ArcBrowser, @Vivaldi and #Firefox and chose a winner.
(Sir) TIm Berners-freaking-Lee is on Mastodon.
If you don't know who that is, that is a guy who happened to change the world by building useful stuff himself, unlike ... certain people.
There's this concept of adaptive hypermedia where hypermedia content is adapted according to a user model. In contrast to linear media, where all users are offered a standard series of hyperlinks, adaptive hypermedia (AH) tailors what the user is offered based on a model of the user's goals, preferences and knowledge, thus providing links or content most appropriate to the current user. LLMs can and is being of great help here. #technology #hypermedia #web #LLMs #ml
Okay... it seems Sir Tim Berners-Lee, the creator of the World Wide Web, has just joined the Fediverse at:
➡️ @timbl
(For those wondering about verification, this is genuine as far as I can tell. The account is on the w3c server and they only allow manually verified signups, plus the verified account of the w3c is following him.)
Thank you to @vmstan for the headsup about this!
Created this after reading conversation in comments below some tech article somewhere. Someone mentioned "surfing the #internet sewer" and I really liked that phrase.
#drawing #comic #krita #web #surveillance #google #SocialMedia #enshittification #privacy #adblocker #ads
Drawing of a cartoon style man, wearing silver protective suit with UBlock Origin logo on it, surfing in sewer with green toxic water. There are cookies and fanged monsters looking like Chrome logos floating around him. On the background wall there are red crosses, like for closing websites or errors. There are also industrial cameras, one yellow eye and graffiti with TikTok logo. On the railing on path's edge there is photo camera attached, looking similar to old Instagram logo, and rotting blue bird. There is big text "Google" near water, with both "o" replaced with ends of pipes and small texts around: crossed out "AI", "Buy this, only $2!" and below "scammer!" and "it's con". Above the picture there is description "Surfing The Internet Sewer".
Hello everyone and a new #introduction as I have now migrated my account here.
I am a writing about #AIEthics, #regulation and #web related things, sometimes about #UrbanArchitecture, also with #photography
I am also sometimes - reluctantly - commenting on politics.
the way extensibility works in a closed-world #fediverse is that "every implementer talks to every other implementer". or maybe there is a central registry of extensions that everyone submits to their authority, as stewards of the "protocol" that is used to build the "network". this trades out the n:n relation between implementers and other implementers, for an n:1 relation between implementers and the central registry.
the way extensibility works in an open-world #Web is you just do it.
11/?
to build the #fediverse as its own "social networking protocol" then seemingly requires that we instead go with the closed-world assumption, contrary to the #Web
it requires ahead-of-time communication and coordination, where implementers need to be willing and available to talk to any other implementer, and this load grows with every new implementer.
it requires you to be aware of other extensions, present and future, because your extension might conflict with someone else's extension.
10/?
this is the fundamental divide between #fediverse thinking and #Web thinking, where #ActivityPub straddles the line between both.
i've seen it said that the "open-world assumption" at the foundation of the Web is actually an undesirable thing for a "social networking protocol", and as a consequence, specs built on that open-world assumption are "completely unsuitable" for that "protocol".
but do we need a "social networking protocol"? do we even need "social networks" in the first place?
9/?
but before you build a "protocol" for a "network", consider: what even is a "network", in this context? and, here's the hot take: do you even *want* that kind of "network"? do you want a separate reified #fediverse network?
because the answer that #ActivityPub gives is actually a different one. There is no "AP network", because AP as a protocol is not enough to build a concrete network. it is intended to provide, and exists in context of, the larger #Web.
8/?
#Introductions I’ve started learning lots about #FOSS and #Linux a few years ago and I love it even as an ex #Microsoft #MVP.
My day job is in #Web #Design, #GraphicDesign, and #EnvironmentalDesign, while I also do some work in #UXDesign, as well as part-time #TechJournalism at #Pocketnow.
Another part-time job is #Photography where I often shoot #Fashion shows, #CommercialModels, #Models, #Events, and #Weddings.
The #Web has #become a #cesspool of #JavaScript.
There are two open source web browser projects that have their own Mastodon instances.
Unfortunately, Mozilla has decided to shutdown their Mastodon instance by the end of the year.
https://mozilla.social/
But Vivaldi Web Browser has confirmed that they will keep maintaining their Mastodon instance.
https://social.vivaldi.net/
#Mozilla #firefox #web #browser #Vivaldi #social #mastodon #instance
FYI: grid columns don't have to be equal‼️
I keep seeing ppl extracting ratios, ending up with 10+ columns. Then every single damn item on the grid needs to have explicitly set how many columns it spans. 🙄
When 3 unequal columns means not having to set that on half the items‼️
#CSS #grid #gridLayout #cssGrid #code #coding #frontend #webDev #web #dev #webDevelopment
Part 3 of "A Guide to Implementing ActivityPub in a Static Site (or Any Website)" is just out the oven!
In this blog post, I explain how to make your blog discoverable in the Fediverse as an account, and also address some of the annoying pitfalls I encountered.
Full article here: https://maho.dev/2024/02/a-guide-to-implementing-activitypub-in-a-static-site-or-any-website-part-3/
If you like it don't forget to follow the @blog !
#fediverse #activitypub #static-sites #hugo #azure #mastodon #web-development #social-web #webfinger #http
Am I dreaming or is this real?
🥔 **kartoffels**: A robot combat arena game.
😳 Your job is to implement a firmware for a potato.
➡️ Play in browser: https://kartoffels.pwy.io
🔥 Or in terminal: "ssh kartoffels.pwy.io"
🦀 Written in Rust & built with @ratatui_rs
⭐ GitHub: https://github.com/Patryk27/kartoffels
#rustlang #ratatui #tui #terminal #game #patato #firmware #web #robot #simulation #gamedev
A comment section I quickly made one day on @codepen: https://codepen.io/thebabydino/pen/eYwQByp
Also: 🦕🦖
#CSS #responsive #code #coding #frontend #web #dev #webDev #webDevelopment
If your company is looking for outside help with a new web application or refactor, @OddBird has availability starting in January. We're a small team of web experts covering the full stack including design, with years of experience helping clients get from concept to launch.
Reach out if you might be interested. We're always happy to talk!
Worauf muss man denn im Jahr 2024 so achten, wenn man eine responsive Webseite bauen will?
Was ist denn da so Stand der Technik? CSS Grid? Kann man mittlerweile auch ohne View-Points?
Werft mir doch mal ein paar Begriffe an den Kopf, womit man sich beschäftigen muss.
Ach ... und bitte alles Pure. Keine Library und vor allem kein Javascript.
#tinyCSStip CSS vars more useful than data attrs for adding currency/ other pref/ suff.
⚠️
.v::after { content: attr(data-u) }
works iff you set data-u='€' attr on every single .v element
✅
.v::after { content: var(--u) }
works fine if you set --u:'€' only once on a wrapper
#CSS #cssVariables #code #coding #frontend #web #dev #webDev #webDevelopment
Time to finally do an #introduction!
I’ve been fascinated by the #web since I first got on the internet when I was a teenager. The idea that anyone could create a website — how cool is that!?
I’ve been a #Mac user even longer (my parents were in education and my mom would bring home her office Mac Classic on the weekends). Being creative with #HyperCard and wanting to make dynamic websites eventually got me into #programming. First with #Perl, later #PHP, and now #JavaScript and #TypeScript. I’ve also had some fun with #C, #ObjectiveC, and #Swift.
For 14 years I worked at a small company that makes the premier CMS for the #AltWeekly press in the US. Now I work on web applications in #React in the far-more corporate world. I also used to co-organize TucsonJS and Tucson React meetups.
During my recent blogging revival I’ve already written about how I love the web1. I’ve also commented a couple of times about uses of AI and Large Language Models and the kinds of confusion that can be caused.
Today, I noticed an exchange between the brilliant Sara Joy and Stefan Bohacek on Mastodon, in which Stefan accidentally reminded me of something interesting that I hadn’t properly explored the first time around.
About 20 years ago – actually 24 years ago, according to this Wikipedia article – there was a thing called FOAF, or Friend-of-a-Friend, an early online vocabularly / ontology for describing relationships between people and things online. There was also a related concept called DOAP, Description of a Project, that I was interested in and implemented in a couple of things I worked on back then. I did some digging, but the only references I can find on this blog are some passing mentions in the early 2000s, and I’ve lost my original foaf.rdf file but I might have to go hunting for that for posterity, at some stage.
I’m mentioning all of this because it reminds me that I’ve always been interested in the Semantic Web space, and also in the people aspects of the web, beyond just the words and the technology – Who is making What, and How it is all connected.
Back to the ~present!
About 10 years ago – actually 12 years ago, according the last updated date in the original humans.txt file – there was the quiet proposal of an idea, for a humans.txt file, that could live in parallel to the robots.txt file on a web server.
The robots.txt file is intended for site owners to provide instructions to web crawlers – “robots”, or automated programs – as to how to behave in relation to the content of the site: this is the agreed-upon standard way in which the web works, and signals to search engines how to index websites, going all the way back to the early days of 1994-7, and later fully documented by Google and others.

The idea for the humans.txt file was that we should have a simple way to credit the people who made a website, in a super easy to create and publish format, regardless of the technology stack used to build the site or the URL formats and layout of the site. It was briefly documented and lightly promoted on humanstxt.org. I remember noticing it at the time, loving the idea, but then not really doing anything with it, and I admit that I didn’t end up using it myself.
However, Stefan is using this on his site (and wrote about it 11 years ago, because of course he’s ahead of me again 😀) and it made me think:
robots.txt in relation to AI crawlers/scrapers in the past 6-12 months. Let’s re-emphasise the human aspect here.
REMEMBER THE JOY THE INTERNET CAN BRING ❤️
https://donotreply.cards/en/do-post-what-it-felt-like-to-make-your-first-website
— Dan Hon (@danhon@dan.mastohon.com) 2024-08-24T17:53:01.066Z
What I’m saying, is this – Thank You, Stefan, and Sara, and Dan Hon2 and everyone else from XOXO and everywhere all over the internet, for reminding me that the web is great, humans are incredible, and hey, why don’t we all give this humans.txt thing one more try? I’m on board with that.
Ça fait donc 27 ans que je surfe sur le #Web avec un #navigateur fabriqué par @jon et ses équipes❗️
J'avais découvert #Opera 2.12 sur ce CD-ROM de magazine (Netsurf) 👇 et on m'a offert l'accès à une version alpha non publique de #Vivaldi... un peu plus tard (fin 2014) 😉
Kitten update
If you happen to be using the Kitten type safety library (@small-web/kitten) in your apps, please update to 3.0.4, I just added some missing types. Likely ones none of you are using at the moment (like kitten.crypto), but still :)
:kitten: 💕
My blog https://mnt.io now feels like 1990-2000 with recommendations to other sites, and links to RSS & Atom, in the footer.
I miss the old school Web.
Since I came across this abomination again (in 2024, ffs 🙀 ):
❌`-moz-text-fill-color` was never a thing. There was never ever such a `-moz-` prefixed property.
❌`-moz-background-clip: text` never ever did a thing either. There was once a `-moz-background-clip`, but it never worked with `text`.
#css #yikes #nope #code #coding #web #webDev #dev #webDevelopment
J'ai bien envie de travailler avec des équipes localisées au #québec en ce moment.
Si les quelques personnes vivant à #montréal qui me suivent ont des idées, je suis super ouvert.
Je sais faire des trucs autour de #python et du #web. J'aime accompagner des personnes dans l'acquisition de savoirs et d'autonomie autour de la technique. J'apprécie de concevoir des produits qui respectent et prennent en compte leurs utilisateur·ices.
Je ne cherche pas forcément du (très) lucratif.
Repouets 🆗
✍️ Ce qui a changé en 20 ans, c’est que j’ai pris conscience que la pérennité d’une donnée tient à l’autonomie que l’on peut donner aux personnes qui vont s’assurer de son évolution. — Quizz, https://larlet.fr/david/2023/02/18/
I found a cool web tool to reduce images file size, its called #Squoosh ✨
It works well and makes it easy to compare images, plus its #OpenSource (and free) !
Over the past week, there’s been a noticeable shift away from X in the UK, and it feels long overdue. According to Bluesky’s PR, the platform has seen a surge in new users and activity from the UK. I’ve personally noticed more people finding my profiles on both Threads and on Bluesky, and I’ve seen a significant number of “I just deleted my X account” posts on Threads. However, due to the algorithm, these posts often appear in bursts, sometimes delayed by a day or two.
My friend Neville Hobson wrote a piece today titled “Finally, the Unravelling of X,” where he discusses this migration, the reasons behind it, and the pros and cons of choosing between Bluesky and Threads. Neville touches on the idea of a “more respectful, decentralized web,” (to quote him on the Fediverse), and even highlights something I said on Threads yesterday. In response to a question about where politicians should go in a post-X world, I suggested that governments should own their own social platforms:

I wanted to expand on what I meant by a “sovereign owned/operated Mastodon instance” for the UK Parliament, and why I believe this is important.
One of the major tensions between Big Tech and national governments over the past 15 years has revolved around platform ownership and control. The European Union has even labeled several tech companies as “gatekeepers” in the Digital Markets Act. This term is telling—these companies essentially gatekeep the digital rights, data, and access of national citizens.
If governments are concerned about the dominance of privately-owned online platforms, they have a responsibility to run and own their own. At FOSDEM in Brussels this February, we noticed growing interest in Fediverse platforms and technologies like Mastodon from several national governments and the EU itself. Many of these institutions are already running their own social media instances and actively encouraging their politicians to use them. In the EU, there’s no reason to switch to Threads since Meta has restricted the platform’s availability in the bloc. Moreover, Threads doesn’t allow users to run their own instances, unlike Mastodon or even Bluesky, which, while less common, does technically support setting up a external ATProto instance (I don’t think that’s really happening though? happy to be informed and to learn otherwise – I’ll readily admit that it has not been at the centre of my attention).
For years, governments, newsrooms, and other organisations have protested the idea that private companies should control and limit their messages. A logical response would be for these entities to run their own instances of software like Mastodon—or any Fediverse-compatible, ActivityPub-based service. This would allow them to own their content, domain, and user verification, ensuring greater control and independence.
The UK is lagging behind in this area. While the EU has embraced Mastodon, and in the US, many organisations have moved to Threads, the UK has yet to take similar steps. For example, I follow @POTUS@threads.net and @whitehouse@threads.net from my Mastodon account, because they’ve enabled Fediverse sharing. Even though Threads is owned and operated by Meta, it’s positive that their content can reach into the wider Fediverse. Ideally, Threads will eventually fully integrate with the ActivityPub network, offering a two-way interaction and allowing for account, network, and maybe content portability—hence why I said, “in principle, with federated social accounts, the location does not matter so much, as long as they can be discovered and followed.” Owning the network and identity allows for broader discoverability and avoids corporate chokeholds.
As an aside: the EU has been a strong supporter of free software, Open Source, and open standards. My colleagues in the Mastodon team have signed an open letter in support of the Next Generation Internet (NGI) programs, urging the EU not to cut these investments. I fully support this stance.
There are challenges to this approach:
These are important discussions that we need to be having. Politicians and the media should advocate for greater decentralisation and digital sovereignty to protect the freedom of democratic institutions.
Oh, and of course – these organisations should also fully embrace, invest in, and protect the open web.
Update 16/08/2024 – my friend Stefan Bohacek reminded me that he put together a useful resource on this same topic several months ago, Fediverse: an overview for government agencies. Well worth sending to your representatives, or sharing with your network if asked.
Update 27/08/2024 – the conversation continues in episode #425 of the For Immediate Release podcast (discussion starts around 13 min into the show). I appreciate Neville and Shel talking about my post here. Take a listen, if you want to hear how they expanded on and debated this idea – available wherever you get your podcasts.
Update 09/09/2024 – I wrote a second piece expanding on this and listing existing governments that are already in the Fediverse.
Update 13/09/2024 – I was reminded of this piece from IFTAS, Open Social for the Common Good, that is also excellent on this topic.
Finally – if you’re leaving X – congratulations – don’t look back.
From #Finland, live in #London, #UK. I work in #tech, specifically #eCommerce. I have a long professional history with the #web.
I own multiple #bikes, because I love #cycling, particularly #bikePacking and #bikeTouring with some #wildCamping, but also #activeTravel.
Had #photography and #wetDarkroom work as a hobby, but that is currently dormant.
Occasionally #hiking. More often urban bimbler, taking pictures of all the #cats I meet.
Some people say I make too many #puns.
Me with my bike in touring setup on the Forth bridge in Scotland.
My bike in bike-packing setup looking out to the sea on the Isle of Wight.
My city bike under some moody lights hanging from some trees in Elephant & Castle in London.
My tent pitched near the water in Denmark. The campsite is overlooking the sound of Kattegat and in the distance you can see the Swedish coast.
New Kitten release
Update to the latest version to get basic anonymous access statistics for your apps/sites in Kitten’s Interactive Shell (REPL)¹.
(When I get a moment, I want to make a nice web interface for this in Kitten’s Settings section too.)
Enjoy!
:kitten: 💕
¹ https://kitten.small-web.org/reference/#kitten-s-interactive-shell-repl
Screenshot of terminal window showing output of .stats command: 🐱 💬 .stats Kitten Serving /var/home/aral/Projects/kitten/kitten-kawaii Mode interactive (development) State sleeping CPU 0.00% (user: 0.00%, system: 0.00%) Memory 0.3% Events and listeners There are currently no Kitten events being listened for. Access statistics There are currently 3 pages being viewed. Top 10 viewed pages 60 /💕/sign-in/ 29 /character/happy/yellow/folder/ 18 /character/blissful/pastel-red/file/ 18 /character/happy/blue/ice-cream/ 9 /character/lovestruck/pastel-red/human-dinosaur/ 6 /character/lovestruck/yellow/cyborg/ 5 /character/lovestruck/pastel-red/folder/ 4 /character/blissful/yellow/file/ 4 /character/excited/pastel-purple/human-dinosaur/ 2 /character/blissful/pastel-magenta/ghost/ Missing pages (404) 16 /favicon.ico 5 /what/lovestruck/pastel-purple/human-dinosaur/ 1 /character/jubilent/yellow/folder/ Server errors (500) 20 /character/happy/yellow/folder/ 20 /character/blissful/pastel-red/file/ 1 /character/blissful/green/cat/ 1 /character/happy/blue/ice-cream/ Process details Current Kitten process
Version 1.2 of Toki Trainer for iOS is fully released!
A study tool for the language toki pona, version 1.2 has French localization and a better user experience that addresses user feedback.
You can download it here: https://apps.apple.com/us/app/toki-trainer/id1593960841
The community-contributed dictionary is also available in a web frontend at https://toki.maddie.info/
The web-frontend is still less feature-rich than the iOS client for now.
Please give either or both a try! I make these FOSS tools and release them for free, with no advertising or tracking.
If you’d like to support my continued work on these tools you can donate to my ko-fi: https://ko-fi.com/maddiefuzz
Thanks for your time, and a special thanks to those who contributed the French translations. This localization wouldn’t be possible without you.
#Programming #Development #FOSS #FLOSS #iOS #Web #TokiPona #ConLang
I owe the hospital $2500 for a cat scan and I am looking to do small web projects to help satisfy that debt. Maybe you need some web maintenance tasks that have been on the back burner? I have experience with #html #css #javascript #php #nodejs #golang #wordpress #react #hugo #aws #sql Looking for small projects around $250 - $350 . If you know someone who might benefit please #boost #foss #opensource #writer #writing #programming #software #blog #database #web
Reposting my #introduction from @nolan@venera.social.
Hi, I'm Nolan, #blind #accessibility advocate, #game/#web/#mobile developer, #cooperative enthusiast, and animal-lover from Austin, TX. Other interests include #gaming, smoking meat, and occasionally dabbling in music creation/sound design.
Looking forward to meeting and connecting with cool folks.
I'm Dylan, a #FullStack #web developer from the Midwest, US. I enjoy working with #javascript, #NodeJS, #php, #SvelteKit, and #linux. I've also done lots with #WordPress.
I love learning about #CyberSecurity, dabbling in #SelfHosting, and tinkering in my #HomeLab which I automate with #ansible.
I #blog frequently at https://www.closingtags.com where I write things related to #WebDev. You can reach me via the contact form there or here!
🔖 New bookmark: Finding the indie web is hard | Delyo's garden
🔗 https://garden.delyo.be/rants/finding-the-indieweb/
The struggles and challenges of finding and connecting with independent, personal websites and blogs outside of the walled gardens in the small web.
🔥 https://flamedfury.com/bookmarks/finding-the-indie-web-is-hard-or-delyos-garden/
I’m starting something new! 🤗🎉
Own Your Web is a newsletter for anyone who wants to design, build, create, and publish on the Web.
Whether you want to get started with your own personal website or level up as a designer, developer, or independent creator working with the ever-changing material of the Web, this little email is for you. 💚✊
Sign up here: 👉 https://matthiasott.com/newsletter
#OwnYourWeb #newsletter #web
RT=❤️
How would you go about creating this multi-layer text *with strokes* smooth effect on `:hover` without duplicating the text? That includes duplication in pseudo `content`, btw.
I did it with #SVG filters https://codepen.io/thebabydino/pen/poXJyRP - can you guess how before checking the code? 😼
Original @codepen demo I came across https://codepen.io/vstefanova/pen/wvLBwWz uses text duplication in the pseudo, but I thought I could do without.
#CSS #filter #svgFilter #code #coding #frontend #web #dev #webDevelopment #textEffect
Screenshot. Shows a navigation menu where items are just white text outlines on a dark background in the normal state. In the :hover/ :focus state, they also get a white fill and two distinct outlined and filled copies getting offset by various degrees to the top right. The DevTools panel is also open to show the fact that there's no text duplication, not in the markup and not in pseudo-elements.
Animated GIF. Shows the :hover effect for each and every nav item.
Screenshot of the relevant bits of code in the original demo showing duplicating the link text in its pseudos.
How to Block or Disable Media Using Mozilla Firefox
Improve your privacy and website performance in this comprehensive guide on how to block media elements (images, videos, etc.) using Mozilla Firefox.
https://www.adamsdesk.com/posts/block-disable-media-mozilla-firefox/
If you know little or nothing about #coding but want to learn, then check out https://whizkidzcc.com/summer. We've turned students that didn't think they could code to not only become proficient but to actually enjoy programming.
We offer one-week online workshops on #Python, #Java, #Web, #AI / #machinelearning, and more! These classes are taught by trained instructors. It is project-based and very hands-on. Use the coupon code "mastnew" for $100 off for first-time customers!
Does anybody know of a web client for mastodon similiar to tweetdeck with a really cool retro style?
Im not sure anymore if i might just have dreamed that. But I have this vivid memory trying out a web client like that 2 years ago.
I am aware of mastodeck and those who pop up if your search for alternative web clients, but it had a really distinct style.
#mastodon #fediverse #web
My data protection assessment of Privacy Sandbox's Protected Audience API. I analyse it through the lens of #GDPR and #ePrivacy. It can be used in line with EU Data Protection, and may even help solving the cookie-consent fatigue. My LL.M. dissertation. https://blog.lukaszolejnik.com/data-protection-assessment-of-privacy-sandboxs-protected-audience-api/
The full content of my LL.M. dissertation at University of Edinburgh Law School The University of Edinburgh https://lukaszolejnik.com/stuff/PrivacySandbox_PAAPI_LLM_LO.pdf
#privacy #dataprotection #dataprotectionlaw #privacysandbox #web #webbrowser #standards
Quick #introduction while I wait for a build to run.
I work at the #BBC on #web content delivery. Some things I've built with our teams here are:
* Our in-house CDN for www.bbc.co.uk & www.bbc.com
* Our www #CDN log processing pipeline & reporting dashboards
* The core BBC #DNS service & deployment tooling
* The BBCs Reporting API & Web Vitals endpoint
I'm a BBC Security Champion & I #snowboard, #skateboard & do all the usual life stuff
Le truc nul avec l’envoi d’URL #nitter et autres #invidious c’est que mon extension #firefox #invidition qui redirige sur l’instance que je veux ne fonctionne pas dans ce cas 😭
Voilà pourquoi, quitte à renvoyer vers des documents hébergés dans des silos, il me semble nettement préférable de conserver l’URL d’origine du #silo emprisonneur.
New #introduction 👋
I'm a #fullStack #web #developer. 🔋
I love #openSource and #freeSoftware and I'm looking for a #job in #bonn #germany 🇩🇪
https://cv.isman.fr/#full-stack-web-developer
(boosts are nice 😊)
Just updated the Small Technology Foundation web site to fix old links, update the status of Kitten¹ (close to API Version 1) and Domain² (will enter open Beta this year), and to add a few news items.
PS. We have zero public funding (NLNet, ngi, etc.) and we don’t take VC or Big Tech sponsorship. Fund us: https://small-tech.org/fund-us
¹ https://kitten.small-web.org
² https://codeberg.org/domain/app
#SmallTechnologyFoundation #SmallTech #Kitten #Domain #humanRights #privacy #web #tech
YouTube "Ad Injections" Are Breaking Ad Blockers
by Mental Outlaw
https://www.youtube.com/watch?v=OzKA0UzSo6I
alternative link:
https://jouwbuis.nl/watch?v=OzKA0UzSo6I
"The day Ad Block no longer works.... I will no longer using youtube" - I noticed that some people treat this comment as a joke, or whatever but ...
I personally will give up on youtube if this happens. I really plan detox.
Do we have alternative?
Yes, in form of BLOGS!
Here on mastodon, there's a lot of great people that have value too, and many have personal blogs - i think they are worth of attention.
Because businesses, tech companies overload web with garbage ... what we need is to build a "space" without that crap.
A small little space in web, like BSD Cafe.
I learned how to live without facebook, i never touched things like tiktok etc. . .
I'm ready to ditch my google account. The last piece... is to just buy a new phone, install alternative OS on mobile and at this point i will be done with google.
People need to build their own spaces and services.
It's important to teach people reaching this kind of independence.
To have better web, we need to start small and built it by yourself ... it's sad but true.
What big tech companies do is out of control anyway.
Dark Visitors - A List of Known AI Agents on the Internet
Insight into the hidden ecosystem of autonomous chatbots and data scrapers crawling across the web. Protect your website from unwanted AI agent access.
#ai #internet #block #LLMs #chatbots #it #security #datascraping #protection #web
darkvisitors.com
Get realtime insight into the hidden ecosystem of artificial agents browsing, scraping, crawling, and gathering intelligence on your website
And.. youre really wondering why I won't let you store cookies to better trace my private data?
You and your HOW MANY Partners??
Like.. how would anyone look at this screen and think "Surely this is fine, I bet you need the whole 1286 to provide all this awesome.. text.."
Holly flying F*
Made a new #personalwebsite. One that's not connected to my other life. Just a place to post thoughts and ideas that are hopefully helpful or at least amusing to someone sometime.
Cómo archivar Paginas Web.
Guía para archivado interactivo
03/12/2023
Por @pip
Compartimos un video de cómo instalar y empezar a usar archiveweb.page una extensión para Chrome/Chromium para archivado interactivo de sitios. Cuando tengas un archivo, contactanos para saber dónde subirlo.
Fuente: https://archivo-pirata-antifascista.partidopirata.com.ar/2023/12/03/c%C3%B3mo-archivar.html
#viendo #web #chromium #pip #archive #archivos #archivopirataantifascista #argentina #chile #latinoamerica #archiveweb #archivo
archivo-pirata-antifascista.partidopirata.com.ar
Guía para archivado interactivo
(1/2) #ICYMI: If you hate AI powered search engines and prefer a more humanized and alphabetical index of sites, well, why not go to The Blue Pages!
The Blue Pages aims to be a web directory that:
- Relevant to one's interest
- Could be used by literally everyone (except corporations)
- Go with the spirit of Web 1.0
It is a pure curated index, no scrappers, no algorithms, no bullshit.
Why not go there on: https://blue-pages.bitbucket.io now!
"As a result of the DMA the tech giant allows to install other browsers as defaults. Apple ensured that these browsers can no longer use WebKit because it would make them faster than Safari. To this end, the tech giant blocked the WebKit API in iOS 17.4."
https://www.techzine.eu/news/privacy-compliance/116980/apples-changes-to-comply-with-the-dma-opens-new-european-antitrust-investigation/
#Apple #iPhone #DMA #WebKit #Web #rendering #FrontEnd #WebDev #PWA #Sideloading #AppleStore #browsers #monopoly #EU #Europe #privacy #security #Safari #iOS #iOS174 #competition #AntiCompetitive
techzine.eu
Apple faces another EU competition investigation. This is the result of blocking so-called "progressive web applications" or PWAs in iOS 17.4. The change
Here is a measure of how much developers choose to make browsers work (to parse, keep in memory, execute):
JavaScript download (all caching disabled, aka. cold load):
0.2 MB – Wikipedia
0.4 MB – Mastodon
1.4 MB – PornHub
3 MB – Medium
7 MB – Airbnb
10 MB – Pinterest
11 MB – Patreon
12 MB – Youtube
16 MB – Instagram
20 MB – Gmail
31 MB – Linkedin
55 MB – Slack
Some details are here: https://tonsky.me/blog/js-bloat/
#webDev #accessibility #a11y #Web #bloat #js #JavaScript #minified
Craig Abbot rants that a criterion cannot be partially compliant: https://www.craigabbott.co.uk/blog/partially-supported-is-not-supported via @juliemoynat
#webDev #accessibility #a11y #Web #compliance #WCAG #conformance #anger #standards #norms #normal #Abbot
craigabbott.co.uk
Stop using the phrase 'partially supports' in accessibility.
Short video footage from October 2014, at #w3c 20th anniversary, when Vint Cerf and Tim Berners-Lee donned / revealed t-shirts that @amyvdh and @koalie had custom-made, and they were good sports to agree to wear!
The audience enjoyed the memorable and unexpected stunt!
An image is worth a thousand words:
• Tim Berners-Lee invented the #Web (and in 1994 founded @w3c )
• Vinton Cerf invented the Internet.

Two men stand on stage. One removes his shirt and reveals a T-shirt with text in the front "I didn't invent the Internet." The other man dons over his white shirt a t-shirt that reads on the front "I invented the Internet." They smile in the lighthearted moment. A crowd gathers at the foot of the stage as people laugh and film.
"Quick" Question: If you would build a new #web #application, what would currently be "the best" development language and/or #framework (#webframework) for that?
"Best" as in reliable, #secure, easy to get personal and future proof?
Would it be #python with #django or #rubyonrails or #php #symfony or something completely different?
The untold history of web development:
1990: HTML invented.
1994: CSS invented to fix HTML.
1995: JS invented to fix HTML/CSS.
2006: jQuery invented to fix JS.
2010: AngularJS invented to fix jQuery.
2013: React invented to fix AngularJS.
2014: Vue invented to fix React & Angular.
2016: Angular 2 invented to fix AngularJS & React.
2019: Svelte 3 invented to fix React, Angular, Vue.
2019: React hooks invented to fix React.
2020: Vue 3 invented to fix React hooks.
2020: Solid invented to fix React, Angular, Svelte, Vue.
2020: HTMX 1.0 invented to fix React, Angular, Svelte, Vue, Solid.
2021: React suspense invented to fix React, again.
2023: Svelte Runes invented to fix Svelte.
2024: jQuery still used on 75% of websites.
(By https://twitter.com/fireship_dev)
#Web #Development #HTML #CSS #JavaScript #React #ReactJS #JQuery #Svelte #Angular #AngularJS
New blog post on how to filter out search results and redirect websites using #searxng
https://medium.com/@orizuru/filter-out-results-from-your-web-searches-a243ebe4449d
medium.com
How to spare yourself from useless websites
A list of recent hostile moves by #Google's #Chrome team; handy for sharing with your entourage, to explain why they should stop using #Chromium / #GoogleChrome and use #Firefox or #Epiphany as their main #web #browser :
* The "Manifest v3" sabotage of content blocking extensions: https://www.theverge.com/2022/6/10/23131029/mozilla-ad-blocking-firefox-google-chrome-privacy-manifest-v3-web-request
* The attempted sabotage of #JPEGXL: https://www.cnet.com/tech/computing/chrome-banishes-jpeg-xl-photo-format-that-could-save-phone-space/
* #WebEnvironmentIntegrity a.k.a. #DRM for whole websites would hurt the web, #opensource browsers and OSes: https://arstechnica.com/gadgets/2023/07/googles-web-integrity-api-sounds-like-drm-for-the-web/
arstechnica.com
It's just a "proposal," but it's also being prototyped inside Chrome right now.
Hey, salut tout le monde!
Je suis toujours à la recherche de #job et je cherche des #agences qui bossent dans le #web entre #Lausanne, #Fribourg et la #Riviera #suisseRomande. Ceux qui connaitraient une entreprise à la recherche de #webDesigner, #UXDesigner et/ou #développeur pourraient ils me faire signe? Boosts appréciés!
Vous pouvez checker et partager mon site: https://marchottinger.ch 🌐
marchottinger.ch
Marc Hottinger est un designer et développeur web travaillant à la jonction de l'art de l'ingénieurie et du design.
[Follow-up] Salut tout le monde, je suis en train de monter mon portfolio! Sachez que je cherche un job à 80%-100% (ou des mandats) dans le domaine du Web Design (UI/UX). Rendez-vous dans quelques jours pour voir mon travail.
Vous pouvez m'envoyer un MP si interêt. Boosts appréciés!
#job #jechercheunjob #travail #emploi #design #webdesign #dev #ui #ux #portfolio #web #cv #resume
1/

Capture d'écran d'une partie de la home page du portfolio du designer Marc Hottinger. Le site présente un portrait en plan poitrine noir/blanc sur fond noir avec l'inscription en arrière-plan "Marc Hottinger" et un petit texte en dessous: "À la jonction de l’art, de l’ingénierie et du design, je tente de faire naître des solutions interactives esthétiques, originales et humaines."
The new replicad tutorial is published as part of the documentation: https://replicad.xyz/docs/tutorial-making-a-watering-can/intro
I walks you through how to use the draw API to #codecad your way through creating a nice designer watering can.
A belated #introduction from a #birdsite escapee!
I’m a #FullStack #web #SoftwareEngineer. Zero-downtime migrations are my jam.
#Software is a 3rd #career after #MentalHealth & #academia (#linguistics). I’m holding the tech door open for other #women, #BIPOC, #LGBTQIA, & #PWD.
Being #Queer is an orientation & a worldview. Sharing information is a #LoveLanguage.
I’m militantly pro-#WorkLifeBalance. I love #powerlifting, #meditation, walking my #greyhound, #reading, #therapy, & #friendship.
Guess it's time for an #introduction post. I'm a #bayarea #California native, #GenX #gay man. Married, we own a #Victorian (#Edwardian) house here in #SanFrancisco. I do #GraphicDesign for #print and #web. The pandemic has put a crimp in some of my hobbies but I used to enjoy #running, #ttrpg, (#dnd, #InvisibleSunRPG, and more) #BoardGames, #VideoGames, #vegetarian #cooking, #art and #writing for #ARG and #immersive events.
Ok, je me lance dans l'exercice de l'#introduction
Je suis responsable #web à l’École polytechnique fédérale de Lausanne (#EPFL). Vous me verrez donc fréquemment tooter #EPFLCampus, #WordPress #AcademicMastodon et #ScienceMastodon.
Vous risquez de voir passer aussi par ici:
- 🚲 du #vélotaf
- ♻️ de la #réparabilité
- 🎧 du bruit plus ou moins agréable
- du régional
- 👅 en français, anglais, e de vez en cando tamén en #galego
ℹ️ Ça se prononce [ʃurʃo]
Olá! 👋
Apresento-me.
Sou o ifrit, levo 15 anos no pássaro azul e estou-me a desacorrentar.
#cinema #BD #música #séries #animação #internete #desenho #cerveja #cozinha #política #jogosdemesa #livros #rol #direitoslaborais #feminismo #culturapopular #história #gente #criança #paternidade
Escrevo (ao meu jeito) em galego-português (https://a.gal/reintegracionismo-e-reintegracionistas/)
🗞️#newsletter: https://tinyletter.com/ifrit
🎙️#podcast: http://ifrit.ga/entrenoseaspalavras/
🌐#web: http://ifrit.ga/
#Introduction #apresentação #Galiza
I guess you could call me a #web veteran. Been working on it since 1998 and spent the majority of my time at Dusted, a creative agency, shaping the web presence of our clients. Passionate about #accessibility and #UX as well as #webTech in general - particularly #frontEnd.
Other than that, I love watching decent #tv and #movies, walking the #pug the short distances she can manage and taking photos of random shit.
Hello, Fediverse! ✈️
Cockpit is #web based #UI for #Linux servers. (It's like a desktop for a server that you can use in your browser, for "newbies", seasoned admins, and everyone in-between.)
You can configure a server, modify your network (and firewall!), view logs, see system stats, edit accounts, start and stop services, debug #SELinux, and much more.
Add-ons are available to work with #Podman #containers, #VirtualMachines, #ostree, and more.

cockpit-project.org
Cockpit makes it easy to administer your Linux servers via a web browser.
#Introductions I’ve started learning lots about #FOSS and #Linux a few years ago and I love it even as an ex #Microsoft #MVP.
My day job is in #Web #Design, #GraphicDesign, and #EnvironmentalDesign, while I also do some work in #UXDesign, as well as part-time #TechJournalism at #Pocketnow.
Another part-time job is #Photography where I often shoot #Fashion shows, #CommercialModels, #Models, #Events, and #Weddings.
caricature parfaite de ce qu'est devenu internet aujourd'hui : https://how-i-experience-web-today.com/detail.html#
Hello, everyone! #introduction #reintroduction
My name is Matthew, I’m an American generalist computer person, #web developer, amateur generative artist, hobbyist photographer, weird video game enthusiast (and sometimes maker), book reader, long walker, and #tea drinker. Hoping to talk to cool people about all those things!
Also! #trees #libraries #publictransportation #cameras #walking #gardens #language #books #pizza #philadelphia #newzealand
Links 👇
Я программист, сейчас на #typescript пишу всякие #web штуки. Последнее время упарываюсь в #web3, то есть #crypto, децентрализация и всякое такое. В вебе со времён #jquery и ES3, но про них обычно вспоминают как о страшном сне. Могу ещё писать на #python и #rust.
Но вообще когда-то давно хотел стать дизайнером. Не потому что творчество люблю, а потому что люблю делать красиво и удобно.
В свободное время... Скажем, что в свободное время я тюленю перед компом, пытаясь найти в интернете всякого интересненького. Не так давно нашёл вот Mastodon и потихоньку задумываюсь о том, чтобы сделать свой сайт в лучших традициях #indieweb
Вот такой вот получился у меня #introduction
Что буду сюда писать пока не знаю, я скорее чукча-слушатель, а не писатель.
I've told this story at conferences - but due to the general situation I thought I'd retell it here.
A few years ago I was doing policy research in a housing benefits office in London. They are singularly unlovely places. The walls are brightened up with posters offering helpful services for people fleeing domestic violence. The security guards on the door are cautiously indifferent to anyone walking in. The air is filled with tense conversations between partners - drowned out by the noise of screaming kids.
In the middle, a young woman sits on a hard plastic chair. She is surrounded by canvas-bags containing her worldly possessions. She doesn't look like she is in a great emotional place right now. Clutched in her hands is a games console - a PlayStation Portable. She stares at it intensely; blocking out the world with Candy Crush.
Or, at least, that's what I thought.
Walking behind her, I glance at her console and recognise the screen she's on. She's connected to the complementary WiFi and is browsing the GOV.UK pages on Housing Benefit. She's not slicing fruit; she's arming herself with knowledge.
The PSP's web browser is - charitably - pathetic. It is slow, frequently runs out of memory, and can only open 3 tabs at a time.
But the GOV.UK pages are written in simple HTML. They are designed to be lightweight and will work even on rubbish browsers. They have to. This is for everyone.
Not everyone has a big monitor, or a multi-core CPU burning through the teraflops, or a broadband connection.
The photographer Chase Jarvis coined the phrase "the best camera is the one that’s with you". He meant that having a crappy instamatic with you at an important moment is better than having the best camera in the world locked up in your car.
The same is true of web browsers. If you have a smart TV, it probably has a crappy browser.

My old car had a built-in crappy web browser.

Both are painful to use - but they work!
If your laptop and phone both got stolen - how easily could you conduct online life through the worst browser you have? If you have to file an insurance claim online - will you get sent a simple HTML form to fill in, or a DOCX which won't render?
What vital information or services are forbidden to you due to being trapped in PDFs or horrendously complicated web sites?
Are you developing public services? Or a system that people might access when they're in desperate need of help? Plain HTML works. A small bit of simple CSS will make look decent. JavaScript is probably unnecessary - but can be used to progressively enhance stuff. Add alt text to images so people paying per MB can understand what the images are for (and, you know, accessibility).
Go sit in an uncomfortable chair, in an uncomfortable location, and stare at an uncomfortably small screen with an uncomfortably outdated web browser. How easy is it to use the websites you've created?
I chatted briefly to the young woman afterwards. She'd been kicked out by her parents and her friends had given her the bus fare to the housing benefits office. She had nothing but praise for how helpful the staff had been. I asked about the PSP - a hand-me-down from an older brother - and the web browser. Her reply was "It's shit. But it worked."
I think that's all we can strive for.
Here are some stats on games consoles visiting GOV.UK
#HTML5 #web #WeekNotes #workMatt Hobbs (@TheRealNooshu@hachyderm.io)
@TheRealNooshuReplying to @TheRealNooshuInterestingly we have 3,574 users visiting GOV.UK on games consoles:
• Xbox - 2,062
• Playstation 4 - 1,457
• Playstation Vita - 25
• Nintendo WiiU - 14
• Nintendo 3DS - 16
20/22
x.com
Interestingly we have 3,574 users visiting https://t.co/CcU3PLPTpj on games consoles: • Xbox - 2,062 • Playstation 4 - 1,457 • Playstation Vita - 25 • Nintendo WiiU - 14 • Nintendo 3DS - 16 20/22
Buenas, gurizada! Corneteio de Porto Alegre, no Rio Grande do Sul. Trabalho com programação para Web, em especial com #WordPress e #PHP. Procuro compartilhar na rede assuntos de meu interesse: #música #Mac #Internet #Web #SCInternacional e #viagem. #introdução
(Please use "translation" option to read this #introduction in your language.)
New package 🎉
min — A minimalistic #web #framework with route grouping and middleware chaining
v0.1.0: https://github.com/arturovm/min
Check it out and let me know what you think! 🙌
github.com
A minimalistic web framework with route grouping and middleware chaining - arturovm/min