 Okay, so I've got this question here by Philip. Thanks for watching, Philip. I just wanted to answer some of these questions sooner rather than later. So Philip has a couple things to say here. He says, hey, really nice demo. I've been using Dataspell and VS Code for some time for Python data science projects, but just found out about Neovin lately and love the concentrated and focused environment. That video shows a lot that is possible and is very inspiring. Just some questions I stumbled upon while trying it out for myself, and maybe you can answer them. One, any reason for using iron repel and not VIM slime for data science? I am pretty sure you could get very similar results with VIM slime, and so I don't have anything against VIM slime. I just picked iron repel because it's part of the Lua and VIM environment, and I figured it would just play nice with my latest Lua and VIM configuration. It also looks like it's been going through a lot of recent development, so maybe there's some excitement about that. I'm guessing that just means there's potentially some newer features involved in iron repel, but as I say that, I realize I probably wouldn't use that many new features. I really don't need the repel to be that feature rich. Let's see, question two. Whenever I print Panda's data frames, they look very ugly. Is it a Julia thing? They look way better, or do you use another tool? Let me see. All right, I haven't really thought about that. Let me see. So I'm going to go, actually, I might be able to just stay in this folder, and VIM a.py. Never name a file a.anything. It's a bad habit. So first of all, it looks like I have PyRite, language server, not executing in VIM, blah, blah, blah. I'm not too concerned about that. I've been using co-pilot so much that this isn't that big of an issue, and this is such a simple script. I don't even need to, I don't really need to make sure that my language server is working. All right, import pandas is pd, pd.read, csv. Let's read nycflights.csv, let's see. So he says they look ugly. I guess I'll say this is df, and then print dfhead, sure. So let's run python a.py. All right, I guess that looks a little bit ugly. What am I, after reminding myself what's going on here? All right, I meant add. Oh, I wasn't even thinking. I got to send this to the repl. All right, let's try this again, take two. First of all, let's get the fonts right, decrease the font size. Let's try this again. All right, so let's send all this to the repl and see what happens. I wouldn't say that's ugly. I think it looks all right. Let's just try different csv. I'm trying to think what ugly means here. Okay, so I'm guessing that the issue, so when I look at the screen, what's happening is pillar, which is part of the tidyverse R ecosystem, does some really nice formatting to make sure that these columns look nice and gives them a type and prints them out. So what you're seeing here is the output of a tidyverse data set. It does look nice, but I don't think that should stop you from running things in a python environment. I'm trying to think, if I can remember, I'm trying to think if I know of a way to make Panda's data frames look nicer. You know what, maybe, let me just see what pullers looks like. Pullers as pl and let's change that. Looks like I don't have pullers installed. All right, let's try installing pullers. Okay, let's give this another go. That's worse. Let's make this window a little bigger and see if we get better results. We can make this look nice. There we go. I think that looks a little bit better. In fact, okay, now it's kind of coming back to me. I know that there's different configurations you can set for Panda's and you can also set different configurations for pullers. So it's just a matter of setting the configurations. So I would say just go to the docs for either Panda's or pullers, whatever you prefer to use in Panda's and Python, and play around with it and see what you like. Okay, let's go to the next question. I have to use SQL quite a bit to query Redshift. Any recommendations for working with that nicely in NeoVim? Maybe also some shortcoming I'll have to live with when using NeoVim. So for SQL, one option that is recommended a lot is DadBod. Let's see, VimDadBod. So with DadBod, the way this works is you send in the string for your SQL connection and then you can use DadBod commands within your NeoVim. I also saw a UI layer on top of it. Let's see, maybe this is it. Yeah, I haven't actually tried this, but it looks pretty nice. It looks a lot like a SQL editor, but I can't really vouch for this because I haven't used it. I'll have to do a video on this at some point. I've been wanting to do a video on this at some point. Right now what I do is I just, usually when I'm using a database for my own use, I'll use DuckDB, and so I have a DuckDB database on my local computer and I'll use that for querying. But DuckDB doesn't have to go through a server. Like it's a lot like SQLite. You can just query it directly from your computer. If you are using Redshift for work and at work I use lots of those same tools, but if you use Redshift for work, I'm guessing you can still pass a command line argument. It just might not be as comfortable as if you were to use something like DBeever, where you set it up one time in the GUI interface, and then it's kind of locked in every time you use it after that point. But I guess on the flip side, once you have that connection string, you could, assuming that there's a robust CLI for Redshift, I haven't really used a Redshift CLI, but I'm guessing if there is one, you could just save that command line string or just run it once in your terminal. And next time you need to run it, you just hit the up arrow until you get it again or use control R to look at that command again. So I'm guessing it's somewhat straightforward. And once you have that connection string, you could just open up nvim and sql in like a sql syntax, language server, environment, and nvim. So let me see if I can... I'll just show you an example of what a sql file could look like. So we'll do example sql.sql. So if I just start typing sql statements, I start getting that sql syntax highlighting. So this is kind of the experience you get is you type something in sql and then you execute a command in command mode. So you do bang and then have some commands saved in your command mode. You also, though, when I'm running sql, I'll have a split window open. So I'll have one window where I'm typing commands like this. And then on the split window, I'll have what is being executed on the command line. But for that, you usually need enter to track the files that are changed so it can immediately respond as you save a file. It's a really nice setup, but it just takes a little bit of maturity using command line tools to get to that point and be comfortable with it. Let's see, some shortcomings I'll have when using nvim. So I guess one thing I'd say is that I actually do think VS Code is a good IDE. I don't have anything against VS Code. I'll use it for work and I think it's a good editor, especially when I'm writing something like a code in Rust. I kind of like having all the little hints and help that it gives me. I don't really need all of that when I'm writing R scripts or Python scripts or SQL scripts. So I think it goes back to what the purpose, or I guess the original purpose of it is. Things have kind of evolved, but you could view Vim as strictly just a text editor. And so if you already have a file, a text editor would mean you essentially open up a file, make some edits and close it. Or if you have something really small to type, you can open up a new file, type a couple of things and close it. But that's not really doing just as to what NeoVim is today. NeoVim can include language servers, auto completion. You can look at your file tree. You can do quite a few things to make your life easier in NeoVim and do it in fewer keystrokes. However, so there is a caveat. I was going to say I don't think it would completely replace VS Code in all cases, but more and more there is all these Lua plugins that keep coming out. That really does close a gap quite a bit. Yeah, this is a tough question. What are some shortcomings you'd have to live with? Well, I guess I'd say this is just use both. No, there's nothing wrong with using NeoVim 80% of the time, 90% of the time. And when for whatever reason, you're feeling like you're just fighting with the text editor. If you ever get to that point, then you can switch over to VS Code and give that a go. Some people say Emacs is a really good IDE. So some people use Emacs and VIM. Some people exclusively use Emacs or exclusively use VIM. I would say when I'm at home, I usually am always using NeoVim at work. I would say I'm using VS Code most of the time. And from time to time, there's also maybe someone who's sharing a notebook with me. And so I'm comfortable enough with notebooks to be able to work with them. It's just not a tool I really enjoy using as much as I like using NeoVim or VS Code. So yeah, in my mind, I kind of have, I'm pretty happy with both of those technologies. NeoVim is able to handle anything I need to do for data science, but VS Code is a really nice Rust program. If you are working for a company that has some strict security, sometimes you can't easily install everything you need to install for NeoVim to work the way you want it to work on like a Windows computer. And so that's a caveat. But if you have a company that allows you to install what you want to install and maybe you have the freedom to use a Mac or Linux machine at your work environment, then I would completely go for NeoVim. But if you are on Windows, VS Code could probably be a better match. So just kind of use the right tool for the job. I'm going to just read through some of these other comments really quick while I've got the video running. Really great demo and looking for what use NeoVim and Lovar Studio. You know what? I have been using NeoVim as RStudio replacement. So that's an IDE I just don't use as much anymore. Four years ago, I was using RStudio a lot. And the Python equivalent to RStudio would be something like Spider, where you have a console, you have this kind of viewer window where you look at plots. But I've got a setup where I can look at plots easily. I just use SxIV, so within Vim I'll type the SxIV command and open up plots and look at them and then close SxIV. So I'm able to get what I need in NeoVim. And I do feel like it's kind of more of a Zen mode where there isn't that many distractions and buttons. You just, it's you and the text. And if you're looking at a plot, you can open up like a plot window onto the side that's going to be bigger than the console that you would get in something like Spider or RStudio. So I kind of feel like your real estate is used a little bit better in NeoVim. Or an alternative, instead of splitting Windows, you can have your text on one full window and your plot on another window and just do a quick switching to go back and forth. And that way you can have a full screen just to absorb what's in your plot with no distractions. And then you can flip over your text editor and start working on your text editing as needed. And the same thing goes for when you're doing data manipulations. You could have a completely separate window just printing out the data. And you have all that real estate, a full screen just to look at maybe a larger data frame. And that's something that's really convenient in NeoVim that you might not get in other situations. So let's take, let's actually take a notebook for an example. A notebook, in fact, let's see. I wonder, where can I go to find a notebook right now? Everyone's going to laugh at me. I'm sure there's like some Jupyter web server. The only thing that's coming to mind right now is Colab. So I'm just going to go to Colab really quick. All right, getting started. So yeah, this is a good example. I'm in Colab right now. And first off, you have this browser bar. You can't really do anything about. Like this is about as small as a browser bar gets. So I don't know what this fraction is. Maybe it's like, I don't know. What is this 3% of the screen? I have no clue. I'm just guessing. And then there's this kind of toolbar up here just for Colab with all these buttons that you really don't need 90% of the time. Like maybe there's only like one or two of these you go to, but once you know the shortcut, you just start using those shortcuts. And then what's the point of this toolbar? It's just taking up real estate. So already you've got this fraction of the screen here. Waste it on browser tabs, a search bar, a Colab tool tray. And we could pull this back here, this little side area. I think how far can we pull this back? There we go. We can pull that back all the way. And here we have this remaining space. But even this remaining space, when you start doing plots and viewing data, there's restrictions like plots, you'll see it can only be a certain size and then you have to do some configurations to make it larger. So I just don't think that that's a good use of real estate. But this is just my own opinion. Hopefully if there's new people watching this, I just want to let you know this is weird. Okay, most people love this kind of environment because you can just go straight to a editor in the browser. You don't have to worry about setting up a NeoVim configuration. So this is just as convenient as can be. Open up a browser and start writing code. What else is there? I guess that's kind of the main argument. It's just the real estate argument. I prefer to just have a separation of concerns. Have the text editing in one screen. Flip it over to another window to look at the large plot. Flip it over to another window to look at data full screen without some of these boxy constraints. Yeah, this is an example. Like the standard size of these plots are... Like I'm holding my hand up to the screen, the smaller than my hand. I mean, why not look at a plot in full screen? It's a really good way to just focus on that one part, focus just on that plot. I don't have a strong opinion about text being included with code. I do think that today, in 2023, we have Quarto as a good technology. So one of my complaints with this notebook technology is that it's not plain text file. Like if you were to cat a SQL file, you would just see SQL. If you were to cat a Python file, you just see Python. If you cat a notebook, you get a whole bunch of HTML. That's not something you would edit directly. You would load that Python notebook in a browser and then make edits. But you don't edit the file directly. I don't know anyone who edits it directly. But I think a good alternative is Quarto. This is something I've done a video on before. But the idea is that you have code fences within your plain text. So here's an example in R. You have some header information that's fenced off. And then you're mixing your markdown with some code. So this is an R fence here. And then you can render it in HTML. So if you really do like using this environment where you're kind of exploring things in a notebook fashion, you want your text mixed with your plots and your code. Quarto is really the way to go. And it's a technology that's available for Python R, Julia. Observable is mostly a JavaScript plotting library. I could see it could still be useful. But mostly the big three are Python R and Julia. And maybe you're wondering, well, what about SQL? Python and R both have libraries where if you do have SQL code, you can just quote the SQL and push it through. But I think this is the pattern of the future. You're getting all the benefits of a nicely displayed HTML document and having a plain text file, as opposed to all this HTML junk you get with notebooks. All right. Is there anything else I can comment on here? Really nice video. I'm still trying to do my stuff with NeoVim for Julia. I have a couple questions. Really quick. I think Julia is a fantastic language. And one thing I always say about Julia is that I'm a fan of how the matrix algebra looks in the terminal. It's kind of a weird thing, I guess. But it kind of reminds me of Matlab in that way. Julia just, they get it right. They get the matrix algebra notation really good. Or it feels intuitive for me. All right. Question one. The autocomplete you are using is co-pilot or is it another NeoVim package? So I just haven't gotten around to setting up other autocompletion in NeoVim right now. I had an old configuration where I had all the different language servers. And the language server technology is getting better. Again, Lua plugins are killing it. Like they're just doing fantastic. Work. But, and this is a big but, co-pilot is also amazing. And for the couple months I've had this configuration without really putting too much attention into if my language server package isn't really integrated well. I just haven't had to really think about that because co-pilot does a really good job doing autocompletion. It's not perfect. I mean, having a robust autocomplete language server is good. And there isn't really a full replacement for that. But because I know R really well and Python really well, it's not like a crutch. I don't really have to have that autocomplete. But co-pilot, man, that's nice. I can write in the comments what I want to happen. And a little bit more than half the time it nails it. Like it really gets what I'm going for. Maybe I want to name things a little bit different but the logic is there. And so co-pilot's saving me a lot of time. And I like using it quite a bit. Point two, I was really interested, let's see, I was really interested in how you are displaying the images there, what package are you using? Okay, so yeah, let's talk about 6.4. Or I don't know, I started calling it 6.4. It's probably not called 6.4, but SXIV, suckless. Yeah, why do I call it 6.4? There's not even an I, SXIV. It's called SXIV. So it's one of the suckless technologies. And if you don't know much about suckless, the rundown is that they just work on what they deem as being minimalist packages. So I think the idea is that all of these are written in C and there's some kind of cap on how many lines of code are allowed. I used to know all this information like the back of my hand, but I just don't really think too much about it. So they'll even have this page of like, these are the technologies we deem suckless. There's stuff that rocks and they go through and talk about the things that I think are good. So one of those things is SXIV. Simple X image viewer, SXIV. That I think covers that question. Dude, don't give up. Posting videos. Want to use any of them. RStudio. Yeah, I agree. I mean, RStudio, I think the research and the work that they do is like some of the best research. In computer science. It's just not getting a lot of attention, but they have put a lot of effort into thinking about grammar. A grammar for plots, grammar for data manipulation, and Max Kuhn from RStudio has been putting a lot of thought into, and I guess Julia Silgy. I don't know if I'm saying her name right, but they've been putting quite a bit of thought into grammar in terms of making pre-processing and fitting models. So I really respect the RStudio team. I just think that in terms of the IDE, NeoVim has kind of outpaced RStudio at this point. Awesome video. These guys, you're all so nice. Oh, I think there's a question here about converting between Python and Python notebooks, or vice versa. So yeah, I don't have any additional comments there. I think that's it. I think that's it for today. So I hope this was useful. Thanks for being patient as I just kind of talk through some of these questions. And thanks for watching.