TD Cafe #010 - Steve Wirt & John Jameson

September 11, 2025

Join John and Steve as they delve into the intricacies and challenges of maintaining Drupal modules, comparing experiences with WordPress, and sharing their journey in making web development more accessible. They discuss their personal stories, the learning curve in module development, balancing user experience, and the importance of contributing back to the community. Learn about their current projects, thoughts on AI's role in accessibility, and get inspired by their dedication to improving the web for all users.

Listen:

direct Link

Topics

  • Drupal Beginnings: Personal Stories
  • Journey into Module Development
  • Accessibility in Web Development
  • Navigating the Learning Curve in Development
  • The Importance of Community and Collaboration
  • Challenges in Module Maintenance
  • Comparing Drupal and WordPress
  • Innovative Approaches to Development
  • Pet Peeves and Frustrations
  • Future Directions and AI Integration
  • The Story Behind the Shovel Avatar

Steve Wirt

Being a Developer and Tech Lead at CivicActions has exposed him to the experience of working on some of the largest government websites in the United States. A passion for opensourcing as much as possible has lead him to develop a growing number of modules, with two addressing accessibility Alt Text Validation & Node Link Report)

John Jameson

As the Digital Accessibility Developer at Princeton University, John has come to believe that the biggest barrier to accessible content is the idea that training can compensate for unintuitive authoring interfaces. So far his work to fix the authoring interfaces, to make workflows intuitive and accessible by default, has resulted in the Editoria11y Accessibility Checker and Link Purpose Icons JS libraries and Drupal modules.

Transcript

John: as much as the frustrations are with the learning curve and Drupal, because I then I also maintain the same modules for WordPress. Um. Ooh, I didn't realize that. Boy does that make me love Drupal. It's like the, the like the, like the WordPress. It's like, there seems, there's kind of less of a learning curve, but there's less of a learning curve 'cause there's less there to use.

Like, you very quickly reach the end of the runway and you're like, I guess I'll just write my own sequel now.

 

Steve: Hey, John. Afternoon, afternoon. Fancy meeting you here.

John: Yes, exactly.

Steve: Cheers. You drinking anything fun? Cheers.

John: I have, I have a, a Irish breakfast tea. It's an Assam tea that's very black, almost coffee yourself.

Steve: Nice. Uh, lime juice and ginger. Perfect. And water, of course

John: works for, is it Florida Grand?

Steve: Uh, is it Florida grown?

John: Is is it Florida that you're, uh, uh, having your lime juice in? I mean,

Steve: yes. Yep. You're at home in Florida. I dunno, I find that lime juice kinda refreshing. Makes sense. Pick, pick the heat outta the day.

Exactly.

Well, so, uh, I don't know. I've, I've, you and I have, have met before at uh, I think a couple of GovCon or maybe a GovCon in a, in a camp somewhere along the line. And, and, uh, I dunno, one of the things when I, when I talk with people that I like to hear are like, how did you get started in Drupal? Like, what's your Drupal story?

Because I've found that like, everybody has a completely different story. Like no two Drupal stories are alike.

John: Absolutely. How'd

Steve: you get started?

John: Fair enough. Yeah, I was, um, I was enticed by views, I'm gonna say. So I came in, uh, as a, as a photographer. Uh, originally I was in a, a university's public relations department.

Uh, and I came as a photographer, but I was the kid was the transition from print to web. So if you're the kid that knows how computers work very quickly, you're also doing layout on the web and very quickly you're taking care of the website and eventually you change your title to developer. So I'm now taking care of, for instance, website, but I'm, I'm very much just learning the ropes of web development.

Uh, and I don't know the slightest thing about SQL joins, things like that. And I get to go to DrupalCon in Chicago with a bunch of our developers who are thinking about moving the university to Drupal. And there I'm watching this presentation of content types and views and it's just, it's just blowing my mind that, that there's this thing that has a, a site builder interface for.

Complex database operations. Uh, and so I come home and moved to that and, and all of a sudden I'm, I'm building complicated web applications and things like that. And so, you know, 10, 15 years later, I know a lot more than I did then, but views, it was views that lured me in the beginning. So what about yourself?

Yeah,

Steve: very cool. Uh, well, they, yeah, I actually got my start, uh, at a university as well. I was working for Syracuse University, uh, doing some web website development, uh, sort of non non programming based website development, uh, for the school of Education at Syracuse University. And they had a, uh, a group of like students that were doing like work study that would build stuff that, that professors needed or that groups within the School of Education needed.

Uh, I think they were called Living School Book. It was a, it was a pretty cool program. Uh, and they had been doing a lot of like custom code for the group that I was working with. And, uh, but you know, they had built some pretty complicated things and I was like, just learning PhD p uh, at the time, like I, you know, it wasn't, wasn't my job to actually do the programming, but I started getting into it, uh, because I had taken other programming courses in college and things like that.

Uh, but they, they were looking at getting shut down, like their, some of their funding was running out or whatever. Um, and one of the, one of the students there said, you know, there's this thing you might wanna think about. It's called Drupal. And it was Drupal four at that point. Um, so this was like back, I think 2002.

Um, and I looked at it, I thought, well, that's kind of neat, but it was kind of clunky and plain and like, I didn't, I didn't see enough of the potential in it at the time. Um, but, and he said, well, you know, I said, he said There's a new version coming out. Five's gonna be coming out at some point, and, you know, then it'll be, then it'll be really good.

So like, I kinda moved away from it for. I dunno, half a year, nine months, something like that. And then when five came out, uh, I took a look at it, I was like, oh, you know, this has actually matured quite a bit and uh, looks like it would meet some of our needs. So I started developing on that at the time.

And uh, so that was kind of, kind of my start to it. And, and by development I meant like site building, not not actually doing any custom coding for it. Um, and when it came time to like custom code, 'cause I couldn't figure stuff out, you know, I was hacking Drupal and doing things in places and, and ways that I shouldn't be doing at the time.

But, uh, thankfully in the many years that have come since I've changed my ways.

John: Right? Yep. Patching core is not something you want to be doing. Yeah. So, uh, but you do patch core. I see, I see. Your, your, you and the commit log all over the place and, and, and whole thicket of modules. And so, so, so, so take me from, take me from, from, from, from playing with Drupal five to now having this, this stable of, of modules you maintain.

Like what, what, what's this journey been?

Steve: Uh, yeah, it's been kind of a long one. Uh, mainly I think when I started donating modules, contributing modules when, uh, when I wanted to use them on other sites. So I, I work, we, uh, worked at civic actions now and have worked there for, uh, over a dozen years. And we have a lot of government, like mainly in the government space, and there were lots of times I would build something for one agency, and then when I would go to it, get moved to a different government agency, I'd be like,

John: oh,

Steve: we need that exact same thing.

But now I no longer have access. To the private code base of the first agency, 'cause security is an important thing. So lots of 'em locked down their, their, uh, repositories. So like, it, it's like, I wrote this, I know I've built this before. I don't really wanna have to build it again. Um, and so I started at that point kind of like, all right, if I have to build it again, I'm never gonna have to build it a third time if I contribute it.

Um, and thankfully a lot of the, a lot of the agencies are very supportive of, uh, contributing back to Drupal. Uh, you know, they've realized that they've, they've built on Drupal and gained a lot of advantage by using Drupal. So most of the agencies that I've, I've wor, uh, that civic actions has partnered with, um, you know, have been very, uh, very forthcoming and very supportive of us giving back.

So, you know, I would, I would say, all right, I'm gonna build this thing that I've already built it for this other agency, but I can't get to, I'm gonna build it again, but this time I'm gonna build it as contribute. Uh, and so as I've gone along, I've used that going forward and that, you know, allows me to one, get the benefit of stuff that I've built in the past and also not have to remember how I built it the first time.

'cause I'm getting older and as the white hair sits in, I sits in, I, I don't remember stuff as well, but it's like, I think I remember building this, but where is it? Uh, now I don't have to, I can just go to my module list and, and, uh, see what I've supported.

John: Yeah, there's, there's nothing worse than, um, running Get Blame and finding your own name.

Oh, yeah. Yeah. I built this broken thing. No memory of this. That is a

Steve: very true statement.

John: Fair enough.

Steve: How about you? You've got a couple of accessibility modules under your belt now.

John: Yeah. Yeah. How'd you get there? Um,

mostly, uh, having a big, dumb idea, I would say. Uh, for mine, uh, the. Well, the smaller one link purpose, we, it, it puts a little icons on links. So we were using the external links module. Uh, I had sort of a growing list of feature requests and we had a pile of patches and um, at some point it sort of became clear we were asking the module developers to do more than, you know, it's not their job to work for us.

So we, we, I built our own thing, but that's just, that's like a little JavaScript library, the big one's editorially. Um, and that was, I think the, sort of the definition of a big dumb idea I have. Uh, uh, I was trying to accomplish a goal basically, like we had a. We have 2000 some odd websites at Princeton.

I'm supposed to be keeping track of, uh, for accessibility, quality assurance. Uh, and I can review about 80 a year. So the math on that is just never gonna work if you look at the turnover rate, you know, uh, losing ground as fast as I move. Uh, so I needed something I could automate and, and go out there and, and I realized that most of the things I was doing was, uh, you know, as you say, writing the same module over and over again.

I was writing the same email over and over again. Like, this thing needs all text, this things need that. Um, and most of the things I was flagging, I was staring at it and saying, I could write JavaScript, it could write this email for me. Um, so sort of that mindset of I have this, this, this idea, uh, and then you do sort of the build versus buy, and there was no buy.

We went looking for something out there. Um. And I had identified a need and there, there wasn't anything met it. Like we wanted something really simple, user friendly, uh, non-technical, and there's tons of vendors in the accessibility space. Uh, but I went from vendor to vendor to vendor to vendor, and they, and they were all building things for more technical people for site overviews, site things like that.

There wasn't anything that was like really simple and user-friendly that was just sort of validating for authors in a way that was mildly annoying, but not too annoying. Uh, except for one little project up at Toronto Metropolitan University where Adam Chadrick had written the Sally Library and he had the same idea I had.

Uh, and so I, I talked to him for a while, I forked that, built it out and, and, and had this little. Checker that that was fast enough to run on load on every page eventually, uh, without making the whole page grind to a halt. Uh, and I wrapped a Drupal around, drill around it, and we open sourced it. And then, so here I am.

I'm a module maintainer now, and it was just sort of one of these, uh, uh, I had a very large idea and talked to my boss and, and, uh, she was on board. So. That's awesome. Um, it is awesome. And it's just one of these interesting things where it's, it's, I'm, my job changed then. 'cause I, I'm, rather than writing emails now, I'm, I'm managing scripts essentially.

Uh, and so every so often I'm sort of scratching my head. I'm like, am I doing what they hired me to do? But they hired me to accomplish task and I'm accomplishing the task better now than I was before.

Steve: But I'm doing it in a way that's more fun. So, and there's, there's thousands of you doing the on the job training thing 'cause Right.

The feedback it gives is so great that it just Exactly. It's like educating people as they are using it. So it's like Exactly. You've also multiplied yourself a thousand times just to be. Sitting on all the editor's shoulders going, Hey, I'll do that.

John: And, and they're so much more receptive when they come to me.

If I reach out to them and say, wow, your site has problems. You know, you have to word that very carefully, but when they email you and be like, this thing keeps popping up in the corner telling me I have problems. It's really annoying me. Can you explain how to fix it? I'm like, sure. I won't mention, that's also me.

You know? So, uh, yeah. So I think that's, that was just sort of part of it is sometimes you just are able to do something, uh, that no one else is working on.

Steve: Um, your module, I mean, that module is amazing in terms of all it does and how easy it is to use. And I think one of the things that like blew me away, I, I saw one of your presentations at.

At Drupal GovCon and you went into like the, why you built it the way you did. Mm-hmm. The, you know, explaining like how the interactions were, uh, and how to make them better. Mm-hmm. And it, like, it really hit me that you, you recognized your audience in a way that most Drupal developers don't. Uh, you had a really great understanding of your audience and sort of wove that into how the module behaved, uh, which was really impressive.

And it, like Drupal, we, like the Drupal Association has the idea of ripple makers, the idea that, you know, we create waves and we don't know who those waves are gonna impact.

John: Mm-hmm.

Steve: But it was kind of funny because I came out of that presentation thinking, you know, this is really amazing. You've done like UX design on a Drupal module, uh, that, you know, could have just been very developer centric and, and things like that.

And kind of like, you know, looking like a, uh, you know, Craigslist kind of design, but like. Yours worked out really nicely. And I, I took that. So the ripple that you created that you're probably not aware of is I took that back to heart on the next several modules that I built, and I started getting people on civic actions to design team to get involved with refining the module, making it better, making it more user friendly.

Um, even from like the admin screen, right? Yeah. Where only two people might ever see it on a Drupal site, making that actually better and having that go through UX design. Uh, and then the ripple effect from that is that we just had a bunch of, uh, Drupal design, well UX people not Drupal specific, go through this Drupal site builder course and get certified site builders as a result of like getting, pulling them into modules and things like that.

So it's, uh, you, uh, that's fantastic. You create a credit ripple. There's,

John: that's awesome. That's awesome. Thank you for that. And that's fantastic. I, I, I, 'cause most of it's, it's like you have those sort of the imposter syndrome of self-taught developers. But another way is it's like if that means you're cross training from a different area of expertise, you're bringing something, uh, and like I, I would not wanna be without like the senior developer on our team who is a wizard at PHP, uh, but you know, he's gonna come to me if he needs to do CSS.

Uh, and just yeah, get, spending that time with the users, um, is huge. We had, I had a coworker a few years back and a lot of that came from him, uh, because to me it was sort of mystical, the thing, UX and designers, they would sort of go into their room and emerge a few weeks later and be like, this is a design, and be like, I see that.

Where'd that come from? Um, and so, you know, he made me take some, some UX classes and it just sort of the idea of like, we're gonna just define what we want someone to accomplish with our thing. Um. And the idea that there's sort of a checklist of, of, of how to sort of ask, take a real person and ask them to do it, and not give them enough information to do it and just watch them struggle.

Uh, and that 10 or 15 minutes of that can make huge differences to your, to your module or whatever. Um, but just taking the initiative to go out there and find someone that doesn't know how to use your thing and ask them to use your thing and to not tell them how to use the thing, uh, yeah. That, that made a huge difference in, in the rest of my career.

Um, so it's cool to hear that that's, that that's spreading, um, very much. But it makes, it makes a huge difference. There's some things out there that are incredibly powerful, um, but they're not user friendly and so they just don't, they don't, they don't create good content. Essentially. If you, if you, if you put too much cognitive load on the content author, they're gonna be so distracted by the interface that they're, they're not gonna write as well, so,

Steve: right.

Yeah. Were you always in, like, where did the passion for accessibility come from? Was that because of the job you had or did your passion lead you to that job?

John: I'm gonna say the job it, it, it is partly, I always sort of feel like you should be proud of your work. I think kind of you should care about the quality of your work.

And so when I was in the public relations office, we would review departmental websites before launch and make sure that they were sort of up to university standards. And there was a checklist for that. And over time that started to include accessibility things. And so I was starting to check for things and test for things.

Um, but it kind of came out of that just sort of, um, I guess not thinking of it as something special. It's like you should. Care if there are typos on your page, and you should care if there's broken links and you should care if you have really great photography and you should care that you have good descriptive alt texts for the photography.

Like, to me, this was just all part of good. Um, so it's one of these things where it's, it's, it's interesting because I'm very much, accessibility is all over my title and it's what I do and it's what I test and it's what I remediate. Um, but in my mind it's just sort of, it's just doing good work. Uh, and that's kind of, that's also where I try to drive it towards.

That's sort of part of why I do the modules I do, is, is I kind of think we don't, um, you don't find people who are passionate about spelling, let's say. Uh, and, and then like when someone makes spelling mistakes, they don't show up with their favorite dictionary and be like, let's have dictionary class.

And I feel like accessibility is sort of still in that place where it's new and it's difficult, but it's kind of new and difficult because the tools make it difficult and, and. I feel like success for accessibility is going to look like people talking about accessibility less. Um, like the more you know, if you have spell check in place, we stop talking about spelling.

And if you have a broken link checker, you stop worrying as much about broken links. Like it just becomes part of your workflow that like, oh, I haven't filled out the alt text and I should do it in this way that I've learned. Uh, and I need good heading structure, but I don't have to know that I'm making good heading structure because the tool only gives me good options.

Like that kind of thing where the, a workflow that supports and guides people into accessibility means they don't necessarily need to know the word accessibility to be making accessible content. So that's my weird passion. My weird passion is to work myself out of a job. Uh, but not until after I retire.

So what about yourself? You're on your way, I think. Exactly. You have this, uh, alt text, uh, validator. You just published this module that crawls, I think crawls through all the nodes in a website, collects images and alts. And tell me about this. Where'd this come from? What's this? Yeah,

Steve: so well, so this came from, uh, you know, government trying to make their sites better by saying, Hey, you know, we've got, in some cases thousands and thousands of images in our content that may not have alt texts, may have really bad alt texts, uh, things like that.

And, uh, you know, again, wanting to only build it one time rather than build it a bunch of different ways, a bunch of different times, um, came up with the idea of a, of a module that would, um, one, crawl the entire site, find every image within content. So it wouldn't be looking for decorative stuff that's not.

In the actual, like nodes or uh, terms or anything like that. So it'll actually crawl all the, all the content, find images wherever they live, uh, and surface their alt text. Right. Just in a report, just so you could start auditing, uh, but then apply the idea of like, rules. Well, rules are, you know, what rules should under, should be applied to alt text.

And there's, you know, like very easy ones to say like, Hey, this alt text shouldn't contain the name, the file name mm-hmm. Of the image. 'cause that's really annoying to listen to. Um, and so, all right, we gotta have a rule that checks for that. Mm-hmm. Um, you know, uh, if you've got a site where editors are, are fond of saying photo of mm-hmm.

And typing out what the photo is actually of, that also gets annoying to listen to. So, you know, do we want rules that could warn or prevent that? And so the notion that for the module is, you know, you can have rules that give warnings just to give guidance, but we'll still let you save the node. Or, you know, whatever the entity is that you're trying to save or rules that will actually prevent.

So like you might want, you know, you, there's never a good case for when they alt ought to be the file name of the file. So we can, you know, flat out prevent that kind of thing. But the image of, there might be times when you actually wanna describe an image as an image of mm-hmm. Not too many. Um, so we can do those as warnings.

And, uh, just started building the module that way, uh, with a, with a handful of other folks. Uh, and yeah, we just released it maybe a month ago now. Mm-hmm. And, uh, it's, uh, you know, fun. I, I get into the accessibility, like my history on the accessibility is what, back when I worked for Syracuse University, the project that I was on was the New York task, uh, New York State Task Force for quality inclusive schools.

Hmm. So all of the focus of that, and it was, it was kind of a really good, like almost Drupal model, uh, of. It was all the colleges in New York state, all the education colleges in New York State working together, uh, to improve their, uh, their teaching of inclusion, um, uh, for, you know, anybody that's differently abled, uh, to, you know, learn.

And, and it was a really cool, uh, approach 'cause there's very few things that you can get colleges to work together on. Uh, and it was really cool to see that play out. Like literally, you know, there were, I think 56 colleges, if I remember right, in New York state that were all working together towards this common goal.

Uh, and so that kind of like raised my awareness of just, you know, inclusion and, uh, the need for things, whether it's websites or anything else to be accessible. Um, but then more recently I've been a diabetic for over 50 years and I, uh, my eyes are, are taking the brunt of that now. Uh, I get to the point sometimes some days, uh.

My eyes literally will not function. Uh, I get bleeding and like the blood just occludes any vision. So I'll go for a week or two without being able to see anything until we get the bleeding stopped. Ah. And so there are times when I need to rely on a screen reader and uh, it's those times when I'm like, uh, and keyboard navigation and, and there's those times, uh, remind me of how like scary it is to try to interpret a website from that.

Yeah. Um, and one of the way, you know, one of the ways that that like stands out to me is yes, the reading of images is, uh, sometimes horrifying. Like, especially if it's got a file name that is also like, uh, sort of randomly generated numbers and Right. And things that are uh, you know, just make it completely un unlistenable.

Um, so that, that's kind of like. I'm always in that mindset of what is this page gonna look like in two more years? What's this gonna look like in five years? And like, and what is it gonna look like to me if I have, so it's selfish. I, you know, let's care about everybody else. I want the site to make sense to me when I have to use it.

That's,

John: that's, that's what I say in my classes is like, if you're not disabled now, like, unless you plan to die soon, like, we're all gonna live long enough to have disabilities, um, right. Yeah. Take care of your future self. So, yeah. Wow. Okay. So that's a transition for your job for sure. Uh, learning that, what's, what's that like as a developer?

Learning, learning to have weeks where you're not seeing,

Steve: um, yeah, it's, it's kind of interesting. I mean, there's some, some interesting tools for reading code and writing code. I, you know, I think AI probably offers in a more interesting future there because of it. Um, but yeah, that, that's challenging as well.

Uh. You know, it's, it's, it makes me, you know, it's kind of funny 'cause I always thought, well I can, you know, I can do this job from anywhere 'cause I work remotely and I can do it in, you know, any condition. I could be in a wheelchair and I can still work my, you know, I can still write code. Um, and then, you know, life's funny.

It's like, yeah, you're blind. Can you still write code? And like that, that takes a while to get used to. And I like, just about the time I start getting comfortable with it, my eyes start clearing up thankfully. And like, I don't have to spend too long, uh, you know, in that state. But it does make me like forever aware.

Uh, it's like the

John: terrible mercy to like be forced to learn, but to get breaks in the learning.

Steve: Uh, oh, yeah. Yeah. Yeah. It, it's ironic and it, you know, it's the kind of thing where like, yes, I've, you know, I've finally gotten used to all the Zoom controls on a, on, you know, a. Whatever computer I'm using at the time, getting used to being able to zoom in so I can see text that's, you know, this big instead of Right.

And of tiny and uh, you know, you just sort of start getting all the muscle memory for that. Uh, and then things clear up and start using it less and less and less. And, uh, yeah. Fascinating. Kinda kind of an, an interesting process to go through.

John: Uh, yeah, they all are. They all are. Wow. Yeah, we get that. Um, here, there's, there's chronic migraines that run in the family, so I have a family member that that's like, you know, there are days she can see, but she can't look at a screen.

And so it's, it's, it's the same sort of challenge of, of like how do you, how do you continue on with your day? Um, and if every day's the same, you can adapt, but when every day's different, it, it leaves you much more, um, flexible, difficult place. Well, and that's something I, I, I run into in the, if the worlds of accessible development as you have these, um.

Technical standards people are making for, uh, JavaScript widgets, uh, and their, their screen reader interaction patterns. And they're quite complex and they're based on the user being an expert user of their screen reader. And, uh, and it's just interesting having gone to a couple presentations from people, um, like you that are like new at this.

Uh, and it's, they're just sort of like, yeah, I don't, you can't, you can't assume that people, um, know all about this. So I've sort of circled in my career from like originally trying to implement all of these like aria patterns and things like that to, um, trying to push back at things that are much harder than like toggle button, you know, um, whatever, but whatever it looks like, whatever it looks like, you know, simplifying the, uh, screen reader and keyboard interface as much as possible.

Um, so, wow.

Yeah. Well, on that note, it's a heavy note.

Steve: Um, sorry, didn't mean to bring things down.

John: No, you just, it is just, we have the prepared, you know, I, I have a list of questions I'm wanna ask you, and I'm like, what? Follow that with, uh, you know, uh, something particularly light. So what about general tips to be, um, for people that are thinking about doing what we're doing and starting a module?

Like do you have things you learned along the way that you'd give as advice to someone that might be thinking about doing this

Steve: thing for the first time? That's a really good question. Um, yeah, I think, uh, the, you know, like my advice is to just start building it. Um, there's a lot of, and every time I talk to people about modules and, and things they wanna build or things they built, but they haven't contributed yet.

Mm-hmm. Um, you know, there's this idea of, well, I'm building this. I'd like to contribute it. But then it never gets contributed, right? Like they've, they've built the module locally, they're using it on a site. Mm-hmm. But it never gets contributed back because that takes an extra effort to like move it, uh, into the contrib space and make it available there.

It might take some rewiring rewriting of some code, uh, depending on, you know, like how much forethought was put into developing it locally. Um, and I've gotten to really where I just start developing it on, on drupal.org from scratch, like populating the issue queue the features that are needed for an MVP, um, you know, civic actions.

We, we refer to it as conferred first. Uh, because we recognize that like in, in human nature, right? You build something, uh, well, you know, I'll give it back later and then mm-hmm. You move on to something else, uh, happens while that happens in, in client work too, right? The client might be interested, oh yeah, it's great that we're building this.

We should give that back. Maybe, uh, you know, if you raise it to 'em, they might say, yeah, we should give that back. But then after it's built, they don't, they aren't typically comfortable with paying money to then have it contributed back. Mm-hmm. Right. Because it's an extra, it's like, well, we are already getting the benefit of this.

Why pay extra now to like, do the work of moving it back and moving it around, whatever. And it's just harder to sell them on that idea. And some, you can, you know, you can convince them that there's, there's benefits to doing it for like long-term maintenance, uh, you know, automatic updates, uh, testing pipelines, things on, on the drupal.org side.

Uh, you know, you can still make an argument for doing it, but it's a much smaller argument than you, you know, if you said, I'm gonna build this and it's automatically as part of my building, this going to be public. Uh, and so I've taken that approach with a lot of modules. Um, you know, so the tip there is you kind of, you just have to have a well-defined MVP.

Then if there are other things that you'd like the module to do later, or something that pops up into your head that's not really part of that MVP, but you think it might be a nice add-on, you create yourself a feature request for sort of future development that other people might pick up or you might pick up when you come back to it.

Mm-hmm. Uh, or whatever. Uh, but I've found that it just works a lot for, for the way I work. It works a lot more smoothly for me to just build, contribute first, build it in, in the contributed space from the beginning.

John: Mm-hmm.

Steve: Um, and I, you know, I think there's a, other than like the, the time it takes to give it back, there's a lot of benefit to it too because everything, every little piece that you build is tied to an issue.

And so it has a, it has that history of being tied to it, you know, a, a a, a pull request of being tied to an issue that's created where decisions might have been made. And there's all that, that, that's present. Where if you built it locally and you build it tool, it's a, you know, a fully formed boy, and then you give Pinocchio back on, on drupal.org, it doesn't have that history.

It's, you know, it starts out with one commit, the initial commit that has everything, and it starts as kind of a blank slate. Where, where none of there, there's no real documentation just from like the issue queue of where did this come from? Why do we have this now? Um, you know, and, and any notes that might have led to building that.

Um, they might be in a, in a, some kind of, you know, confluence or Jira kind of thing back specific to that project, right? To the agency that you're building it for or whatever, but it's not public. Um, so I think, I think, you know, there's just a lot of value to contribute first. Um, I like in, in that approach, but I also realize not everybody's comfortable with that.

You know,

John: I love that. I love, I I, I tend to come in kind of halfway, um, where I. Uh, it, it sort of lives a sandbox for a long time. Like, I, I will build it on drupal.org, but I'm very afraid to call it released until we've run it as like a private alpha or something for a few months and that kind of thing.

But it's like, it is there. Anybody could use it. I'm just sort of, I'm afraid to tag 1.0 until I've, uh, played with it for a long time. Right. But yeah, the just build it is tough at the beginning. Um, I gotta say, I mean, I don't, I don't know what the, the getting into the very beginning was like for you, but I know for me it was very challenging to learn how to build a module.

Um, just the, just the documentation, the finding. If you don't come from an object-oriented world, I mean, I, I would open up these Drupal functions and I had classes and things, and I'd just be like, I don't even know what's going on in here. Um. So that was, that was a huge learning curve. I talk to people at conferences and there's a lot of people on, on, you know, still to go up that curve, um, to find it very intimidating.

Steve: Um, I think that's true. I think that's, and I think it's sort of gotten worse over the years just because things have become more complicated with the object and there's, it's harder to know, I think for beginners to know what questions to ask. It's like

John: mm-hmm.

Steve: You know, like every module needs permissions, every module needs mm-hmm.

You know, an info file, just all the things. It needs so many parts to, uh, move. And now that we're getting rid of, we're not getting rid of, but like swapping out hooks for, you know, that used to all live in one, in the mod dot module folder or in the dot module, uh, PHP file. Right now they're living elsewhere and in other places.

And I, yeah, I think trying to find the right term to even like ask Google right, is sometimes a challenge.

John: When I was starting out, I asked our, our senior developer and pulled him aside. I'm like, what? How do I begin essentially? 'cause I just assumed that there was something out there, some sort of like magical resource that he had, or like maybe his IDE was set up to answer these questions.

And he, he shrugged and he said, go find modules that do something similar and look at what they did. And I just stared at him for the longest time, just like expecting there to be more. And he was like, Nope, that's what you do. Um, uh, and that's not like Drupal specific, like that was just, but it was just sort of, uh.

It was, it was just very sort of mind blowing advice for me that like, there is no one behind the curtain. Um, and, and, and even the, the, the developers I look at as the wizards are just leaning over each other's shoulders and, and, and seeing how someone else pulled that off and then copying and pasting and then, then, you know, as you say, like they know what to Google now because now they know, oh, there is a hook that does this thing that I wanted.

Um, I was reading your source code this morning for your, um, your alt validator. One of the biggest challenges I have with editorially is just getting the like, name and canonical URL of, of an, of a thing. Like if it's a node, it's easy, but when you start mixing up nodes and views and taxonomies and custom entities, I, every time I write something, after a while, it, it breaks.

Um, and so I'm always looking at people that have found other ways to just find the, these things and looks simpler and, uh, and yours looks very simple and I'm looking at it and being like, is that because it. Brilliant on the right way to do it, or is he just not run into the problems I've hit yet? Maybe that, um, so, um, yeah, getting started is curve.

I will say the, the, one of the great things about giving back is I feel like I, I end up delivering a better thing to my team. Um, 'cause I'm only gonna find so many bugs and I'm only gonna have so many ideas. And when I, when I push something out into the contrib space, um, I had a feature request recently of someone, uh, and they said, you know, we, we did some UX testing on your module and people were confused by this and we think it would better if you switched these things.

And I'm just like. I just got free UX testing. This is amazing. You know, and like it was clearly an improvement. Um, after I, I I, I switched as they ass, they recommended. I haven't put that out yet, but it's just like, like that's the kind of thing where I'm like, there, I, I do spend time supporting people that I wouldn't otherwise spend for sure.

But that's, that's the, the payback I get in return is I have more, more people testing it, um, more people giving back. So, and,

Steve: and that's a hard thing to describe, like when you're trying to, to Yeah. Pitch to a, an agency that, you know, we should give this back. It's hard to describe that. We'll build it better, right.

Because it's, you don't, you don't not really wanna say that, uh, you know, I'm gonna build it lesser quality, right. If I'm not right. But just by the fact that it doesn't have to, it doesn't have to work in all the various edge, edge cases.

John: Mm-hmm.

Steve: Makes it lesser quality. Right. Because it's then it's, it's very niche.

And if somebody changes your edge case a little bit. Right. It doesn't work. Uh, and like you say that, you know, the drupal.org community, Drupal community, you know, is the largest group of edge tester, edge case finders Absolutely. Ever.

John: But we have this custom entity and it doesn't have a name. It's like, oh, great.

Um, yeah, yeah. Say though, as much as the frustrations are with the learning curve and Drupal, because I, I, I then I also maintain the same modules for WordPress. Um. Ooh, I didn't realize that. Boy does that make me love Drupal. It's like the, the like the, like the WordPress. It's like, there seems, there's kind of less of a learning curve, but there's less of a learning curve 'cause there's less there to use.

Like, you very quickly reach the end of the runway and you're like, I guess I'll just write my own sequel now. Um, and uh, and, and there's not as nearly as much abstraction. I remember the sort of the form and render elements world in Drupal, um, where things are really abstracted out and you're just like, Hey, Drupal, make me a summary in details component.

But you're just looking at like a, like A-A-A-P-H-P object where you're just like, oh, uh, you know, this is the attributes and this is the this and this, this, and there's no like HTML there to see or grasp. Um, like that was very frustrating to get started with. But once I got the hang of it, uh, it was so much faster to build out a complex interface where I'm just reusing the same template over and over again.

And, and then, you know, Drupal handles the configuration for me and, and then I go back to the WordPress world and I'm like, oh, I'm writing HTML again.

Steve: Okay. That's really interesting. That's, I I didn't realize you were maintaining in two places. Yeah, because I've never had to look for it in WordPress.

John: Uh, and different challenges.

I, I, because word, uh, WordPress is, is Gutenberg and tiny MCE and Drupal of CK editor with a little bit of Gutenberg.

Steve: Um, that sounds like, like the next topic for your next talk, like that

John: comparing contrast. What do we dislike about everything? Uh,

Steve: I don't know. Like I think there's a bunch of people that would bash either way, but like your insight into what it's like to maintain something or two different platforms is I think unique.

It gives you unique,

John: a bigger appreciation for what each one does better. 'cause they, they both have their strengths and they both have their weaknesses. And so you, you, you, you grumbled with more knowledge and you, uh, enjoy the more knowledge.

Steve: I think that'd be a cool talk. I'd go to it. Fair enough. Uhhuh, because enough, that's, that's pretty fa you know, 'cause there aren't too many people that I run across that are like, in both worlds.

John: Right.

Steve: Well,

John: it's also the reason I built my module so strangely, um, if you look at editorially, it's not connected to seek editor all like, it's, it's giving you tips while you are live editing and c editor. But I'm not using any of CK editor's, um, built in functionality. API, like, it's not a CK editor plugin.

Um, I'm just using mutation observers. I'm observing changes to the dom on the page and reacting to it. Uh, and, and in some ways that was fantastically more difficult, um, because I, I'm in some ways like it's, it's clues and hacks all the way down. But the reason for that difficulty is once I was finally done, I had a, a editor agnostic checker that I can just.

Um, um, I was, I was asked, uh, last week by some, a company to re-implement it for the WordPress classic editor, um, tiny mce four, and it's, yeah, it took me a week, but it only took a week, uh, to adapt this to run in a completely different environment with a different checker and, and or with a different, um, editor.

So, yeah, it's one of these things where it's like, there's always sort of that imposter syndrome when you're doing something different from what the directions say you should do. Uh, and you're like, am I doing it wrong? Yeah. But sometimes it means, you know, I'm certainly taking the hard way in some ways, but then I have this tool that I can, I can drop, I gotta running in Squarespace, like I can just, I can drop this in anywhere now and, and usually just change a whole bunch of parameters and it just works.

That's huge. Um, but, uh, but at the same time, if anyone reads my code, they're gonna be like, what is this person doing? Why are they doing it this way?

Steve: I don't, now I wanna go read your code, because that's one of my goals for the alt text validation module. Right now, it only does it. On save or on preview.

Right. Uh, I wanted to actually do it in, you know, on the client side in real time kind of thing as they're editing it.

John: Yeah. Well we should. So

Steve: now I have to look at your code to see how you pull that off. 'cause I haven't, I haven't figured that out yet.

John: Oh yeah. Oh yeah. Lot of mutation observers. So,

Steve: um, developer you, you talked to early on who said, go look, go find code that does something similar and look for it.

Exactly. He's right. Exactly. I'm gonna do just that.

John: Exactly. And it's always changing. I have, um, uh, Adam, Adam Chadwick, who wrote Sally, he went back and then he's rewritten all of his to be much more modern JavaScript, um, with all the, the requires and all of the isolated files and everything. And, and, and so now I'm looking over his shoulder and being like, well, I wanna rewrite mine to work like yours now again.

Um, and uh, so it, it, it, it goes back and forth 'cause he'll, uh, I, I tend to, I tend to run out in front and do these. Wild things in, in JavaScript, and, and then he will pull that back into his and then clean it up into nice proper JavaScript. And then I'll bring that back to mine and, and, uh, you know, better together.

Steve: So that's very cool. That's a good development model, peer programming, but only through open source observing or something. Pure programming

John: through Slack. It's, um, exactly. Um, what do you have, do you have, do you have, do you have, is is it all roses or do you have, do you have frustrating pet peeve kind of moments in there

Steve: or, uh, uh, yeah, I think I, I have like two, I've got my own pet peeve of when I am, when I've built something for a, a site.

Then now I'm on a project that doesn't use that anymore.

John: Mm-hmm. But I

Steve: still have to support that, you know, I still wanna support that module that I built several years ago, but I don't, like, my head's not in the game. Mm-hmm. Um, and I don't have a, you know, a, a usable site built that will allow me to like, play with that, you know, whatever it happens to be.

Uh, certain ones are easy 'cause you just enable 'em and turn 'em on and like, you can check stuff out, but to try to reproduce edge cases or whatever. Um, so like, that's my pet peeve is that I lose sight of some of the things that I've built because I'm not, I don't, I'm not actively using whatever it is for a given project that I'm on.

John: Mm-hmm.

Steve: Um, whenever possible I try to use them on the project that I'm on. 'cause one, that was why I built them. But it helps me keep my head more in the game about like, what does that thing do? Uh, so there's that, you know, there's that, that pet peeve, which is a pet peeve of myself, right? Mm-hmm. Feel, yeah.

Not really imposter syndrome, but I'm down on myself for, oh, I've grown away from this module and I, I really need to. Show it some love again. Um, and I, you know, I think that, like, I like the Drupal community a lot in terms of, uh, you know, there have been so many times where I have created an issue just to get it outta my head.

'cause like, if I don't create the issue and write it down, it'll keep waking me up in the middle of the night. It, you know, don't forget to write that issue down. Don't. So, like, I've gotten to the point where I will at night, I'll kind of do a brain dump of like, oh, these are the issues that I want to get outta my head.

I don't have to solve them, I just have to write them down.

John: Yeah.

Steve: And, uh, so I'll write them down and then there's like more than a dozen times I, you know, it takes, uh, more than two hands to count, uh, the number of times where by morning somebody's had a PR in place already on that from, you know, far parts of the world, uh, offering to contribute and like that.

That's awesome. That's like a gift, you know, it's like, this is great. Um, so I think that, you know, that part of the community is great. Um, I think the, you know, the edge, the edge finding network that finds, you know, just a problem here or there. 'cause it doesn't fit their exact, you know, the use case or, or the exact situation is awesome.

Uh, I think, uh, what I've got now is probably like a growing pet peeve of people that are still submitting patches instead of merger requests. Like, one of the things that I did, uh, James Sandsbury did a talk, I think it was at, uh, Florida Drupal Camp. No, it might have been GovCon, I can't remember now. Um, where like, he showed how to get tugboat previews built through your module.

Um, so anytime there's a PR created against your module, it'll spin up a tugboat preview environment where you can go play with that, that pr, uh, merge request. Mm-hmm. And like, it's huge. It saved me so much time for like testing stuff out. Um, and by the look of your face, it doesn't look like your module has that.

No, we, we have

John: that at, at, at work, at my day job. We have all that set up, but I didn't know I could set that up against the Drupal. Uh, I'll

Steve: put in a PR pull request for you. Um, it's, it's amazing. Like it saved me so much time and so I've added it to like, all the modules that I maintained because of that time savings.

Interesting. And it's especially useful now because like, um, the site that I, that I work on for my, you know, daytime is a still a Drupal 10 site, but I wanna make sure these modules are up to date with Drupal 11. So the tugboat, I can have low Drupal 11 and then I can test the Drupal 10 locally. Uh, things like that is, is huge.

And so it bugs me when somebody submits a patch because the patch doesn't get pulled into a preview environment

John: that way. I see, I

Steve: see. So that was like,

John: yeah, and they're, and they're on the other hand, like secretly not really knowing how to do a merge request. You know, it's, it's like, are they, I

Steve: don't know.

Yeah, it's. And or like initially when they first sort of launched the, the merge request, I thought it was a little clunky myself. Maybe it's, I've just gotten used to it, but it seemed like there were a couple things that were not quite connected right now. They are. Yeah. And it works so smoothly now. I mean, you can create pull requests just from your browser without even, like, you can edit, uh, because, uh, vs.

Code is baked right into GitLab now.

John: Mm-hmm.

Steve: Uh, so you can, you can edit your, your, you can edit code right in vs code. And then you've, again, once you commit that to the pull request, you can immediately see the results of it. Hmm. So it's not, it's not ideal. It's not like you're editing it locally and seeing it's super immediately, but you're editing it remotely and seeing it within the five or 10 minutes it takes to build the PR environment.

John: Nice.

Steve: Um, so it's, you know, it's been very easy for me to do very small, minor changes and stuff. Interesting. And, uh, so, so yeah, my pet peeve right now is, is no more patches. Let's no more patches. Let's move on and do merge requests. But, you know, fair enough. Manage, how about you? What are your, what are your pet peeves for maintaining a, uh, a module?

John: I get, I get a little frustrated when I get a request from someone who's a better programmer than me, and it doesn't have any advice on how to do it. Like, when I get requests from people, they're like, not like serious developers. I'm, I'm like, I'm like very paternal about my module. Like, absolutely, let me see what I can do.

But when I get something from like one of the wizards of the castle, uh, and they're like, you should do this really complicated thing. And I'll be like, I have no idea how to do that, could you? You know? And then you hear the crickets,

Stephen: no, come back. Come back.

John: Um. So, I mean, and, and the other thing is, the thing that I'm totally guilty of myself is just like high emotion.

Like, like sometimes, you know, I, I'll be very frustrated and put it in a frustrated something. Um, and I try never to do that. Um, but when I get one of these and, and someone's like very hot and bothered about this, this bug, um, or whatever, and I, I think they sort of feel like they have to play it up to get my attention.

And I'm kinda like, look at my issue cube. Like I, I fix everything within days. Like, like you're just, let's not, don't, don't bring it down here, man. Um,

Steve: don't call my baby ugly and and be mean about it. Yeah,

John: exactly. It's like, I, I do care. You don't have to make me care. I'm gonna get back. So, I don't know, but mostly I've, I've, I've really enjoyed the ride.

I mean, it, it, it was, uh, um, you know, I always used to go to the, the conferences. Earlier in my career and I would sit there watching the, the people up front that were module developers and they were sort of, it was like, it was like the Avengers, like these were my heroes. And, and so just finding out that like, it's just a lot of copying and pasting and then you put your name on top with a nice sticker.

Uh, and now like it's just sort of like I'm on the other side now and, and it's so, I don't, it really doesn't bother me 'cause I sort of still am, uh, sort of confused and delighted that I, I have this thing. Um, so I, I'll put up with a lot for that, that, that vanity.

Steve: So Understood. You've done a great job with it.

It's been great. It's

John: been

Steve: great. So let's, so do you have any, any luck with when you get somebody that's a good developer that's submitting a, a, an issue to the issue queue? You said lots of times you ask and you get crickets. Have you ever had any good luck of saying, you know, can you show me how to do this or,

John: oh, absolutely, absolutely.

Uh, and that's, that's the, I would say that that's the rule, not the exception. Um, uh, uh, especially the, the Drupal Slack. Um, there's a lot of, um, as you know, as you say, the history is great on the module Q, but, uh, it's really nice just to be able to pop over to Slack and have a quick back and forth with someone and like, uh, be like, could you paste this line in and see if it fixes your problem?

Okay, great. I'll go make a point. You know, I'll go make a merge request, you know, so that, that's been, that's been tremendous just to chat with people all over the world. Um, I really enjoyed that.

Steve: So, so if somebody puts an issue in your issue queue, you can con you contact them directly through, uh, DRAL Slack.

John: I mean, not as a rule, but like if it's the kind of thing where, you know, if they've, if they've sort of. Uh, let's say have a nebulous thing where like, like this is, this is confusing or unclear. Um, you know, that's when I might, I might head over to Slack and be like, Hey, do you got a minute? You know, because like, I have these three ideas and like, and be able to go bing, bing, bing, like back and forth and back and forth a couple times, you know?

And then one might copy that back to the issue queue. You know, like, like I, you'll sometimes find comments in my issue queue that's like, here's the things we discussed on Slack and we went through this one. Um, 'cause you want that history. Um, right. But I like, I like being able to jump back and forth between the, the sort of slow and official communication and the, and the chatter.

Steve: Yeah. I like that. I need to rely on that more. Especially for like, things like that I can't easily reproduce or it's like, can I just shoulder surf while you show me this problem? And that's huge. Uh, I, I need to do that. Like, I do that in the, when I'm working for the agency kind of thing, but for like module maintenance, I don't, I haven't intended to do that.

So I like, I like that idea. It can save

John: a lot of time and people are very flat. Usually they're like, really? You're giving me attention? I'm like, so, um, no, that's great. That's great. So, oh, cool. What, um, what's next? Where, where, what, where's, where's your near future? Where, what's your, what's your prognostication for where this is, is heading,

Steve: uh, for module development heading?

John: Yeah.

Steve: Uh, I don't know. I've always seemed to have something in, in mind that I wanna build. Um, and so yeah, building a, an archiver for data sets for Deccan right now. Hmm. Uh, which is an interesting bunch of challenges there, but I think that's, that's gonna be a bit of fun. But that's kind of occupying the, the higher cycles of my brain.

But, uh, you know, and, and of course ai, like that's on everybody's mind. Like, how do, how can we use AI to make things better? Um, you know, how can we, like with alt text, with accessibility, how can we, you know, do some AI processes? Uh, to improve things and mm-hmm. Uh,

John: yeah.

Steve: How about you?

John: I keep plotting. I keep plotting in that direction.

People keep wanting to do AI alt text, and it's like AI is very good at some things and is very good at describing what's in the image, but it doesn't know what, why you picked this image or what the context is necessarily. So, yeah. So I think I, I've shared, I've shared on Slack with a couple of people that I, I, it's my, it's my dream to take one of these ai alt things and have it, instead of returning one alt, have it return three and make the user pick the one they think is best.

But picking puts their cursor into it to imply they're supposed to edit it. Like, I don't wanna take the human out the loop, right? I wanna just, you know, help the human with the hard part, which is getting started. Um, but, uh, that's my sort of next big dumb idea. Um, really, I don't think that's dumb at

Steve: all.

I think it's

John: a great idea. No, that's, that's, that's, that's how you end up with a module. Now some. You should build it. Um, I, I think also in my mind is, is, is what you're working on with your tex validators is improving, um, dashboards and, and site management and things like that. Um, and that's the real challenge.

'cause I, I, I have this thing where I'm, I'm reporting back on any, uh, URL let's say that Drupal has and what issues are at that URL. But that could be a view, that could be a this, that could be, that could be that. So like this, my information that I'm storing in the database is not very well coupled with Drupal's internal entity system.

So views isn't really sure what to do with it. And so I have a lot of open feature requests from people that wanna be able to filter issues to like nodes that they've authored that are published. And I'm like. Ooh. Yeah. I don't have the entity references in place to do that. And so, and I don't know how to do that.

So that's, that's sort of, um, we're always learning, like I've been doing this for years and, and, and now I need to learn how to educate views, uh, a about how to sort of translate between my system and views system. And that might involve completely rewriting my database tables and adding more columns and, and you know, so I just, we're never done learning.

Steve: I think that's my

John: conclusion.

Steve: Right. So is that kinda like a site improved, like baked into Drupal? Is that what you're

John: Yeah, I mean that's, that's really kind of how my dashboard works, but extremely light. Um, you know, these heavy, like Princeton, we, we pay for one of those enterprise crawling tools, um, and it's much more robust 'cause it's doing tons of server side processing.

It's doing the link checking, the spell checking. Um, so I don't look at my tool as competing so much with that as, um. Uh, I, as I, I, I guess you could say, like, I have, I have a, a, a nice electric drill in the back room, and I also have a screwdriver, you know, and, and, and, and so, and, and so this is, this is like the small tool that you can very quickly get some, some very simple tasks done for which the big tools are too much overhead.

And then there's also people that just aren't, um. Uh, trained. It isn't their responsibility, but the idea that, you know, if you're just someone that writes, uh, and the only mistakes you can make are like heading order and links and images, being able to have this very light dashboard that is just your things where you don't need to be trained to use it.

That was sort of the use case I was going for. Now, once that's all built, if I have all these references and connections, that's when I start sort of, um, twiddling my fingers and dreaming, because at that point, now I can start talking to your module and pulling your information. I can start talking to Link checker modules.

Um, you know, at that point I, I'm not gonna build it necessarily. Um, but the pieces would be in place for other people to start writing connectors where the, um, various Drupal sort of admin dashboards would be able to show you how many accessibility issues are on this page, how many link issues are on this page, like they, like these modules could start talking to each other much more.

So there's of my near future. Yeah, that's something I can pull off. It's one of these, like you, we have dreams and then we have dreams that we actually know how to do. And this is, this is sort of the latter where I'm like, this is gonna be a lot of work, but I, I'm pretty sure I can pull this one off. So,

Steve: yeah, that sounds awesome.

Very useful.

John: Yeah, so you can build it first and then I'll just use your code.

So

Steve: you never know.

John: You never

Steve: know. Yeah. But it sounds like you've already got half of it built and it's already doing stuff for you. So we're getting there.

John: We're getting there. That's cool. Very cool.

Steve: So as we, we round this out, there's one thing that I gotta know, okay. Every time I see, you know, hit maybe JJ on and drupal.org, you have an icon of uh, uh, an avatar that has you.

There we go. Oh, come up looking very proud.

John: Yes. I'm holding a, a shovel looking very proud. Uh,

Steve: are you, are you proud of the shovel or are you proud of something you did with the shovel? Like, my mind just has to note

John: it's a good place to add.

Um, yeah, so I have, uh, a ridiculous garden. I have a, I have a small yard. I do not have a large yard, but there's not much grass left. And I have, um, I have, uh, a large wildflower garden and lots of edibles and things like that. Um, all kinds of pears and blueberries and, and, um, berries and fruits. But, uh, about 15 some odd years ago, um, the alumni magazine from my university decided that they are mailing this magazine out to people full of people who've done amazing things in their life and that.

Uh, that can be a little alienating. And they wanted to start a series on people who hadn't done anything amazing. And they knew me through working at the university and figured I was the person least likely to be offended by this idea. And so they reached out and I could not stop laughing. I was like, you want, you wanna interview me and do a story about like, someone who's just has a nine to five job and a garden?

Absolutely. I'm in. And so they sent out a professional photographer and, and she got a, a photo of me holding my shovel in my garden. And this has been, this has amused me ever since. So that's, that's, that's the origin story of that, of, of just being a normal person with a normal job and a normal life, uh, in the alumni magazine.

Steve: So, and you weren't offended.

John: I thought it was hilarious.

Steve: I still do. Right. Along my head. I was like, oh, maybe he just buried somebody. Maybe that was a, you know, he vanquished his enemies and

John: Exactly. No, I'd vanquished some weeds.

Steve: Yeah, that works too. That works too. Oh, this has been great talking to you, John.

John: You as well, Steve. And I'll see you at all conferences,

Steve: cheer. Cheers. Sounds good.