Remember the Colosseum!
The Roman Colosseum
After the fall of the Western Roman Empire in 497 CE the Colosseum fell into disrepair. Rightfully so! Who can worry about keeping up a giant megalith made by people centuries ago while you're just trying to figure out where your next meal may come from, or the ranging hordes of barbarians showing up and taking the food you did find!
However, during the medieval period, while Rome's population declined dramatically and many ancient structures fell into disrepair or were repurposed, the Colosseum remained a prominent landmark. There are stories that as the centuries progressed, the inhabitants of Rome forgot who built it. While some fantastical legends did develop around it, the basic historical facts of its construction by the Flavian emperors and its original purpose remained part of common knowledge among educated Romans. For the non-educated Roman's there were lots of misconceptions about the colosseum.
The non-education Romans would have created stories1 about the large building. It was haunted. It was used for pagan rituals and no good Christian would go in. Folklore would rise up around it. As many of us have seen or experienced, in the absence of information, people will make it up.2
The Story of the Legacy System
OK, but why is this important from a technology perspective?
Imagine if you will a large system, built 10 years ago, by a group of developers, that have all left the organization.
No one left knows how it works, or how to make changes to it. Most people don't even really know WHY it's there in the first place.
There isn't any documentation that can be referred to. Either because it wasn't ever created OR it was destroyed by Barbarians, I mean well meaning IT processes that 'clean up' unused files.
So what happens? The people remaining create stories about the system. Stories like the long timer 'Bob' that once caused the entire system to Crash and then an old copy backup copy had to be restored, and months worth of work was lost.
No one ever saw Bob after that. Now we're all afraid to touch any part of it. We mostly leave it alone, and it leaves us alone.
There are stories about another gray beard that actually built the system, but everyone assumes these are just fairy tales.
The stories tell of this Gray Beard busting out the entire system in a weekend, using nothing but a pin to move the electrons into the proper places to get all of the logic to work as expected.
Of course, no one really believes that story, but it encourages people to never want to have to make and changes to it.
The problem here is that it's running on a server with an OS that hasn't been supported for 7 years and there is security mandate to upgrade 'everything' to be on current software
No one wants to be in charge of this project, but someone is going to have to be in charge of it.
What do you do?
The story above isn't real, at least not for me. But it could be.
How many times have you gotten to a system that is old, no one around has any idea how it was built and people mostly just avoid it? Probably more than once.
But how can we avoid this fate? Do we just keep the old timers on until they (or the system) die?
There are options, and they are some of the easiest things to do, but many people don't like to do them.
What is the answer?
Documentation
Documentation. No really, Documentation. Just write it down. For a new project especially. For an old project? Most definitely.
For new projects it's best to just get into the habit of writing good docs3 as you go. If that's doc strings in a method, or a full fledged Knowledge Management System using a documentation framework like diataxis, then so be it.
But write it down. Write down the why's whenever you can. Use something like an Architectural Decision Dsocument to understand WHY you made a technical decision you made. Maybe it's not the best decision, but it's the best decision given a set of constraints.
For existing projects, it can be more challenging. It's possible that NO ONE that created the system is at the organization. It could be that NO ONE that asked for the system to be created is at the organization.
This leads to a bunch of problems to try to solve, but the journey of 1000 miles starts with a single step.
How do you solve it?
Use the helpful Awareness-Understanding Matrix4
| Aware | Unaware | |
|---|---|---|
| Understand | Known Knowns | Unknowns Known |
| Don't Understand | Known Unknowns | Unknown Unknowns |
That is,
- Known Knowns: Things we are aware of and understand
- Known Unknowns: Things we are aware of but don't understand
- Unknown Knowns: Things we are not aware of but do understand or know implicitly
- Unknown Unknowns: Things we are neither aware of nor understand
The Known Knowns may be very small, but it won't be empty.
The Unknown Unknowns might (will probably) be the largest.
The lack of knowledge here represents Risk5. Risk to your team, or to your organization. This Risk needs to be handled as much as possible.
Looking at a system with the Awareness-Understanding Matrix can help to risk it properly. Once you've properly risked the system, then you can start writing documentation.
The documentation can take the form of Architectural Review of System X (DRAFT)
The system does these things
- Thing 1
- Thing 2
- Many other things that are still unknown
Sometimes just the act of writing these things out will help you in finding out what you know and what you don't know.
If you're using a documentation framework like diataxis for this, you will want to keep your documentation parts separated (How To, Tutorials, Reference, Explanation). You may start righting a Reference article on the system and realize that you also need to have some, yet to be discovered, Explanation. The issue is that the Explanation still needs to be researched and written.
That's OK! One strategy I've encouraged, and use, is if I'm writing a Reference Article and need to link to a yet to be written Explanation article, is that I'll simply create the yet to be written Explanation article and tag it with Explanation and Stub. This frees me to come back to it later and fill in the details.
The other thing that will need to be done is to figure out who uses the system. Sometimes that's super easy, and sometimes, it's not.
Once you're able to determine who uses the system, you can talk with them about the system and then work to fill in the gaps from above.
Occasionally, you find out who everyone thinks is using the system, and discover that actually, it hasn't been used for 5 years because reasons, and they didn't know who to tell.
Now you can just retire the system using a decommissioning process. You have a technology decommissioning process, right? If you don't, it may be time to look into one!
Back to the colosseum
The inhabitants of Rome never got to a spot where none of them knew why it was built, or who built it. Or even why. But what did happen is that the people with the knowledge may have been parts of groups that were marginalized and therefore their knowledge was discounted or ignored. Because the knowledge was a verbal knowledge and not written down. It was, to use a loaded term, tribal knowledge. EVERYONE just knows the obvious thing.
But the thing is ... obvious things are only obvious in the context they were created. It's obvious what Python is. I mean, why would someone use a snake to write code to get a computer to do a thing. EVERYONE knows I'm talking about the programming language Python ... until they don't.
Just write this shit down. Make sure everyone gets into the habit of documenting. Make the documentation public. And if it's not possible to make all of the documentation public, make as much public as possible.
For the parts that aren't public, make sure they are accessible by the people that will need access to it.
Really, documentation is a means to an end. Sometimes you won't need the documentation. You'll know how the thing works, and it has an obvious API or UI and people just "get it". This can lead to people not writing the documentation because we don't need it.
This is kind of like saying, I've used a seatbelt every day for 30 years and I've never needed it. I don't see why I need to wear it any more.
This might be fine until you're in an accident.
Not writing documentation is fine, until it's needed. And that's the worst time to discover that you need it.
Better to have it and not need it, than to need it and not have it.
Looking Back at the Half Marathon Streak
Looking Back at the Half Marathon Streak
How It Started
In February 2012, a half marathon was being held in Palm Springs, and one of my walking friends asked if I wanted to do it... about 5 days before it was set to happen. I said I wasn't interested, and she said "Where is your sense of adventure?" ... though it was in slightly more colorful language. Six days later, I was participating in my first half marathon.
Now, I hadn't really run too much up to that point. A 5K here and there, and for the most part, I wasn't running much during those "runs".
At the start of the half marathon, I looked at my friend that had persuaded me to participate and said something like, "We're just going to walk, right?" She said we had to run at least some of it.
Eight miles later, I was still running and enjoying it. She wanted to walk a bit. So we did, and then she encouraged me to start running again, so I did.
The First Taste of Success
I finished that first half marathon in something like 2h30m, but I was suddenly hooked. I thought, "I bet if I actually trained for a half marathon, I could do better." So I set out to train for a half marathon. I started a training schedule using this plan and was able to complete the San Diego Rock 'n Roll half in a little more than 2 hours. I continued to run medium distances (up to 12 miles on weekends) and really enjoyed it.
I got to a point where I was in the best shape of my life. I had a resting heart rate of something like 50 with blood pressure that was pretty low (almost low enough that my doctor was concerned!) but my labs were good, and I felt GREAT!
The Birth of the Streak
I was looking at half marathons in 2014 and saw the Palm Springs one again, but also saw one in a local city called Desert Hot Springs in December 2013. Then there was the Carlsbad half in January 2014. Another one looked interesting in Zion National Park (sort of) in March of 2014. And then I saw that there was the La Jolla half in April.
It also turns out that if you run the Carlsbad, La Jolla, and America's Finest City (AFC) half marathons, you get a nice triple crown medal. Well, the AFC was in August. I was looking at the calendar and thought, "Holy shit, I might be able to schedule half marathons each month for an entire year!"
The Journey Begins
In November of 2013, I signed up for a couple of the half marathons that were further out (essentially the ones for the Triple Crown medal) and the Palm Springs half.
I wanted to do the Zion run, but it's a 10-12 hour drive to Zion from where I live. I casually mentioned this to an acquaintance who said, "I'd run that with you."
The next thing I knew, I had a pretty good string of runs set up: (1) Carlsbad, (2) Palm Springs, (3) Zion, (4) La Jolla, (5) America's Finest City ... but I still hadn't told anyone, other than my wife, about my crazy idea to run a half marathon each month.
Making the Commitment
One day while on a walk with a friend, I mentioned that I was thinking about doing it and he said, "That's an awesome idea... you should totally do it." We spent most of the walk with me talking about the idea and wavering until I finally just said, "I'm going to do it."
And that was it. I had made a commitment, publicly, about this thing I was going to do.
The Year of Running
All that was left was to finalize each of the runs, and then train. And by train, I mean run. A lot. So much running.
I ended up running 13 half marathons in 364 days, bookending the feat with the Half Marathon in Desert Hot Springs in December of 2013 and 2014.
In all, I ran in the following cities (some still have my results online!):
- Desert Hot Springs (twice!) in December (2013, 2014)
- Carlsbad in January
- Palm Springs in February
- Zion in March
- La Jolla in April
- Menifee in May
- Rock n Roll in San Diego in June
- Oceanside in July
- San Diego (AFC) in August
- Ventura in September
- San Luis Obispo (SLO) in October
- Santa Barbara in November
During that year I ran roughly 1000 miles training, and 170.3 miles for the actual runs.
The Reality of the Challenge
I have never been so tired in all of my life as I was that year, but I look back on it and it was really fun.
At the beginning of the year, I had an idea that I would get better and faster at running. That didn't happen1 for a variety of reasons, but mostly because it wasn't fun. What was fun was going to different places with my family where the races were being held and hanging out with them. I still have fond memories of being in Ventura and going to a thrift store with my wife and daughter and finding a pair of roller skates that fit my daughter perfectly.
The Memorable Moments
I remember the kitschy B&B in Santa Barbara where my wife and I stayed and walking around Santa Barbara and finding this cool co-op style building with lots of vendors for getting food, drinks, or artisanal handcrafted stuff.
I also remember running the La Jolla half with a low-grade fever and realizing exactly how bad of an idea that was. Also, that hill at mile five on that course was absolutely brutal!
The Why of It All
In looking back on this, I don't really know why I did it other than the hubris of thinking I could, and then telling someone I was going to.
The hardest stretch was the runs in the second quarter. The first one (La Jolla) was the last weekend in April, the Menifee one was in the middle of May, and the Rock n Roll in San Diego was the first week of June. I ran three half marathons in five weeks. I still look back on that and think it was the point that broke me.
The Challenges
I really did want to give up more times than I can remember, but because I had said I was going to do a thing, I was going to do it no matter what.
There was the nerve-wracking part where I was also going to do a run-a-mile every day between Thanksgiving and New Year's, and then on the first run, I twisted my ankle so my adventure almost didn't even start at all!
The Lessons Learned
I look back on this experience and remember that yes, I can do hard things. Yes, they are worth it, but not always for the reasons that you think they will be.
Telling someone you're going to do something hard can help push you forward and keep you accountable, even just to yourself.
Looking Forward
Would I ever do something like this again? Maybe if I was 10 years younger! In all seriousness, I think I would IF I went into it with a bit of a different headspace. When I started this challenge in 2013, it was with the piss and vinegar of a young person who was sure they could conquer the world.
If I did it this time, I would be more mindful. I would try to enjoy the practice of running. I would enjoy the destinations I was going to get to run in. I would share these joys more with my family.
The Support System
Doing things like this are never done alone. I think that was the thing I learned most about this. During that year, there were some sacrifices made that I didn't realize at all. My wife and daughter did a really good job of supporting me and my decision, but it did put some strain on family life.
Work-Life Balance
Something else it taught me, ironically, was a bit of work-life balance. I was the manager for a technical team at the time. We had an upgrade that was set to happen the weekend before my Menifee run in May. Due to an issue with a third-party vendor for that application, we had to push back the upgrade... I had to decide to push back the upgrade which meant it would happen the weekend of my run.
As I was working towards making the decision, my boss and my team all knew what I was trying to do, and they supported not only the decision to push back the upgrade but also encouraged me to go do the run. They told me that they could handle the upgrade without me, and they did.
The Hard Lessons
That Menifee run was also where I discovered, for the first time, exactly how bad dehydration can make you feel. Not an experience I recommend, and not one I ever hope to repeat. There are still parts of Old Town Temecula that make me feel a bit queasy when I visit them!
The Final Reflection
Overall, this was a great experience, and I learned a lot about myself. But I also learned a lot about my friends, family, and coworkers as well.
Would I do it again ... maybe. Would I like to run at least one of those half marathons again? Absolutely. I just need to get back into running shape!
- just take a look at my available results above via the links! ↩︎
Year in Review 2024
I did my first Year in Review last year and have decided to carry on the tradition to make sure I know what I did!
I've written about themes before, so I won't go over it again here. Below is a high level of what my 2024 themes were
- Winter of Learning
- Spring of Transition
- Summer of Writing
- Fall of Mindfulness
Overall my themes were pretty successful. I do wish I had been a bit more mindful, and am now left to wonder if I shouldn't have gone with Autumn of Mindfulness instead of Fall of Mindfulness, because I seem to have taken a step back on some of my hopes for mindfulness 😄
Professional
Last year I said
In the moment it can feel like I don't really get anything done at work
I've felt this way pretty much every year for probably since I first became a manager, but I'm starting to embrace it a bit more as I get older I guess.
For some context, in 2024 I worked 2235 hours with the following breakdown:
| Category | Hours | Percentage |
|---|---|---|
| Administration | 1193.5 | 53.4 |
| Meetings | 838.1 | 37.5 |
| Coding | 93.5 | 4.2 |
| Conference | 55.5 | 2.39 |
| Commuting | 54 | 2.42 |
There were a couple of highlights from work this year though that I wanted to call out
I celebrated 16 years with my current employer which means that my career is now old enough to drive in the US!
My team finally was able to migrate our SQL Database version control from Subversion to Git. I wrote about the migration to git last year in my year in review and this was the last project that needed to be migrated over.
There are still some things to do to help with the migration to make it easier for the teams that work with this project, but the first couple of steps have been completed which is nice.
One of the big things I wanted to focus on was the validation issues that my company had with transmissions of claims data.
Working with a couple of smart and dedicated people we were able to do some pretty amazing things.
One thing to keep in mind with the validation errors is that they have to be corrected, by a person, in order to allow the claims to be transmitted to the Health Plans (which is a major goal of my company)
At the start of the year, the validation error rate for Institutional Claims was 13.7% while the rate for Professional Claims was 8.7%
By the end of the year those rates were down to 1.1% for Institutional Claims and 0.3% for Professional Claims. This represents decreases for 89% and 96.4% respectively.
I'm really proud of what the team was able to accomplish.
Personal
Health
I usually like to run or walk to keep my cardio health up, but I seemed to keep running into one injury or another with my knees, feet, ankles ... whatever. In July I decided to give swimming a try.
Since July 15 I've swum 83,650 yards / 76489.56 meters ... which is 47.5 miles. This absolutely blows my mind because my first swim was only 200 yards, lasted about 10 minutes and I thought I was going to die.
I'm now consistently swimming 3 days a week for about 55 minutes and 2000 yards / 1828.8 meters.
At about the same time I really doubled down on starting a meditation practice. I tend to do about 20 minutes of meditation each day. In 2024 I had 54 hours of meditation.
I wish I could split up my walking and running statistics, but Apple doesn't think these are different and so they are combined in all of the health apps! My combined Walking+Running stats came in at 1015 miles which looks like a lot, but is down significantly from my high in 2019 of nearly 2000 miles. It's also the lowest annual total by far since 2015 (my first full year of tracking)
I think I know what I'll need to focus on in 2025!
Writing
In June I started a writing group with Mario Munuz and Trey Hunner and that helped to keep me motivated and accountable for writing. I didn't write nearly as much as I hoped, but I was able to get out 18 articles. This is the most since 2021 when I wrote 23, but about 1/3 of my high mark in 2018 when I somehow was able to write 44 articles!
Open Source
This year I expanded the role I had in the Django community and I'm really pleased with that.
I started the year off as a Navigator for the amazing Djangonaut.Space program in Session 1, and was able to fill that same role in Session 2.
I joined the Django Commons admin group with Daniel, Lacey, Storm, and Tim. We've been able to onboard 6 libraries!
I also gave a talk at Django Con US in Durham titled Error Culture. As always, my time at DjangoCon US was a blast and I'm looking forward to seeing everyone in 2025 in Chicago!
I also ran for the Django Steering Council. I wasn't successful in making it into the Steering Council, but the five folks that did are all amazing humans and I'm looking forward to the work that they'll do over the course of the 6.x series.
I've also really enjoyed Jeff Triplett's Office Hours. I don't do nearly enough open source work during those office hours, but it's nice to see people and listen in on, and participate in, some great conversations. I'm looking forward to doing this again in 2025
I've also been trying to attend the DSF Office hours hosted by Jacob Kaplan-Moss and Thibaud Colas. These calls are really interesting and allow a bit of a peek into the DSF Board and what's being worked on. Again, I'm excited about attending these in 2025 as well.
Sports Fandom
I post on social media a lot about Hockey. Specifically the local team near my home, the Coachella Valley Firebirds.
They made it to the Calder Cup Finals again this year. And again they played the Hershey Bears. I wrote about the 2022-23 season, and the Calder Cup finals and the heart break associated with losing in Overtime in Game 7 of a championship. I wish I could say that they were able to redeem themselves, but the outcome was the same ... but losing in 6 games instead of 7. That being said, it wasn't nearly as painful this time around.
In all, I went to nearly 50 Firbirds Hockey games (a few on the road, but most at home) and can't really believe it. Watching Hockey live is a lot of fun!
One of the highlights of the off season was running into a few of the players at a local sandwich shop and getting to chat with the captain Max McCormick. I tried to 'be cool', and I think I might have mostly succeeded, but it was a pretty surreal experience.
I also had the luck to get tickets to a game at Crypto.com arena to see the LA Kings play the Seattle Kraken (which is the NHL affiliate of the Firebirds). It was an awesome game to watch due to many of the players for the Kraken being former Firebirds.
The Kraken ended up losing the game 3-2 but it was still a great time.
Finally, the BIG sports win this year was the Dodgers winning their first Full Season World Series since 1988. Because of life I didn't get to watch as many games of the World Series as I would have liked, but I did get to watch game 5 and that made up the missing game 1 ... I think.
Miscellaneous
Music
I got to see a few Concerts in the Park which is always fun. It's free, and typically a pretty nice evening on some cool grass with a stunning view of the sunset over Mt San Jacinto.
I also got to see Weezer and had a good time hanging out with my daughter.
Finally I rediscovered the amazing music of The Tragically Hip from a toot by Greg Wilson and it's brought me a lot of joy to listen to them again. Phantom Power is my favorite album of theirs with so many good songs. Bobcaygeon is probably my favorite on the album, but it can change depending on my mood.
Empty Nesting
As I wrote about here my daughter graduated from High School and started College in the fall. This has been a big change for my wife, Emily, and I. Our daughter is pretty close by so we can visit easily, but we've tried to give her the space she needs to adjust to college life. It's been pretty successful, but it's still a weird experience to walk past her room and not see her.
Home Garden
I've been posting pictures of my lemon tree on Mastodon over the last year. In November I was finally able to harvest about 30 or 35 lemons. The great thing about a lemon tree is obviously all of the lemons. But the hard thing about all of the lemons is trying to figure out what to do with them.
Emily found a great recipe for Lemon & Chili infused Olive Oil so we used that recipe to make about 12 bottles of our own custom olive oil and about 15 cups of Lemonade. These made some pretty amazing Christmas gifts.
Reading
Looking back at my reading for 2024 and I didn't do nearly as much as I would have liked, or think that I should have.
I was able to make it about 8 Chapters into Software Design by Example. It's a great book, but it's definitely not something you just breeze through.
I was able to finish up Practices of the Python Pro. I found it to be a pretty comprehensive book. I'm not much of a book reviewer so I won't bother writing one here. I got value out of reading it, and I think others will as well.
What I am really missing from my reading list for 2024 is fiction. Like any fiction at all. It doesn't look like I read anything that wasn't technical so I'll be trying to focus on fixing that in 2025
Wrap up
Overall 2024 was a pretty good year for me. There were some things that I wasn't and am still not excited about, but I have decided to try and make things better where I can, stand up for what I believe is right, and just keep on trying to be kind and make the world a better place in the ways that I can.
Weezer Live
I started college in 1996. In 1997 one of the most influential albums of my early adulthood was introduced to me ... Weezer's Pinkerton.
I hated it.
I wanted the Blue Album again but different somehow, and Pinkerton was NOT it.
However, a weird thing happened. Once I moved into my Sophomore apartment with a roommate that I can only describe as 'hard to live with' I retreeated into two things:
- Final Fantasy VII
- Music
Final Fantasy VII is a whole blog post on it's own, so I won't try to cover it here, but music ... and specifically Weezer were instrumental to me surviving my 'hard to live with' roommate.
Listening to too much Weezer
I probably listened to Pinkerton 1000 times (no exaggeration) over my time in college (this was not so hard because it's only a 35 minute album!)
I loved that album, and listening to it STILL brings me back to living in a small, shitty apartment in San Luis Obispo with a 'hard to live with' roommate.
I saw Weezer live in March of 2001 at RIMAC in La Jolla at UCSD1. I still remember the show. Lots of hipster Weezer fans in their skinny jeans, nerd glasses, and a lot of earnestly trying really hard trying to not try to be 'cool'. I was (still am) a bigger guy that can't fit into Skinny jeans to save my life, so this wasn't really my scene, but I really wanted to see Weezer and I didn't want to care about the hipsters.
I also remember needing to be back in San Luis Obispo the next day for work or school or something. So after the show was done at midnight I got in my car and drove the roughly 4 hours back to San Luis Obsipo so I can do whatever I needed to do the 'next' day. It was a long day, but it was awesome. I got to see Weezer.
And for me, that's kind of where Weezer stopped making music. A few months later Weezer released the Green Album and I tried really hard to like it. I did that with Maladroit as well, but meh. Once Matt Sharp left it wasn't Weezer to me anymore2.
Life has a way of happening while you're making other plans
After that life got in the way and my musical tastes changed ... but I still really liked the "real" Weezer.
One of the things I really liked doing with my daughter was driving her to her Dance class. We'd each pick an album we thought (hoped) the other would like and listen to it on the drive out.
Of course, I picked Pinkerton at one point and the Blue Album and she thought they were fine. Ugh, I guess fine is better than I don't like it, but still.
Fast forward to October 10th 2024 and Weezer is playing live, in an arena, not even 15 minutes from my house. I bought tickets for me and my daughter and it was pretty surreal. If you would have told me in 2001 at the Weezer concert that I'd see them again in 2024 with my adult daughter I wouldn't have believed you, but I would have thought it was a pretty cool dream to have 😄
The openers were Dinosaur Jr. and The Flaming Lips. I don't have much to say about Dinosaur Jr, but the Flaming Lips put on a great show. Lots of visual interest and excitement.
Then Weezer came on. And the show was amazing. Again, lots of great visuals and set design. One of my favorite was 'Island in the Sun' which had a Giant star in the background of a tropical looking island with a palm tree on it.
Again, the set design and visual aspects of the show were on point.
The only thing that wasn't great was the sound. If I listed to Pinkerton 1000 times, I listened to the Blue album at least 500 times. And the concert was meant to be a 30th anniversary of the Blue Album where they played it in order. And I have to say, for the first 5 - 10 seconds of each song I wasn't sure what song was being played ... it was a bit disappointing.
That being said, getting to see Weezer, with my daughter, was a pretty epic parenting level unlocked style achievement. I'm glad I got to go with her, even if the sounds was a bit muffled for my tastes.
Looking forward to the next concert!
- now called Liontree Arena ↩︎
- Yes, I've seen the SNL skit. Yes, I totally identify with Matt Damon's character! ↩︎
DjangoCon US 2024
DjangoCon US 2024
I was able to attend DCUS 2024 this year in Durham from September 22 - September 27, and just like in 2023, it was an amazing experience.
I gave another talk (hooray!) and got to hang out with some truly amazing people, many of whom I call my friends.
I was fortunate in that my talk was on Monday morning, so as soon as my talk was done, I could focus on the conference and less on being nervous about my talk!
One thing I took advantage of this year, that I didn't in previous years, was the 'Hallway Track'. I really enjoyed that time on Monday afternoon to decompress with some of the other speakers in the lobby.
One of the talks that I was able to watch since the conference was Troubleshooting is a Lifestyle 😎 which had this great note: Asking for help is not a sign of failure - it's a strategy.
I am bummed that I missed a few talks live (Product 101 for Techies and Tech Teams, Passkeys: Your password-free future, and Django: the web framework that changed my life) but I will go back and watch them in the next several days and I'm really looking forward to that.
There is a great playlist of ALL of the talks from this year (and previous years) that I highly recommend you search through and watch!
A few others have written about their experiences (Mario Munoz and Will Vincent) and you should totally read those. Some of the
The Food
DCUS via the culinary experience!
Durham has some of the best food and I would go back again JUST for the food. Some of my highlights were
- Cheeni
- Thaiangle of Durham
- Queeny's
- Ponysaurus
- Cocoa Cinnamon
- Pizza Torro
- The conference venue food - fried chicken and peach cobbler were my favorite
The Sprints
During the sprints I was able to work on a few tickets for DjangoPackages12 and get some clarification on a Django doc3 ticket that's I've been wanting to work on for a while now.
The after party in Palm Springs
I left Durham very early on Saturday morning to head back home to Southern California. Leaving a great conference like DjangoCon US can be hard as Kojo has written about.
One upside for me was knowing that a few people from the conference were road tripping out to California and they were going to stop and visit! The following week I had a great dinner with Thibaud, Sage, and Storm at Tac/Quila
Here's a toot on Mastodon with a picture of the 4 of us after dinner
Looking Forward
I just feel so much more clam after the conference, and am super happy.
I'm looking forward to my involvement in the Django Community until the next DjangoCon I'm able to attend4. Some things specifically are:
- Working on Django tickets
- Admin work with Django Commons with Tim, Lacey, Daniel, and Storm
- Working on Django Packages with Jeff and Maksudul
- Djangonaut Space (if and when they need a navigator but just hanging out in the discord is pretty awesome too!)
I'm so grateful for the friends and community that Django has given to me. I'm really hoping to be able to pay it forward with my involvement over the next year until I have a chance to see all of these amazing people in person again
Summer of Writing
In keeping with my themes for 2024 this summer was to be 'The Summer of Writing'.
This theme didn't have a specific post or word count, but I knew I wanted to write more1.
I had a few things I needed to do to get this started. One of them included starting a writing cohort. I wasn't sure how I would do that but it turns out in early June Lacey was having similar thoughts. Mario and Trey had some interest as well and so we formed a writing group!
We meet every Wednesday (more or less) for about an hour.
I had really hoped that the forming the cohort would give me the encouragement and accountability I needed ... and it HAS!
But I also quickly realized that all I had calendared (really) was the Wednesday writing session, and so I set out to have a 30 minute daily writing session on my own.
Life has a way of kicking you in the ass though when you least expect it.
Roughly 10 days into my 'Summer of Writing' a work thing came up and kind of consumed all of my thought and energy. I realized quickly that something had to give, and so I looked ahead at my Autumn theme and borrowed from it a bit, while still keeping the spirit of trying to write.
The next theme was going to be 'The Autumn of Mindfulness' which included starting a meditation practice so I dove into that. I also decided that I needed to try to find something to do from a physical activity perspective. I live in the desert of southern california so the summers are brutal ( daily highs that can average 110F+) and being outside isn't something I really like, even in the early morning, before the sunrise, the temps can be mid to high 80s ... sometimes even the low 90s.
I decided that I would pick up swimming and going to the gym to help alleviate some of the stress from work.
That, in addition to the writing, seemed to be a good thing to work on.
During my Summer of Writing I only wrote 5 posts (including this one)
- Summer of Writing
- SSH Keys
- How to ask a question without sounding like a jerk (mentioned in the Django News Newsletter #248)
- Reflections on Djangonaut Space Session 2 (lots of love on socials)
- Mentors (mentioned in Django News Newsletter #251)
The articles had a total of 5237 words and so, from the perspective of writing, I managed to do some writing, but it wasn't really anymore than what I had done during the Spring of Transition where I wrote 4 articles with 3890
- Spring of Transition
- Using justpath to go on a pyrrhic adventure to clean up my PATH
- Trying out pyenv ... again
- Winter of Learning
However, the ability to transition from one idea to another is something that CGP Grey talks about in his themes and so I don't feel too badly about it ... especially because the meditation and swimming have really been something I'm very proud of.
My meditation practice includes a 20 minute daily session first thing in the morning to help clear my mind for the day.
My swimming routine consists of swimming 3 days a week. When I started I could barely do a 20 minute swim. Just before DjangoCon US I swam 1800 yards in 54 minutes and for the most part didn't stop for a break. If you would have told me that in early July when I started I would not have believed you.
In a weird way the meditation and swimming kind of helped with the writing because it allowed me to stop thinking, which then allowed room for deeper thinking about my writing.
The stress of work has alleviated a bit and so I'm hoping that after DjangoCon US I'll be able to dedicate about 15 minutes a day to writing to start, and then ramp up to 30 minutes (similar to what I did with the swimming) and continue to swim and meditate.
One thing that I've found very helpful is to just add a little bit of a good habit and remove a bit of a bad habit. Sooner or later the bad habit is gone and replaced with the new good habit.
In the Autumn of mindfulness, which I will still try to do, I'll focus on eating right (I kind of eat like a 7 year old whose parents left the pantry stocked with a ton of junk food and then left for the weekend) so I'm going to work to get that under control.
All in all, it's been a successful summer of writing, even if it wasn't what I initially envisioned. But that's OK, and part of life.
As Mark Twain said, "Life is what happens when you're busy making other plans."2
Mentors
Having just finished up my second round of Djangonaut.Space (which I wrote about here) I wanted to write a bit about mentors ... how to find one, how to work with one, and how to be one.
Finding a Mentor
One of the best ways to find a mentor is through a program like Djangonaut Space. You're put into a cohort of other Django / Python programmers with a Captain and a Navigator. A program like this offers up ready made mentors in the form of the Captains and Navigators. Even your fellow participants can act as mentors.
The thing about a mentor, and finding one, is that what you're looking for isn't ONE mentor ... you're looking for a mentor in a specific aspect of life, whether personal or professional. In Djangonaut.Space you'll get a couple of mentors in Python / Django, but you may also find that you get a mentor who helps with thinking about / dealing with / finding developer jobs.
Working with a Mentor
Working with a mentor isn't just showing up and hoping that all of their knowledge in the specific aspect of life you're looking to be mentored on will suddenly flow from them to you like a fountain. You need to do a bit of homework too!
Mentors can provide lots of guidance, but like any guide, you kind of need to know where you're going ... even if it's just a vague direction. Having a goal of
I want to be a programmer
is a bit vague and difficult to help on. A mentor can provide some guidance for that, like
Try Python
but a goal like,
I want to learn programming to help automate some of these things
will definitely lead to more focused advice. Now the mentor can say,
That's great! Check out this book, these blogs, and follow this YouTuber ... also, here are 10 people you might find interesting on Mastodon (or your preferred Social Media platform of choice)
When working with a mentor they might provide open ended advice or guidance and expect that you'll have done something with it. Going back to the previous example, if a mentor offers the advice of Books, Blogs, YouTubers, etc at your next interaction they might ask, "So did you have a chance to check out any of those things".
If your answer is no, that's not the end of the world, but it might signal to the mentor that you're not ready for the mentor/mentee relationship. If your answer is a bit more defined, like "No, work and family have really been crazy, but I've set aside 2 hours this weekend to really check them out" will help the mentor know that you're going to actively try and work on the suggestions made.
Something to keep in mind is that this is a relationship with the mentor. They will try and provide helpful tips and guidance to you, and in return they expect that you'll be acting on those tips or guidance. If you're not willing or able to do that ... that's OK, but maybe this isn't the best time for your mentor relationship to start
How to be a mentor
Going back to my comment above, being a mentor isn't about being the ONLY mentor for a person, but a mentor for that person for a specific thing (or set of things) to help them grow. And that's really the point of mentoring. You want to help someone with their growth so that they can get better at a thing. This will have the strange effect of making you better at that thing as well.
It's easy enough to wave your hands when you're thinking about why something works the way it does, but if you're mentoring someone and they ask you a question you don't know, you are going to do yourself a great service by helping to explain and get them to understand the concept as well.
For example, something that really breaks my brain is mocking. It's just never really stuck with me and every time I need to mock something I'm basically learning it over again. If I had a mentee and they asked about mocking I'd probably get a deer-in-the-headlights sort of look and then say,
You know, it's something I struggle with, but let me write down some thoughts and my understanding on it and talk about it next time.
And, here's the key, next time you meet with them talk through what you learned (again) and show them how you learned it. What docs did you reference? What applications of mocking did you try? How did you try and figure it out?
I think so much of problem solving is learning how to learn. Honestly, if you can be presented with a problem and are able to come up with a solution without much thought then you may not understand the problem as well as you think. You might just be applying a previous solution to the current problem .. essentially trying to make a square peg try to fit in a round hole.
But with mentoring you can help people learn how you learned and to guide them on their journey to discovering things.
Something super important to remember is that it's their journey, not yours.
One thing I do, probably too much, is tell stories to try and get people to understand and remember how things work. I find that stories really work for my brain and help me to retain details that are important, or help to remind me of the ways in which problems were solved.
Honestly, every time someone comes to me with a new problem that I've never seen before my imposter syndrome kicks in like nobody's business! I beat myself up for how stupid I am that I can't solve this problem that I've never seen before.
But slowly, as I work through the problem, I start to see connections to other problems that I've solved. Not the same problem, but similar problems. This helps to get me to a solution ... but short walks help too ... and a good night's sleep.
And this is a prime opportunity for you to take what you've learned, how you've learned it and help a mentee with finding an approach that helps them in similar situations.
As a mentor, you don't need to be a WORLD EXPERT, you just need to be an expert on that one thing in comparison to the mentee. I once heard that an expert is just the person in the room who knows more about a topic than anyone else in that room. You don't need to be a Django Expert at DjangoCon to be a Django Expert at work when trying to introduce Django to developers that haven't seen it before.
Wrap up
Finding opportunities to be mentored can be hard, but a potential good place to start are programs like Djangonaut.Space and similar programs. Other places can be contributing to OSS projects1
Being a mentor doesn't mean you need to be a world expert, you just need to help one person find resources to help move them along in their journey. If you can do that, then I'd call you a pretty successful mentor!
- There are some caveats here, like an open and welcoming community ↩︎
Reflections on Djangonaut Space Session 2
A few weeks ago I completed my second session as a Djangonaut.Space Navigator. The Djangonaut.Space program is an opportunity for people to be introduced to contributing to Django and Django adjacent projects.
In this most recent session I was a Navigator for Team Mars with a fantastic Captain Tobe. Our Djangonauts were Andy, Maryam, and Rosana.
Among the 3 of them they took on 7 tickets, pushed 7 PRs and closed 5 tickets.
As part of the program we would meet weekly to talk about any blockers and try and work through them. These meetings also provided a platform to encourage one another.
One week we spoke about being a professional software developer working with Django which was a great conversation.
I really like this program for what it offers both the Djangonauts, and the mentors. I learned so much as part of this program.
As we were coordinating our first meeting I realized that the rest of my team were in time zones that were 7 - 8 hours ahead of mine! I was a bit worried initially that we'd have a hard time finding a common time to meet, but we settled on Wednesdays at noon and this turned out to be pretty perfect for all of us.
Each of our team meetings was similar to a standup where we'd talk about what work had been done the previous week, and any struggles that we were having. The djangonauts on team Mars were absolute Rock Stars. They picked up some pretty gnarly 1 issues and worked them to completion each time.
Working on a project like Django can be daunting and scary and time consuming. However, the amount that you can learn from working on a large project and code base like this is immeasurable.
Working to form a consensus on an issue or idea, whether it's code or documentation, can be challenging! But as Maryam said in her blog post about her experience with picking up a documentation ticket
To start safely, I picked a documentation change ticket just to get myself familiar with the process. One of my tickets involved updating some wordings in the documentation to make it easier for people to differentiate when a pull request needed a Trac ticket or not. Initially, I thought this would be a simple wording change. However, I soon realised that making changes to Django documentation itself requires a lot of thought and consideration.
This experience reminded me of my early days as a Django user. I loved Django for its documentation - detailed, thoughtful, well-organised, and easy to follow. Now, working on documentation changes as a contributor has shown me how Django achieves such clarity. Significant thought and effort go into making it clear and readable, minimising confusion and maximising understanding for readers.
If you don't know this going in then you can be disappointed or disillusioned with how long something might take to be accepted, or whatever, but a program like Djangonaut Space does, I think, help to ease newcomers into contributing and setting realistic expectations and, in general, enjoying the process.
One thing I tried to really emphasize with my team was that it won't be easy, and it will take some time, but that the effort will pay off with a ticket that has been closed ... and in the worst case you've helped to move it forward.
Another point I tried to keep front and center was the idea that this is a volunteer role and that if you're not having fun it's OK to take a step back. I think we need to hear that more and more, especially given the stress that many developers can be under for their $dayJobs.
I hope that this advice helped them in navigating the tickets that they worked. I also hope it helped to put into perspective what they were doing from a time commitment perspective.
One thing that I really love about the Django community in general, and the Djangonaut.Space community in particular, is how welcoming they are. The community strives to welcome you to be part of it.
BUT even with the welcoming nature, it can still be very hard to pick that first ticket, submit that first PR, and receive that first bit of feedback.
A program like Djangonaut.Space really helps to get people more comfortable with the process of picking and working on a ticket. It also helps to develop long term contributors to the project ... which is amazing.
I'm looking forward to the next time I'll be able to participate and would encourage anyone to get involved, either as a participant, or as a mentor.
How to ask why without sounding like a jerk
As technical folks working with non-technical folks sometimes the asks that come through are unclear. In order to get clarity on these we want to ask questions to get clarification on the ask, but it can be challenging to not sound like a jerk when we ask. This can happen even IF we do our best to come across in a positive way.
When trying to ask for more details on a project or request I find it's usually best to get to the source of the issue. I like to ask, "What problem are we trying to solve here?" or something similar.
This helps to put you and the requester on 'the same team' trying to 'solve the problem' and not in a potentially negative 'why are you asking me this stupid question' sort of light.
I can't say that I have 'one weird trick' that will always make this not a problem, but recently at my $dayJob I had an experience that might be helpful in seeing how to navigate this particular process.
The problem
I received an email that went something like this
Please see below. It seems that delivery of paper reports via courrier could be automated by sending them to a portal. What are your thoughts?
My initial thought was, "Yes, if we could automate these reports and send them electronically to a portal that would be more efficient."
However, there are some deeper questions here that need to be asked ... like:
- Why are we sending these reports in the first place?
Just asking this question though puts us into a potential state of conflict, i.e. it's similar to sounding like you're asking, "why would you do this stupid thing". In order to avoid this I reframed the question into 3 deeper questions that tried to frame 'the problem' and put me and the requester 'on the same team' to 'solve the problem'
- What are the reports?
- What are the recipients of the reports supposed to do with them?
- Do the recipients of the reports find them helpful, or do they just put them in the shred bin?
My first response to the sender was
Ideally any reports that are being delivered on printed paper by courrier would be better served to be delivered via some electronic means. Can you tell me, what are these reports and who are the intended recpients?
I wanted to explicitly ask who the intended recipients were (I work in Healthcare and these reports are 'for the doctors' but they might actually be getting delivered to an office manager, a front desk person, or anyone other than the doctor).
The sender responded back
They are reports that show a key metric for outstanding work left to do for a specific population of their membership. Each doctor (or their office) are free to do, or not do, anything with the information in these reports.
Next I asked if the recipients had been surveyed on the usefulness of the reports and that's when the sender indicated:
Actually, no. It's something that we need to do so that we can potentially consilidate reports and/or eliminate unhelpful reports.
The Solution
At the end we decided that before anywork was done to 'automate' the delivery of these reports, that we really needed to address the contents of the reports and determine which parts of them were helpful, and what parts weren't. Once we have a single report, or potentially a suite of reports, the automation and delivery work could actually start.
By working through and trying to determine the actual problem that needed to be solved by asking questions to help both me and the requester better understand what the real ask was, we saved a ton of development time and have a better path forward for making the information we have more relevant and actionable by the doctors' offices.
Will this work in every situation? Maybe not, but I believe it's a good starting point when trying to solve 'real world' problems in a work setting.
Tech folks have a (sometimes deserved) bad wrap, but we can shed this negative impression by showing the people that request solutions from us that we're both working towards the same goal of solving the problem.
Spring of Transition
I've written before about the Theme's that CGP Grey has discussed and I think they're great! I've just recently completed my 'Spring of Transition'.
So what is the Spring of Transition? For me it meant focusing on that last bit of time that my daughter will be living with me and my wife full time.
She just graduated from High School and is getting ready to go off to college in the Fall. I've taken the last quarter to really try and focus on spending quality time with her, and enjoy the last bits of her living here with me and my wife.
One of the things I am eternally grateful for is that when my daughter was a baby/toddler I started a WordPress blog to keep track of all of the adventures we got into. This was 2008 - 2010 and while Facebook was kind of a thing, Instragram was NOT a thing. I used this blog to post pictures with a fun caption of the context of the picture. I would also write a monthly letter to her and recap what fun adventures we had, or what changes I had noticed.
I did this for a couple of years, but then life got in the way and the changes that she was going through were harder and harder to see, and capture, with a camera. This made it very hard to write about as well.
I ended up taking down my site, but I kept a backup of the WordPress XML just in case1 I would want to use it again.
At one point I stumbled upon a journalling app called Day One that I used to journal. I used it for a couple of years and then found a feature that allowed me to import my WordPress blog data.
I played around with this a bit and finally made the plunge to import the data. It may be the best decision I've ever made with respect to tech.
Over the last several years I focused on trying to journal every day. One of the grear features of Day One is 'On This Day'. After I journal I'll click on that tab and look back at what I've written "On This Day".
The best entries are from the blog. Small reminders of the toddler my (now) adult daughter was.
This has been especially great over the last 3 months as she has wrapped up High School and prepared for College. It's really allowed me to focus on the great times we had, and work to create some awesome new memories.
We didn't do anything exotic, or visit any far off places during this 'Spring of Transition' ... there's already sooooo much to be done at the end of a High School career!
But, I have tried to focus on the things that we do like to do.
We have watched a bunch of Star Wars:
We've also tried to watch the Battle Star Galactica TV show from the early 2000s. This didn't go well.
Another thing that we've been doing is trying to cook meals together. My daughter is a vegetarian, and my wife and I are not, so this makes dinner (and other meals) challenging.
To over come this she found several vegetarian dishes that she thought I would like and we've made them together for dinner. It's been a real treat to see what she thinks of some of these recipes, which are mostly Thai and Vietnamese meals which is not something she would typically eat (she's really big into the various combinations of cheese and starch, i.e. Grilled Cheese Sandwiches, Quesadillas, and Cheese Pizza 😊
We've also been trying really hard to get take out from a Thai place that has many vegetarian options, but haven't been able to make it work just yet. This looks to be something that we'll hopefully be able to do over the summer before she leaves for school.
I think the hardest part about all of this has been knowing that each of the things that she's done will be the last. She had her last dance recital (I've been watching her dance for 15 years). She had her last Girl Scout meeting. She had her last High School class.
Soon she'll have her last night sleeping here before she goes to school.
Obviously I always knew this day would come, but I didn't really think it would get here so quickly. The days are long, but the years are short. I never really understood what that meant until these last few months.
There is now this full grown adult living in my home ... at least for the next few months. But just yesterday she was a silly toddler walking around the house claiming that the elves must have left her milk in the pantry!
I know that her leaving for college isn't the last time I'll ever see her. I mean, she'll still have a room at our house, so she'll want to come back at some point, right? Right?
And it's not like she's going to school on the other side of the country. It's just a short 2 hour drive away. But still ... it won't be the same.
It's just all so different. My wife and I are planning to be empty nesters. Like, what does that even mean? For the last 19 years our daughter has been a part of, and influenced, the lives that we've lead.
I'm also a little nervous about my 'little girl'2 going away into the big bad world. I know I shouldn't be though. She is the most thoughtful, capable, intelligent, caring, hard working person I've ever met in my life.
I know she's going to do great in her next chapter.
I just didn't realize that next chapter would come so soon.
Page 2 / 7