040: CLI in Go and other tech talks with Marian Montagnino

Dominic:

Hey there. I'm the mix empire and you're listening to Go Podcast. Today I talk with Marianne Montagnino about CLI in Go and other technology. I'd like to to take some some time to apologize. There were some, Internet glitches, when when we recorded, so you will you will obviously not, hear them because, I mean, we are locally re recording on on each of of our side.

Dominic:

But, we had lots of lags and lots of of cuts during our conversation, so it was it was challenging. So hopefully, it's not, it's not a distraction too much, but I I wanted to apologize about that, beforehand. Hello, gophers. So I have a guest this week. I am with Marian Montagnino.

Dominic:

Thank you very much for accepting this invitation, Marianne.

Marian:

Thanks, Dan. I'm glad to be here. Great.

Dominic:

So before before we we start, because I usually ask, you know, guests to, to give some some kind description of themselves. So I researched you this morning and I was like, wow, there's a couple of things that, that I need to, to ask you first. First of all, as a blind person, thank you very much to to have said, what you said in in one of your video for the DeLorean in Back to the Future, I was not aware that it it had a a, I don't know how to say that, but the the word in the in the in the plate, I guess. So I was not aware of that. So thank you for that.

Marian:

Oh, out of time?

Dominic:

Yeah. Exactly. Exactly. I I I watched your your, your presentation, your Go, your Go, conference this morning because, yes, I I kind of like to, to get myself, some some background information on on the people that that that comes to, to this podcast. But, yes, that that that, that was something I wanted to mention.

Dominic:

And and, the second one is, what is what is, I think it's immural ice hockey you have in your LinkedIn page? I'm I'm very curious about that.

Marian:

Oh, intramural ice hockey. Yeah. I was, in college when I was playing d league, ice hockey. And I actually started when I was younger. I was actually, pigeon toed when I was born.

Marian:

And, one of the things that the doctor had recommended was that I get into, roller skating. So I started with that. I ended up into rollerblading. And then when I was in college, I was rollerblading around campus, and, my friend at the time saw me and was like, oh like do you want to play roller hockey? And I was like, sure.

Marian:

Like, I'll play. Like, I don't know how. And then she's like, it's easy, and she showed me. And then from there, I had a boyfriend that was part of the d league ice hockey team, and I had already played like, I already knew how to ice skate. So that led into, d league ice hockey, and I played for about 3 years in college.

Marian:

So yeah. And ice hockey being, like, in upstate New York, there were a lot of people from Canada that went to my school, and ice hockey was a big part of the culture. So during the season, every Friday, we'd all go and watch the games.

Dominic:

Okay. Very cool. Very cool. So so, alright. So so that, that that was my curiosity about your your two things.

Dominic:

I I wanted to say that first. So, yeah, if you can, I don't know, you know, give us some background about you? One thing that I will completely admit that I found very interesting is is the, you know, the path that you that you have from the, the television or the broadcast company that you were. I mean, that was fascinating to me. So I mean, I will let you talk a little bit, but if you can introduce yourself, we will we will go from there.

Marian:

Sure. Well, my interest in technology started when I was younger, when I first got the computer, and we can go into that later, but it it led me to going to college for a degree in computer engineering. Electrical was a bit hard. I switched to computer science. But then some of the after graduations, some of the first jobs that I got were mostly in support roles.

Marian:

I don't know if it was because they thought I was good at communication. So, it's a good kind of, role to be in if you can communicate between the programmers and the sales and the manage managers or management team. So I did support for a while with, like, minimum minimal, like, development right out of college, and then I always wanted to do more, but I eventually ended up getting into management. And I I enjoyed it in the fact that I could work with a team of develop developers and specifically at participant media as a broadcast technology manager. One of the things that I was doing there was leading a team to develop the over the top app, which basically is a mobile like, an app for mobile or tablet where or even desktop where people could log in and then view the TV being streamed, the TV channel.

Marian:

And that was great, but I also felt like I was missing something. I really wanted to do more of the building and not just managing the development of this app Mhmm. For Pivot TV at the time. So that was actually the year that I taught myself Go programming, and I was taking some side jobs along with working full time at pivot, including, a start up with Matt Ryar and Natalie Pistinovich, who I don't know if you know. You might know them personally.

Marian:

Oh, is she the one that is that

Dominic:

yeah. She is she the one that cohost, the Go Time?

Marian:

Yes. And she also started GoProCon EU. Yeah.

Dominic:

Nice.

Marian:

So I ended up doing a hackathon with the start up, and then I ended up working there full time. I switched because pivot TV shut down, and it was just a good transition since I was already getting really, into Go development. So I worked with them, and then that led me down this path that I'm in currently.

Dominic:

Yeah. That that is great. I mean, this is, this is very interesting. So and and you while while that time you wrote you wrote a book on on CLI, and you gave a couple of of talk at, at Go Go Conferences. Yes.

Marian:

Now the the book came out more recently because it was about just a little over a year old, But about 2 years ago, that's when I started writing the book. Yeah. The book was released in March of last year, and it was in CLIs, and part of the reason why I got into it is because of some of my earlier experiences with computers. And when I was younger, I really got into, you know, command line interfaces and CLI tools. And my earlier experiences were on BBS's, so that was almost entirely text based, if not like ANSI when playing games.

Marian:

So

Dominic:

Yeah. The good old time, I would call I would call that.

Marian:

Yeah. Yeah.

Dominic:

For me at least. For me at least. I'm a I'm a huge fan of obviously, I'm a huge fan of of any anything text based. So so yeah. It's not it's not a secret.

Dominic:

I'm a blind person. So I mean, as soon as we are talking, like, 2 d stuff and when I when I what I mean by 2 d, I mean, you know, CLI for me is kind of 2 d compared to a graphical user interface in a sense. So, yeah, I'm really glad I'm really glad to hear that there there's there's a there's a lot of people still that that prefers CLI. One thing that that that impressed me was that you you said somewhere that that you read the entire MS DOS guide, at some point. This is this is this is crazy.

Dominic:

I mean, wow.

Marian:

Oh, no. I mean, the first computer that we got was, Windows and MS DOS space. So I was just really fascinated by the computer and part of that was learning. So I would just go through and learn about all the different commands and kinda like CD and make directories, but it also helped me learn how to navigate if I was dialing into a server, you know, a support server and looking for files. It was I think a lot of people that are in tech when they were younger, maybe not all, were, like, kind of fascinated with hacking.

Marian:

And so

Dominic:

Oh, yeah. Absolutely.

Marian:

Part of that is like

Dominic:

So you you you would you would say that it's probably that oh, I'm sorry. I think, I think we have some lag here.

Marian:

Yeah. There's a bit of a lag.

Dominic:

So would you I

Marian:

missed what you said.

Dominic:

Yeah. Would you say that this is, this is what, you know, drove you to computer science?

Marian:

Yeah. Getting the first computer when I was 12, it was interesting because my dad only wanted me to use it for school reports. But then he would find me on the computer, like, in the wee early hours just, like, dialing into VBS's and, you know, just learning more about it. So and then it got into, like, me wanting to take it apart and upgrade it. And yeah.

Marian:

And then I didn't know that computer science was even an option in school, but one of the people that I met on the BDS that I dialed into, which was, one of the first ones was, TOTC, which is temple of the screaming electron, but then I ended up dialing into a more local one called Realm of Mirage, which I'm still friends with, the person who was running it. Like, it was started by her father, but, I met people through that BBS. Some of them, like, hackers, and they're in technology today, but they were the ones that said, oh, if you're interested in this, like, maybe consider software engineering. I was like, what software engineering? And they sent me, like, a, like, a PDF of, you know, how to learn c coding.

Marian:

And that was when I was, like, 17 or 16, and I was really interested in that. So that's why I ended up going to school for computer science. I was just lucky enough to have a computer at, you know, 12 and be able to find a local b b s randomly and then meet people that could guide me towards a degree that I didn't even know existed, because my family wasn't into technology.

Dominic:

Yeah. Yeah. I hear that a lot. It was the same for me as well. So we we we, at some point, we had this Apple 2, when when it you know, it's, in in the mid 80.

Dominic:

And the problem was I was very, very young at that stage. But the point is, I know that I would I would I would like to return there, but there there was just no help. There was you know, my my parents could not help me at all. They they they were not even able to read in English. We you know, like I was saying, before we start recording, we speak French in Quebec.

Dominic:

So, I mean, all the manual, all the help, was in English. So finding people to help younger, I would say, engineers to become in the eighties nineties was kind of very hard because there were no Internet and whatnot.

Marian:

Oh, yeah. That's true. I didn't even I mean, there was Internet in the eighties nineties. I it's basically how I found my friendship group, you know, outside of school. Are you still there, by the way?

Marian:

There is a bit of a lag.

Dominic:

Oh, yeah.

Marian:

You can still okay. Yeah. Yeah. I went to a private school, actually, and, I didn't I didn't really know many people that were into technology except through meeting them through the BBS. And what was kinda neat was that a lot of them ended up in technology roles.

Marian:

Whether or not it was, like, software engineering, it could be, like, getting into security type roles, like a CSO role or people that are working as, like, IT managers today, but we were all, you know, kids just exploring the Internet back then. It was nice to meet people who were a little bit older who could guide me too.

Dominic:

Right. Oh, yeah. Totally. Yeah. So so let's, let's jump back to to CLI for for a moment.

Dominic:

So I I was I was intrigued to to hear you talk a little bit about, you know, for me, yeah, it's not a secret. I will always choose a CLI over any GUI. But it's still it still needs to be done right. And and one thing that I I you know, we we all know that it's pretty hard to to name things. And so I I was wondering if you had some tips or or if you have any anything to say at all about how to properly think about how to structure, you know, the, either the commands or the argument or the flags that that the CLI is is going to to be offering?

Marian:

Yeah. I think you just wanna make it as intuitive as possible. And part of that is looking at some of the most popular CLIs in use today. And you could see, like, if someone studied all of these CLIs, like, what are the common, common commands that are used for certain things? If you're doing something similar, go with what, you know, what that command name would be most likely with a more popular CLI.

Marian:

Also, I find interesting and kind of cool that is the AWS CLI uses a lot of, like, the Linux commands. So they'll include, like, LS in there, a short for list. So that's, you know, very intuitive for people who are working in Linux or Unix, for example. So they would include not just, you know, very common intuitive names for these commands and flags that are most often used, but also integrating in, you know, the Unix or Linux commands into the CLI wherever possible.

Dominic:

Right. When you are building a CLI, so what what do you do in in terms of how do you decide with which will be your and I'm not talking about flags. I'm I mean, for for a a little bit bigger CLI, you know, than, you know, if you if we take Docker for instance. So so we we have a lot of we we have a lot of sub sub part and things like that. So, I mean, do you do you find yourself finding those those things early on the development?

Dominic:

Or it's something that that came to you at some point and you you said, oh, you know what? I changed my mind. This this should this should be name, x instead of of y, for example.

Marian:

I mean, it's good to think about it early on. Like, I like to think about not just, you know, the commands and the flag names, but even behind the scenes, like, what is the name of the function or the variable? And it all kind of ties together. It just you wanna make things not only easier for other people, but easier for yourself. I typically don't end up looking back and thinking like, oh, I should've named it something different.

Marian:

But I can understand if that could happen, especially for someone who's just getting into programming and just trying to figure out, you know, how they should be naming things. But you wanna name your commands and flags and variables just something that makes sense, like, when you put it all together so that it reads like a sentence. Especially with code, you know, if you're interjecting a function into a piece of code, if you can read the code like you're reading a paragraph or you're reading something, like, it would make sense.

Dominic:

Yeah. Yeah. Totally. Is is is it part of of what you are doing at at Netflix? Are you are you doing a lot of CLI, you know, command line, tools, maybe internal internal things?

Dominic:

I mean, why why have you created so, so so many content around CLI yourself?

Marian:

Mostly, it was an interest of mine, and, also, I love Go. So Yeah. I was reached out to by PACT, and they had a couple options for, you know, book subjects, and c CLI was just one of them. And so for me, that was just the most interesting one that I wanted to get into. As for the work in Netflix, I have written some agents that are running on the artist workstations, and they do have a CLI component to them.

Marian:

It's nothing, like, fancy. I was initially hired, actually, to write these Go agents that are running on the artist workstations globally around the world, on either physical machines or on AWS instances. But then, you know, once those have been developed, they're currently just in mostly, like, maintenance. So if there's a bug that's found or something that needs to change on the workstation and then the agent needs to change, then I'll do that. But there's not too much work that has to be done, like, once it's developed.

Marian:

So I'm actually working and developing in other languages at Netflix. So

Dominic:

Yeah. And is it is it also, CLI, or or it's it's something else completely?

Marian:

It's something else. I'm actually developing, back end services in Java, and I am currently really enjoying developing a new UI for the artists that want to connect to their remote workstations.

Dominic:

Nice.

Marian:

And that's in React React and TypeScript. The back end is a Java DGS domain graph service. The reason why it's written in Java and not Go is because Java is the paved path for Netflix. So I I got really lucky that they thought that they needed some agents written in Go, and I applied. And it was perfect because I could just, you know, start working there and write these agents in Go.

Marian:

But, it's not a Go is not used extensively at Netflix because it's not the paved path. But they do have some internal COI tools, and some of them are written in Go.

Dominic:

Nice.

Marian:

But they're developed on other teams and not mine, unfortunately.

Dominic:

Just between you and me, is it is it hard to go from, you know, Go to Java sometime? Just between us.

Marian:

It was interesting because, actually, I had an internship at Xerox when I was a sophomore in college, and that internship was all in Java. And so that was the last time that I coded in Java before restarting about 4 years ago. And Java has changed a lot in good ways. The thing that's kinda difficult about Java is I feel like I'm going backwards when I go from Go to Java in terms of how the code is written. For example, in Go, you don't write an interface unless, you know, you're going to be I mean, there's, like, a purpose behind that interface because there's multiple things that are going to be, you know, passed in and connecting to it.

Marian:

But in Java, it's almost like you write an interface by default. With Go, it's like, it's not the case. Right? Interfaces by Deepgram. So the engineering aspect of it is different.

Marian:

I still look at Go, and I feel that Go is my favorite language because when I write code, it just looks so clean and simple. And, yeah, it's just a different way, you know, of structuring the code. The syntax is different, but, you know, I love working with other languages because there's still that underlying similarity between all of them in logic.

Dominic:

Yeah. What what about, have you have you built any web application in Go so far? Have you have you done any, any cloud, you know, development other than CLI?

Marian:

Oh, yeah. I mean, I've not like not like I was working in a company and developed, you know, a web app from scratch, but it's kind of how I got started when I was working at participant is, you know, building stuff for production that could help automate things. And then the start up that I was working with, Matt and Natalie. We ended up you know, there was a UI. The UI development was done by other engineers, but we were writing, you know, the, you know, the HTTP service side.

Marian:

So there were end endpoints writing, like, the endpoints and then the handlers. So I've done I've done that as well.

Dominic:

Great. Did Not

Marian:

just at the start up, but

Dominic:

Did Matt forces you to, to do a TD at all? For We did.

Marian:

He didn't force us, but it was definitely since he was the architect. He, you know, was amazing to work with because I felt like I learned so much just being in that space with him, seeing, like, how things were developed, and it was it was a great opportunity, but it was also inspiring to work with Matt and Natalie for you know, with everything that they've done. You know, he has also written plenty of books, and Natalie started GopherCon Nightyear that we were working together. So

Dominic:

Yeah. Yeah. You you are you are very lucky, to be frank. I mean, I'm I'm sure there is a couple of of gophers that listen that that says, well, yeah. I can imagine that it could be it could be nice to work with them for sure.

Marian:

Oh, yeah. It was great and inspiring, and I think it led me down the road. Because even though I already was starting to get Indigo and I was really excited about it, for that to be my first place to work, it really kind of helped continue that, you know, feeling of just being so blessed and happy to to be getting into Go and to be surrounded with such amazing engineers.

Dominic:

Great. So is is there any anything, in Go that that you are missing from from Java? What what about what about, you know, all the the data manipulation, for example? You know, connecting to database and, you know, I I I know that if if if Java is anything like, like c sharp, there there's a there's certainly a couple of predefined ways to, to model databases and and and things like that. I mean, it's it's still it's still interesting in Go how much it is verbose, but I I still like it.

Dominic:

Don't get me wrong.

Marian:

It is. Yeah.

Dominic:

Is it is it something that you're missing?

Marian:

Yeah. That's a good point. Like, I don't really think about it too much because a lot of the Go development that I was dealing with at Netflix was, like, these agents that were very simple. I wasn't, doing a lot of data manipulation with these agents that are running on the workstations. If I was, then I probably would miss it.

Marian:

That's why I like to say I mean, I love all these different languages, and I like to think that, like, if you if you are gonna do something with a lot of data manipulation, that, you know, Java would be a lot easier to, you know, build with, then I'd say, like, go with that. It is you're right. It's a lot easier dealing with, like, databases and data manipulation in Java. It's pretty amazing how quickly you can transform, like, a list or Java into some other type Yeah. With the way they handles, like, mapping and filtering and all of that.

Marian:

But for every and go ahead.

Dominic:

I'm sorry. Yeah.

Marian:

Go ahead. Thinking, like, for every different thing that you build, I feel like there's a different tool that would be good for it. Like, front end development, I would still it's it's interesting because there are certain frameworks in Go I've heard, and I haven't really done that much with them that allow you to build, you know, UI in them. And I would love to play around with that and see, but I'm maybe so used to React that I would just default use React and TypeScript for a UI. Yeah.

Marian:

So different tools for solving different problems, basically.

Dominic:

Sure. Yeah. I I think React is all fine. Type ship is is nice, at at some point. Sometimes.

Dominic:

What my my biggest, you know, the thing that I dislike about this this ecosystem is, like, when you are returning to to an old project, let's say it's 2 years after and you're trying to build it, your build system is always is always broken. It's less and less true though with with ES build and and things like that. But I mean, the the the front end always was for me this this 2 or 3 days at some point where everything is broken and and you still you still need to, to fight the, you know, your your build system and and things like that, the dependencies and whatnot. I mean, that that to me feels really bad. So that's why I I was really, really enjoying Elm at some point.

Dominic:

Unfortunately, it never never really took off. But to me, Elm was Wow. It was so beautiful and so easy to to just have I I wrote a blog post. I think it was, like, in in 2017 and or whatnot that, like, I was I was saying something like, you know, all goal developers should should try Elm because it it's so similar in some point. And I'm not talking about the the programming Paragdim because it's a functional programming language.

Dominic:

But the tooling, the fact that, you know, every everything is there, the dependencies are extremely slow solid. To me, it just made no sense that go developers that that do front end development were not at least testing Elm.

Marian:

Oh, okay. Well, that inspires me to actually wanna check it out and and play around with it. I have heard good things about Elm. Now when you say that the way that you talk about it, though, it seems like is it no longer being improved upon? Like, is it still out there in in use?

Marian:

Is it just not very popular? Or

Dominic:

Yeah. That's the thing. So it it never really took a you know, it it always was only a a small amount of people. But, I I think from probably the last 4 years, it's, it it's not really maintained anymore. And, I mean, there's I I I would not, you know, you would you would not use your your time well, I think, to, to try it these days.

Dominic:

But, yeah, that that's very sad because front end problems that that, you know, NPM and Node and and and and JavaScript is is bringing to the table. So to me, it was it was very clear. But there's only, like, 10,000 people that that was thinking like me or something like that. So it always it always was a very, very small language. The problem is is also that front end people.

Dominic:

I I showed that at some point. I was owning a startup in 2016 and we we had 1, 1 front end developers. And when when he saw the functional programming, you know, it it was not clicking with them. So, so that that might be a problem as well for Elm, in my opinion, is that it it seems to be targeting as a more I don't I don't know how to phrase that correctly, but let's let's just say that people that are doing only React and JavaScript in in their career might might be extremely repulsed by by Al.

Marian:

Okay. Well, it's so funny how, I mean, I know what you're talking about when people get used to developing in a certain way, but I think that maybe a large majority would be, you know, repulsed by it, but it definitely takes an open mind. What you find is that there's some people out there that like to do things like how they've always done them, and, you know, something that takes them away from their comfort zone can be repulsive, but it's I don't know. Like, I think it's good to stay open minded and to try out, you know, different things in the way you're developing. And like you're saying, like, if you liked Elm, having that different mindset helped you to, you know, develop with something that makes UI a lot simpler and dependency management a lot simpler and cleaner.

Marian:

So just you talking about it makes me wanna try it out.

Dominic:

Oh, no. No. I mean, I'm I'm I'm extremely passionate about about that because the for me for me, it all it all starts with, is the language going to provide me with a good good tooling? And this is also why I am not as into Erlang because I I tried it. I I'm one of those that would like Erlang as a language.

Dominic:

I have no problem with, with the, the the the, you know, the syntax and whatnot. But the tooling is is not working. A little bit same for Elixir. So but Elm is just just like Go. Go when I discovered Go, I I started writing Go, almost in, the same time as you in in 20 2014.

Dominic:

And it I I'm I'm coming from, a dot net background. I I did some, some, node development after that. But once I tried Go, I I I really found what I like in my developers day to day. And and for me, it started with the tooling. What is the experience I have from the language, from the command line point of view?

Dominic:

The compiler, is is it going to help me? And I'm I'm mostly talking about a blind person here. So I I might be biased towards some things that normal sighted people don't don't have. But for me, I mean, the Elm compiler is is just it it was a Copilot way, way before, GitHub Copilot existed, to be frank. Elm is a beautiful, beautiful piece of of software.

Dominic:

Of language. This is, yeah. I'm still still very fond of it. But, yeah. Unfortunately, it, it's it did not work.

Marian:

Yeah. So it's not being supported anymore?

Dominic:

Well, there there was basically a a one one person, a little bit like like Python, a dictator for life, a benevolent dictator for life. So and, so, yeah, there was some some kind of, you know, drama around people wanting to contribute and and, you know, the author of the language not really want wanting to accept things and things like that. You you wanted to move very slow, which I I really, really like. So that is something that is something that I I have against Go at this at this point is I'm I'm not particularly liking the fact that they they are releasing twice a year or whatever. I mean, we don't need to go as fast.

Dominic:

We don't need to always add new feature to a language, in my opinion. I really really enjoy stability and It's it's nice to have some new new things here and there at at some point, but it I don't know. I mean, so sometimes you you you are often hearing people saying that, you know, a a package is not maintained because, oh, there there hasn't been a commit since since 1 year. I mean, it's it's not a problem. I I don't see it as a problem.

Marian:

I agree. Yeah. Yeah. I feel the same way. I don't Yeah.

Marian:

I don't see it as a problem. Like, I don't think that you need to move fast, especially if, you know, things are working well. The thing is you want to make sure that it has basically everything you need for what you want it to build. But once it has that, I think the only thing that might be important to do is that with new hardware, for example, like, there might be some changes on the back end. But, yeah, just or just, you know, anything in general new that people are starting to build.

Marian:

There might be some changes. I mean, it's interesting though that you say that because I think Java and Java's still making changes today to their language. And some of the features that, for example, like, exist in in Go that didn't really have an easy way to do in Java. They're, like, currently doing that. So

Dominic:

Yeah. Yeah. This this this is this is explaining a little bit why I I have this those thoughts because I'm I'm coming from a, you know, a a huge dot net no, huge. You know, my my first my first 10 years were building, you know, line of business dot net application. And I have been bitten so many times by Microsoft.

Dominic:

They they were releasing something new. Oh, you know what? You will you will have a new frameworks to, to model your database. And and 2 years, 3 years after that, it it was gone. Oh, we are we are launching, Silverlight, and you will be able to build.

Dominic:

And and what I did, I did some project in Silverlight. And 2, 3 years after that, boom, it it was gone. So, I mean, at some point, I I really, really enjoy stability.

Marian:

Oh, yeah. Yeah. Me too. Also, like, you don't wanna have to keep updating your code. But I think Yeah.

Marian:

It's, you know, to match the latest version of support and everything. But it's just the nature of technology, though. I feel like it's just always changing, and I feel like there was this one quote. I might have, like, put it on my Twitter that some famous software engineer compared, software development to, like, mowing a lawn. Like, you always have to go in and, make updates and clean it up and things like that.

Marian:

So

Dominic:

Oh, yeah. So totally. Totally. But but still, at some point, we we are very lucky in Go that at least they, you know, there there's a there's a a one dot zero backward compatibility. This is nice.

Dominic:

I I recompiled a very, very old code base from 2017. I think it was 2 weeks ago, and it was building as is. I was like, wow. Did you know, this never never would have happened in in almost all of the other, you know, languages that that that I've written in so far.

Marian:

No. Exactly. It doesn't. Yeah. I'm I'm just thinking of React to Node and whenever there's an upgrade, I feel like it's it's a mess.

Dominic:

Oh, yeah.

Marian:

Yeah. With Go, it's really nice for that backwards compatibility, which is, I think, is in line with how, you know, the clean code, just like clean upgrades. It's it's one of the reasons why I find it such a great language and why I love it.

Dominic:

Have you have you tried, anything else to to write, command line or interface?

Marian:

When I was teaching myself Go in 2014, I was simultaneously teaching myself Python. So I have done some CLI work with Python, nothing major though. Also, I mean, just back in the day, there was some development that I've done with, like, c plus plus but, primarily, it's been mostly Go.

Dominic:

Yeah. Nice. Yeah. One one other thing returning to Java that that I that just hit me, Java and dot net, is is that the the the cognitive load on a new developers is huge. I I I have trained a couple of of junior developers in in my life.

Dominic:

And what what they are feeling at first is that this gigantic frameworks and and all of those libraries that that that are part of, you know, quote unquote the the core library of of the language, if you will, but it's so it's so huge. It's very helpful when you are mastering them. But as a junior developer, it it always felt, very intimidating for them, I I sense. Because they never knew, oh, you know, should I write that? Or is that a function that exists for you know?

Dominic:

It's always it's always interesting how junior developers are are, you know, confronted to to having to learn this this entire thing.

Marian:

Yeah. I agree. I I mean, I went to school for computer science. And did you graduate from

Dominic:

university I have a no. I I don't have a university degree. No. It's, I I have a we we have something in Quebec just before the university. Mhmm.

Dominic:

Yeah.

Marian:

I just feel like there's so many self taught software engineers out there, and they're also just amazing. But for someone just starting out, I do feel that Go has a leg up because of its simplicity. That whenever I meet someone and they're like, oh, I'd really like to get into, you know, programming, I recommend Go as the starting point just because it's got, like, a smaller set of keywords and simple syntax that, you know, once they feel like they master go, then going to another language, can be a bit of a jump. But they can also they can all also take, you know, that simp the programming, foundations that they developed while learning Go, like, into that. But the the structure of how you structure the code can be a little different.

Marian:

And, like, I was saying with the interfaces in Java versus in Go, there's just certain different coding standards within the different communities.

Dominic:

Yeah. What what I'm seeing is is is might be that, though. The the only thing that Go that Go have is some people are, you know, they are nervous about the lack of structure. So they they it's it's a question that is returning again and again. And I don't understand.

Dominic:

I genuinely do not understand why people you know, let's let's say someone is coming from Rails, for example, where there is a huge, standard for how how the things are structured and and, you know, a file, a controller file goes air and etcetera, etcetera. So in in Go, I I really enjoy myself, It's a blank slate at the beginning and you are building your own structure. It should not put that pressure on on people, but I I mean, it's a question that I I I keep keep seeing all the time.

Marian:

Yeah. I feel like there's a specific psychological term for it. Like, when you have, so many choices, you feel overwhelmed. It's like information overload, or just people become overwhelmed just by a choice. Freedom can be paralyzing for some, which is weird.

Marian:

Like, that's why school school, having guidance in terms of, like, even how to learn gives people help, and I think it's just the fact that many people have different ways of learning, and some people can learn very well on their own and teach themself coding if they have their own way of structuring it for themselves. But others need that structure of, you know, a teacher guiding them or, you know, showing them, you know, step by step how to get something done. Yeah.

Dominic:

Yeah. Yeah. I understand what you're saying. But, I mean, in my opinion, this is still 2 2 separate things, you know, being being thrown directly on a new language that you don't know. I mean, and anyone anyone would would at least need some kind of guidance at first.

Marian:

Yeah.

Dominic:

When when I'm talking structure, I'm talking more about, you know, directory structure, packages and whatnot. This this seems to be blocking a lot of people that is that are coming from, you know, you know, .net, Java, Ruby on Rails, Django, you know, Python and whatnot. Where where when you are writing a type of of programs, the Yeah. The language or or at least the frameworks is is create is creating some boilerplate for you. And and so, I mean, this this is something to think a little bit about.

Dominic:

You know, maybe maybe there there's something there's a couple of of, templates already existing out there, but Yes. Maybe it should be in the in the Go tooling directly. I don't know.

Marian:

I don't know if it should be in the Go tooling directly. But at least for CLIs, what's really amazing and love about COBRA is that they have that CLI, tool, COBRA CLI, that basically when you do cobra init, it'll generate the scaffolding and the folder structure for your commands. So when you do, you know, COBRA, like and then to add the command, it'll put it within the CMD folder. I think it's nice because it gives people the structure that they need. It gives them a jump start, and it's very logical in the way that it structures all the commands.

Marian:

Now structuring and web app written in Go is gonna be different. But beyond that, I think, you know, there's different higher level structures that people can follow. And it can it can lead people into, you know, certain traps, common traps, like stuttering. You know?

Dominic:

Right.

Marian:

Yeah. I know it can it can be difficult.

Dominic:

Oh, yeah. Oh, yeah. Yeah. I'm I'm not minimizing the difficulties for sure. I'm I'm just wondering if if there's a way to help the people that that are switching because it's a question that is returning every week, every day.

Dominic:

This is kind of crazy. I'm curious to know if you find it strange that the, you know, the standard library flag package does not handle the one letter, with with 1 dash and the the words with 2 dash for for for parsing flags.

Marian:

Yeah. It's different in Go that, you know, it it doesn't care whether it's, like, a singular double dash. That's kind of unique about it. I also find it kinda nice, though, because I feel like it trips people up. So if you remove that, I think you're more often like, your users are more often to get it right.

Marian:

You know, if they put a single or a double dash, you know, they'll have the same outcome. So just by default.

Dominic:

Yeah. Yeah. Yeah. I I get it. I I hear you on that.

Dominic:

Although, I mean, it it's so standard in in Linux and Unix and what not. I mean, this is to me, it's a little bit I'm not sure I understand exactly why it's there because the standard is is for for the majority of of the of the tooling and the you know, if you take the the GNu Core Util, for example, they all have that format. So it's I don't know. It it to me, it it seems like something that it it should be there. Yeah.

Marian:

No. I I agree. Now I haven't it's so you work primarily with, like, when with, Linux and Unix. Do do a lot with, Windows as well? Do you like

Dominic:

I I I had to to get back to Windows in 2 or 3 years ago because now I'm using a screen reader full time. But the majority of my day, I am in the subsist subsystem for Linux on Windows. Before before that, I I was running, I was running Linux, all the way. But, I cannot do that anymore, unfortunately. And the Yeah.

Dominic:

Access the accessibility is very, very bad on Linux. I I I wanted to contribute to Orca, which is the screen reader, but to be frank, I'm not very good in, in in c+. I I think it's in c+. I don't really like this language, this environment, this this ecosystem. It's not really for me.

Dominic:

So, yeah, I'm on Windows now.

Marian:

I mean, that was the first language that I started learning when I was in college. My whole college was it was they were training in c plus plus.

Dominic:

Yeah. Me too. But but still. I know. I miss the language, and sometimes I think if I went back to

Marian:

it because it's been so long since I've coded in c plus plus that I would probably have difficulty with it. You know, if you haven't done something in a while, and then hopefully, you think maybe I wouldn't. It's like riding a bicycle, but I don't know. Yeah. As far as the flags go and, you know, singular, double dash, and the standards, I I don't know if it's you know, they've looked at all these different CLIs, and they feel that, you know, that standard trips the majority of people up.

Marian:

I'm not sure what their thought process was

Dominic:

behind it. Ken Ken Thompson Ken Thompson should have thought about that. He's the the co author of of UNIX. So, I mean

Marian:

Yeah. Yeah. That's true.

Dominic:

There has to be a reason, but I'm not sure. So I also use, Cobra most of the time. It's really, really nice. I also enjoy it like you. So have you have you tried any other libraries, to, to help you?

Dominic:

You know, I I heard a lot of things about bubble tea and whatnot, but, you know, have you have you tried that?

Marian:

I have played around a little bit with charm bubble tea. It's so weird. I know it's so popular, and I feel like I should continue trying to play around with it and build something in it. So I think that's something that I'll spend some time, you know, playing around with. But I first got into TermDash.

Marian:

I don't know. Have you heard of TermDash? It's another, UI framework for Go. I don't know what about it. Personally, for me, I feel that the layout and building, like, a terminal user interface just is so simple in term dash and intuitive.

Marian:

And even the way that you, add styling to it is very similar, at least, like, coming from a front end experience. I feel like it was made for someone who has been doing CSS or, you know, UI, styling to then move into term dash. So I really liked it. I thought it was super simple to get started in. I didn't get that feeling from charm bubble to you, which I think is a very unpopular opinion, But I could definitely play around with it and get more into it.

Marian:

So did you have you built anything with charm and bubble tea?

Dominic:

Well, unfortunately, they are they are not accessible. This is something that I, I I I created an issue. Well, they they were already already an issue there. I I commented, but I was supposed to, to try and and see. But yeah, just just like you as well.

Dominic:

I don't know. I feel like, you know, for for me, it's term bugs that I really, really enjoy. I know that it's not really to build dashboard and whatnot. I think Term Dash is built on top of Term Box, if I'm not mistaken. But, I remember having written written a very, you know, dirty, simulate simulation game.

Dominic:

We did a road trip, I think it was 3 or 4 years ago. And I was with my younger kid, because I'm not driving, obviously. So I was building like a simulation game, in turn box. It was pretty nice.

Marian:

That is amazing. Also, I find it amazing that you, are blind, but you're also coding, and it would be really interesting to hear about the tools that you use. Or any other so you have built with Term Box, and you're right that term dash is built on top of Term Box. And you've also played around with charm bubble tea. So what is your comparison of them?

Marian:

Because I have mine. I I do have a preference for term dash in the fact that I feel like it's more intuitive. But maybe

Dominic:

I haven't played much with with bubble tea, though, because it's it's still, unfortunately, it it's not accessible. So to me, it's very difficult. I was I was lucky enough to to still have, you know, enough enough vision to discover Termbox and and Term Dash back in the days. So today, I'm not even sure that I I would have an easy time to use them. But I I I believe it's just simpler, with with term Dash, to be frank.

Dominic:

But also, there there's not much there. There's a couple of UI well, UI. There's a couple of component, if you will, but I I think, charm is is building something, it's it's it's a little bit exhaustive, to be frank. But, I mean, the it seems seems to be, to be bigger in my from what I understand. But I I lack the, the proper experience, to be frank, to to really comment.

Marian:

I see.

Dominic:

Because that that's the challenge because, like like yeah. Oh,

Marian:

I've seen some great things both with charm and bubble tea.

Dominic:

Yeah. I I I think our lag is now extremely difficult to work with. I think we have, like,

Marian:

a 10 second difference. I'm sorry. I

Dominic:

don't know. That's fine. But I think I think I will, we will need to end the call to that. But do you have any closing thoughts that you want that maybe is anything that we haven't covered? Do you have any, you know, where where people can find you?

Dominic:

We we will have all all the links in the show notes, but if you have a closing thoughts, it's a good time.

Marian:

Yeah. You can find me on Twitter, and you can search for me by name. And I just wanted to say for anyone who's new to developing, like, I highly recommend starting with Go. It's a very simple language to start and try writing a CLI. I think that's an easier step to start with before jumping into writing, web services with Go, because you can really create something and do something quickly and simply with Go.

Marian:

So if anyone out there is going to go that route, feel free to reach out. I'll be happy to answer any questions and all of that. But I really appreciate you, Dom, having me on the podcast, so I wanted to say thank you to you, and thank you to all of the listeners today.

Dominic:

Thank you very much, Marianne. Have a great day.

Marian:

Okay. You too.

Dominic:

Alright. That's it for this week. I would really appreciate if you can talk or share about this podcast. It's it's always helpful. Also, another way to support this show is by purchasing my course.

Dominic:

There's always a link in the show notes. So on that, see you next week.

Creators and Guests

Dominic St-Pierre
Host
Dominic St-Pierre
Go system builder - entrepreneur. I've been writing software systems since 2001. I love SaaS, building since 2008.
Marian Montagnino
Guest
Marian Montagnino
engineer + artist
040: CLI in Go and other tech talks with Marian Montagnino
Broadcast by