Innovation and Framework Adoption - JSJ 664
In this episode, Charles, AJ, and Dan explore the intricacies of team dynamics, technological choices, and the challenges of web development with our distinguished panel. Joining them is a very special guest, the legendary Uncle Bob Martin. They delve into team collaboration and decision-making, with Uncle Bob emphasizing the importance of reasonable debates and team buy-in when it comes to mental models and project directives. Dan discusses how, in startups, the initial developer often ends up making key decisions.
Special Guests:
Robert Martin
Show Notes
In this episode, Charles, AJ, and Dan explore the intricacies of team dynamics, technological choices, and the challenges of web development with our distinguished panel. Joining them is a very special guest, the legendary Uncle Bob Martin. They delve into team collaboration and decision-making, with Uncle Bob emphasizing the importance of reasonable debates and team buy-in when it comes to mental models and project directives. Dan discusses how, in startups, the initial developer often ends up making key decisions.
They also touch on technological choices, including the complications of inheriting decisions from previous team members and the ever-topical debate on relational databases influenced by marketing pressures. Uncle Bob shares his seasoned insights into React Framework inconsistencies and the philosophy behind state-driven design.
They also touch on technological choices, including the complications of inheriting decisions from previous team members and the ever-topical debate on relational databases influenced by marketing pressures. Uncle Bob shares his seasoned insights into React Framework inconsistencies and the philosophy behind state-driven design.
They tackle the separation of business logic from frameworks to maintain purity and independence in code. There's also a lively discussion about starting with functional prototypes, and the influence of Apple’s focus on UI on their success.
Additionally, they explore Uncle Bob’s controversial stance on web frameworks, the dynamics of framework adoption, and the role of technical decisions in hiring. There are fascinating comparisons between framework popularity and historical tech stories, including the evolution of Apple’s innovations and the contributions from Xerox PARC.
Finally, as they wrap up, they have insightful pick recommendations from the panelists, covering everything from the NBA season and engaging TV series to board games and book recommendations—a little something for everyone.
Join them for an enlightening journey through the nuances of modern development practices, historical tech anecdotes, and personal insights from some of the industry's top minds. This episode promises to be a treasure trove of knowledge and experience for any developer. Let's get started!
Socials
Picks
- AJ - How to Start a Startup - A course Y Combinator taught at Stanford
- Charles - MLEM: Space Agency | Board Game
- Dan - NBA Season
- Dan - The Day of the Jackal (TV Series 2024
- Uncle Bob - 'The Cloud Fugitive' | David Heinemeier Hansson | NTK # 001
Transcript
Charles Max Wood [00:00:05]:
Hey, folks. Welcome back to another JavaScript Jabber. This week on our panel, we have Dan Shapiro.
Dan Shappir [00:00:11]:
Hello from Tel Aviv.
Charles Max Wood [00:00:13]:
We also have AJ O'Neil.
AJ O'Neil [00:00:15]:
Yo. Yo. Yo. Coming at you live from pneumonia or corona or something.
Dan Shappir [00:00:21]:
Oh.
Charles Max Wood [00:00:22]:
Wow. Better, man. I'm Charles Max Wood from Top End Devs. I'm just gonna shout out about AI Dev Boot Camp. Page will be up today. We also also have a special guest this week. It is uncle Bob Martin. Bob, how are you doing?
Uncle Bob Martin [00:00:38]:
I'm pretty good right now. Live is treating me very well.
Charles Max Wood [00:00:43]:
Yeah. We've we've chatted a bunch, and, yeah, Dan, tossed a video over to me where you were, let let's say this is controversially as possible. You were bagging on all our favorite frameworks. And so, yeah, he he asked if we could invite you on, and I'm like, yeah. Bob's always game for that kind of thing. So you're here.
Uncle Bob Martin [00:01:05]:
I'm here. Fire away when when ready.
Dan Shappir [00:01:09]:
Yeah. Maybe it's worthwhile. Well, before we start, I just need to tell AJ, you know, AJ, that pneumonia has one distinct advantage over, you know, COVID or the cold. You know what that is?
Charles Max Wood [00:01:24]:
No. It's usually a bacterial.
Dan Shappir [00:01:26]:
Well, we've got met exactly. We've got medicines for pneumonia.
Charles Max Wood [00:01:30]:
So you can usually take an antibiotic and get rid of it.
AJ O'Neil [00:01:33]:
I mean, I don't wanna turn this to a health episode, but pneumonia is a symptom that means fluid in the lungs and can be caused either virally or bacteria.
Charles Max Wood [00:01:41]:
That's fair. That's true.
Dan Shappir [00:01:43]:
Then get the bacterial kind, and then you'll
Uncle Bob Martin [00:01:48]:
Chingles.
Charles Max Wood [00:01:50]:
Okay. So Take it back to Walmart and get the other brand.
AJ O'Neil [00:01:53]:
Since we're here since we're already here, so one of the things that happened that I think set me back was I took some cough medicine, and I coughed while taking the cough medicine. And, you know, the cough goes like Right? And so then the cough medicine went into my lungs, and then it got way worse.
Uncle Bob Martin [00:02:13]:
Oh, yeah.
AJ O'Neil [00:02:15]:
So Yeah. I might still be recovering from the actual inhaling cough syrup.
Charles Max Wood [00:02:21]:
I'm I'm always surprised with, you know, my kids. I have a kid in elementary school that I'm always surprised I'm not sick like every other week. And then I was thinking, well, I only have one in elementary school anymore, but my wife is the lunch lady. So I am surprised I'm not sick every other week. But, anyway Wait. Wait.
Uncle Bob Martin [00:02:40]:
Wait. Wait. Wait. Wait.
Dan Shappir [00:02:41]:
Wait. Wait. Wait. What doesn't kill you makes you stronger, Chuck.
Charles Max Wood [00:02:45]:
Yeah. Well, we're gonna see how close we can get to that one of these days. I'm pretty sure. Alright. Well, let's let's talk about frameworks. So, Dan
Dan Shappir [00:02:56]:
We need to introduce uncle Bob first, though.
Charles Max Wood [00:02:58]:
Yeah. Well,
Uncle Bob Martin [00:02:58]:
we he goes he doesn't he needs no introduction.
Charles Max Wood [00:03:01]:
But, yeah, we we did call him out. Bob, is there anything you want people to know about? Are you working on anything coming up?
Uncle Bob Martin [00:03:07]:
Oh, Hex. Yeah. I just finished the book and it should be out in time for Christmas, I hope. It's called We Programmers and it's a history of programmers going back to Charles Babich and then working forward in time, Grace Hopper and and, the the trio that did C.
Dan Shappir [00:03:31]:
I'm so looking forward to this book. You don't know how much you're looking
Charles Max Wood [00:03:35]:
forward to that book. I was gonna say, come out by Christmas. So are you coming back on in January, please?
Uncle Bob Martin [00:03:42]:
Sure. Sure. I'm glad to talk about that book.
Charles Max Wood [00:03:45]:
That stuff is so fascinating. It was a it was a
Uncle Bob Martin [00:03:47]:
fun book. That was that was just a giant entertainment for me.
Dan Shappir [00:03:51]:
I would love to know, for example, how you did the research, but I guess we could save it for for a future episode. I do have the one question about it. You know, do the readers on Amazon confuse you with George Martin?
Uncle Bob Martin [00:04:03]:
Yeah. I no one has ever confused me with George Martin.
Charles Max Wood [00:04:06]:
His books are almost long enough. Bob's are. Anyway. Yeah. I always love talking to Bob.
Uncle Bob Martin [00:04:18]:
So let's let's dive into the framework thing. Dan, you're the
Charles Max Wood [00:04:21]:
one that brought this video to me. So I'm gonna let you kinda set the stage, and then Bob can defend himself vigorously from our onslaught.
Dan Shappir [00:04:30]:
So, to be honest, I don't even know how I found the video. Maybe it just popped up in my timeline. I was watching some of Bob's other talks. And to be honest, it's not really a talk. It's more of a snippet from a talk. I I was looking for the full talk, but I just couldn't find it. You know, for some reason, that particular YouTube channel basically sliced up the talk into a lot of little parts. And like Bob said, put some background music behind it to make it more exciting, I guess.
Dan Shappir [00:05:03]:
But specifically, that particular video was Bob warning the audience against using frameworks. And that's an interesting take in the context of web development these days. Let me put it this way. I don't think I've seen a vanilla JS implementation of something significant in a long time.
Charles Max Wood [00:05:30]:
Hang on. I just looked up Bob's book on Amazon, and it says it's available now. I'm gonna put the link into the comments, and that way people can go and devour it over Christmas. Alright. Go ahead. So,
Dan Shappir [00:05:44]:
basically, my opinion is a bit different than Bob's on this potentially. And interestingly, to some extent based on Bob's own clean code principles. So I was kind of interested to hear, you know, what he actually thinks of frameworks even if his definition of framework matches what, you know, more or less the way that what we define to be a framework in
AJ O'Neil [00:06:16]:
the context of web development. Like, maybe he means something else. So I'm
Dan Shappir [00:06:20]:
really glad that you've got Bob on. So hi, Bob.
Uncle Bob Martin [00:06:23]:
Hi. So I I can go into this right now if you'd like.
Charles Max Wood [00:06:29]:
Yeah. Do it. So Do.
Uncle Bob Martin [00:06:31]:
Break our hearts. What's called the definition of framework. The definition of framework that I'm using here is some piece of software written by someone else that takes a very large amount of control away from you, the programmer. You have to surrender in some way to it. You have to adopt its conventions. You have to integrate with its modules. If it's an object oriented program, you have to derive from its base classes. That kind of thing.
Uncle Bob Martin [00:07:00]:
A framework like that requires the programmer to make a very large commitment to the framework. The problem with that is that it's an asymmetric relationship. The framework author makes no commitment at all to those who must commit to them. So there's this very uneven relationship there. The framework author can do anything he wants or she, whoever whoever this person is, they can do anything they want. They can make a change to the framework in any way they feel like it and drag a whole host of people kicking and screaming along with them because they have bound themselves so tightly to the framework. There is a very famous image of, a person whom I have a very high regard for, David Hanamayor Hanssen, who who, several years ago at a Rails conference, objecting to all of his users' demands against him, put up on the screen two words. The first one starts with f and the second one starts with y.
Uncle Bob Martin [00:08:08]:
And that's kind of a a a good symbol That's a very David.
Dan Shappir [00:08:16]:
Well, he is the more or less a definition of a benevolent dictator almost as much as Linus is.
Uncle Bob Martin [00:08:23]:
Well, I have, Right? You've got a benevolent dictator. And if you go in a way that the dictator doesn't like, you're out in the cold.
Dan Shappir [00:08:32]:
So so I'll that wasn't the only point you made, but I want to address this particular one. No. You made several points, but I think that was one of the core points that you made. And what you said is obviously true, but it's also true when you consider the programming language you use, when you consider the platform you're running on, when you consider some of maybe even some of the core libraries that you're using. So no code runs in a vacuum. You're always dependent on something, you know, even the hardware. So how is that really different than any of those other things? Because at the end of the day, your software is going to be running on something.
Uncle Bob Martin [00:09:20]:
Well, there's a there's a difference, in that. So the the asymmetry of the relationship in the case of a framework is greater than the asymmetry when, for example, with a programming language. Let Jarnes Strustrup, right, makes the c plus plus programming language. His success depends on him being able to satisfy a very large number of people. Right? At which he's worked very hard at in the c plus plus standards committee until recently has been doing a great job with that. With a framework.
Dan Shappir [00:09:56]:
Yeah. You know why I'm laughing.
Uncle Bob Martin [00:09:58]:
Yeah. Yeah. It's it's it's a a pretty open secret.
Dan Shappir [00:10:02]:
It's an interesting question why I'm laughing. Well, you know, the word question.
Uncle Bob Martin [00:10:10]:
Oh, yeah. We're not allowed to say that word anymore. At least not in c plus plus community. Oh, those guys. Wait. What? What? What are the I'm not gonna go into it here. But someone can put up a framework. And in the case of, DHH, Rails is a really good example of this.
Uncle Bob Martin [00:10:40]:
He did that for himself. He did that for himself and for 37 signal. He and then he opened it up to the world and said, hey, guys, you wanna use it? That's great, but don't bother me. Okay. That's perfectly fair. On the other hand, if you're the user, caveat emptor, and I you use that at your own risk. If you're using c plus plus, well, that's not quite at your own risk. There's a difference in the relationship there.
Uncle Bob Martin [00:11:07]:
If you're using a platform like OSX, right, they've got a commitment to you, a small one. But but, you know, DHA, no commitment to me if I'm using Rail.
Dan Shappir [00:11:17]:
Really? I think
Uncle Bob Martin [00:11:18]:
Apple more or less has only has a commitment to their shareholders. I think that's about it.
Dan Shappir [00:11:18]:
When you're talking about a commitment to their shareholders. I think that's about
Charles Max Wood [00:11:23]:
it. When you're talking about Swift or their frameworks in particular?
Dan Shappir [00:11:26]:
Everything. Yeah. Everything that Apple does.
Charles Max Wood [00:11:30]:
Well, it's interesting too. Right? Because, you know, you bring up, David Heinemeier Hansen, but, I mean, this is a JavaScript podcast. I I can I can argue both sides of anything with Rails, but, and and it it's true? A lot of the stuff that they put into the framework are things that they need for Basecamp or something else, and so that that's what goes in. The reality is is that, you know, they recently formed the Rails Foundation, and they get input from some of them now. But, again, you know, a lot of times, it's stuff that Shopify needs, and that's stuff that I'm never gonna touch. But let let's let's switch gears here for a little bit because, you know, Dan brought up Apple. You know, a lot of the frameworks that a lot of people are using these days are frameworks like React and Angular that which are both, sponsored, supported by large companies like Facebook and Google. And they're they're solving the problems that they have.
Charles Max Wood [00:12:26]:
Right?
Dan Shappir [00:12:26]:
I mean, to a certain degree It's actually interesting because I recently heard on a podcast that was, on the, JS Party, I think, podcast. They interviewed, some of the React creators at ReactCon for something like that, the recent React conference. And they said something very interesting. And I think it also appears in the React documentary, which actually is pretty good, and I I mostly recommend it. I'm kind of annoyed with them that they didn't mention Wix, but that's an aside. No. We were, like, the biggest implementation out of the first big implementation outside Meta, and, you know, somehow it's totally missing. But, anyway, the the point they made actually totally man matches what Bob said, which is they created React initially for internal use, and then they thought, hey.
Dan Shappir [00:13:25]:
It's interesting. So they decided to open source it and let it out. And it was never a profit center for Facebook, so they didn't really care about the their users as customers. And they mostly, the much of their motivation about what to do or not to do in that framework derived from Facebook's own needs. So I I'm totally in agreement with with Bob about that. That being said, that's actually kind of changing now because a lot of, what's driving innovation in the React world is kind of moving from React to Next JS. And Next JS is heavily associated with Vercel. Mhmm.
Dan Shappir [00:14:09]:
And much of Vercel's business is based on their their need for Next JS to be successful. So it's changing now. I mean, it's starting to become a two way street. And in fact, they actually said on the podcast that they're happy about the fact because they're now driven more, more by actual customer needs than by whatever somebody just says that should be done within within Meta.
Charles Max Wood [00:14:40]:
So I understand, and I agree with everything you just said. But back to Bob's point, and I I'm kind of poking things both ways because I'm kinda curious where the balance is, and I haven't made up my mind yet. Right? So I kinda wanna hear the arguments on both sides. But, Meta could, right, with the React core team and their ownership over React, decide to do something that people don't want or decide not to implement features that people do want and actively work against certain movements within the community should they decide to. Now I'm not saying they will, and I don't know why they would, but it could happen. Right.
Dan Shappir [00:15:20]:
You know, it's it's and but it's open source. And then somebody could theoretically fork it and do whatever they want with it.
Charles Max Wood [00:15:26]:
Yeah. But most of the other frameworks we're talking about are too.
Dan Shappir [00:15:30]:
Well, the the big difference is that React is more or less the only really successful framework. Maybe also Vue to an extent, probably also Vue. The other frameworks really need to incite or elicit, elicit would be the better word, elicit, people to actually use them. Mhmm. So there, the two way street is much more active. And I would argue that it's kind of the same thing with programming languages. I mean, you know, once a programming language becomes super mainstream and used widely, a lot of these people are the people who are using it, use it really without a choice. Basically, whatever job they got, basically said you need to use language x.
Dan Shappir [00:16:18]:
You need to use framework y. But when you're talking about a new programming language or a new framework, that's like the up and coming thing, like, you know, the then it's you're trying to convince people to use what you're providing, and then it's much more of, you know, trying to to sell your benefits, like, I think. Or would you disagree, Bob?
Uncle Bob Martin [00:16:43]:
Oh, no. I don't disagree at all. You are trying to sell your benefits and everybody's trying to do that. That's what all the the framework guys are trying to do. So my my position on frameworks is that you should be careful with them. Right? That you should understand the relationship, understand that it is asymmetric, and weigh the costs and benefits. Right? So for example, it's very easy to get a, a Ruby on Rails application up and running in a matter
Charles Max Wood [00:17:13]:
of a few days. Just trivial.
Uncle Bob Martin [00:17:15]:
Yeah.
Charles Max Wood [00:17:15]:
I get ridiculous amounts of things done with Rails. I get ridiculous amounts of things done with some of the other frameworks I use on the front end. Right?
Uncle Bob Martin [00:17:23]:
And as as time goes by and you want to start doing things that the framework doesn't support well, all of a sudden the framework starts to fight against you.
Dan Shappir [00:17:34]:
And you're
Uncle Bob Martin [00:17:34]:
then you're then you're in this funny mode because you've already made this commitment. And now the next thing you wanna do is gonna get hard and the one after that is gonna be even harder and you have to violate the framework in ways that it doesn't care about. It didn't make it easy for you and now you have to subvert it in bizarre ways. So you need to know that going in. One of the one of the problems that I see with frameworks is that they do a great job of selling just as you're saying. Right? They'll do a terrific job and they'll show you these lovely little applications on a YouTube video or something. Oh, look, you just have to write these 17 lines of code and life will be glorious for you. And you, you you're not really looking down the road next year when life is not gonna be so glorious.
Uncle Bob Martin [00:18:22]:
So my advice to people is to be careful with frameworks and to the extent possible, try to isolate yourself from them. Not that you shouldn't use them but you should use them in a way that is careful so that if the framework turns around and bites you, you've got some options.
Dan Shappir [00:18:46]:
So before asking you about how to implement that type of isolation, I'll go one step back and ask you when I if I'm in the process where if I'm in a situation where I can actually get to select the framework that I
AJ O'Neil [00:19:02]:
use rather than having it thrust on me by, you know, the previous developers who worked at the company.
Dan Shappir [00:19:10]:
Any advice on how I should go about choosing the most appropriate framework for me?
Uncle Bob Martin [00:19:16]:
Well, so that gets into the other discussion we were having. How how much of this how how much of the attitude of the authors is geared towards the user community as opposed to their own community? You know, in the case of Rails, that was an interesting one because that just started I keep going back to Rails. But that just started as a nice little framework for those guys and then it leaked out into the community and everyone started using it. And that's a bit of a warning sign. Right? You look at that and think, well, are they gonna take this in some direction that I don't like? On the other hand, if you've got a very large organization and they're trying to keep, you know, a a 100000 programmers happy and their reputation hangs on that framework
Charles Max Wood [00:19:59]:
Like Vercel, for example.
Uncle Bob Martin [00:20:00]:
That's a slightly better relationship. You can take a little more confidence in that. And that gets into the the programming language argument. Right? If if they're really trying to, you know, give programmers the language of the Internet, well, then they're gonna have to keep an awful lot of programmers happy and it's not quite as risky.
Dan Shappir [00:20:21]:
Interesting story though is what happened with Angular. Like Angular 12 kept a lot of developers really happy and then they kinda broke that contract. And, you know, and that's when React happened. But but React why are you making a face, Bob?
Uncle Bob Martin [00:20:42]:
Well, the the face I'm making has nothing to do with Angular or React. It has to do with, a meta issue, which is that frameworks are, popularity fads. They come and go. This month, it's going to be framework x and but but next month, somebody's gonna say, oh, framework y is so much better. And so that's another one of these risk factors of a framework. You don't know if the framework you choose is going to be popular next year or you may have to convert everything over to the next new framework or all your programmers may quit because they don't like this framework and they wanna go to a company where they're using that framework. So we we wind up in this very strange popularity contest, which has almost no substance to it. Almost almost no.
Uncle Bob Martin [00:21:36]:
Sorry.
Dan Shappir [00:21:36]:
Well so go ahead, Chuck. Sorry.
Charles Max Wood [00:21:38]:
So so the thing that I'm seeing that both kind of illustrates this but doesn't quite line up with it is, I've spoken with a whole bunch of people who still have apps that are running things like Backbone JS. Right? And so they want to move into something like React JS. Right? But it's not so much the fad cycle that's driving it so much as just, the technology and the standards and things like that that are available today and that have been built into React that haven't been maintained into something like Backbone, and there are some very good reasons for that. So so what they're looking to switch to is they're looking to switch to something that that gives them the advantages that React has because Backbone no longer has them as opposed to a fad cycle.
Dan Shappir [00:22:23]:
I significantly disagree. I think the most significant consideration the developers have when thinking about switching frameworks is their higher ability.
Charles Max Wood [00:22:35]:
No. That's true. But but my point is is typically, the argument they're making is the technological one.
Dan Shappir [00:22:42]:
Oh, they might make a technological argument, but the real motivation is I don't want backbone on my resume. I want React on my resume. That's the real reason.
Charles Max Wood [00:22:52]:
That's true.
AJ O'Neil [00:22:53]:
That seems so weird to me, though. It's a sea of mediocrity. I mean, you're fighting against nobody nobody can identify who's a good React developer. Right? Like, how would you even interview to find out which React developer is actually good? Because there's so much noise. How do you find the signal in that? I agree. That's what that's what seems weird weird to me.
Dan Shappir [00:23:17]:
I agree with with what you said, AJ, but that still doesn't change the fact that the react that a person with React experience on their resume is more hireable than a person without React experience in their resume.
Uncle Bob Martin [00:23:30]:
And that's just insane. That's just insane. It's You don't wanna hire programmers based on their familiar familiarity with a framework.
Charles Max Wood [00:23:41]:
No, Bob. Everybody does it. I know. I know. Everybody does it.
Uncle Bob Martin [00:23:46]:
It seems
AJ O'Neil [00:23:46]:
like Well, it's more like a meme than it's not like a it doesn't seem like a conscious rational decision. It's like,
Dan Shappir [00:23:55]:
I'll take it even a step back. Yeah. It doesn't even matter if it's true. It matters that the the the developers picking the framework think that
Uncle Bob Martin [00:24:05]:
it's true. Okay. And there's a bunch of HR guys that think it's true too.
AJ O'Neil [00:24:11]:
Yeah. Yeah. I I think that in the in the age of AI hiring where
Uncle Bob Martin [00:24:16]:
you just have to
AJ O'Neil [00:24:18]:
stuff your resume with a bunch of
Charles Max Wood [00:24:20]:
No. It's so true. It is so true.
Uncle Bob Martin [00:24:24]:
If if you want a resume, this is gonna get you an interview there that can see through this nonsense. Yep.
Charles Max Wood [00:24:30]:
If if you want
Uncle Bob Martin [00:24:31]:
if no. Seriously. If you wanna get an interview, you take the resume you wrote, and you
Charles Max Wood [00:24:35]:
hand it off to an AI system and say,
Uncle Bob Martin [00:24:38]:
I wanna get this job, and it'll op you have to optimize it because people don't read your resume. They hand it off to an AI system that tells
Charles Max Wood [00:24:46]:
you tells them how good a match you are.
Uncle Bob Martin [00:24:49]:
And you're cracking up because, yeah, you could be a
Charles Max Wood [00:24:52]:
crappy developer that has a perfectly optimized resume. It's like SEO for job search.
Dan Shappir [00:24:59]:
Yeah. But it just gets you through the door. At the end of the day, there is I've yet to to see a job when there was no actual technical interview
Uncle Bob Martin [00:25:07]:
or That's fair.
Charles Max Wood [00:25:08]:
But but they're they're in my opinion, and I think AJ is making this point. They're stringing out a bunch of competent, really terrific people who didn't optimize their thing for the AI system.
Dan Shappir [00:25:20]:
Oh, you know, that's what happens when the job market is weaker. When when the job market is is such that developers in high in high demand that there's not enough supply, then you can, you know, get by with whatever crap you happen to have in your resume. But, when when the situation is reversed, you're absolutely correct. It's SEO for getting a job.
Charles Max Wood [00:25:45]:
Yep. Now I wanna divert us back to the discussion on, you know, the frameworks and whether it's hype or not hype and things like that. I I guess I guess the real thing that I'm I'm wondering and, you know, I'm curious to see what you think, Bob. But, so
Dan Shappir [00:26:01]:
But, Chuck, I'm sorry. Bob did not answer my question.
Uncle Bob Martin [00:26:05]:
Okay. Well, I think I'm asking the same question another way, but go ahead.
Dan Shappir [00:26:09]:
Well, my question was, how do you pick a framework?
Charles Max Wood [00:26:13]:
Yeah. That that's what I was gonna go for was yeah. If you're if you're looking at these frameworks and it's you know, you're you're worried about stability, you're worried about the the t you know, whether or not they're gonna change stuff, whether or not they're gonna implement the things you need, you know, what you're giving up versus what you're getting. Yeah. How do you pick?
Uncle Bob Martin [00:26:32]:
Or do you I mean, you look at you look at the framework technically first to see if it's technically compatible. Right? You make sure that it's not just surface compatibility. You know? Oh, it's gonna help you for
Charles Max Wood [00:26:44]:
the next few weeks.
Dan Shappir [00:26:46]:
Compatible with what?
Uncle Bob Martin [00:26:48]:
Whatever your application is. If you're if you're writing a, I don't know, some kind of a desktop application or some kind of a handheld application and you're you're trying to figure out is this framework going to help me? How much is it gonna help me? Is it is it just going to help me in the 1st 2 weeks or is it going to help me long term? That's one thing to look at. Then the other thing to look at is what what's the user base? How many people are using this? Are they are they putting, demands on the framework authors and are the framework authors meeting those demands? And who are these framework authors anyway? Is it one guy in his basement or is it a group of people who have made a commitment to the community? Those are the kinds of things you want to be looking at and then even then even then you want to put that framework in your system and isolate yourself from it, as much as you can. It's hard to do but as much as you can so that when they screw you and they will screw you, you will have some options.
Charles Max Wood [00:27:52]:
So I I have a question, a follow-up question on your first point, which is, is it compatible with your application? Yeah. A lot of people that I talk to about their applications, they don't have the depth of understanding of either the framework or the application to make a good call there. So what kinds of questions like, let's say that I'm building, you know, the the dream app that does the podcast of all podcasting podcast stuff. Right? What kinds of questions do I need to be asking about my app and what kinds of questions do I need to be asking about the framework so that I can make at least a somewhat informed decision on this knowing that my requirements may change?
Uncle Bob Martin [00:28:31]:
So tell you a story. 20 some odd years ago, my son and I built an application. You're probably aware of it. It's called fitness, and it's a web based application. Right? So it puts up web pages. And the first decision you would make the first framework decision you would make if you had to do a web app is what web server should I use? Okay. Well, we didn't use one.
Charles Max Wood [00:28:56]:
Ouch. We wrote one.
Uncle Bob Martin [00:28:58]:
Why did we write a web server? Well, it turns out that a web server is about 300 lines of code. If you get rid of all the crap that the framework is gonna put in there that you'd have to carry with you a nice framework for for doing web serving is 300 lines of code. It's almost a trivial piece of work. And so we thought, and and this is one of the ways you would do this decision, right? You would look at what the framework gives you and you'd have to look in some depth and then you have to ask yourself the question. What would it take for me to write that? And in some cases, it's not a lot. In some cases, it's more. So I'll tell you another story. About 2 years ago, maybe 3 years ago, I started writing a desktop application, for, a social network protocol called Master.
Uncle Bob Martin [00:29:53]:
It's one of those federated, social networking stuff that nobody can censor. And I I had it up on my screen and I was writing the code. I was writing it all in closure. It's lots of fun and I thought, I'm not using any framework. I'm just gonna muscle through this thing. And I I picked up one little framework called processing which is a nice little thing. It doesn't get in your way very much. And I fiddled around with that for a while and and it started to get hard because I had to implement all of the text editing stuff and all of the, you know, double clicking, all that drag and drop, but then I thought, you know, I really need a framework.
Uncle Bob Martin [00:30:32]:
So I I said, okay. I'm gonna use a good old standard, swing. No, that was the worst decision I ever made in my life. Let me tell you. I started. I think you're gonna get some sympathy on this podcast saying that,
AJ O'Neil [00:30:46]:
but I
Uncle Bob Martin [00:30:48]:
started integrating swing into this thing. And
Dan Shappir [00:30:51]:
I got it.
Uncle Bob Martin [00:30:51]:
It's up and running. It works. It's fine. It's just a hell hole. It's awful. And I'm I'm thinking now what I need to do is just rewrite the whole thing. That's there's 2 different stories with 2 different outcomes. Right? I thought, oh, you know, I can probably make it with swing.
Uncle Bob Martin [00:31:09]:
It's old. It's it's reliable. Lots of people have used it. No. It's just it's a nightmare. So
Dan Shappir [00:31:17]:
So Post
AJ O'Neil [00:31:20]:
oh, go ahead, Dan.
Dan Shappir [00:31:20]:
No. Go ahead. You go ahead, AJ. My my questions tend to be long.
AJ O'Neil [00:31:26]:
The question I wanna pose is, what is the alternative to a framework then? Because the the reason people choose frameworks, they want a shortcut. They want some layer of abstraction that
Charles Max Wood [00:31:38]:
If you get
AJ O'Neil [00:31:39]:
tools. The way problem's stuffed. Sure. So what's what's the alternative to a framework? Because I don't think that it's, well, you just write everything by hand.
Uncle Bob Martin [00:31:48]:
Well, some sometimes the alternative is to do it by hand. Sometimes. Right? Some sometimes the benefit that the framework offers you offers you appears large, but it's actually not. And that's the that was the case with fitness. Right? The the very idea that we would, write our own web server had, you know, had us going, oh my god. We'd just and then we actually wrote the thing. There's, 300 lines of code. I can get stuff on the web on a website pretty doggone easy.
Uncle Bob Martin [00:32:17]:
It's a little bit of socket manipulation. So there that's one case where you you overestimate the value of the framework compared to the effort to do it yourself. Then the the, the Noster one that I did, that's the opposite case where I underestimated the value of a framework and and in the end I decided I had to have one and then I chose the wrong one. Right?
Dan Shappir [00:32:44]:
So
Uncle Bob Martin [00:32:44]:
there's there's no way out of this dilemma. We don't want to write everything from scratch. We do want to use what people have done. We want to build on the good work of others, but it's not a free lunch. You have to be really careful about the frameworks you use. You don't want that decision to be a quickie. You don't want it to be one based on popularity. You don't wanna do it because all your friends are doing it.
Uncle Bob Martin [00:33:11]:
You wanna look at it good and hard and you wanna do some of the experiments. You know, how far can I get without the framework?
Dan Shappir [00:33:20]:
So you in one of your talks, might have been this one. You mentioned that in one of your project, I think it was you, pretty sure that it was you, you deferred the the database decision to the very end of the project.
Uncle Bob Martin [00:33:35]:
Yep.
Dan Shappir [00:33:36]:
Unfortunately, from my experience, that's not really something that you can do with a framework. And the problem is that you kind of need to choose a framework more or less upfront. And when you do that, like you said about that database selection, you have the least amount of information. So unless you happen to be re rewriting an existing app, which, you know, is is done, but is is fairly rare in our industry for for good or bad, you are making the decision about the framework while you have the least amount of information about what you're actually developing.
Uncle Bob Martin [00:34:13]:
So what can you do to get more information before you make the framework decision? So for example, most of the frameworks out there are some kind of UI framework. They help you manage the user interface. React, Angular, all these things. Right? It's all some way for all the little gestures on the user user interface to make sense. What if you did not do the UI first? What if you focused on business rules first? What if you wrote the core of the application without a user interface so that you had information about what this application actually does and then you can back away from that and say, okay, what kind of user interface do I really need? What features are really going to be necessary here? And you can make an informed decision about what kind of framework you you're going to need.
Dan Shappir [00:35:07]:
Yeah. Except that most product, managers start with Figma.
Uncle Bob Martin [00:35:13]:
Well, yeah, there's a problem for you.
Charles Max Wood [00:35:16]:
I was gonna make the joke that if everybody follows Bob's methodology here, no one would use React.
Dan Shappir [00:35:22]:
But Well, I'm actually not sure.
Charles Max Wood [00:35:24]:
I think a lot of people would opt for not something so heavy on the front end.
Dan Shappir [00:35:28]:
I'll I'll well, I'll put it differently though. So when in the past, when people ask me I actually even we spoke about Quora before the recording started. I once answered a question of, you know, frameworks. What are they good for on Quora? And and back in the day, back when I wrote that answer several years ago, what I said was that at the end of the day, most web applications do more or less the same thing. You know, we all even like to think that we're very original, but at the end of the day, like, a significant portion of what we develop is more or less the same as what everybody else does. It's like, you know, filling forms, basic posting forms, stuff like that. And, therefore, it's it's kind of repetitive to write it again and again from scratch and frameworks, like you said, like, provide a box solution that does a lot of the heavy lifting for you that you kind of you don't need to repeat yourself. And that's true, and I still think that's true.
Dan Shappir [00:36:26]:
But my focus on what the frameworks provide has kind of shifted since then because I've been interacting a lot with a lot of, framework creators and designers. So Ryan Carniato is a friend. Mishko Hevery is a friend. You know, so so I've been thinking about, what what it is that they're thinking. Like, when they explained to me their considerations and their design decisions, it what I came to the conclusion is that the core difference between the frameworks is actually the mental model that they promote. And the different frameworks, like React versus Solid versus Svelte versus Vue versus Angular, all have really different mental models of how applications in general and user interfaces in particular should be architected. And and, consequently, to a great extent, ideally, when you choose a framework, I think you should choose the framework that best matches your own particular mental model.
Uncle Bob Martin [00:37:53]:
Now how do you determine that mental model if you don't understand the details of the application? If you're working on a particular kind of application and you focus on the business rules, you may come to a very different decision about the mental model that you need for your user interface. If you've chosen the framework upfront, that framework will drive you into a mental model that will then have incompatibility with the business rules themselves or at least the ideal state of those business rules. That's my own argument of, you know, do you go inside out or do you go outside in? And I like I like going inside out.
Dan Shappir [00:38:34]:
For sure. And I I totally agree with what you're saying. I'm just thinking that understanding the mental model or even the philosophy of a framework requires less initial investment that what you might than what most people might expect. That even if you that you can develop a fairly simple sample application, like a throwaway application, in order to kind of gauge the the the the the the framework's philosophy and mental model and and see not necessarily if it fits your needs in the context of that particular application you want to implement, but rather your own personal preferences in general. And I would contend that your personal preferences supersede, like, the details of a of a particular application.
Uncle Bob Martin [00:39:35]:
That one makes me a little nervous. First of all, you're probably working in a team. I mean, some of us don't, but probably you're working in a team, and everybody's gonna have their own, you know, mental model preferences. I would hope that the application would focus that and that you'd have a reasonable debate about, okay, what what of our mental rules which one of our mental models is most applicable to this particular application? I would help.
Dan Shappir [00:40:04]:
Yeah. You're correct. But at the end of the day, there's a person. At the end of the day, it's a person Yeah. That makes the decision.
Uncle Bob Martin [00:40:12]:
Yeah.
Dan Shappir [00:40:13]:
And everybody else kinda has to live with it.
Uncle Bob Martin [00:40:15]:
The benevolent dictator arises again. Yes.
Dan Shappir [00:40:19]:
Yeah. But it might just be the first person on the team. You know, the original developer on the project.
Uncle Bob Martin [00:40:25]:
If there was only 1. Yes.
Dan Shappir [00:40:27]:
So well, in a lot of start ups, there usually is 1. And, you know, I I've worked at various, you know, large organizations where I ask why are we using technology x? And the answer is this guy who worked here 8 years ago, that's what he chose. Yeah.
Uncle Bob Martin [00:40:49]:
Yeah. I I have joined startups and thrown away the work of the early developers.
Charles Max Wood [00:40:56]:
I did this on on a
Uncle Bob Martin [00:40:57]:
way to go forward.
Charles Max Wood [00:40:58]:
Part of our test framework on the project I'm working on for a client literally on Friday. Why are we doing it this way? Well, the other developer couldn't figure out how to do it the normal way. I figured out how to do it the normal way.
Uncle Bob Martin [00:41:13]:
Now another story, and this was long, long time ago. I was working at a at a startup, and, we we, we needed to store a bunch of data on disk and and, of course, everybody says, well, you've gotta get a relational database. This is like 1985. Right? You've gotta get a relational database. And I thought, we don't need a relational database. All we need to do is store a couple of things on disk, and that's fairly easy. And we did. We just stored real simple little little thing that we cobbled together.
Uncle Bob Martin [00:41:43]:
Along comes the marketing guy who who joined the company about 6 months later. You don't have a relational database in your system? Yeah. That's right. We don't need it. Oh, well, we can't even sell it if you don't have a relational database in your system. It was it was the most absurd argument to make to a bunch of technical people that the marketing guy said he could not sell the application if it did not have a relational database in it. And in the end, they had to put a relational database into it because the marketing guy was absolutely adamant and overrode all the technical people. I didn't stay at that company.
AJ O'Neil [00:42:21]:
Well Hang
Uncle Bob Martin [00:42:22]:
on, Bob. So what
Charles Max Wood [00:42:23]:
you're saying is is if the if the framework doesn't implement AI and blockchain, then it's worthless. I
Dan Shappir [00:42:31]:
I just want to mention that a few years ago, we had Norm Honing on on, the show talking about their, their kind of framework called remote. It's not a UI framework. It's more of a database or or or something like database connectivity layer that can work either from the back end or from the front end. And, interestingly, when you install their their thing, it comes with a built in flat file based implementation. That because they don't know what database you're you you're gonna use and you know? So the end but they want you to be able to play with it out of the box.
Uncle Bob Martin [00:43:10]:
Right.
Dan Shappir [00:43:10]:
And what he told us told me at least that in a lot of cases, companies just stick with their flat fireplace.
Uncle Bob Martin [00:43:18]:
Yeah. Mhmm.
Dan Shappir [00:43:21]:
Because it it works. And for the amounts of data that they might have, it might be good enough. You know, interesting. What I'm but the point I'm trying to make is this. So for example, let's let's consider React. And the reality interestingly, a lot of people who are using React are not actually aware or sufficiently cognizant of the React way. And and when they develop using React, they don't actually develop according to the the way in which the React designers intended them to actually work.
AJ O'Neil [00:44:01]:
They don't even do this on their documentation, by the way. Like because there is the document, the the react rationale or whatever it is. And and, like, they're dot like, that's where things bugs me is the documentation goes against their own principles. Because they give examples to give the examples in the fewest lines rather than to give examples that follow the patterns that they are prescribing people use.
Dan Shappir [00:44:26]:
Anyway, what I'm trying to say so React, for example, is very much about the I d the ideal of state in UI out, like UI as a status functions. And, you know, you can debate about how well they've been able to achieve it and some of the the caveats that they have and and so on and so forth because at the end of the day, you know, UI just can't be totally pure functions. And, but that's kind of the React way. And if you choose React, that needs to be kind of your design philosophy. And, you know, people ask, like, why doesn't React have signals? And and we had the people from React. We had Joe Savona from React from the React, core team on the show. And he basically said because that's not React. That that is contradictory to the React philosophy.
Dan Shappir [00:45:27]:
On the other hand, if you want signals, then you've got Solid or now you've got Svelte. So, really, you can create a fairly small application and see, do I like the React way, or do I like the Solid way? And if you actually start by thinking about what is the core philosophy of this framework and work from there, my assertion is that you'll probably make a better decision than, you know, trying to go based off off of your yet not yet fully formed understanding of what your application is gonna be and what exactly it's gonna need.
Uncle Bob Martin [00:46:09]:
I'm not gonna disagree with that. I think the more experience you have with frameworks, the better information you're gonna have to to make a decision.
Dan Shappir [00:46:19]:
The problem though is is you said to separate as much of the business logic out of the, framework itself. I guess that means that if you've got some sort of business logic, you know, encapsulated in some pure function, and then you can call that function, get the values, and you don't really care what you're calling it from. The problem is that from what I've seen in reality is that frameworks tend to seep into those functions. Yeah. You look at what should have been a pure
AJ O'Neil [00:47:05]:
saying that people that, you know, basically, people ought to discover their business rules and then go into the UI afterwards. And I think in industry, that's very rare.
Dan Shappir [00:47:18]:
And, you
AJ O'Neil [00:47:18]:
know, it's kinda like the waterfall development got rebranded as agile, so you see the same, you know, charts in the, you know, 12 month timeline, but it's agile now. It it I I think it's really, really dangerous to start with the design and try to work backwards, because you would need to start with what business problem are you trying to solve and then move forwards from there. I I wish that every application, the engineers created the super ugly prototype first so that the designers knew what they had to work with.
Uncle Bob Martin [00:47:50]:
So the the the alternate to that is you take a, an application with really significant business rules. So for example, some kind of insurance, application. And and there's just a lot of number crunching that you're gonna have to do and a lot of data lookups and all kinds of stuff with a relatively simple amount of incoming information. And the the temptation there would be to show a nice little desktop app and and, oh, here's the form and look, you click on these things and you isn't it wonderful that everybody's applauding and then and then, you know, then you actually have to write the business rules and the business rules it turns out completely thwart that whole idea of the user interface. Right? So wait a minute, we can't do it that way. We got to do it a completely different way. It would be in my view, it would be better to start inside, get some feel for what the business rules look like and then and then you can start to project outwards. You don't have to finish all the business rules but you can start to project outwards that way as long as you've got some idea of how you're going to manipulate all this data that's going to be on the screen.
AJ O'Neil [00:49:05]:
So with
Uncle Bob Martin [00:49:05]:
Now sometimes it's trivial. Sometimes there's just nothing to do with the data. It goes into a database, comes out of a database, nothing else, and you've got a CRUD application and okay, if all you've got is a CRUD application, you can probably make the the framework decision pretty early.
AJ O'Neil [00:49:20]:
So do you have any suggestions for because most people, we're just peons. Right? We just, like, we we there's some sort of project manager and they're making all those decisions. How do you like, if you've got this great wisdom, which I like, it's like, product managers, I don't think that they learn that. Right? How do you communicate that upstream to say, hey. To to develop the best product?
Charles Max Wood [00:49:42]:
You're triggering me, AJ. You're triggering me. I've worked in those salt mines before.
AJ O'Neil [00:49:49]:
But that that's like most of the salt mines, though. Is that is it not? I mean, that
Charles Max Wood [00:49:53]:
It's true. You have the It's not technical, nonexpert people making these deep decisions on how you put your app together.
AJ O'Neil [00:50:02]:
So and and but what's what's the solution? Or what's a way what's a way to bring some of this knowledge forward to help the development process? Because I think I think many, many people have been on a team where their intuition says, hey. This doesn't seem right. Maybe they don't feel like they've got the confidence to speak up because obvious people above them must know what they're doing or something.
Charles Max Wood [00:50:23]:
So I believe in miracles.
Dan Shappir [00:50:26]:
I I do I do wanna say 2 2 things about this, though. So, like, there are 2 there are 2 problems that I can that I can see with, I'm just developing my APIs first. We'll invoke them from curl. And once we see those work, we'll start building the UI. The the 2 the the the two problems are are, a, how are you gonna raise money that way?
AJ O'Neil [00:50:54]:
Like, you The AI generate the commercial, and then you do it, like, whatever you're gonna do. I mean, it's been that it's been that way for decades. When was the last time that a company that was raising money had a product?
Dan Shappir [00:51:05]:
Well, it had a demo of a product, though.
AJ O'Neil [00:51:10]:
Demo. It was like Wizard of Ozzy, or it was, like, completely done by a 3 d animator.
Dan Shappir [00:51:15]:
The the other problem the other but the more serious issue, though, is that I'm kind of wary of UIs that are built without any consideration for how they're ultimately going to be used. Yeah. Because then you try to build a user interface on top of them, and you discover that they just don't actually fit your needs? They work great from the command line, but they they they're not really appropriate for the UI where we need to support drag and drop and I don't know what.
AJ O'Neil [00:51:52]:
So I, I I think that people should create UIs, just dumb ones that are ugly to start with, that have the that have the benefits there. Like, okay. It's it's like like I've said before about suck driven development. You don't need to produce the most complete project with the most features. And and there's an excellent y combinator series I'll link to in the in the pics about this. You need to produce the product that does one thing significantly better than all the other products on the market. And you can do that with really bad UI in terms of a a test cycle. Like, true agile.
AJ O'Neil [00:52:29]:
Right? Like, you do the development sprint, you do the design sprint, and then so on.
Dan Shappir [00:52:36]:
On the other hand, Apple conquered the world with building amazing UIs on top of products that in many cases did not provide features that were not available somewhere else before with not this great UI.
Charles Max Wood [00:52:53]:
I I think you're making an earlier point that Bob pointed out just maybe in a different way, and that is you have to understand your application and what matters. Because I believe that there are situations where, you know, the the functionality and the way that things kind of bolt together and and work matters more than how pretty your UI is. But in other cases, yeah, the UI not looking great. Just to give an example, I'm part of an organization. I'm in leadership in this organization. And, you know, I we were looking for a solution to help collaborate, get people to collaborate. And the more we talked about it, the more it just looked and sounded and felt like Discord. But I'm not I'm not the the ultimate leader.
Charles Max Wood [00:53:38]:
Right? I'm I'm part of leadership, but I'm not I'm not the one that makes the ultimate call. And the person was the person no. Telegram, actually. But, the the issue was was that the person that made the ultimate decision, she took one look at the way that Discord is designed and said this looks like a video game platform. No one's gonna use it. And so in that case, it mattered. But in other cases, you know, having the functionality and having people being willing to say, this doesn't look like I what I want it to look like, but it does all the things I want it to do, you can do. And so you you have to understand your application.
Charles Max Wood [00:54:15]:
I guess part of understanding your application is also understanding the limitations and trade offs that your users are willing to make.
Uncle Bob Martin [00:54:23]:
So the the Apple story is a really interesting one because, yeah, if you'll go all the way back to the Macintosh. Right? 1983. Was that 2?
Dan Shappir [00:54:33]:
I think.
Uncle Bob Martin [00:54:34]:
Something like a good long time ago. And you've and when that machine came out, it was absolute magic. I and I I had to have one. Everybody had to have one and you could you could do MacPaint, you could do MacWrite, you could do MacDraw. They had all these applications that nobody'd ever seen anything like this before, and they they conquered the world with that UI. Even Microsoft finally had to bow and go, okay. Yeah. Windows is great.
Uncle Bob Martin [00:55:02]:
Okay. So how did that happen? And that happened through a series of experiments and iterations that mostly failed. Right? And most of and a lot of it happened at Xerox a few years before.
Dan Shappir [00:55:16]:
Xerox part.
Uncle Bob Martin [00:55:17]:
7 k mecking around with the Dynabook and then eventually they come up with the small talk browser which, you know, they they really had it kind of but not quite And then they came up with the Xerox Star, one of the early word processors back in the day, and Apple said, oh, I'm gonna steal that. Steve Jobs literally stole it. I just said, okay. I'm gonna steal it.
Dan Shappir [00:55:40]:
I would say that Xerox literally gave it to him but, you know
Uncle Bob Martin [00:55:43]:
They gave away everything. Xerox Xerox PARC gave away everything. Just a remarkable story in all of this gold that came out of Xerox PARC that the Xerox company just apparently had no interest in and just gave it away, gave it away to everybody.
Dan Shappir [00:56:00]:
Did you see that movie which wasn't so great? I think it's called Fire in the Valley or something like that. No. They have they have this amazing scene there where the people from the West Coast, from Xerox Park come to the Xerox, main office in New York, and there's this huge desk with all the v the CEO and all the VPs and whatnot sitting there all all in their suits. And on the other hand, you have you've got the guys in their t shirts and their beards. And there's this amazing scene where the CEO of, Xerox picks up a mouse by the cord, and it he's holding it like a dead mouse. And he says it. He goes, you want us to sell something called a mouse. They just didn't get it.
Dan Shappir [00:56:50]:
It was, the culture was just too divergent, I guess. And then they gave it all away to to Steve Jobs who basically heard about them and and, you know, and they they literally told, the the head of that of of Park to to just show him show him around and, you know, he can look at whatever he wants.
Uncle Bob Martin [00:57:09]:
That wasn't the only thing Xerox PARC gave away. They gave away just tons of stuff. But then Jobs takes it into Apple, and their first product is the Lisa, which is another failure. Right?
Dan Shappir [00:57:20]:
Mhmm.
Uncle Bob Martin [00:57:20]:
Mhmm. They couldn't quite get the idea that pixels ought to be square. But they did make a great decision early on, which was the one button mouse. Right? Xerox had the 3 button mouse. Apple said no. It should be one button. There were some very interesting decisions made that led finally to the Macintosh and then the the the rollout of these very interesting user interfaces. But it was not a burst of insight.
Uncle Bob Martin [00:57:51]:
Right? It came through a whole bunch of iterations, mostly failed iterations.
Dan Shappir [00:57:57]:
If I'm dragging us back to frameworks though, the current
Uncle Bob Martin [00:58:02]:
the current well I was thinking about doing the same thing, but I'm so fascinated by where this has gone.
Dan Shappir [00:58:07]:
No. I know. But I I do wanna cover so the reality is that for the past 14 years, it seems that React rules the framework the front end framework world. Okay. And that it's not going away. It's the default. It's the safe choice. It's like you never get fired for buying IBM kind of a choice now these days.
Dan Shappir [00:58:31]:
It's literally no choice at all. And I'm looking at some of the other frameworks that have amazing ideas. Again, the Svelte or Solid or Quick. And they're having and they're unable to break through. Like, the the late the latest statistics that I've seen on the Google Crux website, which kind of analyzes websites that Google index indexes, It looks like React is like all the other frame it's more than all the other frameworks put together. 2nd place is Vue, and then all the rest are and then all the rest are just, like, you know, minuscule in comparison. So we can talk about, you know, developers needing to think about picking the correct framework all we all day long. At the end of the day, they're just gonna pick React.
Uncle Bob Martin [00:59:30]:
Okay. Be wise.
AJ O'Neil [00:59:35]:
That that that we could talk about, whether or not people should, build build their website or not, but all day long, they're just gonna pick WordPress. Right? I mean, like, the things that the things that React is capturing are not the things that are going to be unique and driving lots of value. Right? Like, if if there is no significant benefit to something else and React is fine, then React is fine. If there is something where there's a new type of value, where there's gonna be new value driven in a significant way, people are gonna pick something else that matches where that value is. But in in the same way that that, you know, if you were to compare React to WordPress, you'd say, oh, well, you know, React just really isn't gaining any steam. But it React is a completely different use case than what WordPress is. And I think the same is is, you know, every layer of the industry. Right? You know, you could look at it from Wix and WordPress and React and, you know, take it down the pipe, where there's more unique value, people are going to make more unique choices.
AJ O'Neil [01:00:45]:
Where there's less unique value, people are gonna make less unique choices.
Charles Max Wood [01:00:50]:
So this kind of begs the question, and I'm curious, you know, AJ, what you think and what Bob thinks. Well, I'm curious what Dan thinks too. But, you you're making the point is then is it a problem that we necessarily have one sort of 800 pound gorilla that takes over the most of the market? Or, you know, does that stifle some of the innovation that's gonna go on out there? Or is it more in the realm of kind of what AJ's putting out there where maybe the people with these unique use cases will pick something else anyway, and so it doesn't matter?
Dan Shappir [01:01:25]:
Of course, it's gonna start for innovation. Like, it it
Charles Max Wood [01:01:29]:
but Right. That that's that that's my instinct.
AJ O'Neil [01:01:33]:
But is WordPress stifling innovation?
Dan Shappir [01:01:37]:
I I don't that's an interesting question. I would I would argue that the use case is different. The the use case for WordPress is some is basically somebody wants to have, these days, if somebody wants to have a simple web presence as quickly and as cheaply and ideally as reliably as possible and not really and and hopefully not think about it at all. Web development is actual development. I would argue that that that that I mean, they're trying
AJ O'Neil [01:02:10]:
to bring it to the level of GPT. Right? They're trying to get rid of the developers and say you're not gonna have a job. GPT is gonna do it for you. Reaction What
Charles Max Wood [01:02:16]:
was w p g p t? What do you think, Bob?
Dan Shappir [01:02:19]:
Oh, you
Uncle Bob Martin [01:02:19]:
mean taking a I've been writing an awful lot of code here. I've been doing the, the advent of code exercises, you know, every every December they do that. And I'm I'm doing them all in closure and I've got my IDE set up with with GitHub Copilot and it's really quite remarkable what that that that thing puts up on my screen. Half of it I have to well, more than half of it I have to throw away. But every once in a while, it's like, oh, yeah. I figured that one out pretty well. So I, you know, I think there's some interesting stuff there. I have no fear at all that, anyone's job is going to be taken away by, a large language model that has been suffused with code.
Uncle Bob Martin [01:03:02]:
I I don't I wanna back
Charles Max Wood [01:03:04]:
up though. What do you feel like we gain or lose by having a kind of a dominant player in in in the framework market? Like That's
Uncle Bob Martin [01:03:11]:
the VHS versus Betamax argument. Right? Okay. So VHS is gonna dominate for a while until the CDs come out. When when when is this model of application going to change?
Charles Max Wood [01:03:24]:
Yeah. Right now it's a matter of time.
Dan Shappir [01:03:26]:
Web web That's an interesting question because the the core thing is that in the web world, we are kind of tied to JavaScript and the DOM. So because the the platform isn't changing, that reduces the need of whatever we implement on top of the platform to change. Now if, you know I don't know what happens. Like, if if we all go AR, VR, then I don't know. There might be a need to to change that. I'm not I'm not sure, to be honest. But I I like, like and a talk I gave, like, 15 years ago, I said that I'm annoyed with the fact that laptops are still the dominant form factor. And you know what? 15 years later, laptops for developers are still the dominant or for work are still the dominant form factor.
Dan Shappir [01:04:26]:
So where's the thing that replaces the laptops? It's it's not here. So we are we are on top of the web. We are on top of the DOM. We don't want to use the DOM as is, and we can debate about why that is. You know what? Do you think people should be I don't know if you're the one to ask this question specifically, but do you think people should forego frameworks and just use JavaScript and the DOM instead?
Uncle Bob Martin [01:04:58]:
Oh, no. No. That would be silly. Right? You're going to get have to get them help. Just you just have to be careful. That's all. But, yeah, you you're going to want to have some kind of framework assistance because those problems have been solved 80 times by people who who know a lot more than you.
Charles Max Wood [01:05:16]:
Okay. But then the question is, you know, you've got the reacts and and Angular's and views that do a lot more than solve some of those problems. Right? And then you've got, like, Alpine or, you know, jQuery did some of this or, you know, I've been using Stimulus, right, where it just solves some of the more fundamental issues, and then, you know, you wind up using the DOM APIs. And so there there's a sliding scale even there. Right?
Dan Shappir [01:05:44]:
Well, there's a first of all, there's a question of again, I kind of hinted toward that at the beginning of what is a framework. Like, is React a framework? Is Angular a framework? Is Next. Js a framework? They're kind of really different from one another in what they provide. And
Charles Max Wood [01:06:02]:
They're hostile takeovers of my UI is what they are.
Uncle Bob Martin [01:06:05]:
Well, and and your your your idea about the mental model is a good definition of a framework. Does it impose a mental model on you? And frameworks do that.
Dan Shappir [01:06:16]:
In that regard, they all are, but to a varying degree. Yeah. Right. Like, in like, for example, Next. Js also tries to impose, certain mental model of how on how you implement the back end, which React in and of itself does not. So it it it it's kind of a question to the extent to which it invades your your your entire stack as it were.
AJ O'Neil [01:06:43]:
Well, that that's what I was probing for earlier when I was saying what's the the, you know, what's the opposite of a framework, or what's the what's the alternative choice? Because the way that the way that I would describe a framework is a framework is something where you put your code in the framework. Like, you implement the abstract class of the framework. Whereas a library would be something where you use the library. Like, your code is on top and the library is in the middle. Whereas a framework, the framework is the the master control, and your code is the little functions that fill out the gaps.
Dan Shappir [01:07:24]:
I would argue that at the end of the day, if it's not going to be the framework, then it's gonna be the platform, that does it for you. So at the end of the day, you are using some sort of framework. And if and if you think you're not, what I've seen happen is and and I'm kind of quoting Tejas, who we've had on the show several times to to talk about similar topics, is that if you don't use a framework, you end up implementing your own framework, and it will likely be worse.
Uncle Bob Martin [01:07:55]:
Yep. That's the old argument. Right? That every every every application eventually implements some bad version of Lisp.
Charles Max Wood [01:08:06]:
Yeah. But the thing the thing is is again, it's going back to the argument of
Dan Shappir [01:08:11]:
And it's double it through for JavaScript, by the way. Sorry to interrupt.
Charles Max Wood [01:08:15]:
True. JavaScript list. But my my point is is that, you know, if you have a really, really simple application and you, you know, it it's a fairly well understood system, and you can get away with using the Dom APIs on it. And and that's it. Right? And it's not going to grow in complexity or, you know, it's neat. It's not a common use case, but my point is is you can get away in a lot of cases with not having the framework or having a framework as we talk about it on the front end as opposed to the more complicated things where, yeah, you need some of these problems solved.
Dan Shappir [01:08:53]:
So the the core question you need to ask these days in in the front end world in front end web dev world is, do I really need this to be a single page application? If and if the answer is yes, because sometimes you do, then you probably have to be using a framework. If the answer is no, if if the answer is it can be a multipage application, then you're correct that there's a good chance that you either don't really need a framework or you can use a fairly minimalistic framework or you can segregate the framework used to very specific parts. The reality, though, is that for some reason or reasons, it might have to do with what boot camps are teaching. It might be have to do with what, you know, VCs like to invest in. Whatever the re it might be have to do with what developers like to have in their resume. The reality is that these days, a lot of web apps are being being built as single page applications whether they need to be or not. I I had hoped that something like Astro would reverse that trend, but it doesn't seem to be the case.
Uncle Bob Martin [01:10:22]:
So what fascinates me about that, Dan, is is the vocabulary that we've all been using. We've all mentioned the DOM. We've all mentioned JavaScript. We've all and you started mentioning single page applications as though that were some kind of fundamental constraint. Why are we talking? Why are we using that vocabulary? The web's the web has imposed these vocabularies on us that create a mental model of how applications ought to be. And I wonder if we aren't, on the verge of leaving that mental model.
Dan Shappir [01:11:03]:
I remember an interesting thing. I I've tried to look for it's it's it's an old video that I watched, like, probably, like, 15 or something years ago. I've tried to search for it on YouTube. I can't seem to find it. It's a video of Alan Kaye, who I really admire. And, apparently, he got really annoyed with with with the web when the web was gaining a lot of popularity. And and he tried to build an alternative to the web using well, surprise, surprise, small talk. And it had, like, agents communicating with each other, sending small talk snippets and, you know, like like and and the code would propagate where it needed to go.
Dan Shappir [01:11:45]:
It was really beautiful. And the way that he demoed it is he built the same application using web technologies, and I'm talking about the web technologies from something like 15 or maybe even 20 years ago. Yeah. And he built the same application, using his own platform. And the interesting and, like, he achieved parity in terms of functionality. And then he ran them both on his laptop and measured the temperature of the laptop. And and he showed that his that the web was running very hot, whereas his application was running really cold.
Uncle Bob Martin [01:12:22]:
It's all that HTML parsing.
Dan Shappir [01:12:25]:
Yeah. Exactly. And and guess what? And and I'm sure, you know, given knowing Alan Kaye and and what he is and who what he's done and what and everything, and we were talking about Xerox PARC and whatnot. I'm sure that his solution was beautiful. But look what's won. And and I consider the web to be the the modern web to be one of the greatest achievements of humankind despite its inefficiencies. So, yes, it has created a vocabulary for developers, but the same was true for, UNIX and for c and c plus plus and for Windows and and all the various platforms that we've had over the years and for mobile platforms these days. You know, we we didn't talk about apps before the mobile platforms and the App Store.
Dan Shappir [01:13:18]:
You know, the the abomination that is the App Store.
Charles Max Wood [01:13:23]:
Well, the the other thing is is that, I guess, the point you're making is that the the metric we use to just to talk about how good something is is not, processor temperature. Right? I mean, there were other things that people wanted from the web, and that's that's why we got what we got. The the other thing though is that, you know, as things have innovated, a lot of those things have changed. Right? You know, the the web has become more efficient or at least in in a lot of ways it has. Has it? Has it? I think it I think in some ways it has. I mean, it's gotten faster and easier to use. I don't know about, like, if you measure the temperature of your
Dan Shappir [01:14:02]:
No. I mean, if you measure load your website's loading times, have they gotten faster, really?
Uncle Bob Martin [01:14:09]:
Now we have to load 10 megabytes of JavaScript to get anything done.
Dan Shappir [01:14:15]:
Yeah. They've only seemed to be getting faster since Google kind of, you know, put their whip over the developer's head and and started measuring it and telling developers that it's in a ranking factor and and and whatnot. Then then it kind of started to improve. But but at the end of the day, the c plus plus developers who are right creating the browsers have done more for web performance than all the JavaScript developers put together.
Charles Max Wood [01:14:40]:
And that's my point is that, you know, it's it's the the whole of the platform, not necessarily that we're writing better JavaScript or better HTML or whatever.
Uncle Bob Martin [01:14:53]:
You're not writing better HTML.
Charles Max Wood [01:14:56]:
Right. That's my point. But the the browser's faster. My machine's faster.
AJ O'Neil [01:15:01]:
I'm I'm writing better HTML.
Dan Shappir [01:15:04]:
I'm sure you are.
AJ O'Neil [01:15:05]:
Putting brackets.
Dan Shappir [01:15:06]:
And and the cool thing is that HTML itself is actually getting better. You know, we've got, we've got things like pop ups built in to the HTML that, like, for years, we didn't have it.
Charles Max Wood [01:15:18]:
Nobody knows about it though. That's another discussion for another day. It
Uncle Bob Martin [01:15:26]:
makes me shiver.
AJ O'Neil [01:15:31]:
Are you developing for the web these days, Bob?
Uncle Bob Martin [01:15:35]:
I I try to avoid it when I can. I've got a website that I maintain and, you know, that's really simple raw HTML. I wrote it all in closure. I've got a little, you know, little very simple framework that I use.
Dan Shappir [01:15:49]:
So if you need to create
Uncle Bob Martin [01:15:50]:
an try to avoid web development if I can.
Dan Shappir [01:15:53]:
So if you need to create a web an interface for something, what do you use?
Uncle Bob Martin [01:15:57]:
An interface for?
Dan Shappir [01:15:59]:
Like, if if you're creating a a a user facing application, one that can't just be a CLI, What do you use?
Uncle Bob Martin [01:16:11]:
So one of the one of the tools that I've been using lately is a very simple library. It's a graphics library called Processing and it runs in JavaScript, it runs in Java, there's a closure shim on top of it, that that I like to use. And it it allows me to build applications, run them on my laptop without worrying about JavaScript and then compile them into closure script and and run them on the, on the web. And that's fairly straightforward. Now the the problem with it is that it doesn't give me all the lovely forms and text capabilities. It's very similar to a graphics, a graphics library without a lot of text editing. And so I don't typically do a lot of text editing. I can draw nice nice and pretty pictures.
Uncle Bob Martin [01:17:02]:
I can do, interactive games that way it's very easy. And I try to avoid all of the more traditional web based work. Nowadays, I don't really have have to do much of that.
Charles Max Wood [01:17:18]:
Cool. Yeah. Well, there's a little mold here. Is there anything else we wanna tackle here? Or talk about?
Dan Shappir [01:17:34]:
I could just talk with Bob forever, but, you know Right.
Charles Max Wood [01:17:38]:
Well, I really wanna do the history of programming thing, and I want to read the book. So we'll we'll have to have you back. Okay. Maybe after the holiday in.
Dan Shappir [01:17:48]:
You know, you you when, talking mentioning that book, I think you have on the cover, it says something like from ADA to, to what would you AI. Yeah. And you could joke that, Amazon, because your it's a programming book, assume that you were talking about Ada, the programming language. The funny thing is when I saw the title, I initially assumed you were talking about the programming language as well. And I was thinking, hey. The Ada programming language is not that old. You know? So, yeah, it took me a minute to realize that you were actually talking about Ada Lovelace.
Charles Max Wood [01:18:25]:
Yes. Yeah. Good deal. You wanna give us a a quick pitch on the book? Just let people know what they're getting if they go buy it.
Uncle Bob Martin [01:18:34]:
It is a, history of programmers, from Babich all the way up to Dennis Ritchie and Ken Thompson. That's the first part of the book. And and I I picked a few very interesting characters. So there's there's everybody you gotta do Babich. And I did, the guys who did Simula, you know, Christian Nygaard and and, Tolle Johan Dahl and I did Dijkstra because you gotta do Dijkstra, and and several others along the way. But the focus is technical. This is a book for programmers. Right? So I talk about the machines at the bit level.
Uncle Bob Martin [01:19:18]:
I talk about the way they wrote their code. I give examples of the code. You know, there's pictures of the machines and why the machines were built the way they were built. Talk about the memory technologies and the computation technologies. So it's not a layman's book. This is a technical description so that programmers today can identify with what these guys were doing because it was pretty cool and and so that's the first part of the book just just that then the the second part of the book is it's where I I step into the book at that point and it is essentially my history. It's almost autobiographical except that I focus only on the technologies or almost only on the technologies that I saw from starting when in the late seventies going on into, you know, 2010 or so. And then the last part of the book is just fantasy.
Uncle Bob Martin [01:20:12]:
That's me saying, well, gee, what's gonna happen in the next 20 years? Which is why I could put AI in the title.
Dan Shappir [01:20:22]:
I don't know if you put him in the book, but an amazing character, in the early days of, of computation was, Von Neumann.
Uncle Bob Martin [01:20:31]:
Von Neumann has his own chapter.
Dan Shappir [01:20:33]:
Okay. Cool.
Uncle Bob Martin [01:20:34]:
Oh, yeah. Von Neumann, it's Turing, Von Neumann, and David, can't remember the mathematician's name.
Dan Shappir [01:20:44]:
The the one that came up with, like, the calculus?
Uncle Bob Martin [01:20:46]:
Hilbert. David Hilbert.
Dan Shappir [01:20:47]:
Oh, David Hilbert. Hill Hilbert HilbertSpace.
Uncle Bob Martin [01:20:49]:
Yeah. The 3 of them share a chapter with each other. Hilbert. Turing, and von Neumann. Oh, I have to have this book now.
Dan Shappir [01:20:58]:
Yeah. Me too.
Uncle Bob Martin [01:20:59]:
And all of it from those earliest days was driven by war. We have computers today because of war.
Dan Shappir [01:21:06]:
Well, most of human innovation is because of war. We don't like to think about it. We all want peace. But at the end of the day and we have penicillin thanks to war. Mhmm. You know, most of human innovation is is is because of war.
Charles Max Wood [01:21:22]:
Well, let's face it. I mean, wars are won by technology. I mean, even back to, you know, I I can ride up on a horse and do worse things to you than you can do to me. Technology won wars. So, you know Germs and Steel. Yep. Mhmm.
Dan Shappir [01:21:38]:
Yeah. Even though that book has fallen kinda fallen out of favor, by the way.
Uncle Bob Martin [01:21:42]:
But Jared Diamond's book? Yep. Guns, Germs, and stuff. It's great.
Dan Shappir [01:21:45]:
Yeah. It's a great book but, people don't prescribe to those theories as much as as they did. Turns out that some evidence contradicting evidence was was sense. It's it's a pretty old book. That's what it is.
Charles Max Wood [01:21:58]:
It is. Yeah.
Dan Shappir [01:21:59]:
So it's showing its age in in terms of research. Mhmm.
Charles Max Wood [01:22:02]:
Yep.
Dan Shappir [01:22:03]:
Not my area of expertise, but I've read.
Charles Max Wood [01:22:06]:
Yeah. Well, you know, in in putting up a risk, I guess, of throwing something out that I would normally put into a pick. But if you go listen to hardcore history, by Dan Carlin, I mean, a lot of it where he breaks down different wars and war periods, I mean, he basically explains this technology helped these guys win the war. Right? And it was you know, sometimes it was just a marginal difference, but it was enough that it it really tipped the scales. So, anyway Yep. I'm gonna roll us right into the picks, and then we'll wrap up. AJ, do you wanna start us with picks?
AJ O'Neil [01:22:44]:
Alright. So I mentioned earlier, there's a series from y combinator from 2014 called how to start a startup. And I just think that anybody who works in development and sees it as a craft should watch the whole series. I think it's really valuable to understand business perspective, and especially anybody that's a product manager. If you've not watched this series, you're one of the reason that Chuck and I cry at night.
Uncle Bob Martin [01:23:14]:
Like, it
AJ O'Neil [01:23:18]:
yeah. It's and and I'm not I I don't necessarily think that Y Combinator is the greatest. But when they put this series together, they they pulled from, a seemingly diverse group of people in in terms of their, you know, businesses and whatnot. But the principles, you can find them referenced in many other books. There there's lots of little, I don't know, catchphrases sort of things. Like, little one line ringers that are really, really good sprinkled throughout the series. And and I think that it is a rare instance of really good, really valuable material that, I guess, was intended to generate some hype around y Combinator or something, but ended up being not hype y material. It's it's actually really valuable material.
AJ O'Neil [01:24:14]:
So I'm gonna put a link to that. I yeah. And I just think every everybody ought to avail themselves to to this. There's very few things in there that I I disagree with. I think that it's it's, really, really high value stuff. The other is we got the Dune 2 film collection. Of course, my wife did not like the ending of Dune 2, but she did like Dune 2. And she's now she's trying to get one of her girlfriends to to watch it, and, yeah, that's going over her, like, I I forget what the idiom is for when something's not going over well.
AJ O'Neil [01:24:57]:
But
Dan Shappir [01:24:58]:
My wife will not watch sci fi fan or fantasy TV shows or movies.
AJ O'Neil [01:25:04]:
It's Well, generally, mine won't either. Dude dude, I was just like, you know, honey, you're probably not gonna like it, but will you watch this with me? And she's like, Okay. And then she's riveted by it.
Dan Shappir [01:25:19]:
Yeah. The closest my wife has come, I think, was the movie Gravity.
AJ O'Neil [01:25:24]:
Oh, okay. Yeah. That was a very emotional that that was that that kind of had a chick flick feel to it.
Charles Max Wood [01:25:35]:
Is
AJ O'Neil [01:25:35]:
that the one I'm thinking of?
Uncle Bob Martin [01:25:38]:
No. I
Dan Shappir [01:25:38]:
well, chick flick. I don't think so.
AJ O'Neil [01:25:41]:
Oh, no. I'm thinking of Interstellar. I'm thinking of Interstellar. Because that that one's all about the relationships and everything and the it's kinda like a rival. Like a rival
Dan Shappir [01:25:50]:
Gravity does have a strong female lead character, but, she's interesting. Let's put it this way. So Alright. She's not That's quite the way to
Uncle Bob Martin [01:26:00]:
put it.
Dan Shappir [01:26:00]:
She's not well, she's not a Mary Sue or whatever the the co colloquial term for uninteresting strong lead female characters, is. It's Gotcha. Yeah.
AJ O'Neil [01:26:15]:
The last thing I'll pick is I got a new hat, and my wife says I look really good in a hat. Beautiful.
Charles Max Wood [01:26:24]:
I love it.
AJ O'Neil [01:26:27]:
And, I was actually inspired by, Elon. I I saw him wearing it, and I thought, you know, I'll get one actually. But the thing is, I'm just really glad we're back in a timeline where people can be honest again. And some of that, you know, b s ing, pretending to believe something that you don't believe to appease somebody else, like, I'm glad we get to relax a little bit from that. And it's been really it's been really great to just be able to wear my new hat around, and and, you know, get some compliments. And then, you know, get some dirty looks too occasionally. But, you know, it's just it's just nice to be, like, I'm safe. Like, America is a safer place again.
AJ O'Neil [01:27:09]:
You are safer to believe what you believe. And just, like, freedom of speech. You know? I I'm just I'm I feel so much better now.
Uncle Bob Martin [01:27:19]:
A
AJ O'Neil [01:27:19]:
lot of anxiety lifted.
Dan Shappir [01:27:20]:
It's interest from somebody looking from the outside on the whole thing as an Israeli. It's interesting to see a lot of similarities because there's a very, very significant political divide in Israel right now. So there are a lot of similarities, but there are also a lot of differences. Like, a lot of the issues that are, you know, really, almost tearing America's society apart are literally non issues in Israel. I think we discussed this in the past, Chuck.
Charles Max Wood [01:27:52]:
Yeah. We've we've talked about it some. I don't think we've done as much of it on the show. And fair enough, that's not what the show is about. But, yeah, it's it's always interesting to kind of see it's also interesting to see what filters through. Right? You know, what you're hearing about us in in Israel and what we're hearing about you here, And then as we talk about it, I find out that, you know, you're you're seeing things completely differently about your situation there and about our situation there. And so,
Dan Shappir [01:28:20]:
anyway Yeah. I I love
Charles Max Wood [01:28:22]:
I love having the conversations with people.
Dan Shappir [01:28:24]:
Yeah. Also definitions, like, you know, what's right, what's left are very different between different countries.
Charles Max Wood [01:28:31]:
Yep. Absolutely. And and if there's anything that I can just throw out there in relation to what AJ's saying is, I I love talking to people about this stuff. Right?
Uncle Bob Martin [01:28:40]:
Whether you agree with me or not. By the way,
Charles Max Wood [01:28:42]:
I have a hat that looks a lot like AJ's except it's red, and I got it way back in the day. I actually took a picture of myself in it on Twitter, and that got me into trouble. But, anyway So
Dan Shappir [01:28:52]:
now we're gonna get into trouble because we're on Twitter. Yeah. You don't care. Twitter Twitter is different. Yeah. I guess.
Charles Max Wood [01:28:59]:
But see, that's
Dan Shappir [01:29:01]:
All the all the people all the people that you guys are upsetting right now are on, Blue Sky.
Charles Max Wood [01:29:06]:
On Blue Sky anyway. Yeah.
Uncle Bob Martin [01:29:08]:
Yeah. I guess my point is though Blue Sky.
AJ O'Neil [01:29:11]:
But I I don't I don't really wanna upset anybody. Like, I I just like, it's just, you know, it's been several years of a certain group of people can say whatever they want and wear whatever they want and fly whatever they, you know, like, and and, you know, and if you say, hey, you know, I'm not really I'm not really as comfortable with that, then, you know, you're an infidel. And it's nice to be back in a in a society where it's more two sided, where we can both say, hey, you know, I don't agree with that, but that's okay. You do you. And somebody else is gonna say, I don't agree with that, but it's okay. You do you. You know, that's where I want to be.
Dan Shappir [01:29:45]:
And here's one of the key differences that when you say infidel in this part of the world, that has a lot of connotation going on
Uncle Bob Martin [01:29:52]:
with it? Sure.
Charles Max Wood [01:29:54]:
Yep. Absolutely. I think the other thing though, if if we're gonna discuss this here is, I I hear people basically say, well, you voted for Trump or you voted for Harris because of x or y. And the reason reality is is I talk to people, and there are a whole bunch of people I talk to that have the 1 or 2 issues they care about. And so they voted based on those. And so all of the other things that get thrown at people who voted that way just are not applicable, and it it doesn't make a lot of sense to lump people into that basket of of thinking one way or the other. And then in other cases, yeah, there is a bunch of groupthink around certain ideas that that drive another group of people. And so for me, the fascinating thing is talking to people and really understanding why.
Charles Max Wood [01:30:37]:
You know, why do you care about this? Why are you involved with it? And what what's driving your worldview so that you're doing what you're doing? People choose where you get to real people.
Dan Shappir [01:30:48]:
People choose political parties like they choose frameworks.
Uncle Bob Martin [01:30:52]:
Somehow.
Charles Max Wood [01:30:55]:
A lot of times. You're right. I thought you were
AJ O'Neil [01:30:57]:
gonna say something. Investigation or understanding whether or not it aligns with their values?
Uncle Bob Martin [01:31:02]:
Yeah. Yeah. Alright.
Dan Shappir [01:31:04]:
Mostly mostly mostly, they're either going according to what their dad voted or intentionally the opposite of what their dad voted.
Charles Max Wood [01:31:12]:
There's some truth to that. Alright, Dan. What are your picks?
Dan Shappir [01:31:17]:
So I've really got 2 picks. First of all, both of them nonpolitical. The first, NBA start season has started, and I'm really happy about that. It's kind of challenging in Israel because the games are really late at night, so usually we don't get up for them. Instead, we record them and then try not to find out the results and watch them during the day. The benefit being that we can speed through, the timeouts and stuff like that. But I'm enjoying myself a lot, thanks to the NBA. So that would be my first pick.
Dan Shappir [01:31:48]:
And my second pick is a TV show on actually, I'm not sure where where it's airing. It's a British television series. Wherever you can get it, you, I I recommend watching it. It's called the day of the jackal. It's based on the book day of the jackal and the film day of the jackal. So maybe I should kind of go back and say that if you've not watched the movie day of the jackal from back in the seventies, you should. It's an amazing, excellent movie. But the TV show, the modern TV show is is pretty good as well, and it's so I recommend watching that too.
Dan Shappir [01:32:28]:
Being that it's a TV series rather than a movie, they can kinda take their time with it, which is, you know, both an advantage and a disadvantage, I guess. But we're we we enjoyed it. So and it's not science fiction, so my wife would watch it.
Charles Max Wood [01:32:47]:
Alright.
Dan Shappir [01:32:48]:
And those would be my picks.
Charles Max Wood [01:32:51]:
Alright. I'm gonna jump in here with mine then. I'm gonna do a board game pick as I usually do. This one is called blem. It's l m l e m. And usually when board games have funny names like that, a lot of times they're acronyms. This one's not an acronym. I don't know why they called it blem, and I don't know where they came up with it.
Charles Max Wood [01:33:13]:
But, it's, cats in space is is kind of the theme. And so, what you you have a rocket and you roll dice to move the rocket up the board. So each put one of your, cats on the rocket, and all the cats do different things. Most of them are bonuses. If if you're you have the most cats on the planet or, it doubles your score on the planet or your doubles your score on a moon or, doubles your score if you get all the way to deep space. But some of them do other things to help the dice and stuff like that. So you put your cats on the rocket, you roll the dice, and then if you have dice that match up with whatever the space you're on says, will allow you to advance, then you can advance based on the rules. If you use numbers to advance, you pull all of the dice to that number out, and you move up the number of pip showing.
Charles Max Wood [01:34:09]:
If you use boosters, then you put the boosters back in and you keep rolling. So, typically, people start bailing out when you start running out of dice because you only roll, like, 5 or 6 dice to start with. And so if you've pulled 4 dice out and you have to get twos and nothing else, then you're looking at it and going the odds of them rolling a 2 are lower than I'm comfortable with. And so you get your cat off the ship, and they go and do their away mission on the planet. And, at the end of the game, you tally up all your points based on where your cats landed. And if all not all your cats landed, then you don't score all your cats. But but, you know, that's how you win it. It took us about 45 minutes to play, with 4 people, and that was the game where we actually learned how to play it.
Charles Max Wood [01:34:55]:
So it's a fairly quick game. It's something that I think my kids, like my 9 year old could, you know, pick up and play. And to be perfectly honest, she's nuts about cats. And so, she would very much love this game anyway. I think there are some expansions or alternate rules to it. But yeah. So, yeah, we we liked it with 4 players. BoardGameGeek has a weight of 1.69.
Charles Max Wood [01:35:26]:
So like I said, it's a very friendly game, for people who kinda like a simple but fun game, and it has a community rating of 8 plus. So like I said, you know, your your younger kids could play it. If you have kids younger than that, they could probably play it. Just might have to help them, and they're not gonna understand all the strategy. But it's simple enough to where I yeah. Like I said, I think my 8 year old could play it and reasonably be able to figure out whether or not she wants to use a particular cat and how to win it. So, anyway, really, really enjoyed that game. And then a couple of other things that I'm gonna pick.
Charles Max Wood [01:36:06]:
One of them is, the TV show Reacher. So, I just finished season 2. I am gonna warn you a couple of the episodes have, sex, nudity, violence. I mean, you you kind of would expect it, I think, from an action show like that. If you want to be able to filter some of it out, my other pick is VidAngel. You can use VidAngel to watch shows on Amazon Prime, Netflix, and a couple of other places. Plus, you get all the Angel Studios stuff on on the app. So that's The Chosen.
Charles Max Wood [01:36:39]:
They have a bunch of movies they've made, which are terrific, by the way. And so, I'm gonna pick Reacher and, VidAngel, and you can filter, curse words too. Right? So if you don't wanna hear the f word, then it'll cut the sound.
Dan Shappir [01:36:53]:
I heard season 2 was wasn't as good as season 1. Do you think that's that's the case? Yeah. It was season I watched season 1. I haven't yet watched season 2. So
Charles Max Wood [01:37:05]:
it was it was kinda different. I'm trying to think better, not better. It's it's a little hard for me to specifically so in the first season, he's in he he basically winds up investigating a murder and, you know, just a little bit of a spoiler within the first couple of episodes
Uncle Bob Martin [01:37:26]:
to figure out that one of the victims is his brother.
Charles Max Wood [01:37:30]:
Season 2, he's investigating, and this comes out right in the first episode. He's investigating, the death of one of the guys that was in his special investigations unit when he was in the army. And, anyway, it's it's got kind of the same dynamics with he he has other characters that he's doing the investigations with.
Uncle Bob Martin [01:37:57]:
Yeah. I I would say
Charles Max Wood [01:37:58]:
I probably like season 1 better, but like I said, it's it's got a bit of a different flavor because it's not kind of the small town, you know, dive into stuff, mystery stuff. Yeah. But yeah. So I I yeah. I don't I don't know if I have a good answer for that. I I enjoyed them both.
Dan Shappir [01:38:16]:
If you enjoyed them both, then do try to find out, try to find the the series I recommend, the Day of the Jackal. It's it's it's not the same vibe at all, but I think you'll enjoy it.
Charles Max Wood [01:38:29]:
Yeah. It's it's interesting to kind of piece some of the stuff together. Another thing that I'm gonna pick, I'm I'm just picking all kinds of stuff today, is, a book series. So I'm on book 7, 8 of this series. It's called, the the sword of truth by Terry Goodkind. Just awesome books. I just finished the, I don't know, the 7th book or the 6th book. I can't remember.
Charles Max Wood [01:38:56]:
But but I'm I'm really enjoying them. This last book was kind of interesting because the primary protagonists that are in the previous bunch of books, they don't even show up into in this book until the end of the book. But it I think he's it was a setup for some of the things that are gonna happen later, and I think there are, like, 12 or 13 books in the series as a whole.
Dan Shappir [01:39:17]:
You remind me of, how, Douglas Adams once referred to the Hitchhiker Guides to the Galaxy books as his 5 book trilogy.
Charles Max Wood [01:39:28]:
Yeah. Yeah. Those books are fun too. The I mean, the they're hilarious books. But anyway, so I'm gonna pick those, and then, the the last pick I have is, like I said, if you're watching this live, I'm finishing up all the marketing materials and you being able to sign up, for it and stuff like that. And, honestly, I kinda wanna talk to people before they sign up just so that I make sure that I understand what people want and make sure that you're a good fit because it's gonna be kind of a pricey deal. But, I am putting on an AI dev boot camp starting the middle of January of next year. And so, we're gonna it's gonna be a 3 month, basically course.
Charles Max Wood [01:40:14]:
You're gonna get all the course material, upfront as I put it together right, on this first run. We're gonna have 6 months where you get on, you know, weekly or biweekly calls, and, you you know, so you'll be able to get help as as things progress. But, yeah. Anyway, that'll be at aidevbootcamp.com. I'm also, working on putting out some podcasts about AI specifically. It's not we have adventures in machine learning, which tends to get more into data science and machine learning, model building, things like that. These other podcasts are gonna be more focused on using APIs and open source systems to build your, AI and machine learning stuff, and that's gonna be ataiforruby.comandaiforjavascript.com. And so I'm gonna get specifically into, okay, how do you build these kinds of features into your apps using Ruby or JavaScript depending on what you're doing.
Charles Max Wood [01:41:10]:
So so those are my picks. Bob, do you have some picks for us?
Dan Shappir [01:41:14]:
Well, I'll just
Uncle Bob Martin [01:41:15]:
do one, and it's it's it goes back to the framework, discussion in in tangentially. About, about a year ago, David Hannah Meyer Hansen did a a YouTube video, and I think the name of it is the cloud fugitive. I think that's the name of it. And and he has he has taken 37 signal off the cloud, out of the cloud.
Charles Max Wood [01:41:39]:
Yes.
Uncle Bob Martin [01:41:40]:
And and it's a very good video. And he just walks through the the rationale and why it was a good idea and why everybody else ought to be thinking about it.
Dan Shappir [01:41:50]:
So you know what? You actually remind me of with that. So we've been forced to buy a new car. So we're actually buying a used car, but it's a new car for us. And they're all trying all the car vendors are trying to sell us on leasing the car. And and we know we were like, no, we're going to we're just going to buy it. We don't wanna lease it. So, yeah, being on the cloud is kind of leasing your car.
Charles Max Wood [01:42:22]:
Mhmm. Yep.
Dan Shappir [01:42:22]:
I'm using There are advantages and disadvantages to that. Sorry. Go.
Charles Max Wood [01:42:28]:
No. I'm just saying. I'm I'm I'm doing what he's doing.
Dan Shappir [01:42:32]:
No. Well, you're paying for comfort, really Yeah. Or the perception of comfort.
Charles Max Wood [01:42:36]:
Yeah. But the tooling that they've built around this move has made a lot of this stuff really simple.
Dan Shappir [01:42:46]:
Anyway It's also capex versus opex and various other similar things that are actually very similar to buying versus leasing.
Uncle Bob Martin [01:42:54]:
Anyway, Bob, go ahead. No. That's it. That was just I thought that's a good video for folks to watch. They can get a different idea of of how they could get their systems online as opposed to, you know, making some big commitment to a company that doesn't care about them.
Charles Max Wood [01:43:13]:
Yep. Very cool. Alright. Well, let's go ahead and wrap it up. Bob, if people want to connect with you or find stuff that you're working on these days, where do they find you?
Uncle Bob Martin [01:43:27]:
Cleancoater.com. That's the website. The videos are at cleancoaters.com, the plural of cleancoater. That's good enough. Twitter, uncle Bob Martin. Oh, I should say x, shouldn't I? It's actually x. I don't have a Blue Sky account. Rather not have one.
Dan Shappir [01:43:49]:
To be honest, like like, I told you, I I actually have both which is really annoying for me, the fact that I that I need to of a century descent. As
Uncle Bob Martin [01:43:58]:
well. I mean
Dan Shappir [01:43:59]:
Yeah. I actually did for a while, but it just you know, it was too much hassle. But, it is annoying to have 2 separate things of exactly the same thing. You know, if if they were different, then okay. But it's like, why do I need to have this twice? It's it's really annoying in that regard. But I do want to connect with some people who are only on Blue Sky. So, you know We'll see what happens.
Charles Max Wood [01:44:30]:
Yeah. Well, the thing that's interesting about it for me just from the platform point of view is that I've heard a few people talk about how Blue Sky is maybe cleaner and has less ads and stuff. But if you've been watching the discussions they're having around it, they're looking to add all of that stuff to Blue Sky. So I just yeah. So so it seems like
Dan Shappir [01:44:51]:
money will run out eventually. You know?
Charles Max Wood [01:44:53]:
Yeah. The the so the decision is not based on the what the platform offers. It's other things.
Dan Shappir [01:45:01]:
Look. I'm on social network to connect with
Uncle Bob Martin [01:45:03]:
people, and
Dan Shappir [01:45:04]:
that's that's the bottom line.
Charles Max Wood [01:45:07]:
That's what convinced me to go and create an account over there, but I'm I'm just as inactive over there as I am on Twitter. So,
Dan Shappir [01:45:16]:
anyway Anyway, thank you, Bob, for coming on. This has really been a pleasure for me.
Uncle Bob Martin [01:45:20]:
Certainly appreciate it. It's been a lot of fun.
Charles Max Wood [01:45:23]:
Yeah. We'll get you scheduled to come back and talk about the history of programming because that stuff's so good.
Dan Shappir [01:45:27]:
Oh, man. And I'm a history buff.
Charles Max Wood [01:45:29]:
Yeah. Alright. Well, hang in there for just one more second while we end the stream and make sure you're uploaded. And until next time, everybody. Max out.
Hey, folks. Welcome back to another JavaScript Jabber. This week on our panel, we have Dan Shapiro.
Dan Shappir [00:00:11]:
Hello from Tel Aviv.
Charles Max Wood [00:00:13]:
We also have AJ O'Neil.
AJ O'Neil [00:00:15]:
Yo. Yo. Yo. Coming at you live from pneumonia or corona or something.
Dan Shappir [00:00:21]:
Oh.
Charles Max Wood [00:00:22]:
Wow. Better, man. I'm Charles Max Wood from Top End Devs. I'm just gonna shout out about AI Dev Boot Camp. Page will be up today. We also also have a special guest this week. It is uncle Bob Martin. Bob, how are you doing?
Uncle Bob Martin [00:00:38]:
I'm pretty good right now. Live is treating me very well.
Charles Max Wood [00:00:43]:
Yeah. We've we've chatted a bunch, and, yeah, Dan, tossed a video over to me where you were, let let's say this is controversially as possible. You were bagging on all our favorite frameworks. And so, yeah, he he asked if we could invite you on, and I'm like, yeah. Bob's always game for that kind of thing. So you're here.
Uncle Bob Martin [00:01:05]:
I'm here. Fire away when when ready.
Dan Shappir [00:01:09]:
Yeah. Maybe it's worthwhile. Well, before we start, I just need to tell AJ, you know, AJ, that pneumonia has one distinct advantage over, you know, COVID or the cold. You know what that is?
Charles Max Wood [00:01:24]:
No. It's usually a bacterial.
Dan Shappir [00:01:26]:
Well, we've got met exactly. We've got medicines for pneumonia.
Charles Max Wood [00:01:30]:
So you can usually take an antibiotic and get rid of it.
AJ O'Neil [00:01:33]:
I mean, I don't wanna turn this to a health episode, but pneumonia is a symptom that means fluid in the lungs and can be caused either virally or bacteria.
Charles Max Wood [00:01:41]:
That's fair. That's true.
Dan Shappir [00:01:43]:
Then get the bacterial kind, and then you'll
Uncle Bob Martin [00:01:48]:
Chingles.
Charles Max Wood [00:01:50]:
Okay. So Take it back to Walmart and get the other brand.
AJ O'Neil [00:01:53]:
Since we're here since we're already here, so one of the things that happened that I think set me back was I took some cough medicine, and I coughed while taking the cough medicine. And, you know, the cough goes like Right? And so then the cough medicine went into my lungs, and then it got way worse.
Uncle Bob Martin [00:02:13]:
Oh, yeah.
AJ O'Neil [00:02:15]:
So Yeah. I might still be recovering from the actual inhaling cough syrup.
Charles Max Wood [00:02:21]:
I'm I'm always surprised with, you know, my kids. I have a kid in elementary school that I'm always surprised I'm not sick like every other week. And then I was thinking, well, I only have one in elementary school anymore, but my wife is the lunch lady. So I am surprised I'm not sick every other week. But, anyway Wait. Wait.
Uncle Bob Martin [00:02:40]:
Wait. Wait. Wait. Wait.
Dan Shappir [00:02:41]:
Wait. Wait. Wait. What doesn't kill you makes you stronger, Chuck.
Charles Max Wood [00:02:45]:
Yeah. Well, we're gonna see how close we can get to that one of these days. I'm pretty sure. Alright. Well, let's let's talk about frameworks. So, Dan
Dan Shappir [00:02:56]:
We need to introduce uncle Bob first, though.
Charles Max Wood [00:02:58]:
Yeah. Well,
Uncle Bob Martin [00:02:58]:
we he goes he doesn't he needs no introduction.
Charles Max Wood [00:03:01]:
But, yeah, we we did call him out. Bob, is there anything you want people to know about? Are you working on anything coming up?
Uncle Bob Martin [00:03:07]:
Oh, Hex. Yeah. I just finished the book and it should be out in time for Christmas, I hope. It's called We Programmers and it's a history of programmers going back to Charles Babich and then working forward in time, Grace Hopper and and, the the trio that did C.
Dan Shappir [00:03:31]:
I'm so looking forward to this book. You don't know how much you're looking
Charles Max Wood [00:03:35]:
forward to that book. I was gonna say, come out by Christmas. So are you coming back on in January, please?
Uncle Bob Martin [00:03:42]:
Sure. Sure. I'm glad to talk about that book.
Charles Max Wood [00:03:45]:
That stuff is so fascinating. It was a it was a
Uncle Bob Martin [00:03:47]:
fun book. That was that was just a giant entertainment for me.
Dan Shappir [00:03:51]:
I would love to know, for example, how you did the research, but I guess we could save it for for a future episode. I do have the one question about it. You know, do the readers on Amazon confuse you with George Martin?
Uncle Bob Martin [00:04:03]:
Yeah. I no one has ever confused me with George Martin.
Charles Max Wood [00:04:06]:
His books are almost long enough. Bob's are. Anyway. Yeah. I always love talking to Bob.
Uncle Bob Martin [00:04:18]:
So let's let's dive into the framework thing. Dan, you're the
Charles Max Wood [00:04:21]:
one that brought this video to me. So I'm gonna let you kinda set the stage, and then Bob can defend himself vigorously from our onslaught.
Dan Shappir [00:04:30]:
So, to be honest, I don't even know how I found the video. Maybe it just popped up in my timeline. I was watching some of Bob's other talks. And to be honest, it's not really a talk. It's more of a snippet from a talk. I I was looking for the full talk, but I just couldn't find it. You know, for some reason, that particular YouTube channel basically sliced up the talk into a lot of little parts. And like Bob said, put some background music behind it to make it more exciting, I guess.
Dan Shappir [00:05:03]:
But specifically, that particular video was Bob warning the audience against using frameworks. And that's an interesting take in the context of web development these days. Let me put it this way. I don't think I've seen a vanilla JS implementation of something significant in a long time.
Charles Max Wood [00:05:30]:
Hang on. I just looked up Bob's book on Amazon, and it says it's available now. I'm gonna put the link into the comments, and that way people can go and devour it over Christmas. Alright. Go ahead. So,
Dan Shappir [00:05:44]:
basically, my opinion is a bit different than Bob's on this potentially. And interestingly, to some extent based on Bob's own clean code principles. So I was kind of interested to hear, you know, what he actually thinks of frameworks even if his definition of framework matches what, you know, more or less the way that what we define to be a framework in
AJ O'Neil [00:06:16]:
the context of web development. Like, maybe he means something else. So I'm
Dan Shappir [00:06:20]:
really glad that you've got Bob on. So hi, Bob.
Uncle Bob Martin [00:06:23]:
Hi. So I I can go into this right now if you'd like.
Charles Max Wood [00:06:29]:
Yeah. Do it. So Do.
Uncle Bob Martin [00:06:31]:
Break our hearts. What's called the definition of framework. The definition of framework that I'm using here is some piece of software written by someone else that takes a very large amount of control away from you, the programmer. You have to surrender in some way to it. You have to adopt its conventions. You have to integrate with its modules. If it's an object oriented program, you have to derive from its base classes. That kind of thing.
Uncle Bob Martin [00:07:00]:
A framework like that requires the programmer to make a very large commitment to the framework. The problem with that is that it's an asymmetric relationship. The framework author makes no commitment at all to those who must commit to them. So there's this very uneven relationship there. The framework author can do anything he wants or she, whoever whoever this person is, they can do anything they want. They can make a change to the framework in any way they feel like it and drag a whole host of people kicking and screaming along with them because they have bound themselves so tightly to the framework. There is a very famous image of, a person whom I have a very high regard for, David Hanamayor Hanssen, who who, several years ago at a Rails conference, objecting to all of his users' demands against him, put up on the screen two words. The first one starts with f and the second one starts with y.
Uncle Bob Martin [00:08:08]:
And that's kind of a a a good symbol That's a very David.
Dan Shappir [00:08:16]:
Well, he is the more or less a definition of a benevolent dictator almost as much as Linus is.
Uncle Bob Martin [00:08:23]:
Well, I have, Right? You've got a benevolent dictator. And if you go in a way that the dictator doesn't like, you're out in the cold.
Dan Shappir [00:08:32]:
So so I'll that wasn't the only point you made, but I want to address this particular one. No. You made several points, but I think that was one of the core points that you made. And what you said is obviously true, but it's also true when you consider the programming language you use, when you consider the platform you're running on, when you consider some of maybe even some of the core libraries that you're using. So no code runs in a vacuum. You're always dependent on something, you know, even the hardware. So how is that really different than any of those other things? Because at the end of the day, your software is going to be running on something.
Uncle Bob Martin [00:09:20]:
Well, there's a there's a difference, in that. So the the asymmetry of the relationship in the case of a framework is greater than the asymmetry when, for example, with a programming language. Let Jarnes Strustrup, right, makes the c plus plus programming language. His success depends on him being able to satisfy a very large number of people. Right? At which he's worked very hard at in the c plus plus standards committee until recently has been doing a great job with that. With a framework.
Dan Shappir [00:09:56]:
Yeah. You know why I'm laughing.
Uncle Bob Martin [00:09:58]:
Yeah. Yeah. It's it's it's a a pretty open secret.
Dan Shappir [00:10:02]:
It's an interesting question why I'm laughing. Well, you know, the word question.
Uncle Bob Martin [00:10:10]:
Oh, yeah. We're not allowed to say that word anymore. At least not in c plus plus community. Oh, those guys. Wait. What? What? What are the I'm not gonna go into it here. But someone can put up a framework. And in the case of, DHH, Rails is a really good example of this.
Uncle Bob Martin [00:10:40]:
He did that for himself. He did that for himself and for 37 signal. He and then he opened it up to the world and said, hey, guys, you wanna use it? That's great, but don't bother me. Okay. That's perfectly fair. On the other hand, if you're the user, caveat emptor, and I you use that at your own risk. If you're using c plus plus, well, that's not quite at your own risk. There's a difference in the relationship there.
Uncle Bob Martin [00:11:07]:
If you're using a platform like OSX, right, they've got a commitment to you, a small one. But but, you know, DHA, no commitment to me if I'm using Rail.
Dan Shappir [00:11:17]:
Really? I think
Uncle Bob Martin [00:11:18]:
Apple more or less has only has a commitment to their shareholders. I think that's about it.
Dan Shappir [00:11:18]:
When you're talking about a commitment to their shareholders. I think that's about
Charles Max Wood [00:11:23]:
it. When you're talking about Swift or their frameworks in particular?
Dan Shappir [00:11:26]:
Everything. Yeah. Everything that Apple does.
Charles Max Wood [00:11:30]:
Well, it's interesting too. Right? Because, you know, you bring up, David Heinemeier Hansen, but, I mean, this is a JavaScript podcast. I I can I can argue both sides of anything with Rails, but, and and it it's true? A lot of the stuff that they put into the framework are things that they need for Basecamp or something else, and so that that's what goes in. The reality is is that, you know, they recently formed the Rails Foundation, and they get input from some of them now. But, again, you know, a lot of times, it's stuff that Shopify needs, and that's stuff that I'm never gonna touch. But let let's let's switch gears here for a little bit because, you know, Dan brought up Apple. You know, a lot of the frameworks that a lot of people are using these days are frameworks like React and Angular that which are both, sponsored, supported by large companies like Facebook and Google. And they're they're solving the problems that they have.
Charles Max Wood [00:12:26]:
Right?
Dan Shappir [00:12:26]:
I mean, to a certain degree It's actually interesting because I recently heard on a podcast that was, on the, JS Party, I think, podcast. They interviewed, some of the React creators at ReactCon for something like that, the recent React conference. And they said something very interesting. And I think it also appears in the React documentary, which actually is pretty good, and I I mostly recommend it. I'm kind of annoyed with them that they didn't mention Wix, but that's an aside. No. We were, like, the biggest implementation out of the first big implementation outside Meta, and, you know, somehow it's totally missing. But, anyway, the the point they made actually totally man matches what Bob said, which is they created React initially for internal use, and then they thought, hey.
Dan Shappir [00:13:25]:
It's interesting. So they decided to open source it and let it out. And it was never a profit center for Facebook, so they didn't really care about the their users as customers. And they mostly, the much of their motivation about what to do or not to do in that framework derived from Facebook's own needs. So I I'm totally in agreement with with Bob about that. That being said, that's actually kind of changing now because a lot of, what's driving innovation in the React world is kind of moving from React to Next JS. And Next JS is heavily associated with Vercel. Mhmm.
Dan Shappir [00:14:09]:
And much of Vercel's business is based on their their need for Next JS to be successful. So it's changing now. I mean, it's starting to become a two way street. And in fact, they actually said on the podcast that they're happy about the fact because they're now driven more, more by actual customer needs than by whatever somebody just says that should be done within within Meta.
Charles Max Wood [00:14:40]:
So I understand, and I agree with everything you just said. But back to Bob's point, and I I'm kind of poking things both ways because I'm kinda curious where the balance is, and I haven't made up my mind yet. Right? So I kinda wanna hear the arguments on both sides. But, Meta could, right, with the React core team and their ownership over React, decide to do something that people don't want or decide not to implement features that people do want and actively work against certain movements within the community should they decide to. Now I'm not saying they will, and I don't know why they would, but it could happen. Right.
Dan Shappir [00:15:20]:
You know, it's it's and but it's open source. And then somebody could theoretically fork it and do whatever they want with it.
Charles Max Wood [00:15:26]:
Yeah. But most of the other frameworks we're talking about are too.
Dan Shappir [00:15:30]:
Well, the the big difference is that React is more or less the only really successful framework. Maybe also Vue to an extent, probably also Vue. The other frameworks really need to incite or elicit, elicit would be the better word, elicit, people to actually use them. Mhmm. So there, the two way street is much more active. And I would argue that it's kind of the same thing with programming languages. I mean, you know, once a programming language becomes super mainstream and used widely, a lot of these people are the people who are using it, use it really without a choice. Basically, whatever job they got, basically said you need to use language x.
Dan Shappir [00:16:18]:
You need to use framework y. But when you're talking about a new programming language or a new framework, that's like the up and coming thing, like, you know, the then it's you're trying to convince people to use what you're providing, and then it's much more of, you know, trying to to sell your benefits, like, I think. Or would you disagree, Bob?
Uncle Bob Martin [00:16:43]:
Oh, no. I don't disagree at all. You are trying to sell your benefits and everybody's trying to do that. That's what all the the framework guys are trying to do. So my my position on frameworks is that you should be careful with them. Right? That you should understand the relationship, understand that it is asymmetric, and weigh the costs and benefits. Right? So for example, it's very easy to get a, a Ruby on Rails application up and running in a matter
Charles Max Wood [00:17:13]:
of a few days. Just trivial.
Uncle Bob Martin [00:17:15]:
Yeah.
Charles Max Wood [00:17:15]:
I get ridiculous amounts of things done with Rails. I get ridiculous amounts of things done with some of the other frameworks I use on the front end. Right?
Uncle Bob Martin [00:17:23]:
And as as time goes by and you want to start doing things that the framework doesn't support well, all of a sudden the framework starts to fight against you.
Dan Shappir [00:17:34]:
And you're
Uncle Bob Martin [00:17:34]:
then you're then you're in this funny mode because you've already made this commitment. And now the next thing you wanna do is gonna get hard and the one after that is gonna be even harder and you have to violate the framework in ways that it doesn't care about. It didn't make it easy for you and now you have to subvert it in bizarre ways. So you need to know that going in. One of the one of the problems that I see with frameworks is that they do a great job of selling just as you're saying. Right? They'll do a terrific job and they'll show you these lovely little applications on a YouTube video or something. Oh, look, you just have to write these 17 lines of code and life will be glorious for you. And you, you you're not really looking down the road next year when life is not gonna be so glorious.
Uncle Bob Martin [00:18:22]:
So my advice to people is to be careful with frameworks and to the extent possible, try to isolate yourself from them. Not that you shouldn't use them but you should use them in a way that is careful so that if the framework turns around and bites you, you've got some options.
Dan Shappir [00:18:46]:
So before asking you about how to implement that type of isolation, I'll go one step back and ask you when I if I'm in the process where if I'm in a situation where I can actually get to select the framework that I
AJ O'Neil [00:19:02]:
use rather than having it thrust on me by, you know, the previous developers who worked at the company.
Dan Shappir [00:19:10]:
Any advice on how I should go about choosing the most appropriate framework for me?
Uncle Bob Martin [00:19:16]:
Well, so that gets into the other discussion we were having. How how much of this how how much of the attitude of the authors is geared towards the user community as opposed to their own community? You know, in the case of Rails, that was an interesting one because that just started I keep going back to Rails. But that just started as a nice little framework for those guys and then it leaked out into the community and everyone started using it. And that's a bit of a warning sign. Right? You look at that and think, well, are they gonna take this in some direction that I don't like? On the other hand, if you've got a very large organization and they're trying to keep, you know, a a 100000 programmers happy and their reputation hangs on that framework
Charles Max Wood [00:19:59]:
Like Vercel, for example.
Uncle Bob Martin [00:20:00]:
That's a slightly better relationship. You can take a little more confidence in that. And that gets into the the programming language argument. Right? If if they're really trying to, you know, give programmers the language of the Internet, well, then they're gonna have to keep an awful lot of programmers happy and it's not quite as risky.
Dan Shappir [00:20:21]:
Interesting story though is what happened with Angular. Like Angular 12 kept a lot of developers really happy and then they kinda broke that contract. And, you know, and that's when React happened. But but React why are you making a face, Bob?
Uncle Bob Martin [00:20:42]:
Well, the the face I'm making has nothing to do with Angular or React. It has to do with, a meta issue, which is that frameworks are, popularity fads. They come and go. This month, it's going to be framework x and but but next month, somebody's gonna say, oh, framework y is so much better. And so that's another one of these risk factors of a framework. You don't know if the framework you choose is going to be popular next year or you may have to convert everything over to the next new framework or all your programmers may quit because they don't like this framework and they wanna go to a company where they're using that framework. So we we wind up in this very strange popularity contest, which has almost no substance to it. Almost almost no.
Uncle Bob Martin [00:21:36]:
Sorry.
Dan Shappir [00:21:36]:
Well so go ahead, Chuck. Sorry.
Charles Max Wood [00:21:38]:
So so the thing that I'm seeing that both kind of illustrates this but doesn't quite line up with it is, I've spoken with a whole bunch of people who still have apps that are running things like Backbone JS. Right? And so they want to move into something like React JS. Right? But it's not so much the fad cycle that's driving it so much as just, the technology and the standards and things like that that are available today and that have been built into React that haven't been maintained into something like Backbone, and there are some very good reasons for that. So so what they're looking to switch to is they're looking to switch to something that that gives them the advantages that React has because Backbone no longer has them as opposed to a fad cycle.
Dan Shappir [00:22:23]:
I significantly disagree. I think the most significant consideration the developers have when thinking about switching frameworks is their higher ability.
Charles Max Wood [00:22:35]:
No. That's true. But but my point is is typically, the argument they're making is the technological one.
Dan Shappir [00:22:42]:
Oh, they might make a technological argument, but the real motivation is I don't want backbone on my resume. I want React on my resume. That's the real reason.
Charles Max Wood [00:22:52]:
That's true.
AJ O'Neil [00:22:53]:
That seems so weird to me, though. It's a sea of mediocrity. I mean, you're fighting against nobody nobody can identify who's a good React developer. Right? Like, how would you even interview to find out which React developer is actually good? Because there's so much noise. How do you find the signal in that? I agree. That's what that's what seems weird weird to me.
Dan Shappir [00:23:17]:
I agree with with what you said, AJ, but that still doesn't change the fact that the react that a person with React experience on their resume is more hireable than a person without React experience in their resume.
Uncle Bob Martin [00:23:30]:
And that's just insane. That's just insane. It's You don't wanna hire programmers based on their familiar familiarity with a framework.
Charles Max Wood [00:23:41]:
No, Bob. Everybody does it. I know. I know. Everybody does it.
Uncle Bob Martin [00:23:46]:
It seems
AJ O'Neil [00:23:46]:
like Well, it's more like a meme than it's not like a it doesn't seem like a conscious rational decision. It's like,
Dan Shappir [00:23:55]:
I'll take it even a step back. Yeah. It doesn't even matter if it's true. It matters that the the the developers picking the framework think that
Uncle Bob Martin [00:24:05]:
it's true. Okay. And there's a bunch of HR guys that think it's true too.
AJ O'Neil [00:24:11]:
Yeah. Yeah. I I think that in the in the age of AI hiring where
Uncle Bob Martin [00:24:16]:
you just have to
AJ O'Neil [00:24:18]:
stuff your resume with a bunch of
Charles Max Wood [00:24:20]:
No. It's so true. It is so true.
Uncle Bob Martin [00:24:24]:
If if you want a resume, this is gonna get you an interview there that can see through this nonsense. Yep.
Charles Max Wood [00:24:30]:
If if you want
Uncle Bob Martin [00:24:31]:
if no. Seriously. If you wanna get an interview, you take the resume you wrote, and you
Charles Max Wood [00:24:35]:
hand it off to an AI system and say,
Uncle Bob Martin [00:24:38]:
I wanna get this job, and it'll op you have to optimize it because people don't read your resume. They hand it off to an AI system that tells
Charles Max Wood [00:24:46]:
you tells them how good a match you are.
Uncle Bob Martin [00:24:49]:
And you're cracking up because, yeah, you could be a
Charles Max Wood [00:24:52]:
crappy developer that has a perfectly optimized resume. It's like SEO for job search.
Dan Shappir [00:24:59]:
Yeah. But it just gets you through the door. At the end of the day, there is I've yet to to see a job when there was no actual technical interview
Uncle Bob Martin [00:25:07]:
or That's fair.
Charles Max Wood [00:25:08]:
But but they're they're in my opinion, and I think AJ is making this point. They're stringing out a bunch of competent, really terrific people who didn't optimize their thing for the AI system.
Dan Shappir [00:25:20]:
Oh, you know, that's what happens when the job market is weaker. When when the job market is is such that developers in high in high demand that there's not enough supply, then you can, you know, get by with whatever crap you happen to have in your resume. But, when when the situation is reversed, you're absolutely correct. It's SEO for getting a job.
Charles Max Wood [00:25:45]:
Yep. Now I wanna divert us back to the discussion on, you know, the frameworks and whether it's hype or not hype and things like that. I I guess I guess the real thing that I'm I'm wondering and, you know, I'm curious to see what you think, Bob. But, so
Dan Shappir [00:26:01]:
But, Chuck, I'm sorry. Bob did not answer my question.
Uncle Bob Martin [00:26:05]:
Okay. Well, I think I'm asking the same question another way, but go ahead.
Dan Shappir [00:26:09]:
Well, my question was, how do you pick a framework?
Charles Max Wood [00:26:13]:
Yeah. That that's what I was gonna go for was yeah. If you're if you're looking at these frameworks and it's you know, you're you're worried about stability, you're worried about the the t you know, whether or not they're gonna change stuff, whether or not they're gonna implement the things you need, you know, what you're giving up versus what you're getting. Yeah. How do you pick?
Uncle Bob Martin [00:26:32]:
Or do you I mean, you look at you look at the framework technically first to see if it's technically compatible. Right? You make sure that it's not just surface compatibility. You know? Oh, it's gonna help you for
Charles Max Wood [00:26:44]:
the next few weeks.
Dan Shappir [00:26:46]:
Compatible with what?
Uncle Bob Martin [00:26:48]:
Whatever your application is. If you're if you're writing a, I don't know, some kind of a desktop application or some kind of a handheld application and you're you're trying to figure out is this framework going to help me? How much is it gonna help me? Is it is it just going to help me in the 1st 2 weeks or is it going to help me long term? That's one thing to look at. Then the other thing to look at is what what's the user base? How many people are using this? Are they are they putting, demands on the framework authors and are the framework authors meeting those demands? And who are these framework authors anyway? Is it one guy in his basement or is it a group of people who have made a commitment to the community? Those are the kinds of things you want to be looking at and then even then even then you want to put that framework in your system and isolate yourself from it, as much as you can. It's hard to do but as much as you can so that when they screw you and they will screw you, you will have some options.
Charles Max Wood [00:27:52]:
So I I have a question, a follow-up question on your first point, which is, is it compatible with your application? Yeah. A lot of people that I talk to about their applications, they don't have the depth of understanding of either the framework or the application to make a good call there. So what kinds of questions like, let's say that I'm building, you know, the the dream app that does the podcast of all podcasting podcast stuff. Right? What kinds of questions do I need to be asking about my app and what kinds of questions do I need to be asking about the framework so that I can make at least a somewhat informed decision on this knowing that my requirements may change?
Uncle Bob Martin [00:28:31]:
So tell you a story. 20 some odd years ago, my son and I built an application. You're probably aware of it. It's called fitness, and it's a web based application. Right? So it puts up web pages. And the first decision you would make the first framework decision you would make if you had to do a web app is what web server should I use? Okay. Well, we didn't use one.
Charles Max Wood [00:28:56]:
Ouch. We wrote one.
Uncle Bob Martin [00:28:58]:
Why did we write a web server? Well, it turns out that a web server is about 300 lines of code. If you get rid of all the crap that the framework is gonna put in there that you'd have to carry with you a nice framework for for doing web serving is 300 lines of code. It's almost a trivial piece of work. And so we thought, and and this is one of the ways you would do this decision, right? You would look at what the framework gives you and you'd have to look in some depth and then you have to ask yourself the question. What would it take for me to write that? And in some cases, it's not a lot. In some cases, it's more. So I'll tell you another story. About 2 years ago, maybe 3 years ago, I started writing a desktop application, for, a social network protocol called Master.
Uncle Bob Martin [00:29:53]:
It's one of those federated, social networking stuff that nobody can censor. And I I had it up on my screen and I was writing the code. I was writing it all in closure. It's lots of fun and I thought, I'm not using any framework. I'm just gonna muscle through this thing. And I I picked up one little framework called processing which is a nice little thing. It doesn't get in your way very much. And I fiddled around with that for a while and and it started to get hard because I had to implement all of the text editing stuff and all of the, you know, double clicking, all that drag and drop, but then I thought, you know, I really need a framework.
Uncle Bob Martin [00:30:32]:
So I I said, okay. I'm gonna use a good old standard, swing. No, that was the worst decision I ever made in my life. Let me tell you. I started. I think you're gonna get some sympathy on this podcast saying that,
AJ O'Neil [00:30:46]:
but I
Uncle Bob Martin [00:30:48]:
started integrating swing into this thing. And
Dan Shappir [00:30:51]:
I got it.
Uncle Bob Martin [00:30:51]:
It's up and running. It works. It's fine. It's just a hell hole. It's awful. And I'm I'm thinking now what I need to do is just rewrite the whole thing. That's there's 2 different stories with 2 different outcomes. Right? I thought, oh, you know, I can probably make it with swing.
Uncle Bob Martin [00:31:09]:
It's old. It's it's reliable. Lots of people have used it. No. It's just it's a nightmare. So
Dan Shappir [00:31:17]:
So Post
AJ O'Neil [00:31:20]:
oh, go ahead, Dan.
Dan Shappir [00:31:20]:
No. Go ahead. You go ahead, AJ. My my questions tend to be long.
AJ O'Neil [00:31:26]:
The question I wanna pose is, what is the alternative to a framework then? Because the the reason people choose frameworks, they want a shortcut. They want some layer of abstraction that
Charles Max Wood [00:31:38]:
If you get
AJ O'Neil [00:31:39]:
tools. The way problem's stuffed. Sure. So what's what's the alternative to a framework? Because I don't think that it's, well, you just write everything by hand.
Uncle Bob Martin [00:31:48]:
Well, some sometimes the alternative is to do it by hand. Sometimes. Right? Some sometimes the benefit that the framework offers you offers you appears large, but it's actually not. And that's the that was the case with fitness. Right? The the very idea that we would, write our own web server had, you know, had us going, oh my god. We'd just and then we actually wrote the thing. There's, 300 lines of code. I can get stuff on the web on a website pretty doggone easy.
Uncle Bob Martin [00:32:17]:
It's a little bit of socket manipulation. So there that's one case where you you overestimate the value of the framework compared to the effort to do it yourself. Then the the, the Noster one that I did, that's the opposite case where I underestimated the value of a framework and and in the end I decided I had to have one and then I chose the wrong one. Right?
Dan Shappir [00:32:44]:
So
Uncle Bob Martin [00:32:44]:
there's there's no way out of this dilemma. We don't want to write everything from scratch. We do want to use what people have done. We want to build on the good work of others, but it's not a free lunch. You have to be really careful about the frameworks you use. You don't want that decision to be a quickie. You don't want it to be one based on popularity. You don't wanna do it because all your friends are doing it.
Uncle Bob Martin [00:33:11]:
You wanna look at it good and hard and you wanna do some of the experiments. You know, how far can I get without the framework?
Dan Shappir [00:33:20]:
So you in one of your talks, might have been this one. You mentioned that in one of your project, I think it was you, pretty sure that it was you, you deferred the the database decision to the very end of the project.
Uncle Bob Martin [00:33:35]:
Yep.
Dan Shappir [00:33:36]:
Unfortunately, from my experience, that's not really something that you can do with a framework. And the problem is that you kind of need to choose a framework more or less upfront. And when you do that, like you said about that database selection, you have the least amount of information. So unless you happen to be re rewriting an existing app, which, you know, is is done, but is is fairly rare in our industry for for good or bad, you are making the decision about the framework while you have the least amount of information about what you're actually developing.
Uncle Bob Martin [00:34:13]:
So what can you do to get more information before you make the framework decision? So for example, most of the frameworks out there are some kind of UI framework. They help you manage the user interface. React, Angular, all these things. Right? It's all some way for all the little gestures on the user user interface to make sense. What if you did not do the UI first? What if you focused on business rules first? What if you wrote the core of the application without a user interface so that you had information about what this application actually does and then you can back away from that and say, okay, what kind of user interface do I really need? What features are really going to be necessary here? And you can make an informed decision about what kind of framework you you're going to need.
Dan Shappir [00:35:07]:
Yeah. Except that most product, managers start with Figma.
Uncle Bob Martin [00:35:13]:
Well, yeah, there's a problem for you.
Charles Max Wood [00:35:16]:
I was gonna make the joke that if everybody follows Bob's methodology here, no one would use React.
Dan Shappir [00:35:22]:
But Well, I'm actually not sure.
Charles Max Wood [00:35:24]:
I think a lot of people would opt for not something so heavy on the front end.
Dan Shappir [00:35:28]:
I'll I'll well, I'll put it differently though. So when in the past, when people ask me I actually even we spoke about Quora before the recording started. I once answered a question of, you know, frameworks. What are they good for on Quora? And and back in the day, back when I wrote that answer several years ago, what I said was that at the end of the day, most web applications do more or less the same thing. You know, we all even like to think that we're very original, but at the end of the day, like, a significant portion of what we develop is more or less the same as what everybody else does. It's like, you know, filling forms, basic posting forms, stuff like that. And, therefore, it's it's kind of repetitive to write it again and again from scratch and frameworks, like you said, like, provide a box solution that does a lot of the heavy lifting for you that you kind of you don't need to repeat yourself. And that's true, and I still think that's true.
Dan Shappir [00:36:26]:
But my focus on what the frameworks provide has kind of shifted since then because I've been interacting a lot with a lot of, framework creators and designers. So Ryan Carniato is a friend. Mishko Hevery is a friend. You know, so so I've been thinking about, what what it is that they're thinking. Like, when they explained to me their considerations and their design decisions, it what I came to the conclusion is that the core difference between the frameworks is actually the mental model that they promote. And the different frameworks, like React versus Solid versus Svelte versus Vue versus Angular, all have really different mental models of how applications in general and user interfaces in particular should be architected. And and, consequently, to a great extent, ideally, when you choose a framework, I think you should choose the framework that best matches your own particular mental model.
Uncle Bob Martin [00:37:53]:
Now how do you determine that mental model if you don't understand the details of the application? If you're working on a particular kind of application and you focus on the business rules, you may come to a very different decision about the mental model that you need for your user interface. If you've chosen the framework upfront, that framework will drive you into a mental model that will then have incompatibility with the business rules themselves or at least the ideal state of those business rules. That's my own argument of, you know, do you go inside out or do you go outside in? And I like I like going inside out.
Dan Shappir [00:38:34]:
For sure. And I I totally agree with what you're saying. I'm just thinking that understanding the mental model or even the philosophy of a framework requires less initial investment that what you might than what most people might expect. That even if you that you can develop a fairly simple sample application, like a throwaway application, in order to kind of gauge the the the the the the framework's philosophy and mental model and and see not necessarily if it fits your needs in the context of that particular application you want to implement, but rather your own personal preferences in general. And I would contend that your personal preferences supersede, like, the details of a of a particular application.
Uncle Bob Martin [00:39:35]:
That one makes me a little nervous. First of all, you're probably working in a team. I mean, some of us don't, but probably you're working in a team, and everybody's gonna have their own, you know, mental model preferences. I would hope that the application would focus that and that you'd have a reasonable debate about, okay, what what of our mental rules which one of our mental models is most applicable to this particular application? I would help.
Dan Shappir [00:40:04]:
Yeah. You're correct. But at the end of the day, there's a person. At the end of the day, it's a person Yeah. That makes the decision.
Uncle Bob Martin [00:40:12]:
Yeah.
Dan Shappir [00:40:13]:
And everybody else kinda has to live with it.
Uncle Bob Martin [00:40:15]:
The benevolent dictator arises again. Yes.
Dan Shappir [00:40:19]:
Yeah. But it might just be the first person on the team. You know, the original developer on the project.
Uncle Bob Martin [00:40:25]:
If there was only 1. Yes.
Dan Shappir [00:40:27]:
So well, in a lot of start ups, there usually is 1. And, you know, I I've worked at various, you know, large organizations where I ask why are we using technology x? And the answer is this guy who worked here 8 years ago, that's what he chose. Yeah.
Uncle Bob Martin [00:40:49]:
Yeah. I I have joined startups and thrown away the work of the early developers.
Charles Max Wood [00:40:56]:
I did this on on a
Uncle Bob Martin [00:40:57]:
way to go forward.
Charles Max Wood [00:40:58]:
Part of our test framework on the project I'm working on for a client literally on Friday. Why are we doing it this way? Well, the other developer couldn't figure out how to do it the normal way. I figured out how to do it the normal way.
Uncle Bob Martin [00:41:13]:
Now another story, and this was long, long time ago. I was working at a at a startup, and, we we, we needed to store a bunch of data on disk and and, of course, everybody says, well, you've gotta get a relational database. This is like 1985. Right? You've gotta get a relational database. And I thought, we don't need a relational database. All we need to do is store a couple of things on disk, and that's fairly easy. And we did. We just stored real simple little little thing that we cobbled together.
Uncle Bob Martin [00:41:43]:
Along comes the marketing guy who who joined the company about 6 months later. You don't have a relational database in your system? Yeah. That's right. We don't need it. Oh, well, we can't even sell it if you don't have a relational database in your system. It was it was the most absurd argument to make to a bunch of technical people that the marketing guy said he could not sell the application if it did not have a relational database in it. And in the end, they had to put a relational database into it because the marketing guy was absolutely adamant and overrode all the technical people. I didn't stay at that company.
AJ O'Neil [00:42:21]:
Well Hang
Uncle Bob Martin [00:42:22]:
on, Bob. So what
Charles Max Wood [00:42:23]:
you're saying is is if the if the framework doesn't implement AI and blockchain, then it's worthless. I
Dan Shappir [00:42:31]:
I just want to mention that a few years ago, we had Norm Honing on on, the show talking about their, their kind of framework called remote. It's not a UI framework. It's more of a database or or or something like database connectivity layer that can work either from the back end or from the front end. And, interestingly, when you install their their thing, it comes with a built in flat file based implementation. That because they don't know what database you're you you're gonna use and you know? So the end but they want you to be able to play with it out of the box.
Uncle Bob Martin [00:43:10]:
Right.
Dan Shappir [00:43:10]:
And what he told us told me at least that in a lot of cases, companies just stick with their flat fireplace.
Uncle Bob Martin [00:43:18]:
Yeah. Mhmm.
Dan Shappir [00:43:21]:
Because it it works. And for the amounts of data that they might have, it might be good enough. You know, interesting. What I'm but the point I'm trying to make is this. So for example, let's let's consider React. And the reality interestingly, a lot of people who are using React are not actually aware or sufficiently cognizant of the React way. And and when they develop using React, they don't actually develop according to the the way in which the React designers intended them to actually work.
AJ O'Neil [00:44:01]:
They don't even do this on their documentation, by the way. Like because there is the document, the the react rationale or whatever it is. And and, like, they're dot like, that's where things bugs me is the documentation goes against their own principles. Because they give examples to give the examples in the fewest lines rather than to give examples that follow the patterns that they are prescribing people use.
Dan Shappir [00:44:26]:
Anyway, what I'm trying to say so React, for example, is very much about the I d the ideal of state in UI out, like UI as a status functions. And, you know, you can debate about how well they've been able to achieve it and some of the the caveats that they have and and so on and so forth because at the end of the day, you know, UI just can't be totally pure functions. And, but that's kind of the React way. And if you choose React, that needs to be kind of your design philosophy. And, you know, people ask, like, why doesn't React have signals? And and we had the people from React. We had Joe Savona from React from the React, core team on the show. And he basically said because that's not React. That that is contradictory to the React philosophy.
Dan Shappir [00:45:27]:
On the other hand, if you want signals, then you've got Solid or now you've got Svelte. So, really, you can create a fairly small application and see, do I like the React way, or do I like the Solid way? And if you actually start by thinking about what is the core philosophy of this framework and work from there, my assertion is that you'll probably make a better decision than, you know, trying to go based off off of your yet not yet fully formed understanding of what your application is gonna be and what exactly it's gonna need.
Uncle Bob Martin [00:46:09]:
I'm not gonna disagree with that. I think the more experience you have with frameworks, the better information you're gonna have to to make a decision.
Dan Shappir [00:46:19]:
The problem though is is you said to separate as much of the business logic out of the, framework itself. I guess that means that if you've got some sort of business logic, you know, encapsulated in some pure function, and then you can call that function, get the values, and you don't really care what you're calling it from. The problem is that from what I've seen in reality is that frameworks tend to seep into those functions. Yeah. You look at what should have been a pure
AJ O'Neil [00:47:05]:
saying that people that, you know, basically, people ought to discover their business rules and then go into the UI afterwards. And I think in industry, that's very rare.
Dan Shappir [00:47:18]:
And, you
AJ O'Neil [00:47:18]:
know, it's kinda like the waterfall development got rebranded as agile, so you see the same, you know, charts in the, you know, 12 month timeline, but it's agile now. It it I I think it's really, really dangerous to start with the design and try to work backwards, because you would need to start with what business problem are you trying to solve and then move forwards from there. I I wish that every application, the engineers created the super ugly prototype first so that the designers knew what they had to work with.
Uncle Bob Martin [00:47:50]:
So the the the alternate to that is you take a, an application with really significant business rules. So for example, some kind of insurance, application. And and there's just a lot of number crunching that you're gonna have to do and a lot of data lookups and all kinds of stuff with a relatively simple amount of incoming information. And the the temptation there would be to show a nice little desktop app and and, oh, here's the form and look, you click on these things and you isn't it wonderful that everybody's applauding and then and then, you know, then you actually have to write the business rules and the business rules it turns out completely thwart that whole idea of the user interface. Right? So wait a minute, we can't do it that way. We got to do it a completely different way. It would be in my view, it would be better to start inside, get some feel for what the business rules look like and then and then you can start to project outwards. You don't have to finish all the business rules but you can start to project outwards that way as long as you've got some idea of how you're going to manipulate all this data that's going to be on the screen.
AJ O'Neil [00:49:05]:
So with
Uncle Bob Martin [00:49:05]:
Now sometimes it's trivial. Sometimes there's just nothing to do with the data. It goes into a database, comes out of a database, nothing else, and you've got a CRUD application and okay, if all you've got is a CRUD application, you can probably make the the framework decision pretty early.
AJ O'Neil [00:49:20]:
So do you have any suggestions for because most people, we're just peons. Right? We just, like, we we there's some sort of project manager and they're making all those decisions. How do you like, if you've got this great wisdom, which I like, it's like, product managers, I don't think that they learn that. Right? How do you communicate that upstream to say, hey. To to develop the best product?
Charles Max Wood [00:49:42]:
You're triggering me, AJ. You're triggering me. I've worked in those salt mines before.
AJ O'Neil [00:49:49]:
But that that's like most of the salt mines, though. Is that is it not? I mean, that
Charles Max Wood [00:49:53]:
It's true. You have the It's not technical, nonexpert people making these deep decisions on how you put your app together.
AJ O'Neil [00:50:02]:
So and and but what's what's the solution? Or what's a way what's a way to bring some of this knowledge forward to help the development process? Because I think I think many, many people have been on a team where their intuition says, hey. This doesn't seem right. Maybe they don't feel like they've got the confidence to speak up because obvious people above them must know what they're doing or something.
Charles Max Wood [00:50:23]:
So I believe in miracles.
Dan Shappir [00:50:26]:
I I do I do wanna say 2 2 things about this, though. So, like, there are 2 there are 2 problems that I can that I can see with, I'm just developing my APIs first. We'll invoke them from curl. And once we see those work, we'll start building the UI. The the 2 the the the two problems are are, a, how are you gonna raise money that way?
AJ O'Neil [00:50:54]:
Like, you The AI generate the commercial, and then you do it, like, whatever you're gonna do. I mean, it's been that it's been that way for decades. When was the last time that a company that was raising money had a product?
Dan Shappir [00:51:05]:
Well, it had a demo of a product, though.
AJ O'Neil [00:51:10]:
Demo. It was like Wizard of Ozzy, or it was, like, completely done by a 3 d animator.
Dan Shappir [00:51:15]:
The the other problem the other but the more serious issue, though, is that I'm kind of wary of UIs that are built without any consideration for how they're ultimately going to be used. Yeah. Because then you try to build a user interface on top of them, and you discover that they just don't actually fit your needs? They work great from the command line, but they they they're not really appropriate for the UI where we need to support drag and drop and I don't know what.
AJ O'Neil [00:51:52]:
So I, I I think that people should create UIs, just dumb ones that are ugly to start with, that have the that have the benefits there. Like, okay. It's it's like like I've said before about suck driven development. You don't need to produce the most complete project with the most features. And and there's an excellent y combinator series I'll link to in the in the pics about this. You need to produce the product that does one thing significantly better than all the other products on the market. And you can do that with really bad UI in terms of a a test cycle. Like, true agile.
AJ O'Neil [00:52:29]:
Right? Like, you do the development sprint, you do the design sprint, and then so on.
Dan Shappir [00:52:36]:
On the other hand, Apple conquered the world with building amazing UIs on top of products that in many cases did not provide features that were not available somewhere else before with not this great UI.
Charles Max Wood [00:52:53]:
I I think you're making an earlier point that Bob pointed out just maybe in a different way, and that is you have to understand your application and what matters. Because I believe that there are situations where, you know, the the functionality and the way that things kind of bolt together and and work matters more than how pretty your UI is. But in other cases, yeah, the UI not looking great. Just to give an example, I'm part of an organization. I'm in leadership in this organization. And, you know, I we were looking for a solution to help collaborate, get people to collaborate. And the more we talked about it, the more it just looked and sounded and felt like Discord. But I'm not I'm not the the ultimate leader.
Charles Max Wood [00:53:38]:
Right? I'm I'm part of leadership, but I'm not I'm not the one that makes the ultimate call. And the person was the person no. Telegram, actually. But, the the issue was was that the person that made the ultimate decision, she took one look at the way that Discord is designed and said this looks like a video game platform. No one's gonna use it. And so in that case, it mattered. But in other cases, you know, having the functionality and having people being willing to say, this doesn't look like I what I want it to look like, but it does all the things I want it to do, you can do. And so you you have to understand your application.
Charles Max Wood [00:54:15]:
I guess part of understanding your application is also understanding the limitations and trade offs that your users are willing to make.
Uncle Bob Martin [00:54:23]:
So the the Apple story is a really interesting one because, yeah, if you'll go all the way back to the Macintosh. Right? 1983. Was that 2?
Dan Shappir [00:54:33]:
I think.
Uncle Bob Martin [00:54:34]:
Something like a good long time ago. And you've and when that machine came out, it was absolute magic. I and I I had to have one. Everybody had to have one and you could you could do MacPaint, you could do MacWrite, you could do MacDraw. They had all these applications that nobody'd ever seen anything like this before, and they they conquered the world with that UI. Even Microsoft finally had to bow and go, okay. Yeah. Windows is great.
Uncle Bob Martin [00:55:02]:
Okay. So how did that happen? And that happened through a series of experiments and iterations that mostly failed. Right? And most of and a lot of it happened at Xerox a few years before.
Dan Shappir [00:55:16]:
Xerox part.
Uncle Bob Martin [00:55:17]:
7 k mecking around with the Dynabook and then eventually they come up with the small talk browser which, you know, they they really had it kind of but not quite And then they came up with the Xerox Star, one of the early word processors back in the day, and Apple said, oh, I'm gonna steal that. Steve Jobs literally stole it. I just said, okay. I'm gonna steal it.
Dan Shappir [00:55:40]:
I would say that Xerox literally gave it to him but, you know
Uncle Bob Martin [00:55:43]:
They gave away everything. Xerox Xerox PARC gave away everything. Just a remarkable story in all of this gold that came out of Xerox PARC that the Xerox company just apparently had no interest in and just gave it away, gave it away to everybody.
Dan Shappir [00:56:00]:
Did you see that movie which wasn't so great? I think it's called Fire in the Valley or something like that. No. They have they have this amazing scene there where the people from the West Coast, from Xerox Park come to the Xerox, main office in New York, and there's this huge desk with all the v the CEO and all the VPs and whatnot sitting there all all in their suits. And on the other hand, you have you've got the guys in their t shirts and their beards. And there's this amazing scene where the CEO of, Xerox picks up a mouse by the cord, and it he's holding it like a dead mouse. And he says it. He goes, you want us to sell something called a mouse. They just didn't get it.
Dan Shappir [00:56:50]:
It was, the culture was just too divergent, I guess. And then they gave it all away to to Steve Jobs who basically heard about them and and, you know, and they they literally told, the the head of that of of Park to to just show him show him around and, you know, he can look at whatever he wants.
Uncle Bob Martin [00:57:09]:
That wasn't the only thing Xerox PARC gave away. They gave away just tons of stuff. But then Jobs takes it into Apple, and their first product is the Lisa, which is another failure. Right?
Dan Shappir [00:57:20]:
Mhmm.
Uncle Bob Martin [00:57:20]:
Mhmm. They couldn't quite get the idea that pixels ought to be square. But they did make a great decision early on, which was the one button mouse. Right? Xerox had the 3 button mouse. Apple said no. It should be one button. There were some very interesting decisions made that led finally to the Macintosh and then the the the rollout of these very interesting user interfaces. But it was not a burst of insight.
Uncle Bob Martin [00:57:51]:
Right? It came through a whole bunch of iterations, mostly failed iterations.
Dan Shappir [00:57:57]:
If I'm dragging us back to frameworks though, the current
Uncle Bob Martin [00:58:02]:
the current well I was thinking about doing the same thing, but I'm so fascinated by where this has gone.
Dan Shappir [00:58:07]:
No. I know. But I I do wanna cover so the reality is that for the past 14 years, it seems that React rules the framework the front end framework world. Okay. And that it's not going away. It's the default. It's the safe choice. It's like you never get fired for buying IBM kind of a choice now these days.
Dan Shappir [00:58:31]:
It's literally no choice at all. And I'm looking at some of the other frameworks that have amazing ideas. Again, the Svelte or Solid or Quick. And they're having and they're unable to break through. Like, the the late the latest statistics that I've seen on the Google Crux website, which kind of analyzes websites that Google index indexes, It looks like React is like all the other frame it's more than all the other frameworks put together. 2nd place is Vue, and then all the rest are and then all the rest are just, like, you know, minuscule in comparison. So we can talk about, you know, developers needing to think about picking the correct framework all we all day long. At the end of the day, they're just gonna pick React.
Uncle Bob Martin [00:59:30]:
Okay. Be wise.
AJ O'Neil [00:59:35]:
That that that we could talk about, whether or not people should, build build their website or not, but all day long, they're just gonna pick WordPress. Right? I mean, like, the things that the things that React is capturing are not the things that are going to be unique and driving lots of value. Right? Like, if if there is no significant benefit to something else and React is fine, then React is fine. If there is something where there's a new type of value, where there's gonna be new value driven in a significant way, people are gonna pick something else that matches where that value is. But in in the same way that that, you know, if you were to compare React to WordPress, you'd say, oh, well, you know, React just really isn't gaining any steam. But it React is a completely different use case than what WordPress is. And I think the same is is, you know, every layer of the industry. Right? You know, you could look at it from Wix and WordPress and React and, you know, take it down the pipe, where there's more unique value, people are going to make more unique choices.
AJ O'Neil [01:00:45]:
Where there's less unique value, people are gonna make less unique choices.
Charles Max Wood [01:00:50]:
So this kind of begs the question, and I'm curious, you know, AJ, what you think and what Bob thinks. Well, I'm curious what Dan thinks too. But, you you're making the point is then is it a problem that we necessarily have one sort of 800 pound gorilla that takes over the most of the market? Or, you know, does that stifle some of the innovation that's gonna go on out there? Or is it more in the realm of kind of what AJ's putting out there where maybe the people with these unique use cases will pick something else anyway, and so it doesn't matter?
Dan Shappir [01:01:25]:
Of course, it's gonna start for innovation. Like, it it
Charles Max Wood [01:01:29]:
but Right. That that's that that's my instinct.
AJ O'Neil [01:01:33]:
But is WordPress stifling innovation?
Dan Shappir [01:01:37]:
I I don't that's an interesting question. I would I would argue that the use case is different. The the use case for WordPress is some is basically somebody wants to have, these days, if somebody wants to have a simple web presence as quickly and as cheaply and ideally as reliably as possible and not really and and hopefully not think about it at all. Web development is actual development. I would argue that that that that I mean, they're trying
AJ O'Neil [01:02:10]:
to bring it to the level of GPT. Right? They're trying to get rid of the developers and say you're not gonna have a job. GPT is gonna do it for you. Reaction What
Charles Max Wood [01:02:16]:
was w p g p t? What do you think, Bob?
Dan Shappir [01:02:19]:
Oh, you
Uncle Bob Martin [01:02:19]:
mean taking a I've been writing an awful lot of code here. I've been doing the, the advent of code exercises, you know, every every December they do that. And I'm I'm doing them all in closure and I've got my IDE set up with with GitHub Copilot and it's really quite remarkable what that that that thing puts up on my screen. Half of it I have to well, more than half of it I have to throw away. But every once in a while, it's like, oh, yeah. I figured that one out pretty well. So I, you know, I think there's some interesting stuff there. I have no fear at all that, anyone's job is going to be taken away by, a large language model that has been suffused with code.
Uncle Bob Martin [01:03:02]:
I I don't I wanna back
Charles Max Wood [01:03:04]:
up though. What do you feel like we gain or lose by having a kind of a dominant player in in in the framework market? Like That's
Uncle Bob Martin [01:03:11]:
the VHS versus Betamax argument. Right? Okay. So VHS is gonna dominate for a while until the CDs come out. When when when is this model of application going to change?
Charles Max Wood [01:03:24]:
Yeah. Right now it's a matter of time.
Dan Shappir [01:03:26]:
Web web That's an interesting question because the the core thing is that in the web world, we are kind of tied to JavaScript and the DOM. So because the the platform isn't changing, that reduces the need of whatever we implement on top of the platform to change. Now if, you know I don't know what happens. Like, if if we all go AR, VR, then I don't know. There might be a need to to change that. I'm not I'm not sure, to be honest. But I I like, like and a talk I gave, like, 15 years ago, I said that I'm annoyed with the fact that laptops are still the dominant form factor. And you know what? 15 years later, laptops for developers are still the dominant or for work are still the dominant form factor.
Dan Shappir [01:04:26]:
So where's the thing that replaces the laptops? It's it's not here. So we are we are on top of the web. We are on top of the DOM. We don't want to use the DOM as is, and we can debate about why that is. You know what? Do you think people should be I don't know if you're the one to ask this question specifically, but do you think people should forego frameworks and just use JavaScript and the DOM instead?
Uncle Bob Martin [01:04:58]:
Oh, no. No. That would be silly. Right? You're going to get have to get them help. Just you just have to be careful. That's all. But, yeah, you you're going to want to have some kind of framework assistance because those problems have been solved 80 times by people who who know a lot more than you.
Charles Max Wood [01:05:16]:
Okay. But then the question is, you know, you've got the reacts and and Angular's and views that do a lot more than solve some of those problems. Right? And then you've got, like, Alpine or, you know, jQuery did some of this or, you know, I've been using Stimulus, right, where it just solves some of the more fundamental issues, and then, you know, you wind up using the DOM APIs. And so there there's a sliding scale even there. Right?
Dan Shappir [01:05:44]:
Well, there's a first of all, there's a question of again, I kind of hinted toward that at the beginning of what is a framework. Like, is React a framework? Is Angular a framework? Is Next. Js a framework? They're kind of really different from one another in what they provide. And
Charles Max Wood [01:06:02]:
They're hostile takeovers of my UI is what they are.
Uncle Bob Martin [01:06:05]:
Well, and and your your your idea about the mental model is a good definition of a framework. Does it impose a mental model on you? And frameworks do that.
Dan Shappir [01:06:16]:
In that regard, they all are, but to a varying degree. Yeah. Right. Like, in like, for example, Next. Js also tries to impose, certain mental model of how on how you implement the back end, which React in and of itself does not. So it it it it's kind of a question to the extent to which it invades your your your entire stack as it were.
AJ O'Neil [01:06:43]:
Well, that that's what I was probing for earlier when I was saying what's the the, you know, what's the opposite of a framework, or what's the what's the alternative choice? Because the way that the way that I would describe a framework is a framework is something where you put your code in the framework. Like, you implement the abstract class of the framework. Whereas a library would be something where you use the library. Like, your code is on top and the library is in the middle. Whereas a framework, the framework is the the master control, and your code is the little functions that fill out the gaps.
Dan Shappir [01:07:24]:
I would argue that at the end of the day, if it's not going to be the framework, then it's gonna be the platform, that does it for you. So at the end of the day, you are using some sort of framework. And if and if you think you're not, what I've seen happen is and and I'm kind of quoting Tejas, who we've had on the show several times to to talk about similar topics, is that if you don't use a framework, you end up implementing your own framework, and it will likely be worse.
Uncle Bob Martin [01:07:55]:
Yep. That's the old argument. Right? That every every every application eventually implements some bad version of Lisp.
Charles Max Wood [01:08:06]:
Yeah. But the thing the thing is is again, it's going back to the argument of
Dan Shappir [01:08:11]:
And it's double it through for JavaScript, by the way. Sorry to interrupt.
Charles Max Wood [01:08:15]:
True. JavaScript list. But my my point is is that, you know, if you have a really, really simple application and you, you know, it it's a fairly well understood system, and you can get away with using the Dom APIs on it. And and that's it. Right? And it's not going to grow in complexity or, you know, it's neat. It's not a common use case, but my point is is you can get away in a lot of cases with not having the framework or having a framework as we talk about it on the front end as opposed to the more complicated things where, yeah, you need some of these problems solved.
Dan Shappir [01:08:53]:
So the the core question you need to ask these days in in the front end world in front end web dev world is, do I really need this to be a single page application? If and if the answer is yes, because sometimes you do, then you probably have to be using a framework. If the answer is no, if if the answer is it can be a multipage application, then you're correct that there's a good chance that you either don't really need a framework or you can use a fairly minimalistic framework or you can segregate the framework used to very specific parts. The reality, though, is that for some reason or reasons, it might have to do with what boot camps are teaching. It might be have to do with what, you know, VCs like to invest in. Whatever the re it might be have to do with what developers like to have in their resume. The reality is that these days, a lot of web apps are being being built as single page applications whether they need to be or not. I I had hoped that something like Astro would reverse that trend, but it doesn't seem to be the case.
Uncle Bob Martin [01:10:22]:
So what fascinates me about that, Dan, is is the vocabulary that we've all been using. We've all mentioned the DOM. We've all mentioned JavaScript. We've all and you started mentioning single page applications as though that were some kind of fundamental constraint. Why are we talking? Why are we using that vocabulary? The web's the web has imposed these vocabularies on us that create a mental model of how applications ought to be. And I wonder if we aren't, on the verge of leaving that mental model.
Dan Shappir [01:11:03]:
I remember an interesting thing. I I've tried to look for it's it's it's an old video that I watched, like, probably, like, 15 or something years ago. I've tried to search for it on YouTube. I can't seem to find it. It's a video of Alan Kaye, who I really admire. And, apparently, he got really annoyed with with with the web when the web was gaining a lot of popularity. And and he tried to build an alternative to the web using well, surprise, surprise, small talk. And it had, like, agents communicating with each other, sending small talk snippets and, you know, like like and and the code would propagate where it needed to go.
Dan Shappir [01:11:45]:
It was really beautiful. And the way that he demoed it is he built the same application using web technologies, and I'm talking about the web technologies from something like 15 or maybe even 20 years ago. Yeah. And he built the same application, using his own platform. And the interesting and, like, he achieved parity in terms of functionality. And then he ran them both on his laptop and measured the temperature of the laptop. And and he showed that his that the web was running very hot, whereas his application was running really cold.
Uncle Bob Martin [01:12:22]:
It's all that HTML parsing.
Dan Shappir [01:12:25]:
Yeah. Exactly. And and guess what? And and I'm sure, you know, given knowing Alan Kaye and and what he is and who what he's done and what and everything, and we were talking about Xerox PARC and whatnot. I'm sure that his solution was beautiful. But look what's won. And and I consider the web to be the the modern web to be one of the greatest achievements of humankind despite its inefficiencies. So, yes, it has created a vocabulary for developers, but the same was true for, UNIX and for c and c plus plus and for Windows and and all the various platforms that we've had over the years and for mobile platforms these days. You know, we we didn't talk about apps before the mobile platforms and the App Store.
Dan Shappir [01:13:18]:
You know, the the abomination that is the App Store.
Charles Max Wood [01:13:23]:
Well, the the other thing is is that, I guess, the point you're making is that the the metric we use to just to talk about how good something is is not, processor temperature. Right? I mean, there were other things that people wanted from the web, and that's that's why we got what we got. The the other thing though is that, you know, as things have innovated, a lot of those things have changed. Right? You know, the the web has become more efficient or at least in in a lot of ways it has. Has it? Has it? I think it I think in some ways it has. I mean, it's gotten faster and easier to use. I don't know about, like, if you measure the temperature of your
Dan Shappir [01:14:02]:
No. I mean, if you measure load your website's loading times, have they gotten faster, really?
Uncle Bob Martin [01:14:09]:
Now we have to load 10 megabytes of JavaScript to get anything done.
Dan Shappir [01:14:15]:
Yeah. They've only seemed to be getting faster since Google kind of, you know, put their whip over the developer's head and and started measuring it and telling developers that it's in a ranking factor and and and whatnot. Then then it kind of started to improve. But but at the end of the day, the c plus plus developers who are right creating the browsers have done more for web performance than all the JavaScript developers put together.
Charles Max Wood [01:14:40]:
And that's my point is that, you know, it's it's the the whole of the platform, not necessarily that we're writing better JavaScript or better HTML or whatever.
Uncle Bob Martin [01:14:53]:
You're not writing better HTML.
Charles Max Wood [01:14:56]:
Right. That's my point. But the the browser's faster. My machine's faster.
AJ O'Neil [01:15:01]:
I'm I'm writing better HTML.
Dan Shappir [01:15:04]:
I'm sure you are.
AJ O'Neil [01:15:05]:
Putting brackets.
Dan Shappir [01:15:06]:
And and the cool thing is that HTML itself is actually getting better. You know, we've got, we've got things like pop ups built in to the HTML that, like, for years, we didn't have it.
Charles Max Wood [01:15:18]:
Nobody knows about it though. That's another discussion for another day. It
Uncle Bob Martin [01:15:26]:
makes me shiver.
AJ O'Neil [01:15:31]:
Are you developing for the web these days, Bob?
Uncle Bob Martin [01:15:35]:
I I try to avoid it when I can. I've got a website that I maintain and, you know, that's really simple raw HTML. I wrote it all in closure. I've got a little, you know, little very simple framework that I use.
Dan Shappir [01:15:49]:
So if you need to create
Uncle Bob Martin [01:15:50]:
an try to avoid web development if I can.
Dan Shappir [01:15:53]:
So if you need to create a web an interface for something, what do you use?
Uncle Bob Martin [01:15:57]:
An interface for?
Dan Shappir [01:15:59]:
Like, if if you're creating a a a user facing application, one that can't just be a CLI, What do you use?
Uncle Bob Martin [01:16:11]:
So one of the one of the tools that I've been using lately is a very simple library. It's a graphics library called Processing and it runs in JavaScript, it runs in Java, there's a closure shim on top of it, that that I like to use. And it it allows me to build applications, run them on my laptop without worrying about JavaScript and then compile them into closure script and and run them on the, on the web. And that's fairly straightforward. Now the the problem with it is that it doesn't give me all the lovely forms and text capabilities. It's very similar to a graphics, a graphics library without a lot of text editing. And so I don't typically do a lot of text editing. I can draw nice nice and pretty pictures.
Uncle Bob Martin [01:17:02]:
I can do, interactive games that way it's very easy. And I try to avoid all of the more traditional web based work. Nowadays, I don't really have have to do much of that.
Charles Max Wood [01:17:18]:
Cool. Yeah. Well, there's a little mold here. Is there anything else we wanna tackle here? Or talk about?
Dan Shappir [01:17:34]:
I could just talk with Bob forever, but, you know Right.
Charles Max Wood [01:17:38]:
Well, I really wanna do the history of programming thing, and I want to read the book. So we'll we'll have to have you back. Okay. Maybe after the holiday in.
Dan Shappir [01:17:48]:
You know, you you when, talking mentioning that book, I think you have on the cover, it says something like from ADA to, to what would you AI. Yeah. And you could joke that, Amazon, because your it's a programming book, assume that you were talking about Ada, the programming language. The funny thing is when I saw the title, I initially assumed you were talking about the programming language as well. And I was thinking, hey. The Ada programming language is not that old. You know? So, yeah, it took me a minute to realize that you were actually talking about Ada Lovelace.
Charles Max Wood [01:18:25]:
Yes. Yeah. Good deal. You wanna give us a a quick pitch on the book? Just let people know what they're getting if they go buy it.
Uncle Bob Martin [01:18:34]:
It is a, history of programmers, from Babich all the way up to Dennis Ritchie and Ken Thompson. That's the first part of the book. And and I I picked a few very interesting characters. So there's there's everybody you gotta do Babich. And I did, the guys who did Simula, you know, Christian Nygaard and and, Tolle Johan Dahl and I did Dijkstra because you gotta do Dijkstra, and and several others along the way. But the focus is technical. This is a book for programmers. Right? So I talk about the machines at the bit level.
Uncle Bob Martin [01:19:18]:
I talk about the way they wrote their code. I give examples of the code. You know, there's pictures of the machines and why the machines were built the way they were built. Talk about the memory technologies and the computation technologies. So it's not a layman's book. This is a technical description so that programmers today can identify with what these guys were doing because it was pretty cool and and so that's the first part of the book just just that then the the second part of the book is it's where I I step into the book at that point and it is essentially my history. It's almost autobiographical except that I focus only on the technologies or almost only on the technologies that I saw from starting when in the late seventies going on into, you know, 2010 or so. And then the last part of the book is just fantasy.
Uncle Bob Martin [01:20:12]:
That's me saying, well, gee, what's gonna happen in the next 20 years? Which is why I could put AI in the title.
Dan Shappir [01:20:22]:
I don't know if you put him in the book, but an amazing character, in the early days of, of computation was, Von Neumann.
Uncle Bob Martin [01:20:31]:
Von Neumann has his own chapter.
Dan Shappir [01:20:33]:
Okay. Cool.
Uncle Bob Martin [01:20:34]:
Oh, yeah. Von Neumann, it's Turing, Von Neumann, and David, can't remember the mathematician's name.
Dan Shappir [01:20:44]:
The the one that came up with, like, the calculus?
Uncle Bob Martin [01:20:46]:
Hilbert. David Hilbert.
Dan Shappir [01:20:47]:
Oh, David Hilbert. Hill Hilbert HilbertSpace.
Uncle Bob Martin [01:20:49]:
Yeah. The 3 of them share a chapter with each other. Hilbert. Turing, and von Neumann. Oh, I have to have this book now.
Dan Shappir [01:20:58]:
Yeah. Me too.
Uncle Bob Martin [01:20:59]:
And all of it from those earliest days was driven by war. We have computers today because of war.
Dan Shappir [01:21:06]:
Well, most of human innovation is because of war. We don't like to think about it. We all want peace. But at the end of the day and we have penicillin thanks to war. Mhmm. You know, most of human innovation is is is because of war.
Charles Max Wood [01:21:22]:
Well, let's face it. I mean, wars are won by technology. I mean, even back to, you know, I I can ride up on a horse and do worse things to you than you can do to me. Technology won wars. So, you know Germs and Steel. Yep. Mhmm.
Dan Shappir [01:21:38]:
Yeah. Even though that book has fallen kinda fallen out of favor, by the way.
Uncle Bob Martin [01:21:42]:
But Jared Diamond's book? Yep. Guns, Germs, and stuff. It's great.
Dan Shappir [01:21:45]:
Yeah. It's a great book but, people don't prescribe to those theories as much as as they did. Turns out that some evidence contradicting evidence was was sense. It's it's a pretty old book. That's what it is.
Charles Max Wood [01:21:58]:
It is. Yeah.
Dan Shappir [01:21:59]:
So it's showing its age in in terms of research. Mhmm.
Charles Max Wood [01:22:02]:
Yep.
Dan Shappir [01:22:03]:
Not my area of expertise, but I've read.
Charles Max Wood [01:22:06]:
Yeah. Well, you know, in in putting up a risk, I guess, of throwing something out that I would normally put into a pick. But if you go listen to hardcore history, by Dan Carlin, I mean, a lot of it where he breaks down different wars and war periods, I mean, he basically explains this technology helped these guys win the war. Right? And it was you know, sometimes it was just a marginal difference, but it was enough that it it really tipped the scales. So, anyway Yep. I'm gonna roll us right into the picks, and then we'll wrap up. AJ, do you wanna start us with picks?
AJ O'Neil [01:22:44]:
Alright. So I mentioned earlier, there's a series from y combinator from 2014 called how to start a startup. And I just think that anybody who works in development and sees it as a craft should watch the whole series. I think it's really valuable to understand business perspective, and especially anybody that's a product manager. If you've not watched this series, you're one of the reason that Chuck and I cry at night.
Uncle Bob Martin [01:23:14]:
Like, it
AJ O'Neil [01:23:18]:
yeah. It's and and I'm not I I don't necessarily think that Y Combinator is the greatest. But when they put this series together, they they pulled from, a seemingly diverse group of people in in terms of their, you know, businesses and whatnot. But the principles, you can find them referenced in many other books. There there's lots of little, I don't know, catchphrases sort of things. Like, little one line ringers that are really, really good sprinkled throughout the series. And and I think that it is a rare instance of really good, really valuable material that, I guess, was intended to generate some hype around y Combinator or something, but ended up being not hype y material. It's it's actually really valuable material.
AJ O'Neil [01:24:14]:
So I'm gonna put a link to that. I yeah. And I just think every everybody ought to avail themselves to to this. There's very few things in there that I I disagree with. I think that it's it's, really, really high value stuff. The other is we got the Dune 2 film collection. Of course, my wife did not like the ending of Dune 2, but she did like Dune 2. And she's now she's trying to get one of her girlfriends to to watch it, and, yeah, that's going over her, like, I I forget what the idiom is for when something's not going over well.
AJ O'Neil [01:24:57]:
But
Dan Shappir [01:24:58]:
My wife will not watch sci fi fan or fantasy TV shows or movies.
AJ O'Neil [01:25:04]:
It's Well, generally, mine won't either. Dude dude, I was just like, you know, honey, you're probably not gonna like it, but will you watch this with me? And she's like, Okay. And then she's riveted by it.
Dan Shappir [01:25:19]:
Yeah. The closest my wife has come, I think, was the movie Gravity.
AJ O'Neil [01:25:24]:
Oh, okay. Yeah. That was a very emotional that that was that that kind of had a chick flick feel to it.
Charles Max Wood [01:25:35]:
Is
AJ O'Neil [01:25:35]:
that the one I'm thinking of?
Uncle Bob Martin [01:25:38]:
No. I
Dan Shappir [01:25:38]:
well, chick flick. I don't think so.
AJ O'Neil [01:25:41]:
Oh, no. I'm thinking of Interstellar. I'm thinking of Interstellar. Because that that one's all about the relationships and everything and the it's kinda like a rival. Like a rival
Dan Shappir [01:25:50]:
Gravity does have a strong female lead character, but, she's interesting. Let's put it this way. So Alright. She's not That's quite the way to
Uncle Bob Martin [01:26:00]:
put it.
Dan Shappir [01:26:00]:
She's not well, she's not a Mary Sue or whatever the the co colloquial term for uninteresting strong lead female characters, is. It's Gotcha. Yeah.
AJ O'Neil [01:26:15]:
The last thing I'll pick is I got a new hat, and my wife says I look really good in a hat. Beautiful.
Charles Max Wood [01:26:24]:
I love it.
AJ O'Neil [01:26:27]:
And, I was actually inspired by, Elon. I I saw him wearing it, and I thought, you know, I'll get one actually. But the thing is, I'm just really glad we're back in a timeline where people can be honest again. And some of that, you know, b s ing, pretending to believe something that you don't believe to appease somebody else, like, I'm glad we get to relax a little bit from that. And it's been really it's been really great to just be able to wear my new hat around, and and, you know, get some compliments. And then, you know, get some dirty looks too occasionally. But, you know, it's just it's just nice to be, like, I'm safe. Like, America is a safer place again.
AJ O'Neil [01:27:09]:
You are safer to believe what you believe. And just, like, freedom of speech. You know? I I'm just I'm I feel so much better now.
Uncle Bob Martin [01:27:19]:
A
AJ O'Neil [01:27:19]:
lot of anxiety lifted.
Dan Shappir [01:27:20]:
It's interest from somebody looking from the outside on the whole thing as an Israeli. It's interesting to see a lot of similarities because there's a very, very significant political divide in Israel right now. So there are a lot of similarities, but there are also a lot of differences. Like, a lot of the issues that are, you know, really, almost tearing America's society apart are literally non issues in Israel. I think we discussed this in the past, Chuck.
Charles Max Wood [01:27:52]:
Yeah. We've we've talked about it some. I don't think we've done as much of it on the show. And fair enough, that's not what the show is about. But, yeah, it's it's always interesting to kind of see it's also interesting to see what filters through. Right? You know, what you're hearing about us in in Israel and what we're hearing about you here, And then as we talk about it, I find out that, you know, you're you're seeing things completely differently about your situation there and about our situation there. And so,
Dan Shappir [01:28:20]:
anyway Yeah. I I love
Charles Max Wood [01:28:22]:
I love having the conversations with people.
Dan Shappir [01:28:24]:
Yeah. Also definitions, like, you know, what's right, what's left are very different between different countries.
Charles Max Wood [01:28:31]:
Yep. Absolutely. And and if there's anything that I can just throw out there in relation to what AJ's saying is, I I love talking to people about this stuff. Right?
Uncle Bob Martin [01:28:40]:
Whether you agree with me or not. By the way,
Charles Max Wood [01:28:42]:
I have a hat that looks a lot like AJ's except it's red, and I got it way back in the day. I actually took a picture of myself in it on Twitter, and that got me into trouble. But, anyway So
Dan Shappir [01:28:52]:
now we're gonna get into trouble because we're on Twitter. Yeah. You don't care. Twitter Twitter is different. Yeah. I guess.
Charles Max Wood [01:28:59]:
But see, that's
Dan Shappir [01:29:01]:
All the all the people all the people that you guys are upsetting right now are on, Blue Sky.
Charles Max Wood [01:29:06]:
On Blue Sky anyway. Yeah.
Uncle Bob Martin [01:29:08]:
Yeah. I guess my point is though Blue Sky.
AJ O'Neil [01:29:11]:
But I I don't I don't really wanna upset anybody. Like, I I just like, it's just, you know, it's been several years of a certain group of people can say whatever they want and wear whatever they want and fly whatever they, you know, like, and and, you know, and if you say, hey, you know, I'm not really I'm not really as comfortable with that, then, you know, you're an infidel. And it's nice to be back in a in a society where it's more two sided, where we can both say, hey, you know, I don't agree with that, but that's okay. You do you. And somebody else is gonna say, I don't agree with that, but it's okay. You do you. You know, that's where I want to be.
Dan Shappir [01:29:45]:
And here's one of the key differences that when you say infidel in this part of the world, that has a lot of connotation going on
Uncle Bob Martin [01:29:52]:
with it? Sure.
Charles Max Wood [01:29:54]:
Yep. Absolutely. I think the other thing though, if if we're gonna discuss this here is, I I hear people basically say, well, you voted for Trump or you voted for Harris because of x or y. And the reason reality is is I talk to people, and there are a whole bunch of people I talk to that have the 1 or 2 issues they care about. And so they voted based on those. And so all of the other things that get thrown at people who voted that way just are not applicable, and it it doesn't make a lot of sense to lump people into that basket of of thinking one way or the other. And then in other cases, yeah, there is a bunch of groupthink around certain ideas that that drive another group of people. And so for me, the fascinating thing is talking to people and really understanding why.
Charles Max Wood [01:30:37]:
You know, why do you care about this? Why are you involved with it? And what what's driving your worldview so that you're doing what you're doing? People choose where you get to real people.
Dan Shappir [01:30:48]:
People choose political parties like they choose frameworks.
Uncle Bob Martin [01:30:52]:
Somehow.
Charles Max Wood [01:30:55]:
A lot of times. You're right. I thought you were
AJ O'Neil [01:30:57]:
gonna say something. Investigation or understanding whether or not it aligns with their values?
Uncle Bob Martin [01:31:02]:
Yeah. Yeah. Alright.
Dan Shappir [01:31:04]:
Mostly mostly mostly, they're either going according to what their dad voted or intentionally the opposite of what their dad voted.
Charles Max Wood [01:31:12]:
There's some truth to that. Alright, Dan. What are your picks?
Dan Shappir [01:31:17]:
So I've really got 2 picks. First of all, both of them nonpolitical. The first, NBA start season has started, and I'm really happy about that. It's kind of challenging in Israel because the games are really late at night, so usually we don't get up for them. Instead, we record them and then try not to find out the results and watch them during the day. The benefit being that we can speed through, the timeouts and stuff like that. But I'm enjoying myself a lot, thanks to the NBA. So that would be my first pick.
Dan Shappir [01:31:48]:
And my second pick is a TV show on actually, I'm not sure where where it's airing. It's a British television series. Wherever you can get it, you, I I recommend watching it. It's called the day of the jackal. It's based on the book day of the jackal and the film day of the jackal. So maybe I should kind of go back and say that if you've not watched the movie day of the jackal from back in the seventies, you should. It's an amazing, excellent movie. But the TV show, the modern TV show is is pretty good as well, and it's so I recommend watching that too.
Dan Shappir [01:32:28]:
Being that it's a TV series rather than a movie, they can kinda take their time with it, which is, you know, both an advantage and a disadvantage, I guess. But we're we we enjoyed it. So and it's not science fiction, so my wife would watch it.
Charles Max Wood [01:32:47]:
Alright.
Dan Shappir [01:32:48]:
And those would be my picks.
Charles Max Wood [01:32:51]:
Alright. I'm gonna jump in here with mine then. I'm gonna do a board game pick as I usually do. This one is called blem. It's l m l e m. And usually when board games have funny names like that, a lot of times they're acronyms. This one's not an acronym. I don't know why they called it blem, and I don't know where they came up with it.
Charles Max Wood [01:33:13]:
But, it's, cats in space is is kind of the theme. And so, what you you have a rocket and you roll dice to move the rocket up the board. So each put one of your, cats on the rocket, and all the cats do different things. Most of them are bonuses. If if you're you have the most cats on the planet or, it doubles your score on the planet or your doubles your score on a moon or, doubles your score if you get all the way to deep space. But some of them do other things to help the dice and stuff like that. So you put your cats on the rocket, you roll the dice, and then if you have dice that match up with whatever the space you're on says, will allow you to advance, then you can advance based on the rules. If you use numbers to advance, you pull all of the dice to that number out, and you move up the number of pip showing.
Charles Max Wood [01:34:09]:
If you use boosters, then you put the boosters back in and you keep rolling. So, typically, people start bailing out when you start running out of dice because you only roll, like, 5 or 6 dice to start with. And so if you've pulled 4 dice out and you have to get twos and nothing else, then you're looking at it and going the odds of them rolling a 2 are lower than I'm comfortable with. And so you get your cat off the ship, and they go and do their away mission on the planet. And, at the end of the game, you tally up all your points based on where your cats landed. And if all not all your cats landed, then you don't score all your cats. But but, you know, that's how you win it. It took us about 45 minutes to play, with 4 people, and that was the game where we actually learned how to play it.
Charles Max Wood [01:34:55]:
So it's a fairly quick game. It's something that I think my kids, like my 9 year old could, you know, pick up and play. And to be perfectly honest, she's nuts about cats. And so, she would very much love this game anyway. I think there are some expansions or alternate rules to it. But yeah. So, yeah, we we liked it with 4 players. BoardGameGeek has a weight of 1.69.
Charles Max Wood [01:35:26]:
So like I said, it's a very friendly game, for people who kinda like a simple but fun game, and it has a community rating of 8 plus. So like I said, you know, your your younger kids could play it. If you have kids younger than that, they could probably play it. Just might have to help them, and they're not gonna understand all the strategy. But it's simple enough to where I yeah. Like I said, I think my 8 year old could play it and reasonably be able to figure out whether or not she wants to use a particular cat and how to win it. So, anyway, really, really enjoyed that game. And then a couple of other things that I'm gonna pick.
Charles Max Wood [01:36:06]:
One of them is, the TV show Reacher. So, I just finished season 2. I am gonna warn you a couple of the episodes have, sex, nudity, violence. I mean, you you kind of would expect it, I think, from an action show like that. If you want to be able to filter some of it out, my other pick is VidAngel. You can use VidAngel to watch shows on Amazon Prime, Netflix, and a couple of other places. Plus, you get all the Angel Studios stuff on on the app. So that's The Chosen.
Charles Max Wood [01:36:39]:
They have a bunch of movies they've made, which are terrific, by the way. And so, I'm gonna pick Reacher and, VidAngel, and you can filter, curse words too. Right? So if you don't wanna hear the f word, then it'll cut the sound.
Dan Shappir [01:36:53]:
I heard season 2 was wasn't as good as season 1. Do you think that's that's the case? Yeah. It was season I watched season 1. I haven't yet watched season 2. So
Charles Max Wood [01:37:05]:
it was it was kinda different. I'm trying to think better, not better. It's it's a little hard for me to specifically so in the first season, he's in he he basically winds up investigating a murder and, you know, just a little bit of a spoiler within the first couple of episodes
Uncle Bob Martin [01:37:26]:
to figure out that one of the victims is his brother.
Charles Max Wood [01:37:30]:
Season 2, he's investigating, and this comes out right in the first episode. He's investigating, the death of one of the guys that was in his special investigations unit when he was in the army. And, anyway, it's it's got kind of the same dynamics with he he has other characters that he's doing the investigations with.
Uncle Bob Martin [01:37:57]:
Yeah. I I would say
Charles Max Wood [01:37:58]:
I probably like season 1 better, but like I said, it's it's got a bit of a different flavor because it's not kind of the small town, you know, dive into stuff, mystery stuff. Yeah. But yeah. So I I yeah. I don't I don't know if I have a good answer for that. I I enjoyed them both.
Dan Shappir [01:38:16]:
If you enjoyed them both, then do try to find out, try to find the the series I recommend, the Day of the Jackal. It's it's it's not the same vibe at all, but I think you'll enjoy it.
Charles Max Wood [01:38:29]:
Yeah. It's it's interesting to kind of piece some of the stuff together. Another thing that I'm gonna pick, I'm I'm just picking all kinds of stuff today, is, a book series. So I'm on book 7, 8 of this series. It's called, the the sword of truth by Terry Goodkind. Just awesome books. I just finished the, I don't know, the 7th book or the 6th book. I can't remember.
Charles Max Wood [01:38:56]:
But but I'm I'm really enjoying them. This last book was kind of interesting because the primary protagonists that are in the previous bunch of books, they don't even show up into in this book until the end of the book. But it I think he's it was a setup for some of the things that are gonna happen later, and I think there are, like, 12 or 13 books in the series as a whole.
Dan Shappir [01:39:17]:
You remind me of, how, Douglas Adams once referred to the Hitchhiker Guides to the Galaxy books as his 5 book trilogy.
Charles Max Wood [01:39:28]:
Yeah. Yeah. Those books are fun too. The I mean, the they're hilarious books. But anyway, so I'm gonna pick those, and then, the the last pick I have is, like I said, if you're watching this live, I'm finishing up all the marketing materials and you being able to sign up, for it and stuff like that. And, honestly, I kinda wanna talk to people before they sign up just so that I make sure that I understand what people want and make sure that you're a good fit because it's gonna be kind of a pricey deal. But, I am putting on an AI dev boot camp starting the middle of January of next year. And so, we're gonna it's gonna be a 3 month, basically course.
Charles Max Wood [01:40:14]:
You're gonna get all the course material, upfront as I put it together right, on this first run. We're gonna have 6 months where you get on, you know, weekly or biweekly calls, and, you you know, so you'll be able to get help as as things progress. But, yeah. Anyway, that'll be at aidevbootcamp.com. I'm also, working on putting out some podcasts about AI specifically. It's not we have adventures in machine learning, which tends to get more into data science and machine learning, model building, things like that. These other podcasts are gonna be more focused on using APIs and open source systems to build your, AI and machine learning stuff, and that's gonna be ataiforruby.comandaiforjavascript.com. And so I'm gonna get specifically into, okay, how do you build these kinds of features into your apps using Ruby or JavaScript depending on what you're doing.
Charles Max Wood [01:41:10]:
So so those are my picks. Bob, do you have some picks for us?
Dan Shappir [01:41:14]:
Well, I'll just
Uncle Bob Martin [01:41:15]:
do one, and it's it's it goes back to the framework, discussion in in tangentially. About, about a year ago, David Hannah Meyer Hansen did a a YouTube video, and I think the name of it is the cloud fugitive. I think that's the name of it. And and he has he has taken 37 signal off the cloud, out of the cloud.
Charles Max Wood [01:41:39]:
Yes.
Uncle Bob Martin [01:41:40]:
And and it's a very good video. And he just walks through the the rationale and why it was a good idea and why everybody else ought to be thinking about it.
Dan Shappir [01:41:50]:
So you know what? You actually remind me of with that. So we've been forced to buy a new car. So we're actually buying a used car, but it's a new car for us. And they're all trying all the car vendors are trying to sell us on leasing the car. And and we know we were like, no, we're going to we're just going to buy it. We don't wanna lease it. So, yeah, being on the cloud is kind of leasing your car.
Charles Max Wood [01:42:22]:
Mhmm. Yep.
Dan Shappir [01:42:22]:
I'm using There are advantages and disadvantages to that. Sorry. Go.
Charles Max Wood [01:42:28]:
No. I'm just saying. I'm I'm I'm doing what he's doing.
Dan Shappir [01:42:32]:
No. Well, you're paying for comfort, really Yeah. Or the perception of comfort.
Charles Max Wood [01:42:36]:
Yeah. But the tooling that they've built around this move has made a lot of this stuff really simple.
Dan Shappir [01:42:46]:
Anyway It's also capex versus opex and various other similar things that are actually very similar to buying versus leasing.
Uncle Bob Martin [01:42:54]:
Anyway, Bob, go ahead. No. That's it. That was just I thought that's a good video for folks to watch. They can get a different idea of of how they could get their systems online as opposed to, you know, making some big commitment to a company that doesn't care about them.
Charles Max Wood [01:43:13]:
Yep. Very cool. Alright. Well, let's go ahead and wrap it up. Bob, if people want to connect with you or find stuff that you're working on these days, where do they find you?
Uncle Bob Martin [01:43:27]:
Cleancoater.com. That's the website. The videos are at cleancoaters.com, the plural of cleancoater. That's good enough. Twitter, uncle Bob Martin. Oh, I should say x, shouldn't I? It's actually x. I don't have a Blue Sky account. Rather not have one.
Dan Shappir [01:43:49]:
To be honest, like like, I told you, I I actually have both which is really annoying for me, the fact that I that I need to of a century descent. As
Uncle Bob Martin [01:43:58]:
well. I mean
Dan Shappir [01:43:59]:
Yeah. I actually did for a while, but it just you know, it was too much hassle. But, it is annoying to have 2 separate things of exactly the same thing. You know, if if they were different, then okay. But it's like, why do I need to have this twice? It's it's really annoying in that regard. But I do want to connect with some people who are only on Blue Sky. So, you know We'll see what happens.
Charles Max Wood [01:44:30]:
Yeah. Well, the thing that's interesting about it for me just from the platform point of view is that I've heard a few people talk about how Blue Sky is maybe cleaner and has less ads and stuff. But if you've been watching the discussions they're having around it, they're looking to add all of that stuff to Blue Sky. So I just yeah. So so it seems like
Dan Shappir [01:44:51]:
money will run out eventually. You know?
Charles Max Wood [01:44:53]:
Yeah. The the so the decision is not based on the what the platform offers. It's other things.
Dan Shappir [01:45:01]:
Look. I'm on social network to connect with
Uncle Bob Martin [01:45:03]:
people, and
Dan Shappir [01:45:04]:
that's that's the bottom line.
Charles Max Wood [01:45:07]:
That's what convinced me to go and create an account over there, but I'm I'm just as inactive over there as I am on Twitter. So,
Dan Shappir [01:45:16]:
anyway Anyway, thank you, Bob, for coming on. This has really been a pleasure for me.
Uncle Bob Martin [01:45:20]:
Certainly appreciate it. It's been a lot of fun.
Charles Max Wood [01:45:23]:
Yeah. We'll get you scheduled to come back and talk about the history of programming because that stuff's so good.
Dan Shappir [01:45:27]:
Oh, man. And I'm a history buff.
Charles Max Wood [01:45:29]:
Yeah. Alright. Well, hang in there for just one more second while we end the stream and make sure you're uploaded. And until next time, everybody. Max out.
Innovation and Framework Adoption - JSJ 664
0:00
Playback Speed: