Hey, everybody, welcome back to another episode of JavaScript Jabber.
This week, on our panel, we have Dan.
Shapier, Hey, back in Israel.
We also have Steve Edwards.
Hey, coming from a it's definitely fall here in Portland.
I'm Charles Maxwood from Top End Devs.
It feels like it's been forever since I've been able to record a podcast, so it's good to.
Be back on the micsh. Yeah, my travel schedule and work and everything and just yeah anyway, Yeah.
We're going on the court right.
Yeah, talk to Frost last week, and I forget who the other people have talked to.
Yeah, I wanted any on that one, but I was at Rocky Mountain Ruby conference last week.
Good for you.
Yeah, I got.
A lot of interesting things are going going in the Rugby community community. Yeah.
I was gonna say I got the scuttle butt on a whole bunch of the drama over there.
You're yeah if uh, Well, I'm.
Gonna record Ruby Rogues tomorrow and we're going to go through what I understand. It's funny I keep finding myself in a position lately between like this thing and Utah politics and stuff where it's hey, everybody, this is what's going on, and I can't.
Tell you who's telling me what they're telling me.
So, by the way, as long as coming from.
The people directly involved, but they can't go on the record.
So there's also a bit of drama going on in the React adjacent arena, what with the Remix three coming out.
I haven't been following that. I'll go check it out.
Yeah you should, by the way, before we get going, I just recalled that in the new State of JavaScript survey is out, and I'm thinking that if our listeners enjoy this podcast and I want to help us get to more people, maybe they should vote for us on that survey.
Yes, absolutely speaking brother, Yeah, yeah, I think it's just STATEOFJS dot com.
It's STATEOFJS dot com exactly.
Yes, ye, so yeah, and it's always interesting to see what the results of that are so or what.
Yeah, the results we usually come out somewhere between third and fifth. It will be nice if we can make it a bit higher.
Yeah, but I meant also just you know what people are using and where the community's at and all of that great stuff.
So oh yeah, for sure, it's interesting, although I always wonder what I should actually like quote unquote do with the results.
Right, right, Yeah, I want to vote for us.
I was, you know, this is not the topic of the show, and we probably should have a show about it, or maybe bring somebody from the survey on our show. But I was kind of surprised or negatively surprised a bit from last year's survey about or was it some other survey. I think it was actually a different survey about the salaries in the field. They are lower than I would have expected.
Yeah, yeah, we should definitely get talk about some of that. I mean, the market out there is different from it has what it has been in the past. I've talked to a number of people that are.
Having trouble finding work. Yeah.
Anyway, there's a lot going on there that's definitely we're talking about.
And maybe what we're talking about today can explain some of these challenges.
Yeah, well yeah, and let's go ahead and get into that.
So the topic that I put up, I was the one that proposed this topic was how to use AI in your JavaScript development? And I was mostly focused on tools, not necessarily, hey how do you build features into your apps with AI? But you know, how do you use the lllms and other tools to write your code and just to get started. I'm curious what AI tools do you guys use on a regular basis when you're writing code.
Steve, do you want to go first or should I? Yeah?
I don't. Yeah, I'm a I don't know if you want to call me the grumpy old man or the get off my lawn kind of guy.
I haven't really I.
Haven't really dived into it, you know, full steam ahead. I'll give an example. I was listening to a podcast with guy from coinbase here over the past week and they are either are or their goal is to have like forty percent of their code written by AI. You're talking about all their different tool chains and review processes stuff, and I was.
Like, WHOA, I mean, my interesting. I just found out that.
I have access to cloude code through work be a bedrock on AWS.
I got to get that set.
Up so I can use that, but I primarily use.
It for.
Troubleshooting, well troubleshooting air converting code. And it's like, man, I can't you know this is I've got this code here, I want to be able to do this, and I've been able to figure something out.
How can I do that?
In algamy hint, you know, to go that way, or if I need some short little thing here, write me this, you know function that does this. And I will never ever just say Okay, that's good, put it in a letter. You know, I'm always going to you know, test it out and make sure it works. And usually I'm gonna
have to tweak it or something like that. What do you say, just for troubleshooting, you know, Hey, I'm stuck on this, Help me get this figured out or you know, getting over you know, maybe give me ideas to get past the thorny issue.
But that's about it, at least for me.
When you say test it out, what do you mean?
Well, I mean, I'm going to run it in my in you know, I'm going to put it in, but I'm going to run it and run run it through the different iterations in different use cases and make sure that it's actually working.
You know.
And sometimes there's like variable naming issues where I'm going to name it them people more consistent with the way we do it in the project and that kind of stuff.
But sure, but I mean, you know, test it out is something that I assume you do to your own code as well.
Oh yeah, absolutely so.
In that regard, I've worked with people who don't. Yeah, well okay, you know you could you could be in in an optimist, I guess, uh you know by the way that story about what's the difference, Like the optimist is the class half full, the pessimist is the glass half empty, and the developer says, we could have used a smaller glass. Uh. But but yeah, I know, I mean what I was trying to say, Steve is in that regard, you're not treating the code differently than you would treat your own code.
Right that mm hmm, Yeah, I just you know, having I mean, just thinking, Okay, I go write me this code and then let's go ahead and commit it and you know, run it through a testing pipeline or whatever, just makes me nervous.
Yeah, you know, it's just caught me the control freak er, you know.
I I go back to surveys I saw, you know, after the various stories and surveys I read in different places after you know, the first eight when when you know it was a chat TPD four I think was a real big open the floodgates type of event that really yeah, got made it, you know more every day and people, oh gods, let's build with AI.
Everything.
Hey, we're using AI.
Even the half of them probably had no idea what that meant.
You'd see surveys like, you know, eighty percent of code that was may I ends up getting reverted later. And so, uh, that's why I'm just you know, I'm a real big skeptic, and you know, when I see it work, then maybe I'll started to trust it. But again, for me, it's just helped to generate ideas and get me going or get me.
Past the sticking point. That's about it.
Yeah, it's yeah, yeah, it's It's interesting that we did have at least two episodes about vibe voting research. We brought over both Gunner Uh, who talked about it from the perspective of of doing it as a PM or b D and UH, and we talked with who was it to look talked about vibe coding from the perspective of developer whose name escapes me momentarily, I remember in in a in a second, that's definitely not what I do.
I use. I use AI tooling a lot. It's I think it's made a dramatic impact on the way I write code. But I'm definitely not vibe coding. I'm not I'm using it as as a tool, uh, not as a replacement. I I do know uh some some developer friends who've literally kind of said that they're kind of like behaving a bit like product these days, like really spelling out the requirements in a lot of detail and then kind of letting the code right itself as it were.
I'm not there, but it has made a significant difference on how I write code. So, first of all, about the tooling we use. So I work at License, We do embedded analytics and stuff like that and AI driven analytics, and we went all the way with AI, so it's kind of a mandate these days to use AI tooling for the developer task. It's not like up to us to decide whether or not we want to use it. It's really our requirement. So our development environment is Cursor.
Most of us use it with force on it, and we also use code Rabbit for code reviews, so we get to get kind of like a two layer system in this sense, and we also use Gemini for miscellaneous tasks. So those are the AI tools that we use. And I can later elaborate about the kind of difference that it's made for me personally.
What about you, Chuck, So, I my experience with AI using AI tooling kind of runs the gamut. I also spoke at Commit Your Code conference, but that was more on how to build an AI chatbot and it just covered the fundamentals. So I'm kind of living in both worlds as far as like building stuff with AI and then also building stuff with AI, if you know what I mean. So, yeah, I mean, so just to give you a sense of what I'm using. At price picks,
they're paying for credits on get Help Copilot. They'll pay for a cursor thing instead if I want it, or you know, there are a couple of other options, right, so I could pick my tool. I just already had that and I'm too lazy to ask for something else because I don't care. And so because it'll do the agent mode or the ask mode and I and so sometimes I'm asking it questions, Hey, you know, how how would I approach this?
Or you know, I need something, you know, relatively simple.
And I'm just not thinking of how to do it right now, and so it'll put something in and then I can kind of riff off of it from there. Right, so I can go, Okay, this is pretty close to I want what I wanted, and then I can clean it up. Another thing that I've done with it a bit is I've had it help me write my.
Tests, and so I definitely want to talk about that in more detail because I consider it very much a double edged sword.
Yes, it is definitely.
All of this comes with the caveat of yeah, I heavily review and modify whatever I'm given. Very rarely do I just accept what it gives me on the other stuff, on the personal stuff. So building stuff for like top ENDEVS or top endevs is actually hosted on the system, a multi tenant application that I plan on offering as a SaaS product to allow people to kind of have channels for communities like top end deevs is, and so i've actually, I don't know if I've gone like full
vibe coding on it. There are definitely things that I haven't built before, and I didn't quite know how to approach, and so I did spell out, here are my requirements, here are the things I needed to do, and then I would let it code and then turn around and so I'd run it and see if it was working.
And then once I have it working, either because I debugged it or because I had the AI debug it, then I would go in and do some code cleanup and things like that, Hey, I don't like it when you you know, do a try catch on you know, big blocks of code and then swallow the errors hole or things like that, right, and because it does stuff that I just I'm just like this, this is such
not good practice. But I do get working code out of it, and so and then I can kind of go and learn from what it did, right, because it's like, Okay, I see your approach here. I don't like this part of the approach, so I'll change that. But then I
can see how to do whatever I did. So, for example, the audio player on top end devs was mostly built with AI, and it was mostly because I just haven't done a ton of stuff with a script audio interface stuff, and so it could whip it up right, and then I could go and look at it and say, all right, I see what you're doing here, and then I got it done way faster than I would have done it on my own.
That's kind of an amusing, amusing thing that when I talked to developers a lot of developers, not all, but a lot of developers about using AI tooling. They signed kind of apologetic, like, uh, yeah, it does what I wanted, So I just you know, took whatever it gave.
No apologies here.
It's it's really nice to have for those areas where it's just like, you know, I don't have the expertise here or I don't have you know, I have never done this before, and you know it'll give me some it gives me a huge head start.
So yeah, for sure, it's It kind of reminds me of those days when I worked at Wix and a question that used to occasionally come out amongst website builders is was you know that we're actually building websites for customers. Is is it okay quote unquote to use wis or is it cheating again quote unquote? And I would say, and my answer was, if it satisfies the record, the customer's requirements, what's wrong with it? If your customer tells you specifically don't use Wix because I don't want it,
I don't like it, whatever, then obviously you shouldn't. But if the requirement is to provide a website that does something and you're able to achieve it using Wix and it meets all the customers requirements, go for it. And likewise with AI, if AI generates properly working code, you know, great. Yeah, why should I waste my precious time on something that
I can get from the machine wasting it's time. By the way, that's an interesting thing is that sometimes I give when I give it an AI a certain task, it is able to achieve it, but it takes it longer than it would have taken me, and then I kind of and then I kind of think to myself, like was it worth it? And I'm sitting here staring at the screen and waiting for it to finish because I can't really work on anything else while it's doing
this stuff, and I really want to see what it's doing. Uh, and and sometimes it takes a walk.
Yeah, so a couple of things on that.
Yeah, I've run into that too, or it got it just right enough to where I had to keep working with it to get what I wanted, and that's what took longer.
But by the.
Way, as an aside, before you continue, my distinction between vibe coding and AI assisted coding, and it's my personal take uh is if you give you know, you give, you give certain instructions at the prompt and it generates some code and that code is not good enough for some reason. Will you if you just try to fix it by again providing more and more instructions via the prompt and just using effectively the prompt, then it's vibe coding.
If you at a certain point actually say okay, enough's enough and I dive into the code to you know, to get it even that last extra mile that for me is becomes no longer vibe coode. That becomes ar well.
Than I do a mix.
So on one last thing that I wanted to add with this is and we had Eric handschet on and he was talking about what is a KIRO and he was talking about the plan. So on Copilot, on Cursor, and on KIRO you have the option to you can ask, you can allow it to edit some stuff, you can give it, turn on the agent and have the agent
actually you know, do larger modifications to your code. And then in KIRO they had a plan option and so you could tell it what you wanted and then instead of executing right away and modifying your code, what it would do is it would work with you and ask more questions and get the requirements to build a plan, and then it would execute the plan.
And I was fiddling with Cursor and it.
Just added yeah, exactly.
And so I've been using that and I have to say that so for some of the things that I've had to do, that was really really nice because I understood better what the what the agent was going to do for me when I told it to go go build stuff. And the other thing is is that it really did allow me to flesh out.
What I really wanted.
And so even if I never got around to clicking the build button so that it would go and the plan, I knew what I was putting together. And so I have to say I really really like that. And then one other tool that I use for some of this stuff, for some of that planning stuff before it showed up and Cursor, was I would actually use Grock And so I like using the voice assistant in Grock.
And so I'll tell.
It, you know, I want a system that does this, and I'm not sure how to do it, so you know, and sometimes it's more on the ops and infrastructure side than on the programming side, per se but I'll say, Okay, I need this, how do I get it? And it'll come back, and I mean sometimes it's wrong, right, It'll come back and it'll say you need to use this open.
Source software blah blah blah blah.
And then I go look up the open source software and it doesn't exist and there's nothing that's even named remotely close.
To like it. Right, but it had all the features I wanted, according to Grock.
And then I'll go back and I'll ask Rock for more help, and it'll come back and tell me that that open source software doesn't exist, and I'm going, then.
Why did you tell me about it?
Kind of remind me of that you remember, you remember that thing where somebody there was this trial and somebody used AI as their lawyer and it invented case past cases like yeah, so.
Yeah, But I have to say that probably three quarters of the time when I'm asking Rock how to architect something or you know, orchestrate some infrastructure or pull in some open source system that I need to integrate with, it's correct or at least mostly correct.
And again it.
Just gets me way down the road where it would have taken me hours to go and research it by doing a Google search in the browser and then going and validating some of this stuff.
So anyway, so that that's how I'm using AI in my stuff.
That's interesting.
So hey, Dan, real quick, you had I wanted to go back to our conversation with Gunnar or Gunnar sorry Gunnar if I'm butchering your name, and you were talking about the difference between vibe coding and AI assisted coding, at least to your distinction.
Uh.
I remember our discussion with him and his his use of vibe coding was basically to generate something that would give him a starting point to talk with designers about, you know, something visual. He didn't care necessarily about the details of what it was doing underneath the hood. He just cared about the hood, right, something visual? Hey, this is this is what I'm thinking.
Where can we go from here?
So he wasn't, you know, actually doing the coding. He just wanted something visual that he could talk with other people with. So that's how I saw. That's how I guess I would define vibe coding versus you know you and I am actually writing, well, I'm.
Not so hang on, okay, go ahead.
Because I I lean more toward what Dan was saying in the sense that so one podcast I listened to is Podcasting two point zero, which is Adam Curry and.
I can't remember the other guy, but they're the guys the guy in the podcast Index.
Yeah, but Adam Curry invented podcasting with Dave what's his name. I can't remember his name either, but anyway, so yeah, so they have a conversation every week and they're talking about podcast Index and things like that, and Adam Curry has actually been vibe coding a system the host podcasts and stuff like that, and to me, he so he he freely admits he's not a programmer, and so his whole process is is the AI right, And so if it doesn't work, he just asks the AI for more
help and more help and more help. And then on occasion he'll actually go and do enough research to get dangerous enough with the code to go look at it and say, no, this is actually the problem, go fix it, and then he usually lets the AI go fix that too. And so if you're working exclusively or nearly exclusively with the AI to get your code out there, and you're not modifying it or using skilled a skilled approach to
do the work. Then Yeah, that to me is vibe coding, and I think that's what Dan was saying.
Yeah, exactly, because, by the way, the other person we had talked about vibe coding from the developer's perspective was Anthony Compolo, and that was on episode six eighty seven. Anyway, Yeah, what Gunner basically said is I'm a product manager and consequently I don't know how to code or I don't want to code, and therefore the way that I vibe code is basically just prompting for additional changes. He, by
the way, said that is the tools improve. They're going beyond just creating a smarter mockup to a point where you know it's getting close enough to a product. And in fact, as we all know, there are services out there that have been built effectively via vibe coding. And again, if you can get it to work well enough, then
bully for you. But there have been various situations where things crashed and burned, or had performance issues, security issues, yes, or just plain old bugs that the creator just didn't know how to fix.
Yeah, there was Syntax did a whole episode on There was one app and I cannot remember for life of.
Me what it was.
But the gist of it was that they had built on Firebase and left the default setting for the database so that it was open, and so people as part of the app, people were required to upload pictures of driver's licenses and for verification. And so because of the default setting that was left there, they left the API end points wide open, and so anybody could hit the A point API in points and get all the driver's license information.
And it was purely vibe coded.
You know, it wasn't people who knew what they were doing this that hey, build the system they did and had left this security vulnerability that was just wide open.
That said, how many startups found their lead developers on develop on craiglist and then they left it wide open.
Yeah. Well, and the other thing is is that.
You know that that again is kind of a high level architecture decision that you that they wouldn't know to make. But in a lot of other cases, I've I've seen people that again you know, have vibe coded a good chunk of their stuff where security and other factors aren't as serious an issue, and yeah, they end up with something that works and.
When it's security not such an issue I mean, sure, if you're uploading driver's licenses, that's probably you need more.
Guess I guess that's what it is.
Is.
Yeah, the consequences aren't as you know, you're not compromising somebody's identity or something like that.
But yeah, but by the way, a funny thing. Riverside has an interesting behavior. I logged in as a host and now when I posted a reply in the chat, it says that I'm you Chuck.
Yeah, yeah, we can. Also, my name I think is on the right. Don't get me in trouble. Actually maybe I don't care, but that yeah, it's it. Yeah, the account is set up under my name. That's why.
But anyway, so but still anyway, it's because it does know my name on in the video. So it's funny that in the chat it put your name rather than mine. Anyway, it's funny.
But yeah, so I kind of want to get into that. I know there were some things about how we're using the.
So i'd like to say about a little bit because I talked about which tools I'm using, but I didn't talk about the processes that I'm using, So I would like to talk about that. So I recently before I went on vacation, which is going to be one of my picks. So if you are interested in my amazing vacation way till the end. So before I went on vacation too, so I was working on adding we create. We are creating this new service, and we are making it possible to purchase the service online. We had not
done that with previous services in the company. Previously, everything would you go to sales. And so I was working on Stripe integration for our product. And this was you know, right for for using an AI for because it's all well known technologies, right and very well documented. Uh. And I and so I built this service from scratch myself, using as I said, mostly Cursor, also with some assistance from Gemini, and it really sped up the process. So
I did not vibe code. I looked at every line of code that every every line of code that was pushed.
Uh.
You know, my eyes s candid at one point or another. But and I and I did a lot of manual fixes. But I would estimate that it like effectively doubled my speed, which is a lot.
So you're now a twenty X developer exactly.
No, I'm I'm, I'm, I'm I'm a three hundred and sixty five ex developer, and I'm going to let you figure out how that works, you know, and in the side, and I think we had an episode on that once. Is that that whole ten X stuff and how we all hate it and stuff like that. I said that, on the one hand, there's no release any sort of thing like a ten X, But on the other hand, I would say there's an infinity X, because if you're a certain level of developer, you can do things that
others just aren't not able to do. But anyway, I going going back on topic. So for example, this, because it was a new project, it required a whole lot of configuration, you know, setting up Darker properly and setting I usedn s JS for the back end, so setting up an SGS project and and uh configuring all the uh you know, typescript and linting and and the and the and the c I c D and all that stuff. And I hate configuration. Uh. I suck at configuration. And
luckily for me, AI excel at configuration. UH. So getting the project up and running was so much smoother and less painful that it would otherwise have been. That it isn't even funny. Uh, and that made me so much more productive. And and you know you made one of you made the comment about what percentage of lines are written by AI versus by developers. I really dislike this measurement because from my experience, code lines are not created equal.
There's a whole lot of boilerplate out there, and the actual quote unquote smart code is often a relatively limited percentage of the code that you're writing. So the LM allows me to focus on the code that I need to focus on, and even there it can kind of jumpstart the process, especially if it's APIs that I'm less familiar with. But ultimately the business logic is something that I really focus on myself. I don't trust the LM
with the core business logic. I might let it do the first iteration, but I would never commit anything that I don't properly understand.
Yeah, I completely agree. I think your experience lines up very very closely with my experience, right, And so, yeah, I had it right a whole bunch of stuff, just to give some examples of what I've used it for.
So the scheduling, so I ran into some issues with schedule once it wasn't doing everything I wanted, and so I used AI to help me write the scheduling link on the top end dev's website, and you know, and so now I can add features to that that I don't get in the schedule once, which is what we've been using to schedule the the podcast episodes with guests. And so now we can just send people to a link on on our system and people can you know, get on our calendar.
The yeah.
But again, you know, it just it sped it up. I was doing stuff that was mostly fairly well understood. I didn't have to go look up the documentation on how to integrate with Google Calendar. I did have to you know, test it a bunch, and you know, fiddle with some stuff. But I'm pretty sure I got it done in less than half the time that it would have taken me to go and do all the research
and figure how to write it myself. Another one is I've been working on in browser visual email editor right for a number of projects that I could use it on because I have a large enough email list now that it's costing me several hundred dollars a month to use a service to send the emails out to my list, and so I was like, hey, if I bring this in house, you know, I can save myself a big chunk of change and have it sent out through Postmark
sending service instead of you know, active campaign and so again, Uh, if you.
Could we discuss when that's an interests whether it's worth Yeah, that's an interesting observation, chock that I think that a lot of services out there are going to be facing competition from DIY using AI tooling to build a good enough alternative.
Yeah, well, there's another tool out there that does the visual editing. It's called b free bee Free and I was looking at using them, but they their service to get all the features that I wanted, and their template library is like one thousand dollars a month, and you know, yeah, anyway, it just.
Again and that's exactly my point.
I could save myself twelve thousand dollars a year by sitting down and having AI help me write it.
And I have a good enough solution.
At this point exactly now. In the past, you either couldn't or wouldn't because it was it would just take you too much. Either you couldn't do it or it would just take you too much. Effort that it wasn't worth it. In these days, you say, hey, you know what, I'll give it a go, and there's a chance that you'll actually come up with a good enough solution.
So I think the other thing is is it was one thousand dollars per application. And so yeah, sure, all of the top all of the channel Kitchen's hosting stuff is one application, but I have four other projects I want to use it on, and so I'm saving myself sixty thousand dollars.
By having a help me write it.
Yeah, and I think a lot of services out the existing services are going to be facing an uphill struggle trying to justify their value proposition going forward in the age of aie IF building. But the building a good enough alternative is is easy enough, you're gonna you're gonna have a problem.
Well, the other thing that I've looked at with this, just from the business standpoint is I can sell and or license my builder. It costs me a whole lot less than that it costs them to build theirs to
other people. And if I allow them to license it and then use my code as kind of a licensed open source as opposed to a black box, that you include into your thing, right, so it just you know, you you just pull the code in or pull it in as a library, and then you you know, you can use AI system similar to what I built in order to modify it to what you need.
You know.
Yeah, I think it creates a whole new market.
So I wanted to bring up two more points before we end up going to picks. So first of all, you do need I'll give a concrete example of why, as a serious developer, just vibe coding is not good
enough from my perspective in a lot of cases. I might have given this example before in one of our other show episodes on the topic of vibe coding, and that's one of our developers where I work was implementing a certain bit a certain migration code, and it would go to the database and get the data, all the data out of a certain table which could potentially be very large, and would process it in a certain way and write it back because it was part of a migration,
as I said. And now, the first implementation they created, just was created using AI, by the way, was really naive in that it read the entire table into memory. And that's obviously problematic when the table can be huge. So when I did a code review on that code, I said, look, this is not good enough because it
might cause a problem. And the problem was that they had the AI writing the code, and they played with the code manually, but they didn't play with a large enough table, so they never they never thought about this potential problem. So then they actually had the AI fixed that code. So they told the AI, hey, do this in pages rather than read the entire thing into memory. And AI said, sure, that's a great idea. Obviously we should do that, you know, like a AI usually says
in these types of scenarios. And then the AI wrote recursive code. That did it. Why did it recursively? I have no idea, but obviously with recursive code it means that again, if if the table was big enough, it would blow up the stack, even though it was using pages,
because JavaScript does not have tail recursion. And you know, so I reviewed the code again and I said, hey, not only isn't this code so very readable, because recursion in JavaScript is not necessarily super readable to all developers, it's also has this problem that the stack will blow up, so make it not you know, built the loop as a straight on four or wild loop or whatever, and so they had so they told Cursor to do it again, and Curser again said, hey, you know, that's a great idea.
We should obviously do that, and they did it, only they now implemented it as a loop within a loop within a loop, like an end to the power of three. At that point, I've had I basically had enough, and rewrote it by hand and pushed the fix in, obviously making sure that it passed the tests. But it's funny seeing the limitations of quote unquote vibe coding in this way.
So this was one story that I wanted to tell the other We kind of mentioned it at the beginning that AI is really attractive, almost seductive for testing and it's a super double edged sword. Now I don't do TDD, which means that I usually write tests after I write code rather than before. I always wanted to do TDD. My brain just doesn't work this way. We had Chayallen on the show, by the way, talking about TDD highly recommended his brain definitely does work this way, which may's
maximum an amazing developer. That's not how I work. I just can't do it. So what ends up is I write code, I review the code, I play with the code, I single step to the code, and then I have the and then I write tests for the code, and and now I can have AI right tests for the code. And it turns out that AI is great at running writing tests for the code. The problem is that if you have a bug in your code, it will happily write tests for the code that pass for the bug.
And even worse is when you then change the code for some reason. And it's so seductive to just tell the AI, gon't fix the test, so that my test will pass, and it will happily do. And again you introduce the bug and the tests were supposed to catch it bugs, and but you had the AI fix the test, and now the test pats again, so you have always passing tests which are effectively worthless tests. So that's a
double edged sword of using AI to write tests. It's really really seductive, it's really it's something that AI can easily do, at least for JavaScript and the leading testing frameworks. And it's incredibly dangerous because it can nullify the whole benefit of having tests.
Yeah, I completely agree where I use it, because I think you brought it up when I mentioned that I use it a lot to write the tests. But yeah, going back to what we were saying before, then I go through it and make sure that it's you know, it's doing what I needed to do. You know, that it's testing the stuff that's important. Sometimes it doesn't put stuff in that matters. Sometimes it puts stuff in and test stuff that I'm going, what are you even looking at?
But again, it really gives me a lot of the structure. It sets up a lot of my test doubles, mocks the stubs.
You know, it does a lot of the other things that I need for the test.
And so it gets me usually ninety cent of the way there, and then I can approach it and say, okay, but this is the stuff. You know, now that I've got all this set up here that I actually care about, and so yeah, that I can just modify in the other stuff. Going back to your first example, though, one example that I wanted to share was when I was
working on the calendar stuff. I wanted it to check a Google calendar and see if there were conflicts in the Google calendar for the time slots that people could schedule for the podcast or other appointments, and so you know, it followed a very logical process. It would figure out what all the time slots were, and then it would
check if each time slot was free. So I had a half hour time slot, you know, between eight am and six pm, and so it would come up with four hundred and fifty time slots every day or every week, you know, for the next seven days. And so then it would go and it would say, hey, Google Calendar, is this slot free? Is this slot free? Is this slot free? And so it hit the Google Calendar API
and fifty times. It was wicked slow, and it was very inefficient, and I, you know, so I had to go back in and say, okay, is there another API call we can make to just get the free and busy times for the entire weekend.
It turns out there is for Google Calendar, and so then it was able to help me write the fix. But you know it, yeah, it really.
You know, logically, it made sense why it chose to do it that way, but it doesn't consider everything. And so, you know, making four hundred and fifty API calls is probably going to get you on their knotty list if you're doing them that fast, and it's super inefficient.
And so yeah, you know, just things like that. It does that kind of a thing all the time. And then the other thing that I.
Found is again you know it it really likes try catch stuff or in Ruby the begin rescue, which is kind of the same thing, not exactly, but so then it just swallows your error's hohle, and it's like, why did you put a rescue in here? If it's not doing what it's supposed to do. I want it to
blow up and tell me, and it doesn't. And so you just really have to keep in mind that it may have been trained on stuff that's not ideal, both in your tests and in your But I've also, like Dan said, I've had to write tests where it makes it pass when it shouldn't or you know, it makes it happy when and then then misses stuff because it just tests kind of the happy path and not the other stuff you care about.
And you know a lot of projects have like chest covered thresholds, and AI almost essentially kills it the whole concept because it's so easy to tell AI, you know, just achieve eighty percent coverage for me, and it will do it with chunk yep yep.
Absolutely So one thing that I wanted to get into before we wrap up, is I hear concerns that AI is part of the reason why people are having trouble finding jobs. I'm hearing concerns that as the models get better and it's able to write better code, that it's going to consume some of the jobs out there. What do you guys think about this?
The thing I've been hearing, you know, reading, and I've talked to people in the industry, in other industries that are impacted AI, is that you don't see people hiring junior death so much anymore because they figure AI can handle a lot of this and you've got to be a quote unquote senior.
However you define that term.
They're not entirely wrong. They're not entirely right either.
Jobs. I mean, that's just, you know, I don't have any numbers to back that up, but that's just I've been hearing that a lot lately.
The same for me, and they're like you said, there is a certain amount of truth in that if I, as a senior developer, am able to be twice as productive, that means that, you know, if we are a really successful company, maybe we can do twice as much. But Alternatively, we could save on our expenses and achieve the same amount of throughput. But it's it's a problem. I mean, if there are if there are no juniors, who are
going to be the seniors. Now you know, I'm on the I guess the tail end of my career in a sense, So I don't know. Maybe I'll be able to retire before before I swallows all the eventually, maybe, But look, first of all, what I've seen is we've kind of reached a certain wall, like I'm not seeing the AI. We saw a period of dramatic improvement, and it seems to be slowing down. We're still seeing improvements, but not at the same rate. It's more about the
tools getting more refined rather than significantly better. Also, we are like one Chinese invasion of Taiwan away from this whole thing coming down like a house of cars. So I don't know. Now, you know, we're talking with people have been talking about self driving cars for decades, and you know, think about what that will do for the job market if and when that actually happens. And we are starting to kind of see it happen place in
certain places. But if and when it does happen I mean, imagine all the taxi drivers, bus drivers, lorry drivers, truck drivers being out of the job, out of a job. You know, there are a lot more drivers, I think out there in the world, and developers. I don't know what to say, Like eventually it might happen, but when it does happen, that just means that I think AI took all the jobs anyway, and that's it. But but yeah,
it is impacting the job market. But it's difficult for me to say whether the the difficult times that juniors are experiencing are because of AI or because of AI hype, or because of just the job market being what it is and things being cyclical.
Yeah, so.
I think I'm going to say some of the same things you're saying, Dan, But in a so I attribute at least some of the job market to the current economy.
And you know, we we kind of had this downturn, you know, a year or so ago, you know, maybe a little longer ago. And so it because the job market.
Has been different since COVID, and it's been you know, at least for the last while.
It's it's it's been a little bit slow anyway.
And so I see in some ways I see it coming back and in other ways I see it kind of staying where it is, And so I think there is some economic factor to it that has nothing to do with AI. That said, I do believe that there is some level of impact that AI does have and is going to have. And I think you guys both expressed this where, Yeah, if I'm running a company and my havelopers can be twice as efficient and I can maintain.
A good market position.
With half the workers and still get the work done, then yeah, it may be a consideration to you know, reduce my workforce or at least not replace people when
they go. If you're in a highly competitive space, though, then if your people are more productive and you can afford to keep them on, then your strategic advantage is to figure out how to do it again so that they're twice is you know, they can double their capacity again and again and again to the point where you can, you know, overtake anybody ahead of you in the market and then continue to be competitive.
And so I don't see it as an overall loss in jobs. I think it just depends on.
Who's making the decision and why they're making the decision, and then the other piece of it, as far as juniors go, I think it presents both a challenge and an opportunity because if you're thinking about juniors in the sense that, hey, they're the people who kind of handle this level of task and we just kind of lean on them for that kind of a thing and that's all they do, then yeah, right, a lot of the AI LM stuff is going to handle a lot of those things.
But and this is a big butt.
The opportunity presented for juniors is also, in my opinion, a huge one because if you, as a junior, can figure out how to be productive on the level of a senior developer by using AI and using it as a learning tool and an opportunity to get stuff done, and you can begin to demonstrate that for potential employers, you have a much higher likelihood of getting a job. And some of these companies are going to be forward thinking enough to hire juniors or to hire interns, and
so the opportunities are out there. They might be a little bit harder to find or might be a little bit less common, but this is the opportunity because I think a lot of folks just think, well, I went through the boot camp, and now I'm supposed to find a job or I just went through college and I'm supposed to find a job. And the reality is is there are a lot of opportunities that you have with AI where you can actually go out and make yourself, bring yourself to the top of that lower end market
and then be able to find a position. And then the other thing I'm also seeing, and we talked a little bit about this, is go out and build your own thing, right, because you do have skills above and beyond kind of the business person that might try and
vibe code something. You actually understand how some of the code works, and so you may be able to create an opportunity that is not a full time job like you thought you wanted, but there's actually some entrepreneurial or other opportunity that you can see out there.
And so.
I don't think it's hopeless for junior devs.
I think the.
Opportunity has just changed its shape and.
Look, and so you have to be very aware of what's out there and what people actually want and then figure out how to have it. And you've got this amazing productivity and training tool in the AI LLMS that will help you pick this stuff up and move ahead. And so that is something that I just really want to encourage people. It's not a lost cause.
I totally agree. It's kind of a disruption period, and disruptions represents risks and opportunities. It's like, you know, like when everybody kind of moved to react, it doesn't mean that if you finished a boot camp before react you're out of luck. In fact, you might have an advantage because you would know stuff that other people who have
just learned realc don't know. Likewise, if you're now entering the market and you come in with if you learn how to make good use of these AI tools and to leverage their capabilities and be aware of their pitfalls and and learn how to make the best use of them, you probably have an advantage over most of the people in the market.
Yeah.
Yeah, well that's I mean that, That's been my take. I've been trying to encourage people. I haven't done a good job of it because I'm not talking about this as often as I should. But yeah, I think, I yeah, I think the opportunities out there are tremendous.
And so.
All right, well let's go ahead do picks.
We're at an hour now and honestly I need to get back to work here soon anyway, you both so, yeah, Dan, do you want to start us off with picks?
Sure? So my first pick is that this has been a really emotional time for me. For those of you don't know, all the living is really hostages. The remaining living is rarely hostages that were building held by Hamas for over two years have finally been released. Everybody here in Israel celebrating for days from yes I just tweeted like how I feel today on that day and put a link to here comes the Sun. It's like we've been walking with this weight on our shoulders for the
entire time. Like you go out with friends, you have a good time, but in the back of your mind you constantly have that that nagging feeling of guilt of of you know, they're suffering, and I'm enjoying myself, and and what can I do? And and and so it
it kind of lifts this huge weight off of your shoulders. Uh. And especially when you realize how they've been tortured in these tunnels during the past, especially the the the last year, you know, essentially from the beginning, but especially the last years has been especially hard. Some of them were kept literally chained in cages throughout the entire time. They were starved almost to death. It's they they were tortured, burned,
it's it's awful. But they're released. It looks like hopefully they'll all be able to make a recovery, So, you know, I you know, it's it's such a huge relief. It's it's difficult to explain. Also the fact that it looks like the fighting is hopefully coming to an end, hopefully in a way that will guarantee the safety and eventual prosperity of everybody in this region. Unfortunately, I'm not yet sufficiently optimistic in the long run, but at least people are not dying on a daily on a daily basis
right now. Although Hamas it seems, are turning their guns on their own population and executing Palestinians in the street. So then that's pretty horrific. But you know, nobody in the West seems to be caring about that. But you know, it is what it is. So so my first pick is about that. One last thing in that context is there are still the bodies of dead hostages. I know that some people don't like the concept seems weird to them. How can somebody be in like, how can a dead
person be a hostage? But it's really important for the families to achieve closure, and I really hope that all the bodies will be recovered during the upcoming days and will really put this dark episode to rest. So that would be my first pick by far. My second pick is that I've just come back this week from two and a half week vacation in Tuscany, Italy, which was amazing. I highly recommend taking vacations. We talked about it in
the past that people don't take enough vacations. From my experience, especially people in the US, seem not to take enough vacations. People in Europe and Israel are kind of mandated by law to take a certain amount of vacation, and I understand the situation in the US is kind of different in this regard, and there's like this whole like also cultural thing where you know, people are expected to take a certain amount of vacation, and again, it's really important
for your health and well being. Like I said, we went to Italy, mainly Tuscany. We love Italy, we love going there. It's a lovely place with lovely people, lovely scenery. I tweeted out or exed out some of some pictures from our trip. You can take a look. It's really beautiful there. So I highly recommend visiting if you can make it, if you can afford it. And I oh yeah. One last technical pick, something that we probably will want to have a show about. Remis ree was announced. They
had a conference about it. There's also been a conference about React itself React which some news came up, which probably have an episode about that. But those who are mostly lot of small things, remix three is one big thing. They basically kind of decided to ditch React. So if remix was was a meta framework built on top of React, as in remix one and in Remix two, Remix three is a reimagining at the framework level. They're building effectively
an alternative to React. It's really interesting. They have some interesting concepts. I will put a link to the relevant uh part of their video in the show notes Uh. There's also an interesting alternative you can you should watch that. You can also in addition, watch Ryan Carniato we've had often as a guest, the creator of Solid actually responding in real time, like watching the remix video and reacting
in real time to what he's stay seeing. I consider him to be probably the most knowledgeable person about frameworks in general, so it's really interesting to see his analysis and his response to what they're doing. Obviously, he's doing it from a certain position. He's the creator of solid so he does have his own thoughts and ideas about how frameworks should work. But it's still really really interesting
to watch his response. I've already reached out to Ryan Florence to come on this show to talk about Remis three. He was positive about it. I'll remind him now that it's how he basically said that he wanted to wait till it's out. Now it's out, I'll try to reach out again. Hopefully he'll be willing to come on the show. You know, it looks like super interesting stuff, a lot of interesting concept and ideas. I've not yet played with it myself, but it looks really interesting.
Yeah, definitely.
I want to just back into a couple of your picks here. There are a lot of things that are said about the conflict in Israel. I'm not going to wait into the politics. I just think it's a tremendous thing when hostages come home, and so you know, regardless of value you feel about Israel, Israeli government, Gaza, Hamas, any of the rest of it, the fact that these people are being reunited with their families is just it's such a big, big, big thing.
And I will almost almost totally agree with what you said in the sense that I agree that regardless of what you think about Israeli government, about Israel itself, about Gaza, about Palestinians and rights and whatever, anybody who has positive thoughts on Hamas is from my perspective is you know, is beyond the PA it's there and the neolistic fundamentalists GI organization literally murdering and torturing their own people. Even you know, I can't say anything I'm good about Hamas right,
everything else, I totally agree with you. Yeah.
My point is is, you know, people people say and hear a lot of things about the conflict. I agree with you on Hamas. I think if you think, if you don't think they're a terrorist organization that does ugly things to their own people and to other people, go do your homework because you're you're you're totally missing who these people are. But the reality is is I'm just delighted that these people get to go home to their families, and thank you.
Again for the for the the people who have died who were being held hostage.
Same thing, right, I mean, I imagine if it was one of my family members, I this is what I would want, is I would want them to be able to come home one way or the other.
And so.
Yeah, anyway, so that that's definitely a happy, happy theme.
Thank you, Chuck.
So anyway, Yeah, I just I just wanted to express that because it's I feel like a lot of these things they feel far away, but they they do kind of impact us all, and it's all part of being humans is recognizing that these are things that shouldn't happen to other people or to us.
Some of the hostages were actually American citizens, by the way.
Yes some of them were. All right, Steve, what are your picks?
I could give a whole Die Die tribe on what you guys were just talking about, but I'll stick with the dad jokes for the day.
Bring a little humor to things.
So I went to the park the other day and I got kicked out for because I was organizing the squirrels by height. It turns out that people get mad if you start criticizing.
That's a good one.
Yes, And I know this next one is antithical to my usual opening, but I'll tell it anyway.
Do you know why good.
Looking people are busier than average looking people. I'll tell you later. I'm pretty busy right now. And finally went in to open a new bank account the other day and I said that the banker, can I open a joint bank account? I know that's not a marijuana joke. He said, sure, with who I said, I'm not picky anywhere any rich person will do.
There was this stand up. There was this comedy show in Israeli TV where it was about this young couple who are starting their life together and they're kind of the they move in to live together, they're starting to think about marriage, and at one point they decide to have a joint bank account. So you know, they sit at the bank with the banker at the bank and the guy goes it tells the guy, oh, I see that you've been saving a lot and you've you've you've
saved like thirty thousand dollars. That's really great start through life. And now together both of you have twenty five thousand dollars.
Oh nice, and then he you know, his eyes.
Open up like saucers. It's really funny.
But anyway, Yeah, there was a remember there was a Sawther story about a basketball player in the NBA. This is yusual ago when Michael Jordan was playing, and he was a teammate of Michael Jordan's on the Bulls and he was a lesser known player, not anybody whose name you would know, and he had scored like I guess the game winning basket or some big basket, but he only had.
Like two or three points.
And he said, yeah, between Michael and I, we had thirty five points tonight.
Right, all right, I'm gonna jump in with some picks. So, uh, I usually start with a board game pick, so I'm gonna do that. It's actually a card game. It's called Infiltrators, and it's Infiltrators spelled like traders, like people who betray other people R I T O R.
Yeah.
And so.
Anyway, the way that it works is you basically have like Mafia. Anyway, it's got that kind of a feel to it. It's got like Japanese characters on it. So maybe they're yakuza or something. But anyway, so you have yeah,
but it's it's a card. It's a color and a number, and it's face down in front of in front of each of the players has one, and then you have cards in your hand, and you can pass your cards in your hand to other players and then they orient the card to tell you whether or not it has anything in common with the card that's face down in front of them. So you know what's in front of you,
you don't know what's in front of everyone else. And then once you figure out what the card is, then you and it actually has a little gun prop that eventually we just quit using because we were just like, you have the right, but you're supposed to execute the mobster. But yeah, we just point out you have the you know, the red fifteen or whatever, and so by process of elimination you're able to figure out what the other players
have in front of them. You can also place the card and orient it the same way on the card in front of you. The difference is is if you put the card in front of somebody else, then you
can draw a card from the draw pile. And if you place it in front of yourself, then you can't and there are ways to get cards, and you can't place it in front of somebody else if there are no cards left to draw, and you you know, you get so many tries in the round before you're done, before you lose, and so you're trying to catch all the traders before times up.
I think we play it in like twenty minutes a half hour.
It does have a little thing to keep track of, so you can like cross off colors and numbers that sit in front of each of the cards that you're trying to guess, and obviously you can't tell anybody.
What you have.
But anyway, it was a fun game, really fun game.
I'm going to be teaching at the Game Convention in a few weeks and this is one of the games we're teaching, and yeah, anyway, it's super fun. So Infiltrators came out in twenty twenty three. Board game Geek has a weight of two point one one, so it's it's it's complicated enough to be interesting but very approachable for casual players. You can play two to five players. We usually play it with five players, and it's ages ten
plus and I think that's probably about right. So infiltrators. Fun, fun, fun game. So I'm going to pick that and then the other pick that I have. And this is something that really has affected me lately, and I just I haven't been on the show since Charlie Kirk was assassinated. And for those of you who know much about me and where I'm at, Charlie Kirk was assassinated at Utah Valley University, which is literally like fifteen twenty minutes from here.
I know a lot of people who are present when the shooting occurred, and there are a lot of aspects to this that affect the communities that I associate with locally. And you know, going back to this idea of you know, what we should or shouldn't see happen, nobody should be killed or have violence occurred to them because of what they believe.
And so.
I guess what I'm really just asking people to do is, you know, if you're harassing people because of what they believe, or you know, thinking that people deserve to have terrible things happen to them because of what they believe.
Think again, right, what we're all doing our best, We're all trying to figure this stuff out.
We're all trying to help each other live better at least I hope so, and I feel like that's what Charlie Kirk was trying to do.
And so yeah, anyway, it's.
Really made me think about, you know, where I'm at with my life and what I'm doing and what i want to accomplish and what I'm willing to stand for. And I hope people will kind of take that away too and take a minute to really figure out who you are and who you want to be, because at the end of the day, and I think this was part of the message that Charlie Kirk had was yes, it matters what you do, but a lot of it matters who you're becoming and what where that leads you
and what you do. And so anyway, I just wanted to acknowledge him on the show.
Again.
You know, I try and not bring the politics into things too heavily, and so I'm not going to go into his political leanings and things.
But yeah, at the end of the day, it you know, go watch.
The memorial for that they had for him, you know, kind of go see what he was about a little bit, and then yeah, evaluate where you're at, what you're standing for, and what the ideas are that you espouse and then have a little compassion for people that maybe think different from you.
For sure, that's that's an amazing message and I totally concur.
All right, well, I think we're uh, that's everything, so we'll go ahead and wrap up until next time, folks max out hodios.
Hmmm.
