An Argument to Realign the AHL
What is the AHL
The AHL, or American Hockey League, is a hockey minor league based in the US and Canada. It's widely considered to be the step right below the NHL which is the top Hockey League in North America.
There are 32 teams in the AHL, and 23 of them make the playoffs. The teams play for the Calder Cup.
What are the Calder Cup Playoffs?
The Calder Cup Playoffs are the name given to the AHL team vying for the Championship Calder Cup. The 2023 Calder Cup Playoffs started on April, 18 2023 with 14 teams playing in 7 different series while the other 9 all had byes, that is, they did NOT play in the first round.
One thing to note is that the first round is essentially a play in1 round of the playoffs, but it's not an evenly divided play-in.
The current format has round 1 with a best of Three Games, rounds 2 and 3 with a best of Five Games, and both the Conference Finals and Calder Cup Finals with a best of Seven Games.
Why Realign?
The ultimate goal is to enhance competitive balance and foster new rivalries, making the playoff race and outcomes more reflective of team performance throughout the season.
The current structure of the AHL divides the entire league into 2 conferences, and each conference has 2 divisions.
In the Eastern Conference, you have the Atlantic and North divisions. The Atlantic has 8 teams, while the North has 7.
Out in the Western Conference, you have the Pacific and Central division. The Pacific has 10 teams, while the Central has 7 teams.
Now an interesting thing about the playoffs is that the top 7 (of 10) teams from the Pacific make the playoffs, while the top 5 (of 7) teams from the North and Central make it. The Atlantic sends its top 6 (of 8) teams to the playoffs.
Each division will have a certain number of teams with a bye-round, that is they don't have the play in the first round.
In the North and Central three teams get a first-round bye, with only 2 teams playing in round 1. In the Atlantic three teams get a first-round bye with 4 teams playing in the first round.
And in the Pacific division, you have 6 teams playing in the first round with only ONE team getting a first-round bye.
So of the 23 teams that make the playoffs, 14 of them play in the first round, and of that 14, 6 come from the Pacific division.
Seems a bit off to me.
This also had the slightly embarrassing (for the AHL at least) aspect of seeing the second-best team in the entire league in the 2022-23 season (the Coachella Valley Firebirds) needing to win a Play-in round to make it into what might be considered the playoffs.
By the time the Calder Cup Playoffs had concluded last year, the Firebirds lost to the Hershey Bears in 7 games. It was the MOST exciting series that I will ever get to see in person, or on TV.
That being said, the Firebirds played 26 out of a possible 27 games during the playoffs last year. The Bears played in 20 out of a possible 24.
If the Firebirds would have had a first-round bye, like the Bears, they would have most likely still played in 23 out of 24 games (3 fewer games than what they actually played) BUT three games can make a huge difference!
I would like to make the case that realignment of the AHL, to a balanced set of divisions, and conferences is not only feasible, and easy, but in the best interests of the AHL.
Before exploring the realignment scenario, I'll outline the proposed changes. The realignment aims to balance the divisions and conferences, ensuring an equal number of teams in each division and a fairer playoff qualification process.
Additionally, if this realignment had happened last year, I believe that the outcomes could have been different (especially given the Firebird Colored Glasses I might be wearing).
There is a post on the AHL Site about realignment. Quoting the League President Scott Howson:
There’s no easy solution. I’m not saying it’ll never happen, but it’s not in the cards right now.
One item stated for a lack of realignment is, "Realignment would break up the Pacific cohort and likely force teams into the Central, and Howson does not see that as likely, given the additional travel burden that it could put on the division’s members."
I'm going to assume this is NOT the case. What I have below is from a "Does this seem like it might work?" perspective. 2
Realignment
With my rationale for the need for realignment of the way, let's get into the actual implementation of the realignment.
I built a Streamlit app to see what a potential realignment would look like that can be found here.
The idea would be:
- Move both Tucson and Colorado to the Central Divsiion to get the Pacific Division down to 8 team
- Move Grand Rapids from the Central Division (in Western Conference) to the Atlantic Division (in the Eastern Conference) to get the Central and Atlantic to 8
Impact of Realignment on the 2023 Calder Cup Finals
In the NHL there are 2 conferences with 2 divisions of 8 teams each. The playoffs get a total of 16 teams. The three top teams from each division, and then the top two teams from the Conference.
This means that round 1 has 16 teams playing in 8 different series and NO ONE gets a bye.
Let's imagine the 2023 Calder Cup Playoffs with realignment AND a similar style of playoff admission. One difference between the AHL and NHL I'd keep would be to have 5 games in round 1 and 2, and increase to 7 games in the Championship, versus the NHL which has 7 games in every round.
I list the teams below in their proposed (potentially new) division. The number next to the team is the total points each team had at the end of the 2022-23 regular season.
The Eastern Conference would have had the following seeding:
Atlantic Division
- Providence (98)
- Hershey (97)
- Charlotte (86)
North Division
- Toronto (90)
- Syracuse (81)
- Rochester (81)
Wild Card
- Springfield (84)
- Hartford (81)
The Western Conference would have had the following seeding:
Central Division
- Texas (92)
- Colorado (90)
- Milwaukee (89)
Pacific Division
- Calgary (106)
- Coachella Valley (103)
- Abbotsford (87)
Wild Card
- Manitoba (84)
- Iowa (79)
Eastern Conference Playoffs
Round 1 Best of Five games
In this section, we'll explore the first-round matchups, highlighting the top contenders and their paths to victory based on past performances and current strengths.
Starting in the Eastern Conference we would have the following round 1 matchups:
- Providence (98) vs Hartford (81)
- Toronto (90) vs Springfield (84)
- Hershey (97) vs Charlotte (86)
- Syracuse (81) vs Rochester (81)
To determine the winners I'm going to look at the playoffs last year and then make an educated best guess as to the winners of each series
Providence vs Hartford
Providence lost to Hartford in the Atlantic division semi-finals last year, 1-3 and I see no reason for that to change ... other than maybe Hartford wins in 3 instead of 4. But I'm going to keep it at Hartford wins 3-1
Toronto vs Springfield
Toronto and Springfield didn't play each other in the playoffs last year or in the regular season. Springfield lost to Hartford 2-0 in round 1 while Toronto had a first-round bye and defeated Utica 3-1 in the North division semi-finals. My guess is that Toronto would have won this series 3-1
Hershey vs Charlotte
Hershey defeated Charlotte in the Atlantic division semi-finals last year 3-1. Granted Charlotte had just played 3 games against Lehigh Valley and won that series 2-1, I still think that Hershey defeats Charlotte, only it takes all 5 games. Hershey wins 3-2
Syracuse vs Rochester
Syracuse lost 3-2 to Rochester. Same result this time around I would think
Round 2 Best of Five games
Based on the seedings for the first round, I believe that Hartford would hold a higher position than Rochester
- Hershey (97) vs Rochester (81)
- Toronto (90) vs Hartford (81)
Hershey vs Rochester
Hershey defeated Rochester 3-2 last year. I believe the outcome would be the same here (although this was in the Eastern Conference finals)
Toronto vs Hartford
Toronto and Hartford didn't play each other last year, though each team did get swept in the division finals. They played each other in the regular season only 2 times, each with the home team winning in OT. With Toronto getting the home nod, I'll extrapolate to say that Toronto wins in 5 games, 3-2
Round 3 (Eastern Conference Finals) Best of Seven
Toronto vs Hershey
Toronto played Hershey 2 times and lost both times. I think that a series like this would be closer, but Hershey comes out on top 4-2
Eastern Conference Champion Review
In this realigned AHL for the Calder Cup finals, Hershey has played 16 out of 17 games, going 10-6 to reach the Calder Cup Finals. When they actually reached the Calder Cup finals last year, they played only 13 games going 10-3 (playing an extra 3 games)
Providence (98)----|
|--Hartford (81)----|
Hartford (81)------| |
|--Toronto (90)-----|
Toronto (90)-------| | |
|--Toronto (90)-----| |
Springfield (84)---| |
|--Hershey (87)
Hershey (87)-------| |
|--Hershey (87)-----| |
Charlotte (86)-----| | |
|--Hershey (87)-----|
Syracuse (81)------| |
|--Rochester (81)---|
Rochester (81)-----|
Let's take a look out West next
Western Conference Playoffs
Round 1 Best of Five games
In the Western conference we would have had the following round 1 matchups:
- Calgary (106) vs Iowa (79)
- Texas (92) vs Manitoba (84)
- Coachella Valley3 (103) vs Abbotsford (87)
- Colorado (90) vs Milwaukee (89)
As with the Eastern Conference bracket to determine the winners I'm going to look at the playoffs last year and then make an educated best guess as to the winners of each series.
Calgary vs Iowa
Calgary didn't play Iowa at all in either the regular season or the postseason last year. Based on the final records, I think it's safe to say that Calgary wins this series, but I believe it's 3-1
Texas vs Manitoba
Texas played Manitoba 8 times in the regular season last year with Manitoba winning 6 of these games. There were several that went into OT which Manitoba won more often than not. I think this goes to 5 games, but Manitoba wins 3-2.
Coachella Valley vs Abbotsford
Coachella Valley and Abbotsford played 4 times, each winning two games. Given the disparity in total points at the end of the year, I think that Coachella Valley wins in five 3-2.
Colorado vs Milwaukee
Colorado and Milwaukee didn't play each other at all in the regular season. I think that this is an even match-up, but I give the edge to Colorado since they're the home team, winning 3-2.
Round 2 Best of Five games
- Calgary (106) vs Manitoba (84)
- Coachella Valley (103) vs Colorado (90)
Calgary vs Manitoba
Calgary wins this in 5, 3-2. They didn't play each other at all during the regular season, but I think that provincial pride forces the series to 5 games
Coachella Valley vs Colorado
Coachella Valley wins this in 5, 3-2. This is a repeat of the series last year. I believe that it goes the distance again.
Round 3 (Western Conference Finals) Best of Seven
Calgary vs Coachella Valley
Coachella Valley defeats Calgary 4-3
Coachella Valley and Calgary played each other in the Pacific Division Finals last year. It was a brutal series with Coachella Valley winning in game 5 in Overtime. I think that the same result comes out here going the distance.
Calgary (106)------|
|--Calgary (106)------|
Iowa (79)----------| |
|--Calgary (106)----|
Texas (92)---------| | |
|--Manitoba (84) -----| |
Manitoba (84)------| |
|--CV (103)
CV (103)-----------| |
|--CV (103)-----------| |
Abbotsford (87)----| | |
|--CV (103)---------|
Colorado (90)------| |
|--Colorado (90)------|
Milwaukee (89)-----|
Western Conference Champion Review
At the Calder Cup finals, Coachella Valley has played 17 out of 17 games, going 10-7. When they actually reached the Calder Cup finals last year, they played 19 games going 12-7. Two fewer games to get here.
Calder Cup Finals
In this matchup, Coachella Valley will have up to 4 home games, while Hershey will have up to 3.
Coachella Valley played in 2 fewer games in this scenario, while Hershey played in 3 more games, for a net difference of 5 games.
I think the first two games go as they did last year. Epic drubbings at Acrisure Arena by Coachella Valley over Hershey. I think that the 3 games4 in Hershey go 2-1 in favor of Hershey giving the Firebirds a chance to clinch on home ice in game 6 which they do.
Evaluating the Impact of Realignment: A Reflection on Competitive Balance and Missed Opportunities
Going through this exercise doesn't change the outcome of the 2023 Calder Cup Finals. And I don't want this to seem like a sour grapes sort of thing. The Hershey Bears won the Final game last year within the confines of the structure that was set up by the AHL. In that sense, they won it fair and square.
Also, I'm not sure if this realignment had been in place my predictions would have been correct necessarily.
What I think it does point out is an extreme disadvantage that the Pacific division faces in the playoffs. Last year the Coachella Valley Firebirds were the FIRST team west of Austin to make the Finals. They were also the first team to EVER play a playoff game in EVERY timezone that the AHL operates a team in.
Coda
I was bummed that the Firebirds lost in Game 7 last year. I wrote about it just a few days after it happened.
It was the most exciting sporting event I've ever seen, either in person or on TV. I'm not sure anything will ever be that intense and exciting.
I really wish they would have won, and this shows that they just might have been able to if the conference, divisions, and playoff seedings were a bit more balanced.
- preliminary round that occurs before the start of the official playoffs. It is typically used to determine who gets the last spots in the playoff ↩︎
- A full analysis is something I'll be looking at for another post in the future. There are lots of other items to look at like (1) Schedules, (2) Travel, and (3) Rivalries ↩︎
- Coachella Valley is abbreviated CV in some cases below to save space ↩︎
- In all honesty the 3 games in Hershey last year were games where the Firebirds seemed a bit tired. There was also some officiating that seemed a bit dubious (an offside that didn't get called that led to a goal that, IMO, shouldn't have counted) ↩︎
Year in Review 2023
I've never done a year in review, but this seems like a good a time as any, right? I had a rough outline, but after reading the great Year in Review from Tim Schilliing, Paolo Melichore, and Velda Kiara, I was inspired to actually finish mine.
Professional
In the moment it can feel like I don't really get anything done at work. Looking at my time tracking stats, I do spend A LOT of my time in meetings (nearly 40%) and administration (almost 45%) which is expected for someone in management I suppose, but I really do miss getting to write code more often.
That being said I was able to complete some pretty significant projects at work with the help of my team that I'm really proud of.
Migrations
Change is hard, and we underwent a few BIG technology changes that have gone really well.
The first big change implemented was to migrate from a few Atlassian products (JIRA and Confluence) to YouTrack. I know there are lots of people out there that HATE JIRA, but I loved it and my team liked it. I think that a big reason for that is when JIRA wasn't doing what we needed it to do, I was able to make changes to it. We didn't have to pass it through some change control committee, or get buy in from some high level manager. We just made it work for us ... and it really did work well for us.
The reason we had to migrate from these products was that Atlassian announced in February of 2021 that they would end-of-life the server versions at the end of February 2024. I looked to see if we could migrate to one of their data center versions, but because I'm in Health Care any solution 'in the cloud' needs to be HIPAA compliant. While Atlassian does offer HIPAA compliant versions, you need to have 500+ users for that solution. My organization has 50.
I spent two years trying to figure out how we could keep JRIA and/or to find something that could replace what we had in JIRA and the best solution I could find was JetBrains' YouTrack.
We've been on YouTrack since the end of May and while there are still some features that I miss (support for Mermaid Diagrams, ability to embed the content of one Confluence Article into another Article, automatic linking between JIRA issues and Confluence Articles) overall the workflow parts of YouTrack for issue tracking are much better than JIRA. Easier to set up, easier to maintain.
Another change that we made was changing our Version Control System from Subversion to git, hosted on Azure DevOps. This involved all three of the teams in my department and proceeded in a staged approach over the course of about 3 months. I also helped another department migrate from Subversion to git.
The biggest challenge was the SSIS packages used in our ETL processes, and the database objects.
The SSIS packages took 3 attempts before it stuck, but the ETL devs were positive with each unsuccessful attempt and we finally got over the hump in early December.
The Database objects are unfortunately still in Subversion. This is a limitation of our current tech stack. Migrating to git requires that each developer have their own version of the database but we don't. Honestly the way we have it set up now is something I'd really like to change, but that's a story for a different time.
In all we migrated 25 repositories from Subversion. There is still more work to do with the Web Developers to update our CICD process to fully leverage Azure DevOps, but small steps can make for big changes over time. No need to rush if we have a working CICD system (even if it's kind of Frankensteined together at this point).1
With this migration to git we were also able to integrate our issue tracking system (YouTrack) with our VCS. It's nice to see commits automatically 'connected' to the issues in YouTrack.
Another thing that I've been able to work on is getting more and more Python enabled for various projects. We have a Django App that we use to manage 'administrative' tables in our MS SQL database, and we've been able to integrate Python in some of our SSIS packages for ETL.
Speaking
One of the goals that I had from my last annual review was to engage in two public speaking activities. While I give lots of presentations at work, they're all via Zoom so the idea of getting up in a room full of strangers and talking was both exciting and terrifying.
The first conference I spoke at was the KLAS Points of Light conference in May in Salt Lake City (only about a week after PyCon US). The talk was limited to 10 minutes and I had 2 co-speakers so I was limited to about 3 minutes of talking time (and if I said I spoke for 90 seconds that would be pretty generous). That being said, I did get up on stage and spoke to a room full of about 200 strangers (and nearly threw up!)
The absolute highlight of my speaking engagements this year was speaking at Django Con (which I wrote about here and here). I won't write more about it, but I had such a great time giving that talk!
Certifications
I was able to achieve a couple of certifications this year. The first was the Google Cloud Platform Cloud Architect Certificate. I wrote about the experience here.
Another certification I achieved was the Certified EDI Academy Professional. Initially I did this mostly because the cost of the classes to work on the certificate for 2 participants versus 3 participants was only $100 extra and there were 2 people in my department that had asked about working on the certification. Since my department is in charge of EDI 'stuff' and I'm in charge of the department it kind of made sense that I should get it too.
While I didn't think it would be super beneficial and did it mostly just because I have been surprised at how useful it's ended up being. Seeing what's possible with EDI in Healthcare has allowed me to work with the EDI Analysts in my department more effectively AND has helped us all to better identify opportunities for automation
Misc
Above I lamented the lack of time to program above, but one thing I was able to work on was a refactor of an Airflow DAG from 2000+ lines down to 150 lines. This was thanks to the DjangoCon Tutorial Django ❤️ Airflow lead by Sheena O'Connell.
This is also the first year since the start of the pandemic that I've gone into the office on a (mostly) regular basis. While it's mostly like working from my home office (lots of Zoom meetings) it is nice to have a different bit of scenery (the new arena where hockey is played is visible from my desk when I look out the window).
In November I also got my first promotion in 7 years which was nice. I went from being the Regional Director to Senior Regional Director.
Finally something I was really excited and proud about was the rating my management team and I got for Employee Satisfaction. This was the first full year that I had two people other than me in the management team and I think that really helped. The satisfaction rating came back at 95%, the highest my department has ever gotten.
Personal
Health
At the end of last year I completed the Running Challenge which lead to me participating in my first organized run (the Panther 5K) since 20182. I had hoped that this would get me back into running and that by the end of 2023 I would have been able to run a half marathon.
These hopes were dashed in April when I contracted COVID (for the second time since the start of the pandemic) and I wasn't back to feeling like myself until late May. Now, in most places of the country late May might be a swell time to start running, but in the Coachella Valley it's already push triple digit highs so I had a hard time getting motivated to start running again when it was that hot.
I started the Running Challenge again this year, but 24 days into it I got a really bad cold that basically is only now (nearly 2 weeks later) truly disappearing. I haven't run in those 2 weeks, but am looking forward to starting rucking and then running again in 2024.
Django
I mentioned above that I spoke at DjangoCon US this year in Durham, but before the conference started I got to see my youngest step brother and his wife at their (new to me) house3. It was a great way to start an amazing week in Durham which is one of the more walkable cities I've been to.
Another bonus was a chance encounter with Ronard Luna (whom I met at DCUS 2022 in San Diego) and some of his Caktus colleagues after day one of the conference. We went and got (really good) Thai that night, had some great conversations and I got to meet some more amazing Django people.
Towards the end of the conference Jay Miller interviewed me about my talk and that was super awesome. I was nervous at first, but Jay (and Dawn) did a great job of making me feel at ease 😁
I also spent time working with Jeff Triplett and Maksudul Haque on DjangoPackages which has been fun and a great learning experience. I'm looking forward to continuing that work next year!
Finally, towards the end of the year I interviewed and was accepted to be one of the Djangonaut.Space Navigators. I'm really looking forward to working with the Djangonauts on my team, as well as my Captain Nishant Aggarwal.
Reading
I had a goal of increasing the diversity (both in style and authors) that I was going to read this year4. To this end my daughter Abby helped me by putting together a list of books by Author's to get me out of my reading rut.
I kind of fell off the reading wagon in the last quarter of the year, but I was able to read some really good books that I wouldn't have found otherwise:
- American Gods: Neil Gaiman
- Scythe: Neal Shusterman
- Renegads: Marissa Meyer
- Don't Read the Comments: Eric Smith
- An Absolutely Remarkable Thing: Hank Green
- The Thousandth Floor: Katherine McGee
- Legendborn: Tracy Deonn
- Mistborn: Brandon Sanderson
- War Girls: Tochi Onyebuchi
- The Poppy War: RF Kuang
I also read a few books in the Rise of Mankind Series by John Walker5
- Raid
- Conflict
Writing
I only wrote nine articles this year (including this one). It sure feels like more, but in looking back I didn't write my first post until April, and then not again until July. It was really in the last 3 months (since DjangoCon) that I really started to write more with 2 in October and November and three in December.
I'm looking forward to writing more in 2024 with the goal of one article per month. I've started already with trying to write up one TIL a day. This is part of a large theme6
Hockey
On December 18, 2022 AHL Hockey made its way to my home town. The best part is that the arena they play in is only 10 minutes from my house so I went to a lot of hockey games.
So far this season isn't going like I had hoped, but a few highlights from last season were:
- Getting to see a triple overtime game against the Calgary Wranglers that ended with the Firebirds winning
- A game 7 of the Calder Cup finals going to over time
While the 3OT game ended with the good guys winning, the game 7 OT ended with them losing. It was heart breaking, and I wrote about it here, so I won't go over it again. That being said, even though they lost, the fact that I got to go to a Game 7 for a championship was already mind blowing. The fact that it went into overtime was more so. I did a bit a research and it was the first Game 7 OT championship game in either the AHL or NHL since the early 50s, so it was kind of neat to be a part of history.
I've gotten so into the AHL that I've written a silly scraper that dumps data into a datasette instance on vercel.
At the time of this writing the Firebirds are 9 points behind the pace they had last year.
With that, it's still pretty awesome that I get to watch hockey live a couple of times a week and don't have to travel hours to do it.
House
When my wife Emily and I bought our house in 2009 we were surprised that it was on septic and not connected to the sewer. But then we learned that the unincorporated part of the county we live in that's not unusual. Every few years I call one of the local plumbing companies that is highly regarded to empty my septic tank.
This was the year to have the tank emptied and when they came out to empty it, we discovered that the tank was collapsing on itself and would need to be replaced.
Now, this is not an inexpensive expense7 but also not totally unexpected. What was unexpected was to find out that because our house was within 200 feet of the sewer line we were REQUIRED to connect to the sewer.
After contacting 12 approved contractors we were able to get one under contract and they got us connected to the sewer. It cost WAAAAAY more than I think anything should8, but it's done now so one less thing to worry about going forward
But the silver lining in that is I finally felt comfortable getting a lemon tree in my front yard and it brings me lots of joy. 9
Family
This fall my daughter Abby started her Senior year in High School. This is a mind blowing stage in life. It means that this time next year Emily and I will officially be empty nesters.
In preparation for the transition to College we have done a lot of College tours. These have mostly been short weekend trips, but it's been nice to get out there and visit new / different places.
Before the pandemic my family and I would take a stereotypical American style family road trip. We haven't done it since, but we were hoping to do something big this summer.
Those plans were derailed when the sewer bill came in, but the college tours, and a nice long weekend trip to Julian made up for the lack of a BIG trip.
I mentioned above the Hockey games I've been able to see at Acrisure Arena, but one of the extra benefits of having an arena where they play hockey is that they will also play music. I was only able to go to one concert (Paramore with Abby), but Emily and Abby were able to see several shows including Shania Twain, Lizzo, and Pentatonix.
We also live relatively close to LA so we were able to see a couple of events at the Staples Center (I refuse to call it by it's new name) including SZA (all three of us plus a friend of Abby's) and a Kings game (just Emily and me).
Abby was also able to see the last show of Taylor Swift's Eras tour at SoFi Stadium which was a bit stressful as she did it with a group of friends and an adult cousin of one of those friends (that we didn't know) but she had a great time and had a smile as big as any I've seen on her in a while for a few days after.
Emily and I also went down to the Palm Springs Pride parade and got to see 10,000 Maniacs with their new lead singer (Leigh Nash from Six Pence None the Richer)
We have also really started to take advantage of the space in our back yard as a family. As a 15 year work anniversary gift I received a projector TV that we've set up outside. We also got a fire pit to keep us warm in the frigid Desert Winter Nights (I mean, it gets down to a low of like 50 by the time I go back inside 🥶) and reminds me of this meme.
Tropical Storm Hillary
I grew up in the Coachella Valley, and except for a 10 year period (mostly in my 20s) I've lived here my entire life. I've seen Haboobs, felt Earthquakes, seen smoke from nearby Wild Fires, and a couple of pretty bad rain storms (like the Valentine's Day massacre, and the Storm Cell that wouldn't move) ... but I NEVER thought I'd experience a Tropical Storm (which was very nearly a Hurricane) but this year we did.
It was a stressful day but at the end of it we can out unscathed. We were fortunate that we didn't have any property damage, but others weren't. There are still areas of the Valley that are trying to rebuild after the flooding that the storm brought.
Conclusion
When I started writing this I didn't think i I'd have that much to write, but looking back I see that I did!
I'm glad I did this and hope that future me will find some benefit from it. Hopefully 2024 me won't procrastinate writing this until the very last day ... but he probably will.
That's just the nature of these things, right?
- Our current stack involves commits to Azure DevOps which is picked up by TeamCity and then deployed using Octopus Deploy ↩︎
- That year I ran the LA Marathon in March, and in July I tore a muscle in my left hamstring ↩︎
- They've been in the house for almost 9 years! ↩︎
- I read mostly Sci Fi written by people that mostly look like me ↩︎
- These aren't particular good or well written, but I was in between books and they were on my kindle so 🤷🏼♂️ ↩︎
- more on that in the next article 😁 ↩︎
- Average costs is about $15,000 ↩︎
- Close to $30,000 ↩︎
- When Emily and I were looking to buy a house we only had three requirements: (1) It couldn't be behind a gate; (2) it couldn't have a pool; (3) it had to have a citrus tree, preferably lemon. We were able to get 2 of the three when we bought the house and it only took 13 years to get the citrus tree! ↩︎
So you want to give a talk at a conference?
Last October I gave my first honest to goodness, on my own, up on the stage by myself talk at a tech conference. It was the most stressful yet fulfilling professional experience I've had.
Fulfilling in that I've wanted to get better at speaking in public and this helped in that goal.
Stressful in that I really wanted to do a good job and wasn't sure that I could, or worse, that anyone would care about what I had to say.
Well, neither of those things turned out to be true. I did get a lot of good feedback which tells me I did a good job, and people were very encouraging for the words that I had to say, so people did care.
My presentation went so well that I was even interviewed by Jay Miller.
You can see my actual talk here, but I thought it would also be interesting for you to see how I got here.
Submitting the idea
I submitted my talk idea for DCUS 2023 in May and it was selected in June. That gave me roughly 3 months to get my loose outline of an idea into a 45 minute talk.
Brain storming how the talk would go
I have tried to get a better workflow for brainstorming ideas in general, but I really wanted to up my game for this talk. To that end I used the Story Teller Tactics cards to help determine the path of the story I would tell in my presentation.
That helped when I got to mind mapping1 my talk.
The use of the Story Teller Tactics, combined with my mind map, lead to a starting point for creating my presentation
My 'Oh Sh%t moment'
Back in early July I was browsing Mastodon (instead of working on my presentation) and came across a link to an article with the title How To Become A Better Speaker At Conferences. I saved it to my read it later service and went on browsing. A few weeks later I actually read the article (around July 25).
This bit of advice got me a little worried:
On a practical level, a 45-minute talk can take a surprisingly long time to put together. I reckon it takes me at least an hour of preparation for every minute of content.
Yikes! That means I would need to prepare and rehearse and prepare for 45 hours over the course of 14 weeks (almost 4 hours per week on average). So I set up a schedule for how I would meet this requirement
Working on the presentation
I spent all of August and the early part of September working on my presentation for about 3 hours a week. Adding slight tweaks to it here and there. I conducted a dry run with my team at work to assess my presentation's progress.
The dry run went fine, but it was clear that my presentation was missing something.
Asking for feedback
Django Con offers up mentors to help you work on your talk. If you're newer to giving presentations, I highly recommend engaging with one of them. The feedback they provide is priceless!
I had the great fortune to reach out to Katie McLaughlin who had just given a talk at PyCon Australia titled Present Like a Pro. I watched that before reaching out to her and she gave some very good advice on presentation.
Getting serious about preparing for the talk
As I said, I had done a dry run with my team at work and it was fine but I could tell that the way I was working on my presentation wasn't getting it to where I wanted it to be. So I decided to go all in on practicing and trying to make it the best I could. In order to accomplish that I believe I would need to engage in deliberate practice by actually giving my presentation. This was a breakthrough moment for me in improving the presentation and my deliver of it.
In order to have deliberate practice I set up the following routine:
- Give my presentation and RECORD it
- Watch my presentation and make notes about what needed to be improved
- Update my presentation based on the notes from #2
- Go back to step 1
Steps 1 - 3 were done on different days. For example, on Monday I would record me giving the presentation; on Tuesday I would watch the presentation and make notes; on Wednesday I would update the presentation based on my notes from Tuesday; on Thursday I would start over.
I did this a total of 7 times over 21 days. Two of these times when giving the presentation I gave it to a 'live' audience and was able to get feedback from them on various parts of the presentation.
I did one final dry run on October 13th (the Friday before my presentation was to happen for real)
That Friday was the last time I even looked at my presentation before giving it. I know some people will talk about making updates on the plane ride to the conference, or the night before, or the hour before, but that would stress the crap out of me, and I was already stressed out enough!
Giving my talk for Real
On Monday October 16th I gave my talk in front of people, in real life, for the first time. Here I am up on stage with the crowd in the background
All in all it was a really fulfilling experience, but it was pretty hard too. This was the first time I spoke at a Tech Conference and I really wanted to do well.
As I said before, I received some really good feedback on the talk and I was really glad to have done it.
Now, you might ask, "Would I have to go to all of this trouble to prepare for a talk?"
Maybe, maybe not. I just happened to find this particular prep process worked well for my brain.
It was nice to hear from some of the attendees surprised that my talk was the first honest to goodness talk on my own I had ever given because it sounded so polished and well done.
Practice makes better, and in this case (based on the videos) it sure did for me
A Big Thank you
A presentation like this took a lot out of me, but I am extremely grateful to a few people in particular:
- Katie McLaughlin
- The Team of Web Developers at work
- Bookie
- Chris
- Jason
- Jon
- My daughter Abigail
A little bit extra
If you want to see more details on my talk, here is a playlist of the dry run attempts I did to prepare2
If you want to see the repo where the changes were tracked for my presentation it can be found here
If you want to see my annotated slides, you can find them here
Time tracking
I time track the crap out of my work day, and I really wish I would have done that here just to get a more exact idea of how much time I spent preparing, but some basic back of the envelope math gives me nearly 56 hours of prep for this. One thing I do religiously for work is track my time. I do this for a couple of reasons, but for some reason, I didn't do that as I prepared for my talk here. The time I have here is mostly estimates based on my memory (which could be wildly over stated, or understated).
Activity | Time Spent |
---|---|
Story Teller Tactics Work | 1.5 Hours |
Mind Mapping Talk | 3 hours |
Initial Draft of Presentation | 5 Hours |
Presentation Updates | 18 Hours |
Deliberate Practice | 28 Hours |
Total Time | 55.5 hours |
Error Culture Part III
How can I tell if I'm in an error culture?
In part 1 I spoke about the idea of Error Culture. In that post I define what error culture.
In part 2 I spoke when Error Culture starts. This time I'll talk about how you can tell if you're living in an Error Culture, and what you can do about it.
Below are a couple of tell-tale signs I've found to determine if you're living in an error culture.
Email Rules
You start your day and fire up your email client. As the application opens up you see the number of unread message go from 500 down to 20. You think back to a time when you would open your email client and have to trod through ALL 500 of those emails. Now though ... now you've outsmarted the email system by implementing several rules to ignore or hide those pesky emails that don't seem to mean anything.
Instinct to just delete emails
Maybe you don't know about the amazing opportunities that email client rules offer, so you start going through your emails. You delete the ones you know aren't useful or don't mean anything.
Or maybe you do know about rules and of the remaining 20 you notice a few new emails that you don't need to act on. Your first instinct is to delete them, but you remember you are a smart email user and create a new rule to get rid of those emails as well.
Why do I get this email anyway?
If you use rules, you recall a time before you had them. A time when you would methodically read each email and write down a quick note to ask a co-worker, or your boss at your next one on one. But when you brought up the alerts you had one of two reactions:
- Oh those ... yeah, you can just delete them. They don't mean anything
- Ugh ... how do you not know what that is for? Fine, let me explain it to you ... again
The first item is definitely error culture. The second response could be error culture if the person you've asked is just so overwhelmed with all of the alerts ... OR it could just be a toxic culture. If it's a toxic culture, I'm sorry, but this post might not be helpful in solving that problem.
If you're not in the second situation you may (rightfully) ask
why do we get it if we can just delete it?
And if the answer is 🤷♂️ then you might be in an error culture.
In general, if no one knows WHY we're getting an email and there is no actionable direction, you might be in an error culture.
Email Alerts
Ask yourself, your peers, and your boss this question
Is this alert we are getting actually important?
If the answer is No, then delete the mechanism that generates the error. Don't just create a rule to delete the alert.
If the answer is Yes, then ask
Is the alert you are getting actionable?
If the answer is No then update the alert to be actionable. This can be done by
- Including steps to resolution or documentation link for resolving the error
- Update the alert to indicate it’s importance
- Update the alert to go to the correct people
If the answer is Yes then
- Make sure the error indicates what the fix needs to be
- Make sure the error indicates why it’s important, or a link to documentation that explains it
- Make sure the right people are being notified
Point three here is really important. To determine if the correct people are being notified ask this questions of EVERYONE that receives the alert:
Are you the correct person to do something to fix the error
If the answer is No then getting removed from the email is the best course of action.
Of course, it could be that no one ever told you why you were getting the alert so the decision to remove people from alerts may need to be a management level decision, but it can at least start the conversation.
If the answer is Yes then do you (i.e. the person being asked) know what to do to fix the error
Again, with a simple yes or no response, you have two options:
Yes: Does the error indicate what the fix needs to be or where to go to find out? No: Work to update the error to make it actionable
This can help to get the right people getting the alerts.
Below is a flow chart to help make alerts better
None of this is easy to change. You may have managers that don't answer your questions when asking about if someone should receive an alert.
You may not get feedback from your peers, or manager about cleaning up the alert system. But if you can become a champion for the effort it will be very helpful for everyone involved.
If you implement something like this you can increase the signal to noise ratio for you and your team. That seems like a big win for everyone.
Error Culture Part II
In my last post I spoke about the idea of Error Culture. In that post I define what error culture. This time I'll talk about when it starts to happen. For a recap go back and read that before diving in here.
When does error culture start?
Error culture can start because of internal reason, external reason, or both and are almost always driven by the best of intentions. Error culture starts to happen because we don't finish the alert process. That is, we set up the alerts, but we don't indicate why they are important or what to do about them when we're notified.
Internal
Internal pressures driving error culture can usually be traced back to someone (usually someone important 1) declaring that ‘we’ need to be notified of when ‘this’ happens again. In and of itself self, this is actually a really good idea.
But if the important person doesn't identify why we need to be notified all that happens is that an alert is set up and NO ONE knows what to do when it fires off.
The opposite side of the coin here is being proactive in wanting to be notified when a bad thing might happen and being notified might be useful. Again, if there is no definition for why the alert might be useful, you're simply creating noise and encouraging alerts to be ignored.
External
External pressures that can drive error culture are similar to internal ones. There are some slight differences though.
For example, a consultant might indicate that it is best practice TM
to be notified of an alert. However, they don't provide more context for why it's best practice. It could very well be that the recommendation IS best practice, but for a user base that is 100x your user base, or for an organization that is 1/10th your size. Context matters and while best practices should scale, they don't always.
Another example of external drivers are software applications provided by third party vendors with default alerts enabled but no context or steps for resolution. Sometimes there will be documentation describing the alert process, but without the context for why the alert is important it's just as likely to be ignored.
So far in this series we've seen what error culture is,and when it starts to happen. In the next post I'll talk about how to identify if you're in an error culture.
- important here just means someone with influence ↩︎
Error Culture
What is Error Culture?
It's inevitable that at some point a service 1 will fail. When that service fails you can either choose to be alerted, or not. Because technology is so important to so many aspects of work, not getting an alert for a failing service isn't really an option. So we enable alerts ... for EVERYTHING.
This is good in that we know when things have gone bad ... but it's bad in that we can start to ignore these alerts because we get false positives. If you hear comments like,
Oh yeah, that error always comes up, but we just ignore it because it doesn't mean anything
or
We don't really know why that error occurs, but it doesn't seem to impact anything, so we just ignore it
This is what I am calling, "Error Culture".
OK, but why is that bad?
Initially, it might not feel bad.
EVERYONE knows that you can ignore that error because it doesn't mean anything. Of course, this knowledge tends to NOT be documented anywhere, so when you onboard new team members they don't know what EVERYONE knows ... because they weren't part of the EVERYONE that learned the lesson.
Additionally, if you're getting error messages and nothing truly bad every happens, then a few things can happen:
- People start to question ALL of the alerts. I mean, if this one isn't valid, why is this OTHER one valid? Maybe I can ignore both 🤷♂️
- You may be getting an alert about a small thing that can be ignored until it's a BIG thing. I think this image does good job of illustrating the point (found here)
Why does it happen?
In general, I've found that error culture can happen for a few reason
Error Fatigue
If you get 1000 alerts every day, you're not going to be able to do anything about anything. This is similar phenomenon to 'Alert Fatgiue' which can happen in software applications (my experience is in Electronic Health Record systems) where users can just click OK
or Cancel
when an alert shows up and users may not actually see that there is a problem
Lack of understanding of what the error is
It's surprising to find that people that receive alerts and they just delete them. They do this not out malice, but because they honeslty do not know what the alert is for. They were maybe opted into the alert (with no way to opt out) and therefore have no idea why they get it or what they are supposed to do with it. They may also be in an organization where asking questions to learn isn't encouraged and will therefore not ask why they are getting the alert.
Lack of understanding of why the error is important
Related to the item above, but different, a person can receive an alert, but they don't understand why it's important. This is usually manifested in some of the things mentioned before. Ideas like,
well, I've ignored this alert every day for 6 months, I don't know why I need to do anything about it now!
Lack of understand of who the error will impact
I'm reminded of the Episode of Friends where there is a light switch in Chandler and Joey's apartment and they don't know what it's for. At the end of the episide Monica is idly flipping the switch off and on and the camera pans to a Monica and Rachel's apartment where their TV keeps turning off and on.
Error culture can have a similar feeling. If I get an error every few days, but it doesn't impact me or my work I am likely to ignore it. It could be that the error is unimporatnt for me, but HUGELY important for you. This is a case where the error is being directled incorrectly. If we both got the error you could see that I got the email and then ask, hey, are you going to do anything about this?
Emphasis on Hero Culture
This is probably the worst of all possibilities. Some cultures tend to emphasize Heroes or White Knights. They appreciate when someone comes in and 'Saves the Day'. Sometimes people get promoted because of this.
This tends to disincentivize the idea of fixing small problems before they become BIG problems. I might be getting an alert about an issue, but it's not a BIG deal and won't be for some time. Once it becomes a big deal I'll know how to fix it quickly, and I will. When I do, I'll be celebrated. Who wouldn't want that?
In this post I've identified some of the characteristics of Error Culture.
In the next post I'll talk about how to tell if you're in an Error Culture.
In the final post I'll write about what you might be able to do to mitigate, and maybe even eliminate, Error Culture where you are.
- When I say service here I mean very loosely anything from a micro service up to a physical server. ↩︎
DjangoCon US 2023
My Experience at DjangoCon US 2023
A few days ago I returned from DjangoCon US 2023 and wow, what an amazing time. The only regret I have is that I didn't take very many pictures. This is something I will need to work on for next year.
On Monday October 16th I gave a talk Contributing to Django or how I learned to stop worrying and just try to fix an ORM Bug. The video will be posted on YouTube in a few weeks. This was the first tech conference I've ever spoken at!!!! I was super nervous leading up to the talk, and even a bit at the start, but once I got going I finally settled in.
Here's me on stage taking a selfie with the crowd behind me
Luckily, my talk was one of the first non-Keynote talks so I was able to relax and enjoy the conference while the rest of the time.
After the conference talks ended on Wednesday I stuck around for the sprints. This is such a great time to be able to work on open source projects (Django adjacent or not) and just generally hang out with other Djangonauts. I was able to do some work on DjangoPackages with Jeff Triplett, and just generally hang out with some truly amazing people.
The Django community is just so great. I've been to many conferences before, but this one is the first where I feel like I belong.
I am having some of those post conference blues, but thankfully Kojo Idrissa wrote something about how to help with that. And taking his advice, it has been helpful to come down from the Conference high.
Although the location of DjangoCon US 2024 hasn't been announced yet, I'm making plans to attend.
I am also setting myself some goals to have completed by the start of DCUS 2024
- join the fundraising working group
- work on at least 1 code related ticket in Trac
- work on at least 1 doc related ticket in Trac
- have been part of a writing group with fellow Djangonauts and posted at least 1 article per month
I had a great experience speaking, and I think I'd like to do it again, but I'm still working through that.
It's a lot harder to give a talk than I thought it would be! That being said, I do have in my 'To Do' app a task to 'Brainstorm DjangoCon talk ideas' so we'll see if (1) I'm able to come up with anything, and (2) I have a talk accepted for 2024.
Firebirds Inaugural Season
On Wednesday June 21, 2023 the local sports puck team (i.e. Hockey), the Coachella Valley Firebirds hosted Game 7 of the Calder Cup Finals against the Hershey Bears.
There are sports writers that can write on how the series went, better than I can so I'll leave that to the pros. What I will talk about is why watching that game and seeing the Firebirds lose in Overtime hit me so hard.
I'm generally an introverted person. Even before the pandemic, I wasn't particularly fond of attending crowded events. The pandemic only intensified my preference for solitude. Suddenly, I found myself being advised to avoid social interactions altogether. As an introvert, the circumstances necessitating isolation weren't exactly ideal for me, but I did appreciate the fact that my family and I had to isolate.
However, after 2+ years of isolating from most everyone, being in large groups would bring out anxiety. And when I say large groups I mean like 10, maybe 15 people. On December 18th there was work holiday get together, the first one since the pandemic started. There were about 100 people in a mostly enclosed space and I did not do well with it. Super anxious, wore a mask the entire time, and generally ducked into the closet that also serves as my office more than once just to get away from people.
That same night was the home opener for the Firebirds at Acrisure Arena (due to construction delays their home arena opened 2 1/2 months after the start of the season). I didn't know it at the time, but it was a sell out (attendance of 10,087). This meant that I was going to a sporting event, in an enclosed arena with 10,000+ people. To say that I nearly lost my shit would be an understatement. The only thing that really got me to go was that the tickets I had purchased weren't cheap, and my wife and I were going with another couple friend.
That first home game was amazing. The Firebirds won 4-3 over the Tucson Roadrunners. The energy was amazing and I decided that I had to go to another game. And so I kept going. Again and again and again. I saw 34 games in person with an average attendance of 7,500.
I'd like to say that "just like that" my anxiety surrounding large indoor gatherings was gone, but it wasn't. It took me going to lots of hockey games to get through it.
So coming back to game 7 on Wednesday night. With less than 1 minute into the second period the Firebirds scored their second goal to go up 2-0. The crowd was the loudest I'd ever heard at Acrisure. Chants of "we want the cup" roared through the arena. It was unreal. And I sat there and realized that if it hadn't been for this team my anxiety surrounding large gatherings wouldn't have gone away for probably a very long time. And other than being a HUGE fan, I wanted the players, coaches, and team to win because they had helped me deal with something so personal. I won't ever be able to repay them for that, but my cheering them on to try and win the cup could maybe start.
And then the unthinkable happened. A penalty was called on the Firebirds and a Power Play goal was scored. Then less than 4 minutes later an even strength goal was scored and we were tied at 2 a piece.
The third period ended without any scorning by either team, and for only the second time in Calder Cup finals history, the first time since 1953, we were going to Overtime in a Game 7.
As we entered Overtime everyone in my section (107) was on their feet. We stood for the entire overtime period. Cheering, and screaming (honestly, I was still exhausted from the experience as I wrote this 2 days later).
About 2 minutes into the Overtime period Ryker Evan sent a shot on goal. From where I was sitting I could see the flight of the puck and my heart leapt as I thought it would find the back of the net ... but sadly it didn't. Within the first five minutes of overtime the Firebirds had outshot the Bears 5-0. It seemed like we were in control.
The next 10 minutes was some of the most intense back and forth hockey I'd ever seen.
With less than 4 minutes on the clock I thought, this might go into double overtime ... and then the unthinkable happened. The Firebirds defense was unable to clear a puck in their end, lots of players in front of the net, and just like that I see a puck flying over Joey's shoulder and past the cross bar, hitting the back of the net. The Bears player and their fans roared with joy, and suddenly a once deafening Acrisure was stunned into silence.
We lost. They won. The inaugural season was over. I stood in disbelief for a minute and then just sat down and stared across the arena at the Bears fans I could see that were losing their minds with joy. I wanted to cry. Some people around me did.
I stood up and looked over at our defensive end. The Firebirds players on the ice had taken a knee as they watched the Bears players celebrate. They don't show that part on TV. The defeated team looking sadly on as the victors celebrate. It was heartbreaking.
And then, in the middle of the celebration, the chants of "Let's go Firebirds" started. In short order, the fans were all saying it as loud as they could. An amazing season that didn't end the way we wanted it to, but we did our best to let the team know what they meant to us.
When I started writing this I thought maybe it was just me that needed something like this to get over some of the anxiety of large indoor gatherings, but maybe it was others. And those others at that game let the team know how much we appreciated them and what they did. This team will always hold a special place in the hearts of it's fans.
We didn't win it all this year, but there's always next year. Always.
Postlude
A friend of a friend of a friend works at a golf course called the 'Classic Club'. There were 3 players that were golfing the next day and they told this friend of a friend of a friend that the chants of "Let's go Firebirds" even after the loss meant so much to them.
GCP Cloud Architect Exam Experience
Last October it was announced that Desert Oasis Healthcare (the company I work for) signed on to pilot Google's Care Studio. DOHC is the first ambulatory clinic to sign on.
I had been in some of the discovery meetings before the announcement and was really excited about the opportunity. So far our use of any Cloud platforms at work has been extremely limited (that is to say, we don't use ANY of the big three cloud solutions for our tech) so this seemed to provide a really good opportunity.
As we worked through the project scoping there were conversations about the handoff to DOHC and it occurred to me that I didn't have any knowledge of what GCP offered, what any of it did, or how any of it could work.
I've had on my 'To Do' list to learn one of the Big Three Cloud services (AWS, Azure, or GCP) but because we didn't use ANY of them at work I was (a) worried about picking the 'wrong' one and (b) worried that even if I picked one I'd NEVER be able to use it!
The partnership with Google changed that. Suddenly which cloud service to learn was apparent AND I'd be able to use whatever I learned for work!
Great, now I know which cloud service to start to learn about ... the next question is, "What do I try to learn?". In speaking with some of the folks at Google they recommended one of three Certification options:
After reviewing each of them and having a good idea of what I need to know for work, I opted for the Cloud Architect path.
Knowing which certification I was going to work towards, I started to see what learning options were available for me. It just so happens that Coursera partnered with the California State Library to offer free training which is great because Coursera has a learning path for the Cloud Architect Exam! So I signed up for the first course of that path right before Thanksgiving and started to work my way through the courses.
I spent most of the holidays working through these courses, going pretty fast through them. The labs offered up are so helpful. They actually allow you to work with GCP for FREE during your labs which is amazing.
After I made my way through the Coursera learning Path I bought the book Google Cloud Certified Professional Cloud Architect Study Guide which was really helpful. It came with 100 electronic flash cards and 2 practice exams, and each chapter had questions at the end.
I will say that the practice exams and chapter questions from the book weren't really like the ACTUAL exam questions BUT it did help me in my learning, especially regarding the case studies used in the exams.
I read through the book several times, and used the practice questions in the chapters to drive what parts of the documentation I'd read to shore up my understand of the topics.
Finally, after about 3 months of pretty constant studying I took the test. I opted for the remote proctoring option and I'd say that I really liked this option. I was able to take the test in the same place I had done most of my studying. I did have to remove essentially EVERYTHING from my home office, but not having to drive anywhere, and not having to worry about unfamiliar surroundings really helped me out (I think).
I had 2 hours in which to answer 60 questions. My general strategy for taking tests is to go through the test, mark questions that I'm unsure of and eliminate answers that I know to not be true on those questions. Once I've gone through the test I revisit all of the unsure questions and work through those.
My final pass is to go through ALL of the questions and make sure I didn't do something silly.
Using this strategy I used 1 hour and 50 minutes of the 2 hours ... and I passed!
The unfortunate part of the test is that you only get a Pass or Fail so you don't have any opportunity to know what parts of the exam you missed. Now, if you fail this could be a huge help in working to pass it next time, but even if you pass it I think it would be helpful to know what areas you might struggle in.
All in all this was a pretty great experience and it's already helping with the GCP implementation at work. I'm able to ask better questions because I'm at least aware of the various services and what they do.
Contributing to Django or how I learned to stop worrying and just try to fix an ORM Bug
I went to DjangoCon US a few weeks ago and hung around for the sprints. I was particularly interested in working on open tickets related to the ORM. It so happened that Simon Charette was at Django Con and was able to meet with several of us to talk through the inner working of the ORM.
With Simon helping to guide us, I took a stab at an open ticket and settled on 10070. After reviewing it on my own, and then with Simon, it looked like it wasn't really a bug anymore, and so we agreed that I could mark it as done.
Kind of anticlimactic given what I was hoping to achieve, but a closed ticket is a closed ticket! And so I tweeted out my accomplishment for all the world to see.
A few weeks later though, a comment was added that it actually was still a bug and it was reopened.
I was disappointed ... but I now had a chance to actually fix a real bug! I started in earnest.
A suggestion / pattern for working through learning new things that Simon Willison had mentioned was having a public-notes
repo on GitHub. He's had some great stuff that he's worked through that you can see here.
Using this as a starting point, I decided to walk through what I learned while working on this open ticket.
Over the course of 10 days I had a 38 comment 'conversation with myself' and it was super helpful!
A couple of key takeaways from working on this issue:
- Carlton Gibson said essentially once you start working a ticket from Trac, you are the world's foremost export on that ticket ... and he's right!
- ... But, you're not working the ticket alone! During the course of my work on the issue I had help from Simon Charette, Mariusz Felisiak, Nick Pope, and Shai Berger
- The ORM can seem big and scary ... but remember, it's just Python
I think that each of these lesson learned is important for anyone thinking of contributing to Django (or other open source projects).
That being said, the last point is one that I think can't be emphasized enough.
The ORM has a reputation for being this big black box that only 'really smart people' can understand and contribute to. But, it really is just Python.
If you're using Django, you know (more likely than not) a little bit of Python. Also, if you're using Django, and have written any models, you have a conceptual understanding of what SQL is trying to do (well enough I would argue) that you can get in there AND make sense of what is happening.
And if you know a little bit of Python a great way to learn more is to get into a project like Django and try to fix a bug.
My initial solution isn't the final one that got merged ... it was a collaboration with 4 people, 2 of whom I've never met in real life, and the other 2 I only just met at DjangoCon US a few weeks before.
While working through this I learned just as much from the feedback on my code as I did from trying to solve the problem with my own code.
All of this is to say, contributing to open source can be hard, it can be scary, but honestly, I can't think of a better place to start than Django, and there are lots of places to start.
And for those of you feeling a bit adventurous, there are plenty of ORM tickets just waiting for you to try and fix them!
Page 7 / 24