Codemash 10K Experience (v220.127.116.11)
Codemash 2023 was another success and brought developers from all over the world to Sandusky, Ohio
Seeing everyone again felt good and, as always, the general feeling at the conference was everyone seemed to have a great time.
With Codemash this year, though, it was a special outing for me. Not only was I getting out to a conference, but this was my first time speaking...ever! Some people were shocked to hear that (and thank you, BTW).
With what I've done in the past, I wanted to review the time spent at Codemash 2023 and everything I've experienced over the two (2.5?) days I was there.
Wednesday (pm), January 11
After leaving work, I loaded up the car, made sure I had all of my POWER cables packed (there's a Codemash story there from 2018), warm clothes, and, of course, my Vans and headed out!
Luckily, it wasn't snowing, so it was a relaxing trip to Sandusky.
And then I got there...
...and saw some old friends.
Checked into my room, unpacked, and later, had dinner.
I met up with a co-worker and, as we went to dinner, they noticed my shoes. My "Business Casual" for the Kalahari.
Since I hadn't been to the Kalahari in such a long time, the little bar area turned into a full-blown Italian restaurant. This was definitely a shock to me since I didn't go to Codemash last year.
I figured it was best to check in, head to bed, and prepare for all of the sessions tomorrow...
Thursday January 12
Again, as I mentioned before, I AM NOT a morning person, but hunger won out over sleep.
I loved the Kalahari breakfasts and they always go all out. However, I will always remember the bacon-wrapped potatoes that one year. ;-) (Codemash story)
After looking over the sessions, I made my choices and headed out for the day.
8:00a - Evolving your APIs - A step-by-step approach
No one wants a stale API. Mr. Frankel gave a great presentation on how to make your APIs grow and evolve into something better for your users.
He started with a brief history of APIs and proceeded to identify ways to move your API forward using approaches like versioning (through path, querystring, and headers), using round-robin for APIs, and how to deprecate old versions using a deprecation, or sunset, header.
His GitHub repository explains additional ways to evolve APIs and he uses Docker for most of his examples.
Overall, I found his talk very thorough and was definitely entertaining as well.
9:15a - Writing the next great tech book
Brian MacDonald / @bmac_editor
Since I'm currently in the middle of writing my first book through a publisher, I thought this would be a great session to attend.
Brian has ran the gamut of various publishers over 20 years with experience in every part of the book publishing process.
He explained the process and the differences between self-publishing a book and having a publisher publish it for you which is what lead to the image above.
At the end, I asked a couple of vague, but relevant questions which he answered professionally and it helped put my mind at ease with my endeavor.
I felt this session was a thorough and great talk for those wondering if they should self-publish and/or go through a publisher.
10:30a - CI/CD with GitHub Actions
Chris Ayers / @Chris_L_Ayers
While Azure DevOps is where I like to create pipelines for software, I decided to head over to Chris's session and see how they're built with GitHub Actions.
He just got hired at Microsoft as a Senior Customer Engineer and, after listening to his talk, now I know why he works at Microsoft.
He dug into GitHub's Action Runners, Matrix Builds, Conditionals, Secrets, and Environments. There were other topics, but I was writing as fast as I could.
DevOps is one of those concepts that every developer should know and understand when it comes to creating a pipeline because it's already become a standard in the software industry.
Chris's dive into GitHub Actions felt vaguely familiar to me. The reason I say that is because it looked similar to Azure Pipelines.
I liked Chris's session a lot and it was a great introduction to GitHub Actions and all it can do for developers.
11:45a - Designing Real-time Web Applications
When I first found out about SignalR, it basically changed the way I wrote real-time web applications.
So when I heard about Tim doing a session on Designing Real-time Web Applications, I definitely wanted to see if I could pick up any tips.
During his talk, he mentioned a number of real-time web technologies. Being a full-stack ASP.NET developer, I was looking for something similar to connect with in his list of technologies. While he did mention .NET and Blazor, some people in the crowd noticed he didn't mention SignalR at all.
He gave one scenario where a website's inventory could only have one item left in stock and someone grabs that item immediately. How do you handle it? Do you put a timer on the site saying you have 10 minutes to complete your purchase like the EventBrite tickets for Codemash? Or do you get to the shopping cart and say "I'm sorry, someone has already claimed this last pair of Vans."
This is where your real-time web apps come in handy.
He also talked about how do you handle paging data, collaborative editing, and handling disconnects gracefully. While some of these may seem simple, if you think about them, they can turn into a nightmare.
Tim gave a great talk and provided some insight on how to work more efficiently with designing real-time web apps.
After writing all of these notes throughout the morning, my laptop was not charged enough and I didn't want to chance it dying on me during my presentation. One thing I missed this year was the charging station located over by the Zambezi room. That would've helped this year, but I can understand not having it based on budgetary issues.
Luckily, this year, my room was closer to the conference so I headed up to eat a quick lunch and charge the laptop in my room until 2:00p and then head down to get ready.
2:15p - The Awesomeness Factor: Enhancing your Development Career
This sponsor session through Insight got my feet wet with public speaking and I WAS NERVOUS.
Based on feedback, I was extremely happy with the result and my audience seemed to enjoy the experience as well.
To all those who attended, thank you very much for choosing my session. It meant a lot.
3:30p - Effective Automated Testing - Lessons from 10 years
I've always like Cory's talks and he injects a certain humor into his presentations which resonates with me.
His session was in the Grand Hall with the large screens (how kewl!) and had a great turnout.
While I'm not going to rehash his entire session (the slides are thorough enough), I will mention some highlights from his talk.
Cory mentioned how tests are considered documentation for developers, he explains the types of tests for a system, code coverage isn't the end-all-be-all, removing headwinds or roadblocks that cause friction to the development workflow, and create reusable mocks.
Again, Cory's talks are always great to watch and his expertise on optimizing your development experience with front-end systems is always second-to-none.
After his talk, he was sitting on the stage and had a number of people asking questions, but I wanted to talk to him and said I would "hunt him down" later (see Friday Breakfast).
4:30p - Lessons Learned in 10 years of Developer Advocacy
Sam is another great speaker and has a number of years as a developer so seeing him talk about everything he's learned in 10 years of being a developer advocate was worth attending (in my book).
He's also living in my hometown where I grew up most of my life, but I won't hold that against him. ;-)
Sam's session describes what is means to be a developer advocate, being able to relate and understand developers, and how to market through real-world applications.
He also suggests a developer advocate should be more about being and acting like a human and not being a jerk.
Over the course of the session, Sam spent some time on the speaking aspect of being a developer advocate; speaker etiquette, how to speak boldly, honestly, expertly, and respectfully. Each speaker should adhere to these characteristics regardless of topic. Your audience is not stupid.
Overall, I'm glad I went to Sam's session and learned a little more about the efforts and responsibilities of a developer advocate and glad to actually know one.
Great work, Sam!
The game room, sponsored by Improving, is always a winner and I can't think of a Codemash without it. They even add tables outside behind the room so there's enough for everyone to play their favorite game.
Back in 2020 (Pre-COVID), I brought a game called Disrupt and it seems everyone had a great time with it (see picture in linked post).
After the final session was over, a majority of previous players from 2020 were "Jones-ing" and wanted to get in on it again this year. Like I said, my room was close so I headed up, changed clothes, and brought down the Disrupt and Cards Against Humanity games. A word of warning, CAH is definitely NOT a kids game.
We went until midnight then headed up to my room and played the game until 3:00a and laughing the whole time.
Friday January 13
With three hours of sleep, again, hunger won out over sleep. I guess it comes with the Codemash experience, I suppose.
As they say, the pain is only temporary. Push through it!
As I was sitting there eating my breakfast and looking over my schedule for the day, Cory House joined me.
Story time: I remember seeing Cory a couple of years ago and he asked me two things at the time: 1) "could you please snap a couple pictures of me doing my talk in the grand hall?" and 2) "do you want to come up on stage and read a couple slides from my talk?"
Of course the answer to question 1 was "Absolutely. Sure!"
Question 2...mmmnot-so-much. "Uhhh, thanks, but no thanks" I was very skiddish about speaking on stage ANYWHERE.
Since I did my very first talk this year, I felt compelled to chat with him about my first presentation and how (at least I thought) it was successful. His response was he liked to hear how people get their first speaking gig and how it impacts them.
I also mentioned writing my first book and then Mr. Steve Smith sat down with us. All three of us were chatting about writing a book and how to do it for the right reasons (not just money).
All of us finished eating around the same time and we headed out to our morning sessions (Thank you, gentlemen, for the advice!)
8:30a - I Ain’t Afraid of No Ghosts Products: Using a user-centered approach to bring products back to life
Fellow Insight teammates Rachel and Haley gave a fantastic presentation on how to bring software products back to life from the dead. They said they originally made the session for a pre-compiler and they adapted it to an hourly session beautifully.
They described a way to resurrect products by introducing additional features to make a dead product more appealing to others.
For audience participation, they broke us into groups of two to come up with features for a fridge with a touchscreen and how it would appeal to certain audience profiles.
I love how they structured their talk and used the audience to make it more interactive.
Great work, Rachel and Haley!
9:45a - The one SQL Performance Tuning Tool You Need to Know
Being a full-stack developer, I felt a certain tug at me to go to this session.
This session was definitely eye-opening for me regarding SQL Server and I really enjoyed Erin's session.
In case you're wondering about the tool Erin used, it's the Query Store feature in SQL Server. The Query Store is considered like a "flight data recorder on a plane," is enabled at the database level, and only available in SQL Server 2016 and higher.
As mentioned in the image, the Query Store can troubleshoot query performance, determine patterns in coding and plan execution, and proactively analyze workload patterns.
As a developer, these three features are what really caught my eye. After her talk, I did some research on some of her posts and she definitely dives into the deep end of the Query Store (like here and here).
She explained multiple ways to fix a poorly-performing query:
- Change the code and/or schema
- Add RECOMPILE
- Manually get the best plan in cache (manual plan forcing which Query Store does)
- Use a plan guide
- or use the automatic option
Again, this was a great session on a relevant topic where performance has always been a major factor for my web applications.
Query Store must be turned on! ;-)
11:00a - Getting the most out of Sysmon
I remember grabbing every SysInternals utility back in the day (1996) to see exactly what Windows was doing behind the scenes. SysMon was one of those utilities I used a lot.
So when I saw the title of this session, this took me back. However, it's good to see the utilities are still updated to this day.
Amanda's amazing talk on how her experience at a company with SysMon grew and how she used it to find issues on their systems. Personally, I didn't realize all of the sub-functions SysMon can detect.
With the amount of her experience, she dug deep into some of these topics and, I'll be honest, some of the slides threw me off, but gave me a better look at how hackers can attempt to invade systems.
I did enjoy the session and Amanda made me want to look at SysMon even further based on her experience and recommendations on using it.
12:15p - 10 Things What DevOps Is and 10 Things What DevOps isn't
People think DevOps is a destination. It isn't.
Some think it's a position or a team. It isn't.
Matt Williams gave everyone a great session on what DevOps is and isn't. Oh, and spoiler alert: there are more than 10 in both categories.
These is/isn't points were spot on about a DevOps mentality.
Definitely a solid session about DevOps.
Yes, check-in...to another hotel. When I heard about not getting to stay at the Kalahari, I booked a different hotel for Wednesday/Thursday night (checkout Friday). I personally like to book an extra Friday night to collect my thoughts after Codemash (and write this post).
Then we found out we WERE able to book a room at the last minute for the Kalahari. I made the reservation for the Kalahari for the two nights and kept the other hotel (Hilton) for Friday night.
So I grabbed a quick lunch and headed out to the hotel (1 mile up the road) to check-in, relax, and charge the laptop.
I headed back over to the Kalahari at 2:30p to finish off the day.
2:45p - Improving the Design of Existing Software
it's always great to watch a Steve Smith session talking about the latest in software development.
While I've seen this particular talk before, it seems he updated the session for Codemash.
One thing that brought a smile to my face was his mention of refactoring with certain patterns.
This is always a great topic because there are developers who will see a piece of code, throw hands up in the air, and walk away verrrry slowly because if they touch that code, it's a house of cards. They would rather leave it for the next "victim" to fix.
If you missed his session, he has a number of Pluralsight training videos which I recommend watching one or two or click the link above to see the same talk from 2020.
3:45p - Database DevOps: Options for Database change management
While pushing application changes are now solved using DevOps, there's always the other problem of pushing out database changes as well. I've mentioned a way to deploy databases and so has a compadre of mine (titled PowerShell SQL Deployment), but it's always been a challenge.
When I saw Ryan's title, this got me wondering about how do others deploy databases?
Ryan's session focused on PostgreSQL and RedGate's Flyaway product and not SQL Server. This still didn't deter me from attending. :-)
He discussed the problems with deploying databases: not enough automation, complexity of the database, and the possible loss of critical business data.
His slidedeck was great research material for how DevOps and databases don't mix based on the user feedback.
It was a great session on how developers should find the tools to automate and standardize on deploying databases.
Phew! What a post!
As Codemash drew to a close, I went up to the lobby, got my final indulgence of coffee and my Tiramisu cup and headed out to my hotel for a quiet Friday night.
Codemash 2023 was a great time (again!) and, as I finish this, I'm at ~3,000 words. Even though Codemash couldn't pull through with some of the extras (like the waterpark), everyone seemed to have a great time just getting out and seeing everyone.
It took a week and a half to collect all my thoughts, emotions, and reviews of the sessions and experiences and I still had a blast.
Hopefully, I'll see everyone next year...for TRANSFORMERS!
What did you enjoy the most this year at Codemash? Was it a session? An experience? Post your comments below and let's chat!