New Kitten release
• Added instructions to Kitten’s Settings app for how to set up a webhook at Codeberg¹ so that pushing to your main branch automatically updates your deployed server.
(Would you like me to add instructions for GitHub also? Hmm, let me think a moment… No.)
You can also find the relevant information in the Kitten reference:
https://kitten.small-web.org/reference/#webhook
Enjoy!
¹ Codeberg is an community-run ethical alternative GitHub. You can follow them on the fediverse at @Codeberg and visit them online at https://codeberg.org
New Kitten release
• Change: Add Kitten’s own routes (that every Kitten app inherits) for the Small Web protocol namespace (/) as well as for Kitten’s reserved namespace (/
) first, before app-specific routes so that a wildcard route in the form, e.g., [anything]_[anythingElse].get.js won’t lock you out of the Settings site for your app (at /
/settings).
Enjoy!
(To update, run `kitten update` from your terminal on your development machine or manually update deployment servers from //settings/kitten/ or just wait a few hours for them to update automatically. You can also just run the installation command again.)
Was talking with a friend of mine in academia here in Ireland about introducing one of the universities in Dublin to the concept of the Small Web and Small Tech. She asked her faculty if they’d be interested.
Their response?
“We’re not looking to change things.”
I shit you not.
(In case you’re wondering why we’re fucked or who exactly is complicit. These are folks that have multi-million euro relationships with Big Tech.)
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
I wrote this five years ago:
“Democracy or capitalism? Pick one.
If, like me, you grew up in the 80s, you probably unthinkingly accepted the neoliberal maxim that democracy and capitalism go hand-in-hand. This is one of the greatest lies ever told. Democracy and capitalism are polar opposites.
You cannot have a functional democracy and billionaires and trillion-dollar corporate interests and Silicon Valley’s Big Tech misinformation and exploitation machinery. What we’re seeing is the clash of capitalism and democracy and capitalism is winning.
Are we past a tipping point? I don’t know. Perhaps. But we can’t think like that.
Personally, I’m going to keep working to effect change where I feel I can be effective: in creating alternative technological infrastructure to support individual freedoms and democracy.
We’ve already laid the infrastructure of techno-fascism. We’ve already created (and are creating) the panopticons. All the fascists need to do is move in and take the controls. And they will do so democratically, before destroying democracy, just as Hitler did.
And if you think the 1930s and 40s were something, remember that the most advanced tools to amplify the destructive ideologies of the time were less powerful than the computers you have in your pockets today. Today we have machine learning and are on the brink of unlocking quantum computing.
We must ensure the 2030s are not like the 1930s. Because our advanced centralised systems of data capture, classification, and prediction plus a hundred years of exponential increase in processing power (note: I do not use the word “progress”) mean the 2030s will be exponentially worse.
Whoever you are, wherever you are, we have a common enemy: the nationalist international. The problems of our time transcend national borders. The solutions must also. The systems we build must be both local and global at once. The network we must build is one of solidarity.
We created the present. We will create the future. Let’s work together to ensure that that future is the one we want to live in ourselves.”
– In 2020 and beyond, the battle to save personhood and democracy requires a radical overhaul of mainstream technology
And that’s why I’m working on building the Small Web.
https://ar.al/2020/08/07/what-is-the-small-web/
With ZERO funding from the EU and multiple rejections from NLNet/ngi (because they still don’t get it).
https://ar.al/2022/10/20/nlnet-grant-application-for-domain-rejected/
(That’s from 2022. We were also rejected in 2024 for my work on Kitten, Domain, and Place as outlined in my talk, linked below, but I was too tired to write about it again.)
https://ar.al/2024/06/24/small-web-computer-science-colloquium-at-university-of-groningen/
So for fuck’s sake, if you agree with my vision for a technological (and thus societal) future different from the hellscape we currently inhabit, and want to help us explore one possible path towards it, please fund our damn work. (Because, clearly, the EU is adamant about not doing so.)
https://small-tech.org/fund-us/
Other ways to help:
- If you know of folks that are ethically compatible who offer no strings funding, please try to secure some for us (my time is 100% spent on coding at the moment).
- If you know of conferences that pay their speakers, ask them to have me speak on the Small Web. It can be as technical or non-technical as you like and I won’t do it for free but I’m happy to accept, within reason, what they can afford (in addition to travel and accommodation being covered) and any fees received go to Small Technology Foundation, our not-for-profit.
- Help share this far and wide.
Once Domain is released and we have the first Small Web host running on small-web.org – hopefully the first of many that will be run by other folks in the future – and we start taking commercial sign-ups for Small Web places, we should eventually have the money problem solved (because apparently that’s a problem you have to solve to gain the privilege of working for the common good in our world because our system is unabashedly shortsighted).
So, yeah, anyway, g’morning! How’s your day going so far? :)
(You made it this far? You deserve a hug. And don’t worry, I’m just venting. Things will get better. It’s just frustrating swimming upstream all the time.)
Yeah, listen, I don’t care how many million viewers it has, don’t invite me to your podcast if you feel it’s fine to debate whether trans people should exist or if vaccines work or not. No, thank you.
New Kitten release
• Fixes issue with routes where dynamic routes with file names that had more than two extensions were not recognised as the correct type of route. e.g., A route called index.xml.get.js would previously have been treated as a static route instead of a dynamic GET route.
For more details, see the Valid File Types section of the Kitten reference¹ and the Dynamic Pages tutorial².
Enjoy!
¹ https://kitten.small-web.org/reference/#valid-file-types
² https://kitten.small-web.org/tutorials/dynamic-pages/
The Goal Can't Be About Money!
In this episode, Aral Balkan exposes how billionaire internet, turning us into products, and why reclaiming our digital rights is the fight of our lifetime.
Watch or listen to the full episode wherever your podcast is.
https://youtu.be/Hr3POZzAH-g
@aral #theinternetiscrack #podcast #bigtech #smalltech #tech #power
LLM's Steal From Us!
In this episode, Aral Balkan exposes how billionaire internet, turning us into products, and why reclaiming our digital rights is the fight of our lifetime.
Watch or listen to the full episode wherever your podcast is.
https://youtu.be/Hr3POZzAH-g
@aral
#bigtech #smalltech #tech #theinternetiscrack #podcast
We Must Fight Back!
In this episode, Aral Balkan exposes how billionaire corporations have seized control of the internet, turning us into products, and why reclaiming our digital rights is the fight of our lifetime.
Watch or listen to the full episode wherever your podcast is.
https://youtu.be/Hr3POZzAH-g
@aral
#theinternetiscrack #podcast #bigtech #smalltech #power #humanrights
New Kitten release
• You can now use key paths in the names of your client-side live components and these will automatically be transformed into object hierarchies on the server for you.¹
• Self heals zombie live pages (see Streaming HTML workflow²) if they return to life due to client-side browser cache.³
• Removes htmx⁴ headers from `data` property into separate `header` property in Kitten Page events and the data your Kitten Page message handlers receive.
• Automatically passes references to the live page object (if any) and the request and response objects to the layout templates of Markdown pages⁵ (so you can, for example, check if `request.session.authenticated`⁶ is true from the your layout template and customise the layout accordingly).
Enjoy!
¹ e.g., See https://codeberg.org/small-tech/site/src/branch/kitten/admin%F0%9F%94%92/news/index_%5Boptional-postId%5D.page.js#L356 (markup) and https://codeberg.org/small-tech/site/src/branch/kitten/admin%F0%9F%94%92/news/index_%5Boptional-postId%5D.page.js#L173 (handler) and https://codeberg.org/small-tech/site/src/branch/kitten/app_modules/database/database.js#L95 (model class method).
² See Streaming HTML tutorial: https://kitten.small-web.org/tutorials/streaming-html/ (There’s actually more to it now but I haven’t had a chance to document the new class-based and event-driven live page workflow yet. It’s experimental but working very well for me so far so I will do so shortly.)
³ When a person leaves a live/connected page (a page connected to its default web socket), we clean up and remove that live page from memory. However, browsers being what they are, cache the page on the client. If a person uses the back/forward buttons to return to the page, the browser will serve the cached source from memory, which has the old page ID, for the page that no longer exists in Kitten’s memory. So now we have a problem. The only way to recover from this is to tell the page to reload itself. So we accept the WebSocket connection, send a command to the page for it to reload itself, and then close the socket. That makes the stale page self heal by replacing itself with a fresh one. Yay, go us!
⁴ HTMX: https://htmx.org
⁵ Kitten Markdown pages reference: https://kitten.small-web.org/reference/#markdown-pages-page-md-files
⁶ See Session tutorial: https://kitten.small-web.org/tutorials/sessions/
Regaining Control!
Those who own your data own you! In this episode, Aral Balkan exposes how billionaire corporations have seized control of the internet, turning us into products, and why reclaiming our digital rights is the fight of our lifetime.
Watch or listen to the full episode wherever your podcast is.
https://youtu.be/Hr3POZzAH-g
@aral
#smalltech #bigtech #democracy #information #algorithm #tech
Fun Kitten¹ fact
Did you know that Kitten has a built-in HTML validator that checks your markup for validity and accessibility issues, etc.?
You’re informed of validation errors in not just terminal but also in your browser’s web developer panel. And, if you select the “Show validation issues on page” link from a validation error in the web developer panel, Kitten will show the validation errors in place on your page.
This helps me catch issues with my markup all the time and I hope it helps you too.
Enjoy!
We Must Create choice!!
Those who own your data own you! In this episode, Aral Balkan exposes how billionaire corporations have seized control of the internet, turning us into products, and why reclaiming our digital rights is the fight of our lifetime.
Watch or listen to the full episode wherever your podcast is.
https://youtu.be/Hr3POZzAH-g
@aral
#theinternetiscrack #podcast #monopoly #bigtech #tech #smalltech
Those who own your data own you! In this episode, Aral Balkan exposes how billionaire corporations have seized control of the internet, turning us into products, and why reclaiming our digital rights is the fight of our lifetime.
Watch or listen to the full episode wherever your podcast is.
https://youtu.be/Hr3POZzAH-g
@aral
#podcast #bigtech #smalltech #people #farming #privacy #monopoly #power #data
A big thank you to @edwardhong for submitting three pull requests¹ for the Kitten documentation in the past day.
Appreciate your help in making Kitten better, man :)