Elm Town

Elm Town 66 – A gateway to scientific research

Episode Summary

Chris Martin shares how he grew Elm wings while building Exosphere, a user-friendly, open-source tool to help scientists do research. Note: Jared's audio quality isn't great.

Episode Notes

Chris Martin shares how he grew Elm wings while building Exosphere, a user-friendly, open-source tool to help scientists do research.

Note: Jared's audio quality isn't great.

Thanks to our sponsor, Logistically. Email: elmtown@logisticallyinc.com.

Music by Jesse Moore.

Recording date: 2023.08.02


Show notes

[00:00:56] Introducing Chris Martin

[00:01:43] Getting started

[00:07:08] Hiking the Pacific Crest Trail

[00:09:39] Getting into Elm

[00:14:03] Building Exosphere

[00:18:35] Challenges building open-source tools

[00:26:19] Fun coming from DevOps to Elm

[00:33:17] Mentorship at scale

[00:36:02] Code Commons

[00:40:52] Climate change

[00:43:52] Exciting features coming to Exosphere

[00:47:28] Insane chat box

[00:50:04] Picks

Chris' picks

Jared's "pick"

Episode Transcription

[00:00:00] Chris: So Elm took me from being a mostly infrastructure, server side systems person and basically gave me a set of wings to fly on the front end.

[00:00:12] Jared: Hey folks. Welcome back to Elm Town. I'm your host, Jared M. Smith. We'll be visiting with Chris Martin today.

[00:00:19] Sponsored by Logistically

[00:00:19] Jared: But first, let's talk about our sponsor, Logistically. At Logistically, we make intuitive software to help logistics professionals make better decisions. And spend less time on manual tasks. Our transportation management system helps squeeze every drop of efficiency from logistics teams of all sizes.

[00:00:38] Logistically pays me to record Elm Town episodes, as well as pays for our production and hosting costs. We build the front end for all new features in Elm. If you're interested in our mission and enjoy writing Elm, please drop us a line Elm Town at logistically inc. com. I'll put a link in the show notes.

[00:00:56] Introducing Chris Martin

[00:00:56] Jared: Now, Chris Martin. From Chris's GitLab profile, he is an open source founder and maintainer, a National Science Foundation principal investigator. His focus is on Linux ecosystem and web development, and making open source cloud infrastructure more usable by non IT professionals. To us in the Elm community this is important because the focus of Chris's work is on a tool called Exosphere, which is a user friendly extensible open stack client that helps scientists do research and it's drum roll, built in Elm!

[00:01:35] Chris, welcome to Elm town.

[00:01:37] Chris: Thank you, Jared. I appreciate you having me on.

[00:01:40] Jared: Yeah. Yeah, of course. Thank you for your time.

[00:01:43] Getting started

[00:01:43] Jared: So I want to get started by asking you. A little question that I like to start with about how you got started in computing and programming in general.

[00:01:54] Chris: Oh, geez. Uh, fits and starts as a child, I believe. Uh, my father bought a computer for about a hundred dollars at some auction of office equipment. It was, a IBM 486 running Windows 3. 1, and I think we reinstalled Windows from like 7 floppy disks. Yeah, and just various things as a kid. I think my first programming experience was a TI 81 graphing calculator.

[00:02:25] Um, which has a very rudimentary programming language. Um, I think we got that on sale at Kmart or something. And, yeah, um, fits and starts and, um, got really into the Mac OS X world, uh, around age, I want to say, 15, just as a power user. And, uh, let's see, got into programming in a, I got into IT support before I got into programming.

[00:02:53] So my, my first computing job was doing desktop support, uh, Windows, um, for Windows systems at a large corporation that, was self funded. or one division of it. And, um, yeah, I went to, went to school, went to college, did a bunch of programming, but, um, not, not in a very sustained way. I was more focused on systems stuff, I ended up doing, uh, IT consulting for small businesses at a little consulting company that doesn't really exist.

[00:03:25] Well, it's been acquired. It still exists, but yeah, so I did, um, for several years, um, just. Small business IT stuff, uh, networks, servers, um, all sorts of different industries like healthcare, finance, um, education, um, and then, I guess, um, at some point, uh, this would have been 2013, 2014, I, I quit my job to try to walk from Mexico to Canada, um, so this is the Pacific Crest Trail.

[00:03:56] A lot of people do it. Um, I... Spent several months just walking all day and thinking about what I wanted to do, um, and at that point the uh, Edward Snowden revelations had just come out and um, you know, I was thinking a lot about technology and how it helps people how it may not help people and what my place is and all of that And the one thing that I came away from that experience with was that I wanted to lean more heavily into open source development and programming and write software to help people in some way.

[00:04:32] Um, that's about as specific as it got, but I started learning Python. I spent about a year, uh, just doing coding exercises, doing little Python projects. I made a little blog. Um, server side stuff. All server side stuff. Um, yeah, I'm sorry, what was your question? How I got into programming? Computing? Yeah, so, yeah, at some point, um, I got hired by, uh, University of Arizona here in Tucson to, uh, work on this service that provides, uh, cloud computing infrastructure for scientists. And, um, That job was still heavily Python. It was, we built a product that was a Python back end and JavaScript and React front end. Um, and I was mostly working on back end stuff and the way that the, the, way that the product was architected was it was kind of heavy weight and it was kind of hard to iterate on.

[00:05:34] so I guess this may be your next question, which is how I got into Elm is we were talking about, you know, how How could we build something that delivers just as much value but... It has a much simpler architecture And, um, my colleague Julian at one point said, Hey, I've heard about this thing called Elm.

[00:05:56] It lets you write front end web applications, uh, rich and complex ones without, without having to use JavaScript, and maybe we should look into it. Um, So that was, that was my very first taste of Elm.

[00:06:11] Jared: Awesome. Yeah. And so, wow, this is, you know, quite a journey here. Um, starting with the TI 81. I had a similar experience with the TI 86.

[00:06:23] I think it was that that I had downloaded Tetris on and just the fact that it was this little handheld thing that I could bring to school and, and still like mess around with, hack around on. It was a pretty, uh, fun thing. really helped me to understand the scope of computing and how it could go beyond, you know, sitting at a desk at a PC.

[00:06:49] Chris: Yeah, and it flies under the radar in places where they don't let you use a cell phone, right? You're in math class, I can still mess around on my graphing calculator.

[00:06:57] Yeah,

[00:06:58] Jared: Yeah, exactly. Um, and, and of course you talked about being a power user of Mac and then getting into IT support.

[00:07:08] Hiking the Pacific Crest Trail

[00:07:08] Jared: And then, at some point, you decided to take this, this time off from work, right? And do this hike up the Pacific Crest Trail. What was your motivation for that?

[00:07:21] Chris: Uh, I wanted to try it. Uh, it seemed like it would be fun. was enjoying my job, but it, wasn't what I wanted to do forever. And I just read a whole bunch of stories about people who walked 2, 000 miles and that sounded like something I wanted to do just to see if I could.

[00:07:41] I had to overcome a few challenges just with my own level of fitness and my, and my heat tolerance, frankly, because it gets real hot out there.

[00:07:51] Um, and I didn't make it the whole way. So, um, started at the Mexican border in mid April and, um, ended up getting some kind of overuse injury in my foot, um, but that happened 1900 miles in, so I, I got to about the middle of Oregon. Um, and that was early August, I think, so I didn't make it quite all the way, but most of the way.

[00:08:14] Made some great friends, uh, had a good time.

[00:08:18] Jared: Wow. Yeah. I mean, I would say that's more than, um, more than most would even attempt. So yeah, kudos to that. And yeah, I guess also the fact that you listen to your body, right? Like that's important. You don't want to create some type of long term injury, to press through, just to make a point.

[00:08:37] Was there anything, you mentioned Edward Snowden and that whole thing. Was that part of the motivation for this or did this kind of come around that same time and just kind of happenstance?

[00:08:49] Chris: At the time I think it, it just got me thinking about how technology can be useful for a whole bunch of purposes, some of which serve people's interests and some of which don't. Um, it's not really direct inspiration for anything I do, except that I, I feel that open source platforms and general purpose computing is important and we need to preserve and expand the space of computing platforms that are fully open.

[00:09:16] Open source, uh, free software that are easy to inspect. Make sure they're not doing anything that we don't want them to do.

[00:09:27] Jared: Sure. Okay. And so you gained this interest in open source and you started learning Python. You wanted to help people and you got this job at the University of Arizona.

[00:09:39] Getting into Elm

[00:09:39] Jared: And then you said a friend Julian introduced you to Elm, is that correct?

[00:09:45] Chris: That is

[00:09:46] Jared: Yeah. Okay. And so when you discovered Elm, you, you mentioned also that the product at that point was difficult to iterate over, but you said you were mostly doing backend. So how, how did this change your approach or how did it change your work?

[00:10:05] Chris: Sure.

[00:10:07] So Elm took me from being a mostly infrastructure server side systems person and basically gave, gave me a set of wings to fly on the front end. And I don't think that's an exaggeration, uh, because I, I, heard a lot of things about the JavaScript ecosystem before then, and they were, many of them were not good things. And I, I think I wanted to be able to build user interfaces, build complex, dynamic front end applications, but I hesitated, um, frankly, because the tooling didn't sound all that exciting, Um, and Elm changed that for me in a really big way.

[00:10:48] Jared: Excellent. Yeah. I wonder then. At this point, you're introduced to Elm and at some point you build Exosphere, correct?

[00:11:01] So how, how does that

[00:11:05] Chris: Sure.

[00:11:06] So the two happened at the same time. Exosphere was my first ever Elm project. A lot of people start with toy projects. I started with building a front end for OpenStack cloud infrastructure, just the way it worked out.

[00:11:20] Jared: All right. Yeah. And so you started with this, this. project that was a real product that you're building Elm.

[00:11:31] And of course, one of the things that a lot of folks mentioned that they appreciate about Elm is that if you make mistakes, you can change them, right? Did you feel like that, uh, that you were able to experiment and then kind of learn from those mistakes and, and refactor your code?

[00:11:49] Chris: Absolutely.

[00:11:50] Um, Exosphere started as just one one module, and I remember in the early days changing everything. So just regularly just rewriting the whole app, and I was just learning at the time, trying to figure out JSON decoders, you know, I remember that being the sticking point, but once you figure out JSON decoders, everything else wasn't so bad.

[00:12:16] Jared: Yeah. Yeah. Okay. And so did you have to learn HTML and CSS for this as well?

[00:12:23] Chris: I knew a little bit from undergrad, enough to be dangerous at least, enough to put stuff on a page and, um, and hope people could figure it out. we've obviously come a long way in the few years since then. we now use Elm UI to, write out our HTML and CSS for us. But yes, in the beginning we were just writing we were using Elm HTML.

[00:12:49] Jared: Right. Okay. So, yeah, I wondered about that because Elm UI is just such a, a nice alternative, uh, to having to, uh, directly apply HTML and CSS. And so you switched to that. What was that like for your team?

[00:13:10] Chris: It wasn't so bad. I believe we started with elm style elements, which is a predecessor to elm ui, And yeah, I mean, at that point, the app was still small enough that I could get it done in a few work sessions. I don't remember exactly how long it took, but I don't remember pain from the experience.

[00:13:31] Jared: Oh, nice. Yeah, well, that's, that sounds like a good thing. Then. Let me ask you kind of, if you can remember back, uh, about how large was the application at that point?

[00:13:45] Chris: Probably a few thousand lines of code and a few pages, it was certainly doing useful things, but there weren't that many users at that point, so the stakes were pretty low for refactoring.

[00:13:57] Jared: Nice. Yeah. Yeah, that's certainly helpful. And so.

[00:14:03] Building Exosphere

[00:14:03] Jared: We're talking about Exosphere and about the you working on this, this Elm project with it.

[00:14:10] And so what was kind of the team size and dynamic there, how much of this was you doing the Elm and other folks joining in.

[00:14:20] Chris: Sure, so... I have a colleague and a good old friend, his name is Julian Pistorius, and he would probably love to be on this podcast, uh, when you get the chance. Uh, so Julian and I worked on this previous project that inspired Exosphere together, and we started Exosphere together, and we are still the two maintainers, and...

[00:14:43] Like every open source project, it's really frickin hard to find someone else to join as a maintainer. Yeah, it was mostly us from the beginning, and frankly, it was more Julian doing high level vision building and me doing more of the deductive, like, what can we actually build, what will actually work. That's kind of the dynamic that we have.

[00:15:08] Jared: Awesome. Yeah, okay. So it's the two of you working on it is...

[00:15:13] Is Julian also contributing to the Elm code as well?

[00:15:17] Chris: He is. Um, not, not as much these days, but yes, um, Julian is quite, he's quite adept with Elm.

[00:15:26] Jared: Okay. Excellent. Yeah. And so I wanted to include a quote here I found from an IU news article that says, IU wins 300, 000 NSF award to build an open source ecosystem around heavily used cloud tool and the quote from Beth Plale, executive director of the IU Pervasive Technology Institute said, quote, scientists are increasingly using community or commercial clouds for their research.

[00:16:01] It is a barrier for scientists to use these systems. Exosphere is a tool that removes these barriers. Could you explain how Exosphere is able to do that?

[00:16:12] Chris: Sure. So a little bit of context. I'm not sure if your listeners are familiar with, uh, some of the products like DigitalOcean and Amazon LightSail. These are commercial cloud computing service offerings that try to make it more user friendly for people who don't entirely know what they're doing with sysadmin stuff.

[00:16:38] So DigitalOcean is something it's a service that I personally use. I've had a few servers on there going back uh, let's see probably 10, almost 10 years now 8 or 9 years, and, these services try to try to help people set up cloud infrastructure without having to study all of the details. And Exosphere tries to deliver that, but for open source cloud infrastructure, specifically the OpenStack cloud operating system. Uh, so if you're not Google or Microsoft or, um, what's the other one? Amazon. Uh, and you have a big pile of computers, and you want to turn that into infrastructure as a service.

[00:17:25] So you want to allow people to create virtual resources, like computing, storage, networking. If you want to offer that, OpenStack is basically the only, the only way to do that in a large scale way It's an open source project. It's many, many Python projects smushed together.

[00:17:49] Exosphere is technically a client for OpenStack based cloud infrastructure. And, uh, it makes it much easier to use. So, OpenStack includes this default graphical dashboard app called Horizon. Um, Horizon is, I believe it's Django, and I forget what the frontend framework is. Horizon is not meant... For people like domain scientists, researchers, data scientists, business analysts, it's meant for IT professionals who understand virtual server and networking concepts.

[00:18:26] Um, so Exosphere tries to deliver a much more user friendly experience, and on a good day, I think we, we succeeded that.

[00:18:35] Jared: Yeah.

[00:18:35] Challenges building open-source tools

[00:18:35] Jared: And so. You are building this tool and it sounds like now you have this, uh, this National Science Foundation award to help with that. Um, but still, I imagine there are some challenges with building the tool. What challenges do you face?

[00:18:54] Chris: Oh, geez. Um, finding people to work on it. So we've got a couple of We have a few great community contributors. Um, some others have come and gone over the years. And, um, yeah, it's it's really hard to it's really hard to hire people when you work at a university. You can't pay industry market rates. and also the funding agencies, um, generally don't pay for software development work as a terminal goal. So that 300, 000 award from the National Science Foundation, we're very grateful for it. And it's helping a lot, but it's for ecosystem building. Uh, It doesn't pay directly for software development. And for that, we need to figure it out around the edges. Um, so I would say that's, that's the biggest challenge is finding people who are interested in using elm who, you know, who aren't just trying to build stuff in TypeScript and React who are willing to work on an open source project for, at best, below market rates. And sometimes as a volunteer, I mean, I would say. Most of, my contribution to exosphere since day one has been on a volunteer basis. While at times it has been my job to work on it. That hasn't been true for the majority of the project's history.

[00:20:22] Jared: Sure. And so it's interesting because I was just having a conversation with Jeroen Engels, who makes the elm-review tool for Elm.

[00:20:35] And one of the things that we were talking about is how, you know, this just open source funding and the economics of that in general. And Evan Czaplicki, the creator of Elm, has also, uh, talked about these, these kind of, uh, general ideas. I imagine that the problem is slightly different for you, and, and, and, yeah, I'll just say different. Because I, understand that, you know, Evan and Jeroen, they're making tools that may help individuals and still the, the ability to get, you know, sponsorship directly for something that is helping them, um, is one thing, but then you are also looking for people to help maintain and contribute to this project, but maybe I'm guessing that some of those folks would not necessarily directly benefit from that tool.

[00:21:38] So what would be the kind of hook? What would be the motivation for someone to want to come work on that?

[00:21:47] Chris: Yes. uh, y you have astutely pointed out that the sort of people who build Exosphere are often not the sort of people who would be using it, but you might be surprised. Um, so, I have, uh, a couple of people I consider friends, and some others I've heard as well say that, wow, I can just click buttons to create these instances. I don't have to look at my notes from a year ago on how to use, like, the AWS console or the API or something. Um, so, I think there is opportunity for dogfooding there. Um, but, yeah, as far as a hook, I would say, uh, we have worked really hard to make an open source project that's fun to work on. It's a client interface so that you can run your changes locally and see them immediately. When you're building a new feature or testing changes, you compile the app, run it, and see your changes immediately. So the tweak, test cycle time is very short, which helps with motivation. Yeah, it's a public service to work on it.

[00:22:52] Honestly. We've got more than a thousand researchers who have used Exosphere in some capacity to create cloud resources to get their work done.

[00:23:02] If you're contributing to Exosphere, you're helping those researchers and those other people achieve more things while uh, being able to focus on the work they do best, which is generally not Linux system administration work.

[00:23:16] Jared: What kinds of research might those folks be working on that you'd be contributing to

[00:23:24] Chris: Oh, it's all sorts. It's all sorts. So, now may be a good time to mention Jetstream Cloud and, uh, I'll save most of this for the end because it's one of my picks, but, uh, Exosphere is the primary user interface for this service called Jetstream Cloud, which services any US based researcher doing open research, uh, that the National Science Foundation would fund. So this includes things like physics, it includes biology, it includes, um, like some epidemiology. It's it's most research domains, um, and potentially in the future it's any research domain. People have used Exosphere to build, uh, what are called science gateways, which is a term of art that I like to call science website. But, um, it's increasingly common for researchers to build their own web applications that, uh, share research data, allow people to browse that data, and allow people to analyze it, sometimes in the web application, sometimes even with, uh, very computationally intensive back end processing. And I think there are over 60 something science gateways on JetStreamCloud now. And, you know, I could read you down a list. I don't have it right in front of me. But it includes things like wastewater testing for COVID. It includes, um, I believe the Event Horizon telescope.

[00:24:55] The, uh, the, the orange donut of the black hole that we saw for the first time a couple years ago, right?

[00:25:01] The first image of a black hole. Jetstream is in their data processing pipeline as well. Um, so that's the sort of thing that you're helping.

[00:25:09] Jared: Sure. Yeah. I mean, it sounds like the implications could be really vast, really wide. So, yeah, I mean, it sounds like a worthwhile project. thank you for volunteering a lot of your time, uh, to work on it and, and promote it.

[00:25:27] And one of the things that I am personally motivated for is things around climate change, because I think it's something that we know most of us have some knowledge of, um, and that it's something that we're not sure how we can be effective in that. Um, but, using a skill that you already have, like Elm, is a way that folks can contribute to larger things to help, uh, folks help the world.

[00:26:04] And I think that it shouldn't be overlooked, you know, as, as a tool for that. Yeah, I really like that. And I'm glad that you took the time to, uh, to come on here and talk about this with me.

[00:26:19] Fun coming from DevOps to Elm

[00:26:19] Jared: I do have a question here. I asked for a resource that I could ask a... asked to give me a question for you.

[00:26:28] And this question is from Andrew Lenards to you. The question is quote. You began your career in operations and DevOps. How was it to begin solving front end problems in Elm?

[00:26:43] Chris: It was a lot of fun, and honestly the, most fun I have at my job still to this day is building user interfaces in Elm. I think a lot of systems programmers and backend programmers don't like to go near the front end and I don't understand the hesitation because... you get to build buttons to click on, it's like if, when you're a little kid messing with the fake car dashboard and the buttons and switches. It's all the wiring behind that and it's, I think, I think it's intrinsically rewarding to work on.

[00:27:18] Jared: I share that. I have been generally just full stack throughout my career, but I've always, or most of the time trended toward doing front end work. And I think it's kind of like what you're saying, where

[00:27:33] I get to immediately have that feedback loop, right?

[00:27:37] That, that you get with, if you're using, uh, Some kind of rebuild tool. Like I use elm-watch now from Simon Lydell, and that will just like automatically refresh in the browser. And the feedback loop is so quick and it is so nice to be able to iterate and make changes. But then also putting something out there and just seeing how people interact with it and you can get feedback and they may not love every bit of it, but then that's a challenge then to, to make it better, to make it something that people will use.

[00:28:09] So are there any of those types of challenges that you can think of where you were trying to make something and you got some feedback and you're like, okay, now I know, I need to make some changes to this or something along those lines?

[00:28:24] Chris: Yeah, especially in the early days of the project, people would say, this interaction isn't very intuitive, or I lose my place when I get taken out of the create instance flow if I'm trying to upload an SSH key pair, for example. All of the challenges with building a good user interface, Elm doesn't magically solve all of them for you. I would say that, if anything, it frees you to focus on those. And there's a whole discipline of uX and UI design that I'm a newcomer to, right? I got a little bit of I started training on that, uh, when I was in college, but after a bunch of years building infrastructure stuff, I'm... I am new to building... great user interfaces, and it's still something I'm learning.

[00:29:11] We have, a contributor, uh, Jaladh Singhal, who worked for us for about a year, until Caltech hired him, and, um, he's still a friend of the project.

[00:29:21] Um, and Jaladh has done, he did a ton of work to just refactor basically all of our, widgets and all of our view code. And he took what, Julian and I had built, which worked sort of well enough, but wasn't all that polished and just made it a lot more refined. we added, we did things like adding a dark mode to the application. Um, another contributor and friend of mine, Dennis Snell. Uh, I'd also like to give a shout out to Dennis for just having a very careful eye for design and also the web platform. Um, sort of teaching us that, oh, well actually like you can ask the browser whether the, whether the computer is in dark mode or light mode and use that by default. So, yeah, little things like that that I'm a relative newcomer to. Um, and it's fun to learn about them.

[00:30:12] Jared: Yeah, that's really neat. And one thing I'll mention as you're going along there that I like about elm-ui specifically in that a lot of the ways that the API is designed you to think about how the user will interact with it, you know, like, um, images must have alt tags.

[00:30:34] And so these, um, these ways that it's really thoughtful to. To consider, you know, the user and, and the user experience. So yeah, yeah, it is such a challenge though. It's not like no matter, no matter what, um, you're going to have, uh, some challenge come up that you have to solve. Um, and of course for me, it's doing it in Elm and it's delightful. So, yeah.

[00:31:02] Chris: Yeah. And I, and

[00:31:03] I will say like, there are, there are parts of Elm UI that I've, I've received feedback that, um, still could use some iteration. So specifically I've heard that. When you're showing a list of things, like a column or a row, um, if somebody is using a screen reader, they kind of expect that to use semantic HTML to say this this is an unordered list in here the list items.

[00:31:29] And Elm UI will, as it works now, it will render that just as nested divs. I'm told it's not the best experience, for people that use those sorts of assistive tools. And I realize this is probably more feedback for Matthew Griffith than for you, but I'm, hoping that, you know, whatever elm-ui evolves into will take feedback like that into account.

[00:31:56] And I know that Exosphere still has a lot of work to do to do a better job of accessibility. And, you know, it's one of our long term goals on the project. And, um, I'm looking forward to learning, about how to do a great job of that.

[00:32:10] Because I'm also a newcomer to building accessible interfaces.

[00:32:16] Jared: Yeah. Yeah. There are so many facets to it. And I was talking with Tessa Kelly on the podcast earlier in the year. And I really liked how she phrased it, where instead of empowering people, you're not disempowering people, right? You're, you're providing the level of experience for accessibility to that of the experience if you are using, you know, a traditional keyboard and mouse and, the challenges are, are so fun and they're so deep that you can go and you can work in this environment. I've been doing, like I said, full stack for a long time, but my focus is on the front end. So, so much of my progress is in learning how to do better user experiences, create better user experiences.

[00:33:07] And I, I think that, um, yeah, there's a lot of progress. To continue to make in that area. So, yeah, that's a good point.

[00:33:17] Mentorship at scale

[00:33:17] Jared: So who were your mentors, uh, throughout your process of building things on the front end with them?

[00:33:27] Chris: Ooh, uh, I've mentioned a couple of them already.

[00:33:29] I, I wish I had benefited from a stronger mentee, uh, mentor mentee relationship over the course of my career. I, for whatever reason, i, I haven't really had a lot of that, at least not, not for technical, not for engineering. Um, but some folks who have been influential on my journey are Andrew Lennards, who you mentioned a few minutes ago.

[00:33:54] Um, my colleague Julian has, um, you know, he has great ideas and has inspired a lot of my work. Uh, Dennis Snell,

[00:34:04] um,

[00:34:05] Jalad Singhal, um, several others. I haven't really had

[00:34:10] a long term mentor mentee

[00:34:11] relationship over the years.

[00:34:13] Um, if someone wants to mentor me, I would, I'd be excited about it.

[00:34:18] Jared: Excellent. For me, I haven't really had that officially either. I've certainly learned things from different folks, but one of the things that I like about the internet, I guess I'll say is that.

[00:34:33] There are so many resources out there of things that folks have done and open source software in particular, where. If I'm willing to put in the effort to read code, I can start to find a mentor by reading code and seeing code that makes sense to me, or that I think is an improvement over the code that I already write.

[00:34:54] So I can then look and say, okay, who were the authors of this code that I find on the internet? Or who are the authors of these blog posts or who are the authors of these tools, such as the ones in the Elm ecosystem. And I think that by doing that, then I can find, okay. I tend to really appreciate the work by so and so.

[00:35:18] And so then I can start to follow that person's work and dive deeper into, well, what is it about their work that I find to be useful? And so I've found that as a way to kind of quietly have a mentor, uh, um, without directly having that Yeah, there you

[00:35:41] go.

[00:35:42] Chris: at scale.

[00:35:43] Jared: Yes, exactly. Yeah, I love that. Um, but yeah, I, I think like you mentioned, you know, a lot of the folks that you just end up working with that, that help you along the way are invaluable. I mean, they can't be replaced. So yeah, kudos to all those folks.

[00:36:02] Code Commons

[00:36:02] Jared: Another question that I have is about... A blog post that you wrote and it is the "Vision for Code Commons". Could you tell us a little bit about that? Because I think that's an interesting thing that, um, that I think maybe not directly applies to the Elm community only, but, could apply to it as well.

[00:36:23] And as we're starting to see like Elm Camp and conferences start to come back around, I think folks are wanting to gather. Right. And I really like this idea. And I think that folks in the Elm community are often very open to new ideas. So would you mind to elaborate on that a little bit about what that is?

[00:36:44] Chris: I would love to talk about Code Commons. Uh, so Code Commons is the result of me having ants in my pants, and staying at home all day just kind of breaks my brain, and not being around other people building stuff with computers kind of demotivates me. And most of my team is in Indiana these days, so I'm trying to figure out, well, what can I build locally to provide that, that missing piece of interaction that, that my job can't give me where I live, you know, halfway across the continent. So I looked at a few different ways of... community organizing around people building software. And, uh, Tucson is a little bit weird because there are, there are a lot of software people here and engineers here. I mean, not like there are in more major cities, but there are a bunch. You just, you don't really hear about them until you go to seek them out. I wanted to build a physical space that people could show up, bring their projects, work on them, maybe interact with each other, talk about what they're doing, you know, exchange ideas, build mentor mentee relationships, possibly, and Code Commons is what fell out of that. I looked at several different formats for doing this, some of which were a lot more ambitious that I decided not to do, like starting a co- working space. Code Commons just seemed to be a lightweight way to get started. So, uh, for, uh, most of the past year, we've been meeting every Wednesday afternoon at the main library at the university here. Uh, they have an extremely nice new room that we get to use, and it's just Wednesday afternoons. You just show up, you bring your job, you bring your projects or whatever you're working on. And sometimes conversation happens. Sometimes people are just heads down working on their projects. But... Um, yeah, a bunch of new, uh, new professional relationships have been formed. Um, sometimes students will show up with their homework. Sometimes people will show up asking questions about, you know, statistics code with R, which most of us aren't that familiar with, but we refer them to other resources. The most common interaction we've had with new people is someone is showing up and saying, I want to build a personal website. I want to use code to do it rather than some pre- baked thing. How do I get started? What do I do? So we'll talk them through using a static site generator and GitHub Actions, GitHub Pages, things like that. Um, but it really runs the gamut. Um, another person I'd like to shout out is, uh, two people. Actually, uh, Devin Bayly has been heavily involved with Code Commons and also, uh, Mariah Wall. Um, Devin works, uh, he's a visualization person. He, um, works with 3D modeling and all sorts of... Graphical stuff uh, for research, but also for uh, arts and humanities sorts of projects. Um, and Mariah is a graphic designer turned, uh, software engineer, uh, working on her master's degree right now. Um, so these are some of the regulars. I'm just mentioning them, um, because they're important parts of this early community.

[00:40:06] Jared: So if folks were interested in starting their own Code Commons in their area, where might you point them to find more information about it?

[00:40:15] Chris: codecommons.net. That's not even one of my picks, but that's a good idea for a pick.

[00:40:23] Jared: There you go. All right. Yeah. And I guess I should also ask if folks are interested in becoming contributors to Exosphere. How would they go about that?

[00:40:32] Chris: Exosphere.app.

[00:40:35] Jared: Excellent. All right. Those are, those are easy. Yeah.

[00:40:38] Chris: Mm hmm.

[00:40:38] Jared: to those in the show notes as well.

[00:40:40] Chris: Sure, you can also find us on GitLab, uh, gitlab. com slash exosphere slash exosphere, but uh, the website will also take you there.

[00:40:50] Jared: All right.

[00:40:52] Climate change

[00:40:52] Jared: We mentioned climate change earlier, and you also created another blog post, a work in progress blog post, if you will, about the climate crisis, but I love those ideas.

[00:41:04] And it's refreshing to see folks publicly struggling with these problems of how to have an impact personally with our own choices. But what do you see as the next step in our industry and tech culture to make a positive change in the climate?

[00:41:21] Chris: I don't know. I wish, I wish I had good suggestions here because I don't. I think that the highest leverage interventions that we have at hand right now for improving the climate change picture are less building new technology and more just social technology, evaluating how we interact with the world, how we consume things, how we move around our cities, um, how we travel.

[00:41:55] I think that we have a really big lever to pull, and that's the choices that we make as individuals. Um, I mentioned in that blog post, I'll mention again here. In the early days of COVID, the price of crude oil went negative. and it didn't stay negative for very long, but that meant that fossil fuels became less than worthless, at least by this measure, for a short period of time. Now, unfortunately, what it took to do that was everybody staying home afraid they're going to get sick. And clearly we don't want to do that again, but, I think that it, points out that collectively we, we have a whole bunch of influence over, um, what we consume and how we affect the overall balance of what ends up in the atmosphere.

[00:42:43] Jared: One thing I see in the Elm community that I think is helpful and it ties into what you are doing with Exosphere, I think. And one thing that folks say with a few projects is they put on the readme that if people are working on the climate or just doing climate work, then they, uh, the maintainers of that project will prioritize bug fixes and feature requests to people who are doing that work.

[00:43:18] So I think that is, you know, one just kind of as a cultural thing that for one made me think about, well, you know, what do I do that I have some control over that? Well, one is like, I can invite somebody on who is helping to make researchers' research easier to do, right? Like what you're doing with Exosphere.

[00:43:37] So I think, you know, like that, that feels like something to me that can be a positive, right? Like that is a way to make a change with technology. So I don't know. And we can move on if you want.

[00:43:52] Exciting features coming to Exosphere

[00:43:52] Jared: Um, is there anything that you're kind of excited about right now?

[00:43:56] Chris: Just the future ahead for the project, right? So if you, go onto our GitLab and look at the issues, we have an issue label called long term goal. And if you click on that, you'll see about 20 of them. These are opportunities, ways for us to build the project in more directions in the future. I think there's a lot of opportunity to help with computational workshops. So these often take the form of a big pile of students in a room, and maybe they're undergraduates, maybe they're grad students. But they're all there to learn about some software tool. And that might be something like iWorf, which is weather forecasting.

[00:44:33] It might be, write PyTorch for machine learning. It could be some new science technique. It could be anything. And having seen these workshops and having volunteered a little bit as a facilitator, it's a challenge. You're getting people to use technology that is often run from the command line. It often needs to run on a specific platform, most often Linux. You are trying to get a room full of students to get past the setup work and get the thing working so that they can play around with it. This is one use case that Exosphere already serves.

[00:45:16] I think we can do a better job. I think we can provide tools for the facilitators of these workshops to help out students who are having trouble, especially when these workshops are geographically distributed, so they're all meeting online.

[00:45:30] And another thing I'm really looking forward to is uh, graphically accelerated streaming desktop support. So this is something that we have already prototyped and kicked around a bunch of different ways. We've had some great help from the community um, to basically build a button. When people click a button, they can get in their browser something that is a reasonably fast and responsive desktop environment with a powerful GPU behind it. Like a really powerful data center class GPU. And, uh, I'm gonna shout out to three people who have done a lot of exploratory work to help with this. Um, in no particular order, they are Zach Graber, Devin Bayly, and Tyson Swetnam, uh, who have helped explore this feature. And we still need to integrate it in Exosphere. There are a bunch of engineering trade offs. Um, but I look forward to the day when people can just click a button in Exosphere and get a desktop environment in their browser that's highly performant, but also highly usable so that they don't need to set up technologies like VNC and VirtualGL and, you know, a VPN connection, all of that stuff.

[00:46:42] Jared: Really cool. Yeah. Yeah. That sounds exciting. And so the idea then is that that would be integrated into the client side Elm app, Exosphere.

[00:46:52] Chris: Yes. Um, or at least the Elm would be launching, the Elm code would be giving you the button to click on to launch the thing, right?

[00:46:58] Most of this is a challenge to solve on the instance side, so when somebody creates a virtual computer that gets provisioned using a language called Ansible.

[00:47:08] Um, it's like a systems configuration management, infrastructure as code language. Um, so, maybe that's not quite, that's not entirely on the Elm side.

[00:47:18] The workshop facilitation features will heavily use Elm to deliver those.

[00:47:25] Jared: Cool. Yeah. Yeah. That sounds exciting.

[00:47:28] Insane chat box

[00:47:28] Jared: Well, Chris, is there anything else you'd like to talk about before we move on to picks?

[00:47:34] Chris: Um, I don't know. I think we've covered a whole bunch of topics. Um, there are more than we can get into. Uh, I want to respond to one thing from a couple of episodes ago. Kevin Yank made this, uh, blog post that says, Assume ChatGPT is, uh, lying to you, making stuff up. Um,

[00:47:55] Jared: Yeah.

[00:47:55] Chris: I have my, own experience. Actually, I have a good friend who asked GPT, What is the largest single engined airplane? And this friend, he's an aviation nerd, he knows all sorts of stuff about planes. And

[00:48:10] ChatGPT confidently responded, oh, well that's the Spruce Goose, the prototype by Howard Hughes. And then you ask it, How many engines did that airplane have? And it responds, it had eight engines.

[00:48:23] And you ask, oh, well, I asked you about a single engined airplane.

[00:48:27] Um, it's just, it's just fun to, to go back and forth with it. Uh, yeah, it really is a sociopath and programmed to be confident first and correct second.

[00:48:37] Um, I agree with others who you've talked to that, uh, that advise caution, uh, when using content from ChatGPT. I would also say we should be cautious about what we paste into ChatGPT because that all, that all becomes training data and regardless of, you know, what the terms of service are now, you know, we, don't have control over how our data is used in the future. And I think it's, all too easy to paste really sensitive stuff into that box. So maybe think about what you put in the box.

[00:49:12] Jared: Yeah, yeah, that's a great point. And sometimes it's hard to know what is going into that box, depending on the tool that you're using to interact.

[00:49:21] Chris: If it's built into your IDE and it looks at all your code, then yeah, your whole, who knows what you put in the box? Maybe everything your IDE knows about. Maybe your whole computer.

[00:49:31] Jared: Yeah, it's

[00:49:32] Chris: uh, caveat emptor.

[00:49:33] Jared: Yeah, yeah, that's, that's a good one. Yeah, and I, I, uh, I appreciate you bringing up that, uh, that article by Kevin. That's, uh, that's a really interesting one. And I, I, I liked that, uh, the anecdote that you shared from, uh, from who was it that you said?

[00:49:52] Chris: Oh, his name is Aaron. Aaron Kravitz.

[00:49:55] Jared: Okay. From Aaron. So yeah, neat. Is there anything else you want to talk about?

[00:50:03] Chris: I think I'm good.

[00:50:04] Picks

[00:50:04] Chris: Let's move on to picks.

[00:50:05] Jared: Okay. Well, what do you have for us?

[00:50:07] Chris: What do I have? I have three things. The first is Jetstream Cloud, uh, which is a... Cloud computing service free at point of use for any US based researcher or scientist.

[00:50:23] Anyone doing something that falls under the category of Open Publishable Research.

[00:50:29] If this describes you, then head on over to Jetstream

[00:50:33] Cloud. I'm going to give you the documentation site. That's docs.jetstream-cloud.org.

[00:50:41] And that will tell you how to get started, how to get an allocation and access to the system. Uh, yeah, it's, it's, free cloud resources, just like you would get from Amazon, Google, or Azure, any of those places. Um, and the National Science Foundation pays for it, and, uh, if you're doing research out there, then, uh, then you can use it. And Exosphere is the default user interface for Jetstream Cloud. Most of my job these days is working on backend plumbing for Jetstream, accounting systems, that sort of thing. I'm always happy to see more people on the system, trying it out, breaking stuff, let me know what Python code I need to fix. Or if I'm lucky, what Elm code I need to fix.

[00:51:23] Jared: Yeah, and the folks in this community will know that since it's Elm on the client side, then, you know, they're empowered to be able to contribute to that as well.

[00:51:37] Chris: Absolutely. and we've done a lot of work to make our new contributor onboarding process as... pleasant as, possible as, feasibly can be. Um, I think it's pretty dang good.

[00:51:48] Jared: Excellent. Yeah, I'll put a link to those docs for Jetstream Cloud and

[00:51:52] Chris: Mmhmm.

[00:51:53] Jared: as well.

[00:51:55] Chris: Great. Second pick, uh, Defetter. com. That's d e f e t t e r. Uh, this is a manifesto on what the author calls Information Addiction. Uh, so the author is andrew Backhouse. Um, I found this, I found this site to be a really useful framing for troubleshooting my own relationship with technology, which which is kind of dysfunctional at times.

[00:52:20] If you don't mind, Jared, I would like to read the first few sentences of this website. Is that okay with you?

[00:52:26] Jared: Yeah, sure, go for it.

[00:52:27] Chris: Information addiction is a condition caused by the irresponsible consumption of information, especially, compulsively. It's continuing to scroll through Facebook even though you've definitely seen everything.

[00:52:42] It's your fingers typing reddit. com by themselves when you open a new tab. It's closing Instagram and opening it again right away. It's picking up your phone every 5 minutes to check for notifications, the constant distraction of anticipating them, and the anxiety you feel when your phone is not with you. It's the urgency and elation with which you whip it to your face when you hear it chime. End quote.

[00:53:11] So, I think it's just a really useful site.

[00:53:14] I think the site talks about an occupational hazard that all of us have if we use technology to earn a living. And I do believe it's getting more hazardous with time. So to borrow a phrase from Tristan Harris, uh, there are supercomputers aimed at our brains, right? We, we have tech corporations that are outdoing each other. to understand each of us in some ways better than we all understand our own selves, and they use that understanding to manipulate our behavior,

[00:53:42] And that often goes against our own interests. Interests which might include being productive at work, um, you know, having relaxing downtime after work.

[00:53:51] This website talks about a lot of strategies, uh, for regaining control of your attention, or what I've lately been calling strategies for self management. Um, and I'm, I'm personally interested in helping to develop more stu strategies.

[00:54:05] I think this draws on domains of, uh, psychology, evolutionary psychology, and, um, yeah, just building open source technology to this end. Um, I think there's a lot of opportunity there. I think there are a lot of apps out there to help people meditate or tame their phones or focus better. Most of those apps are proprietary, and I think that, um, I would love to collaborate on some sort of open source project to help other people, uh, sort of defeat their addiction to consuming information. Um, so if anyone wants to collaborate with me, or if you know of existing such projects that are out there, uh, I would love to hear from you. Um, but I think a good introduction to all of this to start with is Andrew's site, defetter. com.

[00:54:51] Jared: Excellent. Yeah, that sounds really neat. I'm gonna have to check that out. Um, one of the things that this makes me think about is conversation I had with Dwayne Crooks. We were talking about how we Evan Czaplicki work.

[00:55:09] And I think that, um, the, the focus was on this, this concept of deep work and, and, um, and some books by Cal Newport, that being one of them, um, that, that get into this idea of, of how you can evade what, what you're describing there, right? That, um, what's the term that you, that was used with.

[00:55:36] Chris: Uh, so Andrew calls it information addiction,

[00:55:39] Jared: Yeah, there we

[00:55:40] Chris: which,

[00:55:41] Jared: addiction. Yes.

[00:55:42] Chris: and I think that puts it in kind of a negative framing, but I like a more positive framing of self management, which is the opposite of information addiction. Mm

[00:55:52] Jared: Sure. Yeah. But I guess to kind of. Make sure that there is a particular point, right? Because self management could apply to many different realms, but the self management of information.

[00:56:05] And, and so, yeah, I, I really like to, um, to consider these, these things. One of the tools that I use is a product called Stretchly that pops up on my Mac every few minutes and forces me to take a break. Like, I mean, I could close it as long as I don't close it, then I have to sit there and either it will suggest me to do some stretches, get up, walk around or, or whatever.

[00:56:34] Um, and then every 45 minutes or an hour, I will take a little bit longer of a break, a 10 minute break. So, um, that's one of the, the tools that I use to help combat that for me, which it's not just, it's not just a, a, a thing for my information addiction in my mind, but it's also for my physical health because I've had RSI.

[00:56:59] And one of the things that I've found is that if I, um, take breaks more often, then I am less likely to. So, um, so yeah, that, that's been really helpful. Um, and then, yeah, just kind of going back to the idea that I was talking about with Duane of, of, of thinking about how you work, like, and thinking about that in terms of like, how much do I need to have an interaction with all the things going on, right.

[00:57:27] With the information that's out there and by. And what do I gain by not doing that? Right. Like what are the alternatives? What's the trade off?

[00:57:36] What is the benefit to maybe having quieter work? So, um, yeah, I think one of the things that, that we were talking about that, uh, we were alluding to when I was talking with Dwayne Crooks is that when we look at how Evan works, we're able to see.

[00:57:54] The, the kind of things that he's able to come up with, and he comes up with those by kind of working on, uh, in, in batches and thinking about these concepts outside of what might be coming in, in a stream of, you know, a consciousness, if you will, um, from the outside world. So, you know, um, uh, I don't know, and, and again, this is just a, an observation, but I think that it kind of ties into what you're saying here about, um, self management and, and thinking about.

[00:58:25] These, I don't know, the psychology of it and, and how we attack that ourselves in our daily lives.

[00:58:33] Chris: Yeah. We did not evolve to sit at computers all day. This is a brave new world, and some of us deal with it pretty well, but others less so.

[00:58:43] Jared: Yeah. Yeah. For me, it's, it's totally, I have to, um, have external systems to force me to, um, to take breaks.

[00:58:51] So yeah, did you have another pick?

[00:58:55] Chris: I do have one more pick, um, and the, physical health is a good segue here. My last pick is a rowing machine. Yes, the piece of exercise equipment. No particular brand, right? Um, all you need is the seat that slides back and forth and you pull on a handle like you're rowing a boat. Um, So, Concept 2 is kind of the standard, but there are others as well. Um, I, I suggest to everyone, if, if you've tried, like, building a running habit before, or, um, if it's too hot or cold to go outside, ride a bike or whatever. I, started rowing around the start of the pandemic and it's been a big upgrade, frankly, to my health and my life. I'm gonna stop just short of saying that it's a shortcut to fitness, but it has improved my posture sitting, it's improved my core strength and upper body strength that we tend to lose as sedentary knowledge workers, and yeah, I think for me, just rowing for half an hour before breakfast is basically a vaccine against having a bad day. It's an exercise in willpower sometimes to sit on this machine and pull on the handle 500 times. Um, but you learn to abide it and sometimes love it and afterward a lot of tasks that require willpower don't seem so hard. And I'm now at the point where I can just sit down on it and it's like autopilot and half an hour goes by then I stand up and almost always have a great day afterward. And I found it to be, yeah I've tried to start a running habit before and hurt myself every time. Um, I've just found rowing to be really easy on your body, but also a really high quality workout. Um, it's very compatible with podcasts, uh, if that's your thing. It can be a very meditative activity. It can be short and intense or long and steady, um, depending on how you do it. Uh, the internet is full of guidance, right? We live in a wonderful time. Um, so that, that's my final pick.

[01:01:01] Jared: Nice. Okay. Yeah. One thing that I do that I think is similar is that I do kettlebell swings. Um,

[01:01:11] it's probably a little more dangerous, um, because you're kind of holding onto something that, you know, you could let go and drop or smash into something.

[01:01:19] Yeah, there you go. I mean, Chris is holding up a kettlebell, uh, if you're just listening.

[01:01:25] I only use it,

[01:01:26] Chris: I use it as a door prop these days. I, I, I should swing it. I forget to though.

[01:01:32] Jared: Yeah. Well, I mean, it sounds like the, the rowing is working for you. So the row machine, um, sounds like a good alternative. And I, a former colleague of mine, David Suski, uh, he was really big into rowing and, uh, And said that, you know, it kind of helped attack those problems as well.

[01:01:51] But I think, yeah, you're, it seems like you're. You're trying to get as many of those muscles, um,

[01:01:58] Chris: Mm-hmm.

[01:01:58] Jared: at once, um, with one movement. So

[01:02:02] Chris: yeah.

[01:02:03] Jared: Um,

[01:02:04] Chris: Yeah, Kettle Ball swings are great, to be clear. I'm, I'm not dissuading anyone from that. Um,

[01:02:11] Jared: sure,

[01:02:12] Chris: but you, do, you do need to, you need to not drop the kettlebell.

[01:02:15] Jared: Yes. Yes. So far,

[01:02:20] Chris: I have a good friend who I've mentioned earlier, I won't say who, but uh, dropped some weights on his toes a few years ago, and uh, it was a really bad time for him. Uh, so, I try not to do that.

[01:02:33] Jared: Yeah. Yeah, that is an important step if you go that route. Um, but also a very flexible tool. Um, so anyway, yeah, that's a great pick.

[01:02:44] Um, the only pick that I have is not really a pick. But since I'm hosting, I guess I can kind of do whatever. And I mentioned this before, but since we're already talking about climate change and we're talking about Elm, if... and before I mentioned, if anyone was working on the intersection of those using Elm to help, um, with that, then to come talk to me. Also, if you know, anyone who is doing that and they would like to come on and talk and, and hopefully get people excited about it, uh, like we're trying to do here with Exosphere. Please let me know, Elm Town at jaredmsmith. com, I'll put a link in the show notes. Um, but yeah, that's, that's really all I have, I guess it's a, a cheat, but, um. But if, if folks are aware of that, if somebody pops into your mind, please let me know.

[01:03:35] And thanks to all the folks listening out there. Uh, please rate and share the podcast if you're enjoying it. And thanks Chris, for coming to

[01:03:43] Elm Elm Town.

[01:03:44] Chris: Thank you Jared, I appreciate you letting me talk for an hour, uh, I had a great time.