If you're listening to this as a podcast, remember
that it was originally recorded as a video. If
you're not following along, you can go to my
YouTube channel. My username is Linkarzu. And
if you want to support me to keep this podcast
going, you can donate in Ko -fi. I'm going to
leave a link in the description. All right, so
let's get started with this chapter then. Hey
everyone, I have a special guest today, Josh
Medesky. A lot of you probably know him already.
Hi, Josh. How's it going? Hey, it's going well.
Thanks for having me. I watched your videos,
you know, you got me started with Yabai some
time ago. So I just wanted to have you over because
I've been wanting to try your CLI tool. I think
it is called Sesh, right? It's like a team session
manager, something like that, right? That's right.
Yep. A lot of people in the comments have told
me, have you tried Sesh? And I haven't. So that's
one of the reasons why you're here. And for everyone
else watching, just want to get to know Josh
a little bit more. So I have a series of questions
here that we'll be going over. I don't know.
Do you want to say something before we get started
with the questions, Josh? Sure. I guess general
background, I'm a full stack developer. Have
been for about a decade and mostly in the TypeScript
land by day, but do a lot of other languages
on the side. And I'm in Texas here in the U .S.
And yeah, that's a little bit about me outside
of YouTube. All right. Wonderful. Wonderful.
I'm in Guatemala, by the way. Nice. I'm more
like a site reliability engineer. unemployed
at the moment. I'm looking for a job. I don't
know what's going to happen. I don't know if
YouTube is going to work out or not, but we'll
see. We'll see. Yeah. Good luck either way. Yeah.
Yeah. So first I have here, well, let me just
start a timer. Um, we don't have to take 30 minutes
exactly. It's just so that we can keep track
of, um, of time. Just going to do this thing
here. Yeah. And, um, why did you start YouTube?
And when did you start? It's a question I have.
Yeah, good question. I think one of my first
videos was around maybe 2020. I'm trying to think
about three. I'd say about three years ago, I
really started making videos mostly on .files
and macOS and all similar to what you talk about
here and started doing interviews over that time.
Because I just wanted to talk to my friends about
this stuff. And I thought it was interesting
to record it and share it with others. And that
seems to be well received so far. And then, yeah,
like the TMUX stuff and some of the macOS stuff,
I just found that I was being extremely productive
after many years of iterating on setups and workflows
and ideas. And so I thought that it would be
useful to share that knowledge. Interesting.
And when you share this with your friends or
other people, you know, do they understand? Do
they feel the same way, excited like you or they
don't care? That's a great question. I think
the main reason maybe I tried the YouTube thing
is. Because most of the people I know don't really
care about this kind of stuff. It's a little
bit more nerdy than even some of my developer
friends. So I went out to look for a community
of like -minded people. And so far, it's going
well. I'm making lots of new friends that actually
care about Tmux session management strategies
and NeoVim plugin configurations and all the
kind of super, super nerdy stuff that I'm into.
Yeah, same thing happens here. I talk about this,
you know, to everyone. No one cares. Not my friends,
ex -co -workers. Everyone's like, okay, I don't
care. Yeah, so good. That's when you started
then. And let's move on to the next one that
I have here is your operating system of choice.
Which one is it? And why do you choose that operating
system? Yeah. So if you can tell from the little
traffic cones, well, you can't see my screen
yet, but I'm a Mac OS guy. And I think around
college, I switched to my, I bought my first
Mac, which I won't age myself, but it was quite
a while ago. So I've been here quite some time.
You're going to see my browser, which I think
we're going to talk about later. But yeah, so
Mac OS, it's been great, great to me. I have
an iPhone, an iPad, an Apple Watch. I tried the
Vision Pro for a couple of weeks before returning
it. So I'm a big Apple guy in general. I like
the ecosystem. And so far it works for me. Okay.
And what are your thoughts on the other two operating
systems? We're just going to talk about the most
known ones, which is Windows, of course, and
Linux. What are your thoughts? Why didn't you
switch to one of those? Or why haven't you switched
to one of those? Why are you still on macOS?
and um have you used them and what do you think
about them totally fair question so i have a
gaming pc on windows and i like to do stable
diffusion and a lot of those toolings tend to
really only work well on windows at least some
of the more specific open source projects and
so i dabble with windows to be honest though
i just use the mac os windows desktop you know,
streaming app. So usually I'm just using Windows
on my Mac as a virtual machine. Overall, I've
never been impressed by Windows productivity
apps. I think that they're really limiting. As
a good example, things like Raycast, the whole
concept of Raycast is like a productivity launcher
and tooling and things like that. I know that
the Raycast team recently mentioned they're importing
to Windows, but the idea of that doesn't translate
well. And I am a computer programmer, so being
a Unix -based system is just really great. It
makes everything a lot easier to grasp and to
understand when it comes to tooling and command
line stuff and all of that. And for Linux, I've
used Pop! OS for a while. I liked that one the
most, which is a branch off of Ubuntu from a
US -based computer company. What is their name?
System 76 are the ones that maintain that one.
And it's good. It's good. It's really good. I
personally am really, really married to the command
key. And so between Windows or Linux, everything's
kind of driven by the control key, which may
seem like a small thing, but at least for me,
it was enough to not be enticing enough to switch
full time. And I... can customize things and
again there's even a lot of good mac os apps
i've used over the years that there were never
any alternative options that were even close
to me regarding quality or features or whatever
and so i just keep keep sticking to mac os okay
but you're open to the other two operating systems
you mentioned that you use windows for gaming
right so it's not like you're windows No, I'm
not anti -Windows. I just don't find myself to
be very productive there. Yeah, makes sense.
Especially in the terminal. Like you said, I'm
used to Unix, you know, and when I switch to
a Windows machine and I open the terminal, man,
I just can't do anything. Just to list the contents
of a directory, typing the dir command. That's
right. I'm not used to it. All right. Yeah. Good.
Good, good. And which ID do you use? I think
we all know the answer to that. Yeah, so I'm
a NeoVim guy. I wouldn't consider it an IDE.
I'd call it a text editor with some fancy features
plugged into it. I've been a Vim user for, I
would say, maybe eight or nine years. First,
I started in VS Code. Well, if we go back really,
really far, you know things like dream weaver
from adobe was probably my first editor and then
adam was a really popular one a few years back
and brackets made an appearance for a little
while and then you know vs code became a standard
for most people i actually had a stint for i
would say almost two years i was in space max
which is an interesting emacs distro that is
vim heavy very vim minded And that was a cool
experience. I like SpaceMax still. And then I'd
say about five years ago or so, I was like, I
quit all of those. And I just went into the terminal
full time. And I went into NeoVim full time.
And I haven't looked back ever since. And do
you remember how you felt the first time that
you opened Vim? Well, not only the first time,
the first few times that you opened Vim. And
you needed to do something like edit a file.
Remember? How was the experience? Can I think
back that far? I remember being very curious
where I was like, ooh, this is interesting. What
is this thing called modals, right? I think all
of us, the very first time we get into Vim is
by accident. And so at that point, it's like,
I don't even know what editor I'm in. What is
this? You know, it's like, I don't even know
what is Vim. So that was probably my first experience,
which we all joke that. exiting vim is like one
of the hardest things on earth to do if you don't
know how to do it so there's definitely frustration
if you kind of blindly end up inside it but at
the beginning it was interesting it was very
slow very strange to wrap my head around but
pretty quickly you can grasp the basic concepts
and you get used to hitting the escape key a
lot right yeah and did you stick to vim first
time or You stopped, you said, because I remember
what happened to me. I tried it the first time
and it was like, I don't know what this is. I
just, I was following a tutorial, I think, and
a Linux tutorial. And the guy just made me open
Vim and edit. I think it was like, I don't remember
what file. Some .file or something, yeah. Yeah,
some network file, some config file related to
that. To set up a static IP, I think it was,
right? I was like, what the hell is this? Why
do people use this? Yeah, like it doesn't make
any sense, right? That's what I thought, you
know, so did you? Yeah, I feel your pain. I think
it may be on accident. I had opened it a few
times, but because I've been so curious about
it for most of my development career, I found
it really lackluster at the beginning because
the Vim editor itself, you had older tools like,
boy, am I going to remember these. There were
tools for formatting and for code completion
and things like that. And they were okay. But
I ultimately found for the longest time that
using Vim bindings in other editors, like I even
used WebStorm for a little while. So WebStorm
and VS Code and Atom and Brackets and all of
the editors I've used over the years all had
Vim motions. So that was where I started. And
that's where I recommend most beginners. that
want to know about vim i tell them go install
the vim emulator on your editor get used to the
modes and the bindings and then if you feel comfortable
and you have the time and energy to commit to
understanding and grasping all the terminal related
stuff you know then switch over is my sort of
philosophy to most people yeah Great. Thank you
for sharing that. And what about your window
manager? What are you using these days? I got
started in Dubai because of one of your videos.
So what are you up to? People are asking me that
a lot lately, and I haven't been able to land
on a solid answer. So there's a new tool called
Aerospace that's become really popular, and it's
an i3 -like tiling manager. It is in beta, and
I found that it has some memory leaks. And so
it's kind of like Yubai without having to assign,
you know, disable system integrity, which is
one reason that I recently thought, you know
what, maybe I don't need Yubai. Maybe there's
a better solution. So I use this for a little
while. I ultimately am not using it. And so my
current approach is something built into macOS
called Stage Manager. And so stage manager just
puts windows in this little tray on the side.
And similar to my blazing fast window manager
video, there was a tool called space launcher
that I talked about. I now do something slightly
different, which is I have the option key bound
to somewhat semantic letters. So like option
W is for web. So I can go to web, option A for
my editor. It used to be Alacrity, but the binding
has stuck. And so I have WASD, right? S would
be second brain. And you'll notice that they
sort of just fill in the space available. And
so the way that Stage Manager works is it takes
this window and it will basically swap it out
for another. And so you'll see that. And so I
just hit that button and it binds it. And if
I was to say, hey, I want my note taker here,
I can use a couple bindings and I can have two
screens at once. I don't do this very much, so
I haven't even gone through the trouble of making
it. And you can just sort of drag this guy back
over to get it back. So unfortunately, all the
mouse people are going to freak out, right? The
no mouse people. Um, but I find that because
the majority of my day is all full screen windows,
um, that it's fine if I have to grab the mouse
and drag a window over for, let's say a meeting
and I need zoom and my note taking app on the
same screen. I see. Um, but I found aerospace
to be a little bit too much cause I didn't like,
I don't really like the auto tiling anymore.
Yeah. I just prefer, give me full screen width.
yeah keep it simple and you'll notice my menu
bar is hidden my dock is hidden um you know where's
the dock i think the dock usually lives over
here interesting oh it's not even here because
this is a secondary screen but yeah so i don't
use the dock i don't use the menu bar i just
like a minimalist full screen app on the screen
yeah that's what i do as well i just keep an
application on the screen at the at a time well
One application and the skitty notes thingy that
you see on the right, which is my notes. Yeah.
But I just got used to it and I feel that I get
distracted way less. Yeah. Yeah. And let's see.
What else do we have here? Oh, your terminal.
What were you using? I didn't notice what terminal
you were using and why did you choose that one?
Yeah. So I'm using Westerm. I know you've spoken
a lot about Wes' term. And, you know, I really
like the background image. This background image
that we see on my terminal right now is something
that I can change. So if I hit Command -R, this
is a mid -journey photo I generated. This is
Severance, any Severance fans. And Outer Wilds,
a video game I played. So I like personally to
collect. And because I do the full screen thing,
right, it's like when I'm full screen on these
windows, you can't see the wallpaper. And so
for me, I'm in the terminal so much that I prefer
this style. Here's a nice one I found from online.
And so it's just a collection. Here's a new game
coming up. So I have things that I anticipate.
And Minecraft, you know, is always fun. And so
it's just a really simple way to. control that.
And I like the Lua programming language. And
so all of this is driven by Lua. And I have high
performance setup and max FPS. And so it's very
buttery smooth. Yeah, I even have the ability
to like switch between fonts. So if I wanted
to do that, I could. And then this get wallpaper
is just, you know, wallpaper. It's just a quick
little Lua thing combined with Westerm. So I
get to do cool programmatic stuff. I've talked
about it in depth in my channel as well. I like
to use keyboard bindings that are Mac OS style
for my editor. So if I hit Command T, it creates
a new TMUX window. If I hit Command W, it closes
a TMUX pane. If I hit Command K, I get my sesh
switcher so I can switch between projects with
Command K. If there's more than one thing open,
I can do command shift bracket. For those that
don't know, you can move between tabs. So I have
all that bound using a couple of combined functions.
And even command S works. Command S can save.
So yeah. That seems pretty useful. And how do
you feel when using a terminal without a desktop
background? A lot of people tell me that, like,
how can you use a terminal? and see that picture
in the background a lot of people in the comments
and reddit and basically everywhere sure tell
me the same thing how do you feel when using
a terminal without a desktop background how do
i feel i mean because i've ingrained it in west
term i like just it's just visually pleasing
but having just a blank screen to me is just
boring i'm just a visually oriented person And
I'm sure we could just disable this, right? And
it would just go away. So, okay, it's black.
Like, whatever. But so it's not, it's just to
my own benefit that I can see something pleasant.
Yeah, I got used to it as well. And in my work
computer, I couldn't disable zip. So I was using
Yabai, but I couldn't set the transparency. So
I had to use the terminal, you know, with the
solid. color i just didn't like it i felt something
was missing i cannot explain it i got used to
it i think yeah i mean it's the same i mean i
don't what i've learned recently is i really
don't like having a desktop wallpaper so if you
have a macbook pro or a similar kind of computer
you'll notice there's a black notch sitting at
the top of your screen right it's like this like
thing that sticks out and if you set your desktop
to black it just goes away yeah and if you're
on a if i'm on a studio display so when there's
a little bit of spacing between my windows it's
just invisible you can't even notice that that
space is there so everything just sort of floats
and then when i'm editing you know when i'm editing
that the wallpapers are used on the terminal
emulator itself yeah interesting great idea okay
and um to navigate between your projects how
do you how do you do it you use tmux if you Don't
like Tmux? Do you love Tmux? Are you on the love
or hate Tmux side of the house? I've invested
part of my career on Tmux. So most people that
are beyond the macOS stuff will know me for Tmux.
I've actually authored, how many, at least three
or four Tmux plugins, all of which have hundreds
of stars. I think we're almost at a thousand
on Sesh. So slowly starting to build my open
source. um, you know, career, you could call
it on, uh, on Tmux. And so, yeah, I have a really
popular video talking about how I do smart Tmux
session management with Zoxide and FZF, you know,
and, uh, I ended up porting that over to Golang
using some, uh, a few popular Go libraries and
some CLI, uh, integrations. And I was able to
build Sesh. which is basically a robust version
of that Zoxide FCF tool that I had originally
authored a few years ago. And it's going well.
I've been adding features and I've been fixing
TMUX problems. And if anyone was noticing, one
of the ones I maintain is a fork, but I can open
URLs with a key binding. I swap out all my TMUX
window names for emojis, basically, or nerd font
icons. So I get a really minimalist look there.
And so, yeah, I'm a huge, huge T -Mex person.
Wonderful. All right. And right. Let's move on
to something else then. On all the topics, I
don't have them organized in a good way here.
I just slapped them there and I don't think they
make any sense, but we're just jumping between
stuff. We could talk keyboards, I think is next
on the list. Yeah. Yeah. If you want to share
my screen, you can see these are the boards I
use day to day. So I'm a long ZSA user. I use
the ErgoDox for the longest time. So this was
my main board for many, many years. And then
they came out with another board, the Moonlander.
I think it was like four or five years ago now.
I've been using this mostly full time. When I'm
on the road, I like using the Nufi Air. And I
bought myself a little Lego keyboard recently.
So this is made out of Lego bricks. It's kind
of fun to play with. And this is another one
I bought for myself a while back. It's a nice
little 80 % board. So I'll swap between boards
when I'm in the mood. But I would say probably
80 % of the time I'm on my Moonlander. Okay.
And why did you switch or why did you try a split
keyboard? Was there like a... specific reason?
Did you have sort of pain or something? Yeah,
definitely. I didn't have carpal tunnel or any
major injury yet, but I would say most of my
hobbies also included a lot of hand coordination
and dexterity. And so things like video games
and stuff like that. And so combining all that
in my probably mid -20s, I was like, hey, I need
to sustain my hands. I need to not, you know,
end up. you know, crippled because I spent too
much time doing this stuff. So yeah, it was mostly
just an intentional choice on better ergonomics.
And I had other boards that I don't have any
photos, but like the Microsoft sculpt was the
first thing I went out and bought when I was
starting to feel wrist pain with the default.
Mac OS keyboard is really small and the travel
is really short. So you kind of, your wrists
are cramped and you end up, I can type really
fast on that one, but that wasn't necessarily
a benefit to my ergonomics. So, yeah. Yeah, it
seems that exactly the same thing happened to
me. I can type, well, I could type really fast
on the Mac OS Magic Keyboard. You know, I love
it. I love the way it feels, right? Because it's
so... soft so smooth so i i do like the the way
that it feels but i started experiencing forearm
pain and it was a lot of pain so yeah i had to
make a choice that's right and what board are
you on now oh this is the glove 80 yeah this
is the one that i decided to go with um yeah
i wasn't sure if going with this one or the one
that the primogen uses which is what is it called
the kinesis advantage yeah That's a good board
too. I'm a nerd. I know about all the boards.
I don't have unlimited budget. Otherwise, I'd
probably just keep buying boards. And I think
it'd be fun to build my own one day. And so I
have some ideas. I have some prototypes and some
sketches about ways I might be able to design
my own mechanical keyboard. But that'll be a
whole new hobby to enter. And I'm not quite prepared
for that. There's a guy in Discord that created
his own prototype. I don't know how many keys
it has. But he has a YouTube channel. He has
a lot of subscribers. And he created his own.
And it's pretty good, you know. Great. Yeah,
I have a lot of people in my community where
we talk a lot about keyboards. There's a lot
of them that are way more hardcore than me. And
I want to make a point, I guess, before we move
on. And that is for this, you know, there's a
thumb cluster. It's really easy to say I'm going
to make up some really, really specific and custom
feature or I'm going to leverage like there's
a lot of cool features like auto shift where
you can hold a key on these keyboards and it'll
automatically shift the letter and stuff like
that. I have mostly moved away from that and
I have done my best to make all of my boards
fairly simple. You know, the command key is mostly
in the same place. For me, it's here where you'd
expect the command key and alt and control. And
I have to move a few things around on this board
in particular because its layout is kind of weird.
But when I switch keyboards, it feels familiar.
So I'm not leaning into like, let me do something
really, really crazy with this board and override
everything with carabiner elements or with...
you know qmk you know yeah yeah yeah and every
keyboard yeah so i've kept it really simple um
over the years i tried really complicated things
and i i found that if i wanted to buy a new keyboard
or plug a new keyboard in either my carabiner
elements type thing would get really complicated
really fast or there were features that just
weren't available and so it's like okay then
i'm just gonna keep it simple yeah easy i i have
a similar approach everyone tells me Why don't
I use layers? Because this keyboard is designed
for that, right? So use layers and get stuff
really complex. I don't want to. Why? Because
I switched to the laptop computer and there is
a regular keyboard. I want to be as fast there
as I'm on this other keyboard. So I keep it simple
as well. Even the numbers, I have the numbers
here where they belong. I type the numbers at
the top. Yeah, I don't have like a layer for
numbers and symbols. Everything is just the default.
Yeah, I think it works for me to keep it simple.
Yeah, yeah, that's true. And let's see. Okay,
let's move on to the next topic then. Let me
just switch to the other screen. How do you use
AI? What do you think about AI? Well, I don't
want to go too in depth here, but how do you
use it? Yeah, so. I can point people to, you
know, I did a NeoVim and AI talk last year at
NeoVimConf. And so I spoke a lot about all the
options that were available at that time. So
I currently use Avante a lot, which is like a
cursor style NeoVim plugin, Avante. And this
is the tool that lets me, you know, use language
models in my code editing. And I use Copilot
for completion. And so I use those a lot. And
I actually am a Raycast member. So I also use,
you know, Raycast Pro, which gives me access
to all these models. So if I'm, I don't know
if I'm moderating, not moderating, if I'm editing
a document or I'm asking for a question or I'm
brainstorming ideas, I use AI pretty much all
day, every day. Yeah, me too. And this Avante,
is it like a plugin that you run inside NeoVim
or is it like it's... That's right. It's just
a plugin for NeoVim. And because I'm a Copilot
owner, because I have a Copilot subscription,
Copilot is my provider for that tool. Interesting.
And so I'm just, I'm not paying, you know, I'm
not paying for Cloud API usage or OpenAI, you
know, custom API key usage. I just, I'm giving
GitHub Copilot, you know, a fee every, I think
it's a yearly thing and it just works for me.
And I think under the hood, Copilot's currently
using chat GPT 4 .0 maybe as its default model.
And so it's been working well. And I have lots
of others. We can go into it a whole bunch, but
like there's an app called Kot, Kot PS that lets
you basically put autocomplete in anywhere in
your computer. This one's great. This one's really,
really great. And it saves me, it tells me how
many words I save. I've saved 16 words today.
So most of it's just common sense things, like
I'm writing a sentence and it's like, hey, I
think I know at the end of this sentence. Yeah.
It's like, yep, yep, that's pretty good. It does
it on Obsidian as well. So it's just a helpful
little tool for me. That seems pretty useful,
actually. But not in NeoVim, right? Not in NeoVim,
because I have Copilot and all those things.
Okay. Interesting. And I also recently set up
an O -Lama tool that lets me ask for prompts
and get the output via a language model. In this
case, I just use a local language model. So I
can say, say hi to link, right? And I just hit
a binding in the language model. Oh, that's funny,
redacted. So it's not perfect, but I've been
playing around with that. And I've been experimenting
with a tool for, let's see, let's just copy that,
called Lumen, which is funny because I was just
talking about, it's a reference to a severance
that show that's out right now. I can pass Lumen,
it reads the staging elements and it spits out
a git commit message for me. So this one's been
kind of fun to experiment with. I'm always on
the lookout for interesting use cases for language
models. Okay. This isn't integrated into my workflow
yet, but it's a fun teaser of like, hey, there
are lots of clever uses for language models that
people are coming up with. Interesting. And how
do you keep history of them in Raycast Pro? Can
you keep history of your conversations? Or is
it just like a temporary sort of thing? It's
all sorts of things. It kind of varies a whole
lot. You can search those things and go back
to them. You can now speak to things like Apple
Notes, browser, clipboard history. So you can
dump a lot of data into this and get feedback
out. You can drop files in here. You can generate
images here. So there's a whole lot of powerful
features there that I enjoy using. As I went
back to the regular chat GPT copy pasting, but
I think this I didn't know that you could keep
history of conversation. So it's basically like
a chat GPT interface, but you can use different
models, right? Yep. And it's always available.
So it's just one hotkey away. Interesting. And
funny enough, I actually do this. I'll show you
one more thing and we can go. I can say who is
Link R Zoo YouTuber. And if I hit tab. I use
this way more than I actually search things on
the web. So I see you're on TikTok too. That's
cool. Tech related tutorials and content. Oh,
interesting. About these tools. And so it uses,
you know, it uses web searching combined with
LLMs to give me. Oh, I see. Results. It seems
pretty interesting. Yeah, it's so helpful. So
yeah, I could talk about AI all day. Even my
search engine is AI driven. And so, yeah, I use
it for everything all the time now. Okay, wonderful.
Thanks for sharing all that. And what projects
are you currently working on? We've been at 32
minutes right now. Yeah, you know, I work on
Sesh. I'm continuing to add features to it on
the side. My day job, I work at a company that
focuses on utility management. And so I build
a lot of products for them. I looked up my get
stats and I wrote something like 70 ,000 lines
of code last year. So really productive. I think
I was at like 5 ,000 commits or something. So,
you know, ripping solutions on the day job. So
I don't necessarily constantly drive myself to
do more, you know, at night. But SESH is important
to me. I do a little bit of game development
right now. I've been learning more about 3D modeling.
So, you know, just tinkering, learning some new
things where I can and spending time on my open
source projects when it seems important to add
to or improve on those systems. Interesting.
Let's just quickly go over the next one. Just
name them, your three favorite CLI tools. You
don't have to go in deep. Just name them basically.
FCF for sure. FCF is probably the top of the
list. I'm going to say Sesh because it's technically
a CLI tool and it's mine. So I'm going to say
Sesh. And then I'll also say, I think I'll say
Lazy Git. Lazy Git. It's not perfect, but it's
been really reliable for me for many years. So
it's one I use every day. Wonderful. And your
macOS apps? An Arc user for the web browser.
It's my favorite because it's just so good. And
I haven't found a good alternative yet, although
we're all looking, I think. So Arc, at this point,
Arc. Raycast, for sure. Raycast is probably the
thing that makes me the most productive, aside
from Sesh. And then the third, I'm going to call.
I did call out Copiest. Hmm. I'm going to call
out Tailscale. I don't know if you know what
Tailscale is, but it's a way to create a virtual
private network. Yeah, I did. I was trying to
do a Rust server for gaming. I tried to use Tailscale,
didn't work, moved on to something else. But
yeah, I've heard of it. So I have some Homelab
stuff. And there are moments where it would be
really nice to connect to those things outside
of my network. And so Tailscale, I just recently
set up and it was really easy. So like Home Assistant
is my smart home manager. And now without any
crazy certificates or port forwarding or anything
wild, I can just connect to Tailscale and pull
up the Home Assistant app on my phone from anywhere
and it just works. It just connects. So super
nice. Wonderful. All right. And where can people
find you? Let me share your screen so you can
show where people can find you. Yeah, so head
to joshmadesky .com. You'll see I'm on YouTube.
I have a Discord server. And you follow me on,
you know, I'm on all the social medias. So X.
I'm on Blue Sky now. Maybe I could add that to
my website. But if you just want to see my posts
and videos, you can go through here. Here's the
last one that I did. And I think I talked about
my AI talk. So you'll find that toward the top
of my website. But the Discord server is where
we spend a lot of time talking about this stuff.
So that's where I tend to tell people to go and
have more conversations with me. Yeah, we share
a lot of users. I'm pretty sure a lot of the
subscribers that I have are already subscribed
to your channel. Yeah, like -minded people for
sure. And of course, I do recommend if you would
follow me on YouTube. I'm getting there. I haven't
been growing too quickly. Slow and steady, you
know? Yeah. Great. Wonderful. All right. So let's
move on to the next section there of the, what
is this? Is it an interview? What is it? I don't
know. It's just something. A lesson maybe? Yeah.
Yeah. Sesh is the next topic then. So I want
to try it out. I want to install it and I want
to see how I can use it and how I can adapt it.
adapted to my workflow so yeah so we'll talk
about it yeah this is i had a similar conversation
with you uh recently where we went over all of
your stuff yep so i'll mention that now that'll
be coming out on my youtube channel maybe at
the same time this one comes out um but yeah
we talked a lot about sesh uh and tmux you know
session managed strategies right this is really
nerdy stuff i think most people come up with
like hey i want to work session and I want a
personal session and I want to, I don't know,
maybe there's like a SSH. I need to connect to
something and you create a separate session for
that. And I found that that didn't work very
well for me. I really like this idea of how about
I just type what I want and it will create a
session for me on my behalf. And generally I
think of a session as a place on my computer.
So it could be a project, it could be a dot file.
More specifically, it could be an area of a project.
So I really start to focus it down. And it's
just built up by an FCF picker and a tool called
Zoxide, which is able to track recency and frequency.
And so you get a score. Frecency is what they
call it, but someone told me that is not even
a word. Someone got upset. It's a made -up word.
So, frecency is cool. And so, you'll see I have
some custom configurations, which we'll talk
about these cogs. But then we have all of these
and all of these little windows here. These are
all just places on my computer that I use. I've
been experimenting with the way to talk about
Sesh more, but basically I don't use the CD command.
If I want to CD into something, I'm going to
use this instead. So my entry point is a Sesh
start script, which lists these out as icons.
And then I have a few bindings that I can use.
I have a preview window. So Sesh has preview
support. And yeah, so this is my entry point.
I just hit S and a fish abbreviation will dump
out sesh start. And let's just go to like NeoVim
config. And so NeoVim config, you'll see it automatically
opens up my file picker, which is telescope.
And Avante happens to be the file that we looked
at a few minutes ago. And so it sorts everything
that you see here. It's sorted by most recently
opened. And so that makes it really simple that
I just said, oh, yeah, I want to go to Avanti.
I hit enter. Right. And then I can repeat the
process. So if I want to go to my dot files,
I can do that. If I want to go to Sesh, you know,
the source code, you'll see that the default
is to always show my session picker. And the
way that that works is that you have a configuration
file that can set up that behavior. So I have
this startup command for every session. That
automatically opens nvim, and then this is a
command called gotofile that opens up my telescope
picker. There's this ignore dirs is interesting.
You can have this be ignored. And a preview command
is the default. So how do we show it? And you'll
see here that if we go down and look at some
of these, it just lists out. the files, you know,
because this isn't a session yet. It's just a
preview of a session that could be. And then
you're able to generate your own configurations.
So I like to talk about the tmux config is a
good example. Can we see this? All right. Yeah.
So you name it, you give it a path, you give
it a startup command, and you give it a preview
if you want. And so any of these you don't define
work as a fallback, but basically a session is
a place on your computer and then you can name
the session. So if I say Teamworks config, we're
going to see a preview of that file. And when
I choose that session, it's going to automatically
open up that file because that's what the command
was. And so really great. I have another version
of this that I like to use. I haven't talked
about it much. This idea that I want to look
at. a set of, in this case, lazy .envim plugins,
right? They live in this place on my computer.
And I have this sort of proxy command, which
will connect to the one I select, but it will
first list all of the plugins and preview their
readme files. So if I go to lazy plugins, we'll
see that I get an additional screen that shows
me previews. And if I want to go to like Avante,
And I hit enter, it now generates an Avante Tmux
session. A session, okay, a Tmux session, okay.
And then I can do the source code things. I can
edit stuff in LazyGit and whatever I want to
do. And then you'll also notice that the lazy
plugin picker, it like goes away on its own.
I call it a proxy session, which is a clever
idea. I can do the same for Tmux plugins. I can
say I want to look at my nerd font window name,
which is the one I mentioned earlier that it
swaps out my Tmux windows for emojis or nerd
font symbols. And so, yeah. It looks pretty cool.
It looks pretty nice, your font. And the style,
everything in the terminal looks quite nice.
And I might want to look at my CPU usage, right?
So I could have a session for that that runs
Mac top, which is just the current one that I'm
using. And if I wanted to, you know, leave that
one and, but leave it open, you know, it'll run.
It's, you know, this, I think this is wattage.
So electrical usage or whatever. You can track
things over time. Have you tried B top? Yeah,
I use B top too. One of the tops is here. The
Mac top is just the one I like right now. Okay.
And so you can imagine it could be anything,
right? Yeah. Like when I SSH into my Steam Deck,
then I can do this, and I don't know if it's
going to work. Yeah, so it's not enabled right
now, but if it was, then I'd have a session for
an SSH session. Okay. So, yeah, lots of great
ideas here. For me, it's all the stuff that I
do the most, like... specific dot file things
like fish config ghosty config i was using ghosty
for a while if i want to go to my downloads right
then it's going to open up this tool which is
called yazi and i can just immediately start
exploring the files um so yeah sesh has been
really really great and how do you bring sesh
up um do you have like a key map that you can
use to bring it up Yeah, Command -K. I think
we talked about it earlier, but Command -K is
like an action key binding. Command -K works
well in Discord too, right? If you're used to
switching between things in Discord. So the muscle
memory is the same everywhere. Interesting. And
that's something I like a lot about. I do see
the benefit. Because if I want to go to my downloads
directory, for example, I just go to Finder.
I don't go in the terminal. Just go in Finder.
But doing this, I think it would make a lot of
sense for me to go to a directory faster, even
faster than doing it with Finder. So do you mind
just... I don't know if it's going to work out
on my setup on my computer or not, because I
have a lot of custom stuff. But would you like
to give it a try and see if I can install it
and make it work? It should work. Yeah, it takes
just a few minutes to set up. Yeah. Anything
else you want to show before we move to my screen?
What I will say is there's a lot of features
that I haven't shown off. So like SESH main,
I have command shift K set up so that if I want
to. look at the current, actually, let's go back
a step. I can kill Tmux pretty easily. So now
nothing's running and I can restart. And if I
wanted to say, let's open up sesh main, you'll
see that the session is called sesh slash main.
And that's because sesh is really smart at determining
what the configuration should be. So as an example
of dot files, You know, there's lots of folders
in my .files repo, right? tmux, sesh, westerm.
Let's go to the westerm one. If I was to choose
this as a session, it will take the git path
and it will create a path that's valid based
off of the git repo. So .files is the repo, config
is the folder, and then westerm is the subfolder,
right? And so sesh is really good at doing that.
So if I want to do different things in, Let's
try that again, Fish. If I wanted to have multiple
different sessions open at the same time under
the same repo, it's a little bit easier for me
to grasp and to get around. And it's cheap, right?
So I can just say, okay, I don't need that anymore.
And I have a binding that lets me kill sessions.
Okay. Or I can just close the final window and
I have a setting enabled that says, tells Tmux
don't detach, just, you know, attach to another
session. If there's more than one left. And so
that's been such a huge thing for me to be able
to like, say, I want to be in the Zoxide and
I want to list something. And then in the CLI,
I want to list something as well. Now I have
two different sessions, the CLI session and the
Zoxide CLI session. And I can a little bit more
structured and easy. easily like work my way
around my file system without attempting to go
through like i don't know it could be like five
or ten neovin buffers yeah and so it's a different
flavor but i have found that i don't have to
think about it very much when i could just get
to what i want very quickly yeah i i like that
i like that how do you let's say that i record
a video right and um i need to move in from where
it's going to be in the directory that it's going
to be to a different directory do you do that
in the terminal or you use finder um it depends
i think i use finder plenty for just drag and
drop and i have a lot of things in my sidebar
in finder that just are quick places for me to
drop things okay okay so this is more for config
files and code right config files and code yeah
okay wonderful all right let's give it a try
then i'm ready i'm gonna switch to my screen
I'm ready when you're ready for the installation
then. Yeah, so you have brew. So all you have
to do is say brew install sesh. Oh, just like
that? Yep. And let me quit out of here. Brew
install sesh. That's it. So if you don't already
have Zoxide or Tmux, it will also install those
just because they're dependencies on the project.
Oh, interesting. Okay. I think I have both. I'm
not sure. Yeah. Well, you have T -Max for sure.
Yeah. And so now it's just a level of how do
you want to configure it? So if you want to do
sesh list. Space like this? Yep. It's just a
command. Yep. That's your basics. So the top
elements, the first two are going to be those
sessions. If you want to repeat the command and
do dash I. uh specialist dash i you get icons
so the first two are your team accessions and
all the ones below are yours oxide results and
where did this where did it get the icons from
from the this is nerd font yeah it's a nerd font
go get access just knows like hey these are what
the sources are okay right and so interesting
do you use raycast yep i do use raycast so there
is if you go to pop -up raycast let me bring
it over to this screen sure and just search store
okay in the settings right no just right here
store okay and go to that and then just type
sesh so it's kind of fun you can use sesh as
well in raycast so if you want to do this somehow
globally you can But this is on offer if you
want to install this. Oh, okay. So it already
installed it, right? So I bring it up. I didn't
show it up, but yep, connect. So if you hit enter,
it's probably going to ask you what your terminal
emulator is. So you have to select it for the
first time. Okay. You can type it out. Go see.
Okay. Continue. All right. And so there you go.
So this also works out of the box without any
really crazy configurations. You can switch.
So you can type like .files, hit enter. .files
latest, this one. Sure. I just hit enter there
and it's going to create a session? It'll create
a session. Okay. Okay. I already had a session,
I think. But yours was J. So if you go back to
Raycast and look at the pop -up. I see. I see.
So you could set up that to a key binding if
you wanted. But what I'd recommend is this switcher
that you have right now, you can swap out for
the configuration from the Sesh Readme has a
good example. Okay. So if you want to copy that
and bring it in, you can. Let me go there. I
think in the near future, we're going to have
some sort of playground where we can show off
people's different... ways of configuring, but
I have some reasonable defaults here with FCF.
Okay. So Brew's installed, Sesh is installed.
If you scroll down, you'll see some basic usage.
So that would be your most basic usage. You see
that example there, you want to Sesh connect.
But before you Sesh connect, you want to list
and FCF that list so that you can choose from
it. So if you want, you can try that. This is
your sort of entry point into Yeah, there you
go. Okay, this, okay. So now you would just type
what you want to type and it would, when you
hit enter, it's going to connect to that session.
Okay, let's see if I go to this. It creates a
session. Okay, great. I don't have to keep track
of all the different directories that I want
to create sessions for. What does it search like?
If I run this, what is it going, like, is it
going to start at the root directory and I can
type basically anything? So it will only list
Zoxide results. Oh. So whatever you put in Zoxide,
it shows. And it does a little bit of human readable
things. So if you hit enter on this command,
it takes everything from your home directory
and it substituted for that curly brace so that
you know, okay, this is home directory stuff.
It makes it easy to read. But yeah, anything
that you've ever, if you know how Zoxide works,
anytime you cd into a directory, Zoxide will
add that entry or increase its score. So if there's
something that's not showing up in this list
and you want it, you just Zoxide add and you
add the thing. And then it shows that. And every
time you ever select this option, so if you were
to choose OBS script again, Zoxide will automatically
increase the score. Okay. So as you use Sesh,
yeah, it still knows where it's located and it
still increases the Zoxide score. Okay. And it
just switches to that session if everything exists?
It switches if it's already there. Yep. Okay.
Interesting. So it creates sessions or it switches
to sessions. Okay. What should I do next then?
What did you say that there was in the readme?
Yeah, so this is the next one. You can combine
TMUX and FCF. If you want, you can copy this
whole thing. Okay. And this will be bound to
capital T. Capital T, okay. Just go to my TMUX
config file. And then edit your TMUX config file.
Okay, here is the file. And you'll just have
to put this somewhere. If you have other bindings,
you could put them near there. let me see if
i have i don't think i have capital t i don't
think i'm using capital t it's not a reserved
one so it shouldn't unless you've explicitly
set that before yeah and so you can see a little
bit more going on here so we're listing with
icons the pop -up is 70 80 by 70 percent we disable
the sorting from fcf because we don't want fcf
to sort we want to use sessions sorted output,
you know, directly. ANSI is something I use to
prevent, to do color. So that may or may not
be helpful to you. And then the rest of it is
just helpful bindings. So you can play around
with those if you want. Okay. The preview window
as well has been set up. And so this should just
work. It should just, you know, you have to restart
your Tmux config. Let me just reload it. Yep.
Yeah, you can source it and then. And then give
it a prefix capital T. Okay. And so now you can
switch between your projects with that binding.
Or you can set up your own binding. Or in my
case, I bound my Mac OS binding to interpret
prefix capital T. So I hit command K and it does
the same thing. Interesting. So these are sessions.
I know that these are existing sessions because
of the icon, right? Yep. okay so that's what
tells you okay these are existing sessions how
can i kill one of these from here control d is
the binding i have set up control d let me see
if i try to kill this one control d okay nice
and if you want to list only the team accessions
you can do control t control t oh if you want
to do only these oxide results it's control x
control x okay And then back to all is control
A. Control A. And I don't use these very much.
I tend to just use this window as you see it.
But there's an interesting option for people
that want to explore their, you know, what's
available to them a little bit more. Okay. Okay.
Let's say that I want to create a session for,
where can I go? That is not dangerous. Let me
go to the. the scene switcher again you'll notice
all you had to type was sc and it it matched
within two letters that matched to the thing
that you most recently used right okay nice so
it makes it so that you don't have to type very
much to get where you want to very quickly interesting
that seems really useful because the way that
i do it right now as of today is i need to have
some pre -configured paths right so if i type
right hyper tn i think it is but but these i
have to specifically configure these paths right
so it's not as as efficient you know because
i want to go somewhere to some other directories
you know different times not only to these so
well and i'll show you the power of this tooling
is the the custom configs So you'll need to go
to your .config folder. Okay, let me go there.
Okay. And then you'll just, you'll probably end
up symbolically linking this so that it's in
your .files, but for the sake of today, just
make a directory called sesh. Okay. Sesh, just
like this, right? Mm -hmm. Okay. And then, yeah.
Yeah, you can switch to it now that it's there.
Yep, and now you could do, I'll show you a new
one, do sesh connect, and then there's an argument
for a period. Are you familiar with this in the
command line? So space and then period. Just
period? Yeah, so that is representing the current
directory. Oh, this directory. Okay, yep. And
so if you hit enter, it'll create a session based
off of the folder that you're in. And look at
that. Oh. So that's another helpful. you know,
feature of Sesh. I can keep that as a session
there and go back to it when I want it, right?
And I can just bring Sesh. You said it's, this
is not working for me. Well, this is not Sesh.
This is the Tmux. Do you know how to map this
in Ghosty? Because you mentioned that you use
control K, right? Have you used Ghosty? Yeah,
I can give you some tips on how to do it in Ghosty.
I want to try and see if command. K works. That's
the one that you used. You mentioned, right?
Command K. Yep. Let's see if we can make it work.
Yeah. So you can add a new key bind. Yeah. Add
a new key bind. I don't think I have any. There
you go. You got one. It'll equal super. Yep.
So it'll be super plus K. Okay. And it'll enter
text. So T -E -X -T colon. And then we're just
going to dump a hex code. Okay. So what is your
prefix bound to? It's the default one. Okay,
great. Control B. So swap the period out for
a colon. Kind of like you see how inspector.
There you go. Not semicolon, but colon. And then
you'll do backslash. That's forward slash. So
try the other one. There you go. And then X02
is a hex code for 02, sorry. That's the hex code
for prefix B. And then you'll do forward slash
again, or backslash, sorry, for X4C is the one
you want. So give that a save and give command
K a try. Okay, I already saved. I don't know
if I need to restart ghosting. Let's see. I don't
know. No, command K, it's not working. No. I
don't know if my prefix, hold on. Oh, it's try
B, not C. My bad. X4, B. B, okay. Yeah. Let's
see. I think ghosty does have to reload its config.
I don't know how to reload. Super R? No, but
I think I have a different prefix. Hold on. If
your prefix is different, it won't work. Yeah,
you have to bind it to the prefix. No. Control
B. Control B. Yep. Did I mistype something maybe?
X02, X4, B. Let me quit out of ghosty and try
it again, okay? Just to make sure. So, command
K. Do I have it mapped already? Okay, what do
I have on command K? I don't remember if I had
to overwrite it. And I can... troubleshoot with
you after this yeah that's not relevant right
now at least i know how to bring it up and it
i i do see the benefit yeah and i have a video
on how you can get the hex codes there so that
the x02 x4b how did i get that i have a whole
youtube video on how that works it's called mac
os key bindings for tmux or something like that
which yeah that first one there this one so that
whole video shows you how it works And basically
you just translate that to text, you know, text
colon, and then you dump the hex code in. Okay.
Okay. Wonderful. And so I was able to get most
of the features I wanted working with Ghosty
when I experimented with it. Okay. What did you
know away from Ghosty, by the way? They don't
offer that background image feature yet, which
I think is really interesting and helpful for
me. Okay. And I don't like that it's a static.
config file right it's like kind of like shell
i guess similar i like lua i like the dynamic
ability to you know program things and repeat
some of my features and logic and things using
a programming language so i really enjoy that
okay wonderful what else should i check on um
what else should i So there's a ton of features,
but I think the real power of Sesh comes from
custom configurations. So things like I want
to edit my Tmux config file. Well, you don't
need to open up .files and then find the Tmux
file and then go to it. You can just have a custom
config that sends you directly to that file with
the Sesh picker. So that's where the Sesh config
file can be really helpful in configuring stuff
like that. Okay. If I bring it up, it's capital
T, okay? And if I type tmux... So you won't have
any matches, right? Because you've never been
to a tmux folder or anything like that. But it
will be in your .files, right? Yeah. But you'll
need to create a custom config. So you can go
back to sesh and you can switch to the sesh session.
Now we're getting meta. you have another session
called sesh okay okay so the session that i had
okay hold on let me bring it here okay this one
yeah and you'll touch a sesh .toml file okay
can i do it right you can invent yep okay however
you make files sesh .toml great and so now to
define a new session you use um double angle
brackets and you're welcome to go back to the
the readme readme if you scroll down access session
configurations there's a couple of good options
okay let me know where that is yep it's in the
config section okay so default i talked to you
about where i can You know, run a command on
any session. I don't want to run the shell. I
want to like open Vim and call telescope or something.
Oh, okay. But the Tmex config example is there.
Oh, okay. Okay. So I can grab the entire thing,
right? Sure. Yeah. Yeah. There's a couple options
here. Okay. So downloads is fairly obvious. And
then the Tmex config, mine, you're going to want
to change line eight to whatever yours is. You
could just drop C slash dot files if you wanted.
Or if you have your dot file path, you could
fill that out. Which is the entire path, right?
To the directory. So you want go C swapped out
with tmux. Hold on. Yeah, I didn't go to the
right one. Where is tmux? Well, and remember,
we haven't mapped it. Your tmux. Yeah, there
you go. So you don't want the file because the
path is just the directory. And then it looks
like you have a .sh on your tmux -conf file,
so you'll have to add that below. So on the startup
command, you have to say, I want to nvm tmux
-conf .sh, right? Okay, okay, okay. Do I leave
this forward slash here? It doesn't matter. Sesh
can handle either. Is that the way that I have
it? Let me see. tmux -conf .sh. The only reason
I did that .sh is for syntax highlighting. I
think. I don't remember. Yeah, I've got a tip
I can send you later that you can write auto
command to auto do that. But anyway, do you have
bat? Is the bat something that you use? Yeah,
I think I have an alternative. I think I have
it installed. So now if you open up the sesh
picker and you type tmux. Okay, let's see. You're
going to get a custom config there. Okay. And
if you hit enter. It's going to open up your
TMX config file. Interesting. That is really
useful. It's using like a different theme, you
know? Oh, you got some theming problems. Yeah,
so it's not perfect. Everybody's setup's a little
different. Your Z shell that has to wait and
pull before it can execute, there may be something
to that that is a little bit funky. Okay. I may
need to look into that. Yeah, we can take a look
at that later. That's fine. We've been here for
over an hour. So I know you have stuff to do.
Is there anything else you want to share or something
that people should look into or that I should
look into before we wrap it up? You know, there's
a whole lot of features in Sesh we didn't talk
about. You can clone repos to a specific place
and automatically create a session all in one
step, which is really nice. I made a fix to the
last command that's built into Tmux. I made an
improvement on that feature by creating a sesh
last command, which we didn't get to cover either.
There's also a whole lot of really good configuration
styles. Some of them we talked about today. But
yeah, I would encourage people, go give it a
star. It only takes... a few minutes to get going
i mean with me and you it took maybe less than
two minutes and you had it installed and you
could use it now configuring it and making it
work for your specific needs will take a little
bit more time but actually getting off the ground
running is almost immediate so find a good binding
start learning the muscle memory and don't do
custom you know tmx sessions anymore just let
sesh handle everything for you and learn that
the least amount of keys needed typically get
you to what you need because of that freesense
algorithm. So as you get used to it and as you
configure it to your needs, you'll find that
you don't really have to think about session
switching much anymore. You just type what you
need quickly, hit enter, and you're where you
need to be. And so, yeah, it's a great tool.
Everyone that has used it so far has said nice
things about it. There's been a few weird edge
cases. And so I'm active on GitHub and doing
my best to fix anything that comes up. And there'll
be some more features coming. So yeah, thanks
for trying this out. And I hope it works well
for you. Yeah, thank you very much for coming
over, Josh. Hold on, give me a minute. Sorry,
so my wife decided to use the printer. right
now she prints from the first floor i'm on the
second floor and it started making a lot of noise
okay so yeah so um maybe let's see how people
react to the to the video and if you have time
another day we can do like a part two or something
we'll see what people say in the comments just
remember guys go and give this a star the repo
and most importantly make sure to go and subscribe
to josh's youtube channel great thanks for having
me yeah any final words no just this i was this
was fun i could talk a lot more about this stuff
i'm sure i will and i'm sure we'll keep in touch
so yeah it was fun all right thank you very much
josh we'll see you another day bye