Learn Python with Talk Python's 270 hours of courses

#370: OpenBB: Python's Open-source Investment Platform Transcript

Recorded on Thursday, Jun 9, 2022.

00:00 You may have heard of the Bloomberg Terminal. It's expensive software that can monitor and

00:04 analyze real-time financial market data. But have you heard of OpenBB? It's similar software for

00:10 real-time and long-term analysis for finance and investing. The difference is it's open source and

00:16 built entirely with Python. It gives you access to analyze a massive amount of real-time data

00:21 and historical data using the full Python data science stack. On this episode, we have one of

00:26 the co-founders, James Maslach, here to give us a look inside this cool piece of Python-based

00:31 software. This is Talk Python to Me, episode 370, recorded June 9th, 2022.

00:36 Welcome to Talk Python to Me, a weekly podcast on Python. This is your host, Michael Kennedy.

00:55 Follow me on Twitter, where I'm @mkennedy, and keep up with the show and listen to past

00:59 episodes at talkpython.fm. And follow the show on Twitter via at Talk Python. We've started streaming

01:05 most of our episodes live on YouTube. Subscribe to our YouTube channel over at talkpython.fm slash

01:11 YouTube to get notified about upcoming shows and be part of that episode. This episode is brought to

01:17 you by Sentry and their awesome error monitoring product, as well as the Python at Scale Summit

01:23 conference being held in October. Reconnect with your data science colleagues this year.

01:28 Transcripts for this and all of our episodes are brought to you by Assembly AI. Do you need a great

01:33 automatic speech-to-text API? Get human-level accuracy in just a few lines of code. Visit

01:38 talkpython.fm/assemblyai. James, welcome to Talk Python to Me.

01:43 Yeah, no, thank you so much for having us. I'm looking forward to the next hour or so.

01:47 Yeah, so am I. I ran across OpenBB not too long ago. I talked about it on my other podcast,

01:53 Python Bytes, I do with Brian Hawken. We cover interesting projects and news and whatnot.

01:58 Dang, this thing is loaded with the Python data science stack. And on top of that, it's a newly,

02:06 really successful open source project in the sort of business VC space as well. So congratulations on

02:15 building a project and on that. And I think people are going to be pretty fascinated to hear the story

02:19 behind it. Yeah, thank you so much. Yeah. You bet. Before we get to the story of OpenBB,

02:23 let's get to the story of James. How'd you get into programming in Python?

02:27 I've only been in Python for a couple of years. My background, I'm, along with OpenBB,

02:33 I'm a PhD student at University of Maryland Physics. Got into Python when I was getting

02:37 bored of MATLAB. Awesome.

02:39 Started taking an interest in some machine learning, data science. Python seemed to be the way to go.

02:44 It was super straightforward. A lot of similarities with MATLAB, especially, you know, NumPy,

02:51 Pyplot. So it was straightforward. Never looked back.

02:53 That's awesome. Yeah, the Jupyter side, data science side of Python is quite similar to MATLAB.

02:59 Although it's a slightly cleaner language, starts with zero, not one on the indexes.

03:03 It does. And MATLAB, their attempt at Jupyter is not exactly where Jupyter is yet.

03:09 Which is interesting because they had a head start, right?

03:12 They did.

03:12 MATLAB predates Jupyter by a long ways.

03:15 Yeah. Well, their live editor is only a couple of years old or at least a couple of years old to me.

03:20 Yeah, sure. It probably is. My last experience with MATLAB was when I was in grad school as well,

03:25 which has been a while. So it's a little bit back there. Awesome. Well, that sounds like really fun.

03:33 I guess you started playing with Jupyter and the various data science tools for physics, right? Not for

03:39 finance.

03:39 Correct. Correct. It was, you know, NumPy, all that fun stuff for doing some physics,

03:45 SciPy calculations. I did go right into the machine learning Kaggle. Fantastic exercise. Really,

03:51 actually my first dive into Python. I love doing these NFL challenges that they have every year.

03:57 So that was where I first fell in love with the language, if you will.

04:01 NFL's challenge sounds really interesting. I've seen some Kaggle challenges and done other

04:05 similar type of challenges, but I'm not familiar with this one. Tell us about it.

04:08 Every year, it seems like they, actually, they have a couple, as far as I know. They usually do like

04:13 an analytics one where you got to present some kind of notebook and then a numeric one, you know,

04:18 think of you're watching Sunday football, AWS, which actually, if you got my, got my bills flag in the

04:22 background.

04:23 Yeah.

04:23 Right.

04:24 This particular one that I started on, you know, you were looking at, you were given the information

04:28 at a given point in time and you were to estimate using whatever machine learning, not machine learning,

04:34 how far the runner would go. And so that was a great introduction, Voronoi regions and decision

04:40 trees, all that fun stuff.

04:41 I think those kinds of challenges are really interesting because they don't require you to be

04:46 developer or code enthusiast. You can just be excited about football.

04:51 And it could drag you into programming instead of the other way around.

04:55 Yeah. Actually the way that I did it and I don't think I did, I didn't do too great on the challenge,

05:00 you know, no metals or anything, but I actually treated it as a physics problem as a, all the

05:05 players as a gas particles and this fun, fun stuff. So there really wasn't any machine learning there.

05:11 Interesting. And just sidebar, I got to say the Chiefs bills, I'm a Chiefs fan, I grew up in Kansas City.

05:15 Got to say that was one, that's probably the best game of all last year out of all the games.

05:20 That's the best game of all time. I mean, I mean, maybe not a little painful if you're on the bill side, but wow, what an insane game.

05:27 All right. I don't want to make it a football show, but that was the highlight of the entire year.

05:31 I think actually.

05:31 Hey, well, low light on my side.

05:34 The low light. Yeah. Cause for those who don't know, basically the, the Chiefs came back and beat the bills in the last like minute and a half in some insane

05:42 way, which is unfortunate, but it was really exciting. All right. Final background question.

05:46 What kind of physics did you study?

05:47 So I do a atomic molecular and optical, particularly cold atoms and optical lattices.

05:53 Okay. Periodically driving this kind of stuff.

05:56 Cool. That sounds awesome. All right. Well, let's talk about this, the space of these things that you, this thing you've created here. So

06:03 what you've created is something called open BB, which described as the most affordable,

06:11 advanced, open, customizable investment research platform. And to me from the outside,

06:19 not having a ton of experience, this looks like maybe a competitor to a Bloomberg terminal,

06:24 which I hear is, is required. Basically, if you're a stock trader, an investor that's doing,

06:31 you know, sort of real time interaction with the market.

06:34 I do have to take a step back as well. I'd say that I'm the founder of this program or this project,

06:40 Didier, you know, he's the one with the real insight. I was just lucky enough to join on early

06:44 to build a lot of this with him. He spent his Christmas coding this and you know, from there,

06:50 but to, but to talk a little bit about it. Yeah. So the, I don't like to call us a Bloomberg

06:54 competitor, you know, Bloomberg has been in the game for quite a long time. They're very advanced.

06:59 They have all the markets and whatnot. Sure. People will say, well, you do have this one

07:03 feature. Well, then we can't, you know, like it's, it's not like a competitor because it has that

07:06 other. Yeah, sure. But from a really high level perspective, it kind of is in that realm, right?

07:11 Right, right, right. At a high level. Yes. We're trying to achieve a lot of the same goals,

07:16 right? Investment research that's free, open source and available to anyone. We want to target,

07:21 you know, the people who can't drop 25 grand a year for the terminal.

07:25 Yeah. You know, what's interesting to me, what, what struck me about this is it's not just, oh,

07:30 here's a, an open source version, or here's a free version or a cheaper version that would be

07:37 something of a stand-in for that type of thing. But here is something that is from the ground up,

07:42 embracing all of these data science tools and libraries from the Python space. So to me, this looks

07:49 like a completely customizable, programmable, extendable thing for people who have Python

07:54 skills. And in that way, it's massively better than a lot of these commercial projects, right?

07:59 That's exactly it, right? So Bloomberg is the big name in this space. You know, you got your icons,

08:05 your infinitives. There's a lot of great other, other tools, you know, you got quite thin money.net

08:09 terminals out there, but none of them provide the level of customization and open source that we do.

08:14 As you said, it's super Python based, right? And the reason we chose Python is that's up and coming,

08:20 right? Everyone in data science seems to be learning it. Finance is, you know, finance is very embedded in

08:26 Excel and there's, there's some shift towards more Python learning in the space. So doing this in Python,

08:33 as you said, is super customizable. You can do it the way, you know, you can add on very easily,

08:38 fork it, add on a feature, add on your own datasets and pretty user-friendly.

08:43 Yeah, absolutely. You know, just to sort of back up what you're saying, pre-COVID,

08:47 I was hired by an investment firm to actually spend time with their day traders. And it was weird

08:53 because they're like, well, they can't be away from their desk when the market is open. So this class

08:58 has to start at 4.30 or 5.00 PM and then go for a little afterwards. It was an interesting setup,

09:04 but it was just that. It was a bunch of traders who were using Excel to try to figure out how well they

09:09 were doing. And then a couple of people on the team were like, we have to learn Python. We have

09:14 to get better tools. So I went and helped them learn Python so that they could stop using Excel and start

09:19 using Python. It's absolutely where a lot of this momentum is going.

09:23 Yeah. I think that they complement each other very well. You know, Pandas, I don't think anyone can say

09:28 enough about how great Pandas is. You know, you can enter in all of your, whatever your trades are,

09:33 whatever your research is, and it's right in a Jupyter notebook in one line.

09:36 Yeah. Yeah, absolutely. Not to say stop using it, but there's, there's a ton of stuff happening in the

09:40 financial space around Python. And I do believe that Pandas actually came out of investment out of, out of

09:47 Wall Street. I'm not 100% sure, but I think that's the history. So let's start with open source. So we could

09:54 go to the website. Your website is openb.co, fan of the .co. You don't need, who needs that M?

10:01 But we can go over to get up here and there it is. We can fork it, do whatever we want. Let's see,

10:07 what is your, your license is MIT, which is like go crazy sort of thing, right?

10:12 Yeah. We're permissive. Feel free to do whatever you want with it.

10:15 Yeah. It's really nice. Even commercial uses the MIT license has, but what stood out most to me when

10:20 I thought, Oh, this is really interesting. And then I looked at this and I'm like, Oh, this actually has a

10:24 lot of momentum here is you've got 12,000 stars and 1.3 thousand forks. That's a lot for any project.

10:31 I mean, we're on par with some of the big web frameworks not long ago and stuff like that.

10:37 You all must be really happy with the uptake that it's getting.

10:40 Yeah. The community response has been overwhelming. When I joined on, it was a couple thousand stars.

10:46 Didier and I, you know, we've fired up discord and we were hitting Reddit, which posts weekly,

10:52 monthly and, you know, took very well. People were very excited. We're super thankful for the

10:57 community that's gotten us to where we are.

10:59 I guess one thing I maybe would like to see possibly, I think what would be really fun is

11:04 maybe you could just talk us through what the experience of using this is because it's an

11:09 unusual UI. And I don't mean that like, Oh, it's, it's weird, but it's just, it's not a webpage.

11:15 It's not a Jupyter notebook. It's imagine pretty much exactly opening up iterm or terminal.

11:22 Yeah. It's a terminal. It's a command line interface.

11:25 In like in very much the sense that it's as a terminal, it means it runs as two EA text

11:30 based user interface type thing. But then as you do reports and interact with it through a CLI style

11:38 or almost of a Python style experience, it pops up windows of really beautiful interactive graphs,

11:46 the various things you're asking for. Can you give people a sense of what it's like to use?

11:50 What's the user experience there?

11:52 Yeah. So the terminal is a command line interface tool, right? So you open it,

11:57 you launch it, Python terminal.py, and you're presented with a list of choices, right? So we

12:04 call these contexts. That's either going to be your stocks or your crypto ETFs. We provide,

12:10 you know, we, we provide a lot of data and in order to access these, you, you type in,

12:15 it's one of these old video games where you got to type in what you want, right? So if you want

12:19 to go into stocks, you type in stocks, and then you're presented with a new menu. So you, you hit

12:24 it exactly how it is that it's completely textual. You know, all of our commands have additional

12:30 options flags as well. Our documentation for some of these functions is listed on our GitHub page.

12:36 And we're trying to really enhance the user experience in terms of guides and documentation,

12:41 since we do know that this is a very unusual user experience. As you said, it's not a website.

12:47 There's nothing to click. It's all textual based, which we understand is going to be,

12:52 not everyone using this product is going to be familiar with the command line interface. And,

12:57 you know, our team, we actually like to call it Ackerman because, you know, you feel like you're in,

13:01 doing your financial research. You feel kind of Ackery.

13:04 Absolutely. You're just, you're, you're typing away. Stuff is streaming by. It's so funny to have

13:10 normal people who are not coders watch people doing stuff with terminals, especially if there's colors,

13:16 they think something nefarious is going on or something crazy is going on. Cause that's how

13:20 it's always represented for hackers. I remember somebody asked me at a coffee shop. I was,

13:25 had like five terminal windows, all running scripts with stuff scrolling. I'm like,

13:28 are you trying to hack the coffee shop? Like, no, I'm just working. Don't interrupt me, please.

13:32 I'm not hacking anyone. Leave me alone. Yeah. It's, it kind of has that feel. Right. But it also

13:36 something that I think that speaks to is like the seriousness and the real, like this is for people

13:41 who are trying to do real work. It doesn't come up and just go like, here's some buttons you can click

13:45 and it's flashy. It's like, you got to get in there, focus on the, you know, on the various aspects,

13:50 whether you're doing stocks or, or whatever it is and, and learn the commands, but then you should be

13:54 able to fly through it. Right.

13:55 Yeah. And we actually, one of the things that we spent a little bit of time on earlier this year

14:00 was making it so that you can actually chain commands, right? You can, if you know your,

14:05 if you know what your workflow is, you can either run it through a script. So you can basically go

14:10 into, into the terminal set up what we call an open BB file. You know, if you, every morning,

14:16 what you do, you go, you do stocks, you look at, I don't know, the top gainers. And then you look at

14:21 what Apple's volume was yesterday. You can put this all in a script, run it, go fire up your

14:25 coffee, come back and you've got all your graphs. You've got all of your tables and, you know,

14:30 really simplifying the workflow. And then when you're done with that, if you forgot something

14:34 in one line, you know what it is, you can type in, you know, you do a backslash stocks,

14:37 load in your ticker and whatever you want. So as you said, once you know the terminal,

14:43 it's really easy to hop around.

14:45 Yeah. That's awesome. Now, before we talk about some of the features and some of the things you can do,

14:50 because I think I'll point people to the right part on your website, but once you see what you've

14:55 got here, it's like, this has a bunch of great visualizations and so on. But let's just talk about

15:00 some of the Python libraries that are available. It sounds like a lot of the big hitters from the

15:06 data science and machine learning space are there.

15:09 Very much so. Right. So the number one library we pretty much use is going to be a request.

15:15 You know, we're hitting APIs, turning those into data frames, reading HTMLs, displaying.

15:21 Yeah.

15:21 Yeah.

15:22 All right. Before we move on from requests, because a request is a very cool library,

15:27 but it also opens up the question of where does requests go? Like, it looks like there's tons of

15:33 real-time data here. And I know that financial data, especially in the real-time variation,

15:38 can be tricky to get ahold of, or it may be not tricky, but requires money.

15:42 This is a very good...

15:44 That's some variant of tricky, isn't it?

15:46 That is. And actually, you do raise a very good point, right? So in the terminal, we do provide

15:51 different endpoints for different sources. So for example, if you want to load in stocks,

15:58 you can either go from Yahoo Finance, you can go from an Alpha Vantage, or you can go from Polygon

16:03 or IEX Cloud. All of these require your own API key. So in order to... Part of kind of the onboarding

16:11 into the terminal is to explore all the data sources we have available, go get your API keys.

16:16 And we try to keep it free, but we are starting to incorporate some more kind of paid, you know,

16:22 endpoints that can be paid.

16:24 Right, right. So if somebody already has a subscription to some data source, why not let

16:29 them integrate that, right?

16:30 Exactly. That's exactly it.

16:32 Okay.

16:32 So we're not distributing any of the data. We're just basically providing the tools for you to

16:37 access it.

16:37 Got it. Yeah, that sounds really neat. Is there some web scraping, some beautiful soup, or is it all APIs?

16:45 There is. So we try to keep it to APIs.

16:48 Because they're more stable.

16:50 Yeah, you never know what tag's going to change. But yeah, beautiful soup is in there, right? Beautiful

16:55 soup's a great library. There is web scraping, you know?

16:59 Yeah, I figured, you know, like, sometimes that's just how it works, right? Sometimes people don't

17:03 have APIs, but they've got websites.

17:05 They do.

17:05 It's kind of a cumbersome API if you go to it.

17:08 I've also become a fan of pandas. Pandas will do all that for you with the read HTML if you just type in a link.

17:16 I was blown away. Chris Moffitt did a course for Talk Python on replacing Excel with pandas and stuff.

17:24 And some of the things you can do to get data off the internet with pandas, I'm like, why don't I just do this?

17:30 This is so much better. You could point it at a web page that might have a whole bunch of text and images,

17:34 and somewhere in there is a table. It could be multiple tables.

17:37 You could say, go to the third table and get me that as a data frame, and bam.

17:40 They're like, evil and beautiful soup. There's a lot of steps to get to a parsed data frame with

17:47 header values and columns.

17:49 Yeah, pandas is fantastic, and, you know, that's a lot of requests, a lot of pandas, a lot of...

17:54 This portion of Talk Python on me is brought to you by Sentry. How would you like to remove a little

18:01 stress from your life? Do you worry that users may be encountering errors, slowdowns, or crashes

18:07 with your app right now? Would you even know it until they sent you that support email? How much

18:12 better would it be to have the error or performance details immediately sent to you, including the call

18:17 stack and values of local variables and the active user recorded in the report? With Sentry, this is not

18:23 only possible, it's simple. In fact, we use Sentry on all the Talk Python web properties. We've actually

18:30 fixed a bug triggered by a user and had the upgrade ready to roll out as we got the support email.

18:35 That was a great email to write back. Hey, we already saw your error and have already rolled out the fix.

18:41 Imagine their surprise. Surprise and delight your users. Create your Sentry account at

18:46 talkpython.fm/sentry and if you sign up with the code talkpython, all one word, it's good for two

18:53 free months of Sentry's business plan, which will give you up to 20 times as many monthly events as

18:59 well as other features. Create better software, delight your users, and support the podcast.

19:05 Visit talkpython.fm/sentry and use the coupon code talkpython.

19:09 So I sort of derailed your conversation, but one of the things that first came to mind is like,

19:16 okay, if this is open source, where is it getting all this interesting data from? So thanks for some of

19:21 the story there. What else? What other major libraries are at play?

19:25 All of our plotting right now is through PyPlot.

19:27 When people see those, when you're in the terminal and you ask for some kind of visualization,

19:31 it pops up with that interactive window. Those are PyPlots?

19:33 Yes. Yes, this is all PyPlots. All the styling is done in-house. We have a fantastic designer,

19:38 fantastic engineer, did a great job of doing some style sheets.

19:41 Yeah, it really does look quite strikingly nice. So yeah.

19:44 Awesome. And all of these are, as we like to say, it's customizable.

19:48 All these style sheets are available to the end user. They're packaged right into the terminal.

19:53 You can go through, if you don't like our blue, you can change that to green.

19:55 Yeah. You've got machine learning, PyTorch, TensorFlow, SK Learn.

19:59 PyTorch is a tricky subject for us because it's tough to bundle into an installer. Currently,

20:05 we have some Keras models built in. You do have to install that, right? Because TensorFlow is a pretty

20:11 big library. We are working on incorporating the open source Darts library, which is PyTorch-based.

20:17 Mm-hmm.

20:25 So we're talking about machine learning. We do also have NLP models used to vader sentiment.

20:28 Oh, interesting. Because if you could say, what is the sentiment on Twitter? Or what is it on,

20:35 you know, the news sites? Maybe that's going to affect...

20:38 Yeah. So that's actually something we had done. You can actually try to do some correlation with

20:42 vader sentiment on news headlines from one of our data providers. And we'll actually throw that on the

20:47 same chart as the price or as the stock price. Yeah. Okay. Super cool. All right. Now,

20:53 before I was going to ask you about how to like sort of do your extra, your add your own extras to it,

20:57 but let's actually go and just talk about some more of the like the visualizations and some of the

21:00 the pictures, the graphs that you guys, types of questions you can answer basically.

21:04 Yeah, of course.

21:05 Yeah. So you can get it through a Windows or a macOS installer.

21:09 Correct.

21:10 Are you doing something like using Pi to app or Pi to exe or Pi installer or something like that to

21:16 try to bundle all up? Or is it just sort of a scripted, make sure you got Python?

21:21 We bundle with Pi installer.

21:23 Pi installer?

21:23 Yes. So we use Pi installer. By we, I mean our engineering team. That's a little above my,

21:29 my ability there. We are in the process of getting this signed through Apple and I believe

21:36 Windows came through today. So at the end of the week.

21:38 You don't get the yellow. Do you want to let this happen? You get the, just the regular,

21:42 do you want to let this happen?

21:43 Yes.

21:43 UAC, dialog and windows, and you'll get something similar in Mac.

21:46 Yes. And the reason we have this installer is we understand, you know, the end user is not

21:51 necessarily going to be someone that wants to go through and change all the Python.

21:54 Sure. Well, it's awesome that it is Python and the people could do it, but it's,

21:58 it's certainly not intended just for Python people, right? It's intended for investors who may or may

22:03 not be. And we have Pythoners.

22:04 I don't want to give a little, but we've got what, almost 200 dependencies.

22:08 So, and everyone's machine acts differently. You know, you do a get pull and then you run

22:14 poetry install, you know, maybe it acts differently on everyone's machine. So we wanted to provide this

22:19 option for folks to be able to just click a button and have it right there.

22:23 Well, I think it's great. And then, you know, that is ideally how software should be delivered,

22:27 right? You shouldn't have to like build it and download all the pieces. You just go, here's the

22:32 thing I click, I put it there and now, now it runs, but it's often not how it is distributed. I guess just

22:38 calling out other two other ways people get it. They can go to Anaconda and get it there. And you can

22:42 also do a Docker type of thing, right? If you want, but yeah, cool.

22:46 For developers, if you want to, you know, you can do a get pull with your content environment,

22:50 fork it, feel free to change it. We're always open to any pull requests.

22:55 Awesome. All right. So let's maybe talk through some of the things that I can do. And then we'll

22:59 talk about some of the internals.

23:00 Yeah, of course.

23:01 You mentioned that there's this whole stock section and I just totally encourage people

23:05 to come over to open bb.co/product/terminal. And then you sort of just scroll through here and

23:10 you get a bunch of cool visualizations. You'll see why I was impressed, I think.

23:14 So here's like, you come up and say, I want the Q sum, I guess the cumulative sum as a sequential

23:20 analysis technique that shows any func, you know, sort of cumulative function applied to something like

23:25 a stock price over time.

23:27 So this is just an example. So if you go into stocks and you know, just for everyone listening,

23:33 we're going through the website right now. And the first thing you'll see on our stocks,

23:36 pay or on our product on our terminal product page under stocks is this Q sum. And for example,

23:41 you would load in whatever your ticker is, and this would be found under quantitative analysis. So,

23:46 you know, stocks load in Apple, and then you type in QA, and then you'd have all these options.

23:51 Q sum is one of them. And this is a time series. Like you said there, it's a time series

23:57 technique of detecting anomalies, if you will.

24:00 Yeah. And you get little call outs of those events and so on. You've got 3D graphs of volatility

24:07 surfaces for, in this case for Apple.

24:09 Yep. Volatility surface, you know, they're big. Everyone loves their volatility smiles.

24:15 And so, you know, you can show the, you can show the implied volatility as a function of time to

24:22 expiration and strike price right there.

24:24 And I guess because these are, do you say plotly? I'm sorry, I forgot the,

24:28 pie plots, what you said.

24:29 We use pie plot.

24:31 Plotly, I think. So I've kind of, early on, I did some plots in plotly and there may be some way

24:36 around that, you know, the interactive, interactivity of plotly is very nice.

24:41 Right. So what I was going to say is when these pop up with the pie plot stuff,

24:44 you can basically explore the graphs just because it's like the nature of those tools, right?

24:50 Yeah. Pie plot has in, what is it? PLT dot ion that will allow you to use the interactive. So you'll

24:56 pop up, you'll be able to zoom or pan with the usual buttons in the window.

25:01 Okay. Let's, you mentioned the sentiment. So there's sentiment news.

25:05 Yeah.

25:06 Instantly correlating article headline sentiment through NLP models.

25:11 Yes.

25:11 Historical price.

25:12 Yeah.

25:13 Yeah. So for this example, yeah, this example, this applies a Vader sentiment,

25:17 right? Which is basically just a rules mapping to the certain words to give you a sentiment score.

25:22 And you can see the stock price on the same chart as from the headlines from our given source.

25:28 Super cool. All right. Yeah. So all these nice different visualizations and so on here,

25:34 maybe talk us through what, so to get these cool things generated by the Python libraries,

25:40 what is my experience as somebody sitting at the terminal CLI? Like how do I pull up,

25:45 say the sentiment news thing or, or the QSUM or so on?

25:48 As I mentioned, once you launch the terminal, you know, you either use the installer, you know,

25:52 two clicks and it's up, or you have your own Python terminal.py and you're provided with some options.

25:59 The first thing you want to do, let's say, you know, for example, we're doing this QSUM that's up

26:03 right here. You would type in, into the command line interface, you would type in stocks.

26:08 Okay. Yeah. And it kind of puts it into the stocks mode where different sub commands apply or

26:11 something, right?

26:12 Yep. And then once you have there, you'll have a bunch of different menus. You know,

26:15 you can look at fundamental analysis, you can look at technical analysis, you can do due diligence.

26:19 You know, we've got a bunch of menus on there. So you would load in your relevant ticker. So you do,

26:24 you'd either do load Apple, or we do have some, if you have the feature flag enabled,

26:29 if you just type in Apple or, you know, AAPL, it'll load in. So once you have that ticker loaded in,

26:35 it does a pandas data frame in memory. So, you know, from there we can pass it to the different

26:41 functions. And for this, for this particular one to do the quantitative analysis, I would then type in QA.

26:47 So when you're on the stocks menu, you know, you can type H for help, or you can do a question mark

26:52 and it'll parse that. And you'd see QA quantitative analysis with a couple of examples of what you can

26:57 do there. And then once you go into that menu, it would pop up with different functions and you would

27:02 type in the function you want. If there's arguments, you know, maybe there's windows or exporting data,

27:09 you would just type in dash help and you'll get a, or dash H, sorry. And you'll get a pop-up of

27:15 the usage and the optional arguments. And you would, you know, type in QSUM with whatever your arguments

27:20 are and you would get this plot. All right. That's very cool to hear how that,

27:23 and that sort of flows through there. All right. What else? Got a bunch of stuff on crypto. Like

27:27 you've got Bitcoin rainbow charts, which I've never seen, but it's fun. That's interesting.

27:33 Yeah. Just a bunch of, you know, open interest by exchange, you know, exchanges, how much traffic there is things like that's pretty awesome. The ETFs. Let's see.

27:44 Some of these are coming up as just almost like, some of them even come up almost like report.

27:49 You got an Excel report and you've got, yeah. So actually it looks like a train station looking like

27:54 here's the incoming information or whatever, right? Yeah. And actually, cause for example, this ETF

27:59 Excel report is a third party or third. So one of our contributors has their own database, the author of the

28:07 finance database. And he has this workbook, it loads in an ETF and it basically does what you see on the

28:13 screen there. And it pops this up in an Excel workbook. we do have another feature that's

28:18 DCF. Someone who was working on their MBA at the time said, Hey, you guys provide the data. I need to do

28:24 a DCF analysis. And so we coded it up. And now we have a DCF analysis, tool that uses some linear

28:32 regression in the terminal. And it all saves to an Excel file.

28:35 That's cool. And the fact that it goes out to Excel, that means you get handed off to somebody who

28:39 just lives in Excel and they can still use that. Right.

28:41 Yeah, exactly. So, you know, we don't want to completely replace Excel because we know it's very widely used.

28:46 Yeah. But hooking to all these different data sources, real time data sources and pulling it

28:51 together. Like that's not Excel's forte.

28:52 Yeah. Yeah. And that's why, why should we be doing it for everything? Yeah. Okay. So you've got sort of,

28:59 technical analysis stuff. You can compare, different stocks and even, check out the news

29:05 over for the ETF. Interesting.

29:07 We do have over, well, I don't want to say over, we're sitting around 700 different functionalities.

29:13 So we do understand it can be slightly, intimidating at first.

29:17 Yeah. That was my feeling as well. When I first saw this is like, wow, there's,

29:20 this is pretty intense. There's like a lot going on. You have to kind of be an expert,

29:23 which is what I was talking about at the beginning. Like you get into the terminal and you just,

29:27 you know, you've got to really become an expert, but then you get this really great,

29:31 quick power to do it. But I would also imagine like, you're probably not doing stocks, crypto, ETF,

29:37 economic analysis, all the same. You probably focused on one of these areas, right? And

29:42 if you narrow it down, it probably gets more doable. Right. Right. As you go.

29:46 And I mean, you know, maybe you're trying, one of the things, for example, we have this econometrics

29:51 menu, which, you know, one of our target audiences is kind of the academics and in your econometrics

29:58 course, right. That's basically what linear regression of certain things. So maybe you want to look at the

30:03 effect of a company's balance sheet on and relate that to inflation. Inflation is a hard topic.

30:11 And you can actually go in, into the econometrics menu, load in both of these and do your preferred

30:16 regression techniques and get some insights. Oh, that's cool. You know, thinking about education,

30:22 that's a big opportunity for you all, right? It is.

30:25 People, students are going to be buying Bloomberg terminals and other commercial things, most likely,

30:30 right. Not the high end ones anyway. Yeah. And so here's a really simple way that you could actually,

30:36 if you're a teacher teaching economics or finance or investing, here's something you could bring into

30:41 your, your class as a resource and really analyze it, right? When your projects could be okay, pick a

30:46 stock. These are the questions we have back it up with the other data that you can find through these

30:50 other areas. And exactly.

30:51 Exactly. That's one thing we, we love, you know, some of the people we talk with their experiences

30:57 for their courses, they have assignments that they need to do, use the one Bloomberg terminal that they

31:02 have among 30 students. So they're queued up for an hour or two, just to get basically the same data,

31:08 if you will. And, you know, we, that's one of the things we pain points we'd like to address is

31:13 everyone can have this on their machine and get the data they need and do the analysis they want to do.

31:20 This portion of talk Python to me is brought to you by the Python at scale summit. The Python at scale

31:26 summit is a conference to highlight innovative big data solutions for Python developers and enterprises.

31:31 You'll learn about trends in the Python, big data ecosystem, share stories about implementing solutions,

31:37 find out about new innovations and connect with other data scientists using Python. The Python at scale

31:43 summit will be a hybrid conference with talks, workshops, and training. Of course, there will be

31:49 networking and social events to connect with other Python professionals too. Come here speakers like

31:54 Matt Rocklin from coiled, Brian Granger from AWS, and many others from amazing organizations such as NASA,

32:01 Capital One and BCG. Get back together with your peers and learn how they're scaling their computation

32:07 and data analysis using Python and the data science stack. Register at talkpython.fm/python-at-scale.

32:16 When you visit the link, be sure to use the code TALKPYTHON, all caps, to get 15% off your tickets.

32:23 That's code TALKPYTHON at talkpython.fm/python-at-scale. The links in your podcast

32:28 player's show notes. Thanks to the summit for supporting the podcast.

32:31 I don't think it would be a very detailed thing, but it would be also interesting that the professor or

32:40 the instructor could say, "Look, here in the source code, these four lines of code, this is showing,

32:45 this is where it's doing that theory we talked about last week. Like, here's how it's applying this model."

32:51 And I don't expect you to totally understand the code, but like, you could see this is how software

32:55 does it. You know, you could have a little bit more insight, whereas a lot of the commercial things,

32:59 if they're a website for sure, but even if they're just compiled, closed source, you won't be able to do that.

33:04 We had a contributor reach out to us, part of the, from Greece, part of their software business course

33:11 was to submit a pull request somewhere. So he reached out to us, he did a nice little report.

33:16 He did a pull request, added a feature to the terminal. So, you know, using the theory in class

33:20 there. Another professor reached out to us, he had his students write a kind of an intro guide for us

33:26 that we're going to, that we're kind of working with and we're going to make available.

33:30 Okay. Awesome. Yeah. The intro guide for OpenBB for his students or something like that.

33:34 Yeah. Yeah. Nice. All right. Let me just sort of skim through here. There's a,

33:38 Yeah. There's a lot.

33:39 There's a feature. So I'm not so sure I want to touch on all of them, but every single one of them

33:44 you come to almost like some of them are just sort of tables, but so many of them like this portfolio

33:49 optimization, you know, it's beautiful. It looks really good.

33:53 And the pie plot is really good. The rainbow chart is always a fun one. It's, you know, it's really pretty.

33:58 I like it a lot. These are, these are great. So I just, to me, it feels like something if I were working,

34:03 doing this kind of stuff, it would be pleasing to sit down and look at these graphs and this analysis

34:08 rather than, oh boy, you know, there's just some software you look at, like it does the job,

34:13 but it doesn't make you feel good using it while it's doing the job, you know? Yeah.

34:17 Battleship gray or I don't know.

34:18 And also, I'm like, I mentioned too, we let, you can customize the colors, even if you want to

34:23 change the terminal colors. When you launch our terminal, you'll see some blues and reds. If you

34:29 want it to be orange and green, you can go in and change it. It's fully customizable.

34:33 Cool. So there's a, a Jupyter section as well.

34:36 There is.

34:37 Yeah. Tell us about the Jupyter section. I think that's a super big tie in for Python people.

34:41 There's two ways you could really make the most out of Jupyter. The first way is we've started

34:47 kind of building an API wrapper for a lot of our, our functions. So one thing we haven't gone into is

34:52 a little bit, the architecture, you know, we use like an MVC model view controller where all these

34:58 plots are generated in the view and we can wrap that into an API and you can import that. So in Jupyter,

35:03 you know, if you're, if your workflow is, you know, X, Y, and Z in the terminal, you can, you know,

35:08 from open BB terminal, import the API is whatever as open BB, open BB view, view stock, Apple,

35:16 whatever, however that works. And you can create your workflows there.

35:19 I see. You get a plot back and you just plot.show or just like empty one line,

35:24 it goes on there. Yeah.

35:25 Yeah. I mean, you do an inline, you can also do, you can adjust it, right? So we'll wrap the API

35:30 wraps our load function. So you can load in your stock and you know, maybe you want to resample

35:35 it, or maybe you want to make your own machine learning model or whatever you want to do. You

35:39 can do that with the API. Another interesting thing is that we use paper mill to automatically

35:45 run some reports. So for the example in the terminal, there's a default example called equity.

35:51 dot, well, it's equity dot I buy notebook. And if you go into the terminal, so once it launches,

35:58 you go to the reports menu, just by typing reports, you type in equity, Apple, or whatever your ticker is,

36:04 it'll run through paper mill, which automatically fills in, you know, your ticker,

36:09 when not generates a predefined PDF, basically with it's fully customizable. We have some fun widgets

36:16 that you can play around with. And you know, you can add KPIs. Hey, if I don't know if you,

36:22 if the RSI is higher, if insider trading is low, I think those are some of the examples. So you can

36:27 create your own custom notebooks, kind of automate your research workflow.

36:31 That's super interesting. I haven't spoken about paper mill for a while in here, but it's a really

36:36 interesting project. I think from the Netflix team, right?

36:39 I have no idea.

36:40 I think so. Maybe tell people just a bit about what the whole purpose of paper mill is, what it is.

36:45 What we use paper mill for is to basically just automatically execute a notebook template.

36:51 You kind of have to go a little bit into the metadata of the Jupyter notebook, and there's a

36:55 cell that has like parameters. And by the terminal, we can parse what the argument is. You know,

37:02 for example, the ticker, right? Basically all the same commands will be run,

37:06 just replacing the ticker with whatever's executed. So paper mill is just a really nice,

37:11 very great tool at wrapping Jupyter.

37:14 Yeah. It turns notebooks almost into functions that you can call, but the output is the notebook

37:19 in the form that has the results, the intermediate results and the pictures and everything, not just

37:24 the answer like a function would have.

37:26 Yep. You get the whole notebook and you know, you can customize it, PDF, HTML,

37:30 you can send it to your buddies.

37:31 You touched on the architecture a bit. Maybe we could dive into that just a little bit more.

37:35 What are some of the notable things about how this is built?

37:37 As I kind of into that actually specifically said, our code is we use an MVC structure. So model

37:44 view controller. So how this goes and, you know, for example, every sub menu will have

37:50 a controller and we do, we have abstracted that so that, you know, there's a base controller and a

37:56 base docs controller that inherit all the same methods, save ourselves a little bit of redundancy.

38:01 So this controller is like parsing and processing the commands you send in the terminal CLI.

38:06 Something I failed to fail to mention was that we use arg parse.

38:09 Yeah.

38:10 So the controller wraps in, it basically takes in, it adds, it creates an arg parse object,

38:16 adds the arguments, and then does the parsing, makes sure that, you know, if I type in, you know,

38:21 if I try to load a stock ticker, that's four, not an actual ticker. If I try to enter a number,

38:26 it'll say, Hey, you need to be a ticker. You know, it does some of the logic.

38:30 Our model functions get the data, transfer the data, or edit the data, modify it, manipulate it

38:36 in certain ways. And then the views do either tables, graphs. So, you know, for example,

38:42 but if you look at how we do our fundamental analysis, the workflow is the controller has

38:48 income and we, the way we do it, the function is called call income. We just kind of add this call

38:53 underscore to whatever you type into the terminal. And that call income is a method of the controller.

38:59 So that'll, you can add the arguments. And for example, the income statement has an argument

39:04 that's dash L that tells you how many quarters you want to get. So the namespace, so the parser,

39:10 the arg parse namespace then has the information stored. So we know, Hey, we're trying to get income

39:17 and we're trying to get five quarters. So that we'll call the view, which will then pass in,

39:23 you know, the view will say, Hey, alpha vantage model, get me my five quarters of Apple income

39:31 statements. And that'll return it as a data frame. And, you know, either, I guess that that function

39:36 doesn't have a graph, but if it's a graphing function, it would do the graph.

39:40 A graph pops up the window and the pipe plot window and then off it goes. That's really

39:44 interesting. I have never really thought about how you might do the processing of CLI commands,

39:51 but within an application, when I think arg parse, I think startup, like what commands are passed to my

39:56 application during startup to figure it out. But of course, as you continue to issue commands,

40:01 if that's text on a line, it makes sense to sort of treat it the same, right?

40:05 Yeah. And well, we actually do on startup actually do have arg parse. So you can, you know, for

40:10 example, the, my favorite, my favorite flag that we have for the terminal is debug. That way you can

40:16 actually get a full, instead of catching all the errors, right? Cause if, if we're not catching all

40:20 the errors in the terminal, it would crash every time you added an exception or whatnot. But with this debug

40:26 flag, it'll actually show you the full stack trace and just, instead of just the exception.

40:30 So we actually do wrap around the startup and whatnot. And we also do like, and we have a reset command

40:35 that if you're in the terminal, you type in reset and you know, maybe you changed an API key or you're

40:41 developing, you change your function, it reload it. You hit reset. It'll relaunch the terminal.

40:46 It'll exit then relaunch. So that's the general, general workflow.

40:50 Yeah. Does the terminal run in whatever terminal of your OS? Like if I have iterm set up on my Mac,

40:57 it'll run there. If I have, you know, windows terminal and PowerShell, it'll run over there.

41:00 Yeah. Just to make sure you're in the right directory.

41:02 Okay. Fantastic. Super, super interesting. And also, I can even add a statement that

41:09 doing this MVC allows us to have different views. I know one thing you'll probably ask me about is

41:14 that we have these bots on our website. Yeah. I did notice over here that you have

41:18 a products, you got a terminal and then documentation, and then you have bots.

41:21 Yeah. Coming soon. Bots. I do remember now what I'm going to ask you, but let's talk

41:25 bots for a second. Yeah.

41:26 And then we'll come back to it.

41:27 So bots, I don't want to, I don't want to give away. We do have some exciting

41:30 announcement coming soon. And I would like to take this opportunity to apologize to anyone that's

41:35 trying to get this, get the discord bot in our server, as we're currently limited to the maximum

41:40 100 servers we can be in without the verification that we're working on.

41:44 Got it. So under the listing here, you have bots coming for discord, telegram,

41:49 Slack, and more. And yeah, I guess news is coming, huh?

41:52 Yeah. And all of this, one of the kind of using MVC, we're able to extract abstract all of our

41:59 methods. And, you know, then we can just, you know, we do all the processing on the same model

42:03 function, and then we can pass it to different views for discord or telegram or Slack.

42:08 I'm sharing or comment as much as you can. But, you know, like you can build a Slack bot in Flask,

42:13 for example, or something like that, right? Where it kind of uses a web communication to talk to your

42:18 bot. And so I guess you could do things like go into Slack and say, open, hey, open BB bot,

42:23 tell me about important events in stock, or I've been watching this thing. If it crosses the threshold,

42:29 just yell at me about it, right? Let me know. Yeah.

42:31 Something like that. Is that kind of the flow?

42:33 Pretty much does some async stuff. It's running on a server somewhere and it waits to read in the

42:39 command. Cool. One other question I wanted to ask you is, is what I've seen so far looks like

42:44 really cool ways to, I mean, all of it's static, so you can only read so much into it. But it looks

42:50 like, let me answer a question about this information, either historical or sort of up to now about some

42:56 stock or the economy or whatever. Is there a way to have like a dashboard where I can put different

43:01 things up and they're just constantly turning with real data?

43:04 That is possible. Yes.

43:05 Not the main use case, but possible.

43:07 I mean, it is possible and I'll leave it at that, that it is possible.

43:11 Okay. All right. Sounds good. That was the one I was asking about.

43:15 Yeah.

43:15 All right. Now, one thing I want to touch on here before we get too far away with time is two

43:22 things stood out to me when I went and sort of clicked around your side. Now, that's pretty

43:26 interesting. I can't remember, you know, some news article that talked about OpenBB that I

43:31 thought was pretty interesting. I came over here. Okay. Wow. This is really pretty,

43:33 pretty cool. It's open source and so on. The other one is like right across the top. It says

43:38 announcing our $8.5 million seed fund funding and public launch. That sounds like a non-trivial

43:45 deal. That's awesome. Congratulations.

43:47 Yeah. Thank you so much. I mean, yeah, that's a pretty big deal for us.

43:51 I would think.

43:52 Yeah. I mean, actually fun fact about this was that so Didier and I were just doing this for fun

43:59 on the side, you know, and then my wife and I, we got married in 20 or about a year ago, actually a

44:06 year ago in 11 days. So we're on our honeymoon in Napa Valley on good old land of the VC. And on our last

44:14 night there, fun day of the, of wine touring and whatnot, I get a LinkedIn message from someone

44:20 saying, Hey, we're interested in investing in you. And needless to say, that turned into,

44:25 into meeting up with, meeting up with them on quick 20 minute chat, the day of driving through

44:31 San Francisco before actually trying to get out to Alcatraz, because we had that scheduled.

44:35 Wow. How, what funny timing on one hand, it's like terrible timing on other it's perfect. You're

44:41 right there. Yeah. I mean, I was like, Hey, I'm, I'm in Napa. And, so I'll give a shout out to JJ

44:47 over at OSS capital. He's been fantastic working with us. JJ was like, I will meet you wherever

44:53 you are right now. And I'm like, man, I am not in any state to be talking to anyone right now.

44:57 So, it was a, it was a great opportunity to reach out with him. They led the round. We have,

45:03 we have a great group of angels on board as well. I guess there's a couple of other

45:09 call outs I want to make real quick. One, Travis Oliphant is an advisor to you all, which is pretty

45:14 awesome. People surely know him as one of the founders of Anaconda. Yep. Travis is on board as

45:19 an advisor for us. Been fantastic working with him, getting to know him a little bit. That's super cool.

45:23 Then also Naval Rivacant is one of the investors. And I know him from this quarter storm thing,

45:31 turned into a discussion called how to get rich. Have you listened to this? Yeah,

45:34 it's pretty interesting, pretty fascinating. So he's involved as well, which is pretty cool.

45:39 Awesome. I think that's really neat. You know, like I said, congratulations to you guys. You keep

45:42 good. You're going to keep working on this, but open source projects often struggle to get support,

45:48 even when it blows my mind that they do see projects like requests or flask or something like that. And

45:55 so much of the world and the tech world in particular, where there's tons of extra money

46:01 and there's not very much support, right? You know, as far as I know, David Lord isn't just mostly on his

46:07 yacht and periodically accepting PRs. But if you think of how foundational some of these projects are for so

46:15 many companies, it seems almost like David should be on a yacht. You know what I mean? Like it should

46:20 be easier for them to get really strong support. And here's an example of a company getting really good

46:26 support, giving away to some degree. Can you talk about what the business model is or is it just growth

46:32 and attention and features for now? Primarily, we want to focus on growth and really hammering on

46:37 the user experience. You know, one of the things you talked about is, you know, maybe when someone

46:41 fires this up, they're not used to seeing a textual type thing where I need to type in all the commands

46:47 there. Everyone's just used to buttons, fancy web apps. So right now we really want to hammer home the

46:53 user experience, make it as fluid as possible. We're working on documentation. We're working on guides.

46:59 Yeah. It seems like something that would lend itself really well to a bunch of small video

47:02 videos on like, you could just say, help this goes, would you like to watch a video on how to do this?

47:08 Two minutes. Yes. All right. I'll watch the video. I can just like pop that up or something.

47:11 Yeah. Yeah. No, that's it. And you know, some, a series of those. Yeah. Cause for example,

47:16 you know, fundamental analysis or technical analysis are buried three or four menus down. And if you're

47:20 downloading the tool to, to do that, you know, maybe you're going to be intimidated at first,

47:24 cause you don't know where it is. Right. So we really want to try to find it or whatever. Yeah.

47:28 Yeah. So right now we want to focus on the community and we want to focus on the user experience.

47:32 Cool. All right. Well, you've definitely got a little runway there. So that's great.

47:36 A little bit. How many people are working on it now?

47:38 So our team is, it's our team. First off, shout out to everyone bothering me on Slack during this.

47:44 I'm ignoring you because I'm talking about you. Okay.

47:48 Pretty much. So a shout out. We're about, we're at 15 right now.

47:52 Awesome. I'll take this opportunity.

47:54 to mention that we do have some open job postings on our website as well at the moment.

47:59 Oh, really? Okay. Just throwing that out there, on our website, open bb.co/company/careers. Yeah. So I'm guessing some of these are, are Python related ones.

48:11 Or currently we're looking for, for DevOps and we're also looking for some social media managers

48:17 at the time. Cool. Remote an option?

48:19 100%. Yeah. Yeah. 100% remote, flexible hours.

48:23 Very cool. Yeah. I know a lot of people are interested in finding new jobs on the one hand,

48:28 you know, if you're a software developer, you can kind of find jobs pretty easily these days because

48:33 there's such a demand, but on the other, it's like, well, you can have this job, but all right, you got

48:38 to move to this city that you don't already live in or you don't want to move to, or you want to change

48:43 countries or whatever. Right? So I think, I think remote's pretty awesome.

48:45 We're spread out all over the globe. So it's good time. Yeah, absolutely. That's the way it should be.

48:50 Yeah. Okay. Well, I think that's, it's about all I had to ask about all the things I wanted to make

48:56 sure we covered, but it's something really cool. You all built with Python and the data science stack and

49:02 open source growth is cool. And the funding is looks so positive. So awesome. I guess it sounds like you

49:08 accept PRs. People want to contribute. Yeah, absolutely. One of those projects that is very

49:13 easy, not easy, but very open to contributions because it has so many sort of standalone little

49:18 features. Like I want to add this new algorithm or this new picture to this, this part of it,

49:22 right? You don't have to understand the whole system massively in order to do that. Right?

49:26 Yeah. This was actually the first open source project that I myself worked on. I picked a good

49:31 one to start on. No PR is too small. No issue. We are on discord. I know a lot of people,

49:38 are huge fans of putting the support there saying, Hey, come on discord, but we're there.

49:43 If anyone has questions on how to install, how to submit a PR, any ideas, we're around to talk.

49:49 Awesome. All right, James, before you get out of here though, I've got to ask you the final two

49:52 questions. All right. So if you're going to work on this, write some Python code, what editor do you

49:57 open up these days? Oh man. So I'm going to get a lot of, I'm going to get a lot of bad feedback

50:03 from my team on this one, but I am a PyCharm person. It scares me. And the fact that I can

50:09 open up a GUI window, makes my life a lot easier. Everyone else uses VS Code. So there's

50:16 always a constant debate. Well, you won't get any, feedback, negative feedback from me. I think

50:21 PyCharm is awesome. I use it as well. And like all the PR features and get features built into it are

50:26 pretty excellent. Yeah. VS Code is also great. it's love to those guys as well. Yeah. I think,

50:31 you know, when I started asking this question six, seven years ago, whatever it was, it was like,

50:35 I don't know what this person, like, I really don't know what this person is going to say.

50:39 It could be anything. It could be some like random thing. I haven't even heard of it. Like that's an

50:43 editor. Okay. Let me research that these days. It's really down. It's down to two contenders,

50:47 pretty much, unless you get the, the Vim Emacs angle, which is not as popular, but yeah,

50:53 it's down to those two pretty much. Yeah. Notepad. Yeah. You just got, got to read something. All right.

50:58 And then a notable PI PI package, something you want to give a shout out to?

51:01 Oh, man, we have so many, as I said, you know, 200 ish. One of the ones that's been a really great,

51:07 another open source project, the rich package. That's what we use to add all the colorful text

51:13 interfaces as well as the prompt toolkit, another great open source package that, that's what

51:19 does our auto completes and whatnot to try to make a little bit easier on the user experience.

51:23 That's fantastic. Okay. And there's two, I like prompt toolkit as well. And of course, rich,

51:28 and you know, speaking of textual IO, right. Speaking of open source projects, that is not the right one.

51:35 It's really cool that Will McGoogan has got textual eyes that I was looking for has really found a place

51:44 building great two ease text user interfaces with rich. And there's just so many things based on it.

51:50 And he also has, some funding as well to keep going there, which is, I think another one of the

51:57 bright, awesome pieces of news around sort of, you know, vibrant open source and Python.

52:01 The rich package is fantastic. yeah, it's all we do. Oh, we use now.

52:06 That's awesome. It's like got some crazy new feature every week. It's always pretty much.

52:10 It's never, never sitting still. All right. Well, James, it's been great to have you on the show.

52:16 Thank you so much for coming on and sharing a look with your project.

52:20 Thank you so much for having me. It was really great.

52:22 You bet. See you later.

52:23 All right. Thank you. Go bills. Go chiefs.

52:26 This has been another episode of talk Python to me.

52:31 Thank you to our sponsors. Be sure to check out what they're offering. It really helps support the show.

52:36 Take some stress out of your life. Get notified immediately about errors and performance issues

52:42 in your web or mobile applications with Sentry. Just visit talkpython.fm/sentry and get started for free.

52:49 And be sure to use the promo code talkpython, all one word. Sign up for the Python at Scale conference

52:55 to connect with your data science colleagues and learn about trends in the Python big data ecosystem.

53:00 Share stories about implementing solutions and find out about innovations in our space.

53:05 Visit talkpython.fm/python-at-scale. That's talkpython.fm/python-at-scale.

53:11 And use code talkpython to get 15% off your ticket.

53:16 Want to level up your Python? We have one of the largest catalogs of Python video courses over at

53:22 Talk Python. Our content ranges from true beginners to deeply advanced topics like memory and async.

53:28 And best of all, there's not a subscription in sight. Check it out for yourself at training.talkpython.fm.

53:33 Be sure to subscribe to the show. Open your favorite podcast app and search for Python. We should be right at the top.

53:43 And the direct RSS feed at /rss on talkpython.fm.

53:48 We're live streaming most of our recordings these days. If you want to be part of the show and

53:53 have your comments featured on the air, be sure to subscribe to our YouTube channel at talkpython.fm/youtube.

54:00 This is your host, Michael Kennedy. Thanks so much for listening. I really appreciate it.

54:04 Now get out there and write some Python code.

54:06 I'll see you next time.

54:26 Thank you.

Back to show page
Talk Python's Mastodon Michael Kennedy's Mastodon