social.wildeboer.net is one of the many independent Mastodon servers you can use to participate in the fediverse.
Mastodon instance for people with Wildeboer as their last name

Server stats:

2
active users

#SmallWeb

11 posts10 participants0 posts today

New Kitten release

• Socket routes now have precendence in the router.

This stops wildcard page routes from capturing the default socket routes that Kitten creates to enable the Streaming HTML workflow.

e.g., Previously, the following route:

/videos/index_[slug].page.js

Could not connect to its default socket (/videos/default.socket) because default.socket would be captured by the [slug] parameter.

Now, it will work as intended as the /videos/default.socket (a socket route) has precendence over index_[slug].page.js (a page route).

Learn more about Kitten’s Streaming HTML workflow here:
kitten.small-web.org/tutorials

Enjoy!

:kitten:💕

What I absolutely adore about the indie/ personal/ small web: Everybody's approach is very different. There are super modern looking websites and there are the ones who seem to come straight out of the 1990's/ early 2000's. There are ones that are specially made to work on the oldest computers. There are ones with and ones without Java Script. Ones made by pro web devs and ones made my people who are just starting to learn the basics. There are people who've been there from the beginning and those who are very new. And everything in between. People of all ages, backgrounds, and walks of life.
In visiting personal websites you are seeing and experiencing the diversity of the world. And it's glorious!

#indieWeb #personalWeb #personalWebsite #smallWeb

New instance, so time for a re #introduction post!

Hi all, I'm Phillip! 👋 I just moved from infosec.exchange (I still love you Jerry 🫶) I'm a 20-something guy living with my gf somewhere in the U.S. unfortunately.

Professionally, I am a solo #it admin/automation engineer at a smaller company.

Unprofessionally, I am into #discgolf, #music, #reading, #houseplants, #homelab, #gaming, #SmallWeb, and more. Check out my omg.lol page in my bio if you'd like. Feel free to say hi!

While working on porting the Small Technology Foundation web site¹ to Kitten², I took the opportunity to pull out base Model and Collection classes that I’ll likely end up including in Kitten proper:

• Model: codeberg.org/small-tech/site/s
• Collection: codeberg.org/small-tech/site/s

To see them in use, here’s the base Posts class (with RSS generation) that extends Collection:
codeberg.org/small-tech/site/s

And here’s the concrete EventPosts collection class that extends Posts:
codeberg.org/small-tech/site/s

And the EventPost (showing an implementation of a calculated property):
codeberg.org/small-tech/site/s

So all this is possible (persisting and reading back typed model collections, etc.) thanks to JSDB¹ (JavaScript database), a zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database I wrote for the Small Web that persists to a JavaScript transaction log and is included as as first-class citizen in Kitten.

codeberg.org/small-tech/jsdb

And if you want to know how the magic mapping of classes happens, see the Database App Module:

codeberg.org/small-tech/site/s

PS. For a much gentler introduction to persistence in Kitten, see the Kitten Persistence tutorial:
kitten.small-web.org/tutorials

Enjoy! :kitten:💕

¹ small-tech.org
² kitten.small-web.org

New Kitten Release

• Automatic message routing: if the element that triggers an event on the client does not have a `name` attribute, Kitten now falls back to using its `id` instead to route the event to the correct server-side event handler on your live Kitten pages.

If neither attribute exists, Kitten will fail to route the message but no longer crash as it was due to a regression introduced when I implemented support for colons in element names.¹

kitten.small-web.org

For more details on Kitten’s live pages and automatic message routing, please see the Streaming HTML tutorial:

kitten.small-web.org/tutorials

Enjoy!

:kitten:💕

¹ A colon in an element name is ignored for message routing purposes, letting you, for example, give unique names to <details> elements, allowing more than one to be open at a time, while having their events be handled by the same handler.

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.

kitten.small-web.org

(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:

kitten.small-web.org/reference

Enjoy!

:kitten:💕

¹ Codeberg is an community-run ethical alternative GitHub. You can follow them on the fediverse at @Codeberg and visit them online at 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).

kitten.small-web.org

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.)

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 @ goodinternetmagazine.com!

(please boost if you can! <3)

goodinternetmagazine.comgood internet magazine | for the small webA print and digital magazine coming soon.

New Kitten release

• Fixes redirection from sign-in page when person is already authenticated.

kitten.small-web.org

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:

kitten.small-web.org/tutorials

Enjoy!

:kitten:💕

¹ 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: kitten.small-web.org/reference

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

ar.al/2020/01/01/in-2020-and-b

And that’s why I’m working on building the Small Web.

ar.al/2020/08/07/what-is-the-s

With ZERO funding from the EU and multiple rejections from NLNet/ngi (because they still don’t get it).

ar.al/2022/10/20/nlnet-grant-a

(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.)

ar.al/2024/06/24/small-web-com

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.)

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.)

💕

Aral Balkan · In 2020 and beyond, the battle to save personhood and democracy requires a radical overhaul of mainstream technologyWe stand at the precipice of reverting from being people to being property again, hacked via a digital and networked backdoor, the existence of which we continue to deny at our peril.

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.

kitten.small-web.org

For more details, see the Valid File Types section of the Kitten reference¹ and the Dynamic Pages tutorial².

Enjoy!

:kitten:💕

¹ kitten.small-web.org/reference
² kitten.small-web.org/tutorials

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).

kitten.small-web.org

Enjoy!

:kitten:💕

¹ e.g., See codeberg.org/small-tech/site/s (markup) and codeberg.org/small-tech/site/s (handler) and codeberg.org/small-tech/site/s (model class method).

² See Streaming HTML tutorial: kitten.small-web.org/tutorials (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: htmx.org

⁵ Kitten Markdown pages reference: kitten.small-web.org/reference

⁶ See Session tutorial: kitten.small-web.org/tutorials

😺 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!

:kitten:💕

¹ kitten.small-web.org