Blockman with Levan Katsadze - RRU 218
Levan Katsadze is a React.js TypeScript developer and Author of VS Code extension "Blockman". He joins the show alongside Jack, Paige, and TJ to talk about Blockman. He starts off by defining it and describing how it functions. He also talks about the reason why he built the VS Code extension and the process of creating it.
Show Notes
Levan Katsadze is a React.js TypeScript developer and Author of VS Code extension "Blockman". He joins the show alongside Jack, Paige, and TJ to talk about Blockman. He starts off by defining it and describing how it functions. He also talks about the reason why he built the VS Code extension and the process of creating it.
Sponsors
- Chuck's Resume Template
- Raygun - Application Monitoring For Web & Mobile Apps
- Become a Top 1% Dev with a Top End Devs Membership
Links
Socials
Picks
- Jack - NCDU Command
- Paige - Mayor of Kingstown (TV Series 2021
- TJ - Dungeons & Dragons: Honor Among Thieves (2023)
Transcript
Paige_Niedringhaus:
Hello everyone. Welcome to another episode of React Roundup. I am your host today Paige Needringhouse and I am joined by my esteemed panelists, Jack Harrington.
Jack_Herrington:
Hey, bitch.
Paige_Niedringhaus:
and TJ Vantol.
TJ_VanToll:
Hey everybody.
Paige_Niedringhaus:
And our special guest today is Levin Katsaja. Welcome, Levin.
Levan_Katsadze:
Hi everyone, hi.
Paige_Niedringhaus:
So, Levin, we are very glad to have you on the show today and we would love for you to introduce yourself a little bit to our listeners and tell us why you're famous and what we're going to be talking about today.
Levan_Katsadze:
Yeah, I don't think I'm kind of very much famous, but yeah, maybe I'm getting there, I don't know.
Jack_Herrington:
Haha.
Paige_Niedringhaus:
Thank you.
Jack_Herrington:
I like that. Everybody's always like, I'm not famous. He's like, yeah, maybe someday.
Levan_Katsadze:
Yeah. So yeah, I am a software developer, mainly focused on React.js. My strongest skills are React, TypeScript, JavaScript, CSS, CSS, and such kind of things. I have about a small experience in software development, working experience, like 2 or 2.5 years of experience. I want to say that I am still very young in the profession of software development. I mean, I don't think I have enough competence and enough knowledge to talk about software topics. But I guess I can talk about my experience with creating Blockman and my road from zero to building something useful. Yeah.
Jack_Herrington:
Yeah, absolutely.
Paige_Niedringhaus:
Yeah, I mean, two and a half years is, I think that's probably not too far off from a lot of people who are getting into the web development space now. So we'd love to hear kind of, did you have a first career before this?
Levan_Katsadze:
I was a software tester for about a year and
Jack_Herrington:
Okay.
Levan_Katsadze:
yeah
Paige_Niedringhaus:
cool, so
Jack_Herrington:
I think
Paige_Niedringhaus:
that
Jack_Herrington:
it's
Paige_Niedringhaus:
kind
Jack_Herrington:
a good starting
Paige_Niedringhaus:
of,
Jack_Herrington:
point for folks, actually.
Levan_Katsadze:
Yeah, yeah.
Paige_Niedringhaus:
yeah,
Jack_Herrington:
You
Levan_Katsadze:
Thanks.
Jack_Herrington:
know,
Paige_Niedringhaus:
kind of led you
Jack_Herrington:
yeah.
Paige_Niedringhaus:
into it.
Jack_Herrington:
Yeah, you get an understanding of like what what engineers look like, you know, what they how they work and all that stuff. And and then you're like, get into it. Oh, okay, I think I could do this. No, that's cool.
Levan_Katsadze:
sure.
Jack_Herrington:
Well, you mentioned block man. What is what is block man?
Levan_Katsadze:
That
Paige_Niedringhaus:
Mm-hmm.
Levan_Katsadze:
basically, Blockman is a VS Code extension. It's a visual helper for developers, and it helps us to perceive and understand code structure more quickly and more quickly. And yeah, it took me about six months to build, and the process is still continuing. I continue maintaining, getting fixed some bugs, and also with the help of community community actually helped me so much with some great ideas, some cool ideas, some pull requests and so on. And
Jack_Herrington:
Oh, awesome.
Levan_Katsadze:
yeah, I'm really happy that many, many people find Blockman useful and many people love it and I also love it and yeah, I'm very happy about that.
Jack_Herrington:
Thank you.
Paige_Niedringhaus:
So for the users who have not downloaded or tried out Blockman yet, how
Jack_Herrington:
Thank
Paige_Niedringhaus:
would
Jack_Herrington:
you.
Paige_Niedringhaus:
you describe it to them and kind of give them an idea of what it is and why you might want to use it in your development toolkit?
Levan_Katsadze:
Yeah, basically it is a helper for our eyes and I think it helps with the creativity, it helps with, you know, to do the job and to, you know, focus on certain blocks easier. You don't have to, you know, you don't have to search for opening bracket and closing bracket, where is this bracket, where is this bracket. And mine just goes blank. So, blockman is just a very simple idea and it just works.
Jack_Herrington:
Yeah. Been there, done that with
TJ_VanToll:
It's...
Jack_Herrington:
the bracket balancing and stuff. Oh my God.
Levan_Katsadze:
Yeah.
Jack_Herrington:
Yeah.
TJ_VanToll:
It's one of those things that's hard to describe through having an audio medium, right? We're
Jack_Herrington:
Ha ha
TJ_VanToll:
text-based.
Jack_Herrington:
ha!
TJ_VanToll:
It's something like, if you see an image of this extension, you know in like
Jack_Herrington:
Yes.
TJ_VanToll:
a half second what this does. But describing it is kind of hard. But the name kind of says it all because it basically quite literally draws blocks or boxes around your nesting levels, which like immediately resonated with me. And I think any software developer can understand the problem because if you're working on a app at scale, you're gonna have at least some of your code that turns into just a nested mess, right?
Jack_Herrington:
Oh
TJ_VanToll:
Like
Jack_Herrington:
yeah.
TJ_VanToll:
in your six levels deep online, 272,
Levan_Katsadze:
Thank you.
TJ_VanToll:
and you're like, crap, am I in the
Jack_Herrington:
And the
TJ_VanToll:
if,
Jack_Herrington:
opening bracket
TJ_VanToll:
am I,
Jack_Herrington:
is online like 170
TJ_VanToll:
yeah,
Jack_Herrington:
get
Paige_Niedringhaus:
Right,
Jack_Herrington:
five
TJ_VanToll:
yeah.
Jack_Herrington:
pages
Paige_Niedringhaus:
which function
Jack_Herrington:
away.
Paige_Niedringhaus:
am I in?
Jack_Herrington:
Yeah,
TJ_VanToll:
Which
Jack_Herrington:
exactly.
TJ_VanToll:
function am I in, am I in a function, am I in a loop, like you lose
Paige_Niedringhaus:
Thank you.
TJ_VanToll:
all context. So this extension just draws a square around your current scope. just visually see, oh, okay, this is the block I'm in, which is super, super cool.
Levan_Katsadze:
Yeah. And not just square, it is very flexible. If it's impossible to draw square, it changes shape in some way. And it tries to change in
Jack_Herrington:
Really?
Levan_Katsadze:
purpose.
Jack_Herrington:
Oh, okay, I gotta check that out. That's
TJ_VanToll:
Thank you.
Levan_Katsadze:
Thank you.
Jack_Herrington:
neat. Okay.
Paige_Niedringhaus:
Well, I think that TJ kind of just gave us the reasoning for why Blockman might be useful, but I'm really interested in how you built it. Cause VS Code extensions are awesome. I love them, I use lots of them. I have never once thought about how to build my own. So I'd love to hear how that process works.
Levan_Katsadze:
Yeah, actually, me and also many people noted that why on Earth this was not already available? Why would it not
Jack_Herrington:
Yeah.
Levan_Katsadze:
be already created? Because I think it's very natural to build such kind of tool. I think so. So when I started building on BlockRain, actually, I was in my... my first job and I had only about three years of work experience. I was very unexperienced and I barely could know. My coding skills were very almost zero. But when I was working in VS Code in my first job and I was searching brackets and brackets and brackets, I thought that there should be some kind of helper for this. I was almost sure that there was some kind of extension because VS Code has thousands of extensions, right? So maybe there was an extension or I was almost sure that it would be somewhere in the settings or options or somewhere in the VS Code, but I could not find it anywhere. I just Googled it and I also could not find it in the software as well. Actually, I found once, software. It's called BlueJay. Maybe you heard about that. It's a it's a
Jack_Herrington:
Blue day. No.
Levan_Katsadze:
yeah, it's BlueJay software. It's Java editor. I guess it's
Jack_Herrington:
Hmm
Levan_Katsadze:
Java editor. And BlueJay basically, I discovered that BlueJay basically does what I wanted. It draws squares and rectangles,
Paige_Niedringhaus:
Mm-hmm.
Levan_Katsadze:
code, and the code blocks. And the thing was that it was not on the various code and also it was It was very limited, it was low quality, it had many bugs and some visual artifacts. And it was far from my imagination of how it could be
Paige_Niedringhaus:
Thank
Levan_Katsadze:
made.
Paige_Niedringhaus:
you.
Levan_Katsadze:
So I decided why not make it myself.
Jack_Herrington:
There you go. Nice. Yes. That's the way you do it.
Levan_Katsadze:
with creating VS Code extensions. So I just started doing very simple initial things, like searching YouTube how to create blockman VS Code
TJ_VanToll:
Meh.
Levan_Katsadze:
extension.
Paige_Niedringhaus:
Mm-hmm.
Jack_Herrington:
Yeah, exactly.
Levan_Katsadze:
It's a very good
Paige_Niedringhaus:
Thank you.
Levan_Katsadze:
start always. It's
Jack_Herrington:
Yeah.
Levan_Katsadze:
always a good start.
TJ_VanToll:
Thank you.
Levan_Katsadze:
I found some tutorials, some text tools and video tutorials, and after many months... After many months and after so much struggle and so much debugging and struggle and struggle, I finally reached the finish line. But also history is very, very interesting here, I think, because at some point after about, after several weeks, at some point I discovered that VS Code had certain limitation that it was impossible to, in some situations, it was impossible to draw many people. blocks in the UI of VS Code. So
Jack_Herrington:
Hmm.
Paige_Niedringhaus:
Mm-hmm.
Levan_Katsadze:
it was basically, I was going to give up. And so it was impossible to build block when. So I thought about it for several days, and I decided to post a feature request of VS Code GitHub repo. So I posted it. I asked them to please implement this change this behavior so it will not have such kind of limitation.
Paige_Niedringhaus:
Mm-hmm.
Levan_Katsadze:
After several days it turned out that it was a bug of VS Code.
Jack_Herrington:
Well, there you go.
Levan_Katsadze:
So they basically thanked me and they fixed it pretty soon and I was happy.
Jack_Herrington:
Yeah.
Paige_Niedringhaus:
So
Levan_Katsadze:
Thank you.
Paige_Niedringhaus:
I'm curious, like what are the actual, how did you actually build the block band for VS Code? Is it written in JavaScript? Is it written in some other coding language? Like how
Levan_Katsadze:
This.
Paige_Niedringhaus:
do you go about, or how do you test it also? How do you test it locally as you're building this thing?
Levan_Katsadze:
Yeah, I built it with TypeScript, which is super set of JavaScript, right?
Paige_Niedringhaus:
Mm-hmm.
Levan_Katsadze:
It was TypeScript and VS Code, building the extension environment, has its testing feature, so I could test it in my local environment. And also, it's easy to build it and publish it. And it's not hard, it's easy, but all I had to do was just sit down and work on it. Yeah.
TJ_VanToll:
I'm very curious about the actual algorithm you're using here because to me it's kind of fascinating and we don't have to go like too deep but does VS Code expose things like are you getting like access? Like how do you paint a box right? Because it's you're you have to get like VS Code has to tell you like characters or is it like is it like something like canvas? Like I'm just sort of fascinated that this is even Honestly.
Levan_Katsadze:
Yeah, actually creating like advanced HTML elements is limited in VS Code, but basic HTML boxes is permissible. So they are just simple deep boxes, right? Simple deep boxes with some border radios and borders and so on. But it's not as easily styled as in simple CSS. It has some, it's strange. ways to do it. You can see it in the source code. So basically about the algorithms, yeah, first blockman was very unoptimized, very slow. It sometimes frees the entire UI. And yeah, the process was going over like many months. So when I tested it every day, I I lived with it, I was working inside it almost every day and I almost felt the entire code and I almost felt where was the issue, where was the problem and somehow I didn't have much experience with writing algorithms. I had some training in lead code website and hackerrank website but not so much. I'm basically self-taught.
Jack_Herrington:
self-taught.
Levan_Katsadze:
Yeah, self-taught.
Jack_Herrington:
Yeah, like me.
Levan_Katsadze:
Yeah.
Jack_Herrington:
Yeah, there you go.
Levan_Katsadze:
So I try to implement more smarter ways to render blocks and so on. Because, for example, let's say we have like 2,000 lines code file. And if we try to render it, blocks for the entire file, rendering engine is very slow for it. So finally I decided to optimize it in a way that it only renders blocks in the current viewport area.
Jack_Herrington:
Right.
Levan_Katsadze:
And also it listens to the scrolling event and it dynamically changes these rendered blocks. So that's the basic idea and also there are many like many small or large algorithmic deep thinking and big struggle. It was a big struggle.
Paige_Niedringhaus:
I can only imagine. So I'm curious, does block man work with other programming languages besides JavaScript and TypeScript? Could it do Python or Java or some of the other languages that people tend to use?
Levan_Katsadze:
Yeah, sure, blockman works in many languages, includes Python, YAML, JavaScript, TypeScript, JSX, TSX, CSS, CSS, Java, C++, C, special,
Jack_Herrington:
Thank you.
Levan_Katsadze:
well, actually, yeah, many more, also PowerShell script and many more, yeah. The thing is that I don't have much, about AST abstract syntax tree and writing and parsing and tokenizing algorithms myself. So I used pre-written libraries for it.
Jack_Herrington:
Hmm
Levan_Katsadze:
Basically, I used Bracket Peer Colorizer 2 extension source code
Paige_Niedringhaus:
Mm-hmm.
Levan_Katsadze:
for tokenizing.
Jack_Herrington:
I was just gonna say that was like before this bracket colorizer is the thing and then bracket colorizer is deprecated. It's deprecated. Nobody's gonna be like, you know, like, ah, but it's great. I just want
Levan_Katsadze:
Go.
Paige_Niedringhaus:
Yeah,
Jack_Herrington:
it. Like, why is
Paige_Niedringhaus:
I love
Jack_Herrington:
it deprecated?
Paige_Niedringhaus:
it.
Jack_Herrington:
Like.
Paige_Niedringhaus:
Well, VS Code, I think, built it in.
Jack_Herrington:
Oh, is that it?
Paige_Niedringhaus:
I think so.
Levan_Katsadze:
Yeah, I can't say what about it, why it was deprecated. So the thing is the performance. So the backlit protocol
Jack_Herrington:
Hmm.
Levan_Katsadze:
is a tool, had some performance issue, and Blockman uses the same source code. So basically, it has the same performance. But the thing is that Blockman uses debouncing for about one second. every render on every text change. And I think it's not a deal breaker for many users because already two years passed and many people still love it and still I still receive many amazing and lovely comments from the community. And yeah, the basic idea of block pan is of optimization is debouncing for about 1.2 seconds. And yeah, that's it for the full effects.
Jack_Herrington:
Listen, if your file is so big that you've got like performance problems on interview code, maybe, maybe split the file up.
Levan_Katsadze:
Yeah,
Jack_Herrington:
You know,
Levan_Katsadze:
sure, sure.
Jack_Herrington:
yeah, yeah, just a little bit of sanity
Paige_Niedringhaus:
No Jack.
Jack_Herrington:
be great.
Paige_Niedringhaus:
The 10,000
Levan_Katsadze:
Thank you.
Paige_Niedringhaus:
line file needs to stay 10,000 lines.
Jack_Herrington:
Page
TJ_VanToll:
Bye.
Jack_Herrington:
is like, what about my 10,000?
Levan_Katsadze:
Yeah.
TJ_VanToll:
Well, I'll say though too, like it's, I can, I understand that though, because my editor is the one place where I will not tolerate any delay or any latency, right? Like
Jack_Herrington:
Hmm.
TJ_VanToll:
if I, if I go to do something in my code, like switch a line or do whatever and it pauses like a second there, like I'm done with that editor, right? Or I'm, I'm seeing if there's a problem with it or I'm like completely, like I have no tolerance for that. Uh, so like if there are slow extensions, like they are gone immediately.
Jack_Herrington:
Ha ha
TJ_VanToll:
Like
Jack_Herrington:
ha ha!
TJ_VanToll:
I, I don't, I don't even like waste,
Levan_Katsadze:
Uh...
TJ_VanToll:
waste any time, like, unless they're providing like me some absolutely enormous value or they're essential to my workflow, if they slow me down at all, I want nothing to do with them, right?
Levan_Katsadze:
Yeah,
TJ_VanToll:
So.
Levan_Katsadze:
the thing is that Blockman doesn't slow down UI or anything. It just works debauching for itself. Yeah, it doesn't slow anything down. We can type text always. It just optimizes itself. That's the idea.
TJ_VanToll:
I've also been, I've just been perusing the code here too. It's interesting because it's, you register a command so that you can toggle, people can toggle it on and off,
Jack_Herrington:
Yeah.
TJ_VanToll:
which is kind of nice, because I could totally see, like for this sort of extension for me, it's like a sometimes I want this, but most of the time I don't, right? Like I kind of like the noise being gone when I'm looking at my code, but like when I need it, right? It's nice to have like something I can reach to say like, oh, I'm opening that file again. That's got like all this, and like I need my hand held a little bit through this. So I kind of like that as well.
Levan_Katsadze:
Sure, sure, Blockman has so many commands and so many settings, so many configurations and customizations, yeah, with colors, you know, nesting depth and maximum depth and you can turn on or like analyzing curly brackets, square brackets, round brackets, tags, HTML. Oh. and also indentation, indent, didn't tokens of Python and indenting based languages. And I think the biggest problem of Blockman is Python because actually I had to find a separate, separate parsing library for Python.
Jack_Herrington:
Mmm.
Levan_Katsadze:
And it's not, well, it works fine in about like 500 line code. But after that, it feels slow. And, but many Python developers love it. And,
Paige_Niedringhaus:
Thank you.
Levan_Katsadze:
well, it's not a deal breaker, I think so. And basically, even still now, I'm still trying to improve Bulkman and somehow find another ways, find another solutions to improve it rendering and so on and so on and actually made actually just several weeks ago or several days ago I posted another feature request in VS Code GitHub repo which is about no the thing is that right now VS Code doesn't give extensions access to the AST tokens abstractly, so let's
Jack_Herrington:
Well, that'd be good if they did. I mean, you could be compatible with everything, and you wouldn't have to do
Paige_Niedringhaus:
Mm-hmm.
Jack_Herrington:
it yourself. That'd be awesome.
Levan_Katsadze:
Yeah, that's why I had to find third party libraries for parsing, tokenizing all these main summoning languages. And that's why it feels slower than it should be. Because if the host, if the native host, already does the tokenizing and parsing, why on earth should I do it twice? Right?
Jack_Herrington:
Yeah, exactly. Yeah.
Levan_Katsadze:
Yeah. And actually the VS Code team, I think they also like BlockRain idea.
Jack_Herrington:
Oh.
Levan_Katsadze:
But I guess they find it too difficult or too unsafe to expose the tokens, native tokens to extensions. And there is, you know, I can link the GitHub repo and the conversation about it. And you can, you can, you know, learn more about it if you would like.
Jack_Herrington:
Hmm.
Paige_Niedringhaus:
Well, I mean, your implementing block man is as just a normal part of VS Code would not be the first extension that has popped up, been really useful and loved by the community. And then the VS Code team just goes and builds it in. So it's very possible that they may end up doing that if it gets popular enough. Ha ha.
Levan_Katsadze:
I hope so.
TJ_VanToll:
Thank
Jack_Herrington:
Thank you.
TJ_VanToll:
you.
Levan_Katsadze:
Yeah, sure.
Jack_Herrington:
I hope for my own code to go away at some point.
TJ_VanToll:
Mm-hmm.
Jack_Herrington:
To no longer be needed. I like it.
Paige_Niedringhaus:
Right.
Jack_Herrington:
That's good.
Levan_Katsadze:
And also, it's worth noting that it's OK that it's a reality that it's based on taste of people. Some people have different tastes, and they don't like block man. And it's OK. It's understandable, sure. But I'm happy that I think most of the people like it. I think so, yeah. Yeah.
Jack_Herrington:
It definitely
Paige_Niedringhaus:
Yeah,
Jack_Herrington:
solves
Paige_Niedringhaus:
I mean,
Jack_Herrington:
the problem.
Paige_Niedringhaus:
that's the nice thing about extensions. You add them, you try them out, you decide, they're for me or they're not, and you just go on with your development.
Levan_Katsadze:
Yeah, yeah, and some people think that with their taste they don't like block-man, but because block-man has so many customizations, for example, they can disable background and just throw borders, or maybe just throw only the focused block. Yeah, as you know, block-man has focus features, so when you click anywhere in the center block, it focuses on that block. And yeah, it many customizations, you can customize colors and so on and so on and maybe, maybe you can fit with your taste.
Paige_Niedringhaus:
So what kind
Levan_Katsadze:
Thank
Paige_Niedringhaus:
of
Levan_Katsadze:
you.
Paige_Niedringhaus:
features do you see Blockman developing in the future? Like do you have a product roadmap or things that you'd like to add to it that it doesn't currently support?
Levan_Katsadze:
I don't have a specific plan and roadmap right now because in the current period of my life, I am more focused on my job and my work and gaining some more experience as a software developer. And from time to time, I go back to my source code and making some updates based on the on feedback, some feedback, some and so on, some updates, some... exist and so on.
TJ_VanToll:
What
Levan_Katsadze:
Thank
TJ_VanToll:
is
Levan_Katsadze:
you.
TJ_VanToll:
the open source nature of the project, Ben? You mentioned earlier you got some like good work on that. Has it been, have you found it useful to have it open source? Has it been a pain? Like do you have to deal with just random issues and complaints? What has that experience been like?
Levan_Katsadze:
So in terms of community and feedback,
TJ_VanToll:
Yeah.
Levan_Katsadze:
right? Actually, feedback, yeah, sometimes I had like some harsh feedback like it doesn't work, it's garbage.
Paige_Niedringhaus:
haters.
TJ_VanToll:
Yeah.
Jack_Herrington:
Hmm.
Levan_Katsadze:
It was like less than 1%. Most
Jack_Herrington:
Mm.
Levan_Katsadze:
of the experience
TJ_VanToll:
Yeah.
Levan_Katsadze:
with Feedback at Community was so lovely and so amazing. And they helped me so much. For example, one developer made a pull request to support SQL language in Blockman. I'm very
Jack_Herrington:
Oh,
Levan_Katsadze:
thankful.
TJ_VanToll:
Oh wow.
Jack_Herrington:
nice. Yeah, that would help.
Levan_Katsadze:
Yeah.
Jack_Herrington:
You think the curly braces stuff in JavaScript is bad? Although, yeah,
Paige_Niedringhaus:
So.
Jack_Herrington:
I think like a lisp or something like that. Oh my God. That might this
Paige_Niedringhaus:
Hmm.
Jack_Herrington:
might actually act somehow get me back into like the Lisp syntax
Levan_Katsadze:
Thank you.
Jack_Herrington:
because of all those
Paige_Niedringhaus:
Thank you.
Jack_Herrington:
nested parentheses. I can't even.
Levan_Katsadze:
Yeah.
Paige_Niedringhaus:
So are you open to additional contributors to the repo, or is it mostly you who would prefer to do the development for it?
Levan_Katsadze:
Well, of course, I'm open to any contributors, I believe in the work of community.
Paige_Niedringhaus:
Thanks.
Jack_Herrington:
So what are you looking at in your day job then? You said you do a lot of next-JS. Like, what is your day job?
Levan_Katsadze:
Yeah, basically I have two jobs right now.
Jack_Herrington:
Whoa, okay. And then, and then post, and then blockbant.
Levan_Katsadze:
Yeah, so basically my work is about React.js, building some educational website and also
Jack_Herrington:
Mm.
Levan_Katsadze:
I work on backend with Nest.js and TypeScript
Jack_Herrington:
Uh.
Levan_Katsadze:
and so on. Basically that is my work with some styling CSS and yeah that's it.
Jack_Herrington:
Cool. So what, when you say educational content, you are, you, it's an educational platform. What are you working on?
Levan_Katsadze:
It's a startup with some
Jack_Herrington:
Oh.
Levan_Katsadze:
specific, some new ideas about educating children and we are still working
Jack_Herrington:
Awesome.
Levan_Katsadze:
on it. And yeah.
Jack_Herrington:
That's great.
Paige_Niedringhaus:
That's very cool.
Levan_Katsadze:
Thank you.
Paige_Niedringhaus:
So Levin, let's talk a little bit more about how you made the transition because it sounds like you were in tech and you were doing software testing and things like that, but do you have any formal CS degree background or was it really that you just got into it, you enjoyed it and you started learning on your own to actually do the coding part of it?
Levan_Katsadze:
Well, actually, I graduated by Phyllis Degree in the University of Georgia and also Master's Degree in Georgian Technical University. But
Paige_Niedringhaus:
Mm-hmm.
Levan_Katsadze:
it was not the greatest experience in terms of learning development. So mostly I learned it myself. Yeah, that's the idea. And actually, actually, in the Georgian Technical University, Actually, I used Blockman as a master degree project and they also liked it.
Paige_Niedringhaus:
That is very cool.
Jack_Herrington:
That's awesome!
Levan_Katsadze:
Yeah, when I finished building Blockman, I thought why not use it as a master's degree. It's already done, it's already finished project. So
Jack_Herrington:
It's useful. You can talk about it in in depth.
Paige_Niedringhaus:
Thank you.
Jack_Herrington:
Absolutely.
Levan_Katsadze:
yeah, it was pretty
Jack_Herrington:
Yeah.
Levan_Katsadze:
successful.
Jack_Herrington:
It is. It really is.
Levan_Katsadze:
Yeah.
Paige_Niedringhaus:
So what kind of advice would you have for people who are either looking to transition into tech or who are looking to build their own extensions? Like obviously you've had some pretty significant experience in both of those things now, so how would you, you know, what pitfalls would you tell people to avoid or things to really focus on?
Levan_Katsadze:
Well, I think, well, the basic part of learning anything, especially like software development is persistent, like sitting many hours and learning and do not give up on the first error you get. That's
Jack_Herrington:
Yes.
Levan_Katsadze:
the idea. And yeah, that's it. You have to... You have to be very persistent and very dedicated and you have to love your work. Otherwise it's almost impossible to do it.
Jack_Herrington:
You know,
Levan_Katsadze:
Thank you.
Jack_Herrington:
I think what you probably learned in this is a lot of the persistence skills that you talked about, like it, if it doesn't work, I'm going to try to figure out why
Levan_Katsadze:
Yeah.
Jack_Herrington:
it doesn't work first. And I'm going to dig into it and see if I can figure it out. And then if that doesn't work, then I eventually might get back to the VSCO team and say, Hey, what's up with this? You know, but
Levan_Katsadze:
Yeah, yeah, when I was building block, at some point, it was, I think it was like several times when I almost gave up because there were some kind of technical difficulties, some kind of technical limitations. I couldn't solve it for many days, sometimes, sometimes one week, sometimes two weeks. And I thought, I thought it was it, let's give up. But after some rest, several days, and
Jack_Herrington:
Yeah.
Levan_Katsadze:
then I, went back to the computer and whoa, I can do it. Sometimes the solution just comes in my mind. Yeah.
TJ_VanToll:
I'm a big believer in sleeping, sleeping on it. When you run into a really hard technical problem, like there's,
Levan_Katsadze:
Thank you.
TJ_VanToll:
sometimes there's no point, you can just spend hours just staring into your monitor and not accomplish something when, when lots of times you just walk away and you come back the next day. Sometimes you can, it's, it's amazing how many times I've had that experience where I've
Paige_Niedringhaus:
Mm-hmm
TJ_VanToll:
spent hours on something and then I figured out the answer in like two minutes the next day. It's.
Paige_Niedringhaus:
Yeah,
Levan_Katsadze:
Thank you.
Paige_Niedringhaus:
it's so true. I mean, I can't, like you, TJ, I can't even count the number of times where I've been hacking at something, it keeps not working. I walk away and do something else. The dishes, take a walk, just do something, and suddenly think of another way to try it that I hadn't
Jack_Herrington:
Yep.
Paige_Niedringhaus:
previously.
Jack_Herrington:
Exactly. Yeah, yeah. been there done that.
Paige_Niedringhaus:
Thank
Jack_Herrington:
And
Paige_Niedringhaus:
you.
Jack_Herrington:
I think actually over time, the cycles get a little bit shorter, right?
Paige_Niedringhaus:
Yeah.
Jack_Herrington:
In the beginning, it's, you know, it'll take a couple days to figure it out. And then, you know, as you get later into your career, it's like, just go on a walk, get some fresh air, you need it anyway. And then you eventually like, Oh, right, if I just pass true,
Paige_Niedringhaus:
Thank
Jack_Herrington:
there
Paige_Niedringhaus:
you.
Jack_Herrington:
is about you. Oh, that's what it was, you know, kind of a,
Levan_Katsadze:
Yeah,
Jack_Herrington:
yeah.
Levan_Katsadze:
that's right.
Jack_Herrington:
And the other thing is, I think a lot of folks get stuck on not just to be really elegant in the first go. And I think that easiest way to kind of get unstuck is just be like, I don't care what it's going to look like, I'm just going to
Paige_Niedringhaus:
Mm-hmm
Jack_Herrington:
throw everything at the wall. And then eventually something's gonna work. And then when when it finally works and I convince myself it can work, then I'll go and just like literally just
Paige_Niedringhaus:
clean
Jack_Herrington:
get
Paige_Niedringhaus:
it up.
Jack_Herrington:
reset. And then take the nice clean path that I finally figured out after just just you know, that's sort of like Was
Paige_Niedringhaus:
So,
Jack_Herrington:
it
Paige_Niedringhaus:
11.
Jack_Herrington:
make it work? Oh, sorry. Okay.
Paige_Niedringhaus:
Go ahead, Jack.
Jack_Herrington:
Oh yeah. I think there's that old maximum make it work, make it good, make it fast. Would
Paige_Niedringhaus:
Mm-hmm
Jack_Herrington:
be the
TJ_VanToll:
Yeah.
Jack_Herrington:
three steps.
Levan_Katsadze:
Thank
Paige_Niedringhaus:
something
Levan_Katsadze:
you.
Paige_Niedringhaus:
like that.
Jack_Herrington:
Yeah.
Paige_Niedringhaus:
So Levin, as you've been getting yourself up to speed and learning to be a developer and things like that, do you have any particular resources that you would say have been really good for you, whether they're like online learning tutorials or websites that you've found really useful? Is there anything in particular that you thought was, you just has been really, really good in for people getting up to speed and coding?
Levan_Katsadze:
Well, first of all, of course, I would like to say it's the Jack Harrington's YouTube channel. Yeah.
Paige_Niedringhaus:
Ha ha ha!
Jack_Herrington:
Thanks.
TJ_VanToll:
Thank you.
Levan_Katsadze:
And basically, there are, I think there are many websites, there are many YouTube channels and many good resources online on the Internet. You just have to, you just have to know. down and learn it. Everything is basically for free on the internet and what you have to do is just sit down and learn. Yeah, that's it, I think so.
Jack_Herrington:
I think everybody underestimates how long it's going to take because there's so many companies out there saying six months, we're going to have you go from, you know, car mechanic to developer and man, you're going to be at Google with a hat making, you know, gazillion
Paige_Niedringhaus:
Thank you.
Jack_Herrington:
dollars and people are like, yes, that was great. And you're like, that's not reality. That's not
Levan_Katsadze:
Yeah, basically,
Jack_Herrington:
reality at all.
Levan_Katsadze:
yeah, basically such companies, such courses and also universities basically gives us some road maps.
Jack_Herrington:
Yeah.
Levan_Katsadze:
So and you then you have to,
Jack_Herrington:
You have to do it.
Levan_Katsadze:
you have to do it. Yeah, just sit down in your home and you have to learn it. It's your job, not the job of the university to put something in your head. Yeah.
Jack_Herrington:
Right, right, right. And you can't just fall back on other people all the time. When you get stuck, part of learning is learning how to unstick yourself, right?
Levan_Katsadze:
Thank
Jack_Herrington:
Going
Levan_Katsadze:
you.
Jack_Herrington:
through the motions of the debugging. Like, that's one thing that I find often that people get stuck on is like, hey, I ran into this, but what did you try? Like, did you try or do you just like, you got stuck? And then you're like, I'm just gonna jump on discord and start like asking people like, Hey, I got this error. What does it mean? I don't know, read the error. Like, what does it mean?
Levan_Katsadze:
Yeah.
Jack_Herrington:
We tried to make errors very self-explanatory.
Levan_Katsadze:
Yeah, that's the main job and that's the most important skill of social development is the it's finding a solution, finding and solving a problem with yourself or with some in the internet, searching something on the internet, basically finding a solution with any problem. That's the idea.
Jack_Herrington:
And it's fun. Like when you get it and you get it, actually it works here. Like, man, I'm sure a lot of homes. This is great. I've just solved a mystery. Woo. You know,
Levan_Katsadze:
you think that.
Jack_Herrington:
yeah. Bring out Scooby. Let's get some Scooby snacks, you know, whatever. Thank you.
Paige_Niedringhaus:
Well, Levin, it has been a pleasure to talk to you today. Is there anything that we've talked that we have not really commented on or covered yet that you'd like to, whether it's Block Man or something else that you're working on?
Levan_Katsadze:
Well, I don't have anything much in my mind right now. Actually, I have some other ideas for other projects, but
Jack_Herrington:
Hmm
Levan_Katsadze:
as I said, currently I'm more focused on improving myself with my job and just gaining some experience. And maybe some other ideas of myself is going... to be built, yes, and going to be successful, I hope, yeah.
Paige_Niedringhaus:
Yeah, so you're not gonna share those ideas with us and our listeners right
Jack_Herrington:
Yeah.
Paige_Niedringhaus:
now is what you're saying.
Levan_Katsadze:
It's not fully structured, so I cannot talk much about it.
Paige_Niedringhaus:
Fair enough. Well, when you do build those extensions or those web apps or whatever they happen to be, we'll be happy to have you on to tell us all about them then.
Jack_Herrington:
Absolutely.
Levan_Katsadze:
Thank you so much.
Paige_Niedringhaus:
So if people want to get in touch with you, if they want to contribute to Blockman or if they want to talk to you about anything else, where are the best places to reach you online?
Levan_Katsadze:
Well, they can just visit the official page of blogging and they can see the links of my YouTube channel or my LinkedIn or many other social networks.
Paige_Niedringhaus:
Fantastic. Well, this
Levan_Katsadze:
It
Paige_Niedringhaus:
is
Levan_Katsadze:
just
Paige_Niedringhaus:
the
Levan_Katsadze:
can't
Paige_Niedringhaus:
part
Levan_Katsadze:
sleep.
Paige_Niedringhaus:
of the show where we're going to move into picks and these could be TV shows that we're watching, books that we're reading, gadgets that we've found that we like. So, Jack, would you like to kick us off this week with a pick?
Jack_Herrington:
Sure, I have a command line tool. If you are on Mac and OSX, there is a thing you can install, brew install called NCDU. And so it's just brew install NCDU. And it gives you like an interactive disk usage display where you can just say, oh, okay, wow, I didn't know I had like 18 gigs in this cache file over here. It's, and it's great. I mean, honestly, terabyte, two terabyte, you know, machine and you're like, wow, I'll, I'll never fill that up. And then next thing you know, like, six months later, you're like, wow, I need to clean the lot of stuff off. So this helps with that. And it helps find those little hidden corners that that software tends to jam stuff into and you're like, Whoa, it's taking up 180 gigs. Are you kidding me? Got a thing.
Paige_Niedringhaus:
Nice. Yeah, always need stuff like that to clean up, or at least
Jack_Herrington:
Ugh,
Paige_Niedringhaus:
to
Jack_Herrington:
yeah.
Paige_Niedringhaus:
show you where the junk is hidden on your machine.
Jack_Herrington:
There's another one also called MP, that you use MPX on MPX. So this, I guess would work on Windows as well. So for the Windows folks, MPX and then NPKILL, MPKILL. And it's just for no modules. It's just the same thing, but it's just for no modules. So if you've got like a ton of random side projects around, you know, you say, hey, you got, you know, 20 gigs in this, this no module over here. And those are big. I mean,
Paige_Niedringhaus:
Mm-hmm.
Jack_Herrington:
no modules, any React projects, the no modules. It's crazy
Paige_Niedringhaus:
Yeah,
Jack_Herrington:
when you think
Paige_Niedringhaus:
yeah.
Jack_Herrington:
about it.
Paige_Niedringhaus:
Nice. I've heard of that one before. And I've
Jack_Herrington:
Hmm
Paige_Niedringhaus:
even heard that people have set up processes. So if something isn't open for 30 days or a certain amount of time, it'll actually just delete the node modules out of the project for you. But
Jack_Herrington:
That
Paige_Niedringhaus:
that would be,
Jack_Herrington:
I'd
Paige_Niedringhaus:
yeah,
Jack_Herrington:
like,
TJ_VanToll:
Oh, that's
Jack_Herrington:
yeah,
TJ_VanToll:
handy.
Paige_Niedringhaus:
that's a good one.
Jack_Herrington:
yeah, yeah, big time. Oh yeah.
Paige_Niedringhaus:
Nice. I'll have to check that out. So TJ, what do you have for us this week?
TJ_VanToll:
Oh man, I just installed NCBU. It's running right now. It's scanning.
Jack_Herrington:
Oh yeah.
TJ_VanToll:
So I'll have
Jack_Herrington:
Yeah,
TJ_VanToll:
to,
Jack_Herrington:
yeah.
TJ_VanToll:
I'll have to report back. I'm curious what it's like. This would be a fun one to run at like the coffee shop because it's very matrixy. It looks like I'm
Jack_Herrington:
Yeah,
TJ_VanToll:
doing something
Jack_Herrington:
right?
TJ_VanToll:
very
Jack_Herrington:
Oh wow,
TJ_VanToll:
complex
Jack_Herrington:
look what
TJ_VanToll:
or
Jack_Herrington:
I'm
TJ_VanToll:
important
Jack_Herrington:
doing.
TJ_VanToll:
right
Jack_Herrington:
It's
TJ_VanToll:
now.
Jack_Herrington:
very cool.
TJ_VanToll:
Yeah.
Jack_Herrington:
Yeah.
TJ_VanToll:
But my pick this week is gonna be Dungeons and Dragons, Honor Among
Jack_Herrington:
Oh!
TJ_VanToll:
Thieves, which was really good. We saw it this weekend and it, it's a really good because it found the right balances. It doesn't take itself too seriously. It kind of just has fun with the Dungeons and Dragons, IP and such. It's funny, you don't have to know anything about Dungeons and Dragons. I'm just sort of casually aware of that sort of universe and I had no trouble following along. So they did a really good job. It was a
Paige_Niedringhaus:
Thank you.
TJ_VanToll:
good movie, highly recommended.
Paige_Niedringhaus:
Nice, very nice. Levin, do you have something that you'd like to share with our listeners?
Levan_Katsadze:
Well, thanks everyone for watching and I hope you will check out my creation, the VSCO
Jack_Herrington:
Ha ha
Levan_Katsadze:
DevLogman,
Jack_Herrington:
ha!
Levan_Katsadze:
and hope you will like it.
Paige_Niedringhaus:
Very good self plug and promotion all at the same time.
Jack_Herrington:
There you go, exactly.
TJ_VanToll:
Yeah
Jack_Herrington:
Shameless
Paige_Niedringhaus:
So,
Jack_Herrington:
plug, I
Paige_Niedringhaus:
um,
Jack_Herrington:
love it.
Paige_Niedringhaus:
exactly. So my pick this week is going to be, um, a series that's called the mayor of King's town and it recently
Jack_Herrington:
Hmm
Paige_Niedringhaus:
just came out with its second season. It's on paramount plus in the U S if you're streaming through that. Uh, and it's great because Jeremy Renner, who is, um, Hawkeye in all the Marvel movies is the star of it. And it's. very, very different than that though. It's about a town
Jack_Herrington:
Hmm
Paige_Niedringhaus:
in Michigan that is kind of like gang central, you know, it's cops versus prisons versus the gangs on the streets and it's trying to keep the peace between all three of those different factions who all have their own goals. So it's really interesting to see and well, very well acted. The drama is great. So if you're looking for kind say it's worth a try.
Jack_Herrington:
I will definitely do that.
Paige_Niedringhaus:
Yeah. Well, like I said, Levin, it has been so great having you on the show today. Thank you for joining us on React Roundup, and we
Levan_Katsadze:
Thank you.
Paige_Niedringhaus:
will see everybody next week.
Levan_Katsadze:
Thank you so much. Thanks for inviting me here.
Jack_Herrington:
Woohoo!
TJ_VanToll:
Hey everybody.
Jack_Herrington:
Awesome.
Levan_Katsadze:
Thank you.
Blockman with Levan Katsadze - RRU 218
0:00
Playback Speed: