Building for the command line w/ Joe Tannenbaum

00:06.37
Chris Morrell
All right? Welcome back to overengineered the podcast where we asked the question. What's the absolute best way to do things we already have a perfectly acceptable solution for ah. Today I am here with ah Joe Tenenbaum Joe you want to say hi and introduce yourself a little bit.

00:21.66
Joe Tannenbaum
Sure my name is Joe Tannenbaum I'm a software engineer at digital extremes. We're a gaming company and I work on the web team to help support the game.

00:35.60
Chris Morrell
Nice and I I feel like you have kind of recently been blowing. Everyone's mind with some the some crazy ah command line experiments. Um.

00:47.89
Chris Morrell
That that have been really fun to play around with and watch.

00:48.56
Joe Tannenbaum
Yeah, it's been it's been fun it's mostly just been something fun for me to do I was kind of ah a little tired of just like the everyday coding stuff and I stumbled into. Mechanism that that prompts had on offer and I was like well I think we could push this a little further I think we could we could blow this up a little bit. So yeah, it was just fun and then I started sharing them and people people were into them so which was unexpected because who cares about text-based user interfaces. But I guess somebody does.

01:20.98
Chris Morrell
Well I I think a lot of people do and I I mean I don't have I don't have exactly like ah a topic a thing that we're trying to solve today and it's more just like you know what's the what's the best What's the best way to do. Ah, user interfaces for this type of thing I'm going to even leave it away from clis but just for like sort of tasks that are either 1 off or long running processes things that lend themselves to this eye cli because I I have some thoughts there. Um, but yeah I just think it's like.

01:51.90
Joe Tannenbaum
Sure.

02:00.56
Chris Morrell
This is one of those places where developers just love this stuff. You know we just love. We love to get in the terminal and mess around with it and so fun I mean yeah.

02:05.18
Joe Tannenbaum
Um, yeah.

02:07.97
Joe Tannenbaum
And and there's like a retro vibe to it as well like it. It feels like you know you're you're rewinding the tape like 20 years and seeing seeing what's back in the terminal. You know that feels good too.

02:16.96
Chris Morrell
Absolutely yeah, Um, so I just want to I Just want to take some time to explore that. Um, and I think I'll start I'll start with just like my my sort of hot take which is I tend to think. As much as I Love Command line interfaces that we overuse cli as developers and that we ah you know we're effectively trying to turn them into browsers and we have this incredible tool.

02:41.64
Joe Tannenbaum
Yeah, whoa.

02:54.22
Chris Morrell
Called a web browser that already does all the things that a browser does um and and I wonder if like there's definitely the Retro There's ah just like the retro fun of Command line interfaces. There's ah.

02:56.55
Joe Tannenbaum
Ah, okay, okay.

03:11.52
Chris Morrell
Also, but I think it's also kind of like we are dealing with the fact that browsers are not good at 1 thing which is like a long running process. Um, and so if you're running you know if you're running a script that needs to execute over.

03:20.80
Joe Tannenbaum
Great.

03:29.38
Chris Morrell
Hundreds of thousands or hundreds of millions of ah database records or something like that like ah back in the day before um I don't know before folks were I feel like there was kind of this weird gap where way back when everything was terminal.

03:47.28
Joe Tannenbaum
Great.

03:48.92
Chris Morrell
And then coming into the 90 s and early two thousand I think a lot of developers were not very confident in the terminal and we saw a lot of things like you know like pp miadmin and like a bunch of the like all the different php scripts that would do like weird hacky.

04:00.50
Joe Tannenbaum
Yeah, the the gooey stuff popped up.

04:08.42
Chris Morrell
Things to like run background processes in the browser. Um, you know Wordpress is a great example of that and and then I think coming into the last ten years there's been like sort of a resurgence of interest in the command line within like the sort of mainstream developer community.

04:13.83
Joe Tannenbaum
Sure.

04:26.53
Chris Morrell
Um, and you know probably like ah whatever linux for windows or that you know that that windows has a better cli story probably helps. Um, so I I think like.

04:35.10
Joe Tannenbaum
The wsl. Ah yeah for sure.

04:45.57
Chris Morrell
I Still wonder though is it just for fun or where where is it that a cli interface is better and when are these like cool affordances actually like bringing value versus just for fun because there's no no reason why we can't just do them for fun. But.

04:52.91
Joe Tannenbaum
Let it.

05:03.50
Joe Tannenbaum
sure sure ah let's let's clarify sort of what you're talking about. Are you talking about a basic cli script that's prompting for values and doing something with it. Are you talking about like a full blown 2 We basically or both.

05:18.71
Chris Morrell
Um, yeah, maybe both I mean I honestly think that even for like the basic Cli interfaces. Um, the the fact that we're trying to recreate.

05:21.32
Joe Tannenbaum
Okay.

05:32.31
Chris Morrell
Like dropdowns and autocomplete and like you were just talking about trying to create a multiline text input on a cli like well like we've got multiline text inputs on the web and they work just great like why not just use that right? like why.

05:35.13
Joe Tannenbaum
Um, sure.

05:45.59
Joe Tannenbaum
Okay, okay, so if you're doing server maintenance. Let's say and you have some utility scripts that you've created ah you can't really use a browser for that I mean you could set up a web app that sort of.

05:50.36
Chris Morrell
Yeah, okay.

06:02.65
Joe Tannenbaum
Creates a world in which it interacts with the server but it's so much easier to just put those scripts on the server itself and do do the maintenance there and run the script. So I think where those dropdowns and those like more advanced interfaces come from is. In so in situations where you you have to be on the cli or it's it's way way easier to be on the cli. It just creates a better experience and yeah, it might be Overengineered. It might be overkill, but ah, it's certainly more more pleasurable to use. You know it's way way more user. Friendly.

06:32.89
Chris Morrell
For sure.

06:35.80
Joe Tannenbaum
You know the the symphony multiselect stuff was great, but it's like autocomplete remember to put a comma because if you don't put that comma like that gets funky and then get the next value and and it it was just you hadn't had to do things in the exact right way whereas something like prompts or you know charm Cli are really pushing that to say okay, well let's just. Get this a little closer to what we're used to these days but keep it in the command line and so you know the command line is not for everybody I don't know that it's you know I don't know if it's overused I feel like that's a little that's coming in a little hot but um. But I'm also somebody that you know while I don't like live in the terminal I'm not like a neofm guy I'm not you know I'm not at that level. Ah I have a million utility scripts that I use that are cli based and I don't want to build out a whole. User interface in the browser for that I want to just whip up a quick quick script and let it fly you know does that make sense.

07:34.63
Chris Morrell
No, it totally does I mean and and yeah I'm I'm kind of just like trying to to drive some discord to to get the the conversation started but but I do I think I would I've just been thinking about this kind of leading up to the to the podcast and.

07:43.27
Joe Tannenbaum
Sure sure.

07:54.17
Chris Morrell
Just wonder if you know is there an alternate reality where um, you know we got better at letting browsers execute code with elevated privileges securely and like long running processes right? where b.

08:09.62
Joe Tannenbaum
That's my dream I I would love that truly. Yeah.

08:13.62
Chris Morrell
Because like frankly, it's just it. It is easier to type like text area and have a submit button right? like these are the things that browsers are really good at doing and even if you don't like even if you don't apply any styling or any like nice Ui affordances.

08:18.17
Joe Tannenbaum
Yes, 100%

08:32.61
Chris Morrell
Even just a bare window with a basic um single single invocable controller is going to be probably a lot easier for most folks to to work with and reason about um yeah, and it's just a good question.

08:39.31
Joe Tannenbaum
Yeah.

08:48.14
Joe Tannenbaum
Um, yeah I've tried to I've tried to convert some of these things that I wanted to share that were that lived in the C like because not everybody's comfortable. There. Um I've tried to convert them to browser-based. But the end result is that you know they're doing stuff on your local system. They're doing things on your computer and it's not really possible to tunnel back down from and nor nor necessarily should it be to tunnel like if I put this up on a server that it should be able to do something on your computer.

09:10.86
Chris Morrell
Yeah.

09:18.22
Joe Tannenbaum
In a more local way than you know we're used to um and so the alternative is saying okay well composer require this start up a server and then then it will work on your local computer but you've got to kind of boot it up every time or or you've got to create a native app which is becoming more and more. Ah.

09:20.11
Chris Morrell
Yeah, yeah.

09:38.50
Joe Tannenbaum
Doable as time goes on if you're not a native app developer. But yeah I've thought about this like a hundred times like I wish that there was a safe route to build these sort of things with a proper gui and you know in the browser preferably because you're right like people know what to do with that. More instinctively. That's what they they interact with with the majority of the time. So yeah, totally totally.

10:00.81
Chris Morrell
Yeah, yeah, and even beyond that it's like the ergonomics the accessibility that you know all all that stuff just like you kind of get you get more for free. Maybe not for free, but um, but that said I mean these browser experiments that you've been doing have been incredible. Ah.

10:16.36
Joe Tannenbaum
Yeah, see.

10:18.55
Chris Morrell
And you know as ah as a as a nerd I'm like so into it.

10:25.20
Joe Tannenbaum
No, it's It's fun. But like you said it's not practical and I think that's why I was surprised that people were latching onto it because I was like what are you? What are you gonna do with this like you're not, You're not going to build an actual app. That's you know? ah. Full text-based user interface in the terminal that you're going to distribute out I don't think so I'm not sure why you would, but it's super fun to build and it like works your brain in this like completely different way because you're you're just thinking about how this comes you've got to build it sort of character by character which is either really fun.

10:51.54
Chris Morrell
Yeah.

10:56.74
Joe Tannenbaum
Which is me or infuriating which is probably most people but there are some very specific challenges in that in that within that realm and thinking about terminal Width and height and not letting things overflow and you know it's It's hard. A lot of hard lessons learned in that realm over the best year or so.

10:58.30
Chris Morrell
Yeah, well.

11:15.41
Chris Morrell
I I want to get into that stuff. Um, but I do I I think that it speaks to the fact that I don't think enough people acknowledge that programming is is as much if not more in art than anything else. You know it's It's a creative pursuit.

11:15.67
Joe Tannenbaum
Yeah.

11:31.60
Joe Tannenbaum
Um, yeah.

11:33.18
Chris Morrell
Um, and ah and a big part of art is like for the sake of it right? We Obviously it's great that we can get paid to do this work and there are lots of people who do the work just because it's a job and there's nothing wrong with that either? Um, just like there are a lot of designers and artists that. Are doing it just for a day job to and that's there's nothing wrong with that either? Um, but I think in the end. Um, if you're pursuing programming for some sense of fulfillment right? You have to like get into the artistry of it and.

11:53.65
Joe Tannenbaum
Totally.

12:09.74
Chris Morrell
I Think that's why these cli experiments have connected with so many people because it's like it's almost like programming in in the purest form of art right? There isn't a ton of like ah there isn't a ton of utility here. It's just like incredibly cool, incredibly impressive.

12:20.26
Joe Tannenbaum
Yeah, yeah.

12:28.75
Joe Tannenbaum
It's just fun. It's just fun. Yeah, and and I yeah I come I come from an art background. So like I think that was maybe what was fueling It is that That's what it felt like if it didn't feel like there was no means to an end here. It was just you know, let's just.

12:29.41
Chris Morrell
Fun like yeah, it's great and I yeah so.

12:45.75
Chris Morrell
Yeah, so.

12:46.30
Joe Tannenbaum
Let's just have fun. That's all it was and ah you know it's just at the end of the day you're just manipulating a thousand strings and printing them out to the terminal and that's not fun for a lot of people but like I don't know it really scratched an itch for me I was like oh this is this is rad I'm really enjoying this. So yeah.

12:55.14
Chris Morrell
Yes.

13:03.28
Chris Morrell
Yeah, yeah, it's like um, my my wife was just talking about this. Um, this art piece that we saw years ago that um you know, popped up in ah in a it' somewhere and there was like a Tiktok issue that popped up talking about it.

13:05.90
Joe Tannenbaum
Yeah.

13:20.66
Chris Morrell
And it's this incredible like um, ah recreation of a kitchen that's like all beed like the entire thing. It's a full so scale kitchen and the entire thing down to like the Kellogg's logo on the the cereal box. Everything is all beated right? and like.

13:35.22
Joe Tannenbaum
Okay.

13:40.58
Chris Morrell
It's kind of that same thing of to sit there and place 10000000 beads I don't know how many it would be but it's it's ah it's just an incredible amount right? is obviously just unreasonably tedious, but the the expression of art that.

13:41.52
Joe Tannenbaum
Like why did you do this.

13:50.90
Joe Tannenbaum
Yeah.

14:00.58
Chris Morrell
That's the result of that is so impressive and I think there's something to be said for sort of the the labor is part of the artistry right? like um I don't know that's the type of art that connects with me.

14:11.27
Joe Tannenbaum
Yeah, yeah, these are my beads is what you're saying yeah 10000000 beads coming together. Yeah yeah, yeah.

14:17.24
Chris Morrell
Yeah, so each character is another bead right? Each each ansy Escape sequence. Yeah um I don't know this is this is me I This is a half baked thought I didn't really plan to to talk about it in this context. But I think there's a lot there.

14:33.56
Joe Tannenbaum
No I think you're right I Think there's something about the labor going into something and the care and the love that like you can sense This took a long time and somebody really put this together piece by piece. Um, there's something about that that connects with people I Guess you're right? yeah.

14:45.19
Chris Morrell
Yeah, yeah, yeah, so you know you've said a bunch of times that you were surprised that people were ah were as responsive to this thing as it as they have been and I I would not be surprised at all I mean it's like.

14:49.84
Joe Tannenbaum
Totally.

14:57.28
Joe Tannenbaum
Um, yeah.

15:01.76
Chris Morrell
Yeah, it's it's this incredible thing that you you put out there. It's It's really cool.

15:05.74
Joe Tannenbaum
It well, it's just like you know when you when you look at like the the Twitter landscape in particular you see a lot of like you know, larebel hot tips or layerbel you know and you see like what what is and that wasn't really ever like the goal here. It just kind of felt like I was like oh I'm kind of just like.

15:23.75
Chris Morrell
Sure.

15:23.92
Joe Tannenbaum
Showboding a little bit and and and like I guess yeah I don't know I I felt a little weird about that at times. But um, yeah I don't know I just wanted to like share stuff I thought was cool that was basically it anyway. Yeah.

15:36.95
Chris Morrell
Yeah, yeah, so I mean I'm really curious I haven't looked at um I've I've looked at Prompts to the degree of like I've found a couple of the functions that aren't documented and and played with them like but that's about the extent of it.

15:51.68
Joe Tannenbaum
Um, okay.

15:54.48
Chris Morrell
Um, I know my I have a general sense that there's sort of like a state machine type component and a rendering type component. Um, but ah yeah, like what has it been? What is that What is the process of like building these more sophisticated.

16:01.17
Joe Tannenbaum
Yeah.

16:12.34
Chris Morrell
Um, Cli components like like.

16:15.48
Joe Tannenbaum
Yeah I mean um, first of all shout out to Jess like she put this together in such a way that is so ergonomic and as soon as I like kind of saw the the pieces being assembled.

16:24.45
Chris Morrell
Um.

16:28.38
Joe Tannenbaum
I was like oh I get this I just clicked very very hard with it and thought like this makes so much sense because I had built out a terminal library I attempted to build out a terminal library that did similar sort of like a more. It was basically replicating this library called clack which is a node like node.

16:32.39
Chris Morrell
That's awesome.

16:47.29
Joe Tannenbaum
Unk librarian and I was was trying to recreate and phb so I know the pain points and I wasn't like super successful at doing that. Um, and I learned a lot along the way and then so when when Jess came along with this I was like oh this is this makes so much more sense the way she set this up. So yeah, it's basically every every.

16:47.78
Chris Morrell
Um.

17:06.68
Joe Tannenbaum
Prompt in and of itself is sort of like a little twoy right? So I took that and kind of blew it up, but it's the same principle where there's a state class. There's a little like state machine and there's a renderer class and the renderer class is just this invocable class that Accepts an instance of the state machine and it gets spun up New. Every time So you're drawing the full app every time and you're just returning this giant string that represents the app in the terminal at the moment of the state machine and so that alone sort already sort of clicks in a react Way. You know where Ui as a function of state like if you've ever dealt with react is very.

17:25.95
Chris Morrell
Yeah.

17:35.22
Chris Morrell
Um, and so yeah, yeah.

17:44.50
Joe Tannenbaum
In that world and so that was the first thing where I was like oh here we go got it so all I need to do is think about this moment you know.

17:44.38
Chris Morrell
Yeah, absolutely yeah, and so does does Prompts does does prompts handle all the like ah like.

17:57.58
Chris Morrell
Clearing and resetting like the care the cursor position all that stuff and you're just basically like okay given this state I'm going to render it this way. Yeah.

18:00.33
Joe Tannenbaum
Right. Yeah, so basically it captures the last set of frames that it rendered and then it the next time it renders it compares the previous frames with the current frames. It finds the first line that's different and then it clears everything after that and rewrites that.

18:12.74
Chris Morrell
Um.

18:16.28
Chris Morrell
God It really is like react.

18:23.46
Joe Tannenbaum
So it it handles all of this for you out of the box like you don't have to do any of this which is amazing and sort of the reason why building the prompts is kind of delightful. Um, and it's such a ah clear separation of concerns. You know this is all we're doing is handling state and key presses and things like that over here.

18:23.82
Chris Morrell
Okay, um.

18:32.41
Chris Morrell
Great. Yeah, that's amazing.

18:42.68
Joe Tannenbaum
And all we're doing over here is just building up a massive string that will eventually get printed out and you kind of for the most part don't have to care about the mechanism between for like 99% of use cases. Yeah.

18:50.54
Chris Morrell
Right? So what about like the thinking in Columns and roles rows and like ansy escape sequences and all that stuff is it kind of dealing with that for you too. Okay.

19:02.55
Joe Tannenbaum
Yeah, man, that's um, there's a lot of helpers. But at the end of the day you do have to like consider that constantly um, but she's built in like so many little things that ah that make that easier and. I ended up creating this sort of little library called chewy which I don't know I just think of like Michael Kane saying Twowy and it came out as chewy and I thought that was funny and I just called it. Chey um, but yeah I because there were things that I would was doing that she doesn't.

19:21.50
Chris Morrell
I Love that.

19:34.10
Joe Tannenbaum
Care about it doesn't make any sense for prompts to care about it like centering something horizontally in the terminal given a with height and some content you know it's like she doesn't need that because she's not taking over the whole thing whereas I was like I had to do that constantly. So I finally was like okay we need a center.

19:45.70
Chris Morrell
Sure.

19:48.47
Joe Tannenbaum
And Center Horizontally we need a center vertical. We need a pin to bottom so we can move content to the bottom based on how much has been printed out like there's just all these little mechanisms I created but it's all calculating string widths How many new lines have been printed to the terminal.

19:54.36
Chris Morrell
Yeah, yeah.

20:04.52
Joe Tannenbaum
You know how how wide is the current line. It's just it's it's constant measuring but you're also like stripping you're you're saying. Okay, if this string has anti-escape sequences in it already get rid of those before you measure it because they don't count So it's you know and then it's making sure you don't go past.

20:10.79
Chris Morrell
Right? ok.

20:22.80
Joe Tannenbaum
The Width or the height of the terminal I mean I could go on for that. It could go on forever about this because this has been yeah.

20:25.55
Chris Morrell
Yeah, how do you? How do you deal with that like um, because yeah, you're stripping the anci escape sequences but you have to maintain you have to maintain some sense of actually let's stop for a second. Ah.

20:33.72
Joe Tannenbaum
Um, right.

20:41.75
Chris Morrell
For those who are not familiar with how ah terminals are rendered right? There's the plain text and then there's what's called ah an escape sequence. It starts with a slash and an X maybe or slash and or no slash in a bracket. Yeah, um and it's just plain text.

20:44.30
Joe Tannenbaum
Right? yep.

20:55.60
Joe Tannenbaum
Slash E but there's also ah variations in the world. Yeah yeah.

21:01.80
Chris Morrell
But it's telling the terminal hey whatever is after this is rendered say red foreground or red background or bold text or you know, whatever and different terminals support of different variety of the safety sequences. So when you're looking at.

21:06.26
Joe Tannenbaum
Right.

21:13.10
Joe Tannenbaum
Right? And it also is stuff like cursor controlled or racing like these are all controlled by printing Escape Escape sequences to the terminal but they don't count for the rendering I E like they don't ever appear anywhere. So you you don't get to consider them in.

21:19.37
Chris Morrell
Ah, right? and.

21:22.37
Chris Morrell
Right? so.

21:29.22
Chris Morrell
Um, right? So that's that's kind of what we were getting to is like you may have a line of text that is 200 characters and only 170 of those characters are actually going to be printed to the screen.

21:32.70
Joe Tannenbaum
Shrink lengths or anything like that.

21:45.28
Joe Tannenbaum
Right.

21:47.26
Chris Morrell
And so when you get to like ah word wrap line wrap right? You're dealing with incredibly difficult ah Calculus here because it's like you're you're almost having to keep track of 2 separate sort of states like I can almost imagine.

21:51.60
Joe Tannenbaum
Yeah, yeah, yeah.

22:06.21
Chris Morrell
Ah, getting into like tokenization like some sort of like ah parsing like ah system that like tokenizes might be worthwhile so that you can like abstract some of that stuff away. But I don't know it's.

22:16.21
Joe Tannenbaum
Yeah, yeah, so it gets it gets gnarly super fast as soon as they're in a string. It's just a different world. You're at a different realm of dealing with it so you kind of have to assume.

22:23.99
Chris Morrell
Wild and.

22:33.93
Chris Morrell
Um.

22:34.00
Joe Tannenbaum
They're going to be in any string you're dealing with unless you have like absolute control over what the input is so ah like even something like string Pad you're going to use that like a lot right? because you're going to want to pad either left right? or both of a string with some spaces as you're laying things out but you can't use it because.

22:36.44
Chris Morrell
Right.

22:47.38
Chris Morrell
Yeah, yeah.

22:52.75
Joe Tannenbaum
It's not measuring the string accurately if you're passing in anything with anti-escape code so you bet you're rewriting all of these string functions to account for Anti-escape codes like ah you know speaking of word wrap for the where I'm working on like a multi multiline input for.

23:01.43
Chris Morrell
Yeah.

23:09.88
Chris Morrell
Yeah.

23:10.83
Joe Tannenbaum
For proms like ah a Pr and Jess in the middle of it was like we don't have a multi byte word wrap and like just just forget anticape codes. We don't have multi byte word rap and multibyte is pretty important when you're dealing with all these like weird characters and lay things out and I was like okay.

23:18.59
Chris Morrell
Right? right.

23:27.40
Joe Tannenbaum
I'm going to write multi byte word wrap and we both took like a swing at it and we kind of met in the middle and we were like okay, what's the best pieces of both of these and so we we wrote I think one that covers a fair amount of use cases I think like sort of the 99% of it and I'm sure there's some edge cases that we you know emoji emoji were that was tricky. Um.

23:30.57
Chris Morrell
Ah.

23:45.58
Chris Morrell
Um, yeah for sure. Sure.

23:47.70
Joe Tannenbaum
So yeah to get back to sort of the the crux of it is that? Um, yeah, you don't get to use any of the like kind of baked in stuff most of the time because you've got to deal with these Anti-escape codes that is that is a thing for sure.

24:02.32
Chris Morrell
Yeah, interesting. Yeah did you have you considered like um essentially like the string helper just like a ah ansy aware string helper that just handles all that like introduces all those like fluent.

24:16.36
Joe Tannenbaum
Yeah, a lot of those things. Oh the fluent methods. No, but that's a good idea I could probably macro those in. Basically if if we're talking about like the La of all string helpers as that we talking about.

24:18.39
Chris Morrell
Ah, methods for you.

24:29.18
Chris Morrell
Well I'm imagining a whole new class that essentially implements all of the same methods as the string helper but all of those methods would be antsy-aware so you could do um you know something like ansy open parents.

24:41.43
Joe Tannenbaum
That's cool. Yeah.

24:45.77
Chris Morrell
And then pass in as ah, block text and then if you want to do like Pad laughter. Whatever it would account for that padding.

24:55.60
Joe Tannenbaum
That's smarter than what I did which is just one off every time I needed something. It was either a new method or a helper function or something because that's the way it was in prompts already. She has stuff like pad in there and you know trim trimming trimming is hard because if you trim.

25:07.51
Chris Morrell
Ahha trimming is so hard.

25:13.31
Joe Tannenbaum
The Escape sequence off, you've now because it's the way they work is. It's like an opening escape sequence and a closing escape sequence and what's between those for formatting at least. So if you trim off the last of it and you don't close it out. Ah you've just styled everything after it by accident.

25:21.34
Chris Morrell
Yep.

25:30.97
Joe Tannenbaum
Because you never closed out the styling so she has a lot of these little helper methods which is again why using prompts was sort of a good way to go because it was all baked in for it. But I I paired with ah ah Ben Holman a while back and.

25:31.90
Chris Morrell
Yep.

25:47.49
Joe Tannenbaum
We sort of both were interested in the same thing weirdly which was like how do we do word wrap with formatted strings in the terminal and I was like well we should. We should do this together because it's ah it's a really hard problem because if you think about like inherently making that happen alone is very tricky but then trying to continue like if you break on a style.

25:55.52
Chris Morrell
Um, yeah, yeah.

26:07.34
Joe Tannenbaum
And it's bold up here. You want it to remain bold on the next line so you've got to sort of collect all these styles on the line before reapply them and re undo them on the next line. It's this. It's It's a whole circus. Yeah.

26:20.14
Chris Morrell
Oh so I actually didn't know that you can't just those um styles don't apply to the next line automatically.

26:30.35
Joe Tannenbaum
They do. But if you let's say you're rendering them in like a gray box the moment you do that gray line. That's that's game over. Yeah so you kind of have to assume that whatever's after I mean depends on how much ah control you have over the situation. But yeah.

26:34.37
Chris Morrell
Um, ah right right? Yeah, right for the border And yeah, yeah, that's really interesting. Yeah, um, it definitely feels like.

26:46.74
Joe Tannenbaum
It has a lot of consideration there.

26:51.12
Chris Morrell
There's a world where um, at least for the formatting stuff I don't know I'm not real familiar I'm I'm fairly familiar with the formatting stuff I'm not very familiar with the like positional and and clearing um escapes So I don't know exactly how that would work.

27:06.55
Joe Tannenbaum
Um.

27:10.94
Chris Morrell
Excuse me. Um, because in those cases, It's not really like applying state to the current character position. It's potentially changing the character position right? So it's it's not state based it's something else. But at least for the formatting stuff. Yeah, it just seems like.

27:22.56
Joe Tannenbaum
Right? yeah.

27:30.75
Chris Morrell
There's um, you know there's potentially a world where um, you know you you parse you you almost like write your own antsy parser that like. Keeps track of character by character. Any flags are a set um and then like you could even I mean not to this is this app. This podcast is called Overengineered. So I'm not even going to say not to overengineer it. But.

27:54.70
Joe Tannenbaum
Yeah, that's it. It's a good idea. Actually it's a it's a strong strong idea.

28:09.00
Chris Morrell
You could even probably um, like there's not that many of them you could probably do it in a bit mask and literally just have like an array of um, ah an array of ints that represents all the bit flags for every single character.

28:23.80
Joe Tannenbaum
Writes.

28:27.00
Chris Morrell
In the tech sequence and then like you basically would be able to just say you know give me these 30 characters and you know all the style details for those 30 characters.

28:40.19
Joe Tannenbaum
Great.

28:41.74
Chris Morrell
And then you could just sort of have some sort of optimization mechanism that sort of collapses those down to the lowest number of escape sequences necessary to apply all those styles to all those characters but I could see like adding some of those interesting like abstracting some of this stuff away.

28:51.52
Joe Tannenbaum
Right.

29:00.80
Chris Morrell
So that then you know you have just the string as just a string but you also know for like the thirty second character in this string like these are the styles that need to be applied to it and if you break it into 2 lines.

29:14.25
Joe Tannenbaum
Um, yeah.

29:17.49
Chris Morrell
It's pretty easy because you just had you would just split both the string and the um and the bit masks you probably wouldn't even keep a string you'd probably keep an array of characters and an array of of bits. Um.

29:32.66
Joe Tannenbaum
I Almost followed you there we're we're close. We're close to being to following you. But yeah there there is something there. There's something about normalizing this in a way that's not so one off I've been doing it really one off and to sort of like make this more of a.

29:34.93
Chris Morrell
There's something there.

29:52.80
Joe Tannenbaum
And normalized process and then you can you can apply these methods all a cart as you want as you would expect them to be applied which would be nice. Yeah yeah.

29:55.46
Chris Morrell
Um, right? Yeah yeah, yeah, no I I mean I've only done you know the most I've had to do is there have been a couple of of sea eyes where it felt really important to me that. The the like sort of opening message was very clear like if you know if you're potentially doing something very dangerous. Um, where I really wanted to um you know, highlight words in the in the middle of a multiline.

30:18.32
Joe Tannenbaum
Are.

30:33.70
Chris Morrell
Sentence or something like that and you know for the most part I just use this symphony stuff that kind of parses Xml into um into these escape sequences but that stuff falls apart if you're getting into multiline. Um, and so I've I've experimented with trying to do exactly that like the word rap.

30:35.30
Joe Tannenbaum
Yep.

30:45.17
Joe Tannenbaum
Right.

30:52.34
Chris Morrell
Um, and felt some of this pain and I like I can't imagine like that's the worst that I've had to deal with is just I have a string that has like red text somewhere in the middle of it and I want to split it do as many lines as are necessary for whatever with terminal you're in.

31:04.35
Joe Tannenbaum
Yeah, yeah.

31:11.70
Chris Morrell
And that was bad enough.

31:11.80
Joe Tannenbaum
Yeah,, that's the whole thing. That's everything I'm doing and it's all it's all that it's all those considerations I Mean. Um yeah, if you're not into that I don't think you're going to like building out these these 2 if you didn't like that little experiment. Yeah, um, it's all considering that stuff and um, you know there were you'll notice I have no hair. It's because I've been building out these these these experiments and and some some nights I was like man I I can't Why is this one character to the right. It should be here and it's here.

31:45.63
Chris Morrell
Yeah, yeah.

31:45.64
Joe Tannenbaum
And it's like so like you know little things like that and and you have to break it down bit by bit and it's it's it's tedious like I will give you that I will give you that.

31:53.40
Chris Morrell
yeah yeah I mean I could be totally wrong like my my my programmer brain says. Well let's just spend you know 2000 hours building the perfect abstraction and then all those problems go away. Ah.

32:05.98
Joe Tannenbaum
Yeah, right.

32:10.00
Chris Morrell
But obviously how often does that actually work out in practice like you know, but that abstraction should be there. Yeah yeah, it would be cool. So um I have I have a sort of.

32:13.60
Joe Tannenbaum
True you you could probably cover a lot of it though you could probably cover a lot of it. Yeah yeah.

32:28.98
Chris Morrell
Ah, not pet peeve I feel like um I feel like my experience of writing sort of terminal apps in laravelle is that 95% of the time. Essentially what I'm doing is writing a command. That queries some large dataset and iterates over it to perform some operation like 1 by 1 or chunk by chunk. Um does that does that resonate with you or is that just like my experience of of the world.

32:57.21
Joe Tannenbaum
Okay.

33:05.31
Joe Tannenbaum
Of building these little one-off commands that that people generally use or or like utility commands.

33:08.53
Chris Morrell
Well in terms of like the yeah, the actual utility commands that we build as as larevel developers.

33:18.64
Joe Tannenbaum
Um, ah yeah, that's that's typically about it. Um, and you and you are not feeling that is my is the vibe I'm catching you you are saying that should be what.

33:27.64
Chris Morrell
no no I don't mind I don't mind it at all I just um I ah what am I trying to say it's just been my experience that that's like 90% of what building terminal apps.

33:44.26
Joe Tannenbaum
Um, sure.

33:45.25
Chris Morrell
Like and so um, you know I I built out a solution for that that we use and it's just like it's just funny to me because it's one of those things where we use this thing. It's called conveyor belt. Um, and it essentially is just that it's like it handles. Any type of dataset that you might deal with whether it's database or Csv or excel file or whatever you just pass it data and ah it abstracts everything away so that you're just like you just tell it how to get at the data and what to do on each individual row right.

34:20.46
Joe Tannenbaum
Right? okay.

34:22.68
Chris Morrell
And it gives you lots of nice little features like step mode or debug mode or like you know, printing more or less information and um, this is just one of those things where like I kind of I put it out there and we use it all the time and it's just like.

34:29.54
Joe Tannenbaum
Sure.

34:41.32
Chris Morrell
The idea did not resonate really with many people and I I think in part it's just because it's the type of thing where it's just not that sexy. You know it's like um, ah it just you know it just meets a very basic need in a not particularly exciting way. But it just yeah, it's super utility.

34:43.74
Joe Tannenbaum
Um, huh.

34:55.32
Joe Tannenbaum
Yeah, it's utility. It's it's it's doing the job. Yeah, it's a great name though I Love the name convey about this? Yeah yeah, strong.

35:00.73
Chris Morrell
Terrian. Um, yeah I was very happy with the name. Yes, um, and yeah and it's just I I've all since then I often think like is this just my just like the experience that we've bumped into that like. The type of work that we do at Internet She just happens to be um, really specific to that use case or is it something that that's more broadly true. Um, just made me curious.

35:24.38
Joe Tannenbaum
You.

35:31.33
Joe Tannenbaum
I I have found that to be in my experience pretty broadly true like I I build a lot of these little 1 ne-off scripts or even even scripts that end up being jobs that basically take a bunch of data do something to that data and then you know move on. Um.

35:46.91
Chris Morrell
Um, yeah.

35:48.19
Joe Tannenbaum
I have talked to people though where that's not that's not the case we're like oh we never were never in the cli ever and we never build commands out I mean like I just feel like I'm doing it all the time. It's it's it's for better for worse my default mode even even when proving something out just to see like can I do Xyz like the command itself is tiny. It's usually like. You know, shunt it out somewhere else. But ah it is still running in the command in the in the Cli I want to see I don't want to have to build out a whole world of things just to prove out an idea really quickly and so I don't know that's that's where I that's where my brain goes. Um.

36:18.41
Chris Morrell
Sure. Yeah, yeah I think for a lot of those.

36:25.40
Joe Tannenbaum
Because also there's something about the like constraint of it like when you have when you're building out for the browser. There's the whole world is your oyster right? and you can you can get lost in doing a lot of other things that are not the problem or not the thing you're trying to do ultimately and not at the core of it and so there's there's almost freedom in the constraint.

36:37.40
Chris Morrell
Yeah, yeah.

36:44.38
Joe Tannenbaum
Where you can build faster and iterate a little faster if it's if it's just a cli command you know? Um, yeah.

36:47.42
Chris Morrell
Yeah, no I I Totally agree with that. Yeah I mean I think constraints are often. You know a blessing in disguise like it. It really does force you to focus in yeah no I mean and and you know.

37:00.40
Joe Tannenbaum
Totally totally.

37:05.61
Chris Morrell
I don't mean to say like in the beginning. Um I still do partially believe that like as developers we maybe reach for a really fancy cli interface too soon when maybe just like a simple. Webform would actually be better. Um, and I do wish that I wish that it was a little bit easier to build a web app that dealt with you know for me, it's like 2 things. It's either long running processes or.

37:26.58
Joe Tannenbaum
Interesting, interesting.

37:41.56
Joe Tannenbaum
Great. Great.

37:44.20
Chris Morrell
Privileges that that lead me to think about cli because you know there's there's a third which is like scheduled tasks and for that I think it's a perfectly appropriate tool for things that are just running in the background on a schedule or are being queued occasionally like that is.

37:52.35
Joe Tannenbaum
Totally.

38:03.31
Chris Morrell
That Why would you build a Ui for that thing because it it fundamentally doesn't have a Ui Um, and so it's more for the um, yeah more for the things that tend to actually look like a gui um but just are in the terminal too. You know that.

38:07.60
Joe Tannenbaum
Right? right.

38:23.25
Chris Morrell
Twoy um that I still do wish that we had better tools to do that in the browser but we don't you know that's the reality. Um it it would be cool.

38:31.40
Joe Tannenbaum
Yeah I I would agree I would agree. Yeah yeah, no, you're anti cal I I get it. The message has been received. You're anti C I And that's you know that's a choice that's a life you're living you know that's that's up to you? Yeah um I would I would.

38:41.23
Chris Morrell
Ah, oh no I'll have to edit this part out.

38:50.15
Joe Tannenbaum
Typically agree I mean I'm very comfortable in that world. But um, it narrows your audience. You know it's It's not for everybody. So ah, you know obviously putting something in the browser widens the audience of that that tool can be used by. Um, so.

39:05.20
Chris Morrell
Um, yeah, yeah, which is sometimes the point right? Sometimes it's like these are administrative only things that I actually don't want anyone else to have access to.

39:08.71
Joe Tannenbaum
It would be nice to have those those features on it. Yeah for sure 100% 100%

39:16.91
Joe Tannenbaum
You you should know how to use the cli to run this tool like nobody that doesn't shouldn't be yeah yeah, 1%

39:20.80
Chris Morrell
Yes, yeah, 100% yeah so what? Um we we recently met for the first time at ah PPNyc meet up um and leaning up to that we were talking a little bit about react PP um

39:31.12
Joe Tannenbaum
Yeah, yeah.

39:38.85
Joe Tannenbaum
Um.

39:39.37
Chris Morrell
How much have ah you been looking at leveraging something like like that an event loop um to build these ah these tools.

39:51.91
Joe Tannenbaum
I use it for I use it for 2 of them I think 1 or 2 of them I I had built this chat app that was ah it was real. It was real enough if it was real enough for like the proof of concept of it. But it used react php for that because.

40:03.67
Chris Morrell
Yeah, yeah.

40:09.19
Joe Tannenbaum
Ah, you know there were it needed to be sort of like Async ish in order for like everybody to receive the messages without having to like poke constantly and so I it was a while ago I can't quite remember what I did with it. But um.

40:15.39
Chris Morrell
Yeah, yeah.

40:26.77
Joe Tannenbaum
I've tried to reach for it. A couple of other times and I'm like oh this is it. This is the solution and to get it to play Nice You know I actually was thinking about this the other day and I was like I think I was just going about it all wrong in terms of like understanding the loop fundamentally and then understanding how to connect that to the rendering mechanism of.

40:28.68
Chris Morrell
Um, yeah, yeah.

40:44.87
Chris Morrell
I.

40:46.27
Joe Tannenbaum
Pros I think I was just trying to like bolt 2 things together that weren't quite ever going to match right? Um, but I think like now that I've had some time and stepped away I think I could probably sit down and go oh yeah, this is this is actually what this looks like I don't need to to be so complicated about it's probably much simpler than that. But it's a.

40:50.17
Chris Morrell
Sure.

41:05.30
Joe Tannenbaum
It's a cool. It's a cool little suite. They've got some cool things over there I haven't I haven't had the opportunity to play with everything. But um I've done some of the event loop stuff for the chat app and that that worked out pretty well. Yeah.

41:16.50
Chris Morrell
Yeah, yeah I mean I I wonder I mean I wonder honestly if the name is part of the problem. It's like ah react just has taken over the world as ah as what you mean when you say say react.

41:25.71
Joe Tannenbaum
Yeah, for better for worse that is definitely true. Yeah, no.

41:31.56
Chris Morrell
the the javascript yeah for better for worse. Um, and so you know I was I was talking to someone at at the um the the meetup and said something about react php and and they were like you mean the Javascript library. You know like it's it's just ah, there is little confusion there.

41:43.87
Joe Tannenbaum
Oh yeah, interesting. Yeah.

41:50.47
Chris Morrell
But I also wonder if um, you know with Frank and ph p and octane um and just like a little bit more capacity in the ecosystem to run long long running ph b processes.

42:05.41
Joe Tannenbaum
Yeah, yeah.

42:09.31
Chris Morrell
We're going to see more of that over the next you know, 2 3 years than we did before? um it feels like it.

42:14.10
Joe Tannenbaum
I I found that when I was I was constantly trying to do an experiment that dealt with Async in a real way and I was constantly butting up against it and I was like I guess this is just not what.

42:23.17
Chris Morrell
So.

42:30.73
Joe Tannenbaum
Yeah, I'm supposed to be doing with this or or what Php really wants to do but I would love to sit down with somebody who is way more proficient than I am in react php and watch them ah be like this is what I want to do? How would you go about this and they're like oh it's like the most basic use case of react php and they'd probably just like whip it out right.

42:32.10
Chris Morrell
Yeah.

42:43.38
Chris Morrell
Yeah.

42:49.92
Joe Tannenbaum
But um I would I would love to solve like the the the prong game was a great example like that was that really needed to be an Async sort of event driven thing and I I was really struggling to put that together in a way that was sensible.

43:00.46
Chris Morrell
So.

43:06.83
Joe Tannenbaum
Right? And so um, it ended up just basically doing like a lot a lot a lot of pinging things which is not not the ideal scenario and I reduced that by only having basically one side of the equation doing all the pinging and the other side kind of sending as it were but um, it didn't feel good I didn't like it I wish I wish it was.

43:10.60
Chris Morrell
I.

43:20.96
Chris Morrell
Um, okay.

43:26.25
Joe Tannenbaum
Better I Wish it was proper. You know if we had like a web socket server and javascript in the browser like I could build I could build that in a minute it would be great, but that's not what we were dealing with and I I would love so you know if anybody wants to hit me up and show me how to properly do like some.

43:32.29
Chris Morrell
Right.

43:41.32
Joe Tannenbaum
So react page peers only that I would 100% get on board with that. Are you familiar have you have you dealt with it a lot.

43:47.47
Chris Morrell
I you know I I would not say that I'm anywhere near an expert I've I've used it in a couple of really interesting places and in fact, like you know that was originally going to be the ah the premise of my talk in New York um I think the most interesting well I think the most practical place that we've used it is in um, integration testing with stripe. So um, when we're doing full full steam integration testing um with stripe. Ah there.

44:10.94
Joe Tannenbaum
How interesting.

44:22.12
Chris Morrell
This is something I'd love to package it up or or at least you know, get this out into the world a little more. Um, we have this incredible little trick of basically spinning up the stripes C I in ah in a background process. Ah from the test suite. Um, and.

44:37.81
Joe Tannenbaum
Okay.

44:42.60
Chris Morrell
Putting a listener on that clis output in a react Php loop. Um and so in our test suite. We can essentially say do this thing on a real stripe test account. Um, and then.

44:46.21
Joe Tannenbaum
Okay.

45:01.10
Joe Tannenbaum
Writes.

45:01.91
Chris Morrell
Activate the the event loop and wait for all the webhooks to come in actually real webhooks to come in from the real stripe service wait for those webhook payloads to come in. Um as we expect and then we actually package those up and deliver the the payload to.

45:04.48
Joe Tannenbaum
A smart. Great.

45:20.41
Chris Morrell
Our webhook Controller Ah, and then once all the webhooks have come in. We like release the event loop and continue continue back to like the synchronous testing code where we're like okay now we know that all the events that we expected to to come in have.

45:27.59
Joe Tannenbaum
Just clip it. Yeah.

45:39.20
Joe Tannenbaum
Ah.

45:39.23
Chris Morrell
Being received and dispatched to the webhook Controller like assert that the app is now in the state that we expect um and using the event loop to essentially just sort of ah take synchronous code.

45:46.95
Joe Tannenbaum
I like that I like that a lot.

45:58.70
Chris Morrell
And sort of just like inject some asynchronous stuff in there ah has been so cool. It's It's really it's a really powerful um approach because you basically just have this like in that case, it's It's just like a process just sitting there and it's it's running.

46:02.18
Joe Tannenbaum
Yeah, that's awesome.

46:16.40
Joe Tannenbaum
Right.

46:18.00
Chris Morrell
And it's passing standard out but like our event loop is just not reading standard out until we're ready for it and then we just run it. You know flush all the standard out and we wouldn't in that case we wouldn't actually have to use react php but it makes it a lot easier. Um.

46:32.84
Joe Tannenbaum
Yeah, yeah.

46:35.54
Chris Morrell
The place where I got the most familiar with it that is also just like really interesting but ended up kind of being a bust was um are how familiar are you with dusk the test that um, so um I i.

46:46.39
Joe Tannenbaum
Yeah I did for sure. Yes, very.

46:54.98
Chris Morrell
Built out this whole sort of feature complete experiment where I replaced all the internals of dusk with ah an event loop that spawned like multiple background processes. Um, which effectively let us. The main downside of dusk is that your tests are running in a totally separate process from the application that you're testing so you lose ah you lose many of the really beautiful test affordances of laraval um, because you can't just say hey just make the app the state that I care about.

47:19.64
Joe Tannenbaum
Right. Yes, yeah.

47:31.56
Joe Tannenbaum
Right.

47:32.91
Chris Morrell
And then do some tests. Um, you have to send commands over Http and it gets really clunky. Real quick. Um, so instead what this does is it just like spins up a um web server and it spins up. The the Chrome driver and it spins up like a third process is kind of like a broker broker thing that manages passing all these messages around. Um and so you you can essentially just write dusk style tests. Ah where that.

47:59.79
Joe Tannenbaum
Um.

48:10.63
Chris Morrell
1 background process is listening to your ah web requests and it's forwarding those requests over like ah like a text channel to the main thread the main process. Um, that main process in the event loop is listening for.

48:13.30
Joe Tannenbaum
Right.

48:21.88
Joe Tannenbaum
Right.

48:29.33
Chris Morrell
Both the um the the web the Chrome driver or web driver communication stuff and the http request stuff and when a new request comes in it actually passes it to the the app in the main thread. So like.

48:45.20
Joe Tannenbaum
Right.

48:48.90
Chris Morrell
When a test comes in from your ah when ah when a request comes in to the Chrome instance on your machine that request is actually passed to the actual like instance of your app running in your test suite. Um.

49:03.39
Joe Tannenbaum
Okay I think so so so the the thing you're trying to accomplish is that like there's a disconnect between like the way we normally run testing in Layerval and the way we set up state and ah the way that the integration testing works which is a little like further away.

49:04.70
Chris Morrell
Is this is this making sense.

49:18.77
Chris Morrell
Yeah, yeah, because it's all asynchronous, um it it lets us essentially instead of but it lets us bring things into the main process that we care about right? and.

49:20.66
Joe Tannenbaum
Because you can't set it up in the same way. So this this allows you to do that Basically is that what you're basically saying. Yeah yeah.

49:35.70
Joe Tannenbaum
Right? right.

49:37.83
Chris Morrell
And everything else we can run asynchronously asynchronously in the background. Um, and so you get just a normal ah normal synchronous test where the the actual browser requests from Chrome are being handled inside of your test just like. Just as though you had done like this get you know in your test. Ah, it's ah it it works the the problem is that the the problem is I mean the the main premise.

49:59.50
Joe Tannenbaum
Right? That's cool. It didn't work out. You're saying.

50:09.21
Joe Tannenbaum
Question Mark are.

50:16.64
Chris Morrell
Ah, one of the one of the main selling points for me was the other upside is you get all the the speed bonus of you're only like refreshing your database Once you don't have to like ah clear your database between each test because now you can just run everything in transactions. Um.

50:26.93
Joe Tannenbaum
Totally.

50:35.21
Chris Morrell
And the initial experiments like things were running twice as fast um compared to our dust test suite Once the whole thing was built I actually like and I and it was actually doing all of the things that dust does um.

50:51.23
Joe Tannenbaum
Um, yeah, oh no way Oh that's a bummer. Yeah.

50:54.16
Chris Morrell
It It ended up being slower than Dusk which was really disappointing. Yeah I I think in the end, It's just like passing boatloads of request data across like text channels is slow. Um.

51:09.16
Joe Tannenbaum
Yeah, yeah starts get a little clogged in there.

51:13.54
Chris Morrell
And it was slow enough. Yeah that it just for us. The speed was a big piece of it and so when the speed was gone it. It kind of my interest in it fizzled the the ergonomics of is still really great. Um, and I actually think that there's potentially a way to do a similar thing.

51:22.57
Joe Tannenbaum
It's like why are we doing this anymore. Yeah yeah.

51:33.27
Chris Morrell
In Dusk I have like ah I have a ah potential different approach that I've been exploring because the the Chrome driver um like the the package that we use to to control Chrome driver in pp um, it's.

51:48.36
Joe Tannenbaum
M.

51:52.78
Chris Morrell
Ah, like the responsibilities of different things is split up such that you could essentially swap out the thing that actually sends the messages and if we were able to make just that piece asynchronous you could get a lot more of the upside. Maybe it wouldn't be quite.

52:05.38
Joe Tannenbaum
Yeah.

52:13.85
Chris Morrell
As ah, yeah, it might not be quite as powerful but it could be that you could spin up. Um everything then in the same process and just sort of pass control between different pieces inside of that event loop. Um, so I don't know another day. Yeah.

52:27.32
Joe Tannenbaum
Makes sense you yeah you gonna dive back in. You're gonna you need figure to a while back I Ah I created for myself I was I was building this tool called Bellows and I was doing a lot of testing on it and um.

52:31.58
Chris Morrell
And not not yet but someday. Um.

52:45.00
Joe Tannenbaum
Was writing a lot of like unit tests which which were good but I actually really wanted to see it like running I wanted to make sure it was like really running running so I created for myself dusk for the terminal and it automates running stuff in the terminal as you would actually run it and it just is sort of like this loose loose wrapper around like.

52:48.43
Chris Morrell
So yeah.

52:58.64
Chris Morrell
Amazing.

53:04.59
Joe Tannenbaum
The Unix expect Command I don't know if you're familiar with that. But it sort of basically says like run this expect this to happen time out this long like you know you can kind of pass a bunch of things to it and you can create these big expect scripts and I think one day I might package it up and throw it out there I don't know how many people would actually like.

53:12.49
Chris Morrell
Okay.

53:23.10
Joe Tannenbaum
Use it but it was immensely useful to me I think the the 1 thing that would be missing for sort of mass appeal is that ah I was finding the exceptions like when the expect strip strip but fail for 1 reason or another it was hard to piece back together like precisely which part had actually failed like if you weren't watching it.

53:41.75
Chris Morrell
Aha.

53:42.73
Joe Tannenbaum
So um, that that would have to get sorted out but I think that's easy enough I didn't I I didn't feel the need to spend that much time there since I was like literally watching it run but it was ah so satisfying to say like okay, let's map these 10 scenarios that I know I want to run actually simulate the typing actually type things out and like it was it was great.

53:48.50
Chris Morrell
Right? so.

54:02.15
Joe Tannenbaum
It was great. It was really a ah cool little project. Yeah yeah.

54:02.33
Chris Morrell
That's so cool I mean even just for prompts like that would be an incredible ah testing tool.

54:10.10
Joe Tannenbaum
Yeah, yeah, true. Um, it's sort of on my I have like a big backlog of like you should put this out there and that's that's sort of in the top 5 I would say because I think people would at least like find it interesting if nothing else. Yeah.

54:17.40
Chris Morrell
Nice, Yeah, yeah, no, that's a really, that's really cool I mean I Love you know, just being able to say dusk for the terminal is pretty cool. So that's me that my.

54:30.20
Joe Tannenbaum
I know I wanted to call it dawn and then somebody else said already taking dawn and I was like I don't know what to call this thing but I'll I'll figure. Yeah, oh are you dawn? No way. Wow That's so funny that we just came to that conclusion. That's hilarious. Um.

54:36.98
Chris Morrell
My thing The the thing was dawn the the experiment that I Yeah yeah, sorry about that. Ah maybe we can just make it a ah unified a unified.

54:46.67
Joe Tannenbaum
All right I'll fight you for dawn we'll we'll we'll fight for it. Um.

54:55.20
Chris Morrell
Testing integration testing system for laraval apps covering both browser and terminal nice do watch Foundation have been. It's yeah it is the the ads for.

54:57.40
Joe Tannenbaum
Or I'll call maybe I'll just call my noon. It'll be between dusk and I just now don't know it's just making things up here. No is that the eyes I had an Apple is that an apples show. Yeah now I've I've seen like trailers and stuff I haven't actually watched it.

55:14.79
Chris Morrell
There's ah, there's like ah um, like ah an emperor who has cloned himself and and there's like 3 There's always 3 of him. Ah, there's like a child version like ah, an adult version and then like an old version and they're like working together and sort of.

55:22.78
Joe Tannenbaum
Okay.

55:34.61
Chris Morrell
Passing the knowledge down to each other So like as the oldest one like when the oldest one dies they like clone a new young one and it's It's a very interesting. It's It's actually a really cool plot device. Um, but they call though. It's like brother dawn.

55:36.96
Joe Tannenbaum
Ah, that's cool.

55:44.34
Joe Tannenbaum
That's interesting.

55:50.31
Chris Morrell
Brother day and brother dusk is what they call the 3 of them.

55:53.39
Joe Tannenbaum
Oh day obviously Dave was right there. It's another dw word I should yeah there it is there. It is I'll call it day I'm going to claim it right now on packages right now at during this call. Nice um, yeah so I think I I'll put that out there. At some point I'm sure.

55:58.35
Chris Morrell
I'm sure that no one has used the word the name day for anything before nice. Ah, that's money. It's so cool. Yeah, that's a great idea I mean.

56:10.56
Joe Tannenbaum
See.

56:14.18
Chris Morrell
Because those things are it's just hard to test those things. Um.

56:15.23
Joe Tannenbaum
Yeah, yeah, it's it's we we have some good mechanisms like for testing artisan commands and things like that in in Laraville but it's still you know sometimes you just you just want to see it run you want to make sure that like at the end of the day you punch in these.

56:28.24
Chris Morrell
Um, yeah, yeah, so.

56:33.15
Joe Tannenbaum
These characters and present are like it's going to do its thing you know so.

56:34.63
Chris Morrell
Well and especially for something like something where the actual like terminal output and not just like the text output but the actual like what you see in the terminal at a certain terminal size matters. Yeah.

56:42.74
Joe Tannenbaum
Yeah.

56:52.68
Joe Tannenbaum
Yep, yeah, that's sure it's a lot of like if I if I make it really narrow. Is it gonna just bust like is it gonna just freak out and so yeah, that's yeah, totally totally.

56:53.90
Chris Morrell
Like that's right.

56:59.96
Chris Morrell
Right? right? Yeah, no, that's cool. Um, do you have any interesting ah new experiments coming up or are you taking a break for.

57:12.55
Joe Tannenbaum
No I'm I'm ah I'm working on I'm doing Luric Hunt india so I'm working on that talk like pretty pretty heads down. Um, yeah, in fact, like a lot of what we talked about earlier like were verbatim snippets like you were like you get nothing for free and I was like that's literally a slide in my talk.

57:16.97
Chris Morrell
Um, oh that's ray.

57:29.20
Joe Tannenbaum
And so I was like oh no, we're just going to reveal the whole thing now. But um, no I'm so working on that I'm working on a Lara cast course on this stuff too which is which has been fun and so yeah I've I've been like it very heads down on a couple things so I haven't had time to to do it. But I miss it and um, but we're probably gonna get back into it.

57:39.19
Chris Morrell
That's exciting.

57:48.90
Joe Tannenbaum
In April I would say yeah.

57:49.54
Chris Morrell
Yeah, that's awesome I mean that's so cool. Ah to I am sort of having fomo about India I I thought about going it looks like such an incredible it just looks like such an incredible event and it's the location is going to be so cool because of the.

57:57.51
Joe Tannenbaum
Yeah.

58:07.12
Chris Morrell
That festival that's happening like right before or right after? Um, yeah, are you going to stay for that.

58:07.12
Joe Tannenbaum
Yeah, yeah, it's right after? Yeah, yeah, it's gonna yeah, so actually that's the conference is over my wife's birthday. So we're making this also like a birthday trip. So she's gonna come with and we're gonna stay an extra extra couple days and.

58:17.76
Chris Morrell
Oh nice. Oh.

58:26.14
Joe Tannenbaum
Kind of do a whirlwind India trip afterward. Yeah yeah, it'll be fun. It'll be fun. We're trying to frantically plan that out now because yeah, so it's coming up. It's coming up real fast. Yeah, the couple weeks. No no, we're good. We're good. We're doing okay over here. But.

58:28.45
Chris Morrell
That's cool.

58:33.31
Chris Morrell
Um, right? Yeah, it's coming up um should I not say that that's awesome. So how like you you work.

58:44.54
Joe Tannenbaum
Yeah.

58:48.27
Chris Morrell
Day to day you you work on like the web web stuff for this for a gaming company. Did you say.

58:55.55
Joe Tannenbaum
Yeah, so um, the company is digital extremes. The big thing that they're known for is this this game called Warframe which I'm not a gamer but when I say that to people who are like ah died in the wool.

59:03.52
Chris Morrell
Um, okay.

59:09.87
Joe Tannenbaum
Gamers they seem to know what I'm talking about and it's a very popular game. Um, so yeah that that game is running on all the consoles all the platforms. It's like a free to play game that's been around for like 10 years and has iterated for a long time and so the web component of that is.

59:10.33
Chris Morrell
Okay, okay.

59:19.62
Chris Morrell
Okay, but.

59:27.81
Joe Tannenbaum
Ah, they can purchase things on the website they need to show up in various consoles and various things you know so it's a lot of like brokering that and then we get like big bursts of traffic because when they do what's called like a Twitch drop or something like that you know people just go flying to the site. So we're sort of handling a lot of ah.

59:30.53
Chris Morrell
So.

59:46.35
Joe Tannenbaum
But of influx at times. But um, yeah, that's that's what we that's the the primary mode of the job is handling stuff like that.

59:54.96
Chris Morrell
So did any of this cli stuff come out of that work or is it was it really just like ah I want to do something else and.

01:00:01.11
Joe Tannenbaum
No I mean I'm always kind of doing something else on the side just to keep my brain busy like you know the the day-to-day coding stuff even when when I was freelancing can be a little bit like rote. It can be a little bit like I feel like I'm doing the same thing all the time you know we're all building.

01:00:06.41
Chris Morrell
Yeah, for sure.

01:00:15.12
Chris Morrell
Sure yeah.

01:00:19.97
Joe Tannenbaum
Everybody thinks their app is a unique snowflake. There's not a lot of there's not a lot of snowflakes out there. You know? um so the court right? It's all tables and forearms at the end of the day. Um, but ah yeah, so I always try to keep something on the side that I'm either trying to learn or I'm trying to do or just just something that's kind of stoke the fires a little bit and.

01:00:25.57
Chris Morrell
It's all tables and forms.

01:00:38.96
Joe Tannenbaum
I latched onto that and that that ended up that was just happening at night like every night I would kind of after the kid went to bed I would pop on for a little while and try to timebox it till like an hour or two try to get an experiment out and publish and yeah, that's that's what ended up being but nothing came out of work is they we don't actually do a lot of Cli stuff at work. It's it's.

01:00:57.74
Chris Morrell
Um, all right I'm gonna I'm in a pivot to I'm curious so you have a you have a acting background right? And ah I saw on your um.

01:00:58.23
Joe Tannenbaum
Quite the opposite. Actually yeah yeah.

01:01:05.89
Joe Tannenbaum
I Do yes.

01:01:14.33
Chris Morrell
Your website like you've done. You've done some like Broadway ah we were talking about this area like a Broadway revenue site or something like that.

01:01:17.46
Joe Tannenbaum
Oh yeah, yeah, yeah, yeah, so ah so a lot of my friends are selling the arts right? And so um, that's basically the bulk. It's one of the reasons why I wanted to do PhpN yc because I was like I need some some tech friends some people I can like talk about this stuff with.

01:01:27.56
Chris Morrell
Um, yeah.

01:01:32.50
Chris Morrell
Yeah.

01:01:36.50
Joe Tannenbaum
And so ah, one of my friends who I went to acting school with ended up pivoting to the to the business side of Broadway and he you know started a newsletter that really took off and amongst the industry it was like a more of an industry newsletter like you know what are the economics like what's um, what's going on on the business side.

01:01:42.50
Chris Morrell
Okay.

01:01:55.50
Joe Tannenbaum
And so he ended up building an entire company out of it. He ended up you know, starting and a new site and starting they track grosses on Broadway every week so he and they they do a lot of like comparison in charts and you know they're trying to take a temperature check on the industry all the time. It's a constant thing and so he built out like well I built out. Based on his specs like the the sort of preeminent like place to go check that at this point and so um, yeah, that's in and that was a nice merger of like okay this is like my arts background meeting my current tech background and and that felt good, but it does yeah when you look.

01:02:26.56
Chris Morrell
Yeah, yeah.

01:02:31.82
Joe Tannenbaum
I Need to like get all the freelance stuff off my site because it's not.. It's barely relevant anymore. But um, yeah, when you look at my site you're like oh this this guy's done a lot of like arts stuff and um I have and that's yeah, it's It's an interesting. That Community is not like super and that they're not going to listening to this. They're not super tech Forward. They're not really like ah you know nobody's it's It's really hard to get people to use new systems or check new things or you know that's why like the emails newsletter took off because like they were like.

01:02:54.12
Chris Morrell
Sure.

01:03:06.23
Chris Morrell
So.

01:03:06.88
Joe Tannenbaum
Understand email. We've been doing that for a while and then he sort of branched it into like he's a very smart guy. He branched into a lot of different areas. But um, yeah, it's it's both a satisfying thing to work on because it's something I do care about and my wife is a Broadway actor. So it's very you know it's very in the realm of of things that are directly personal to me.

01:03:21.85
Chris Morrell
So.

01:03:25.96
Joe Tannenbaum
But I I don't um it can be kind of frustrating at times because you're really, it's a little it feels a little dinosaur esque. You know it's it's a tough 1

01:03:33.37
Chris Morrell
Yeah I mean I think that's that's like that's the reality that most people don't talk about about almost all you know all business opportunities and like if you if you really want to go out and start a new.

01:03:49.44
Joe Tannenbaum
Yep.

01:03:52.67
Chris Morrell
Um, something new. It's like there are just a million of these businesses that just are around they have dinosaur technology. They don't want to change but there's opportunity in that right? or there's you know the the industry that we're in it's it's as boring as you can get home inspections.

01:04:01.81
Joe Tannenbaum
Absolutely.

01:04:07.97
Joe Tannenbaum
Right.

01:04:09.76
Chris Morrell
Um, you know it's like or not that it's boring, but it's it's certainly not like sexy in the like Silicon Valley Tech kind of mindset. Um, but just us building competent web apps that meet.

01:04:18.83
Joe Tannenbaum
Right.

01:04:27.84
Chris Morrell
Real needs for home inspectors like year over year has took us from you know, just 2 literally 2 guys in like a spare room to the the biggest home inspection association in the world like and it was as simple. It really was as simple as that like we did a lot of other things. But.

01:04:31.29
Joe Tannenbaum
Um.

01:04:39.22
Joe Tannenbaum
Right.

01:04:46.68
Chris Morrell
I think um, most of it was just like people needed resources and we built resources that were easy to use and and met those needs and I can see how the you know the the and that Broadway or ah, you know.

01:04:51.96
Joe Tannenbaum
Yeah.

01:05:03.55
Chris Morrell
I was talking with another friend like ice cream shops like anything. There's like these spaces where it's just it's just yeah.

01:05:08.86
Joe Tannenbaum
Yeah, there's room for optimization. There's room for you know grease in the wheels and but again its you, you talk to people and they go well, we don't want to spend more money on this part or or or ah, yeah, but we're really used to the way we're doing. We've been doing it this way for 20 years

01:05:17.58
Chris Morrell
Yes, yes, yes.

01:05:24.44
Chris Morrell
First right.

01:05:26.21
Joe Tannenbaum
And I'm like so again. So I I sort of would say you've been doing it this way for 20 years a lot's changed in 20 years maybe but I also understand that I understand you know when there's a system in place and it's working and it's you know, don't don't fix what Ai n't broke but still still. You know I don't know.

01:05:43.11
Chris Morrell
Yeah, well, but more importantly, my main question for you is um, you know how have you seen Hades town and if so why was it so amazing because it's so incredible I have seen hades town. Yeah yeah.

01:05:53.78
Joe Tannenbaum
Have you seen hadites down. Okay um I have seen Hades sound I liked it. It was not like my favorite show. That's maybe my spicy day because I think I'm maybe the only one ever to say that.

01:06:02.96
Chris Morrell
Mm Oh no.

01:06:10.50
Joe Tannenbaum
Um, yeah I will leave it at that I don't think anybody's anybody who cares is going to be listening to this but um, yeah, yeah, it's not it wasn't it didn't hit for me. It didn't hit for me. There were parts of the show that were incredible, but it didn't fulfill me.

01:06:18.57
Chris Morrell
But interesting interesting I yeah no I mean I yeah like obviously this is not ah this is not a Broadway Podcast so who cares but like um. I feel like there were parts of it that were so incredible. Um, and overall I loved overall I loved it. But I did feel like some of the um, some some of the parts were like surprisingly overwhelming for how.

01:06:39.96
Joe Tannenbaum
Yeah.

01:06:54.55
Chris Morrell
Prominent they were and um, ah yeah.

01:06:56.73
Joe Tannenbaum
Okay, okay, the hype train on that show was was moving at full speed like people were very very very into that show. So um, yeah I you know funny side story when I was at Lera Khan last year my wife was in a show called the band's visit and small show like not many people knew about it. Um, but ah, you know, ah won like a bunch of Tonys so like you think oh people would be like very people just don't know about it. It's like you say a band's visit nobody nobody knows but we're at leracon last year and I'm eating lunch with some guys and this guy walks by at at lericon in a band's visit t-shirt and I was like I need.

01:07:18.50
Chris Morrell
Um, yeah, ah.

01:07:33.76
Joe Tannenbaum
I need to go talk to this this gentleman right now and I I bombard I mean I think his name was Justin shout out Justin I was like I bombarded this man I was like hey what? what's this t-shirt. What do you do? What's your deal. What did you work on the site or what's going on here and he was like no I just I just love the show and I was like my wife was in the show and he just like.

01:07:34.68
Chris Morrell
Ah, that is incredible.

01:07:53.60
Joe Tannenbaum
Lost his mind and like we had like it was a great. It was a great time. But it's you don't really get a lot of that intersection and it's so it's so nice when you do you know so shout out Justin Bands a visits. Great show. Check it out. Yeah.

01:07:53.83
Chris Morrell
Um, that's incredible. Yeah, that is awesome. Yeah I'm curious now. Yeah I um.

01:08:11.20
Chris Morrell
Had this like moment I don't know probably it's probably ten years ago now but um my wife and I went to a play in Philly um, and I feel like you know I had gone to plays as like a high schooler for like a school trip right? I had seen Shakespeare like.

01:08:26.30
Joe Tannenbaum
Sure.

01:08:30.50
Chris Morrell
Ah, you know as a fifteen year old where I'm just like oh this is so boring you know? yeah and so like as an adult I went to this this. Um this performance and just like walked out of it being like wait. This is what theater is like like.

01:08:32.67
Joe Tannenbaum
Just glazed over. Yeah.

01:08:45.59
Joe Tannenbaum
Um, yeah, yeah, tell your friends everybody go to theater. Yeah yeah.

01:08:47.91
Chris Morrell
This was the most incredible thing. Why am I not doing this all the time. Yeah, it's I I really I try I mean we just like try to take take friends and and really hype it because it's just like yeah I think so many kids.

01:09:05.20
Joe Tannenbaum
Yeah, yeah, 100%

01:09:05.58
Chris Morrell
Introductions to theater is just like tedious at best or just like you know, ah or worse and so yeah, it's really easy to write it off. But I I've just I've been so happy with like. How much good theater there is in Philly and like we come up I don't I don't come to New York ton but like we've kind of come up to see I love I love musicals. So we we come up and see see musical from time time. Um, and it's great.

01:09:28.77
Joe Tannenbaum
Sure Yeah, that's awesome that there's nothing like being in a room with a live performance. It just has a different energy to it. It's just a different different vibe. So I Highly recommend if you're not seeing theater. You should go check out theater.

01:09:40.23
Chris Morrell
Absolutely yeah, do you do you? pursue that stuff at all anymore. Have you like left it behind you you.

01:09:47.64
Joe Tannenbaum
Everybody everybody do it? No no the most I do is help my wife with herself tapes which are like auditions that she needs to do at home. So that's the extent of my acting career. At this point It's been a long time.

01:10:00.30
Chris Morrell
I live ah like vicariously through her.

01:10:04.11
Joe Tannenbaum
Yeah, yeah, yeah, and she's she's good. She's having a successful career. So I'm happy for her and good for her but ah, no, it wasn't I tried it for a minute. It just wasn't It's hard. It's a hard. It's a hard road. Yeah yeah, it's It's just like.

01:10:15.39
Chris Morrell
It's a hard industry to be in. Yeah.

01:10:20.70
Joe Tannenbaum
So much rejection just all the time and if you're not up for that. Um, and it's just judgment. You're just constantly standing in front of people going like this is what I have to offer and they're like maybe not even paying attention most of the time It's just hard. It's hard. So I I realize like oh I think computers are my thing I think that's where I live Yeah, that sounds good. So.

01:10:24.22
Chris Morrell
Um, yeah.

01:10:30.78
Chris Morrell
Ah, right, right? right.

01:10:36.62
Chris Morrell
Yeah, no I get it.

01:10:39.77
Joe Tannenbaum
Yeah, good good choice Ultimately, but I like to keep my finger on the pulse at least a little bit and you know see see shows that my friends are in and go as much as they can. Yeah.

01:10:49.49
Chris Morrell
Yeah, well is there anything else. Um that you were interested in like touching on. Um we we kind of veered off course for a while there but I don't know you know I kind of intentionally or before this I said like.

01:10:59.51
Joe Tannenbaum
Yeah.

01:11:06.45
Joe Tannenbaum
Right? right? right.

01:11:06.68
Chris Morrell
Don't do any prep because it's just like off the cuff. But if there was anything that you had been thinking about I want to make sure we get get to it.

01:11:14.23
Joe Tannenbaum
Um, I think I think we covered it I think I feel okay about this how you feeling about it. Yeah yeah I mean I Yeah I think we're good I don't know I'm good I'm happy.

01:11:21.60
Chris Morrell
Um, it's been fun. Yeah, it's been great. Um.

01:11:29.10
Chris Morrell
Well I I've been I haven't done it in the past. But I've been meaning to to get to um or or make sure to to do like where do people find you is there anything that you want to like Hype. Ah. Since you're since you're here. Let's ah, let's get a little little promo out ah out of this if you want.

01:11:47.10
Joe Tannenbaum
Ah sure you can find me on Twitter mostly that's where that's where I am Joe Tenenba and um I don't have a ton to hype I'm height I'm hyped about India I'm hypeded about India so I'm looking forward to that and hopefully there're there'll be a recording that we can. We can shoot out and then.

01:11:57.10
Chris Morrell
Yeah, yeah.

01:12:04.99
Chris Morrell
Upcoming laracast course.

01:12:06.38
Joe Tannenbaum
Upcoming larrycast course tbd I don't know what I don't know what the date associated with it is I'm just kind of churning out episodes now. Um, and I do but I I will not say that on Mike because it makes me nervous.

01:12:15.14
Chris Morrell
Do you have a deadline that you're you're working towards or I don't know how much you you can talk about it. Yeah yeah, ah.

01:12:25.31
Joe Tannenbaum
Ah, no, it's um, it's a very very reasonable deadline that I am I am working towards. Um yeah so I don't know when the actual course comes out though. So I have I have no information on that. But I am excited about it and I hope that people enjoy it.

01:12:30.68
Chris Morrell
Mice. What.

01:12:40.14
Chris Morrell
That's awesome. Um, have you looked at Mastodon I talked I I tried to hype mastodon a tiny bit at at New York is that a thing that you've paid any attention to do you. You do have a massonhow.

01:12:44.41
Joe Tannenbaum
Yeah I have it I I I keep jumping on every once in a while and it looks like everything that people are already doing on Twitter so I'm kind of like I don't need to keep track of this in 2 places but should I should I be should I jump on the artisan.

01:12:57.77
Chris Morrell
Yeah, yeah, yeah, go for it? Yeah yeah, yeah, um.

01:13:02.60
Joe Tannenbaum
Is it artisan dot dev is that what it is okay I I think I I think I'm on there already I just need to like actually like do it like be more active on there is it is it is it Muppin over there.

01:13:11.56
Chris Morrell
Um, yeah I Um, it's tough I think that that I think that there's been a little bit of a decline of late. Um I think that there was like a there was a really meaningful spike Um, but.

01:13:23.13
Joe Tannenbaum
Um, okay.

01:13:29.22
Chris Morrell
Just think between like threads ah gaining some popularity and blue sky opening up and you know Twitter not fully imploding like um, some of the yeah, so some of the energy that had moved to Mastodon has kind of like dispersed.

01:13:30.34
Joe Tannenbaum
Yeah.

01:13:38.74
Joe Tannenbaum
Right? Continually not fully employing. Yeah.

01:13:48.12
Joe Tannenbaum
Is that where you'd rather be is that is that where you'd rather live. Yeah.

01:13:49.50
Chris Morrell
Um, you know I I would yeah I mean I think that um you know I think that with with Twitter and Reddit closing off um from third party apps. Ah.

01:14:03.85
Joe Tannenbaum
Yeah.

01:14:07.41
Chris Morrell
You know we we kind of have learned this lesson even if you know set aside what you think about like how Musk has been running Twitter just the fact that it you know this resource that we had has been closed off in a meaningful way.

01:14:22.27
Joe Tannenbaum
Yeah.

01:14:24.23
Chris Morrell
Um, and continues to get closed off in in different ways. Um, you know I think just like freaks me out because Twitter is like the 1 social network that I have stuck with and really enjoyed you know I've been really careful to carve out a space that feels good there.

01:14:36.65
Joe Tannenbaum
Same.

01:14:43.64
Chris Morrell
And um, you know in ah you do? yeah.

01:14:44.12
Joe Tannenbaum
But you do have to like be so careful because like I'm I'm so conscious about like what I'm interacting with and who I'm interacting with in terms of like not not like our our community generally but like anything outside because the algorithm will be like oh you like that here's a hundred more of those and I'm like.

01:14:58.79
Chris Morrell
Um, yeah, ah.

01:15:03.88
Joe Tannenbaum
I Really didn't mean to I Just like accidentally watch this video. Please do not serve as ah and it's it's it's It's a little panic inducing at time. But it's ah yeah, you have to be really hyper conscious about like exactly what you're doing on there. Yeah.

01:15:07.46
Chris Morrell
Ah, yes, yes.

01:15:13.73
Chris Morrell
You do? yeah and so I you know I really wish I wish that there was a strong community of Larel devs on something like mastodon because then we own you know, then we own our future right? Like um and.

01:15:23.50
Joe Tannenbaum
Um, yeah.

01:15:33.23
Chris Morrell
I Don't know there are there are lots of other upsides I think there are downsides. It's you know it's not as good as a centralized service in some ways especially around discoverability. Um I Think that's a piece that they need to figure out and um moderation is is tricky because it's basically down to The. Instance runners the instance moderators and um, yeah, there are there are definitely um, ah growing pains but you know ultimately I just I wish that the larall community could move to like an open source open system.

01:15:52.95
Joe Tannenbaum
Right.

01:16:10.53
Chris Morrell
Um, and I'm trying to be involved in that as best I can but it doesn't look you know to be quite honest, it doesn't look like it's going to happen. maybe maybe um maybe something will happen on Twitter that pushes more people over I have found that out outside of the laravell world like there.

01:16:18.19
Joe Tannenbaum
Um, yeah.

01:16:21.96
Joe Tannenbaum
You You never know.

01:16:29.85
Chris Morrell
There certainly was a time when you know I'd open Twitter and there'd be like 15 new posts and I opened mastodon there'd be like 150 new posts like outside of the like the Larelle Dev world um some of the other spaces that I like was interested in did move a little bit more full steam and like.

01:16:35.17
Joe Tannenbaum
You.

01:16:49.35
Chris Morrell
Have real. There are really thriving communities on mastodon that I I really appreciate. So I think is a great I think you can do it I think that the reality is yeah in the laraville space is like 5 or 6 prominent people basically crossposts to Twitter mastodon BlueSky threads

01:16:52.92
Joe Tannenbaum
Oh cool.

01:17:04.45
Joe Tannenbaum
Yeah.

01:17:08.11
Chris Morrell
And so it's like I don't need to see the same post in four different places. Um, but for other communities I think it's really great. So there's my pitch for mastodon by all means yeah and to to anyone out there I don't think I've talked about it on the podcast. Um Artisan Dot Dev R T S N Dot Dev um.

01:17:09.70
Joe Tannenbaum
Right? right? Yeah, okay.

01:17:24.40
Joe Tannenbaum
Right.

01:17:27.42
Chris Morrell
Is a small mastodon instance that I I run and um, it's It's just a handful of people right Now. It's it really is is mostly for interacting with the broader messed-on world like there's not a whole lot that happens on the like local instance. But um. If you go over there. There's a way to ah request and invites invite only and and I you know anyone who wants on as long as you can basically as long as you can prove that you're not going to be a total jerk like we'd love to have you there right? like? yeah, um, so.

01:17:55.80
Joe Tannenbaum
Yeah, yeah, you're in yeah great. Yeah I should I should get more active over there and diversify my my social networking.

01:18:02.55
Chris Morrell
By all means you should You should come on over and let's see if we can get a few other people. Yeah yeah I mean I think the other piece is there's even though it's smaller. It's still a big space and I think for folks who do want to gain exposure. There's a huge opportunity there.

01:18:20.52
Joe Tannenbaum
Yeah, yeah, yeah.

01:18:22.38
Chris Morrell
Um, that's not something That's as important first for some but um, for other folks who who really do get a lot of um you know freelance value out of exposure on social media like ah there have been a couple of big social media companies that have looked at that.

01:18:34.21
Joe Tannenbaum
Totally.

01:18:42.17
Chris Morrell
Like opportunity there and it's and it's real. You know it's like it's a much smaller pond but like you can be a much bigger fish really quickly if you if you do the work. Um, so that's I think that's interesting for some too and and there's maybe an opportunity there. So again rtsn dot Dev check it out I.

01:18:49.70
Joe Tannenbaum
Right.

01:18:56.29
Joe Tannenbaum
Um, cool, check it out. Pro promo is your podcast. Do it up.

01:19:01.54
Chris Morrell
I co-opted your promo spot to ah to pitch my own thing all right? Well thanks again for hanging out this has been really fun and I I can't wait to check out your lara cast course and I can't wait to see the video from ah India it's it's bound to be a fun time.

01:19:19.68
Joe Tannenbaum
Thanks man I Appreciate you having me on for sure.

01:19:21.43
Chris Morrell
And yeah, let's ah, let's let's do this again sometime.

Creators and Guests

Chris Morrell
Host
Chris Morrell
Father of two. Mostly talking about PHP/Laravel/React on Twitter. He/him.
Joe Tannenbaum
Guest
Joe Tannenbaum
Full stack developer focused on Laravel/Inertia.js/PHP/Vue/React
Building for the command line w/ Joe Tannenbaum
Broadcast by