#SmallTechnologyFoundation

2025-05-26

👋🤓 Goodbye Site.js, Hello Kitten!

I started working on creating a Small Web¹ server (a peer-to-peer Web server) six years ago² with Site.js.

Building Site.js was my first attempt. And it resulted in:

• Auto Encrypt (automatic Let’s Encrypt certificates): codeberg.org/small-tech/auto-e

• Auto Encrypt Localhost (automatic localhost TLS certificates): codeberg.org/small-tech/auto-e

• @small-tech/https (drop-in Node.js https module replacement with automatic TLS certs everywhere): codeberg.org/small-tech/https

• JSDB: In-process, in-memory JavaScript database that persists to append-only JavaScript logs: codeberg.org/small-tech/jsdb

As Site.js reached an evolutionary dead-end, and as I learned from my experiements with replicated data types that replicated data types are *not* a prerequisite for a decentralised web (actual topological decentralisation and ease of use are), I started writing a new server/platform called Kitten from scratch while still making use of the tried and tested modules listed above.

Last week, I switched over our last site using Site.js to Kitten and, with that, today I’ve sunset³ Site.js:

sitejs.org

For its successor, please see Kitten:

kitten.small-web.org

If you want to support our work at the Small Technology Foundation, please consider becoming a patron:

small-tech.org/fund-us

:kitten:💕

¹ ar.al/2024/06/24/small-web-com
² ar.al/2019/08/26/introducing-s
³ Using our instance of Look Over There!: look-over-there.small-web.org

#SiteJS #SmallWeb #SmallTech #peerToPeerWeb #SmallTechnologyFoundation #AutoEncrypt #AutoEncryptLocalhost #JSDB #JavaScriptDatabase #https #TLS

Detail of Site.js web site:
Illustation of woman lying down with laptop. On screen is a twig with two green leaves.

Site.js
Small Web construction set.
Site.js is deprecated and no longer being actively maintained. Much of it lives on in Kitten.
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).
2025-04-17

I’m going through our events page on the Small Technology Foundation web site¹ and porting the entries there to the new version of our web site that I’m building in Kitten² and it’s depressing how many event sites have just disappeared.

Thank goodness for archive.org.

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

#links #archiving #web #SmallTechnologyFoundation

2025-02-10

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

kitten.small-web.org/reference

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

¹ small-tech.org
² sitejs.org
³ gohugo.io/
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 kitten.small-web.org/reference).
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] }
    }
  ]
2024-11-16

I just updated the Small Technology Foundation funding page to use Ethereum instead of Nano as the cryptocurrency option since Ethereum is now proof-of-stake instead of the planet-destroying proof-of-work (hello, Bitcoin and co.) and because Nano is apparently a pain to obtain (had a few folks complain).

So if you want to donate anonymously, this should make it easier to do so.

Your donations do help. So thank you! :)

small-tech.org/fund-us/

💕

#SmallTechnologyFoundation #SmallTech #SmallWeb

2024-07-19

And here are links to the things mentioned in the previous post:

• Accessibility For Everyone site: accessibilityforeveryone.site
• Kitten: kitten.small-web.org
• Domain: codeberg.org/domain/app (not ready for use yet)

And reminder that you should use OBS instead of GNOME’s built-in screen recorder if you don’t want to lose work: obsproject.com/

#SmallWeb #Kitten #Domain #AccessibilityForEveryone #a11y #book #ABookApart #SmallTechnologyFoundation

2024-06-21

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.

small-tech.org

PS. We have zero public funding (NLNet, ngi, etc.) and we don’t take VC or Big Tech sponsorship. Fund us: small-tech.org/fund-us

¹ kitten.small-web.org
² codeberg.org/domain/app

#SmallTechnologyFoundation #SmallTech #Kitten #Domain #humanRights #privacy #web #tech

2024-04-17

@lilithsaintcrow @laguiri Well, some of us are trying and it would be amazing if folks actually funded us so we could continue to exist and do our work.

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

small-tech.org

small-tech.org/fund-us

#SmallWeb #SmallTechnologyFoundation #funding #foss #commons

2023-02-05

If you're talking anti-Big Tech, you're talking Small Tech!

Lightning Talk mentioning @aral & @laura #SmallTechnologyFoundation

#fosdem #fosdem23

FediFollows has moved!FediFollows@mastodon.online
2022-06-15

The Small Technology Foundation researches and promotes online services designed for human beings rather than corporate profits.

You can follow their live streaming account at:

➡️ @fedi

and you can follow the founders at

➡️ @laura

➡️ @aral

The Small Technology Foundation's website is at:

small-tech.org

#SmallTechnologyFoundation #Technology #Fediverse #FOSS #Online #Computing #Web0 #SmallTech #SmallWeb #Privacy #Activism #NGOs #LiveStreaming #LiveStream #LiveStreamers

2022-06-15
2021-12-30

@aral I regularly look with amazement at all you do with the #SmallTechnologyFoundation so I completely understand the trouble of finding time!

2020-04-28

After over a year of work – and as we’re getting closer to the next release of Site.js – I think I’m now comfortable enough to start giving the project and the organisation a bit more visibility so I’ve just mirrored the main repositories on GitHub. We will be using those for issues and pull requests in the future.

github.com/small-tech

#SiteJS #SmallTechnologyFoundation

2020-01-15

Apple approved the Better Blocker iOS app after we censored the release notes as per their instructions (ar.al/2020/01/14/apple-app-rev).

So, we’re now at Step 4 of our plan (ar.al/2020/01/13/apple-says-no).

We’re going to leave the app up for two weeks to give people a chance to update before removing it from the App Store and submitting it under our Small Technology Foundation account.

#BetterBlocker #SmallTechnologyFoundation

2020-01-14

The saga continues… Apple App Review says “maybe”: the whims of trillion-dollar gatekeepers

ar.al/2020/01/14/apple-app-rev

#BetterBlocker #Apple #SmallTechnologyFoundation

Client Info

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