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

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:

  1. Final Fantasy VII
  2. 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!

  1. now called Liontree Arena ↩︎
  2. Yes, I've seen the SNL skit. Yes, I totally identify with Matt Damon's character! ↩︎

uv and pip

On Sunday November 3 I posted this to Mastodon:

I've somehow managed to get Python on my macbook to not install packages into the virtual environment I've activated and I'm honestly not sure how to fix this.

Has anyone else ever run into this problem? If so, any pointers on how to fix it?

I got lots of helpful replies and with those replies I was able to determine what the issue was and 'fix' it.

A timeline of events

I was working on updating a library of mine and because it had been a while since it had been worked on, I had to git clone it locally. When I did that I then set out to try uv for the virtual environment management.

This worked well (and was lightning FAST) and I was hacking away at the update I wanted to do.

Then I had a call with my daughter to review her upcoming schedule for the spring semester. When I got back to working on my library I kind of dove right in and started to get an error messages about the library not being installed

zsh: command not found: the-well-maintained-test

So I tried to install it (though I was 100% sure it was already there) and got this message

ERROR: Could not find an activated virtualenv (required).

I deleted the venv directory and started over again (using uv still) and ran into the same issue.

I restarted my Mac (at my day job I use Windows computers and this is just a natural reaction to do when something doesn't work the way I think it should1)

That didn't fix the issue 😢

I spent the next little while certain that in some way pipx or pyenv had jacked up my system, so I uninstalled them ... now you might ask why I thought this, and dear reader, I have no f$%&ing clue.

With those pesky helpers out of the way, pip still wasn't working the way I expected it to!

I then took to Mastodon and with this one response I saw what I needed

@ryancheley Are you running python -m pip install... Or just pip install...? If that's a venv created by uv, pip isn't installed I think, so 'pip install' might resolve to a pip in a different python installation

I went back to my terminal, and sure enough that was the issue. I haven't used uv enough to get a real sense of it, and when I was done talking with my daughter, my brain switched to Python programming, but it forgot that I had used uv to set everything up.

Lessons learned

This was a good lesson but I'm still unsure about a few things:

  1. How do I develop a cli using uv?
  2. Why did it seem that my cli testing worked fine right up until the call with my daughter, and now it seems that I can't develop cli's with uv?

I did write a TIL for this but I discovered that

uv venv venv

is not a full replacement for

python -m venv venv

Specifically uv does not include pip, which is what contributed to my issues. You can include pip by running this command though

uv venv venv --seed

Needless to say, with the help of some great people on the internet I got my issue resolved, but I did spend a good portion of Monday evening un-f$%&ing my MacBook Pro by reinstalling pyenv, and pipx2 ... and cleaning up my system Python for 3.12 and 3.13 ... turns out Homebrew REALLY doesn't want you to do anything with the system Python, even if you accidentally installed a bunch of cruft in there accidentally.

  1. Yes this is dumb, and yes I hate it ↩︎
  2. As of this writing I've uninstalled pipx because uv can replace it too. See Jeff Triplett's post uv does everything ↩︎

Migrating django-tailwind-cli to Django Commons

On Tuesday October 29 I worked with Oliver Andrich, Daniel Moran and Storm Heg to migrate Oliver's project django-tailwind-cli from Oliver's GitHub project to Django Commons.

This was the 5th library that has been migrated over, but the first one that I 'lead'. I was a bit nervous. The Django Commons docs are great and super helpful, but the first time you do something, it can be nerve wracking.

One thing that was super helpful was knowing that Daniel and Storm were there to help me out when any issues came up.

The first set up steps are pretty straight forward and we were able to get through them pretty quickly. Then we ran into an issue that none of us had seen previously.

django-tailwind-cli had initially set up GitHub Pages set up for the docs, but migrated to use Read the Docs. However, the GitHub pages were still set in the repo so when we tried to migrate them over we ran into an error. Apparently you can't remove GitHub pages using Terraform (the process that we use to manage the organization).

We spent a few minutes trying to parse the error, make some changes, and try again (and again) and we were able to finally successfully get the migration completed 🎉

Some other things that came up during the migration was a maintainer that was set in the front end, but not in the terraform file. Also, while I was making changes to the Terraform file locally I ran into an issue with an update that had been done in the GitHub UI on my branch which caused a conflict for me locally.

I've had to deal with this kind of thing before, but ... never with an audience! Trying to work through the issue was a bit stressful to say the least 😅

But, with the help of Daniel and Storm I was able to resolve the conflicts and get the code pushed up.

As of this writing we have 6 libraries that are part of the Django Commons organization and am really excited for the next time that I get to lead a migration. Who knows, at some point I might actually be able to do one on my own ... although our hope is that this can be automated much more ... so maybe that's what I can work on next

Working on a project like this has been really great. There are such great opportunities to learn various technologies (terraform, GitHub Actions, git) and getting to work with great collaborators.

What I'm hoping to be able to work on this coming weekend is1:

  1. Get a better understanding of Terraform and how to use it with GitHub
  2. Use Terraform to do something with GitHub Actions
  3. Try and create a merge conflict and then use the git cli, or Git Tower, or VS Code to resolve the merge conflict

For number 3 in particular I want to have more comfort for fixing those kinds of issues so that if / when they come up again I can resolve them.

  1. Now will I actually be able to 🤷🏻 ↩︎

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

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

  1. settings consolidaion ↩︎
  2. docs update ↩︎
  3. 27106 ↩︎
  4. I'm working really hard on DCEU but the timing may not work out ↩︎

Django Commons

First, what are "the commons"? The concept of "the commons" refers to resources that are shared and managed collectively by a community, rather than being owned privately or by the state. This idea has been applied to natural resources like air, water, and grazing land, but it has also expanded to include digital and cultural resources, such as open-source software, knowledge databases, and creative works.

As Organization Administrators of Django Commons, we're focusing on sustainability and stewardship as key aspects.

Asking for help is hard, but it can be done more easily in a safe environment. As we saw with the xz utils backdoor attack, maintainer burnout is real. And while there are several arguments about being part of a 'supply chain' if we can, as a community, offer up a place where maintainers can work together for the sustainability and support of their packages, Django community will be better off!

From the README of the membership repo in Django Commons

Django Commons is an organization dedicated to supporting the community's efforts to maintain packages. It seeks to improve the maintenance experience for all contributors; reducing the barrier to entry for new contributors and reducing overhead for existing maintainers.

OK, but what does this new organization get me as a maintainer? The (stretch) goal is that we'll be able to provide support to maintainers. Whether that's helping to identify best practices for packages (like requiring tests), or normalize the idea that maintainers can take a step back from their project and know that there will be others to help keep the project going. Being able to accomplish these two goals would be amazing ... but we want to do more!

In the long term we're hoping that we're able to do something to help provide compensation to maintainers, but as I said, that's a long term goal.

The project was spearheaded by Tim Schilling and he was able to get lots of interest from various folks in the Django Community. But I think one of the great aspects of this community project is the transparency that we're striving for. You can see here an example of a discussion, out in the open, as we try to define what we're doing, together. Also, while Tim spearheaded this effort, we're really all working as equals towards a common goal.

What we're building here is a sustainable infrastructure and community. This community will allow packages to have a good home, to allow people to be as active as they want to be, and also allow people to take a step back when they need to.

Too often in tech, and especially in OSS, maintainers / developers will work and work and work because the work they do is generally interesting, and has interesting problems to try and solve.

But this can have a downside that we've all seen .. burnout.

By providing a platform for maintainers to 'park' their projects, along with the necessary infrastructure to keep them active, the goal is to allow maintainers the opportunity to take a break if, or when, they need to. When they're ready to return, they can do so with renewed interest, with new contributors and maintainers who have helped create a more sustainable environment for the open-source project.

The idea for this project is very similar to, but different from, Jazz Band. Again, from the README

Django Commons and Jazzband have similar goals, to support community-maintained projects. There are two main differences. The first is that Django Commons leans into the GitHub paradigm and centers the organization as a whole within GitHub. This is a risk, given there's some vendor lock-in. However, the repositories are still cloned to several people's machines and the organization controls the keys to PyPI, not GitHub. If something were to occur, it's manageable.

The second is that Django Commons is built from the beginning to have more than one administrator. Jazzband has been working for a while to add additional roadies (administrators), but there hasn't been visible progress. Given the importance of several of these projects it's a major risk to the community at large to have a single point of failure in managing the projects. By being designed from the start to spread the responsibility, it becomes easier to allow people to step back and others to step up, making Django more sustainable and the community stronger.

One of the goals for Django Commons is to be very public about what's going on. We actively encourage use of the Discussions feature in GitHub and have several active conversations happening there now1 2 3

So far we've been able to migrate ~3~ 4 libraries4 5 6 7into Django Commons. Each one has been a great learning experience, not only for the library maintainers, but also for the Django Commons admins.

We're working to automate as much of the work as possible. Daniel Moran has done an amazing job of writing Terraform scripts to help in the automation process.

While there are still several manual steps, with each new library, we discover new opportunities for automation.

This is an exciting project to be a part of. If you're interested in joining us you have a couple of options

  1. Transfer your project into Django Commons
  2. Join as member and help contribute to one of the projects that's already in Django Commons

I'm looking forward to seeing you be part of this amazing community!

  1. How to approach existing libraries ↩︎
  2. Creating a maintainer-contributor feedback loop ↩︎
  3. DjangoCon US 2024 Maintainership Open pace ↩︎
  4. django-tasks-scheduler ↩︎
  5. django-typer ↩︎
  6. django-fsm-2 ↩︎
  7. django-debug-toolbar ↩︎

DjangoCon US 2024 Talk

At DjangoCon US 2023 I gave a talk, and wrote about my experience preparing for that talk

Well, I spoke again at DjangoCon US this year (2024) and had a similar, but wildly different experience in preparing for my talk.

Last year I lamented that I didn't really track my time (which is weird because I track my time for ALL sorts of things!).

This year, I did track my time and have a much better sense of how much time I prepared for the talk.

Another difference between each year is that in 2023 I gave a 45 minute talk, while this year my talk was 25 minutes.

I've heard that you need about 1 hour of prep time for each 1 minute of talk that you're going to give. That means that, on average, for a 25 minute talk I'd need about 25 hours of prep time.

My time tracking shows that I was a little short of that (19 hours) but my talk ended up being about 20 minutes, so it seems that maybe I was on track for that.

This year, as last year, my general prep technique was to:

  1. Give the presentation AND record it
  2. Watch the recording and make notes about what I needed to change
  3. Make the changes

I would typically do each step on a different day, though towards the end I would do steps 2 and 3 on the same day, and during the last week I would do all of the steps on the same day.

This flow really seems to help me get the most of out practicing my talk and getting a sense of its strengths and weaknesses.

One issue that came up a week before I was to leave for DjangoCon US is that my boss said I couldn't have anything directly related to my employer in the presentation. My initial drafts didn't have specifics, but the examples I used were too close for my comfort on that, so I ended up having to refactor that part of my talk.

Honestly, I think it came out better because of it. During my practice runs I felt like I was kind of dancing around topics, but once I removed them i felt freer to just kind of speak my mind.

Preparing and giving talks like these are truly a ton of work. Yes, you'll (most likely) be given a free ticket to the conference you're speaking at — but unless you're a seasoned public speaker you will have to practice a lot to give a great talk.

One thing I didn't mention in my prep time is that my talk was essentially just a rendition of my series of blog posts I started writing at DjangoCon US 2023 (Error Culture)

So when you add in the time it took for me to brainstorm those articles, write, and edit them, we're probably looking at another 5 - 7 hours of prep.

This puts me closer to the 25 hours of prep time for the 25 minute talk.

I've given 2 talks so far, and after each one I've said, 'Never again!'

It's been a few weeks since I gave my talk, and I have to say, I'm kind of looking forward to trying to give a talk again next year. Now, I just need to figure out what I would talk about that anyone would want to hear. 🤔

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)

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

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

  1. How much more? I don't really know ... just more ↩︎
  2. No he didn't. It was actually Allen Saunders in Reader's Digest in 1957, I just like to attribute everything to either Mark Twain or Abraham Lincoln ↩︎

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!

  1. 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.

  1. Tickets 13376, 35464 and 12203 ↩︎

Page 6 / 24