#SmallTech

2025-05-21

So in 2019 we were debating the motion “Entrepreneurs today do more harm than good” against the provost and one of the professors at Singapore Management University and we managed to flip an initial audience vote of 28% for / 72% against to 52% for / 48% against, thereby winning the debate.

The video of the event was locked in Facebook so, as part of my work on the new version of the Small Technology Foundation website, I just liberated it.

You can watch it at:
vimeo.com/1086336391

#BigTech #SiliconValley #surveillance #capitalism #PeopleFarming #debate #SmallTech

2025-05-14

Because we love a smooth onboarding flow, the sign-up process at decent.email is now easier. Account creation is not fully automated and still requires a nice human touch 😊

#email #BuyFromEU #GoEuropean #BigTech #SmallTech

small circle 🕊 in calmnesssmallcircles@social.coop
2025-05-14

Ayllu v0.4 has been released!

#Ayllu is a code forge designed for performance, simplicity and hackability. The #AGPL-licensed project by Kevin Schoon can be considered a #SmallTech / #SmallWeb initiative.

You can find the Ayllu code, hosted on Ayllu at: ayllu-forge.org/ayllu/ayllu

Read all about new features in the release notes. Also, are you good at #UX and designing UI's with plain #HTML and #CSS?

Then how would you design the UI for #git blame, asks Kevin.

kevinschoon.com/blog/announcin

Greg Laudemaneduity
2025-05-13

@Daojoan it's going to take a lot more than "radical transparency." Tech companies are totally disconnected from the values and concerns of regular folks and treats them as things to be exploited. It's going to take . I don't think tech companies, especially the larger ones, have a clue or care to get one. We need

2025-05-10

…And there are more interesting tid-bits in there too:

• See how I’m pushing Kitten’s Streaming HTML to its logical conclusion and streaming JavaScript from the server to the client to keep all logic on the server while implementing a client-side feature (copy to clipboard): codeberg.org/small-web/look-ov

• Following on from that, note how the Toast component that’s triggered when something is copied looks (under the hood, Streaming HTML is htmx + WebSockets + some Kitten-specific magic and glues it all together and adds syntactic sugar): codeberg.org/small-web/look-ov

• Finally, check out how layout components and slots work: codeberg.org/small-web/look-ov

I think that’s all the intersting stuff I can spot at the moment.

Have fun!

:kitten:💕

#Kitten #SmallWeb #SmallTech #SmallTechnologyFoundation #LookOverThere #code #StreamingHTML #htmx #websockets #nodeJS #web #dev

2025-05-10

You can really get a feel for what authoring a simple web app is like in Kitten (with the latest techniques/features), by checking out the source code for Look Over There!, the multi-site forwarding app with TLS forwarding support that I built recently:

codeberg.org/small-web/look-ov

There’s an instance of it I’m hosting for us at look-over-there.small-web.org to forward our archived sites – e.g., web0.small-web.org – to archive.org so we don’t break links on the web.

If you want to run it locally, install Kitten (kitten.small-web.org) and then type: kitten run codeberg.org/small-web/look-ov (you can also clone the git repo manually and just run kitten from the working directory).

Interesting places to look:

• The index page (shows use of a Markdown page that imports and uses Kitten components) codeberg.org/small-web/look-ov

• The admin page (notice the lock emoji at the end of the name? That’s all you need to add to a route to make use of Kitten’s automatic authentication. Since every Kitten site/app is protected by public-key encryption and we don’t have the concept of users (each site/app on the Small Web is owned by one person), the whole process can be automated for you. codeberg.org/small-web/look-ov

• The Redirection component. This is what does all the hard work on the admin page. Along with the admin page, they showcase Kitten’s new/alternative (and as-of-yet mostly undocumented) class-based component model with event bubbling on the component hierarchy on the server. (Since this is resource intensive, it’s recommended you use it only when implementing authenticated routes where you’re sure only the site’s owner will be accessing the route.) codeberg.org/small-web/look-ov

In any case, as Kitten and the rest of the Small Web ecosystem matures further, I’ll be documenting all this better and there will be even more examples and tutorials but, in case you’re one of those inquisitive types and you want to see what web development can be like if you’re *not* building centralised people farming machinery for Big Tech, have a play with Kitten.

:kitten:💕

#Kitten #SmallWeb #SmallTech #SmallTechnologyFoundation #LookOverThere #code #web #dev

Screenshot of the Look Over There! admin interface showing five redirections to archive.org (for cleanuptheweb.org, comet.small-web.org, better.fyi, ind.ie, and web0.small-web.org). There’s also a simple form for adding a redirection and instructions:

Look Over There!⁠ 
(With apologies to Jaida Essence Hall)

Kitten logo: a minimalist illustation of an adorable kitten’s head with pink nose and ears. Made with Kitten
Instructions

Create a DNS A record pointing to 157.90.155.45 for the domain you want to redirect.
Wait for your DNS changes to propagate (ping the domain to check).
Add your redirection using the form below.
Due to Let’s Encrypt rate limits, you may add 93 more redirections (maximum 10 every 3 hours).
Dr PenDrPen
2025-05-09

I loved seeing the term recently. Not sure what it means *officially* but I interpret it as low footprint self hosted. That's my thing. Get code patterns already available to hack and use in my info solutions. I'm working atm on online solutions for writing to go with the I've made. I'd like to get going but need more knowledge to get it to download a Word or pdf doc so in the meantime I've got going in . Fun times.

2025-05-09

TL;DR: I’m excited about recent developments with the Small Web project. It’s all coming together 💕

***

The way I approach what I’m building with the Small Web is quite intuitive. I’ve been making things with computers since I was seven years old so it’s not work or a profession for me – it’s just something I’ve always done. And with what I’m building now – which is likely what I’ll be working on for the rest of my life – I’m giving myself the room to let the project breathe. If some foundational piece I need is not quite there yet, I’m OK spending a few years working on a different part of the project. It’s not easy to do financially to keep something like this going for six years now but I don’t know any other way to let it be what it can be.

And it is starting to pay off.

Just read an exciting announcement lower in the stack that means lots of extra work for me but will drastically improve the ease of getting started and the decentralisation properties of the Small Web. And another development that has taken a few years to come about independently (although this time prodded by yours truly) will mean Small Web places require zero admin.

Also, because of these developments – and with Laura’s help in brainstorming this morning – I believe we finally have the names of the three components just right.

Look forward to hearing lots of details about all this in the coming days and months.

Since the changes I need to make are tied to the timeline of a third party, this means the Kitten hosting service and the peer-to-peer personal social web app written in Kitten (both of which now have their final names, which I’ll announce properly later) will launch in 2026.

Just a quick update to let you know where we are with the Small Web project.

PS. If you want to support our work, please consider becoming a patron: small-tech.org/fund-us/

#SmallWeb #SmallTech #statusUpdate

2025-05-08

New Kitten Release 🥳

To OCSP¹ or not to OCSP…

• Turns on OCSP support in the server only if the site’s certificate has the OCSP stapling extension.

This is to support both servers that still have OCSP stapling in their certs as well as new ones that don’t. (Let’s Encrypt sunset OCSP support yesterday and there is a transitionary period where Kitten servers will have both types of certificates. This update is to ensure we support both without issues.)

kitten.small-web.org

Also updated, if you’re interested in playing lower in the stack:

• @small-tech/https: codeberg.org/small-tech/https
• @small-tech/auto-encrypt: codeberg.org/small-tech/auto-e

Enjoy!
:kitten:💕

¹ Online Certificate Status Protocol (en.wikipedia.org/wiki/Online_C). Yes, I hate abbreviations too :)

#Kitten #SmallWeb #SmallTech #KittenRelease #TLS #OCSP #OCSPStapling #LetsEncrypt

Baessito ☭🇧🇷🇵🇸🇺🇳pBaesse@bolha.one
2025-05-08

"A #soberaniaDigital não significa tecnologia para nações soberanas, significa tecnologia para pessoas soberanas.

A tecnologia nas mãos de uma classe bilionária europeia [ou qualquer outra nação (edit)] dificilmente é melhor do que a que temos agora.

Liberte-a, dê às pessoas controle, código aberto, descentralize-a, remova pontos de estrangulamento e gatekeepers, criptografe todas as coisas, remova a indústria de anúncios #Surveillance da equação, habilite #SelfHosting e #SmallTech."

@ilumium eupolicy.social/@ilumium/11447

2025-05-08

#DigitalSovereignty doesn't mean tech for sovereign nations, it means tech for sovereign people.

Tech in the hands of a European billionaire class is hardly any better than what we have now.

Free it up, give people control, open source it, decentralise it, remove choke points and gatekeepers, encrypt all the things, remove the #SurveillanceAds industry from the equation, enable #SelfHosting and #SmallTech. And then let's talk #GoEuropean.

2025-05-07

New Kitten Release 🎉

• Improved instructions for adding a git webhook on Codeberg in Kitten Settings → App.

kitten.small-web.org

Enjoy!

:kitten:💕

#Kitten #KittenRelease #SmallWeb #SmallTech #web #dev #git #webhook #Codeberg #Forgejo

Screnshot of Kitten’s Settings → App screen:

App

Version
ab731d5
Local path
…/kitten/.local/share/small-tech.org/kitten/deployments/1746560028827-codeberg.org.aral.aral-temporary-static-site Copy
Webhook

You can set up a webhook on your remote Git source code repository that updates the site whenever you perform a certain git action (e.g., push to main).

e.g., Instructions for Codeberg:

1. From your project’s repository, follow the Settings link.
2. In the Settings menu, select Webhooks.
3. Press the Add webhook button.
4. From the button’s pop-up menu, select Forgejo.
5. Enter the Webhook URL from below into the Target URL field.
6. Leave the HTTP method set to POST.
7. Set the POST content type to application/x-www-form-urlencoded.
8.Leave the Secret field empty.
9. Set Trigger on to Push events
10. Set Branch filter to main (or set to the branch you want to deploy from)
11. Enter the Webhook secret from below into the Authorization header field.
12. Leave the Active checkbox checked.
13. Press the Add webhook button.

Once the webhook has been successfully added, your site should update whenever you push to main.
2025-05-06

New Kitten Release 🥳

• Implements cascading archives support

kitten.small-web.org/reference

Cascading archives¹ is useful if you have a static archive of the old version of your site and you don’t want to host it somewhere else and use the 404→307 (evergreen web) technique (kitten.small-web.org/reference) (the latter is useful if the old version of your site is a dynamic site and you cannot take a static archive of it).

If a URL cannot be found on your app, Kitten will trying it in the archive folders:

__archive__1
__archive__2
__archive__3

(In that order.)

So you can three older static versions of your site served without breaking older URLs unless they are shadowed by newer URLs in your site/app.

Enjoy!

:kitten:💕

¹ This is a feature that I originally implemented in Site.js (that’s going to be shut down tomorrow when Let’s Encrypt stops issuing certificates with OCSP-stapling – I don’t have the bandwidth to maintain two servers/frameworks; Kitten is Site.js’s successor). I’m planning on implementing this differently in Kitten going forward (so you can use the Settings interface to upload a zipped archive and it will serve it) but I need this for my own site for tomorrow’s shutdown so we have this simpler implementation in the meanwhile. Leaving things to the last minute? Who? Me? Never! ;)

#Kitten #SmallWeb #SmallTech #archiving #evergreenWeb #dontBreakTheWeb #links #URLs

2025-05-06

Just documented Kitten’s <page> tag in the reference. It should be comprehensive unless I’ve missed something :)

kitten.small-web.org/reference

:kitten:💕

#Kitten #SmallWeb #SmallTech #pageTag #documentation

2025-05-06

@theverge @google-news-theverge @Vivaldi @vivaldi_browser @jon @jonvt Opera is lying in the comparison from its article!
You 𝗰𝗮𝗻 𝚜𝚎𝚊𝚛𝚌𝚑 𝚏𝚘𝚛 𝚝𝚊𝚋𝚜 and also 𝚑𝚊𝚟𝚎 𝚊𝚌𝚌𝚎𝚜𝚜 𝚝𝚘 𝚛𝚎𝚌𝚎𝚗𝚝𝚕𝚢 𝚌𝚕𝚘𝚜𝚎𝚍 𝚝𝚊𝚋𝚜!
Why did they do this?! Was this a mistake?

press.opera.com/2025/05/06/ope

lh7-qw.googleusercontent.com/d

#browser #VivaldiBrowser #OperaBrowser #tech #smalltech #BigTech

2025-05-05

I just whipped up a simple icon search for Kitten Icons (based on Phosphor Icons). It’s not complete yet – I have a few other things to do before I can get back to it today – but you can play with it here:

kitten.small-web.org/reference

And see the code for it here:

codeberg.org/kitten/site/src/b

I popped the event handler into the Markdown page itself. Not the cleanest but works in a pinch:

codeberg.org/kitten/site/raw/b

#Kitten #icons #PhosphorIcons #iconExplorer #web #dev #markdown #components #StreamingHTML #SmallWeb #SmallTech #reference

Screenshot of the work-in-progress icon explorer on the Kitten web site’s reference section showing the icon results for the search term “animal”: Barn, Bird, Butterfly, Cat, Cow, Dog, Fish, FishSimple, Horse, LinuxLogo, PawPrint, Rabbit.

Page content follows after the icon explorer component:

In that namespace, you browse the icons in three ways:

Directly, by name, e.g., kitten.icons.Cat
In categories, e.g., kitten.icons.categories.nature.Cat
Using tags, e.g., kitten.icons.tags.kitten.Cat
The categories and tags objects are authoring-time aids. While you can use them…
2025-05-05

New Kitten Release 🎉

• Breaking change: `kitten.icons` namespace is now flat (not alphabetically sharded). This should make it much nicer to author with. (The alphabetical sharding was an attempt to work around a size limitation with large objects when using automatic type inference in the TypeScript language server. Since I’m now generating a TypeScript type definition for the entire data structure, the limitation no longer applies and thus the sharding is no longer necessary.) kitten.small-web.org/reference

• The `tags` and `categories` hash tables on `kitten.icons` – which are included as authoring-time aids to help you find icons using metadata searches in your editor – are now marked as unenumerable properties so they no longer pollute the root icons namespace so you can, for example, safely iterate through all icons with a simple loop.

• I’ve started a change log even though Kitten is still pre-release so there is a better place to find them than looking through my Mastodon release notification posts :) codeberg.org/kitten/app/src/br

Enjoy!

:kitten:💕

#Kitten #KittenRelease #SmallWeb #SmallTech #icons #svg #PhosphorIcons #web #dev

2025-05-01

New Kitten Release 🥳

kitten.small-web.org

(Run `kitten update` to update your dev machines. Production machines will automatically update in a couple of hours.)

• You can now add a generic script block to your markdown pages (see mastodon.ar.al/@aral/114432417)

• Markdown pages can now be `KittenPage` instances and attach `KittenComponent` instances (so you get a full server-side component hierarchy with an event-based workflow; ideal for authenticated pages where you can be use only the author of the page will be accessing them and thus the additional memory and processing overhead are not issues. Isn’t the Small Web great? Only having instances of one makes it possible to optimise so many things for the human experience instead of vertical scale of the data farming machine.)

• Two new examples showcase the new features: codeberg.org/kitten/app/src/br and codeberg.org/kitten/app/src/br

• Attributes with object values are no longer serialised into the DOM (but your components’ render functions will continue to receive them, of course.) This is because only string values make sense for attributes in the context of the HTML DOM. (You can still, of course, have stringified representations of objects in attributes, as used by the `data` attribute to pass data from nodes to event handers on the server.)

#Kitten #SmallWeb #SmallTech #kittenRelease #markdown #scripting #OOP #eventModel #web #dev

2025-04-30

Morning all! I was supposed to join @screwlisp for their Lispy Gopher Show podcast yesterday but time zone differences meant I had to send a recording instead which they discussed with questions from their mud (yep, it’s a geeky community) :)

I touched on the history of computing, the current challenge to our human rights and democracy with technofascism, and how the Small Web is one attempt to safeguard our freedoms by creating a peer-to-peer web owned and controlled by everyday people who use technology as an everyday thing. (And the role of design and simplicity in making that possible.)

Anyway, here’s the full recording I sent (as it skips around a bit in the show):

vimeo.com/1079992713

And here’s the recording of the show itself with commentary by screwlisp and the community:

communitymedia.video/w/kTjUgHS

Thanks for having me on and sorry I couldn’t be there in person.

💕

#LispyGopherShow #lispyGopherClimate #screwlisp #podcast #SmallWeb #SmallTech #Kitten #Domain #Place #peerToPeer #web #HumanRights #Democracy #design

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst