Hey, welcome back to another episode of JavaScript Jabber.
This week, on our panel, we have Dan.
Shapier, Hello from Tel Aviv, which is actually cold, even though it's probably pretty warm by your standards.
He says cold.
It is below freezing here, or at least was this morning. And we also have a j O'Neill.
Yo ya yo coming at you live from the wonderful, wonderful shed.
I'm Charles Maxwood from Top End Devs. I am jealous of your shed.
We have a special guest this week, and that is Avishai is Shalom.
I hope I got close on that. I'm sorry if I didn't. So yeah, I've thought very deeply about putting something like that in the back of my house.
Anyway, Dan, you invited Avishai here, and it seems like you know each other pretty well. So do you want to introduce him and then he can fill in the gaps for us?
Yeah, well I do. I've known a Vishai for a while. I think we work together at Wicks a long time ago. Correct me if I'm wrong. And I've wanted to have a visha on or show for a while now, and I'm glad that he's finally able to join us. The reason for this is that, similarly to Tomer Gabel, we
had on the show a few weeks so good. Yeah, yes he was, We had him on the show a few weeks ago, so similar to him, Avishai is one of those people who when I communicate with often it forces me to rethink or even reconsider some of my technological assumptions and even core beliefs. Things that I hold to be obviously true suddenly don't seem so true anymore thanks to Avishai. And you know, it doesn't happen every day, but it does happen, and I have to say that
to be honest, this isn't always a comfortable experience. You know, we as people, as humans, we dislike having our viewpoints challenged in such ways. Even as engineers, we tend to be creatures of habit. You know, what we use, what we like to do, we continue doing the same thing, and you know, we prefer to stay the course as it were. We prefer complacency over disruption, even when we,
you know, proclaim otherwise. But I think it's really important for us to go through such experiences because that's how we grow. And when you have some such interactions, you know, you grow or the other party grows, or ideally you both grow as a result of such engagements. Now, I recently learned that a few of our guests that we had on the show apparently did not have a good time,
and that's really unfortunate. They felt a bit put upon when we ask them questions that require them to justify technical decisions that they made, and when we presented alternatives to solutions they came up with, they felt that, like, you know, we were kind of attacking them. Obviously, we want our guests to have a great time, and I think that most of them definitely do, and I hope Avisha that you will have a good time as well, we will say, but more importantly than that, we want
our audience to gain actual value from the show. We want our audience to learn something that actually benefits them in their career as engineers. And sometimes that requires, you know, asking harder questions, challenging our guests on those decisions that they've made, and if it does make them feel uncomfortable, well sorry, but not sorry, because it's really a part of what it is to, you know, on a podcast such as ours. I guess that there are others where
these things don't happen. You know, fine, I love a lot of other technical podcasts. You know, we have different emphasies, but this is how we do things. So you know, if you want to come on our show, you need to be ready to answer some tougher questions. It's just the way that we do do things. And that's what I wanted to say.
Yeah, I can give an example. You brought up Tomer Gabble when he was on the show, and you know, we had a lot of back and forth on like types, strong types, type systems, and you know, it was funny because I was thinking about it.
And then I watched the talk because you know.
I live a lot of my programming life in the Ruby world, and it was a discussion between David Heinemeier Hansen and Tobias or Toby Luki from from Shopify, and they were having that same discussion, right, and it was interesting just to see kind of the trade offs that they were talking about.
And then I wish that I could go back on that episode and say, so I.
Think you're right about this and not you know, and right, and I got better informed about maybe I'm not running
into the things that bring that trade off. And I think the kinds of questions and back and forth that you're talking about, Dan are the things that allow us to clarify that and open it up and go, Okay, these are the problems you're trying to solve, not these other ones, or these are the you know, this is where the trade offs really start to click into place, because what I find is that it's not always black
and white up and down the board. It may just be your experience leads you to make this decision where I'm just not working in a space where that matters, or maybe I just never considered that I needed to think about it that way, and you push me to do better.
So I agree with you.
I think I think some of that you know, back and forth, and hey, it looks like this solves a problem better than that. And you know, we're going to give people the tools to go, oh, yes I need that, I you know, or no, I'm not quite to the place where I need that. But then you be thinking about it as I get there or there, or maybe hey, you're talking to another group of people that think about things in a different way than I do.
And all of that is constructive.
Any thoughts of you shine.
But I can tell you that when I'm using static types, like I'm enjoying myself so much, and I'm like, what idiot would use dynamic types? And then when I'm using language that it's me. It's me right way. So when I'm using a closure it's my favorite language, I'm enjoying myself so much, and I'm like, what idiot would use static types? So it's actually like, once you get your mind into a specific style of programming, it feels very
natural to you. It's very easy to forget all the advantages at Allstein has so.
Cool.
Well let's talk about marshmallows.
Wait a minute. First of all of Isshai, I said that we worked together at Wicks. Can can you tell us a little bit about yourself?
Yes? I can. So I did a lot of wild stuff, I guess. I started my career as a physicist, not not really in it, and then at some point I discovered that I'm more interested in how fast my A simulations are running more than the actual results. So I kind of switched into into it. Initially, I went into systems.
I did that for a while, and then I founded the consulting company and I worked on a lot of different stuff, a part of lost large scale architecture and performance stuff and some training of engineers, and at some point I stumbled into big data. It was like the big doup hype back in the day. So I spent about two years, you know, getting people off a dupe because they didn't have enough data, you know, the whole data fits in rum thing. And after that I went
to work at Wicks. I did. I had the back end team at Wicks and from Wiks I went to work for a VC. That's quite a co change, I guess. Uh. So I was in in the residents at the Alish VC. It's one of the prominent vcs in as well. And after that they went to work for CLDB, which is a high performance Cassandra clone written C plus plus. Very unique and interesting thing if you want to talk about that.
And since then I've been an independent of social Now nowadays I'm mostly working on performance problems and training engineers, which is my con passion. I think that now that we have the ai AH, we have a very big problem because everything's too easy, so you don't actually learn how stuff works. So the funnel of becoming a senior from from a junior is now gone. If you think about network engineers, for example, how did you train to
be a network engineer? Back in the day, you had your home auto and you played with it, and you needed to let's say, you know, define the DHP and the DNS and what stuff and nat if you had some kind of home auto and you learned doing that. Nowadays, you just get Google Mesh and you install it and everything works. So there's no reason if you'd fiddle with it and actually learned networks. So there's no funnel for network engineers anymore. So it's a problem I'm trying to help solve.
You know. I'm thinking about all, you know, all the American TV shows where you have the father lifting up the hood of the car and showing their son or daughter how it actually works, how it runs. And I'm thinking about all the new electrical cars that's pretty much gone.
Yeah, I had experienced and motorcycles. I had one of the last motorcycles that still had colpools. And then the fulling models already have the fuel injections. Fuel injection, yeah, yeah, exactly. And you can't you can't tune it, you can't fix it.
So the day.
Yeah, I've never heard anyone argue against fuel injection.
I've never but I mean the trade off. Yeah, it's it's more fuel efficient, it has no performance, it's no reliable. But the downside is that you don't get to learn how motorcycles work anymore. You can.
Controlled by the computer.
Yeah, exactly, there's no no.
Mechanical management of it.
That's that's interesting because I so, I just got a motorcycle, and I'm actually glad that I got one that you know, I got an old one, so it was cheap, but it was just new enough that it was fuel injected, and which motorcycles got fuel injected much later than car did. I mean a lot of four wheelers I think are still carbureted. But yeah, I kind of I kind of felt like I dodged the bullet. I still feel like
I'm learning about it, but I didn't. I didn't have that sense of understanding the carburetor is is key to understanding the maintenance of the motorcycle. Set's I'm yeah, I'm really, I'm really interested that you said that. I'm I have to sit on that for a minute. I wonder what you know that I don't know that makes you feel that way obviously something.
So I'll give you an example. You live in a colder climate, right, so you need to heat up your motorcycle for a little while before you start gliding it. And the reason for that is because of the cowboy tool and because you actually need heat for the fuel to spray in, you know, to the mixture. So did you get you actually get it into the engine and it blows up? Was with you know, the injection system? You don't need to do that. The computer text out
of it. So whole like even this bit of thinking for pausing for a second thinking, Okay, I need to warm up my car because you know call the climate fuel mixture that stuff that's gone. You're not even aware of it anymore.
I so my mine is fuel injected. It's just new enough to be fuel injected. But it does it does definitely behave differently like I can tell. Yeah, I do get a sense of it. But yeah, the four wheeler, I actually have to actually have to tune the carburetor of the four wheeler so it'll start in the winter and not flood in the summer.
I'm still thinking about the fact that you define yourself as a researcher, and I'm curious what that means and how that translates to real life.
So a lot of the stuff they do right now is first of all, a lot of reading, but also a lot of observing and experimenting. So some of it is like on how systems work, and some of it is into models. And I'm saying models specifically because it relates to how people understand systems. You don't actually understand a system because you don't actually get to direct experience the system, and you cannot perceive a system. What you perceive is a model of the system that you build
inside of your head. And there are some common models that we all know and they play a very important part in how we pass the world around us. So understanding those models, or inventing new models and making them approachable to people is a very important part of teaching and also debugging and architecture and all that stuff that
we do. So the research part, some of it is just going through the field and seeing what is comprehensible to people and how people pass the world that they see and how they look at the world that they see. Because you've viewed the system through dashboards and graphs and metrics and of course all the tools that you have, and some of it is learning psychology and learning ecology and you know, how people think about stuff, how the brain works, all the cognitive biases that go into play.
And some of it is actually researching the tech stack because that also informs and kind of conditions the way that we experience things.
And you're able to make a living doing that. Cool.
Not yet, So I'm doing consulting mostly the performance stuff. I am giving some workshops, which is starting to get more and more like a bigger and bigger part of the work that I do. So at some point, I guess it will become the main thing that I do. Hopefully I can make a living just doing that, but we'll see.
I just wanted to also add that, you know, when you were speaking about the importance of models, it kind of also directly translates to the importance of naming things and naming things properly.
Yeah, because it's just it's not just the name, it's the name and everything, you know, all the associations that it tells with it.
I totally agree. So I actually brought you here because of an I don't know if you know, going back to my kind of little speech at the beginning because of this argument we had online about binary protocols versus sexual protocols. But while preparing I also read or reread some of the articles that you posted on your excellent website website, uh and so, and there were two the latest two posts. They're kind of caught my eye. One of them is titled Don't Paint the Roses and the
other is titled the Marshmallow Effect. And I definitely want to talk about these as well. So I'll leave it up to you which which one of those three you want to start with.
I'm cool with those all of them, but let's talk about text and binary protocols for a second.
Okay for sure.
It's also like it ties very nicely into the other topics. So actually, one of the points that I want make is that there is no such thing as a text protocol.
You kind of stole the one of what I wanted to say. I basically wanted to say that if you go down low enough in the stack, everything is binary. It's at the end of the day, it's bits over the wire, so obviously it's it's binary. And you know, you encrypt things, you compress things, so so obviously that turns them into binary data. But I was more thinking
about the applicative layer. So I was making the argument that at the applicative layer, in a lot of cases, not always, but in a lot of cases, there are benefits to text based protocols, for example, protocols that send JSON or XML or god forbid or or HTTP over the wire. And from my understanding, you were making the argument that in most cases, a binary protocol is what you prefer.
So that's one that's part of it. But I think that the problem with this discussion is that it's about, you know, the civilization and the protocol itself, and it ignoes the larger context of how we write software, you know, when we have a sort of protocol. And I'll give you an example of what I mean. So Jason, for example, doesn't actually specify what the size of an integer is, okay,
or what the actual precision of the float is. And and they kind of fixed it in the following out of seas, but not all implements, of course, adhere to it. But the thing about this is that if you convert to a binyl protocol corpor binyl protocol, it takes much less and much more like bytes, much more verbals in how it in codes things. So a specific number, for example, if you basically you have one byte per digit, so very large number actually takes a lot of space, which
means it has a lot of facts. But it means that when you're writing software you would not use the same precision because of this. So the protocol actually affects how you write the code. And we have a lot of code that is written under the you know, assuming that you're going to use certain protocol, and because of it,
it's written differently. You're not actually using the same position, you're not actually using the same data types, you're not actually actually writing the same software that you would otherwise. So even if the efficiency of binary protocols would be the same, and it's not, you would so profell to have them because of because it allows you to write better software. And that's an angle that is not often
discussed when you're talking about protocols. And just to clarify this example more, think about what happens if you want to do a denial of service attack against you know, some server that accept Jason XML, you actually have to lead the entire Jason before you understand that the message is done. So you have to have very large buffles just in case, you know, someone actually decides to send
you know, like eight megabytes of Jason. And if I send a very large and very deep Jason to you, I can very easily do like denial of service attack against parser. Well as in YO protocol, most of them have very strict schemas which allow them to detect no phone messages very very easily and very early. They don't actually need to have the entire buffal. Most of them can also stream, so it makes the website of those much more efficient, much more, much cheaper, but also immune
to the now service tax. And this guy, you can actually say this effect in all the text based protocols. So even if the protocols, you know, they have the same payload size and they you know, network was the same and everything else was the same, just because we can write better software, I would prefer to have banier protocols.
So here's the thing. First of all, I can get into the technicalities of you know, some of the downsides that you mentioned, but before that, I want to explain, like what caused me to say that in many cases I prefer textual protocols. But first, before that, even I want to say that obviously there are scenarios where textual protocols are totally not appropriate yet. So for example, nobody would send a video stream as the textual protocol, or even images over the wire. It's probably a bad idea
to send them as textual protocol. And I'll let you respond in a second age. I just wanted to say that the two reasons that I wanted to say as positives for textual protocol before we get into the possibilities of you know, some of the negatives that you mentioned is one that it's easily humanly readable, which is significant benefit for me when I have to work with protocols. Second is the fact that in many cases I don't
really care. I care that something is a number rather than exactly how many bits it takes to represent it in the exact format. And finally is the fact that you can make text show protocols and binary protocols together, which can get you the benefit of both worlds.
And now to you aging, So there's there's somewhat of a snuck premise in what you've said, which is that me or or a h ah, sorry, there's there's somewhat of a snuck premise in that you're saying if people are using text protocols, they're less efficient and they're more subject to these issues because because of the text protocol itself.
When I'm going to argue that, because of my own experience, and I imagine you've seen this too, if you gave someone a binary protocol and it were to become popular, the binary protocol would have all of the same problems because the issue with the dialogue, to the denial of service, not bounds checking, not having a bite limits, to rate limits, those are engineering issues. They're not protocol issues. They're not
the fault of the data format. Likewise, what goes over the network is a bit different depending on the size of message. But we're talking about communication, not binary files.
We're not talking about videos. We're talking about communication. Normally, those messages are going to fit into a TCP packet, and if they're not going to fit into a TCP packet, taking away ten to twenty percent of the brackets embraces and replacing that with little, little size headers is not actually going to be what makes the difference in you know, in the long run of when we're exchanging messages back and forth. How do we fit them into a TCP packet.
We have to you know, significant like if a person's typing a paragraph, they're just typing a paragraph, you know that's going to fit if it's so, there's these other things. So I don't think that I will agree with you. There's a lot of benefits to binary protocols, but I think the examples you you gave are a little bit straw.
Many before.
Avisia, before you respond to that, I think it might and we will definitely let you respond. I just I thought it might be worthwhile to provide specific examples of what we mean by textual protocol and binary protocols because we're kind of being, you know, talking in theory, so it might be worthwhile to translate it into actual practice. So can we give an example of a binary protocol? And can we give an example of textual protocol? And maybe if we can give an example of a mix so a.
Taxi protocol, for example, would be a Jason. Jason is a soilization format that basically JavaScript notation object plantation. It's based on JavaScript. It's all value JavaScript, and it encodes data strings and the arrays and dictionaries and numbers as ASK or UTF eight characters, whereas a Vinyl protocol would be something like a proto buff which encodes similar data
in this case with some schema as bytes. So a number, for example, would be just you know, a bike representation, which also means that numbers are represented in a much more efficient way. The number one, for example, would take just you know, one byte, but also you know eighteen and twenty five would be also the one byte, whereas in JavaScript, so in JSON the number twenty six is two bytes because that's two characters, so it's actually like
the text representation of a number. But h I agree with you, By the way, I think that the framing this discussion as textual protocols versus final protocols is wrong because it's done said. It's all binary over the wire. Really, the question is the discussion should be specialized protocols versus
general purpose protocols. And we know that it's also mathematically proven that general purpose protocols or general purpose things are less efficient across the board well as specialized things are obviously more efficient in specific use case, but may be less efficient in other use cases. And this is why I don't like the disframing of the discussions text versus everything else. Its text was selected because it's like a
universal representation. It makes very few assumptions about what goes over of the protocol, and it's based on some premise which we inherited, which is that we are transmitting textual documents. And this specific assumption was more or less universal because when it was invented in the seventies, this is basically what we sent over the network, textual documents of sorts. We didn't send images videos back then.
And if I can interrupt you for a second, I was about to give two more or a few more examples of such protocols. Exactly. An example of a textual protocol is in It's exactly the scenario of a document over the wire. Is sending the HTML document over HTTP. The HTP headers are textual and the HTTP body, which is the HTML document, is also textual. On the other hand, if you're sending an image over HTTP, then then you're the header remains textual, but the body becomes binary.
This doesn't structure us.
On. Let me tell you a story. I several years back, I was working on software for a remote access Basically, it was running a desktop or Windows desktop or Windows application in a data center, on a server or on a VM and accessing it remotely using the browser. So basically replicating a Windows desktop interactively inside the browser. And you want this to be really responsive, and ideally you
want even to be able to support animations. And you know, even though I'm talking about something like fifteen years back, we were able to hit something like ten fps for videos running on the server being streamed in this way over web socket to the client to be re drawn
by JavaScript. And we were ending commands and images. So a command might be, you know, draw an image, but it might also be draw a line, or play some sound, or you know, do some various other things that user interface Windows user interfaces do, and we we mixed, so the commands were sent as small Jason packets, and the images and audio and stuff like that they were sented
as binary uh. And it actually made the protocol I would almost say, beautiful, because we were literally able to drive directly translate those Jason small Jason packets into function called JavaScript function calls with parameters, So basically sending commands over the wire directly translated into executing JavaScript commands where and and the binary packets were handled as you know or pay binary blobs. You just gave them to the blob object and you got an image or an audio
file or whatever. So I don't see any problem with that. It's basically, if we're going back to the example of HTTP. Obviously, the image is not something that I'm going to be sending as textual data, and it has it's kind of meaningless as textual data. But being able to look at the HTTP header instructions easily, you know, without requiring special tools, from my perspective, has a lot of value.
But you do you don't actually look at the HTP without special tools. You always use some special tools. So when you look at the HTP you use TCP dump, which is a specialized tool and by the way, knows pauls binary, or using a browser which knows how to pass binary, or using something similar like wild shark. All of those tools actually pass.
Finally, I use current fair enough and netcat.
Net cat is the only general purpose too that in this case I killed the specialized too. What prevents netcat from passing.
Binally, my issue with binary is that in many of those cases it feels like premature optimization, and it leads to even more premature optimizations. And the fact and the fact that I really need highly specialized tools versus generally available general specialized tools in order to parse it is detrimental for my experience.
So I would say that the little problem and the little discussion here is about tooling, actually tooling.
And sols about tooling.
The down pointing system is too, so so does that. But let me try to reframe the conversation a little bit here. So I view for a BUFF, for example, as as not as a binary protocol, but rather as a carrier for a family of user defined protocols. Okay, well, as uh, this is really the problem I have with with the text and HML that stuff is that it's it's a very poor system for writing usually defined protocols
on top of it. Well, protoboff is a very good system for doing that because it was designed to do exactly that. So every message, every every protocol that you write on top of protocol or protobo is specialized, but you do get to define how it behaves.
Can you elaborate a little bit about what protoboff is, because I think many of our listeners will.
The part above is A is a protoc it's actually three three things. It's a serialization protocol. It's a network stack, not network stack, but network protocol and schemas uh and and this stem was designed by Google first. It was designed for antle used then they open sourced it, and they also open source the OPC level that came with it, know us DOLPC. It's a multiplatform system and it has a lot of fancy features, but that's not really what
we're talking about here. And the way that you would use photobop is that you would likee something called the protofile, which defines the schema of messages, and then the server and client can agree on what is being sent and they know how to past messages and all that stuff. And protobap messages can be sent over like binary network protocols and HTTP and you know, various other protocols. You can even save them to files if you wanted to.
So the kind of universal in this way. And this is the nice thing about this, that you can actually use a carrier that's more efficient or you know, more widely supported, depending on the use case.
I'm having a real hard time with this. It seems like we're suggesting that the network is one of the great bottlenecks that we need to be concerned with when I don't see that in my experience. I agree that gRPC could be great for server to server communication in internal infrastructure, but I've also seen a talk that specifically
argued against it. Where I mean, you can see a talk for everything right, so that doesn't say much, but the arguments were very compelling that the development time that they saved by having everything internal and external as JSON, being able to debug any service quickly you look in the logs that the efficiency that they gained by not worrying as much about one of their most abundant resources was well worth it. And what I have seen with gRPC is it's a level of complexity that most people
can't manage. So I'm not saying that the experts that are working in the in the enterprise in highly tuned scenarios shouldn't be using it. They know what they're doing, they have use cases that I personally don't have. But what I have seen looks like and this could be a misconfiguration, but it looks like a minimum of two megabytes of JavaScript to be able to produce a few gRPC messages. Now, obviously you could you could hand tune it,
and you could do that in you know bytes. But what I've seen is that the generated tools like the proto buff C generates an entire infrastructure for proto buff to basically get out that Hello World message. So I am not convinced for web applications that that what you're saying aligns with the experience that I have or that I know other you know, I'm not seeing it.
And you're not going right away. So here's the fundamental problem. And we said that's a tooling problem. Yeah, sure, So javact doesn't actually support Jason. The buzzle does.
So what is at this point, I'm pretty I mean, is it not part of the ACTMASCRIPT standard. I I thought it was adopted, which am I mistaken?
No, No, it's it's the it's V eight.
No, I think you're saying. Sorry, what Avisha I think is saying is that the code that parses the Jason is not written in JavaScript. It's written in in or C plus or something. Whether it's part of V eight or or blink is is kind of irrelevant to the web development.
But but the thing is this, So first of all, that to mention the GTP thing, I find it very odd that the headles, which are the only thing that should be very very efficient and and is completely independent of you know, the actual payload and whatead is text
or binary is text. And this is actually a very big problem that Google and you know the rest of the people working on HTP three encountered, actually they encountered in HDP two when they tried to introduce by binary headles because of all the reasons that are mentioned, because it's more efficient, because it protects the server and client implementations against the denial of service tax and all that stuff. So actually binary headles is something that everybody wants, but
for historical reasons, we don't have. And if we designed HTP today, we would actually do the reverse. We would have binary headles and everything else could be text of binary. The reason that we have it in the verse is because of your basically the history of your computing systems and the Internet. And going back to your point about GPC versus Jason, Yes, Jason is universal for again for sol cobles and all the buzz will support it. But
and this makes it the path of this resistence. So you're not incorrect in saying that, you know, put aboff coute les hodow, and it's true, it's hollow, but it's horbo because it's not universal in the sense that not all the tooling supports it natively well.
And this is yes, yeah, because I'm not just saying it's harder.
I also want to mention that everybody actually likes schemas, even for Jason. They don't do it explicitly, but the code actually has a schema for what message is and agreed, So it's not that you get around, you know, this complexity of writing schemas and describing the message as when you're doing Jason. Mmm.
So to the first point, I'm not saying it's harder, I'm saying that it's it is in fact less efficient in one of the key areas that matters. I agree with you. Can we get a binary protocol built into the browser, like, can we have like we have Jason dot stringify, Jason dot parse. Can we get in the browser proto buff dot parse? Sure, like that would be cool.
We can send binary data off off of web sockets. WebRTC is a binary protocol. You can send data in it, so we kind of do we are restricted in what we can send and and the in the carrier. But but to an extent we we we already do.
Well, I mean the machinery. There's a lot of binery to produce binary I do.
Want to say, I do want to say something about Jason and and the parsing problem. Now, obviously it's not a solution to denial of service, even though you can,
you know, build such solutions. But if you're looking at it from a straight on protocol, what somehow eludes a lot of people is that instead of send being a huge JSON that needs to be parsed in its entirety before anything can be done with it, it's usually very straightforward to send much smaller Jason packets or parts and then parse each one of them individually.
So well, json L does this, and that's a pretty decent solution.
It might, as long as everybody on the system is well behaved.
Yes, of course, So okay, one question I had earlier. Cbore and as N one are binary protocols that are generic protocols. I would think that in every way they suffer from the same problems as Jason. So proto buff is different. Proto buff is packed strucks. So would you also say that Cboor is you know, pretty much just as bad as Jason Or would you put seboor in the category of proto buff.
So I would argue that every universal general purpose protocol suffers from similar problems. It's not really about text or by any It's it's more about, uh, restricting the use cases, which is well schemes tie in. And this is why I like protuba and similar systems because they allow you to define, you know, the special cases and you know, make up your own rules about what they mean and how to use them and how to validate them, and and and really this is like a big issue in
computer systems in general. It's not really about like civilization, it's it's about systems in general. You you actually see this problem in many other cases. And going back to the point that you made earlier, and this is also a problem of you deploying stuff in the large scale, because every time we deploy protocol, if it's successful, it becomes legacy. And legacy you know, it's a very thing, but actually it means that you had something that worked
very well. And once something works very well and becomes you know, widely used, now you have a problem because it's a network system and replace it. Everybody has to replaced it, which is why you know it takes such such a long time to deploy replacements for HDP one point one or you know, TCP or ip before and everything else. It's it's all basically the same problem. It's
something that was widely successful. Now it kind of hit the limits of what it can do, and we actually suffer greatly from the limits of you know, the coding system. You know, you can see this IPD four for example,
but also with HDP. There are many reasons why we want to replace HTP, but calling out a new version or something to replace it, it's actually a very big problem, which goes into back root compatibility and you know, actually having everybody installed tooling you know, to make it universal before the connective use it, and then you'll start sending out a new protocol and starting to use it. So
really that's the problem. It's not that I don't think anybody you know, argues that Jason is somehow good or like that the most optimized system or the best system or anything like that. I think everybody pretty much, okay, except Ajmabe, but I think most people would agree that we can have better systems. It's just a problem of how to all it out.
It kind of reminds me if I if I I
recall a talk by Alan k whom I admire. He gave this talk something like twenty something years ago when when the web was starting to explode, and it turns out that the web was really rubbing him the wrong way for a lot of the reasons that you were mentioning a Vishai, and he showed a system built Surprise Surprise on small talk that was sending messages and agents across the wire, and he replicated various web apps, whatever web apps we had some twenty years ago with his system,
and he did an interesting comparison. He was showing measuring the temperature of the computer running a web based solution versus his solutions, showing that his solution was running colder,
much more green, much more environmentally friendly. And his system was amazing, But you know, looking at it, you know there was basically no chance because nobody was going to rip out the web and replace it with the custom solution built on small talk, regardless of how amazing llen K is and how great it theechnologies that he comes up with are.
Yeah, because when you have a successful system, you need to have a very large advantage or very large limitation in the code system two, you know, to actually pay, you know, the very steep price of replacing the entil system. And it makes sense. This is why we have legacy. It's not a bad thing. But though many many like the only a lot of reasons, a lot of the it's becoming more and more obvious that the code stack is hitting the limits and we need to start replacing it.
You see this with IP before because we basically ran out of the address of a space, so we have no choice at this point. We have to replace it just takes a very long time. You see this with HDP one point one though, a lot of problems with it. So now we have HDP two and HP three and like we're rolling it out as we go, and HDP three is based on UDP not TCP again because of
the limits of TCP. And now we are starting to see a movement to get rid of TICIP in data centers to place it with UDIPBIS protocols.
I don't know if I call it the limits of TCIP rather various the implementation decisions that made total sense in the seventies and the networks that we had back then don't make sense anymore in today's cellular networks and whatnot exactly.
And this is the thing. It's like, whenever you make a design choice, although no right design choices that doesn't exist. What you have is a design choice that walks and works well enough, and you know that reality is going to change, you know, whether or not because computers change, or technology changes, or the users change their mind or whatever, it doesn't matter. It's going to change. At some point
you will have to change the system. And good protocols and good systems adapt, but there's a limit to how much you can adapt. Like at some point the basic assumptions that you made but the system are going to be invalidated. And at that point, you know, the system is going to start hitting limits. And you can live with it for some time, but at some point you
will have to replace it. So when we build systems, you know, back in the day in the seventies, we didn't think about, you know, future proofing it, and we didn't think about sunsetting it and how you replace it with the next generation. Now we'll smallter. We already know it's going to happen, because you know, we had this experience of a system that became very successful, the Internet, and we actually got to be old enough to see
it hit the limits. So we are now a well of this problem and we know that the next generation has to be future poofed. But you know, we'll learn it to holdway.
Is it, though, we will only know when we get there.
I'm pretty sure that we will have to replace everything again in like thirty forty years, if not soon.
By the way, this is, I think we could talk on about this. You know, we can keep on talking about this, but I think this is an actually an opportunity to kind of pivot to one of the articles you wrote, because it really ties into a lot of what you're saying, which is the article with this amazing name, which is Don't Paint the Roses, which is a reference to u a part in Alice in Wonderland. Can you can you explain where this came from and kind of how it ties into what we're talking about.
The song of the Disney movie keeps playing in my head every time we Yeah, it's.
A great scene. Anyway, Yeah, so those scene in Alice in Wonderland, this version from I think the forties, right, all the fifties. Yeah, by the way, painted, they actually painted all the friends by hand. And in the scene you see the cord soldiers, you know, painting the rose bushes. They're painting in them red because they accidentally planted the white roses and the queen wants them to be read,
so they just paint all the roses. And the problem with this is that, you know, at some point the queen comes and she discovers that those bushes were painted, and she you know, goes off of their heads and all the cards lose their heads, which is very unfortunate to them, and.
What never happened in a modern Disney movie.
So the thing is that we actually have a lot of painted oil bushes around us. In reality, it's like something that we try to fall into a form, even though the COVID like the essence of it is very different. And this is you know, a lot to do with the industrial mindset of the design of mindset versus the organic mindset or the agriculture mindset. If you're trying to growth something something that is organic, actually control what it will grow into. You can you know, kind of try
to to direct and influence it. You can influence it, you can direct it.
You know you can.
You have like for example, Bonsaie is a very good example, where you trim the roots to make it and the tree to make it in certain shape and size, so you can constrain it somewhat and direct the growth, but you can't actually change the essence of it. A bonesie tree will always look like a tree no matter what
you do to it. And the industrial mindset is a designer mindset where you design something and you can actually force it to be that thing, and if it doesn't work that way, you can just destroy it and start over. So the problem we have in mode of society is that we are an industrial society and when we get to organic situations, we try to handle them into a sort of form, even though you know it's the organic and the very So the example of this is organization building.
Organizations are organic. You can't just decide that you know they're going to be in a certain way. But you know, if you've been in corporate and you've lived through you know one of those organizational restructuring programs, you know what I'm talking about.
Uh, and it kind of has to do with with what we were talking about before about legacy systems and legacy protocols, where certainly you can say that a lot of the Web has evolved more than it was designed. I think there's an excellent quote that I love in the HTP spec which basically says, we recognize that a lot of what is written here is kind of doesn't
make sense, and it's even nonsensical. But that's the because it evolved more than it was designed, and a lot of discrete teams were working on it and working without proper synchronization and stuff like that, so it kind of grew organically rather than being designed, certainly not top down.
A lot of seas actually described the factor protocols which will later qualify the ol seas. Rather than having them, you know, designing the protocols, documenting them in our season and then implementing them. It was actually backwards.
Well, if you think about what RFC stands for, it's a request for what is it comment for comment? It's basically it's not here's the spec. It's basically, I've got an idea, what do you think about it? And you know, this request becomes codified as as the actual specification.
Yeah, so it turns out that basically the web is a network of consensus. It's not so much design network as it is an organic network that evolved and we somehow got to a consensus about how it should walk. A few years back, you had an incident. Well, cloud flowed actually did something according to the LFCI, according to the spec but everybody else was using it differently, and
this created basically an outage in total services. And after they discovered it, they fixed it in the sense that they now conformed to everybody else, which means that they violate the spec So this is basically how they entered the walks. We walks the consensus. It doesn't work by specification.
Anyone who's ever wondered why user agents look the way that they do. I remember when Microsoft released a new version of what was it, a certain version of what's their browser's name, Edge, and they broke off a three sixty five on Edge because they actually used a proper user agent, but that confused their detection protocol, so they had to put in a wrong user agent yet again, just in order to get things to work right.
The wheel of time keeps coming around and around.
But how do you deal with it? I mean, you know, at the end of the day, we are very often forced to paint the roses because we need to deliver something on time, within budget, and we don't have the time to grow a new solution and make it conformed to whatever we already have.
So it's it's it's a mindset actually, first all conversation you want to have with you know, the product manager and the business people because it's it's optimizing for the long age. Really, So even if you are forced to paint all of those bushes, you want to have some kind of an escape patch. You want to be propelled to eventuality. Well, you know someone will find out this is that really painted ball bush you because once someone discovers this, there will be consequences and there will not
be nice. You know, it can be off with your head at some point. So if you adopt this mindset of organic growth and you understand that as a designer, you're actually looking for experimentation, you're looking for a future pool things, you're looking for escape passing hatches, you're looking for minimalistic design. So a good design is one that doesn't make decisions that it doesn't have to.
You can examples going either way. For what, can you give concrete examples of either where painting the roses ended in disaster or or converse or conversely was done successfully.
Yeah, so I can give actually a lot of examples this, So okay, let me actually if we won't go into that specific so you know how we can talk about the develops for example, develops is a very good example. Develops is a classic painted doll bush because it started out as something organic. You know, we had this movement that you know, said, look, we have this problem between operations and then developers. They don't understand each other. There's
like a structural problem in organizations. There's a structured problem in the software stack where we have parts that don't you know, connect to each other. And then we, you know, we started trying to solve this problem. And then someone says, okay, you know what, let's invent a new profession. You can call it DevOps. Let's invent devlops tooling, let's invent the
DevOps team, the devils engineer, blah blah blah. And now we have a painted close bush because we tried to design the solutions that are growing organically and it got so bad that now people talk about DevOps, you know, not interacting with ops all devs. So we have the like DevOps problem you can call it, and you have tools that are trying to solve the problem. Well, DevOps tools don't communicate well with depth tools or tools, which is like, yeah, ridiculous.
Yeah, it's like it's it's it. It's like it was a buzzword that was created to sell aws certificates, and you end up with all these people who create these layers of infrastructure that don't help the developers. Developers now have to wait, you know, fifteen minutes for their deployees to get through.
Yeah.
Oh oh, this is I'll shut up now because this is one of my Yeah.
But as point, it was originally this movement to bridge the gap between like infrastructure and code and make it manageable so that you could communicate about this stuff and the way you communicated about the stuff and the way you set up your your your people and your processes. And that's what it got co opted into, right.
That's yeah, sorry, I think the Phoenix project still used it in the sense in which it was intended. The book the it's called the is it. The Phoenix project is the name of the book. I think that that one talks about DevOps in the actual terms of what DevOps is supposed to be, like partnering with the development team and the operation team to to understand both sides and provide tools that facilitate quicker and more efficient Yeah, agile development.
Very good example.
Another interesting example I'm saying and running into is the whole concept of shift left and development, where you say, instead of having dedicated QA and automation teams, we let the developers do the automation and be responsible for the testing, which is great on the one hand, but on the other hand, results in a situation where nobody owns or is responsible for the automations, and then when something breaks, nobody knows how to fix it.
And it's also very weird because you know, if you have a process and you shift everything left, you know, you still end up with something in the right. You know, you shift on the dominos left, you still have a serious dominoes like something is going to be on the other side. Yeah.
Yeah, before we're done, I really you want to touch on the other posts as well. We are running, We're starting to run towards the end, but I really like to spend a few words on that. And that's another post with a great name, and it's called the marshmallow effect.
Oh yeah, So the marshmallow effect basically is stuff that has the you know, the original name, but it doesn't actually have any of the original ingredients. So most people don't know. But marshmallow was originally made from a marshmallow plantallow wood, and obviously you know nowadays marshmallows made from coal, silk, and sugar basically, and it doesn't actually have the taste. Yeah, and it doesn't actually have the taste of actually marshmallows.
Some places in New Rope you can still get the original stuff. It's very hard, but you can still get it. But those in the food industry, it's actually very common. A lot of the stuff that the industrial stuff we today like still has the same names as the vigils from one hundred years ago because it's actually but it's not the same thing, doesn't even taste the same.
I remember growing up they never ate it. I remember growing up in in the in the what was it like in the eighties and in the States, there was this leon lemonade called Old fashioned country lemonade or something like that, which had zero lemons in it. Uh And and yeah, I remember how shocked I was by that.
I thought you were going to say that you used to drink cocaine in your Coca cola.
Wonder bread, wonder blood. Another good one. And if we have something called sacla which is like a torkash drink which was made from safa plant, but obviously now it's not. And like, yeah, I still remember the vigilal saclub. But people who like you know, grow up now, they never actually tasted. They think that what they're drinking now safa it's not. But you also say this in technology, and I think the cloud is a very good example. You know, people talk about like discs. It is it's not a disc.
It looks like yeah, I mean it looks like a disc. It has you know, some fake blocks and stuff, but it's it's not actually a disc. It's not magnetic or SSD or anything like it. It's just a name that puts on to tell you that this has certain eye ops and certain speed and buildings.
That's kind of intentional. With virtualization, the whole concept of virtualization virtual memory. Going back to virtual memory is the fact that you know, virtual memory is not memory. It's files on a disc, but it's it's it's one thing that's intentionally created to look like another for very exactly.
So it's backwards compatibility. But that creates a lot of interesting problems because first of all, it impacts how people think about the system. So I'll give you an example. People often debate whether they should use A or e B S or e f S, which is like NFS, and then they're like, oh, but discs A, you know, have these features or have this speed or whatever, And it's all long because actually S three and EBS, you know,
they actually the same machines doing the storage. E f S is basically like the same with the VBS, except the protocol that you use to communicate with it. And so the real question is not, you know, if it's like discs or something else, it's like how many eye ups are getting and do you like this protocol that
you're using to to talk to this storage. So though that's what you should be you know, talking about, really, but session people have because they don't understand that this is actually all the same storage, just presented in a different way, and you have a similar problem with VPC because you know it's again Beckward's compatibility, which you don't actually needed the cloud.
You know.
I had this conversation with one of my clients, well, they consulted me about out network design, like, okay, so how many subnets do we need to do and do we need to put all the application on the same subnet? And I was like, but you know, it's not just because you have the same subject doesn't actually mean everything the subjet is physically close. It's not going to have better latency or anything like it. You know, it's all
public network the entire zone. You know, It's like, it doesn't matter if you if you use like one stub at twenty subnets, it's still going to be the same, the same, you know, under like structures that you have no idea about.
So if if I'm understanding correctly, what you're saying or even lamenting is the fact that we create these sorts of virtualization layers that are kind of lies, and we do that to ease transitions, that say, between systems, but at the end we end up lying to ourselves because we're carrying over mindset and certain assumptions of how things work. When they don't actually worked that way at all anymore.
Yes, and hills would get interesting because I'm through the generation that actually used data centers. I installed data centers, and I worked in data centers, and I know that stuff very well because I actually interacted with the machines. But now you have a generation that started the careers in the cloud with virtualization, and now though basically eating marshmallows, and they never actually tasted the new stuff.
You're making me feel old.
My first full time tech job, or not full time, it was part time, but I was when I was a student at BYU, I was working in the data center, and the server was a server, it was a machine, right.
Some of those machines were like they take up a whole freaking cabinet.
And then.
Right by the time I left, now.
We had servers that were we had these servers with blade servers in them, right, and so it was it was a box that had a bunch of computers in it. But then we had dmware installed on those, and so then a server was this virtual thing that lived on this right, but you still knew which server your server ran on, right, And yeah, anyway, and then talking.
Volved and then VMware introduced v motion, which allowed them to move those vms between machines without ye without time. And then we got to the cloud, to the actual cloud where you literally have no idea where your lambdads are running.
Right, and also have very interesting discussions between people about the same like containers more efficient, vms the more efficient, and it's like very little discussion because it's all the same stuff.
Yeah, and we've got this problem, like docer is recreating the very problem that it was intended to solve. So for example, uh, the blue Sky self hosted installer choirs that you run on Ubuntu so that it can install all the things that need to be installed to install and configure Docker so that you install the packages in the container in a predictable way. It's like, well, why didn't you just say blue Sky only runs on Ubuntu or you need to follow you need to install these
ten packages on your own right. But now, but now it's like I have to so in my container, I have to have nesting so that I can run debians so that I can run the Docker so that I could run Debian.
Yeah.
Machine, well yeah, yeah, yeah, yeah. We can't ship your machine to to the client, but we ship a clone and still nobody knows what's going like that. This is the thing I always say, so that, but that you know, the problem with Docker is not docer. Docker is a great technology, is a technology the doc The problem with Docker is that it just moved the goalpost to no. No one understands why my machine works, will ship a clone of the machine to no one understands why the
Docker file works will ship well. And then you don't even get it because it's hosted on Docker Hub, so you don't even get to see the Docker file. So you don't even know how to recreate the container at all. So we're actually worse off because at least before you could kind of like look at the history on the machine. Now you get a container where all the history is stripped out and you don't.
Know how it got there.
Well, they do have the layers and things like that, but what's fascinating about it is that and it should work anywhere, but yeah, you know, it does make assumptions about how your Docker set up on your machine.
Twist.
Then it's a go binary and it didn't need any of it anyway.
I'm ashamed to say that I've managed to have a pretty good engineering career without you know, truly understanding the finer details of Docker.
It's just a Linux process group. It's just a process groups. It's just like forking from process but with more kernel level security.
I want to make a shameless plug. Like about a decade ago, Nati Cohen and myself had a workshop called Rabo docer or docer from scratch. Will you write your own docer clone in Python and you basically implement docer using you know, Linux system calls like a clone folk and like over the fight system and the name spaces and c groups and all that stuff. So it actually gives you a pretty good idea of how doker works under the hood. It's all open source. It's in GitHub.
You can put links that you want. Yeah, I would love it.
Nat is great he even though he's moved over to the dark side. I think he's working at AWS now. We should probably have him on the show as well. Also, Karen, his wife, is presy amazing as well. Anyway, I'm digressing.
Yeah, I just wanted to say about the doctor. It's a very good example of like how the discussion kind of trailed off like in the community because we had this tool. Because really the problem is that doctors that containers. It's reproducible bills mm.
Hmm yep, which when you think about it, yeah, then then you start you start, like my brain started going to other places. Right, these are the other tools that I've used to solve similar problems.
Mm hmm.
Yeah.
Yeah, all right, Well, is there anything else that we want to kind of kick around? Different marshmallows to kick around, or conversations to paint red before.
We now, now you really want you You got me to really want to try out real marshmallows.
I know I'm curious too.
Now, yeah, it's not the fine, but then you find them. Yeah.
The funny thing is when you find one of the original of things and then you discover you don't, you don't actually like it. I think our current model, Yeah, our current modern ketchup, for example, has nothing to do with the original ketchup.
Do you know the story about ketch Peninsula, right.
Yeah, yes I do, But you can tell it. It's a really weird one that shows up bureaucracies work and how business interesting bureaucracies can go hand in hand.
Yeah, tell it.
So. Basically, in Israel, we have a local brand of ketchup. And at a certain point in time, they started to if somebody started to import Heinz Ketchup and so, and that was starting to eat into their market share. So what they did is they changed the legislature on what can be legally termed as being ketchup. That's the way that Heinz Ketchup could no longer be called ketchup in Israel. So instead it's called sweetened the tomato sauce or something.
And they got to keep the term ketchup for themselves, but it didn't really help them anyway, because people just bought hinds regardless of what it was. What it said below the Heinz Moniker.
Oh that's so funny. Points for creativity.
Though, Yeah, looking to the point where Heinz Ketchup can't be called ketchup.
Yeah, well I found a thread on Reddit. But yeah, all right, well I'm gonna push us into picks a j Do you want to start us off with picks?
Ah?
Goodness, I don't know. Sorry, I actually today don't have anything top of mind. I'm going to need a minute myself.
All right, Dan, Okay, so I actually have a pick I'm really happy about and it's this new TV show called The Penguin. It's about this Batman character, one of the Batman's villains, and what can I say, It's just an amazing show. And so far, by the way, Batman makes zero appearances. There's no mention of superpowers or anything like that. They do make occasional references to the latest Batman movie, but it's really subtle. Colin Farrell is absolutely
amazing as the Penguin. He's totally unrecognizable. The makeup, the prosthetics, I understand, even shaved his head for the role in a certain way. But his acting is just it's James Gandolfini level. Really, he's giving the performance of his life. I think highly, highly recommended. So that would be my first pick. Everybody else there, by the way, is the acting is good all around, but he's he's just he just stands out. I really hope they're able to maintain
this quality all the way through. I'm kind of halfway through the first season. I think it's the only season so far, and I really hope it doesn't get canceled or anything like that. So that would be my first pick. The second pick is I created an account on Blue Sky so if you for some reason have left X and are on blue Sky, then you can follow me now there as well, even part of a pack. There's a web performance pack, and I'm on there, and it's
it's very much like X, you know. It's if anything, it's kind of like what X kind of used to be in a lot of ways. The algorithm feels less intrusive, which is a plus. The weird thing to me, especially is in kind of in an out to us politics, is the interesting fact that there's kind of a political divide between those people who stayed on X versus those
people who went over to Bluesky. They're kind of saying that they went over to blue Sky because they were thick of the politics and wanted more pure technical stuff. But the politics really still find through. It's just a certain aspect of politics. And I'm not criticizing either ones, you know, but I'm just it's just a shame that people, really, you've gotten to the point where they can't talk with each other to the extent that they feel that they
need to be on different social networks. But I'm still on both and you can find me either place. It's kind of annoying to have to post things twice. I think there are tools that should make it easier for me, and probably need to adopt one, but right now I'm still kind of posting on at both places, and those are marks for today.
Awesome, AYJ did you want to jump in or should I go?
Oh?
I'll just come up with something.
I think.
I mentioned before that i'd played Portal a few weekends ago and got all the way through it for the first time, And actually most of the quotes that I remember were from Portal two, not Portal, So that's still to come. But if you haven't played Portal and you want a game you can just sit down and play in a matter of a few hours. The Companion que Bundle is available on Nintendo right now until December. We're not even gonna release by that anyway. Check Deco deals
dot com. Keep your eye on Deco deals dot com and find out when games you love go on sale and get them there. But Portal is it's definitely worth it if you haven't. If you haven't played it and you just know the references, the cake is lie, that sort of stuff. It's a little bit morbid to play with a five year old, Like the first ten levels are fine, and then all of a sudden, there's blood on the wall. And my daughters, why is the blood on the wall, that's all?
How does she recognize blood? Can't you just tell her it's ketchup? And so.
I don't.
I don't lie to my kids and I don't baby down explanations. When my three year old it's red pixels, yeah, but okay, fair, but it's representing it is It is not representing ketchup. It's representing blood.
It's white roses painted red.
Well with with my kids, even my three year old, when he asks a question, I will answer his question like an adult. And sometimes he will then ask, well, what does this word mean? Or what does that word mean? And our daughter, you know, she asked what does this word mean? What does that word mean? I am waiting for her to ask where do babies come from? It's it's got to come soon. But that's going to be a very I don't I don't know how to that what. I'm not gonna say it like I would to an adult.
I don't think, but I'll.
Say I'll tell you this story from my childhood. When I was like seven or something years old, somebody used the word prostitute around me. So I went home and I asked my mother, Mom, what does the word prostitute mean? And she, being having the similar mindset to yours, said it's a woman who sleeps with men for money. And I couldn't figure out for the life of me why somebody would pay someone to sleep with them, because it's all comfortable to have to share a bed with somebody,
you know, you don't have as much space. And yeah, I just couldn't figure it out.
Anyway, Well, when I was five, I asked my dad, and my dad told me and as as least graphic terms as he could, and I just thought that sounds so weird and gross. But then when I was about thirteen, I was like, got it.
All right, I'm gonna throw in some picks. I always do a board game pick. I don't think I'm trying to remember if I picked this game last week or not. Maybe I'll just pick a different one. So not this last Saturday, but the Saturday before. I was helping teach games at the Board Game Convention. Right, so I have five or six games that we taught. I've already picked Challengers on here because I picked that. I played that game at SaltCON in March, and that was one of
the games we taught. And there's another version of the game called Challenger's Beach Cup, which is the same rules with different cards that have different abilities. So I feel a little bit funny just pick in either of those because you guys can go pick them up and it's it's plenty fun.
It's you know, the tournament war flag thing. You can go listen to the previous. So I'm hoping I didn't pick this last week, and if I did.
I apologize, But probably one of my favorite games that we taught this time is called Gnome Hollow. You guys aren't looking at me like I picked this last week, so I'm gonna go with it.
So effectively, it's.
You're playing a game where you're placing hexagonal pieces on the board, you know, so you push them together and they create a path, and if the path creates a circle or a complete circuit, because a lot of them aren't circles, right, they curve at dif front angles.
But you have to get them all to a line.
You can't create anywhere it dead ends on another piece, so if you put it down, it has to continue any paths that it crosses. But you make these circuits, and then as you create the circles, what happens is you move markers on your board that's in front of you down and you get a reward for it. Now, the threes and the fours you don't get rewards. For
the fives you get rewards. Six as you get rewards, and the sevens you get rewards, and two of the spots on the sevens, two of those rewards are you get to move another marker down and then you get something else with it. The game ends when all of your markers move down, or when you run out of tiles, and then you to add up your points, and whatever
points you have you win. So you get points for each marker you've moved down right, and it's just you know, you get all all of them down, it's worth twenty five points.
As you complete circles, you.
Discover wildflowers and you automatically get one of those wild flowers, and you get a wild token that you can use anytime on your turn.
And then what some of the rewards are.
You get the wildflowers that other people discovered, and those tally up you get so many unique ones right, and so if however, many flowers, you get your points for that. And then as you complete the circles, you get the mushrooms that are on the circles, or there are other ways to get mushrooms, but you get those mushrooms, and then you can go to the market and sell them back and you get points in return, and that's essentially the game. There are a few other nuances, but it
is really a fun game. It takes about forty five minutes to play.
And board game.
Geek waits it at let's see it's coming up two point two to oh, so casual gamers is pretty approachable.
You know.
It's really just visualizing how your tiles get you the size of the the circle you want, and you move the gnomes around to claim circles or to you know, get mushrooms or go to market. And that's the other piece to it. You have two nomes that you move. You can move each turn.
So that's I mean, that's it. That's the game. It was, like I said, really fun.
When I was teaching people, that take an hour, but honestly, with three or four people we were still you know, was people knew how to play.
It was like forty five minutes because the turn order is real quick.
You put down two tiles, you collect any rewards, move yournme, do whatever is involved to move in the nome next person's turn. So anyway, so yeah, so I enjoyed that. It's one that I kind of want to buy. So I'm going to go ahead and pick that. The other thing that I'm gonna pick here. So I am actually on my new computer, the my laptop. It's funny, we were talking about Docker, the Docker engine on the Mac. When I was running it one of my clients apps on it, it just.
Got to the point where it just wasn't.
It worked, but it was super slow, and so I determined that I needed, you know, the laptop six years old, and it just yeah, it just wasn't keeping up. And no matter what I did to kind try and clear stuff off or not run as many things, it just didn't quite hack it. So I looked around a new Mac at the level that I wanted because I'm starting to do AI stuff and I want to I want it to be able to run that stuff.
And then it really bogged down the laptop did I'm like, okay, so the machine at the level I wanted a new Mac was going to cost me like nine grand, So.
You wanted something like an M four something.
Yeah, something.
So what I wound up doing was I looked around and I thought, Okay, well, a lot of folks in the rails community are talking about these Linux machines that they're picking up. So the laptop brand that a lot of people are going with is Framework laptops, and they run a Buntu or whatever whatever you want. Really, and then for the desktops, they've been going with System seventy six, and so that's who I'm gonna pick is System seven.
I got a desktop from them. It cost me about three grand, and.
Yeah, but it I can't remember all the specs on it, but it's it's it's a pretty serious machine.
And you got more than just one terabyte of storage for that three grand, unlike on Apple.
Right, So I got the the Thelio model.
What's it for you? Does it have?
By the way, I'm looking it up right now, So it has I can probably just pull up my order.
There'll be some AMD or something.
Yeah, it does have an am D. Let's see.
I got the Thelio Mirr Elite as a twenty four core fourteenth gen Intel.
Nine, Intel Cool Interesting.
Has one hundred and twenty eight gigs of RAM, four terabytes of storage, AMD radion Rix seventy nine hundred gre.
Yeah.
So I've been pretty happy running stuff on it, and it you don't avoid the warranty if you have to repair it or add cards.
To it or anything.
It's not Apple.
No, it's not Apple.
And it cost me about seven grand lesson it would have cost me to get a comparable Apple machine that did you know, that had mostly similar.
Specs and you're running Ubuntu on it.
I'm running a Buntu on it.
Interesting.
I wanted to run the omacube setup, which is what DHH runs, but I would have had to reinstall Ubuntu and I'm lazy and I didn't want to do that, so I'm not doing that. But I also switched my development environment back to Emacs and I've been pretty happy doing that. So anyway, it's it's been super cool. Oh yeah, I love me some Emacs. I had the Emacs key bindings running on vs code, so it really wasn't too much of a switch. The biggest switch is remembering to hit control instead of command.
And running and writing scripts and listen.
Yeah.
Well so that's that's my third pick. So I part of getting an AI, I kind of on a lark, started asking chat GPT to help me write code, right. And before what I would do is I would ask it, hey, like when I was trying to write an audio player, right, and so I would ask it to help me. Okay, how do I you know, what's the web audio API for? You know, if I click a button to have it play the audio, because you could just put the audio tag in, tell it to show controls and you get
an audio player. But it's not a very nice audio player, right, and it doesn't have all the features that I wanted, And so you know, I started.
Asking it how do I get this? How do I get that?
And then on a lark, I said, can you write me an audio player? I'm using Stimulus jas and it wrote it for me. And then it was like, okay, I want this feature, in this feature, in this feature, and it added them in. And then I asked it what features isn't missing, and it told me a whole bunch of features I could ask for, and so I asked it for those and then I copied and pasted the whole thing into my app.
But wouldn't you know it? It just worked.
So you know, as a spoiler, we're going to have Uncle Bob as a guest on the show, and in the near future, maybe we should also get Richard Stillman if he asked him, if he's willing to come with the show.
I'm open to that. I think it'd be great. But the other thing that I've been doing with chat GPT is just.
Sometimes I just need a little bit of direction here or there with stuff, and it's it's been great there too, So I'm going to pick chat GPT as well. I might be a little late to the game there, but it has been this amazing tool. It's helped me with layout stuff. One thing that I'm working through right now for my client is they have a report essentially this generated every every time a new transactions added to their
ledger and it takes forever to run. And so I've been playing with it on how do I run this? How do I run this report? Just in post gris QO and so, I mean it's been a lot of there's a lot of refining, right It's like, Okay, I need it to do this now, and I need it to this, you know, I need it to operate in this way, and it's it's been pretty awesome. I mean I've had to tweak a few things, but it's been.
Yeah, it's been wild. So if it's not a tool you're using, I understand that Claude is another tool that you can use.
We just recorded an episode on Ruby Rogues where we were talking about how to do a lot of this, and a lot of the things that we talked about are applicable to JavaScript as well, just on how the tools work and what some of the tools are. Some of them are Ruby specific, but a lot of them really aren't. So anyway, Yeah, I'm really really happy with all that. And I am working on the AI dev boot camp that's going to be an AIDEV bootcamp dot com.
I'm redeploying, I'm reworking a.
Ton of stuff on top end devs and getting that deployed and so you'll be able to sign up as soon as I.
Get that deployed, is essentially what we're looking at.
So right around Black Friday or Cyber Monday, and I kind of have a number of people that I want in the first cohort, and so I think I'm going to offer a Black Friday deal that's going to be just considerably less than what I'm going to charge for it in the long run, just so that I know, Hey, I've got about twenty people in that are going through the boot camp starting in January.
So keep an eye out.
If you want to, you can just email me Chuck at top endepth dot com and I can just tell you when it's up or you know, however you want to do that. But yeah, just just some way awesome stuff there, all right, Avashi, what are your picks?
I'm going to go with recently discovered Animal Manimal is like the next generation replacement for julipital notebook.
So it's like a kind of an interactive Python environment that is also graphical, so you basically value yourselves or you can combine markdown and graphics and then and buy on output and stuff like that. It's very handy to build a widgets or calculators of what I built with it. I build like que Filly calculators and like various assistant design things that basically you can put like the balls
and inputs and then just runs the Python thing. So it's very easy for doing interactive, interactive stuff, especially that involves graphing and mathematics and stuff. Previously, I used vis Coode in Jupiter Notebooks for this, but animals like it's really cool, so check it out.
Nice.
Yeah, a lot of people doing interesting stuff in Ai with Jupiter notebooks, so that sounds interesting, all right, Avishai. If people want to find you on the internet, I see that your handles on your video.
But for the people who aren't getting this on video, how do they find you?
So Nukemberg on Twitter that's n u k E m b e LG mostly there. Also I have a YouTube channel which is not very active, but it does contain like a playlist of a lot of talks that have given videos. Or if you just google a visa Shadom or youtubele Google and you can find that stuff.
Awesome.
All right, Well let's go ahead and wrap it up until next time, folks max out
