Definitely. Most of the when I try and get people’s vision of the future, it’s not really that much further out from the existing scope that they’re working in. They might want certain different ways of doing things at a lower-level, because they’re fans of Systemd, or something like that. It’s like, “Okay, so your end goal is we’re using SystemD” and it’s sort of like “Well, but that’s like — I don’t even care about that part of the stack now. Can’t we just move on?” And it’s not even like — some people are like “Okay, now after platform as a service, we have serverless.” It’s like, “Okay, we’re moving up the stack”, but that’s even, like, again, very sort of just like one step past the idea is to like think “Well, what do we want?” I go as far out to the kind of society that I wanna live in, and go backwards from there, but… So I don’t wanna get into that.

Actually, Kubernetes isn’t super interesting to me anymore. In the same way that I kind of quickly moved on from Docker, it’s like “Okay, I know how to do stuff with this. It’s a solved problem.” That happened really quickly with Docker, and then it was just really painful to sit through years of the industry kind of catching up, and even a lot of the best practices that I had kind of figured out early on, and talked about and shared and built tools like the Alpine Container Image – we found that and we were like “This is perfect for Docker.” So we brought Alpine to Docker. Before that, I was working on a BusyBox instance that had a package system, because it was like “You want BusyBox minimalism, but you wanna have packages”, so there’s a space between doing a custom single binary type of like Go thing, and something that can run SSH, or Bash, or whatever… But not have to rebuild a custom BusyBox just to get it.

So one of my early Docker containers was a BusyBox container with OPKG, which was a package manager for routers, I think.

And then I discovered Alpine, and I’m like “This has everything… With a couple of caveats, but this is great.” Now luckily everybody’s using Alpine as their base image, because it’s actually — like, you’re shipping containers around all the time, why are you sending these huge images?

[00:24:05.12] And I’m also really pleased to see stuff like webhooks… They’re everywhere. It took ten years, but… When I was working on webhooks, I was a lot of prototypes, adapters to give you webhooks for various things… Kind of as demos to show people like “Oh, this is what you can do and how easy it is to use webhooks to get certain events, and something like this.” So I made a mail hook gateway and a [unintelligible 00:24:37.06] a lot of API’s that do mail will provide those kinds of things, but a cron one… A bunch of things like that, and I was putting them all on App Engine.

And one of the things that seemed to make a lot of sense for webhooks is, well, you wanna write little scripts, little handler scripts, and it’s gotta be easy; I just wanna be able to wire something up and be done. So I basically imagine the pitch was a paste bin, but the code you that you put in it actually runs. This was a project called Scriplets, that will actually run on App Engine, so it was kind of a very early kind of serverless type of thing.

And there were a lot of those kind of hosted code type of things back then, and they were all positioned to build apps with… It was like, “No, their benefit…” — a lot of ones, like AppJet, and I can’t remember, I used to have a list of these… That let you just write code and hit Save. And there’s a bunch now, like AppKit and some interesting ones that have other cool properties, but Heroku originally was that as well, where you could write a little bit of code and handle webhooks. But they were all building things to build apps, and nobody really wanted that, so a lot of these went out of business.

Then AWS comes along, and they do Lambda, and they make it specifically for event handling… A lot for their internal events, but then also webhooks, and it can do HTTP, and the funny thing is — and then everybody wants to build apps with it, which was kind of hilarious. But even Lambda is not that, like, paste bin kind of experience where you just like write a little bit of handler code and hit save… You see that in pockets — I’m sure Flow has that kind of stuff… Some of the stuff that Microsoft is doing is really cool. Like, their durable functions is something that I’ve been working on for a long time sort of on the side, this idea that workflow automation is a really big thing, being able to write a program that interacts with multiple people over maybe a week… Send someone a task via e-mail, they say they’ve finished it, moves on, does some automation, and then gets approval from a handful of people, or a majority vote, or something… That gets into some really interesting things in what you can do in terms of automation of groups, not just businesses.

Most workflow automation stuff is just you’re kind of defining this big state machine, you do in this kind of like DSL type of thing, and it’s kind of painful. I just imagined being able to write some Javascript where you get to a function, and it doesn’t even have async/await, or maybe it does, but you get to a function that’s like “Okay, this function is gonna e-mail people for approval, and then it’s gonna wait until it gets approval from those people.” That might take a week or a month or a year – you don’t know, but as soon as they do, this needs to go to the next step. So you can start programming in the large with simple Javascript or something…

This finally became possible with some of the stuff that was done as first kernel extensions, and is now integrated into Docker. You can actually persist a process, pause a process, serialize it to disk – any process – and unserialize it, and it will start running exactly where it was. So with a little bit of infrastructure around this, you can build something that is that – you could write some Javascript that will run until it does something, where it needs to wait for an event, go to sleep, serialize it so it isn’t running anything, it costs nothing, it’s just storage of this serialized process… And then when the event comes in, it unserializes it, runs it and goes on as it were.

[00:28:24.00] That’s kind of what durable functions give you… So it’s validating on one hand, and a little — but I wanna talk more about Go. This is GoTime.

Source link


Please enter your comment!
Please enter your name here