I'm Speaking at Commit Your Code Conference in Dallas!

I'm Speaking at Commit Your Code Conference in Dallas!

• 78 views
vlogvloggervloggingmercedesmercedes AMGMercedes AMG GTAMG GTbig techsoftware engineeringsoftware engineercar vlogvlogssoftware developmentsoftware engineersmicrosoftprogrammingtips for developerscareer in techfaangwork vlogdevleaderdev leadernick cosentinoengineering managerleadershipmsftsoftware developercode commutecodecommutecommuteredditreddit storiesreddit storyask redditaskredditaskreddit storiesredditorlinkedin

Excited to be travelling back down to Dallas to speak, and this time, it's at Commit Your Code! Here's what I'm going to be talking about...

📄 Auto-Generated Transcript

Transcript is auto-generated and may contain errors.

Hey folks, I am just driving across fit. I'm going to do a a quick one. Um kind of a a thought exercise for me. I'm going to be doing a talk at a conference coming up, which is pretty cool. I don't think I've officially done this before. I went to uh I went down there last year to Dallas to speak. This is at the Commit Your Code Conference, but I went down to like a meetup. Uh, honestly, it was just like a a one-off meetup cuz they do them regularly down there. And they had some people speaking about.net. And so Danny Thompson is the guy who organizes it, one of the guys. And uh, so we got chatting. So I was like, I'm going to fly down. And I I did a brief talk there on plug-in architecture uh, in C. And so that was pretty cool.

Um I think for me a bit of a milestone because I like I talk about this a little bit but not a lot of people know like uh for for a long time I've considered myself like terrible public speaker. Uh I am very introverted. So being able to go speak in front of an audience is like oh crap like it's uh it's scary, right? And I've told myself that for years and years and years and then like kind of wanted to challenge myself on that because I'm like talk to a camera a lot and um I live stream a whole bunch like is it really that different? And uh it turns out it's really not that different.

So it was uh pretty cool for me to go down and even though it wasn't like a huge audience or anything was on a stage it was you know it was streaming live and got to do a presentation and I actually felt quite comfortable and so for me huge milestone just in terms of like I don't know personal development but this year is actually a conference and it's two days and there's multiple tracks. The time slot I have is actually much shorter. Uh, and this isn't a complaint, by the way. I'm just talking through it. Uh, much shorter than last year when I just did this like meetup talk, but it'll be a dedicated track, right? So, if people want to see me speak, they will I'm assuming there's other speakers and stuff at the same time. People will have to come select that they they want to spend their time with me instead.

So, I have no idea what the turnout will be like, and that's totally cool. I am mostly just kind of again taking it on like a personal growth kind of thing to be able to to go speak. But I am going to do it on plug-in architecture again. I uh am probably going to take the last presentation I did and chop it down kind of um try to do a bit more summary cuz I'd like to get into what I didn't touch on a lot specifically was like C code which sounds kind of funny uh because the whole talk was supposed to be net based but I I talked about plug-in architecture in general and then kind of sprinkled in a little bit of umn net stuff.

So, um this is probably going to be similar, but I I probably want to try and get to like I don't know, like half the time maybe being kind of like the theoretical um I don't even like saying it's theoretical, but more like background like organization of like what what plug-in architecture means, at least from my perspective. and then half the time trying to leverage code. I I want to see if I can uh ideally I don't know. I don't know a good way to do it cuz I feel like I need pictures and stuff, but um I feel like I want to say I want to be able to show code as I'm going through the whole thing. I just don't actually know if uh if that's like a a I don't know like a false metric or a false goal to have because I don't know if it will do a good job conveying the thought versus me just being able to check a box and say look it's C code.

So I'll have to play around with that. But that's kind of one of the things I'm I don't want to say struggling with. I one of the challenges that I'm trying to explore is uh how to balance having more like C code to go along with the presentation. Now, what I might like lean into more and this was one of the things that was suggested in uh in the speaker notes. So, big big shout out to Danny for for having this. He calls out like, "Hey, you don't have a ton of time." And so he actually suggested having like some offline materials and stuff uh so you could have a post or something else um some content somewhere and just remind your audience like hey if you want to see more about this like head over to this link you can see like a lot

more detail and that way you're not spending the time in your presentation trying to like cram in extra stuff that just truly is not fitting in for a speaker slot. So, um I don't know given that that's on a when is that? That's on it's at the end of the month. I don't uh 26th I think 27th something like that. Given that's great going into a weekend, maybe I'll make my newsletter on that and then the live stream I will do following maybe can be on the same topic and I will be fresh and prime for uh for talking through it. So maybe that's the plan. Um I I'm trying to think of like the gaps that I had aside from just like code. Um and I don't want to like I'm thinking about this. I don't want it to be like self-promotion for this needler dependency injection package that I was putting together.

Um, but I like I might use that as a a way to highlight um some of the code structure. And what I mean by that is like when I'm talking through plug-in architectures, I like to show that I have a very lightweight and this is it's a personal opinion. It doesn't mean it's better or worse. This is just how I like to write software. I like my entry point of so if it's a you know web application the part that's actually spinning up the web app if it's a desktop application the part that's actually going to like load and show the first screen in the user interface uh console application is literally like the you know the main like loop that you're going to have for console inputs or whatever but I like the entry point being very thin I like that being something that, you know, I I get it up and running and I should hopefully like almost never have to go back to that part of the code.

Oh boy. Um, and and it's because I I would rather spend my time like building out features than having to go back to a common spot to like to mess around with stuff. Again, personal opinion, not um I wish I could sit here and be like, "Here's a list of all these amazing reasons why I I don't do that, but uh I I I find that it's way easier to maintain personally." And um I like I like my code being wired up for like auto discovery. And so what I'll probably try to show is that with Needler I can do like a couple of lines of code for my entry point like where are the plugins any special logic for registering them um how are we reading in configuration right so uh like app settings environment variables command line like just really the stuff that

that you need to pull in at the very beginning uh so show that and then show that if I want to add functionality I can basically do like feature verticals or entire plugins and um that's probably like I would like to focus on that there's two it's an oversimplification but kind of like two major types of plugins that I like to look at and one is like I don't know I I feel like the word kernel is uh maybe a little extreme but like a kernel style plugin which is going to be a core dependency that your application needs. So for example um you know all of the plugins will be able and and your core application will be able to leverage logging. Okay. So a kernel plugin might be something like you want to use uh like Sarah log as your logger or you have your own favorite logger that you want to wire in.

That's like a kernel plugin. So that way you don't have to go into the main entry point to the application to to configure it. You can just swap the plugin and all of your code works. Like you don't have to change code. It's almost like just configuration at that point. So um loggers are an example of that. uh depending on how you've structured your your data interactions and things like that, maybe you can swap out your whole database. Uh, that one's a little far-fetched because usually it's a little bit uh less trivial, you know. Did you did you write your uh well, depends on what you're doing, but like if you're just swapping out the connection part, like did you did you write all of your queries and commands to be compatible across uh the different storage engines? If you're swapping out entire repository implementations, like truly could you write your your interfaces for your repositories in a way that let you do that?

If it's all SQL based, maybe that's totally fine. Um, but anyway, that one's a bit more tricky. But there's other things that you might consider like a kernelbased plugin like telemetry. Uh, logging is a good one that I mentioned already. um for me like uh a caching layer. So I use uh fusion cache. Again, these are some of these things are net specific. So you might not know them if you're not a .NET developer, but um these are like I said, these are things that you need one of these plugins to be implemented to get the behavior. And you could argue that you know your your app has some safe defaults. So, for example, um a logger, right? If you don't have a logger configured that you that you have like a null logger or something, a console logger, something that's a default. Looks like do another lane change here.

I got like It almost feels like there's ash or something on my on my car. I know there's been some some forest fires around here, but the other day, like on Monday, I I was like I hadn't really left the house much over the weekend and I went to drive to work on Monday and like there's something all over my car. It's not just like the car is dusty or whatever. It looks like, and I don't drive it like through mud or whatever, but there's like uh patterns of of dirt that are like kind of half washed off. It's really bizarre, but it it reminds me of when we had ash coming down a couple years ago and it got wet. So, it just uh like patterned kind of dirt marks on the car, but it's this morning it was making all the glass like really hard to see through.

Like the wipers on the You can't see my my windshield obviously, but I had the wipers going and uh based on the temperature and whatever's on my windshield, like it was barely clearing off. So, going to have to get this thing washed pretty well. But yeah, so kernel plugins are one one type of thing and they're the core things that you want to be able to inject into your into your system so that it runs properly and you can use some safe defaults if you want. And um the other types of plugins are really like feature plugins. So, uh, if you're building an e-commerce application, like, you know, do you have a an entire feature vertical that's like being able to browse products? Do you have an entire feature vertical that's like checkout? Um, you know, like these are and whatever app you're building, obviously these are going to look very different, but I like building functionality out that way.

So, uh, Brand Ghost for me is a really obvious one. If you're not familiar with Brand Ghost from for my channel, it's a, uh, a social media like content creation cross-osting application. It's like a there's a platform. Again, if you're not familiar with social media posting, might not make any sense. There's a tool called Buffer that's been around for a long time. There's Hootsweet. There's a bunch of people now that are making uh, like uh, content schedulers. And I guess with AI, they're just vibe coding all these. Um, which is fine. Uh, there's a little bit more involved to just having a uh or than just having something vibe code a couple things that they can post. The posting part is not really the hard part. Um, it's a lot of the other pieces behind the scenes, but I have brand ghost and that is entirely plug-in based.

So yes, it has like the kernel plugins I was talking about, but uh you know to be able to post to a social media platform. It's similar things across every social media platform. The implementation's different of course because how you talk I mean this is a bad example. Instagram, Facebook, and threads are all very similar cuz they're owned by Meta. But like to post to LinkedIn versus Twitter versus the Meta applications versus Blue Sky versus YouTube or Tik Tok or Telegram or Discord. Um, all of these things have their own API, right? Like they're independent platforms from each other. So, uh, plug-in architecture works really well in this case for the social media providers. So that's a for me a very very obvious one, but like I have other functionality that's split out by plugin. So um not only are each social media platform their own plugin, but there's like the actual posting logic is a plugin.

there is a plugin for being able to do uh it's not a lot of people don't know this because it's a paid for feature but uh in brand ghost you can have an aggregate social media feed so instead of me looking across Twitter and blue sky and threads and YouTube comments I can go to one spot and see comments coming in from everywhere or at least the platforms that allow us to query for that because we don't uh we don't scrape I'm not breaking terms of service on anything because uh I've stood by that because I don't want anyone's accounts to be banned. And we're already seeing uh not for the first time that there's very very popular applications that have been breaking terms of service with scraping and doing they're not supposed to and they're uh you know they're getting cease and desist stuff they have to shut down.

And I can't imagine having a customer base and being like sorry. Um no shade to those other companies that do that did it. um and still do it. There's still a bunch that do, but like I'm I am not putting myself in that position. So, we have a like a feed plugin that lets you query that stuff from social media and then the social media platforms are plugins to the feed feature. So, it's like uh in some cases it's two layers of plugins. And for me, this like this kind of stuff just works really well because it's how my brain thinks about software. Um, you could absolutely build all of this in a way that had nothing to do with plugins, but um, so I don't want to sit here and tell you like just because I think it lines up really well, that's how it has to work because it definitely does not have to work that way.

Oh man, all of the spots are taken. Oh, I can't I hate pulling in on this side. I feel pretty close to whatever I'm parked in front of. Anyway, I'm at CrossFit. I thought it was just cardio, but we get to bench press today, so best day ever. See you later.

Frequently Asked Questions

These Q&A summaries are AI-generated from the video transcript and may not reflect my exact wording. Watch the video for the full context.

What motivated you to speak at the Commit Your Code Conference in Dallas?
I have considered myself a terrible public speaker for a long time because I'm very introverted, so speaking at the conference was a personal growth milestone for me. I wanted to challenge myself to speak in front of an audience since I already talk to a camera and livestream a lot, which made me realize that speaking live isn't that different.
How do you plan to structure your talk on plug-in architecture at the conference?
I plan to chop down my previous presentation to fit the shorter time slot, focusing about half the time on the background and organization of plug-in architecture and the other half on showing code examples. I want to balance theoretical concepts with practical code, possibly using pictures and offline materials to supplement the talk.
What are the two major types of plugins you discuss in your plug-in architecture talk?
I describe kernel plugins, which are core dependencies like logging or caching that your application needs to run properly, and feature plugins, which represent entire feature verticals such as browsing products or checkout in an e-commerce app. For example, in my Brand Ghost application, each social media platform is a plugin, and posting logic and feed aggregation are also handled via plugins.