So Apple destroys pianos with a hydraulic press, Microsoft invents TotalSurveillance™️ and Google tells us to put glue in our pizza and eat at least one rock a day.
Kitten now has a lovely new multi-page Settings screen and… drumroll… a new 🐢 interactive shell (REPL) for you to play with the running state of your Small Web site/app/place and debug your app, inspect/manipulate its database, etc.
I plan on recording demos of each of them tomorrow but you can play with them now.
And here’s a little tutorial to get you started with the shell:
If you design a system such that you cannot differentiate people from corporations and bots and that’s your defense for calling all of them “users”, you’ve designed a system that conflates people – who are mortal, have feelings, can feel pain and be hurt and who have human rights that must be protected – with the very entities that oftentimes exist to exploit them.
Design for people. Call them people. All else is secondary.
Lots to do yet but the new Kitten¹ settings section (that’s common to all Kitten apps / Small Web places) is coming along nicely. (With the general style/layout borrowed from Domain².)
(It’s currently a single page and I’m breaking it up into multiple ones because it’s time.)
Once I’m done with this I should really record a screencast of Kitten’s new backup and restore feature/data portability.
Trust me, you will save thousands of dollars if you never got excited about #AI hardware and #Tech nor go out and buy an AI hardware thing that would have been better as an app. Same for phones. Seriously, save the money. It will go far past the honeymoon phase faster than you will know. If your phone still works, you honestly don't need a new one. If you use #SmallTech you don't have to upgrade your laptop every year. Best thing I ever did was save my money and give it to writers and audiobook narrators instead of AI hardware.
• Forgetting to pass a custom class that’s persisted in your database in your JSDB.open() call now throws instead of corrupting your database by falling back to using an untyped object.
• Added JSDF ver. 2 to 3 database migration script (i.e., JSDB version 2-4 to 5)²
I think we're focused on the wrong thing when we look at what tech works for a company like Amazon or Facebook or Netflix.
We should be looking at what tech works when you don't have a small army of staff engineers optimizing it. I want to know what I can scale without paying someone a half million dollar salary to do it.
There should be more case studies on things that don't have a billion-dollar company propping them up, humming along quietly on a cheap-ass VPS somewhere.
100% test coverage doesn’t mean your code’s bug free but it did just lead me to find and fix an issue in JavaScript Database (JSDB)¹ with a code path that wasn’t being hit that I would have otherwise missed because it was causing the relevant test to pass.
¹ JSDB is a zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database for the Small Web that persists to a JavaScript transaction log (an append-only log).
To really drive home the above 👆 point that 100% test coverage does not mean ‘bug free’, just found a bug in JSDB¹ 5.0.0 where running JSON.stringify() on a complex custom object (actually: the automatic Proxy of the custom object created by JSDB) results in an error.
Already have a failing test and about to implement fix.
(It’s at this point where the test harness is invaluable.)
Realised last night that JavaScript Database (JSDB) doesn’t run the constructor on persisted custom objects (https://codeberg.org/small-tech/jsdb#custom-data-types) when deserialising them because I didn’t know that you apparently have to define your constructor manually when using Object.create().
Will fix it today but it’s something to watch out for if you’re using Object.create() directly.
EU leaving Fediverse (Mastodon & PeerTube) because no one wants to operate the servers
“In recent years, a total of 40 institutions have opened an account with EU Voice, including the EU Data Protection Supervisor, the European Court of Justice and the EU Commission. The video platform, on the other hand, was used by six institutions … the EU institutions were thus the largest group of public institutions in the Fediverse worldwide.”
So what do we need, ideally? The equivalent of VC but for tech for the common good.
Pick ten organisations working the common good and give them €5M each. Let them experiment. Let them pivot. Let them cooperate. The only thing you don’t let them do is exit. You can’t sell. Build something for the commons that will live on for the next ten, twenty, fifty years… if not more.
I said as much 5 years ago at the European Parliament:
Coming soon: it’s going to be trivial to deploy a different app on your Small Web server. Useful if you’re a dev and you’re playing around with different apps.
(Also, notice the speed at which deployment happens. I’m one step away from implementing this in Domain using pre-warmed Kitten instances – called toasty kittens – thereby bringing the time it takes to deploy your own Small Web place down to a handful of seconds.)
When I speak about spending the last few years “building infrastructure”, you might be wondering what sorts of things I’m talking about.
Here are some examples:
JSDB: an in-memory, in-process database that writes to a JavaScript append-only transaction log and which you can use as if you were interacting with regular JavaScript objects.
Similarly, Auto Encrypt Localhost does the same thing – in pure JavaScript, without using mkcert, etc. – for keeping your dev and production environments identical:
And while Kitten is new, it uses those elements and more as well as all the lessons learned building Site.js (https://sitejs.org) – going back five years.
All-in-all I’ve been working towards creating the Small Web—and Kitten, Domain, and Place—for half a decade and, on the greater problem of trying to formulate alternatives to Big Tech for the last decade. All without any funding from the commons/EU.
Introducing the Small Web, where you own and control your space online. Join Aral Balkan in a live coding demo using Kitten, a Small Web server empowering everyday folks to craft their own corner of the internet. Let's reclaim the web for people, not profits!
Watch: https://buff.ly/497SHNg and join us at the Conference!
#Shaarli is a bookmarking service in #FreedomBox that stores each bookmark as a comment in a single PHP file.
This is actually appropriate design (in the sense of appropriate technology). A good example of #smallTech design. A big tech bookmarking service would have used some NoSQL database technology such as Cassandra, not a simple flat file.
Shaarli works great for thousands of bookmarks. Who cares if it scales to millions or not? :blobcatgooglyshrug: