
Virtual Day AMA with Rich Iannone | posit::conf(2025)
Libby Heeren from the Data Science Hangout hosts an AMA (ask me anything) session with Rich Iannone, a software engineer at Posit. Rich fielded questions from participants about everything from his journey in open source development to the guitars on the wall behind him. He was asked about his very first package, talked about the importance of personal projects for career growth, and described some of the differences between CRAN and PyPI as package repositories/distributors. Rich emphasized the value of community engagement and encouraged data newcomers to contribute to open source. He also shared his interests in niche packages (and hiding easter eggs in his open source code!) and the challenges of transitioning personal projects to public ones
image: thumbnail.jpg
Transcript#
This transcript was generated automatically and may contain errors.
I think that we should give it one more minute. We have a hundred and ten folks in here, but I am sure that we are going to have a few more people trickle in. We already have a question from Noor. Waffles or pancakes? I'm more of a waffles person. I just like those little squares you can put syrup in and they just they just get held there and like the geometry of it is just wonderful.
And to the actual question, well, it's great tables. Well, there was GT. So what led to that, I guess, by extension? It was an open project like a long time ago. There was like this Google Doc that we had and I just had a bunch of stuff we could work on. I looked through it. I saw this tables like task was like one line saying like big grammar of tables for R and I was like, yeah, let's do this. And I'm not sure how I got the name GT probably from grammar of tables, probably from good tables. I'm not even sure anymore. That was a long time ago. But yeah, basically, it was just like something someone wrote down. I just ran with it. Sometimes it happens that way, Livy. You just you see something, it's pretty innocuous and you just like do it and it becomes...
As a person who teaches other people how to code, that's the number one question I get. New people are like, what does GT mean? I don't get it. What does GT mean? I found myself like, oh, I don't actually know. Let me go Google.
I try to give this air of mystery, but not really saying too much. You know, I kind of want people to have their own interpretations, you know, that sort of thing. I think I found explanations online in other places, quickly Googling where I was like other people sort of positing like I think it stands for grammar of tables.
Yeah, that's like fan fiction in some way. Like they're just hoping it's for grammar of tables. And maybe it is. I don't even know myself.
Yeah, I mean, it could be wherever you want it to be. And I do have a strong sort of like, like a car motif going on in that package with the data sets. So it could just be like, like a type of car, like a Grand Tourer.
Getting started with open source packages
So I used to be like, well, okay, I didn't know what to do when I got an interest in like doing R stuff. Of course, I use it for like analysis one time ago. And like, maybe I should make packages. It seems like, you know, a good thing to do. And people are doing it. But how do I kind of break into that? Like, what do I even do? It was tough. I sort of fretted over that for like, you know, like weeks. And eventually, I just did something that was aligned to my work, like what I need to do anyways, but just sort of merge it into like a package.
It was really just like trying to find something that you really wanted to work on and like throwing yourself into it. And it didn't matter what it was. That was just, you know, the first project could be anything, you're just kind of like learning. And other ideas are just like, things you like in other packages, and you just kind of do it yourself. I mean, it's kind of like copying, but maybe it's recreating. But it's also like a good sort of like learning opportunity. It doesn't matter what you do initially, I think. And eventually, you'll start finding stuff. After just making a few packages, I found like, oh, man, now I gotta make these packages because I just found stuff that was like, you know, not to my liking. So it's a tough thing getting going. You just have to do anything that is vaguely going to keep your attention.
I think so. Yeah. I mean, try to be excited about it. I would say, don't limit yourself to something that you think is going to be valuable to other people. Right? Like, do the thing that's going to keep you engaged in doing it, because that's going to give you the learning process. Like I've done things and built things that nobody's going to look at. They don't care about them. It doesn't solve any problem for them. But it gave me something that I really wanted to do.
Don't limit yourself to something that you think is going to be valuable to other people. Like, do the thing that's going to keep you engaged in doing it, because that's going to give you the learning process.
Rich's origin story
Yeah, so originally, I did nothing like what I'm doing now. What I was doing was like, I was doing chemistry stuff, like air quality stuff. So I got a degree in chemistry. And then I sort of flipped over to like air quality consulting. And that really is just like, working at a company doing, you know, like, stuff that's vaguely science based, like air quality stuff. And that's where I started doing R stuff. Using Excel, it's like, that's fine. But I didn't really want to do that. Because it was so slow and like, not reproducible, in the least. So I moved a bunch of stuff to like R packages. Well, first of all, just like R scripts, and then like slowly migrate them into packages. And then that's where I kind of got the bug to just do the stuff like all the time. And then it's just, you know, posted original packages that had less and less to do with that, you know, line of work. And yeah, eventually, I just, I had to like, you know, do that full time, because I really wanted to. So then I contacted Posit, or back then RStudio, for job prospects, and it somehow worked out. I'm not sure how, but it did.
What was your first package that you developed? It wasn't GT, was it?
No, I think it was a let me think here. I think it was like for an air quality model, called high split is either high split or another one, like cowpuff. These are like sort of like these, these models you have to use to sort of like gauge whether plumes of, you know, emitted hydrocarbons will affect another area far away or, or maybe it won't. And basically, they require tons of inputs, you just run it through like this model, which is basically just an executable, you get some results. And basically, what I did was like a sort of like a front end for that basically just preparing inputs and, you know, shoving it into the model and getting useful, useful outputs.
What's next for Pointblank
So the R version is still being maintained, although I haven't got back to it recently. But my plan is to go back to that quite a bit and introduce a lot of stuff that I did in the Python version of Pointblank, which is what I've been doing for the last six months or so. So some of the things I've been doing is porting packages over from R to Python. Like GT has become great tables in Python and Pointblank has become capitalized Pointblank in Python. But what I'm aiming to do after a nice round of Python stuff to establish sort of like a beachhead for myself in Python is to go back to the R stuff and include, you know, do some well-needed maintenance and also to take some of the stuff that I did in the Python versions of those packages and reintroduce those into the R packages. Because some good stuff there and, you know, I worked on them more recently, so there's some new ideas and, you know, some other nice goodies in there. So what's next for Pointblank? I think it's that.
Yeah, basically make reports which are scoped to individual steps because right now you can get a whole report of how the validation went down, but you don't get granular detail on each and every step, which I think would be the next big thing. On top of fixing some bugs that cropped up in a year or two of not really being there.
Handling pull requests and contributors
Yeah, and I'll frame it in terms of PRs as well. I basically, I want people to submit PRs. Because I may miss a lot of obvious things. I mean, I try to be a user. I try to put my user head on once in a while to sort of understand what people really need out of this thing I'm making, but it doesn't always work. It doesn't always take. So I welcome PRs for things people actually need. Like I need this to do my work. So I love that stuff. And I'll take any PRs. And if they don't quite jive with the way the package is, I'll work with the PR contributor and shape it to make it fit nicely with what is there or what it needs to be.
As for some things like PRs that sit for a while, if that has even been brought up, I feel bad about that. But I do try to revisit those once in a while. And if it's been years and it's like, that's a really bad on me sort of thing. But usually for the most part, it doesn't get to that point. Usually they may sit around for like a month, maybe even less. Sometimes they're taken real fast. But I at least try to talk to the people as they come in. Like this may be a while till we get to your PR. But generally I love PRs.
R versus Python: syntax and features
Yeah. I mean, I kind of wish Python had like a pipe. I mean, it's kind of like... Yeah. Like just had it. And it's kind of funny because I try to make things pipe-like by always having like method chaining, and you just return the same object itself. So with great tables, for instance, it's kind of like R-like in that you can sort of chain things. And you can, if you just imagine it, pretend it has a pipe at the end of each line, but instead we have a dot at the beginning of each line. So we try to keep it close. I think it's great, like making small changes that stack up to like a big change in the end. And it's not totally unheard of to do it in Python. It's actually quite common, I would say, to do that. But I love that way of doing things. But I kind of wish there was just a pipe to make it sort of like... So it was like the accepted way for lots of things.
Yeah. So that's a good thing. Yes, exactly. That would be great. R having type hints would be great. When I started doing Python again, I was pleasantly surprised that we have all these things. The last time I used it before that was like 2.7, those kind of days, which didn't have that. And I came back to it and it's like, oh my God, Python has all this stuff now and it's wonderful. It's like, oh, this is a great language. I mean, I thought it was good before, but then I was blown away because I've been away for a while.
Advice for newcomers to the R space
Basically, yeah, just like can make your own open source package and just advertise it on like wherever you want, like Blue Sky, LinkedIn, that's typically where I go. And it could be just anything. You just have to like, like I said before, it could be any project that is interesting to you to sustain your interest in that. Because I didn't want to feel like drudgery and then you can branch out to other things, which you find later, which are, you know, maybe like a bit better than the original project, but you have to start somewhere. Right. So yeah, basically that's kind of it. Just like start on any, any project. It could be like a copy of another project. That's totally fine because you're just like learning and getting out there.
I will say Rich is really great at connecting with the community, just putting himself out there and sharing what he's doing. And honestly, that's the scariest first step. Just share it. I have a lot of people send me stuff on LinkedIn where they're like, hey, can you share this? Or can you ask this to the community? And I'm like, no, you do that. That's how you get your footing and build your community of practice around you. You have to be the one who's willing to go ask people the questions and be interested in them.
Niche and personal projects
Oh yeah. Yeah, definitely. There's just stuff like, um, oh my God. So I've actually worked on a bunch of niche packages, which I haven't talked about much. One was like creating sort of like SVG graphics, like animated things. And I thought that was like so far outside of what I was normally doing that it felt like just like a, like a passion project or a hobby project. And I sort of like stopped working on that, but like, I want more of that in my life. I mean, I'm trying to do more little weird things. Um, so everyone should do more little weird things. Yeah. I mean like, why not? And, uh, you, you've learned a ton of stuff.
I've been sort of like experimenting with like, uh, like terminal based things, like, you know, like, uh, interactive terminal applications, sometimes called TUIs or terminal UIs. And I've got this little thing, which is kind of like, uh, a small package, which I never talk about because I don't think it's that great, uh, yet. And it's called sweet. Cause I love the word and it's like a good exclamation. And basically just like a little Google sheets in your, in your terminal, um, which I'm not sure if that's ill-advised or if that's even good, but that's what it is. And I thought it'd be kind of fun to do that. Cause imagine you just got like a little CSV. You just make some small edits, save it. You can do it inside, inside there in your terminal.
Straddling CRAN and PyPI
Yeah. You just submit it and nobody even like gets to you. There's no, there's no person. You just do what you want. I mean, that's refreshing, but also dangerous. I wonder if like, um, you know, packages, cause you know, great tables, which I work on in Python, it has dependencies. Like people depend on it, but I have no idea if it, if my thing is, if I make changes, it's going to break their things. We don't even, there's not even really a culture of like looking at reverse dependencies and, and, you know, like making sure like running tests. There's no, I mean, as far as I can tell you, you install the other package manually and you, you know, you test yourself, but there's no way of doing it. So, um, that's a little scary and not great because, you know, in R you have all that stuff. You have those guardrails and checks in place.
Like GT has become great tables in Python and Pointblank has become capitalized Pointblank in Python. But yeah, it's kind of like, I just go between both worlds and I'm like, oh, I forgot about R. What is all this? No, it's not like that. I mean, it is for an instant. It's like, oh, all this stuff. Um, but it's fun, actually. It's like two different, like separate separate piles of like work, which I can just, you know, different rooms as it were.
Porting packages versus using interface layers
Yeah, yeah. Well, that's a really good question. Like why bother porting sometimes when you can just use a really mature API and just use it from the other language, like easily through that interface layer? I'm like, I think it's fun to actually port a package. I'm against the other thing. I actually, and I kind of think maybe people, there's some subset of people that don't want to do that, like interfacing part using R2Pi or the opposite, and just want the native API to exist in some way. And I feel like there could be so many more of these. I was just looking the other day for some sort of diagramming thing in Python. And I'm like, okay, this should be a snap, Python. Of course, it would have GraphViz, it would have D2, it would have Mermaid. It would just all be there. Yeah, it's ready to go. And it's like, no, there's not really a good Mermaid package that allows you just to create these SVG sort of flow diagrams. And for GraphViz, you have to have the GraphViz binary on your system, which is kind of like, I mean, that's fine, but it seems like there's ways to not have it exist like that. So I'm like, man, these are like, sometimes you just look around and you get package ideas from seeing some deficiencies. And sometimes comparison with R kind of makes it clear, like there's this cool thing in R, it doesn't really exist in Python.
Yeah, do you think that has to do with the priorities of the people who use the language though? Because I think that maybe that, like, when I talk to people who are more on the Python side, they're like, I don't do DataViz, why would I need to do DataViz? It might be that, yeah. And like, for instance, with tables, I mean, there's some table stuff in Python, but not nearly as much as R. Like, when GT came out in 2018, there was like, 10, like a dozen table packages. Right. And we've had table for a long time. Yeah, exactly. And like, Python didn't have any of that stuff. Probably because it's not like really much of a sort of like a publishing culture. Like, there's no R Markdown. I mean, of course, there's notebooks, but like, maybe. Right. A little bit less academic where people are publishing more frequently.
Blastula and internal projects going public
Yeah, I've got, I've got a bunch of those. Like I brought like basically like my own projects to, to Posit or back then RStudio that I've worked on myself. And I just said like, this would, this would be good for, you know, the company. Can I just switch, switch it over to the, to the org? Like, you know, so it's not under my own ownership, but it's more like Posit has it now. And I've done that in the past quite a few times. Actually, that's what happened with Pointblank essentially. And what happened with Blastula as well.
Okay. Yeah. So basically what it is, is it's a way to, to get emails, like with information through R out to people. In the beginning, it was not easy to do that nicely. Because like email sending involved for things like Malar, which involved Java, which nobody likes maybe. And it didn't involve like a go package, which had to be, you know, like included, like bundled. And now we can just do it through curl, which has nice email sending or email creation and sending abilities. So we just focus on the message body itself. So Blastula, imagine this. You have some analysis and you have some plots and maybe you have some tables and you want to send a report through email. So you can do that through there. You just sort of create like a, like a bit of text, which is the body you can include through, through functions. Like I want this ggplot to be in there. I want this, this GT table to be in there. Throw some text in there. It can be dynamic because, you know, we're in a programming language. And then it just sends, as long as you have an SMTP server, or you could do it through a connect, which is a really awesome way of doing it.
Format on save and tooling
Yeah. I use it in my CI as well. And I try to, I use, like, all the UV, all the astral stuff, like, basically, like, rough and UV. Anything on the future.
If anyone's using Positron and you don't have format on save turned on, turn it on. I have format on save turned on. And then I have the auto save functionality set to anytime focus is taken out of the editor. So anytime I just, like, take my cursor out of the editor, maybe I put it in the console, maybe I click the file pane, my code goes and fixes itself.
Yes. So it uses error in R and rough in Python, I believe. And it's just really, really good. Yeah. Shishir says format on save is too good not to be turned on. Do it, people. Do it. Yeah. We're spoiled these days when it comes to this stuff. Because I remember before, like, before rough, it was, like, a few seconds wait on a larger code base. And it's, like, sometimes you forget it's going to eventually change and you're doing stuff. Because now it's just, like, right away. It's, like, whoa.
The census guide to tabular presentation
Yeah, it's partly, I've sort of added things. But then, okay, I have this thing I lean on quite a bit. It's, like, this census manual that was, like, I believe written in 1949, and it was luckily a scanned PDF online. If you look for, like, department of the census guide to tabular presentation, just search that up. You'll be led to, like, a PDF link, and it'll just open up. And it's, like, this huge book. It's, like, 200 pages or thereabouts. And it talks about tables in such, like, satisfying detail. Like, what do you do with footnotes? Like, there's a whole section on how do you, you know, like, how do you order footnotes? Where do you put the actual mark of the note? Formatting text, like, formatting stuff on the left-hand side of the stub. A lot of stuff came from that. And because it was such a good, I mean, I've never seen such a compendium, like, such a complete work that just talks about tables for so long. They're not just, like, you know, just, like, a set of guidelines. This is, like, whole, like, like, work. And it was amazing.
It talks about tables in such, like, satisfying detail. I've never seen such a compendium, like, such a complete work that just talks about tables for so long.
Whoever put that up is, like, a visionary. Like, just keeps it up. Like, this is amazing work. I dread the day it may go down. Like, that link just becomes, like, it just dies. Because I think tables die with that. Because there's so much in there. It's crazy.
Bye, everybody. Thanks for so many questions. I'm sorry I couldn't answer them all either.
You did. You literally did answer every single question. I have a whole document where I've been putting them in and highlighting them. Okay. That's not bad. We did it. Lots of thanks in the chat here. This was amazing.

