Small is Beautiful #2
Videos āµ Small is Beautiful āµ #2
Our recent work at Small Technology Foundation
Broadcast on January 7, 2021
We talked about Lauraās work on Better Blocker and Site.js Hugo templates, Margo de Weerdtās lovely illustrations for the photo blog template, and Aralās preliminary work on Place ā the fork of Site.js that heās working on specifically for the Small Web.
Transcript
Aral: Saying āgo liveā.
Laura: I see a ālive now, click to watchā. It might might crap out a little bit trying to load it whilst playing it, but I will just double check. I think it should be live.
Aral: Can you see it on yours? Itās still loading. Oh, yeah. Yeah, I can see it. Okay, great.
That means that we are live. Hi everyone. Iām Aral Balkan
Laura: and I am Laura Kalbag, and together. We are Small Technology Foundation, a teeny tiny not-for-profit organisation based here in Ireland. Heās upstairs yet again, I am downstairs.
Aral: And this is a weekly live stream that we started right before the end of the last year that we are calling Small is Beautiful, and itās meant to be a very relaxed, very casual live stream. We are not preparing hugely for the episodes on purpose and the goal is really to give you kind of an update on what weāve been working on, what weāre doing, and kind of share with you our processes, you know, even how weāre doing this stream, maybe and everything that weāre working on, really. Laura, So do you want to do you want to kick things off with what youāve been working on in the last year?
Laura: Yeah.
Aral: and currently? Yeah, cool.
Laura: Yeah. So Iāve been quite quiet I guess about what Iāve been working on for the last year because you know that feeling when things just donāt feel like theyāre ready yet. And that is not at all how things should be. Theyāre public repositories, Iām ready to share things. So what Iāve been working on is for Site.js. Iāve been working on a starter theme.
So with Site.js, which is now considered a mature project, we decided to bundle in Hugo, which is a static site generator-- might be familiar to some of youāitās written in Go. And the reason we decided to do that was actually just because our sites were using Hugo as a static site generator, and we were trying to think of ways that people could use Site.js to get up and running really quickly, and having their own website, their own blog or something like that. And so my aim was to make a theme that would make that very easy for people, because right now if youāve used Hugo, you might be familiar that it is not the ideal setup experience, especially if youāre quite unfamiliar with code, unfamiliar with Terminal, a bit nervous about the idea of using like Go and stuff like that. Even though you really donāt have to touch anything like that.
And so we thought weād do that. So how about I just show you briefly one of the things that I have done. In fact, Iām going to share my screen and Iām going to show you how I would maybe even got started with Site.js and just going to roll with this, just going completely improvised. So if this is terrible, I do apologise. Helps if thereās nothing on the screen to begin with. Right. So I hope the text is big enough here.
But what Iām doing is Iām just starting in a repository that Iāve already got here running locally. So if I go to Safari, my browser of choice, you see here sitejs.org is where we have the Site.js website, so Iām just going to scroll down. Lovely website that Aral made here, and Iām going to install Site.js.
Now as this says, you shouldnāt just be pasting things into your terminal willy-nilly, but I know that this is okay, and then Iāve got the macOS version up. So Iām just going to go back to my terminal and Iām gonna install Site.js. Now bearing in mind that both of us are currently on our Wi-Fi, two separate streams. So this might take a minute. Ooh, need to put the password in.
Oh, no. [laughs]. Shoulg be able to type it. There we go. So Site.js is now installed. So if I can now run āsiteā, so I just need to run the site command. And what Iāve got is a site running with my theme. Iām just going to scroll that back up so you can see it if you missed it, because it started running nicely and quickly. So you can see here Site.js: pretty recent version, and what itās done is it has, using locally-trusted certificates, that Site.js has created, so youāve got HTTPS running locally right away. Itās created an HTTPS server, so we can run everything locally. Then it started building the site⦠thereās a little warning there because itās found no custom CSS. Thatās fine. Thatās just part of the theme. Itās created 67 Pages. This is all Hugo stuff going on. Itās generated the static files. And itās watching for changes, and so I can open that now in Safari, and you can see my basic little starter site. Now, this is just an example-like demo that I built using the theme for documentation so that mostly I could actually go and see how to add content to a home page or something like that. And the whole idea of this theme is itās simple, itās accessible by default. So Iāve tried to include as many things as possible to make it very easy to author accessible content, make it easy to include alt text for your images, the colour schemes that are included and thereās a dark mode optional as well. And those will have good colour contrast, the typography aims to be nice and readable. Actually, this is looking a bit small, this text right now and partly thatās because the font size that I use in my CSS, I like to base it off the browserās root size. And a recent update to Safari knocked the basic text size down and so actually the text size is a bit smaller than I would usually prefer for a default site. Here we go. This is just the theme going on here. And then if I go back into my terminal and Iām just going to close this and Iām just going to jump out that folder, and you canāt see what Iām doing because of that StreamYard thingy, just hide that for a second. Oh, no, thatās not what I meant to do.
And then I will go into the photo blog demo and it starts with starter-photoblog-demo, of course. And then I run āsite.ā Now I could actually, because Site.js is that good, run both of these sites simultaneously locally, which is really useful. I find for me developing particular if Iām trying to test a theme across multiple different types of sites in one go, which Iāve been doing a lot⦠You can see here actually at the bottom, in the terminal, itās actually showing some extra Site.js goodies. Like itās showing that Live Reload is working, the Live Reload is included in Site.js, and itās also showing that itās getting a 404 for add-content-to-homepage because itās not finding the page that was in the documentation demo. Itās showing how quickly itās loading in everything, and the sizes of the resources, which is really good if youāve got loads of massive images, and youāre going to get flagged if those images are really big, or if youāve got things missing and the site is trying to request, and itās missing that, so thatās another really useful thing that Site.js does.
And so then I can go back into localhost. And this is a photo blog demo, and this is using the beautiful illustrations of Margo De Weerdt, who does these incredible illustrations and very kindly let us use them for this demo. And so the idea is this is pretty similar Hugo structure to a standard Hugo site, but itās got photos and things like that. And of course all of this is responsive. Itās using CSS Grid so it should be fairly easy for people to just get going and it should work very nicely across lots of different devices.
Aral: And you worked really you worked really hard on this Laura, I know firsthand. And so what are we going to do with it?
Laura: Hang on one sec, Iām just going to stop sharing my screen for a second. So one of the difficult things is we kind of got to the end of last year, and as you discussed in the last stream that we did, you forked Site.js and the idea of Site.jsā¦
Aral: And Iāll talk about that in a second, yeah.
Laura: ā¦and ready to use for these kinds of projects right now and, at that point I was like, well, what am I doing with this theme? So people can use it with Site.js but itās actually starting to feel, with a photo blog, with all these different types of sites, all these different things. All I really wanted to do was use it on my own site. And one of the⦠and on the sites that we build⦠and one of the things that we try to do with Small Tech is ensure that everything we build is something we actually use ourselves and thatās incredibly important to us because we donāt want to be making assumptions for how other people might use our things. We want to make sure it works really well for us and if weāre using it, weāre testing it. And so one of the things that decide to do was you know what, the theme had got too complicated, and part of that is the habit of working on it for such a long time, but itās also that itās just got so much configuration in there that Iāve just been trying to make everything work in a multiple different ways. It doesnāt need to be like that, really. Itās not actually useful. Itās much harder to get into⦠if the whole idea is that weāre trying to build a theme that people can just get in and use right away⦠If thereās a million different configuration options that you have to work out, thatās not going to make it easier. And so Iāve started now the practice of stripping all the stuff out of the theme and to make it more useful, to make it something I can actually use on my own site as well. And Iām going to use all of my existing kind of fancy colours and typography, and all the stuff, the layouts and stuff Iāve got but with this theme, which should be very easy to do, to very easy to layer in, but I get all of the goodies that Iāve added into the theme, and that wayā¦
Aral: Um, I guess, Laura. Sorry. What I was hinting to was that originally our plan was to include these themes with a generator inside of Site.js, and part of the reason why you put in all of those weeks of work on this, was that we were going to include it in Site.js, but of course now that weāre taking a slightly different route in that weāre saying, okay, Site.js is actually, itās doing what itās supposed to do, right? It was meant to run our sites, and it was meant to be a way for us to make sure that we could build a server that can update itself, so that you can set it up in 30 seconds, kind of as the infrastructure for everything we want to build in the Small Web. But unfortunately of course, that meant that you know, with that decision, weāve kind of abandoned the whole idea of including these templates that youāve worked so hard on in Site.js in the future, and supporting it because we really want to also support the things that we put out there. Right? And weāre only two people so, you know, we only have so much time, and so much energy, and so many hours in the day. But I believe you put them live now, is that correct?
Laura: The site themselves arenāt live, but the source code is all accessible in our source.small-tech.org repository. All of my stuff is there, I donāt⦠do we have a banner for that, Aral?
Aral: Um? A banner for? No, I meant would you mind just showing it in your browser
Laura: Yeah, I will jump to my browser⦠So if you go toā¦
Aral: And I we might have a banner for it as well. Letās see. If not, Iāll make oneā¦
Laura: If you go to source.small-tech.org, you will generally not get the Activity screen. But if you go to source.small-tech.org/site.js/starters okay, you will find all of the projects that we have inside there. We have the starters default, the starter blog demo, the starter theme, some assets for it, and in the archive projects, weāve got various demos that, most of them should still work pretty well with the existing thing andā¦
Aral: Is that the correct URL? I just typed in?
Laura: source.small-tech.org/site.js/starters. I canāt see what youāve done.
Aral: Okay.
Laura: Site dot JS, yeah.
Aral: Site-dot-JS?
Laura: Yep.
Aral: Okay, Iāll fix that. There we go. I should know thisā¦
Laura: And yeah, and of course weāve got readmes in there that tell you how to get started with it. Iām pretty pleased with the fact that, in like including installing Site.js, itās essentially a six-step process to get a basic site up and running, and thatās despite Hugo, because if youāve used Hugo before, you know, itās not easy to do that.
Aral: Oh cool. Well⦠And of course, a huge thank you again to Margo de Weerdtās, her illustrations for that photo blog are amazing, and check out her site as well⦠which Iām going to try and find now by probably misspelling her name, but let me just share my screen there, and letās put that full screen, if I can, there we go. This is her site. This is Margoās site. Let me just make that a little smaller for you and sheās an amazing amazing illustrator, and she sent us a wonderful calendar as well, an end-of-year calendar. Yeah, that sheās got in her shop over here. So, you know if you want to support an independent illustrator, who you know was very kind and worked with us as well, on our work, and is very supportive of our work, please do. The calendarās amazing and thereās other stuff there as well. I just love her work. Itās just really gorgeous stuff. So yeah, so a little plug for Margo there because she is awesome.
Laura: I think given that I was talking about Site.js being a mature project, and how we were going move in a slightly different direction, I think thatās probably a good time for you to start talking about what youāve been working on.
Aral: Yep. Iām going to do that. But before I do, Iām just going to give out the URL where people can join us in the studio. If you have questions, if youāre watching right now, if you have questions on anything, if you want to join the conversation, if you just want to say hi, if you want to share with us what youāre working on in the Small Tech kind of area⦠you know free and open-source, independent, privacy-respecting. You can go to small-tech.org and find out the principles that we have. You can join us in the studio. So the URL is just coming on screen right now. If you go [laughs] if you go to that URL, you can actually join us in the studio. We can have up to I think eight people apart from the two of us, and we may not be able to take everyone on or put you online. But all you need is a webcam and headphones so we donāt get any feedback, and we can add you to the stream as weāre going. But so note down that URL. Iāll show it again in a little bitā¦
Laura: And if you want to urgently ask a question, but you are a bit camera-shy, you can just put the text in, we will pick it up.
Aral: There is a private chat if you join the studio, thereās a private chat. And yeah, if you donāt want to come online, but also remember thereās only eight people maximum. So if you arenāt going to ask a question, if you could log off again, that will allow somebody else to come on. Although I donāt think weāre going to fill it up really. So okay, but what you were saying, Laura, about where weāre going next with Site.js⦠So Site.js is basically mature in the sense that it allows us to run our own websites. So Iām just going to go to myself not zoom on Laura
Laura: I was going to say⦠[laughs]
Aral: Iām trying to do three things at one time!
Laura: I can still do Voice of God over the top though if I want toā¦
Aral: [Laughs] So Site.js basically runs my blog right now. So if you go, if youāve ever gone, to ar.al, it runs that, it runs small-tech.org. So all of these sites are running on Site.js, and pretty much all of them are using Hugo as well apart from SiteJS.org itself, which is⦠which actually is a very specific single-page static site that itās very tiny. Itās under 500 kilobytes or something in total, that doesnāt use Hugo. But everything that we have pretty much is running on Site.js right now. And it works. And the things that we wanted to be able to prove to ourselves as well is you know, you can have a server that you can up get up and running in 30 seconds. If youāve looked at Site.js in the past, Iāve talked about it, Iām not going to go into detail here, but itās got PHP-style routing for JavaScript. Itās very very easy to get up and running with, Laura showed you you know, you can just install it with a single command and then you know, youāre up and running very quickly. It has websockets, etc, etc, etc. But⦠and itās taken us like about I guess a year, more than a year, to get it to the point where you know, weāre happy with it now. And we have this concept of the Small web. So if you go to small-tech.org, And go to Research and Development, R&D, thatās what weāre working on. So we are working on the Small Web. And the Small Web is basically the exact opposite of the Big Web. Where on the Big Web, we have servers, and we trust servers, and these servers host lots and lots of people, and they scale and they grow and they become the Googles and the Facebooks that we know from surveillance capitalism. The Small Web is the exact opposite of that. What if each one of us owned our own always on node, a server. But we owned and control that, that it was just us, it wasnāt Facebook. What if those could connect to one another? And what if in this system we could be public if we wanted to and share things just like we do on the web, but we could actually be private as well. And when I say private, I mean only we have the keys to you know, whatever locked boxes weāre sending around to each other with messages in them. Only we hold the key and, not even the servers, so it is the exact opposite of the Big Web in that we actually donāt trust our servers, even the ones that we own and control, because they might be hosted, you know, by some web host somewhere and we donāt know, you know, if they have access to it.
So Site.js gives us the foundation for really quickly setting up these servers. Itās very important that we can do it quickly because what weāre really eventually going to be competing with, with the apps that we build on here, is the 30 second sign up to Facebook. If the experience isnāt that good, everything weāre doing, all the work weāve been doing in the past however-many years, you know, all the effort we put in, itās worthless if we canāt compete on experience. Thatās thatās really the only criteria that matters. Everything else weāre doing is hugely important. But moot if we canāt, you know meet that criteria.
So thatās what weāre working on right now, which is basically, well weāve got Site.js, and Site.js does what it does, but thereās a lot of you know stuff that we donāt need for the Small Web specifically. And thereās a lot of stuff we need for the Small Web thatās not in there. So we donāt need Hugo, for example. So basically what I did was decided, look Site.js is great as it is, weāre going to keep using it for ourselves, other people are going to keep using it. Weāre going to keep supporting it, but weāre going to fork it, ourselves, and create something that I call Place. Not a site, on the Small Web we donāt have sites, just to differentiate ourselves from the Big Web. We have Places.
So I just put the code up on our GitHub mirror actually, so if you go to github.com/small-tech, and you go to Place, youāll see the source code repository for it. And youāll see that there is a nice warning over here saying that it is pre-release, and rapidly evolving, things might be unimplemented etc etc etc. Itās not even complete. Donāt use it. If you want to check it out, and start playing with it, and see where itās going, even for that itās kind of early. But basically I just forked Site.js, and I took Hugo out, and I took out the proxy server feature, and I took out this feature and that feature, that isnāt necessary⦠kept the bits that are necessary. Which are, for example, the self-updating server, the 30 second installation process, etc etc etc. But on top of this, we are now going to finally be able to, weāre at a point where we can build the protocols for the Small Web. So how do these nodes talk to each other? So Iāve been doing a lot of experiments with websockets for example, so that these servers can talk to each other with websockets, etc etc etc.
But let me just show you a quick demonstration of kind of where we are with it. And again, this is so so so early, so early, but let me show it to you anyway. So Iām just going to share my screen here. Iām in Terminal and I want to create a new Place. So I want it to be called aral.small-web.org, and this is just my local copy of it. I could be doing this on a server. So letās see what it says here, home aral sandbox does not exist. What did I do? What did I do? Da-da-de-da⦠Let me just see if I had already created this⦠quite possibly⦠all right. Give me a second. This is what happens when you test these things out previously and then boom. Letās see if that works. What was I saying? So like I said this thing can just explode. Hmm⦠Home aral, sandbox aral.small-web.org does not exist. Okay, you know what? I am just going to switch over here so you can see Laura as well. [laughs] Let me just try and figure this out. Laura, you can fill some time if you want to⦠whatās going on here?
Laura: Yeah, I can⦠so one of the things that I can briefly talk about is, with the themes, and the kind of things that weāre trying to aim for is we want everything to be so easy for people to use. So this is why Aral is working so hard on making this set up, having these things going on. This is why Iām trying to make Hugo usable for normal people who, donāt, who normally would look at Hugo and freak out. And so this is what weāre trying to doā¦
Aral: Perfect, by the way, Laura. Alright. I know what I did wrong. Alright, Iām taking it back. Here we go. Oh we have we also have someone joining us, Kieran.
Laura: Oh, we have Kieran! Hello Kieran.
Aral: Oh cool. Well, weāll let Kieran in in a second⦠Let me just do this demonstration and, right. Okay. So letās see if thatās going to be Laura again. Yep. That is Lauraā¦
Laura: Thatās me again.
Aral: Hi Laura, that is you. Alright. I will figure out that interface. Okay, so sharing my screen again.
The problem was, I was saying bin.place, so running Place, but I wasnāt saying create it. Okay. This is what happens when youāve actually, you know practiced this earlier and then itās in your history and you confuse yourself. So the create command creates a new Small Web Place. So Iām saying ācreateā and it says ok, so hereās a randomly generated strong passphrase, a diceware passphrase, with⦠the process itself has about a hundred bits of entropy, and saying do you like this passphrase? Now you can write this down, Iām not going to use it anywhere else. Donāt worry. And again, this is something youād be running on your dev machine if youāre setting it up⦠I like the passphrase. Yes.
It asks me for a template. Donāt worry about that right now. I donāt even know if weāre going to have templates, but Iāll just say ādefaultā. This is okay. Iām going to create this site, āContinue?ā āYes.ā So itās creating the site. Itās created my public keys, whatever those are, and itās also initialised the source code repository for me. Okay, thatās interesting. So letās just take a quick look at what itās done so far. So this is kind of the next step from Site.js. Weāve taken things away, but Iām also adding some stuff, like source code. So today, what happens is you have a project and you have to put it on GitHub. Youāre using Git, which is decentralised, then you put on GitHub, which is centralised. That doesnāt really work for me.
What about a web where the source code for every site, lived on the site itself. That makes perfect sense, right? And then if I wanted to, I could say hey, I love what youāre running on your site, I want to run it too. Why donāt I just clone that from your site, and I know where it is, I know what you know what youāre running. Not your data, but the app that youāre running, I could just clone it from there. If we have plugins and apps, we could just clone them from your own server. So every Small Web Place is going to have its own little Git repository as well. For people who donāt care about that, thatās fine. For developers, because thatās who itās aimed at right now⦠as weāre working with this, thatās going to be really cool. Because weāre going to be able to do things like well, why donāt I send you a pull request? Not to GitHub, to your website. Oh, thatās cool. Yeah, and then maybe you know, Iāll clone this from some other personās website. So anyway, to get back to this⦠Now itās created a couple of things. So the first thing itās created is in the sandbox. Itās created the site itself. And if you look at it, thereās your Git folder there, and thereās nothing else because at this point there isnāt a template, thereās nothing thatās generated. You can create anything you want to there. Itās also created, in the settings, small-tech.org, itās also created a public-keys.json. So if I look at that, and if I just print that out, itās got my signing key and itās got my encryption key. Okay, so just remember that those things exist⦠so just like Laura showed you with āsiteā, letās start āplaceā and letās start place on that sample place that we just created. Okay. And now itās running there, a couple of things: Itās serving the public keys at /keys, and itās serving the source code repositories at /source. Okay, cool. So letās take a look. If I go to localhost itself, I get a 404 because we havenāt actually even made an index page, right? But if I go to localhost/keys⦠ah! Interesting, I get my Ed25519 signing key, and my X25519, the curve 25519 encryption key.
What are these good for? Well, if every site has this, this is kind of your identity for that site, and itās actually your identity, not the siteās identity. The siteās identity is determined by HTTPS. So as these sites are talking to each other, the HTTPS connection is what verifies their identity there is actually that domain that youāre connecting to. But your identity, is, and you can have multiple of these itās not like your one and only identity, is linked to these keys. So what does this mean? If Iām a aral.small-web.org? And youāre laura.small-web.org, what I can do is I can say āHey Laura, hereās a public message, letās say, from meā and you can say āoh, is it really from you?ā And you can check with my signing key. Or I can say āHey Laura, I want to send you a private message, and itās end-to-end encryptedā. And I can do that using your public key, your encryption key, and I can use that to create a shared key with you, and send that over to you.
But imagine that every website on the Small Web has this functionality. So we also solve, with this, the whole issue with key discovery etc. So and if I actually was to go in there, and let me do that⦠If I was to go into small- into that folder, that I created, and I said echo āhello everyoneā to index.html, and I went into just localhost now, it would say āhello everyoneā. So Iāve actually created something there. So thatās where that is. Now. Iāve created something there. Iāve created something there. So now I want to āgit addā it to my repository, and Iāll commit it, and Iāll say this is my āinitial addā⦠The little thing that popped up is just an app that I wrote called Gnomit, for Git messages⦠and Iāll say ācommit.ā Now, where can I push this? Well, letās letās look at our remotes. Weāve got a whole bunch of remotes. Thereās the origin, which could be on a virtual private server somewhere, but Iāve also got like, localhost. Okay. This is kind of interesting here. Let me try and pull this out, here, and make it a bit smaller, and you can see the server in the background here. So Iām going to say āgit push -uā for create that, itās the first push, ālocalhost masterā. Look what happens here. Now, Iām just going to put in a sample username and password. The user name and password will actually be derived from the diceware password that you saw earlier. It isnāt right now, I havenāt implemented it. But it received that push, so your site thatās running on my dev server right now, received that push. Okay! So does that mean that I can actually clone it from there? Yeah! So if I go into a different folder, into my sandbox, I can actually say 'git clone https://local-'hor⦠local horse?! [Laughs] Localhost becomes local horse⦠local home. [Laughs] Local horse should be a thing. I want that on a t-shirt, ālocalhorse.ā āhttps://localhorseā. So āhttps://localhost source selfā is the actual site itself, and Iāll say ātest-clone-2ā just to make sure. And again, you wonāt have to enter the username and password, that will be automatic in the future, because you wonāt be doing āgit cloneā, youāll be doing āplace cloneā. And if I go to ātest-clone-2ā now, I can see thereās my index.html. So I just cloned that from my own website, right? Because the source is there. Itās not View Source anymore, right? View Source was cool. I learned how to code with View Source, but we can do so much better than View Source. You know, we can do āView Git Sourceā on our websites, and when we do that, we each have our own little GitHub, right? And then we can send pull requests etc. So thatās just part of the Small Web, thatās part of it. Everything about it is decentralised, everything about it is under your control. You own and control it, and this is just one bit of it. And again, like I said, itās very very early for Place, and itās going to be constant breaking changes, and itās and you know, weāre going to be, Iām going to be iterating on it constantly. Itās not even feature complete in any way, itās so so so early⦠0.0001, you know, version. But just wanted to give you kind of a feel for where weāre going with it. So yeah, thatās it, really. And I feel terrible for keeping Kieran waiting. So it should we add Kieran to this?
Laura: Yeah!
Aral: And now letās bring him in⦠wait a minute.
Laura: I can give a little intro to Kieran whilst youāre doing that becauseā¦
Aral: Okay, thatās a great idea.
Laura: So Kieran, I met through the Vanilla JavaScript Academy, which was a JavaScript course run by Chris Ferdinandi, and Kieran helps out with that course. I mean, I think Chris describes him as a teaching assistant, but honestly, he is way more than that and really it was so much funā¦
Aral: Hey, I was a teaching assistant once, whatās wrong with teaching assistants? Teaching assistants rock. They do all the work.
Laura: Well, yeah, but Kieran is also just a really great cheerleader, and a supportive person in the community, who makes a lot of the frustration you have when youāre learning, and starting out, and sort of banging your head against the wall with particular problems, and was just such a great supporter. And just, we had some really cool discussions about accessibility as well. So Hi Kieran!
Kieran: Hi.
Aral: Hi Kieran, I have heard a lot about you so itās lovely to meet you.
Kieran: Likewise. Yeah, itās good to say hello, finallyā¦
Aral: So Iām Kieran, go ahead.
Kieran: Yeah. No, I was mainly just saying hello really, but I have had a question. Actually. I just thought of⦠which is, Place completely replacing Site.js? Or they going to exist side-by-side?
Aral: They going to exist side-by-side. So think of it as Site.js is basically a generic web server, kind of a web development environment for the web as it currently is, but one that you can run personally, very easily, kind of lowering the barrier of entry for that, but⦠And you can do everything you can do on the current web on there⦠Place is going to be much more focused, so you know, if you want to create just create an HTML page and you want to put it up on the web, use āsiteā for that. Youāll be up and running really quickly with that. You want to create, you want to enhance that with a little bit of JavaScript, use āsite.ā The kind of things that are going to come into Place is, weāre going to narrow it down, and do some of the hard things with no effort. So if youāre⦠what are those? So like I said, you have your keys are available, so that anyone can verify the messages youāre sending are coming from your site, from you, actually. And that any encrypted messages, you know are encrypted with your keys. Thatās just by default. So weāre adding public key cryptography and signing to every website on the Small Web.
My thought right now is that weāre just going to use web sockets for nearly everything. I mean, of course, it will support HTTP get for certain things like getting your keys, whatever. But the core of it will be entirely built around websockets, and thatās servers talking to each other with websockets as well. I did this experiment last week, just to see how many websocket connections I could open, you know from a VPS server, and I was easily able to get to about 10,000 on a very low VPS⦠something like that cost 3 euros a month or something. I could get 10,000 connections. I donāt have 10,000 followers on the Fediverse on my Mastodon. Iāve been there for 3 years right now. So to start off, thatās really great.
We can scale websocket connections to like, on a single device, to millions. Or a million, people have actually done a million connections. I donāt care about that right now, itās just like can it get us started? Can we do it? What does that introduce? If every server on, letās say on the Small Web⦠if every server can talk to every other server, has a consistent connection⦠If Iām following you, our servers have a consistent connection. Every time I post something publicly, you get it, right? If youāre following me, we can use the same connection to also talk privately end-to-end encrypted. What kind of things can we build on top of that? And really what Iām thinking is that, this is something that Iāve been thinking about, and wanting to see happen for many many years⦠ever since Twitter introduced annotations, or was going to introduce annotations, maybe a decade ago. I donāt know if youāre familiar with this⦠it kind of was an idea that they had, which was that you could add metadata to tweets. And this was amazing to me because, if this had happened, what it would have meant is we could have actually expanded the semantics of what a tweet is, using metadata.
So a tweet wouldnāt just have to be a tweet. It could be a chess move in a chess game right? And at the time Iād suggested oh Twitter formats, we can have different formats etc. Of course, Twitter then became, you know kind-of, proceeded on its trajectory to become like a huge surveillance capitalist, and they abandoned all of those things. They were like, no no, we need ads in there and we need to attract people. Mastodon, when Mastodon came out, I was like we have the ability to do this, but Mastodon, and the Fediverse, uses a protocol called ActivityPub, which, you know, you have to actually extend at the protocol level. So whatās really interesting for me, with the Small Web, is what if we make messages the key thing, and what if messages are extensible? So we have an extensible message format where, maybe initially, itās just a yaml header and some markdown. You know, thatās maybe the base, but in that yaml header, you could add any sort of data. So a message could be just a regular post, a micro blog post, a web page. Or a message could be, again, it could be a chess move, or it could be a weather update, or it could be this or that. And what if our apps became views on these messages? So if you got a weather update it showed in a little weather view. If you want to post some sort of an update for the weather, or something else, or a chess move, you had a little chess board to do it, and we could expand these, each one of us could actually build this functionality into it.
We wouldnāt need to expand the protocols because the messages themselves would be extensible. And on your site, youāre following me for example, and you get a message that your site doesnāt understand, yet, because you donāt have the app or the plug-in for it, whatever weāre going to call it, and you can say⦠but you can see where itās from, and itās from you know, somebodyās written it on there, has posted it on their own small website, with their own Git repository that they have there, and you just say okay, I want to install that: goes to that Git repository, and installs it.
So this is the stuff that you know, weāre going to be building into Place. Itās very exciting, because for the last year or so, Iāve just been building stuff to support what already is, and thatās been necessary, but itās also kind of been like Iām itching to work on this. Iām itching to work on these features. But unless we can deliver these, unless the whole experience is so seamless and beautiful, itās not going to matter. So thatās why I was like, okay, no. Got to work on this first and itās battle-tested now because you know, it runs our sites. We know the updates work. We know what messes up. Weāre kind of eating our own dog food. But what Iām really excited about is what we can do with Place, and with the Small Web going forward. So, you know, because I⦠Iāve just rambled, butā¦
Laura: No no, it wasnāt ramblingā¦
Aral: What we have with the Big Web, what we have with all of these millions and billions spent on just trying to track people, just trying to make more billions. Weāve just thrown away the promise of the Web. Weāve thrown away the promise of the Internet just for quarter-on-quarter growth and to you know, create a handful of billionaires. Itās shocking, you know, it just disgusts me. Iām not like the smartest person in the room. Iām not, you know, Iāve been making things with computers since I was seven. Thatās my only kind of reason why I can do this stuff. There are far smarter people than me working on bullshit, absolute bullshit, you know, toxic bullshit. And that just destroys me. Knowing the potential of the stuff we can build so Iām really looking forward to it.
Laura: So talking about bullshit might be a good point there which for me to give a little bit of update on Better Blocker, because we mentioned that we were gonna, and soā¦
Aral: Yeah, blocking bullshit! Thatās what Better Blocker does.
Laura: Better Blocker, the blocker of bullshit. And really so I didnāt manage to do a huge number of updates to the blocking rules last year. Honestly, wasnāt entirely necessary. A lot of the nature of Better Blocker is to focus on the centralised aspect of tracking, how often these trackers are used from centralised domains. And so we block āem once, we block āem everywhere, and that works, and it works really well. And so actually what I spend most of my time in the blocking updates, I find a few new prolific trackers and I block them, but a lot of the time Iām fighting against bad development. And so sometimes Iām sort of blocking blocker blockers, as we call them. So these annoying dialogs that recognise that youāre using a tracker blocker, and pop up and say āHey, donāt block our trackers. We want to track you! We want to surveil you! Please let us do this.ā And so I spent a lot of time just trying to do a little bit of reverse engineering on their dialog, try and get rid of it so that people can continue to browse without being tracked and without being blocked out.
But nowadays one of the biggest problems Iām trying to solve is broken websites. The number of sites⦠I swear development practices are getting more fragile. Like people are loading in⦠even CSS being dependent on JavaScript being present. Not just any old JavaScript, but JavaScript from say a Google service. So imagine you go to somebodyās website, youāve got no styles, youāve got no nice fonts. Itās just black text, full width, blue links, and thatās because the CSS hasnāt loaded, and the reason itās like that is because the developers have made the CSS loading dependent on a particular tracker being loaded. So I spend a lot of time, bear in mind unpaid, because these organisations arenāt essentially paying for me to fix their website with Better Blocker trying to get aroundā¦
Aral: Theyāre breaking them on purpose. You knowā¦
Laura: To some degree, I wish it were true. But I actually, I think a lot of the time it isā¦
Aral: It canāt be incompetence.
Laura: I think itās a lot of it is malice and incompetence. I think that people donāt understand the concept of progressive enhancement to the degree that they will have core site functionality relying, using a third party platform. So having your login provided by a third party platform, we saw this at the end of last year when Google went down and the number of sites that fell over. Theyāre not hosted on Google, but they were just completely reliant on it. It is, yeah, absolute nonsense. Oh, I have a visitor. [Laughs]
Aral: Itās Osky! Wait, let me zoom in on you, can you? Is he there?
Laura: Okay, I had to put his chin up. Heās not going to like that. [Laughs]
Aral: He looks very happy about that.
Laura: Yeah, I think heās, I think he thought I was arguing with someone. So heās coming to tell me to calm down.
Aral: He does that⦠whenever we have a an impassioned conversation, Oskar gets in the middle of us and heās like āstop fighting.ā Weāre like, weāre not fighting, itās fine.
Laura: [Laughs] You can just see a tail in the backgroundā¦
Aral: So Kieran, I have a question for you. So you were on the you were the teaching assistant, [dog grumbling in background] or working with the [laughs] [more dog grumbling] vanilla JavaScript course, right?
Kieran: Yeah.
Aral: So what do you feel? I mean if⦠I donāt know if you had a chance to look at Site.js for example, but what do you feel like kind of, are there any parallels there? Do you see kind-of, because one of the things I really wanted was, you know, a very easy way for people to be able to build things, especially with DotJS. I donāt know if youāve had a chance to look at it⦠So that you wouldnāt need just you know, huge frameworks just to do some basic stuff.
Kieran: Yeah, I mean, just speaking for me personally but like it really appeals to me. Ever since Laura first mentioned it, Iāve actually wanted to move my like my own little mini blog thing over to it, because currently itās on, itās hosted on GitHub and then it builds to Netlify, but I would rather have that in a decentralised place. So itās probably the perfect thing for it.
Aral: I mean, I guess if you want to think about what Site.js is, Site.js is your own Netlify in a way. Like itās a Netlify that you own and control. I donāt think the Netlify folks are going to sponsor us, they sponsor everyone, but after that⦠[laughs] not that we want them, to itās fine. Theyāre actually not the worst of the worst, at all. They you know, they at least provide a legitimate service. Itās centralised but, you know, itās not based on necessarily tracking you, and all the surveillance capitalism stuff⦠just plain old capitalism.
But yeah, thatās thatās basically kind of what Site.js is in a way. Maybe the DotJS is even a bit misleading. Yes, you can, it has Node.js, itās built on Node.js, and you can build all of that stuff. But with Place, one of the things that Iām looking into is, you know, like I said, youāll have these messages that come in and then you can build these renderers for them, and interfaces for them. So one of the things that I think is very cool, very exciting is Svelte, so I donāt know if youāve heard of? Yeahā¦
Kieran: Yeah.
Aral: So thatās Rich Harris, I believe. So Svelte.dev. Let me just show you⦠so Svelte is really cool. Itās basically, itās not a framework in a traditional sense, because itās a compiler and what it has, let me just show you here is you can⦠letās go a little further here⦠You can include, theyāre basically components. And you can have a paragraph like your styles go here for example, and if I said āp { color: red; }ā, then itās red. And if you actually looked at the style, over there, you can see, for example, that the style is scoped. So itās got scoped styles. Itās got data bindings. Itās got some really, itās got a really cool syntax and what it does is it compiles all of this. So instead of loading in a framework at run time, it actually compiles it so itās really pretty cool.
Let me just switch back. Hi. So one of the things that Iām looking into is using Svelte for these components cuz it works really well. So imagine that you just write a Svelte component to render a message, to render the interface for it. So thatās also some of the things that Iām going to be looking at. And if you think about it, in Site, really Hugo was taking that sort of responsibility as well, because Hugo is a static site generator. But with this, itāll be you know far lighter, of course, but also far more integrated into the workflow at its core. And especially Iām looking into ES, ECMAScript modules-based workflows, as well. Like the kind that Snowpack, for example, does because you get some really cool things like ECMAScript hot module replacement etc. And actually, if you go to my blog, let me just⦠I wrote a very short post about how to do hot module replacements with vanilla JavaScript. So this might be interesting for the vanilla JavaScript folks as well.
Kieran: Yeah, I think Iāll read that.
Aral: Yeah. Yeah, so itās just doing hot module replacement, but with vanilla JavaScript instead of Svelte or anything else. So you really get to understand how that hot module replacement works. So, yeah. But thatās just on my blog, ar.al, but itās very itās very exciting. I mean, Iām kind of, I feel finally after about a year or two of just building something very infrastructural, that Iām getting to play with the exciting parts of it now, which is kind of cool. But the goal, of course is that you know, you go to small-web.org, you choose a subdomain, for example, 30 seconds your up and running with your own small website, where people can follow you, people can send you messages you, you know, so itās going to be very interesting once we have this. Once it starts to shape up, and you know, part of what we want to do with these weekly streams, and I actually might even start like a daily one just for development stuff, for what Iām working on is I really want to share that process. You know, what weāre doing isnāt like a big venture capital reveal, itās not, it hasnāt been. You know, weāve been working on this stuff for how many years now Laura?
Laura: Probably about six, or seven even.
Aral: Yeah, you know, weāve kind of sold three houses, that we had. Now weāre renting. Weāre working on this because we really believe in it, and you know, itās very incremental but I think, slow but sure has something, you know, about it, which is once you get to a certain point, you have quite a strong foundation. So itās going to be interesting to see where it goes this year, Iām very excited about it though. Iām very excited about Place, and finally getting to the point where we can do it, you know. We needed to have the ability to deploy it, we needed to have that infrastructural stuff, and itās there. Thereās much more to build but it Iām feeling happy about this. Weāre going to be able to start playing with this stuff and hopefully inviting people, developers, to play along with us, as weāre going. You know, itās not ready right now for anyone to really do anything with, because itās not complete. I mean feature-complete in the basics, but the moment we have like the basics up, as in you can go to small-web.org and you know, get your own, and start playing⦠if youāre a developer, youāll be able to do that. And I hope you know, I really look forward to that. And then maybe we can start doing some tutorials, we can you know, itās just itās going to be really great. Itās the Web that I want. You know, I just wish we didnāt have to do all this stuff, and the Web was ethical, the Web, the Big Web, you know was, had systems built in where people could just build tools that didnāt exploit people. But itās not, so yeah here we are.
Laura: So weāre trying.
Kieran: My favourite part of this stream has just been that I can just tell how excited you both are about it. Like itās refreshing to see because like a lot of the times, as a web developer, it just feels like Iām still working on the same crap over again, like, you know, usual stuff, big app, people using these huge frameworks, but itās cool. Itās cool to see. So when?
Aral: Well I think⦠sorry, Kieran, goā¦
Kieran: I was just going to say when it does get to more of a stable build, and people can like help test and work on it, like what how can people expect to find out about that when you guys are ready with it? Will you just like post somewhere or like?
Aral: Well I mean, like I said, Iām actually thinking of you know, if I can, kind of to push myself as well, maybe do like a daily livestream update. And maybe people will organically start filtering in when they feel like they can. Thatās what Iād really like, you know, and again, you know the moment you can create your own, that means that youāll be able to have your own little Git host on your server as well. Youāll have a copy of the source, youāll be able to start building apps or plugins for it, sharing them. So hopefully it will grow organically. Thatās my goal for it. You know, and weāll see how it goes, but weāll definitely be you know postingā¦
Laura: Weāll be sharing things on, yeah, all of the different places, and thatās part of it. That actually helps us⦠the more we share, the easier it is for us to share stuff as well. And when people ask us questions, then we actually know what to share as well. And thatās what makes it nice that weāre actually starting to do the streaming, and things like, that because it kind of makes it more of a conversation rather than that kind of kind of dev evangelist-y way of like āhere now, we have an announcement of⦠these are the things that we are now allowing you to doā and we donāt want it to be like that. We want it to be more of a community thing, we want to be able to learn from what other people want to do with it as well.
Aral: But I think Iām most importantly for us at this stage. Weāre not ready for any of that, weāre not ready for contributions, weāre not ready for issues. But most importantly, I think for us is you know, how it is, if you have a continuous release, for example, for what youāre building, you keep making incremental changes and releasing them. If you have this waterfall process, where you release things every 6 months, then it becomes this huge dreaded thing and you know, you have these deadlines and youāre not sharing stuff, and itās like a big reveal and is it going toā¦? No, thatās not how I want to live. Thatās not how I want to work. So Iām trying very hard to get out of my own way with that as well. Because, of course, thereās always the the sort of fear of oh well, you know, what if somebody says something mean about this? And, I mean, given what we do, people have beenā¦
Laura: [Laughing] thatās the very least of our worriesā¦
Aral: So, but part of this process has been to kind of say, you know, what fuck that. I really donāt give a shit what you think. You know to the haters, and to say look, weāre just working on this, here are reasons for working on it. And weāre doing the best we can and weāre learning, and weāre iterating, and we want to share that with you. And if you want to be part of that process, definitely, thatād be awesome. But really what I want to do is get to a point where, you know, we can just share everything weāre working on, on a regular basis, get input and see what we can build, you know together. Something that you feel good contributing to, that you want to be a part of, that that isnāt just about making money. That isnāt just about exploiting people because why do that? I donāt knowā¦
Kieran: Money! Thatās⦠[laughing]
Aral: What are you gonna do with it? What are you gonna do with it after a certain point? What are you going to⦠eat it? I donāt know. But anyway, Kieran, lovely to have you on, thanks for joining us. Maybe we can talk about, you know, having you on in a greater capacity at some point, maybe to show us some of what youāre working on with the vanilla JavaScript stuff. If you have any ideas, let us know, weāre very open. We want to feature people who are you know⦠care about this stuff, and who are⦠they donāt have to be working on what weāre working on, necessarily. Anything you want to add, Laura?
Laura: No, just a reminder to everyone that weāre going to keep doing these streams, hold us to account on that. We will do it!
Aral: Ooh, and which brings me to next week on the 14th. Weāre going to have three guests. So weāll make an official announcement about it later, but itās very exciting because our guests involve someone who was involved in the rollout of free and open source laptops, not surveillance laptops, like Chromebooks, but ethical laptops running Elementary OS, in France to hundreds of school kids. We are also going to have someone from Pine 64, which make the PineBooks and PinePhones, which are very affordable, free and open source laptops and phones. And maybe even someone from Elementary OS, so if they confirm⦠they havenāt confirmed yet. But if so⦠because I want to get people talking about this stuff as well. You know, weāre just like, weāre in the middle of this covid crisis, schools are shut, and people are saying on Twitter, I see on Twitter people going "Well, letās get all the kids Ā£400 Chromebooks. No! Get them Ā£150, this was in the UK, get them Ā£150 Pinebook Pros, running Elementary OS, get them ethical computers. So I wanna get people talking, you know, like educators, hardware makers, operating system makers, app developers. Maybe this stream can also help that. Because we have people who are focused on their area, of course, understandably, like us, with not a lot of resources, but part of, I think, what we need to be doing is bringing these people together, the non-bullshit people, the people who are not in there just to make a billion dollars, who actually care about this stuff, and get them talking and seeing what we can create, together, going forward. So hopefully, maybe this stream will help with that as well. But thatās next week. Weāll have a proper announcement about it in the next few days. Are we good? [Laughs]
Laura: Weāre good. And I think⦠Yeah, and if anyone wants to know any more information, you know, you can, we try to update it as best we can on small-tech.org, or Aral, do the banner.
Aral: Boom!
Laura: I donāt know what way itās coming up for youā¦. [laughs]
Aral: It is down there. You canāt see the banners? Okay, maybe only I can see it.
Laura: No, I could. I just yeah, I was getting my directions confused.
Aral: Okay. Well and and thanks again Kieran for joining us. Iām going to try and do this outro without messing it up. Letās see. So thanks Kieran for joining us, and we will oop no, that goes to Laura. Why does it do that?! And there I am⦠Thanks for joining us. So just going to be every week, at the same time. So weāll have more information about next weekās show as well, but this has been Small is Beautiful. Take care.
Kieran: Thanks.
Aral: And weāre out.
Laura: Thanks, Kieran.