author,category,content,published_date,slug,summary,title,url ryan,musings,"The [Tableau Conference](https://tc19.tableau.com) was held at the Mandalay Bay Convention Center this year (and will be again next year in 2020). I had the opportunity to attend (several weeks ago) and decided to write up my thoughts about it. This is an introverted newbie’s guide navigating the conference. The conference started on Tuesday with pre-conference sessions that you had to register (and pay for). I did not attend those. Tuesday night there was a big welcome reception that I very nearly bailed on because of how many people there were, but I decided to give it a shot anyway. I’m glad I did. The welcome reception (as well as all of the meals) were held in the data village (basically the convention show floor) which was a little weird but it worked. In the reception they had industry specific areas (healthcare being one of them). I didn’t know this going in ... I just kind of stumbled into it. This was the luckiest break I could have had as I sat there there entire night and met about 10 people. Three of them (Josh, Kerry, and Molly) I spoke to the most, so much so that we decided that we’d go to the ' Data Night Out’ (the client party) together. Being super introverted this was not my jam, but I’m glad I went, and I will go again next year. Each day is jam packed full of sessions. I didn’t come across any sessions that were not worthwhile, although some were better than others. You do have to register for the session in order to gain admittance to the room (they scan your badge to make sure you belong) but there seemed to be stand by room in most of the sessions I attended. ## Keynote events There are ‘Key Note’ events to kick off each day. They happen in the Mandalay Bay events center, but there is also an overflow room you can watch them from. I would recommend going to at least one event in the events center, but as an introvert the overflow was really more my speed. A room that could sit 500 people with only 50 in it ... yes please! ## Iron Viz A take on Iron Chef, Iron Viz was a chance for 3 Tableau wizards to showcase their skills with Tableau and a shared data set. It was really interesting to see the different ways that the data could be presented and the different stories that each competitor told for their visualizations. ## Data Night Out I didn’t do this, mostly because by Thursday I was pretty overwhelmed and just needed a quite night in. I don’t regret not going, but I think I will make myself go next year ## Data Culture I’m going to write more on this once I get my head really wrapped around it, but suffice it to say, this is something that I think is going to be very important going forward for the organization I work for. ",2019-12-17,a-beginners-guide-to-tableau-conference-2019-edition,"The [Tableau Conference](https://tc19.tableau.com) was held at the Mandalay Bay Convention Center this year (and will be again next year in 2020). I had the opportunity to attend (several weeks ago) and decided to write up my thoughts about it. This is an introverted newbie’s guide navigating the conference. The … ",A beginners guide to Tableau Conference - 2019 edition,https://www.ryancheley.com/2019/12/17/a-beginners-guide-to-tableau-conference-2019-edition/ ryan,musings,"Content Warning: This is a highly personal post about a cancer diagnosis. On Feb 16, 2026 I was 'prepping' for a routine colonoscopy that was scheduled for February 17th at about 1pm. For those of you unaware what is involved in 'prepping' don't google it, but just know that your Gastroenterologist wants the 'end' of your GI tract 'clean' This also involves a lot of not eating. So you can get hangry. Or at least most people do. I had felt something wasn't quite right for a while. Nothing I could really put my finger on, I just didn't feel right. So when it came time for the prep it turned out I wasn't really hungry anyway. I couldn't really eat the weekend before either, and had been having issues sleeping. I was stressed about what my colonoscopy would show. At least subconsciously I was worried. On the day of my colonoscopy the staff at the office were all really nice. I even got a ""First Colonoscopy"" sticker! I was wheeled into the procedure room, introduced to the doctor and told to look at the wall. The next thing I knew I was being wheeled out to the recovery room. I laid there for a few minutes and then I saw my wife Emily. I was still a bit groggy from the anesthesia but I was _so_ happy to see her. It was the best feeling. She came next to the bed I was laying on and the doctor came over. He let Emily know that she may want to sit down. She said she preferred to stand. The doctor then told me that during the procedure they found a tumor. You have cancer I let the phrase sink in ... ""You have cancer"" ... ""I have cancer"". The doctor was not very comfortable delivering this news. You could tell this wasn't the type of thing he was used to doing. Emily even heard him saying ""at the other place I don't have to tell patients this"". I think he tried his best to be positive about the diagnosis, but honestly it was a pretty shitty delivery. He kept saying things like ""you're young"" (at the time I was 47) ... ""you're good looking"" ... ""you're married"" I didn't really understand why any of that mattered. I have cancer He then proceeded to let me know that the tumor had likely been there for years, maybe five. Had asked me if I had any symptoms, was there anything that felt off. How could I have not known something was wrong. I have cancer and it's my fault I didn't know sooner. He also let me know that I'd need to have an ostomoy bag. For the rest of my life. I have cancer ... that's all I could hear. I cried. I cried in front of several people that I had never met before. I cried in front of my wife. I have cancer. And I don't know anything about it at this point other than it seems like everyone I know with colorectal cancer died from it. I have cancer. I'm going to die ... those two phrases kept going through my head I cried. > As an aside, I told a friend of mine how my cancer diagnosis was delivered > to me. This friend has had many cancer battles / scares during their life. I > figured when I told them my story they would say it wasn't so bad. Turns out > it was. Even they were like, ""Holy Shit. That's awful!"" After a few minutes, and once Emily and I were a bit more able to see the world, I was wheeled out to our car. We drove home. We didn't say much. What is there to even say? I have cancer. We got home and although I could eat again, I wasn't hungry. I was afraid I'd never be hungry again. That night I couldn't sleep. Or the night after. Or the night after. The next day I had a follow up with a different GI doctor. He was basically like, ""There's no new information. Why are you here?"" But we had questions. What are the next steps. Who should we contact? What do we do? The one question I didn't dare ask, ""Am I going to die?"" For the next 16 days I lived in the grayest of gray areas. I could barely sleep, or eat. I lost about 8 pounds. Emily and I spent time working to make sure that all of our affairs were in order. Are all of the banking apps installed on your phone? Do you have all of the passwords? Does the car title need to be updated? The title for the house? How do we do our finances? We make a good team in that we each have our 'assignments'. We're pretty autonomous in those assignments. We'd talked about ""cross training"" on some of them, especially the financial stuff, but there just never seemed to be the time. And now it felt like we didn't have the time but were going to have to make it. I felt like I was writing transition docs for leaving a job. But in this case I was afraid of the job I might be leaving. To use any other word than `brutal` to describe these days wouldn't do justice to the way we felt. And even then it doesn't really begin to cover it. During that time we told a few people. A very few people. Telling people made it real. Telling people was like delivering a trauma to them. Telling people led to questions. Questions we didn't have the answer for. Brutal. I had nights where I would cry. Especially if I was alone. I have cancer, but there were things that still needed to happen. Emily had a major work event that she was responsible for. She had coworkers and friends she was able to rely on, but that didn't mean she didn't have to do things. Away from home. Away from me. My Aunt had the same cancer diagnosis I do and she was helpful and caring and loving and kind and all of the things you need from a family member. But she didn't know the future. She didn't know if I was going to die. And so when the words, ""You're going to be fine"" came from her, they were nice, but hollow. I have cancer. I might die. I am scared. On March 5th I met with a surgeon. Before meeting with the surgeon I needed to have an Abdominal CT scan done. It was completed about a week before I met with the surgeon. I had the results 2 days before meeting with the surgeon. I couldn't look at them. I didn't want to look at them. The day of the surgery consult came. He was going to tell me the next steps. From what I heard surgery was likely to be my next step. My wife and I went to the appointment, she's been going to all of my appointments with me. The staff were so nice and friendly and helpful. I started in one exam room and was moved to another exam room. My first thought was, ""Oh no, was I in the 'you're going to be fine room' and got moved to the 'You're going to die' room? But the nurse let me know the reason for the move. A simple reason. No big deal. Except it was. It was the biggest deal. But she took the time to let me know the `why` of the move. I went through the exam. Emily came back so the surgeon could talk to us. All of the fear, and horrible anticipation. What ever he said next we were going to work through it. We were going to figure it out. At the end of all of this, ""we"" might end up being just ""she"". And the doctor said ... It's actually not bad. We seem to have caught it early. We'll want to do chemo and radiation before reevaluating surgery. I cried. This time I cried because it was the first hope I'd had in almost 3 weeks. I cried because my birthday was in 2 days and I had friends I was going to hang out with and it will be an actual happy party and not a pre wake party. Since the surgeon I've seen a few more doctors. An oncologist and a radiation oncologist. Each appointment was mostly what one might expect. A brief conversation about potential side effects of the treatment. Which are pretty horrific if you think about them for too long. I try not to. My treatment will be 5 days a week for 5 1/2 weeks of radiation and chemotherapy. Reevaluation of the tumor for potential surgery 6 - 12 weeks after that. I'm sleeping better, but still not great. I eating better, but still not a ton. And then ... for a few weeks ... nothing. Paper work is getting processed and I'm waiting for an MRI. The important part about the MRI is that it will tell me what stage and grade my tumor is. Once that's completed and the results are read then all of the doctors will have what they need to allow me to officially begin my treatment. That being said, I have a tentative start date for my treatment. Unless my MRI shows something unexpected, I'll start my radiation and chemotherapy treatments on April 13. Officially. Fifty Five days from when I was told I had cancer to start of treatment. I'm not sure if this is a long time or not. It felt like a long time. A really long fucking time. As part of the treatment you go in for a prep session. During this session they fit you for the device that blasts your tumor with radiation. In my case they also gave me 3 tattoos. One on either side and one right below my belly button. I always thought my first tattoo would be of something way cooler 🤷🏻‍♂️ Before my diagnosis I had some plans for this year. I was going to go to [PyCon US](https://us.pycon.org/2026/), [PyOhio](https://www.pyohio.org/2026/), and [DjangoCon US](https://2026.djangocon.us/). I even toyed with the idea of going to [North Bay Python](https://pretix.northbaypython.org/nbpy/nbpy-2026/). I won't be able to do any of these. Although my treatment will be done by late May, I'm not sure I can commit to much travel. I'm not sure how I'll be feeling. Also, anywhere from 6 - 12 weeks after the end of my treatment I get re- evaluated for surgery. If the tumor is gone and the various docs feel like there's no risk, then surgery might not be required. If there is a risk, then surgery will be required. The outcome of the surgery will be a colostomy bag that is either temporary (about 6 months) or permanent. I'm less than 2 months into my cancer journey and there's still so much I don't know. Still so much that just can't be known. And honestly that's the hardest part. My prognosis is good. My family and I are optimistic. But there's still so much we can't know. We hope that this will be a 'blip' and that by 2027 or 2028 we can go back to what ever normal is. But we just can't know. One of the things I've really focused on over the last 2 months is trying to find the good things. I saw someone post on Mastodon (sorry, I can't find the original toot) about finding what they called glimmers. Those small things that make you happy. I try to do that every day. A song I haven't heard in a long time. A friendly face while I'm out and about. A text from a person I haven't heard from in a while. Going for a swim. These are all things that I was taking for granted. I will likely end up taking them for granted again. But for now, I am really trying to be more appreciative of them. I'm trying to be more present. Anyway, for those of you out there in that are 45+ and haven't gotten a colonoscopy. You should. We seem to have caught this early in the process. My prognosis is good. If someone hadn't told me I had cancer I would mostly have no idea. ",2026-04-06,a-giant-pain-in-the-ass,"Content Warning: This is a highly personal post about a cancer diagnosis. On Feb 16, 2026 I was 'prepping' for a routine colonoscopy that was scheduled for February 17th at about 1pm. For those of you unaware what is involved in 'prepping' don't google it, but just know that your … ",A Giant Pain in the Ass,https://www.ryancheley.com/2026/04/06/a-giant-pain-in-the-ass/ ryan,musings,"One of the earliest memories of my grandmother is visiting her in 29 Palms 1 2 in her permanent mobile home. I remember sitting on the davenport watching the Dodgers on a small 13"" COLOR CRT TV. I remember that the game was broadcast on KTLA5. But what I remember the most is the voice of Vin Scully. I don't know what who the Dodgers were playing, but I remember how much my grandmother LOVED to listen to Vin call the game. And it stuck with me. I was probably about 7 or 8 and I thought baseball was ""boring"". To be fair, I thought most sports were boring, but especially baseball. Nothing ever happens! But, I loved my grandmother, and I loved hanging out with her 3 and so I watched the game with her. Years later I discovered that yes, I did like baseball, and no, it was not boring. And since my grandmother was a Dodgers fan, then I would be too. It was something that connected us. it didn't matter where I lived, or how old I was, we both loved baseball. We both loved the Dodgers. We both loved to hear Vin call the game. My grandmother died in 2007, but something that helped to connect me to her in the years since was watching the Dodgers. Listening to Vin. As Vin got older, he still called the home games, but he handed most of the road games to a new crew. I still loved to Watch Dodgers games, but I loved watching the games he called a _little_ bit more. At the start of each season I always kind of wondered, ""is this the last year for Vin?"". And in 2016 the answer was yes. I still remember the last game [he called in Dodgers Stadium](https://www.espn.com/mlb/game/_/gameId/360925119). I remember the back and forth. I remember the Rockies going up 1 run in the top of the 9th. And the Dodgers tying it back up in the bottom of the 9th. And I remember when [Charlie Culberson hit the game winning home run in the bottom of the 10th](https://youtu.be/HayOXW09kl8). I remember the last game [Vin called in San Francisco](https://www.ryancheley.com/2016/10/03/vins-last-game/). I remember the Dodgers lost ... but it was Vin's last game, so I still loved getting the chance to watch it. And to listen to him call the game. Vin passed at the age of 94 on Aug 2, 2022. Just as I knew that there would be a day when Vin retired from calling games, I knew there would be a day when he wouldn't be with us anymore. I've been trying process this and figure out _why_ this is hitting me as hard as it is. It all comes back to my grandmother. They never met each other (at least I don't think they did), but in my head they were inextricably connected. Vin was a connection to my grandmother that I didn't fully realize I had, and with his passing that connection isn't there anymore. He hasn't called a game in more than 5 years, but still, knowing that he NEVER will again is hitting a bit hard for me. And I think it's because it reminds me that my grandma isn't here to watch the games with me anymore, and that bums me out. She was a cool lady who always loved the Dodgers ... and Vin. # WinForVin 1. Yes that 29 Palms, right next to the [LARGEST Marine Corp Base in the WORLD](https://en.wikipedia.org/wiki/Marine_Corps_Air_Ground_Combat_Center_Twentynine_Palms) ↩︎ 2. also the 29 Palms that is right next to [Joshua Tree](https://en.wikipedia.org/wiki/Joshua_Tree,_California) home to the [National Park](https://en.wikipedia.org/wiki/Joshua_Tree_National_Park) that is the current catnip of Hipsters ↩︎ 3. she always had the [butter scotch hard candies](https://www.candynation.com/butterscotch-candy-buttons) that were my favorite ↩︎ ",2022-08-05,a-goodbye-to-vin,"One of the earliest memories of my grandmother is visiting her in 29 Palms 1 2 in her permanent mobile home. I remember sitting on the davenport watching the Dodgers on a small 13"" COLOR CRT TV. I remember that the game was broadcast on KTLA5. But what I remember … ",A Goodbye to Vin,https://www.ryancheley.com/2022/08/05/a-goodbye-to-vin/ ryan,musings,"I was added to a work email that was requesting a not-so-small new project that was going to need to be completed. The problem that needed to be solved was a bit squishy, but it had been well thought out, and it had an importance to it that was easy to see. There was still some workflows and data that needed to be reviewed, but overall it was on a good path to having a `real project` feel to it. One question still outstanding is, what platform will this project be implemented on? In our EHR, or on a separate web app? During my weekly project review meeting with the Web Development team I let them know about the potential for this new project and that it would likely need to take priority over one of our current projects. The start is still a couple of weeks away so we have time to plan for it (as much as we can anyway). We looked at the project board and determined a ranking of the current projects. We decided on the project that would likely get bumped if this new one ends up with the web developers. And just like that we had a contingency plan for how to plan for this project given our current constraints. Now, this project may never make its way to the web development team, but having that conversation with the manager, and then during our standup today, to let the team know that this **might** be something that will need to be worked on by them felt right. No surprises in a few weeks. No randomness about what projects we'll be working on ... just a bit of planning to prepare for something that might never come. Eisenhower said, ""Plans are nothing, planning is everything."" The team appreciated being in the loop about a potential project and being able to align expectations moving forward. I felt grateful that this was brought to my attention well before it was submitted as a request. The requester now has a bit more information on who to speak with internally, and it really felt like we were working together to solve a problem in a very professional way. I wish all projects started like this. It would make life way easier and not so much like [this](https://oldbytes.space/@tschak/114661574560412783) ",2025-06-15,a-new-project-at-work,"I was added to a work email that was requesting a not-so-small new project that was going to need to be completed. The problem that needed to be solved was a bit squishy, but it had been well thought out, and it had an importance to it that was easy … ",A New Project at Work,https://www.ryancheley.com/2025/06/15/a-new-project-at-work/ ryan,musings,"This is mostly for me to write down my notes and thoughts about the book “How to Win Friends and Influence People.” I’ve noted below the summary from the end of each section below (so I don’t forget what they were). The first three sections seemed to speak to my modern sensibilities the most (keep in mind this book was published in 1936 ... the version I read was revised in 1981). I have the summaries below, for reference, but I wanted to have my own take on each. ## Fundamental Techniques in Handling People This seems to be a long way of saying the “Use the **Golden Rule** ” over and over again. The three points are: 1. Don’t criticize, condemn or complain 2. Give honest and sincere appreciation 3. Arouse in the other person an eager want ## Six ways to make people like you The ‘rules’ presented here are also useful for making small talk at parties (or other gatherings). I find that talking about myself with a total stranger is about the hardest thing I can do. I try to engage with people at parties and have what I hope are interesting questions to ask should I need to. Stuff I tend to avoid: * What do you do for a living? * Where do you work? * Sports * Politics Stuff I try to focus on: * How do you know the host / acquaintance we may have in common * What’s the most interesting problem you’ve solved or are working to solve in the last week * Have you been on a vacation recently? What was your favorite part about it? (With this one I don’t let people off the hook with, ‘being away from work’ ... I try to find something that they really found enjoyable and interesting These talking points are usually a pretty good starting point. Sometimes when I’m introduced to a person and the person introduces them as their job, i.e. This is Sally Jones, she’s a Doctor at the local Hospital, I’ll use that to parlay away from something work focused (what kind of doctor are you) to something more person focused, why did you want to become a doctor? Where did you go to Medical School? Did you know you always wanted to be a doctor? I try to focus on getting to know them better and have them talk about themselves. The tips from the book support my intuition when meeting new people. They are: 1. Become genuinely interested in other people 2. Smile 3. Remember that a person’s name is to that person the sweetest and most important sound in any language 4. Be a good listener. Encourage to talk about themselves 5. Talk in terms of the other person’s interest 6. Make the other person feel important - and do it sincerely ## How to Win People to your way of thinking This section provided the most useful and helpful information (for me anyway!). It really leads to how to have better influence (than winning friends). One of the problems I’ve suffered from throughout my life is the **need** to be right about a thing. This section has concrete tips and examples of how to not be the smartest person in the room, but working on being the most influential person in the room. My favorite is the first one, which I’ll paraphrase to be “The only way to win an argument is to avoid it!” I’d never thought about trying to avoid arguments, only how to win them once I was in them. The idea reminds me a bit of [War Games](https://en.m.wikipedia.org/wiki/WarGames ""War Game with Matthew Broderick \(1984\)""). At the end, Joshua, the super computer that is trying to figure out how to win a Nuclear War with the USSR, concedes that the only way to win is to not play at all. Just like an argument. The other piece that really struck me was get the other person to say ‘Yes’. This is kind of sales-y and could be smarmy if used with a subtext of insincerity, but I think that the examples given in the book, and using it in the context of trying to win friends AND influence people it can go a long way. The tips from this section of the book are: 1. The only way to get the best of an argument is to avoid it 2. Show respect for the other person’s opinions. Never say “You’re wrong” 3. If you are wrong, admit it quickly and emphatically 4. Begin in a friendly way 5. Get the other person saying “yes, yes” immediately 6. Let the other person do a great deal of the talking 7. Let the other person feel that the idea is his or hers 8. Try honestly to see things from the other persons perspective 9. BE sympathetic with the other persons ideas and desires 10. Appeal to the nobler motives 11. Dramatize your ideas 12. throw down a challenge ## Be a Leader: How to change people without giving offense or arousing resentment This section has the best points, but the stories were _very_ contrived. Again, this goes to how to win influence more than winning friends. Some of the items are a bit too 1930s for my taste (numbers 2, 3, and 6 in particular seem overly outdated). But overall, they are good ideas to work towards. The tips are: 1. Begin with praise and honest appreciation 2. Call attention to the person’s mistake indirectly 3. Talk about your own mistakes before criticizing the other person 4. Ask questions instead of giving direct orders 5. Let the other person save face 6. Praise the slightest improvement and praise every improvement. Be “hearty in your approbation and lavish in your praise” 7. Give the other person a fine reputation to live up to 8. Use encouragement. make the fault seem easy to correct 9. Make the other person gabby about doing the thing you suggest Overall I’m really glad that I read this book and glad that my [CHIME](https://chimecentral.org) mentor [Tim Gibbs](https://www.linkedin.com/in/srtim/) recommended it to me. I’ve been actively working to include these ideas into my work and home life and have found some surprising benefits. It’s also helping to make me a little less stressed out. If you’re looking for a bit of help in trying to be a better influencer in your organization, or your personal life, [this book](https://www.amazon.com/How-Win-Friends-Influence- People/dp/1439167346/ref=tmm_hrd_swatch_0?_encoding=UTF8&qid=1527122851&sr=8-1 ""How to Win Friends and Influence People"") is well worth the read. ",2018-05-23,a-summary-of-dale-carnegies-how-to-win-friends-and-influence-people,"This is mostly for me to write down my notes and thoughts about the book “How to Win Friends and Influence People.” I’ve noted below the summary from the end of each section below (so I don’t forget what they were). The first three sections seemed to speak … ",A Summary of Dale Carnegie’s “How to Win Friends and Influence People”,https://www.ryancheley.com/2018/05/23/a-summary-of-dale-carnegies-how-to-win-friends-and-influence-people/ ryan,musings,"About a month ago I discovered a kitschy band that did covers of current pop songs but re-imagined as Gatsbyesque versions. I was instantly in love with the new arrangements of these songs that I knew and the videos that they posted on [YouTube](https://www.youtube.com/user/ScottBradleeLovesYa). I loved it so much that I’ve been listening to them in Apple Music for a couple of weeks as well (time permitting). I mentioned to Emily this new band that I found and she told me that they would be playing at the [McCallum Theatre](http://www.mccallumtheatre.com) and I was in utter disbelief. We bought tickets that night (DD 113 and 114 ... some of the best in the house!) and we were all set. To say that I’ve been looking forward to this concert is an understatement. For all the awesomeness that the YouTube videos have, I **knew** that a live performance would be a major event and I was not disappointed. I think this is a concert that anyone could enjoy and that everyone should see. This was the first concert where I was both glad to be there AND glad that I had gone (usually I’m just glad that I have gone and have a hard time enjoying the moment while I’m there). I have the set list below, mostly so I don’t forget what songs were played. It’s also really cool because some of the performers at the concert were the ones in the YouTube videos. Miche (pronounced Mickey) Braden was an amazingly soulful singer, and her part of ‘All about that Bass’ was on point and breath taking! It was such an awesome concert. I can’t wait to see them again! ## First Set [Thriller](https://youtu.be/td-_pUPVjdo) [Sweet child o mine](https://youtu.be/kJ3BAF_15yQ) [Just Like Heaven](https://youtu.be/Fjd1seT1mMQ) [Are you going to be my girl](https://youtu.be/Cdo0lfWoqws) [Africa](https://youtu.be/IUlRavyDP6o) [Lean on](https://youtu.be/nzFJNsij38c) [All about that bass](https://youtu.be/G-N3alxKyjE) ## Second Set [Umbrella](https://youtu.be/OBmlCZTF4Xs) [Story of my life](https://youtu.be/FASi9lrUoYM) [Since you been gone](https://youtu.be/lhod-UI40C0) [Crazy - Gnarls Barkley](https://youtu.be/FyFwko9O2UE) [Heart of glass](https://youtu.be/DTMoipsvGNc) [Habits - Tove Lo](https://youtu.be/7hHZnvjCbVw) [Time after time](https://youtu.be/yKcPEtKu7CM) ## Encore [Stacy's mom](https://youtu.be/T2kOj-GFN8k) [Creep - Radiohead](https://youtu.be/m3lF2qEA2cw) [Such Great Heights](https://youtu.be/tti76BnCL98) ## Band Hannah Gill - vocals Demi Remick - Tap Miche Braden - vocals Natalie Angst - vocals Casey Abrams - MC / vocals Ryan Quinn - Vocals Ben the Sax Guy - Sax and clarinet Dave Tedeschi - drums Steve Whipple - bass Logan Evan Thomas - Piano The trombone player was amazing, but I wasn’t able to find him on the [PMJ Performers page](http://postmodernjukebox.com/performers/). ",2018-12-15,an-evening-with-post-modern-jukebox,"About a month ago I discovered a kitschy band that did covers of current pop songs but re-imagined as Gatsbyesque versions. I was instantly in love with the new arrangements of these songs that I knew and the videos that they posted on [YouTube](https://www.youtube.com/user/ScottBradleeLovesYa). I loved it so much that … ",An Evening with Post Modern Jukebox,https://www.ryancheley.com/2018/12/15/an-evening-with-post-modern-jukebox/ ryan,musings,"The thing about HIMSS is that there are a lot of people. I mean ... a lot of people. More than 43k people will attend as speakers, exhibitors or attendees. Let that sink in for a second. No. Really. Let. That. Sink. In. That’s more than the average [attendance of a MLB game](https://www.baseball- reference.com/leagues/MLB/2017-misc.shtml ""Average attendance"") of 29 teams. It’s ridiculous. As an introvert you know what will drain you and what will invigorate you. For me I need to be cautious of conferencing too hard. That is, I need to be aware of myself, my surroundings and my energy levels. My tips are: 1. Have a great playlist on your smart phone. I use an iPhone and get a subscription to Apple Music just for the conference. This allows me to have a killer set of music that helps to drown out the cacophony of people. 2. Know when you’ve reached your limit. Even with some sweet tunes it’s easy to get drained. When you’re done you’re done. Don’t be a hero. 3. Try to make at least one meaningful connection. I know, it’s hard. But it’s totally worth it. Other introverts are easy to spot because they’re the people on their smart phones pretending to write a blog post while listening to their sweet playlist. But if you can start a conversation, not small talk, it will be worth it. Attend a networking function that’s applicable to you and you’ll be able to find at least one or two people to connect with. The other tips for surviving HIMSS are the same for any other conference: 1. Don’t worry about how you’re dressed ... you will **always** be underdressed when compared to Hospital Administrators ... you’re in ‘IT’ and you dress like it 2. Wear good walking shoes (see number 2 about being under dressed) 3. Drink plenty of water 4. Wash your hands and/or have hand sanitizer 5. Accept free food when it’s offered Ok. One day down. 3+ more to go! ",2018-03-06,an-introverts-guide-to-large-conferences-or-how-i-survived-himss-2018-and-2017-and-2016,"The thing about HIMSS is that there are a lot of people. I mean ... a lot of people. More than 43k people will attend as speakers, exhibitors or attendees. Let that sink in for a second. No. Really. Let. That. Sink. In. That’s more than the average [attendance of …](https://www.baseball- reference.com/leagues/MLB/2017-misc.shtml ""Average attendance"") ",An Introvert’s guide to large conferences ... or how I survived HIMSS 2018 (and 2017 and 2016),https://www.ryancheley.com/2018/03/06/an-introverts-guide-to-large-conferences-or-how-i-survived-himss-2018-and-2017-and-2016/ ryan,musings,"Last weekend I watched both games 7 of the NBA conference finals. I have no particular affinity for the NBA (I prefer the [Madness in March associated with the NCAA](https://en.m.wikipedia.org/wiki/NCAA_Division_I_Men%27s_Basketball_Tournament)) but I figured with 2 game 7s it might be interesting to watch. I was not wrong. On Sunday night Cleveland was hosted by Boston in a rematch of a game 7 from 2010. One of only 2 game 7s that LeBron James had lost. This game had all the makings of what you would want a game 7 to be. A young upstart rookie (Tatum) with something to prove. A veteran (James), also with something to prove. What really stuck our for me, for this game, was what happened at the 6:45 mark in the fourth quarter. Tatum dunked on LeBron (posterized is the term [ESPN](http://www.espn.com/video/clip?id=23627416) used) to put the score at 71-69 Cleveland. What happened next though, I think, is why the Cavs won the game. Tatum proceeded to bump his chest up against the back of LeBron’s shoulder, like a small child might run up to a big kid when he did something amazing to be like, “Look at me ... I’m a big kid too!” LeBron just stood there and looked at Tatum with incredulity. The announcers seemed to enjoy the specticle more than they should have. But LeBron just stood there, the Boston crowd cheering wildly at what their young rookie had just done. To dunk over LeBron, arguably one of the greatest, in a game 7? This is the thing that legends are made of. But while the crowd and the announcers saw James look like he was a mere mortal ... what I saw was the game turning around. The look on James’ face wasn’t one of ‘damn ... that kid just dunked on me. It was, “Damn ... now I’m going to get mine and I have a punk to show how this game is really played.” From that point on the Cavs outscored the Celtics 16-10 ... not a huge margin, but a margin enough to win. What the score doesn’t show is the look of determination on LeBron’s face as he carried his team to the NBA Finals. Not because he scored all 16 points (he _only_ scored 7) but because he checked his ego at the door and worked to make his team better than the other team. In short, he was the better team mate than Tatum in those last minutes and that’s why the Cavs are in the Finals and the Celtics aren’t. Tatum’s reaction to dunking on LeBron is understandable. Hell, if I had done something like that when I was his age, I would have pumped my chest up too. But it the patience and reservedness (that perhaps come with age) that make you a great player or team member. You don’t really want to rile up a great player because that’s the only reason they need to whoop your butt. Perhaps Tatum will learn this lesson. Perhaps he won’t. Because you see, acting like a a little kid isn’t just the right of a rookie. James Harden pulled some immature shenanigans too in his team’s loss to the Warriors. At one point, with the Rockets up 59-53 with 6:13 in the 3rd, Harden when for a layup and was knocked down ... accidentally in my opinion. When a player from the Warriors tried to help him up he just sat there and then flailed his arms until one of his teammates can to help him up. Big man there Harden. By the end of the 3rd quarter the Rockets were down 76-69. By the end of the game they’ve lost 101-92. You see, when it comes down to it a great teammate will do what’s best for the team, and not do what’s best for their ego. It doesn’t seem to matter, old or young, rookie or veteran, not having the ability to control your emotions at key points in a game (or in life) can be more costly than you realize. Sometimes it’s game 7 of the NBA Conference finals, sometimes it’s just a pick up game with some friends at the park, but in either case, being a good teammate requires checking your ego at the door and working to be the best team mate you can be, not being the best player on the court. To put it another way, being the smartest person in the room doesn’t make you the most influential person in the room, and when it comes down to moving ahead, being influential trumps being smart. ",2018-06-08,basketball-conference-finals-or-how-the-actions-of-one-person-can-fire-up-the-other-team-and-lead-them-to-win,"Last weekend I watched both games 7 of the NBA conference finals. I have no particular affinity for the NBA (I prefer the [Madness in March associated with the NCAA](https://en.m.wikipedia.org/wiki/NCAA_Division_I_Men%27s_Basketball_Tournament)) but I figured with 2 game 7s it might be interesting to watch. I was not wrong. On Sunday night … ",Basketball Conference Finals OR How the actions of one person can fire up the other team and lead them to win,https://www.ryancheley.com/2018/06/08/basketball-conference-finals-or-how-the-actions-of-one-person-can-fire-up-the-other-team-and-lead-them-to-win/ ryan,musings,"[Healthcare Big Data Success Starts with the Right Questions](http://healthitanalytics.com/news/healthcare-big-data-success- starts-with-the-right-questions) > > The last major piece of the puzzle is the ability to pick projects that > can bear fruit quickly, Ibrahim added, in order to jumpstart enthusiasm and > secure widespread support. * * * [Healthcare Big Data Success Starts with the Right Questions](http://healthitanalytics.com/news/healthcare-big-data-success- starts-with-the-right-questions) > > Moving from measurement to management – and from management to improvement > – was the next challenge, he added. * * * [Healthcare Big Data Success Starts with the Right Questions](http://healthitanalytics.com/news/healthcare-big-data-success- starts-with-the-right-questions) > > Each question builds upon the previous answer to create a comprehensive > portrait of how data flows throughout a segment of the organization. Ibrahim > paraphrased the survey like so: • Do we have the data and analytics to connect to the important organizations in each of these three domains? • If we have the data, is it integrated in a meaningful way? Can we look at that data and tell meaningful stories about what is happening, where it’s happening, and why it’s happening? • Even if we have the data and it’s integrated meaningfully and we can start to tell that story, do we apply some statistical methodology to the data where we aggregate and report on it? • If we have the data, and it can tell us a story, and we use good analytics methodology, are we able to present it in an understandable way to all our stakeholders, from the front-line clinician all the way up to the chief executive? • Are the analytics really meaningful? Does the information help to make decisions? Is it rich enough that we can really figure out why something is happening? • Lastly, even if we have accomplished all these other goals, can we deliver the information in a timely fashion to the people who need this data to do their jobs? ",2017-01-07,big-data-and-healthcare-thoughts,"[Healthcare Big Data Success Starts with the Right Questions](http://healthitanalytics.com/news/healthcare-big-data-success- starts-with-the-right-questions) > > The last major piece of the puzzle is the ability to pick projects that > can bear fruit quickly, Ibrahim added, in order to jumpstart enthusiasm and > secure widespread support. * * * [Healthcare Big Data Success Starts with the Right Questions](http://healthitanalytics.com/news/healthcare-big-data-success- starts-with-the-right-questions) > > Moving from measurement … ",Big Data and Healthcare - thoughts,https://www.ryancheley.com/2017/01/07/big-data-and-healthcare-thoughts/ ryan,musings,"I've been thinking about communication ... a lot. How well people communicate (or don't communicate) is what drives nearly every problem, either at work or at home. Communication is essential to a feeling of **team** which can help to avoid communication problems in the first place. Once you feel like you are on a team, I think it's easier to engage in communication because you feel more comfortable asking questions, posing challenges when needed, and generally being happier with your surroundings. I'm almost finished with [Atul Gawande's](https://en.wikipedia.org/wiki/Atul_Gawande) book [The Checklist Manifesto](https://en.m.wikipedia.org/wiki/The_Checklist_Manifesto) and what struck me the most about it was the fact that checklists used by pilots, construction crews, and surgeons all had one thing in common. They **forced** communication amongst disparate people helping to start the formation of bonds that lead to a team. Whether constructing a 32 floor high rise building, flying a 747 or performing open heart surgery, these are all complex problems and they all have checklists. The use of these checklists help the practitioners focus on what's important by using the checklist to remind them of what needs to be done but is easily forgotten. All of this is interesting, but you can get to a 'so what' or 'and ...' point. While reading [Data silos holding back healthcare breakthroughs, outcomes](http://www.healthdatamanagement.com/news/data-silos-holding-back- healthcare-breakthroughs-outcomes?brief=00000152-14ad-d1cc-a5fa-7cff19540000) this line caught my attention: > > However, the MIT researchers contend that the health data divide can be > narrowed by creating a culture of collaboration between clinicians and data > scientists Here's the 'so what' point of all of this. Using **Big Data** to help patients should be what the healthcare industry is focusing on. But this is difficult because Clinicians and Data Scientists don't always have the vocabulary nor the incentives to collaborate in a meaningful way that leads to improved patient outcomes. Could check lists for implementing **Big Data** at various types and sizes of organizations help? I think so, because at the very least, it could start the necessary conversations needed to engender a sense of **team** between Clinicians and Data Scientists which can be sorely lacking in many institutions. ",2017-01-14,communication-and-checklists,"I've been thinking about communication ... a lot. How well people communicate (or don't communicate) is what drives nearly every problem, either at work or at home. Communication is essential to a feeling of **team** which can help to avoid communication problems in the first place. Once you feel like you … ",Communication and Checklists,https://www.ryancheley.com/2017/01/14/communication-and-checklists/ ryan,musings,"# Converting Writing Examples from doc to markdown: My Process All of my writing examples were written while attending the [University of Arizona](http://www.arizona.edu) when I was studying Economics. These writing examples are from 2004 and were written in either [Microsoft Word](https://en.wikipedia.org/wiki/Microsoft_Word) OR the [OpenOffice Writer](https://en.wikipedia.org/wiki/OpenOffice.org) Before getting the files onto [Github](https://github.com/miloardot/) I wanted to convert them into [markdown](https://en.wikipedia.org/wiki/Markdown) so that they would be in plain text. I did this mostly as an exercise to see if I could, but in going through it I'm glad I did. Since the files were written in .doc format, and the [.doc](https://en.wikipedia.org/wiki/Doc_\(computing\)) format has been replaced with the [.docx](https://en.wikipedia.org/wiki/Office_Open_XML) format it could be that at some point my work would be inaccessible. Now, I don't have to worry about that. So, how did I get from a .doc file written in 2004 to a converted markdown file created in 2016? Here's how: ## Round 1 1. Downloaded the Doc files from my Google Drive to my local Desktop and saved them into a folder called `Summaries` 2. Each week of work had it's own directory, so I had to go into each directory individually (not sure how to do recursive work _yet_ ) 3. Each of the files was written in 2004 so I had to change the file types from .doc to .docx. This was accomplished with this command: `textutil -convert docx *.doc` 4. Once the files were converted from .doc to .docx I ran the following commands: 1. `cd ../yyyymmdd` where yyyy = YEAR, mm = Month in 2 digits; dd = day in 2 digits 2. `for f in *\ *; do mv ""$f"" ""${f// /_}""; done` [\^1](http://stackoverflow.com/questions/2709458/bash-script-to-replace-spaces-in-file-names)\- this would replace the space character with an underscore. this was needed so I could run the next command 3. `for file in $(ls *.docx); do pandoc -s -S ""${file}"" -o ""${file%docx}md""; done` [\^2](http://stackoverflow.com/questions/11023543/recursive-directory-parsing-with-pandoc-on-mac) \- this uses pandoc to convert the docx file into valid markdown files 4. `mv *.md ../` \- used to move the .md files into the next directory up 5. With that done I just needed to move the files from my `Summaries` directory to my `writing-examples` github repo. I'm using the GUI for this so I have a folder on my desktop called `writing-examples`. To move them I just used `mv Summaries/*.md writing-examples/` So that's it. Nothing **too** fancy, but I wanted to write it down so I can look back on it later and know what the heck I did. ## Round 2 The problem I'm finding is that the bulk conversion using `textutil` isn't keeping the footnotes from the original .doc file. These are important though, as they reference the original work. Ugh! Used this command [\^5](http://stackoverflow.com/questions/2709458/bash- script-to-replace-spaces-in-file-names) to recursively replace the spaces in the files names with underscores: `find . -depth -name '* *' \ | while IFS= read -r f ; do mv -i ""$f"" ""$(dirname ""$f"")/$(basename ""$f""|tr ' ' _)"" ; done` Used this command [\^3](http://hints.macworld.com/article.php?story=20060309220909384) to convert all of the .doc to .docx at the same time `find . -name *.doc -exec textutil -convert docx '{}' \;` Used this command [\^4](https://gist.github.com/bzerangue/2504041) to generate the markdown files recursively: `find . -name ""*.docx"" | while read i; do pandoc -f docx -t markdown ""$i"" -o ""${i%.*}.md""; done;` Used this command to move the markdown files: Never figured out what to do here :( ## Round 3 OK, I just gave up on using `textutil` for the conversion. It wasn't keeping the footnotes on the conversion from .doc to .docx. Instead I used the [Google Drive](https://drive.google.com/) add in [Converter for Google Drive Document](https://www.driveconverter.com). It converted the .doc to .docx **AND** kept the footnotes like I wanted it to. Of course, it output all of the files to the same directory, so the work I did to get the recursion to work previously can't be applied here **sigh** Now, the only commands to run from the terminal are the following: 1. `for f in *\ *; do mv ""$f"" ""${f// /_}""; done` [^1]- this would replace the space character with an underscore. this was needed so I could run the next command 2. `for file in $(ls *.docx); do pandoc -s -S ""${file}"" -o ""${file%docx}md""; done` [^2] - this uses pandoc to convert the docx file into valid markdown files 3. `mv *.md ` ## Round 4 Like any ~~good~~ ~~bad~~ lazy programmer I've opted for a brute force method of converting the `doc` files to `docx` files. I opened each one in Word on macOS and saved as `docx`. Problem solved ¯_(ツ)_/¯ Step 1: used the command I found here [\^7](http://stackoverflow.com/questions/2709458/bash-script-to-replace- spaces-in-file-names) to recursively replace the spaces in the files names with underscores `_` > `find . -depth -name '* *' \` `| while IFS= read -r f ; do mv -i ""$f"" > ""$(dirname ""$f"")/$(basename ""$f""|tr ' ' _)"" ; done` Step 2: Use the command found here [\^6](https://gist.github.com/bzerangue/2504041) to generate the markdown files recursively: `find . -name ""*.docx"" | while read i; do pandoc -f docx -t markdown ""$i"" -o ""${i%.*}.md""; done;` Step 3: Add the files to my GitHub repo `graduate-writing-examples` For this I used the GitHub macOS Desktop App to create a repo in my Documents directory, so it lives in `~/Documents/graduate-writing-examples/` I then used the finder to locate all of the `md` files in the `Summaries` folder and then dragged them into the repo. There were 2 files with the same name `Rose_Summary` and `Libecap_and_Johnson_Summary`. While I'm sure that I could have figured out how to accomplish this with the command line, this took less than 1 minute, and I had just spent 5 minutes trying to find a terminal command to do it. Again, the lazy programmer wins. Once the files were in the local repo I committed the files and _boom_ they were in my [GitHub Writing Examples](https://github.com/miloardot/graduate- writing-examples) repo. ",2016-10-07,converting-writing-examples-from-doc-to-markdown-my-process,"# Converting Writing Examples from doc to markdown: My Process All of my writing examples were written while attending the [University of Arizona](http://www.arizona.edu) when I was studying Economics. These writing examples are from 2004 and were written in either [Microsoft Word](https://en.wikipedia.org/wiki/Microsoft_Word) OR the [OpenOffice Writer](https://en.wikipedia.org/wiki/OpenOffice.org) Before getting the files onto [Github …](https://github.com/miloardot/) ",Converting Writing Examples from doc to markdown: My Process,https://www.ryancheley.com/2016/10/07/converting-writing-examples-from-doc-to-markdown-my-process/ ryan,musings,"The number of times an issue is resolved with a simple reboot is amazing. It’s why when you call tech support (for anything) it’s always the first thing they ask you. Even with my experience in tech I can forget this one little trick when troubleshooting my own stuff. I don’t have a tech support line to call so I have to google, and google and google, and since the assumption is that I’ve already rebooted, it’s not a standard answer that’s put out there. (I mean, of course I rebooted to see if that fixed the problem). I’ve written before about my [ITFDB and the announcement from Vin Scully “It’s Time for Dodger Baseball!”](/setting-up-itfdb-with-a-voice.html). With the start of the 2019 season the mp3 stopped playing. I tried all sorts of fixes. I made sure the Pi was up to date with `apt-get update` and `apt-get upgrade`. I thought maybe the issue was due to the version of Python running on the Pi (3.4.2). I thought maybe the mp3 had become corrupt and tried to regenerate it. None of these things worked. Finally I found this post and the answer was so obvious. To quote the answer: > Have you tried rebooting? > > It's a total shot in the dark, but I just transitioned from XBMC to > omxplayer and lost sound. What I did: > > # apt-get remove xbmc > > # apt-get autoremove > > # apt-get update > > # apt-get upgrade > > After that I lost sound. 10 minutes of frustration later I rebooted and > everything worked again. It wasn’t exactly my problem, but upon seeing it I decided “What the hell?” And you know what, it totally worked. I wish I would have checked to see when the last time a reboot had occurred, but it didn’t occur to me until I started writing this post. Oh well … it doesn’t really matter because it works now. ",2019-04-07,did-you-try-restarting-it,"The number of times an issue is resolved with a simple reboot is amazing. It’s why when you call tech support (for anything) it’s always the first thing they ask you. Even with my experience in tech I can forget this one little trick when troubleshooting my own … ",Did you try restarting it?,https://www.ryancheley.com/2019/04/07/did-you-try-restarting-it/ ryan,musings,"# DjangoCon US 2024 I was able to attend [DCUS 2024](https://2024.djangocon.us) this year in Durham from September 22 - September 27, and just like in 2023, it was an amazing experience. I gave another [talk](https://www.youtube.com/watch?v=JLYaAYY4JPc) (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 😎](https://www.youtube.com/watch?v=a7iUKbug82k) 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](https://www.youtube.com/watch?v=75M0MC66H2o), [Passkeys: Your password- free future](https://www.youtube.com/watch?v=ylv_k8TRpPk), and [Django: the web framework that changed my life](https://www.youtube.com/watch?v=X0Urp3RsKLY)) 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](https://www.youtube.com/playlist?list=PL2NFhrDSOxgWqE_5w5CX2iUR7-P1D0ny7) 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](https://pythonbynight.com/blog/djangocon-2024) and [Will Vincent](https://wsvincent.com/djangoconus-recap/)) and you should totally read those. Some of the ## The Food DCUS via the culinary experience! Durham has some of the best food and I would go back again JUST for the food. Some of my highlights were * [Cheeni](https://www.cheenidurham.com/) * [Thaiangle of Durham](https://www.thaiangleofdurham.com/) * [Queeny's](https://www.queenysdurham.com/) * [Ponysaurus](https://www.ponysaurusbrewing.com/) * [Cocoa Cinnamon](https://littlewaves.coffee/pages/old-north-durham?srsltid=AfmBOooaYRO5ZB5bS9mZ43O1J_lVMyXSD_4ma0i8GZjaRg7UxcOgPaAm) * [Pizza Torro](https://pizzeriatoro.com/) * The conference venue food - fried chicken and peach cobbler were my favorite ## The Sprints During the sprints I was able to work on a few tickets for DjangoPackages12 and get some clarification on a Django doc3 ticket that's I've been wanting to work on for a while now. ## The after party in Palm Springs I left Durham _very_ early on Saturday morning to head back home to Southern California. Leaving a great conference like DjangoCon US can be hard as Kojo [has written about](https://kojoidrissa.com/conferences/community/pycon%20africa/noramgt/2019/08/11/post_conference_depression.html). 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](https://tacquila.com/) Here's [a toot on Mastodon](https://mastodon.social/@ryancheley/113237643354514479) 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 ↩︎ ",2024-11-17,djangocon-us-2024,"# DjangoCon US 2024 I was able to attend [DCUS 2024](https://2024.djangocon.us) this year in Durham from September 22 - September 27, and just like in 2023, it was an amazing experience. I gave another [talk](https://www.youtube.com/watch?v=JLYaAYY4JPc) (hooray!) and got to hang out with some truly amazing people, many of whom I call my … ",DjangoCon US 2024,https://www.ryancheley.com/2024/11/17/djangocon-us-2024/ ryan,musings,"My daughter Abby was in the Robotics class at school this year. This gave her (and us as a family) the opportunity to go to the [Global Conference on Educational and Robotics](https://kipr.org/global-conference-on-educational- robotics) which was held in Norman, Oklahoma. Being in Oklahoma we had a golden opportunity to road trip from Oklahoma back to home in California, so we did. The trip went like this: Fly from San Diego to Oklahoma City via Phoenix. Once we landed we were in the Oklahoma City / Norman area for a week as Abby competed in GCER. While there, Emily and I were able explore quite a bit visiting Down Town Norman very nearly every day we were there. The neatest part of the Oklahoma segment was our drive down to Washington, OK where Emily’s grand father was born (or spent time as a child ... I’m not really sure). Once we left Oklahoma we started the road trip in earnest. I’ve tried to create a Google Maps version of the trip, but the number of places we stopped is more than you can enter into a trip in Google maps. Here are the vital statistics: * miles driven: 3730 * cities visited: 17 * national parks visited: 7 * Baseball games seen: 3 And here are the details: * Norman, OK * Joplin, MO * St. Louis, MO * Hermann, MO * Jefferson City, MO * Kansas City, MO * Omaha, NE * Sioux Falls, SD * De Smet, SD * Pierre, SD * Black Hills, SD * Box Elder, SD * Rapid City, SD * Jewel Cave * Wind Cave * Hot Springs, SD * Cheyenne, WY * Greely, CO * Denver, CO * Grand Junction, CO * Arches National Park, UT * Cedar City, UT We got to watch the OKC Dodgers, St. Louis Cardinals, and Kansas City Royals all play and in each case the home team won. This was good because none of the MLB teams we saw were playing the LA Dodgers, and it’s always fun to see the home team win. Finally, I also learned some things on the trip: * There's a ton of stuff to do in Norman * Missouri is _really_ into World War I and its kind of weird * Omaha is the Silicon Valley of the midwest ... so much so that they call it the Silicon Prairie * Denver isn't actually in the mountains. It's just really high in the Great Plains on the way to the Rockies * Grand Junction In NOT a mountain town * Cedar City is more than just the little Main Street that I've seen before ... we stayed at a farm while we were there The family is all glad to be home, and tomorrow it’s back to normal life. I have to say, I’m really looking forward to it. ",2019-07-28,epic-family-road-trip-2019-edition,"My daughter Abby was in the Robotics class at school this year. This gave her (and us as a family) the opportunity to go to the [Global Conference on Educational and Robotics](https://kipr.org/global-conference-on-educational- robotics) which was held in Norman, Oklahoma. Being in Oklahoma we had a golden opportunity to road trip from … ",Epic Family Road trip - 2019 edition,https://www.ryancheley.com/2019/07/28/epic-family-road-trip-2019-edition/ ryan,musings,"## 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: 1. 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 🤷‍♂️ 2. 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](https://naksecurity.medium.com/the-detriments-of-hero-culture-3fc455963d6e)) ![We have a Problem Here!](https://miro.medium.com/v2/resize:fit:854/format:webp/1*QQvTuD-5AH2NKdh1_B_teQ.jpeg) ## 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](https://youtu.be/pMuVm1Y669U?si=--E-MDfTWPlHjBqk&t=180) 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. 1. When I say service here I mean very loosely anything from a micro service up to a physical server. ↩︎ ",2023-10-29,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 … ",Error Culture,https://www.ryancheley.com/2023/10/29/error-culture/ ryan,musings,"In my last post I spoke about the idea of [Error Culture](https://www.ryancheley.com/2023/10/29/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. 1. important here just means someone with influence ↩︎ ",2023-11-09,error-culture-part-ii,"In my last post I spoke about the idea of [Error Culture](https://www.ryancheley.com/2023/10/29/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 … ",Error Culture Part II,https://www.ryancheley.com/2023/11/09/error-culture-part-ii/ ryan,musings,"# How can I tell if I'm in an error culture? In part 1 I spoke about the idea of [Error Culture](https://www.ryancheley.com/2023/10/29/error-culture/). In that post I define what error culture. In part 2 I spoke when [Error Culture](https://www.ryancheley.com/2023/11/09/error-culture-part-ii/) 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 1. Including steps to resolution or documentation link for resolving the error 2. Update the alert to indicate it’s importance 3. Update the alert to go to the correct people If the answer is Yes then 1. Make sure the error indicates what the fix needs to be 2. Make sure the error indicates why it’s important, or a link to documentation that explains it 3. 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 ![Diagram of how to make alerts better](/images/alert_flow_diagram.png) 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. ",2023-11-14,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](https://www.ryancheley.com/2023/10/29/error-culture/). In that post I define what error culture. In part 2 I spoke when [Error Culture](https://www.ryancheley.com/2023/11/09/error-culture-part-ii/) starts. This time I'll talk about how you can tell if you're living … ",Error Culture Part III,https://www.ryancheley.com/2023/11/14/error-culture-part-iii/ ryan,musings,"The 2024-25 season for the [Coachella Valley Firebirds](https://cvfirebirds.com/) ended on [May 9th with a 2-0](https://theahl.com/stats/game-summary/1027712) loss to the [Abbotsford Canucks](https://abbotsford.canucks.com/). Overall, that series saw the Firebirds score * one goal in [Game 1](https://theahl.com/stats/game-summary/1027709) * one goal in [Game 2](https://theahl.com/stats/game-summary/1027710) * five goals in [Game 3](https://theahl.com/stats/game-summary/1027711) * no goals in [Game 4](https://theahl.com/stats/game-summary/1027712) This isn't surprising given exactly how young the Firebirds were this season, but it was disappointing. [Coach Laxdal](https://en.wikipedia.org/wiki/Derek_Laxdal) talked a lot about how young the team was and how on any given night we would have anywhere from seven to nine rookies that were in the starting lineup. And in a team of 24, that's a pretty big portion of guys out there who are very young. That being said the disappointment is palpable the this is the earliest that the Firebirds have ever exited the postseason. Granted this is only their third year but we are typically used to seeing hockey for another seven weeks. When put into that perspective, it is really disappointing. Still, I think there were some really bright spots from this year, including [Leyton Roed](https://theahl.com/stats/player/10083/88/lleyton-roed), [Jani Nyman](https://theahl.com/stats/player/10127/88/jani-nyman), [Nikke Kokko](https://theahl.com/stats/player/10186/88/nikke-kokko), [Ryan Winterton](https://theahl.com/stats/player/9766/88/ryan-winterton), and [Ty Nelson](https://theahl.com/stats/player/9764/88/ty-nelson). At the start of the season, I did indicate to a friend of mine (who also has season tickets) that I had pretty low expectations for the Firebirds and may have even indicated I wasn't sure that they would make the playoffs. The Pacific Division has 10 teams and 7 of them make the playoffs. I may have been a bit too pesimisitic in that analysis. During the first round the Firebirds swept the Wrangerls 2-0. This is great, but they did manage to blow a 3-0 lead in [game 1](https://theahl.com/stats/game-summary/1027696). The were able to win that game, but it took two plus Overtime periods (it ended a few minutes into the third OT). Game two of that series did see the Firebirds win 2-0 with Nikke Kokko getting his first professional AHL shutout, which was great . But it's also a bummer that it took until the 74th game of the season for him to get his first shutout of the season. 1 In six games, the Firebirds were 3-3. They scored four goals, two goals, one goal, five goals, one goal, and no goals. They were 0-17 on the power play, and they gave up two, count them two, 3 goal leads. Needless to say, this was just a hard set of games to watch. The season was hard to watch as a fan. The Firebirds would find ways to lose games. In previous seasons these were the games that they would find some way to win! There was an article in the Desert Sun that spoke about how proud Coach Laxdal was of the players and how much effort that they gave. And I agree, they did give a lot of effort and he spoke about how young they are. And again, they are young, and missed their captain [Max McCormick](https://theahl.com/stats/player/5611) for basically two thirds of the season. But they did have some veteran players out there [Mitchell Stephens](https://theahl.com/stats/player/6306/88/mitchell-stephens), [Brandon Biro](https://theahl.com/stats/player/8513/88/brandon-biro), [Cale Fleury](https://theahl.com/stats/player/7382/88/cale-fleury) and [Gustav Olofsson](https://theahl.com/stats/player/5471/88/gustav-olofsson). Unfortunately it was just too much to try and overcome. One of the things that Coach Laxdal also commented on was exactly how much younger next year's team might be. And so while I am again very excited about watching hockey in six months, which is just so long away. I am lowering my expectations for the 25-26 season even lower than they were this year. I'm really hoping we make the playoffs, but won't be surprised if we don't. And that's going to be okay ... because even bad hockey is still hockey. And I love hockey, and even when they lose, I love watching the Firebirds. 1. During the regular season, there was exactly one shutout by Victor Ostman ↩︎ ",2025-05-21,firebirds-2024-25-season,"The 2024-25 season for the [Coachella Valley Firebirds](https://cvfirebirds.com/) ended on [May 9th with a 2-0](https://theahl.com/stats/game-summary/1027712) loss to the [Abbotsford Canucks](https://abbotsford.canucks.com/). Overall, that series saw the Firebirds score * one goal in [Game 1](https://theahl.com/stats/game-summary/1027709) * one goal in [Game 2](https://theahl.com/stats/game-summary/1027710) * five goals in [Game 3](https://theahl.com/stats/game-summary/1027711) * no goals in [Game 4](https://theahl.com/stats/game-summary/1027712) This isn't surprising … ",Firebirds 2024-25 Season,https://www.ryancheley.com/2025/05/21/firebirds-2024-25-season/ ryan,musings,"On Wednesday June 21, 2023 the local sports puck team (i.e. Hockey), the [Coachella Valley Firebirds](https://cvfirebirds.com/) hosted [Game 7](https://theahl.com/stats/game-center/1025179) of the [Calder Cup](https://en.wikipedia.org/wiki/Calder_Cup) Finals against the [Hershey Bears](https://www.hersheybears.com/). 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](https://theahl.com/stats/game-center/1024284) 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. ",2023-07-01,firebirds-inaugural-season,"On Wednesday June 21, 2023 the local sports puck team (i.e. Hockey), the [Coachella Valley Firebirds](https://cvfirebirds.com/) hosted [Game 7](https://theahl.com/stats/game-center/1025179) of the [Calder Cup](https://en.wikipedia.org/wiki/Calder_Cup) Finals against the [Hershey Bears](https://www.hersheybears.com/). There are sports writers that can write on how the series went, better than I can so I'll leave that to … ",Firebirds Inaugural Season,https://www.ryancheley.com/2023/07/01/firebirds-inaugural-season/ ryan,musings,"I got a message on LinkedIn from a former colleague of my from [Arizona Priority Care](https://azprioritycare.com) asking me: > Wanted to pick your brain on something. what do you think the outlook is for > a data analyst? Debating a masters program in that and covers a few things > but also includes certifications in SAS. Trying to decide if that will “pay > off” in the long run or if I should explore different disciplines. This was a **really** good question and I thought about it a bit. My response was: > I think Data Analysis (or Data Science, or Analytics) are all going to play > a huge role in business going forward and that it would be a smart move to > get a masters degree in one of those. I would avoid any certification > programs though, just because they can be less rigorous and don’t seem to > have the same weight as a full degree. > > SAS is an interesting language, but I’d investigate what companies use SAS > and make sure that you’d like to work for them (or in the industry). Many > companies are turning towards open source Data Analytics tools (like R and > Python). But in general, don’t get too hung up on the tool (SAS, Python, R) > but really understand what you’re doing with them. Why would I choose this > Standard Regression over Two Stage Least Squares. When do I wan to use a > Logistics regression model and why. What does the output tell me, and what > is it missing. > > Developing that understanding will allow you to really standout. > > Good luck with your decision. Let me know which direction you decide to go > in, > > Best, > > Ryan I hope that I was able to help my former colleague and was super happy that he reached out to me. I wanted to write this into a more public form just in case in helps someone, or just in case I look back on it at some point and it helps me. ",2020-02-15,getting-asked-for-advice-on-being-a-data-analyst,"I got a message on LinkedIn from a former colleague of my from [Arizona Priority Care](https://azprioritycare.com) asking me: > Wanted to pick your brain on something. what do you think the outlook is for > a data analyst? Debating a masters program in that and covers a few things > but also includes … ",Getting asked for Advice on being a Data Analyst,https://www.ryancheley.com/2020/02/15/getting-asked-for-advice-on-being-a-data-analyst/ ryan,musings,"I'm in Orlando for [HIMSS17](http://www.himssconference.org) and and pretty pumped for my day one session tomorrow which is titled: Business Intelligence Best Practices: A Strong Foundation for Organizational Success. Conferences are always a bit overwhelming, but this one is more overwhelming than most. More than 40,000 people all gathered in one convention center to discuss Healthcare Tech. Kind of awesome and scary! I'm looking forward to visiting some booths in the exhibition hall, and wandering around and stumbling onto some great new things / ideas. I'm going to write up my impressions of the days events, hopefully including notes, and links to tweets because the tweets will be raw and most uncensored impressions of what I'm seeing / hearing. Here's the HIMSS 2017! ",2017-02-19,himss-2017-day-0,"I'm in Orlando for [HIMSS17](http://www.himssconference.org) and and pretty pumped for my day one session tomorrow which is titled: Business Intelligence Best Practices: A Strong Foundation for Organizational Success. Conferences are always a bit overwhelming, but this one is more overwhelming than most. More than 40,000 people all gathered in … ",HIMSS 2017 - Day 0,https://www.ryancheley.com/2017/02/19/himss-2017-day-0/ ryan,musings,"I was able to make it to 5 educational sessions today. And the good thing is that I learned something at each one. I think the highlight of the day for me was actually my first session titled, _Stacking Predictive Models to Reduce Readmissions_. A couple of key things from that presentation was the idea of focusing on a patient that readmits, not just from a clinical perspective, but from a human perspective. There were lots of technology that they used to help the care coordinators identify who was going to readmit, but the why of the readmission was always done via human interaction. I think that may be the single most important thing to remember. Something else that was mentioned was that the grou got their tool out quickly instead of trying to be perfect. It went through a couple of iterations in order to get a tool that was usable by all their various clinics. Some other key takeaways from today: * We need to focus on Augmented Human Intelligence instead of Artificial Intelligence (from **How Machine Learning and AI Are Disrupting the Current Healthcare System** ) * Don’t treat Cloud Service Providers as **Plug and Play** vendors (from _HIPAA and a Cloud Computing Shared Security Model_ ) * Creation of a committee of ‘No’ to help flesh out ideas before they are implemented (from **Intrapreneurship and the Approach to Innovation From Within** ) * Think about how to operationalize insights from data, and not just explore the data (from **Beyond BI: Building Rapid-Response Advanced Analytics Unit** ) That’s a wrap on day 1 at HIMSS. Day 2 looks to be just as exciting (meet with some vendors, attend some more educational sessions, go to a sponsored luncheon). ",2018-03-07,himss-day-1-impressions,"I was able to make it to 5 educational sessions today. And the good thing is that I learned something at each one. I think the highlight of the day for me was actually my first session titled, _Stacking Predictive Models to Reduce Readmissions_. A couple of key things from … ",HIMSS Day 1 Impressions,https://www.ryancheley.com/2018/03/07/himss-day-1-impressions/ ryan,musings,"Day 2 was a bit more draining than day 1, but that was mostly because I made my way into the exhibition hall for the first time. That many people and that much cacophony always leave me a bit ... drained. On the flip side I went to several good presentations (a couple on Block Chain). Today’s sessions were: * Empowering Data Driven Health * Blockchain 4 Healthcare: Fit for Purpose * The Use of Blockchain to Improve Quality Outcomes One of the more interesting things I heard today was that in Health Care, tech spending has gone up (over the last 20 years) but so has overall health spending. Usually we see Tech spending go up and other spending levels off (or goes down!). Something else to consider (that I never had) was that “we need to think about doing what’s most cost effective for a person in their **lifetime** not just episodically! The Blockchain sessions I went to were enlightening, but I’m still not sure I understand what it is and how it works (perhaps I’m just trying to make it more complicated than it is). That being said, the consensus was that Blockchain is not a panacea for all the ails us. It is a tool that should be used in conjunction with current systems, not a replacement of those systems. Something else of note, there isn’t a single implementation of Block Chain, there are almost 20 variations of it (although the IEEE is working on standardizing it). This leads me to believe that it is simply too new and too ‘wild’ to be implemented just yet. That being said, I think that if/when Microsoft bundles or includes BlockChain (in some way) into SQL Server, then it might be the time to look at implementing it in my organization. In my last session (another on eon BlockChain) the idea of using BlockChain to effect quality measures was discussed. The main point of the speaker was that Blockchain may allow us to give agency to patients over their health data. Another interesting point was that Blockchain may be able to allow us to dynamically observe quality measurement instead of just at point of care. This could lead to higher quality and lower costs. Overall, the BlockChain talks were good, and kind of helped point me in the right direction on what questions to start asking about it. Well, day 2 is in the books. One more day of educational sessions and exhibits! ",2018-03-08,himss-day-2,"Day 2 was a bit more draining than day 1, but that was mostly because I made my way into the exhibition hall for the first time. That many people and that much cacophony always leave me a bit ... drained. On the flip side I went to several good presentations … ",HIMSS Day 2,https://www.ryancheley.com/2018/03/08/himss-day-2/ ryan,musings,"One of the issues that any medium- to large-organization can encounter is how to deal with requests that place a requirement of work from one department to another. Specifically, requests for something shiny and new (especially technology). In the first educational session of the day, **Strategic Portfolio Management: “Governing the Ungoverned”** I heard [Effie Econompolous](https://www.linkedin.com/in/effie-economopoulos-94a23a6/ ""Effie Economopoulos"") discuss UI Health’s transformation from an organization that had very little control over their IT projects to one that has transformed into a highly regulated Project Management Organization. My key takeaways from this talk were: * segregation of Projects (with a capital P) from Incidents and Problems * The IT Roadmap was posted on the intranet for all to see * Projects that are ‘IT’ related don’t just include the time of resources from IT, but also time and resources from impacted departments throughout the organization These are some amazing points. My only real question was, If you segregate Projects from Incidents and Problems, how do you ‘train’ users for Project submission. How are they do know the difference between the two (sometimes users aren’t even sure which system is broken when reporting problems in the first place). I’m not sure of the answer, but I’m sure it’s just thought more education and tighter controls over submission of requests. There was a real time poll during the session which asked, ‘What is the most significant challenge in your organization?’. Fifty percent of attendees that responded indicated inconsistent priorities as the (which is what I answered as well). Turns out, we’re not alone. A lot of the talk focused on the process that UI Health uses which had gone through 3 iterations in 2 years. It seemed like it would work for a large(ish) hospital or hospital system, but seemed too bureaucratic for my organization. Overall, a very good talk and I’m glad I went. I believe I have some real actionable ideas that I can take away. My second educational session of the day **Improving Patient Health Through Real-Time ADT Integration** I heard about a Managed Medical Group from Minnesota and their journey to get ADT feeds into the Care Management system. I was hoping to hear something a little more helpful, but while their situation was similar to the one we have at my organization, it was different enough that all I really heard was that, although my organization doesn’t have ADT feeds (yet) we seem to be a bit ahead of them in many other areas of managed care. The tips that they offered up (getting user buy-in, working through issues with all of the various vendors) were things I had already known would need to be done. One thing I did hear, that I hope I don’t have to go through, is a ‘Live’ testing process where we get all of the vendors, hospital IT and group IT on the phone to test the system in a ‘Live’ environment to identify deficiencies. I also hope that any user manual we have to create isn’t 70 pages like the one they have (eeek!!!). I think it will also be important to have metrics regarding efficiencies before and after any ADT implementations to make sure that we have actually done something helpful for the organization and the member. My third talk **Closed Loop Referral Communications** was a bit of a disappointment. A group from North Carolina reviewed how they closed the loop on referral management. I was hoping for some key insights, but it ended up being mostly about stuff that we had already done (identifying workflow issues, automating where possible) but they still have a fundamental issue with external provider referrals (just like us). I guess I was just hoping that someone would have solved that problem, but if they have, they aren’t sharing the information. My forth session **Breaking Down Barriers with Master Data Management and Data Governance** was really interesting and in the same vein as the first talk of the day. Several good points mentioned during the talk: * Limited access to data leads to duplication of efforts and numerous sources of the ‘truth’ * If you have Tech and People then you get ‘automated chaos’ ... this is why we NEED process * Difficult to turn data into actionable information * Significant barriers to accessing information * use reference data regarding report creation ... instead of asking the report requester questions, you need domain experts to define various categories (Diabetes, sepsis). * Best Version of the Truth and Golden Record ... need to review this and see how it applies to DOHC/AZPC The most astounding thing I heard was that each report costs between \$1k and \$5k to create ... 40% are used 5 times or less! What a source of potential waste that could perhaps be ‘solved’ by self service. We need to have metrics that show not many reports have we created, but instead how many are bing used! The lessons learned by speaker : * Governance: keep information at forefront for all front line areas * Governance: not a one time effort, it’s on-going * KPI Standardization: requires resilience * KPI Standardization: processes that work around the system need to be identified and brought into the fold The fifth talk of the day **From Implementation to Optimization: Moving Beyond Operations**. Much of what was presented resonated with me and was stuff that we have dealt with. It was nice to know that we’re not alone! The most interesting part of the talk were the 2 polls. The first one asked, “Do you use an objective tool for prioritization of incoming work?” Most responses were for No, but would be interested (47%); next response was yes but we bypass (32%). Only about 20% have one, use it and it’s effective The second poll asked, “Do you collaborate with Clinical Stakeholders?” Most responses were yes and split 2-1 between Yes and there’s tension to Yes and we’re equal partners (which is where I think we’re at). My Last talk of the day, **How Analytics Can Create a Culture of Continuous Improvement**. It was an interesting talk that focused on using Analytics to drive continuous improvement. Some of the things that really caught my attention were the ideas of implementing continuous improvement is part of the job description. Part of that was something that is stated in the New Employee Orientation, “Do the job you were hired for and make it better.” Another interesting point was that there is no one Big Bang solution for Emergency Department throughput (though the idea can be applied to any problem you’re facing). You need to look at improving each step a little bit along the way. But, in order to do this effectively, you need data, team and a process. This reminded me of the **Breaking Down Barriers with Master Data Management and Data Governance** talk I was at earlier in the day! It was a great final day at HIMSS. I’ve learned a ton at this conference and writing about it (like this) has really helped to solidify some thoughts, and make me start asking questions. I’ll need to remember to do this at my next conference. ",2018-03-08,himss-day-3,"One of the issues that any medium- to large-organization can encounter is how to deal with requests that place a requirement of work from one department to another. Specifically, requests for something shiny and new (especially technology). In the first educational session of the day, **Strategic Portfolio Management: “Governing the …** ",HIMSS Day 3,https://www.ryancheley.com/2018/03/08/himss-day-3/ ryan,musings,"I've gone through all of my notes, reviewed all of the presentations and am feeling really good about my experience at HIMSS. Takeaways: 1. We need to get ADT enabled for the local hospitals 2. We need to have a governance system set up for a variety of things, including data, reporting, and IT based projects Below are the educational sessions (in no particular order) I attended and my impressions. Mostly a collection of _interesting_ facts (I've left the Calls to Action for my to do list). **Choosing the Right IT Projects to Deliver Strategic Value** presented by [Tom Selva](https://www.linkedin.com/in/thomas-selva-49207351) and [Seth Katz](https://www.linkedin.com/in/sethjeremykatz) they really hit home the idea that there is a relationship between culture and governance. The culture of the organization has to be ready to accept the accountability that will come with governance. They also indicated that process is the most important part of governance. Without process you **CANNOT** have governance. In addition to great advice, they had great implementation strategies including the idea of requiring all IT projects to have an elevator pitch and a more formal 10 minute presentation on why the project should be done and in what way it aligned with the strategy of the organization. **Semantic data analysis for interoperability** presented by [Richard E. Biehl, Ph.D.](http://iems.ucf.edu/mshse) showed me that there was an aspect of data that I hadn't ever had to think about. What to do when multiple systems are brought together and define the same word or concept in different ways. Specifically,, ""Semantic challenge is the idea of a shared meaning or the data that is shared"". The example on relating the concept of a migraine from ICD to SNOMED and how they can result in mutually exclusive definitions of the same 'idea' was something I hadn't ever really considered before. **Next Generation IT Governance: Fully-Integrated and Operationally-Led** presented by [Ryan Bosch, MD, MBAEHS](https://www.linkedin.com/in/ryan-bosch- md-46b921) and [Fran Turisco, MBA](https://www.linkedin.com/in/fran- turisco-015096a) hit home the idea of **Begin with the End in mind**. If you know where you're going it's much easier to know _how_ to get there. This is something I've always instinctively felt, however, distilling it to this short, easy to remember statement was really powerful for me. [Link to HIMSS Presentation](http://www.himssconference.org/sites/himssconference/files/pdf/206.pdf) **Developing a “Need-Based” Population Management System** presented by Rick Lang and [Tim Hediger](https://www.linkedin.com/in/tim-hediger-a1765) hammered home the idea that ""Collaboration and Partnering are KEY to success"". Again, something that I _know_ but it's always nice to hear it out loud. [Link to HIMSS Presentation](http://www.himssconference.org/sites/himssconference/files/pdf/124_0.pdf) **Machine Intelligence for Reducing Clinical Variation** presented by [Todd Stewart, MD](https://www.linkedin.com/in/rowland-todd-stewart-md-7a85b6b) and [F.X. Campion, MD, FACP](https://www.linkedin.com/in/francis-campion-b3a8047) was one of the more technical sessions I attended. They spoke about how Artificial Intelligence and Machine Learning don't replace normal analysis, but instead allow us to focus on what hypothesis we should test in the first place. They also introduced the idea (to me anyway) that data has _shape_ and that _shape_ can be analyzed to lead to insight. They also spoke about 'Topological Data Analysis' which is something I want to learn more about. [Link to HIMSS Presentation](http://www.himssconference.org/sites/himssconference/files/pdf/110.pdf) **Driving Patient Engagement through mobile care management** presented by [Susan Beaton](https://www.linkedin.com/in/susan-beaton-7848071b) spoke about using _Health Coaches_ to help patients learn to implement parts of the care plan. They also spoke about how ""Mobile engagement can lead to increased feeling of control for members"" These are aspects that I'd like to see my organization look to implement in the coming months / years [Link to HIMSS Presentation](http://www.himssconference.org/sites/himssconference/files/pdf/97_0.pdf) **Expanding Real time notifications for care transitions** presented by [Elaine Fontaine](https://www.linkedin.com/in/elaine-fontaine-3b68144) spoke about using demographic data to determine the best discharge plan for the patient. In one of the presentations I saw (Connecticut Hospitals Drive Policy with Geospatial Analysis presented by Pat Charmel) the presenter had indicated that as much as 60% of healthcare costs are determined by demographics. If we can keep this in mind we can help control healthcare costs much more effectively, but it lead me to ask: * how much do we know * how much can we know * what aspects of privacy do we need to think about before embarking on such a path? [Link to HIMSS Presentation](http://www.himssconference.org/sites/himssconference/files/pdf/82_0.pdf) **Your Turn: Data Quality and Integrity** which was more of an interactive session when asked the question ""What would a National Patient Identifier be useful for?"" most attendees in audience felt that it would help with information sharing **Predictive Analytics: A Foundation for Care Management** presented by [Jessica Taylor, RN](https://www.linkedin.com/in/jessica-taylor-56039864) and Amber Sloat, RN I saw that while California has been thinking about and preparing for value based care for some time, the rest of the country is just coming around to the idea. The hospital that these Nurses work for are doing some very innovative things, but they're things that we've been doing for years. The one thing they did seem to have that we don't is an active HIE that helps to keep track of patients in near real time. I would love to have! One of the benefits of a smaller state perhaps (they were from Maine)? [Link to HIMSS Presentation](http://www.himssconference.org/sites/himssconference/files/pdf/44.pdf) **A model of data maturity to support predictive analytics** presented by [Daniel O’Malley, MS](https://www.linkedin.com/in/daniel-o-malley-49995b8) was full of lots of charts and diagrams on what the University of Virginia was doing, but it was short on how they got there. I would have liked to have seen more information on roadblocks that they encountered during each of the stages of the maturity. That being said, because the presentation has the charts and diagrams, I feel like I'll be able to get something out of the talk that will help back at work. [Link to HIMSS Presentation](http://www.himssconference.org/sites/himssconference/files/pdf/19.pdf) **Emerging Impacts on Artificial Intelligence on Healthcare IT** presented by [James Golden, Ph.D.](https://www.linkedin.com/in/jigolden) and Christopher Ross, MBA. They had a statistic that 30% of all data in the world is healthcare data! That was simply amazing to me. They also had data showing that medical knowledge doubles every THREE years. This means that between the time you started medical school and the time you were a full fledged doctor the amount of medical knowledge could have increased 4 to 8 fold! How can anyone keep up with that kind of knowledge growth? The simple answer is that they can't and that's why AI and ML are so important for medicine. But equally important is how the AI/ML are trained. [Link to HIMSS Presentation](http://www.himssconference.org/sites/himssconference/files/pdf/300_0.pdf) ",2017-02-25,"himss-recap, Conferences","I've gone through all of my notes, reviewed all of the presentations and am feeling really good about my experience at HIMSS. Takeaways: 1. We need to get ADT enabled for the local hospitals 2. We need to have a governance system set up for a variety of things, including data, reporting … ",HIMSS Recap,"https://www.ryancheley.com/2017/02/25/himss-recap, Conferences/" ryan,musings,"I had meant to do a write up of each day of my HIMSS experience, but time got away from me, as did the time zone change, and here I am at the end of HIMSS experience with only my day 0 notes down on _paper_. Day 1 started with a rousing Keynote by Ginni Rometty, the CEO of IBM. The things that struck me most about her keynote were here sense of optimism about the future sprinkled with some caution about AI, Machine Learning and Big Data. She reminded us that the computers that we are using for our analyst is are tools to help, not replace, people and that it is incumbent upon us, the leaders of HIT, to keep in the front of our minds how these BIG Data AI/ML algorithms were trained. As the old saying goes, ""Garbage In, Garbage Out"" I also was able to record a bit of [her keynote speech](https://www.dropbox.com/s/ou0kgdfnwyrxdsa/Ginni%20Rometty.m4a?dl=1) just in case I need to find and listen to it later. I tweeted a couple of times during the keynote (and even got some likes and retweets ... not something I'm used to getting) > `Transparency in the Era of Cognition with the help of @ibmwatson #himss17` > > `Artificial intelligence is out of its winter ... I sure hope so, but time > will tell #himss17` > > `Integration in workflow is the key to adoption #himss17` > > `Don't let others define you. Great words from @GinniRometty #himss17` > > `Growth and comfort never coexist. Another great gem from @GinniRometty > #himss17` I spent almost all of my time on day 1 in educational sessions. One things that I noticed from my first class was just how _FULL_ it was 15 minutes before the session even started! > `The Emerging Impacts of AI on HIT was full 15 minutes before the session > started! Something tells me lots of ppl interested in AI #HIMSS17` Sometimes the session title were a bit misleading, but eventually most of them would come around. A class with a title of _Connecticut Hospitals Drive Policy with Geospatial Analysis_ was more about the Connecticut Hospitals and less about the Geospatial Analysis, but in the end I was what I was hoping to see which was people using Geospatial Analysis to help identify, and perhaps risk stratify patients to give the best care possible. My tweet when the class was over: > `Great talk on #geospatial analysis. So many ideas floating through my head > now on potential actions and analysis #HIMSS17` I ended my HIMSS 2017 experience on a high note with a great session titled _Choosing the Right IT Projects To Deliver Strategic Value_. I'm still processing everything that came out of that session, but it left me feeling very positive about the future. It was nice to have the same, or at least very similar, feeling of optimism at the end of HIMSS as I had at the beginning after Mrs. Rometty's Keynote. I'll be writing up my notes and linking to the presentations later this week (maybe whilst I'm flying back home to California tomorrow). This is a conference I am overwhelmed by but am glad I am coming to. While it's fresh in my mind, strategies for next year: * Pick 1 - 3 strategic challenges you want to solve. Then identify 10 - 20 vendors that can help solve that problem. Talk to them, schedule appointments with them. Get more information than you know what to do with * Work on being a presenter. It will help check off that 'Speak in front of large groups of people' item on your _Bucket List_ ",2017-02-23,himss-review,"I had meant to do a write up of each day of my HIMSS experience, but time got away from me, as did the time zone change, and here I am at the end of HIMSS experience with only my day 0 notes down on _paper_. Day 1 started with … ",HIMSS review,https://www.ryancheley.com/2017/02/23/himss-review/ ryan,musings,"I have been wanting to put shelves up in my office above my desk for some time. The problem has been that the ones that are sold at Lowe’s or Home Depot are not really what I wanted (too short) and I’m not a super handy guy with building stuff (that’s more my dad and brother) so I’ve just been putting it off. For an embarrassingly long time. Last a couple of weekends ago my dad had volunteered to help me out in putting up some shelves. On Saturday at 8:30 we started. All in all the process went really, really well. Only one extra trip to the hardware store (it’s usually about 3) and the shelves were nice and level. Since I wanted the shelves above my desk we needed to move it, and all of the electronics that were on it, and plugged into the outlet behind it. This included a UPS / Battery backup that all of my electronics were plugged into. We moved everything away from the wall, and then I moved it back. No. Big. Deal. Now, the timing may have just been coincidental, but the next morning I needed to do some work for my job-y job from home. I took my laptop into my office (with the brand new shelves) and plugged it into the UPS. I noticed the lights flicker and discovered that the WiFi router (my trusty AirPort Extreme) seem to have reset itself. No big deal. I just rebooted and we were all good. Later that day I plugged in my iMac and then stuff got real. The lights went out. I figured that the breaker tripped, but the sprinklers next to the breaker were on so I waded out through to the box and turned the breaker back on. Or so I thought. I came back in and the lights were still off. At this point I freaked out because, well, that’s kind of what I do. I went back out and turned the breaker off and then back on. Lights are back. OK, lets try this again. I plug the iMac back in and ... crap. Lights are off again. Back to the breaker (at this point the sprinklers are off) so off and on the breaker went. OK, one last time and ... mother f! Somehow I was able to go from being able to have my UPS plugged in and everything being fine, to not. OK. Swap out the UPS and put back the Surge Protectors. Everything powers on and we’re good. Except we’re not. The light on my AirPort Extreme is suddenly not a solid green, but instead a flashing amber. I consult the [internet](https://support.apple.com/en-us/HT202211#amber ""About the status light on AirPort base stations"") and get a very unhelpful message > These are some typical reasons for the status light to flash amber: > > The base station hasn't been set up, or it was reset and needs to be set up > again. Use AirPort Utility to set up your base station. > > A firmware update is available for the base station. > > The base station is set up to use Back to My Mac, but Back to My Mac isn't > working or the password is incorrect. If you've upgraded to macOS Mojave, > you should remove the base station from your Back to My Mac network, because > Mojave doesn't support Back to My Mac. > > The base station can't connect to the Internet, such as when Internet > service is down at your location, the base station can't acquire an IP > address from your primary router, or the WAN Ethernet connection to your > router isn't working. > > The base station is set up to wirelessly extend the range of your network, > but is too far away from the primary Wi-Fi base station. > > If your base station is an AirPort Time Capsule, its internal hard disk is > experiencing an issue that requires repair. And suddenly my entire WiFi is down. And I am sad. I tried a ton of things to get the AirPort Extreme Back, but nothing is working. I finally throw in the towel and decide to to use the WiFi access point from my Fios router. This means that I have to update the WiFi on: * 3 iPhones * 2 iPads * 1 MacBook * 2 MacBookPros * 1 iMac * 2 Wemo Switches * 2 Raspberry Pi * 3 Apple TVs (2 4th Gen and 1 3rd Gen) * 1 WiFi connected Scale * 1 Ring Doorbell * 1 Ring Chime (connected to Ring Doorbell) It also means that I need to plug my Netgear switch into my Fios router instead of the AirPort Extreme. No big deal, right? Except that it was because I forget that the port that the Cat5 cable is plugged into on a router is important. I spent an embarrassingly long time trying to figure out why my Sonos and Hue Lights weren’t on my network. Emily kept telling me to take a break and relax and that was, in that moment, the last thing I wanted to do. I was able to get all of the iOS and MacOS devices connected back to the internet (via WiFi) and decided that I needed to forget the network and watch game 5 of the World Series. By the end of the 7th we had the game off and were catching up on CW Comic Book shows. It was a rough day. But I learned a couple of things: 1. LAN Port 1 on the Fios Router is the right port 2. Sometimes, you just need to take a step back and think instead of just react 3. I have a crap ton of WiFi devices I'm still working on trying to get the AirPort Extreme back to working so that I don't need to get a new WiFi router ( have I mentioned how awful the Fios one is? ). ",2018-11-05,hosing-my-wifi-set-up,"I have been wanting to put shelves up in my office above my desk for some time. The problem has been that the ones that are sold at Lowe’s or Home Depot are not really what I wanted (too short) and I’m not a super handy guy with … ",Hosing my WiFi set up,https://www.ryancheley.com/2018/11/05/hosing-my-wifi-set-up/ ryan,musings,"As technical folks working with non-technical folks sometimes the asks that come through are unclear. In order to get clarity on these we want to ask questions to get clarification on the ask, but it can be challenging to not sound like a jerk when we ask. This can happen even IF we do our best to come across in a positive way. When trying to ask for more details on a project or request I find it's usually best to get to the source of the issue. I like to ask, ""What problem are we trying to solve here?"" or something similar. This helps to put you and the requester on 'the same team' trying to 'solve the problem' and not in a potentially negative 'why are you asking me this stupid question' sort of light. I can't say that I have 'one weird trick' that will always make this not a problem, but recently at my $dayJob I had an experience that might be helpful in seeing how to navigate this particular process. ## The problem I received an email that went something like this > Please see below. It seems that delivery of paper reports via courrier could > be automated by sending them to a portal. What are your thoughts? My initial thought was, ""Yes, if we could automate these reports and send them electronically to a portal that would be more efficient."" However, there are some deeper questions here that need to be asked ... like: 1. Why are we sending these reports in the first place? Just asking this question though puts us into a potential state of conflict, i.e. it's similar to sounding like you're asking, ""why would you do this stupid thing"". In order to avoid this I reframed the question into 3 deeper questions that tried to frame 'the problem' and put me and the requester 'on the same team' to 'solve the problem' 1. What are the reports? 2. What are the recipients of the reports supposed to do with them? 3. Do the recipients of the reports find them helpful, or do they just put them in the shred bin? My first response to the sender was > Ideally any reports that are being delivered on printed paper by courrier > would be better served to be delivered via some electronic means. Can you > tell me, what are these reports and who are the intended recpients? I wanted to explicitly ask who the intended recipients were (I work in Healthcare and these reports are 'for the doctors' but they might actually be getting delivered to an office manager, a front desk person, or anyone other than the doctor). The sender responded back > They are reports that show a key metric for outstanding work left to do for > a specific population of their membership. Each doctor (or their office) are > free to do, or not do, anything with the information in these reports. Next I asked if the recipients had been surveyed on the usefulness of the reports and that's when the sender indicated: > Actually, no. It's something that we need to do so that we can potentially > consilidate reports and/or eliminate unhelpful reports. ## The Solution At the end we decided that before anywork was done to 'automate' the delivery of these reports, that we really needed to address the contents of the reports and determine which parts of them were helpful, and what parts weren't. Once we have a single report, or potentially a suite of reports, the automation and delivery work could actually start. By working through and trying to determine the actual problem that needed to be solved by asking questions to help both me and the requester better understand what the real ask was, we saved a ton of development time and have a better path forward for making the information we have more relevant and actionable by the doctors' offices. Will this work in every situation? Maybe not, but I believe it's a good starting point when trying to solve 'real world' problems in a work setting. Tech folks have a (sometimes deserved) bad wrap, but we can shed this negative impression by showing the people that request solutions from us that we're both working towards the same goal of solving the problem. ",2024-08-22,how-to-ask-why-without-sounding-like-a-jerk,"As technical folks working with non-technical folks sometimes the asks that come through are unclear. In order to get clarity on these we want to ask questions to get clarification on the ask, but it can be challenging to not sound like a jerk when we ask. This can happen … ",How to ask why without sounding like a jerk,https://www.ryancheley.com/2024/08/22/how-to-ask-why-without-sounding-like-a-jerk/ ryan,musings,"I’ve been thinking a bit about how to decide which team to root for. Mostly I just want to stay logically consistent with the way I choose to root for a team (when the Dodgers aren't playing obviously). After much thought (and sketches on my iPad) I’ve come up with this table to help me determine who to root for: * * * Opp1 / Opp 2 NL West NL Central NL East AL West AL Central AL East **NL West** Root for team that helps the Dodgers NL Central Team NL East Team NL West Team,unless it hurts the Dodgers NL West Team,unless it hurts the Dodgers NL West Team,unless it hurts the Dodgers **NL Central** NL Central Team Root for underdog NL Central Team NL Central Team NL Central Team NL Central Team **NL East** NL East Team NL Central Team Root for underdog NL East Team NL East Team NL East Team **AL West** NL West Team,unless it hurts the Dodgers NL Central Team NL East Team The Angels over the A's over the Mariners over the Rangers over the Astros AL West Team AL West Team **AL Central** NL West Team,unless it hurts the Dodgers NL Central Team NL East Team AL West Team Root for underdog AL Central Team **AL East** NL West Team,unless it hurts the Dodgers NL Central Team NL East Team AL West Team AL Central Team Root for underdog (unless it's the Yankees) * * * The basic rule is root for the team that helps the Dodgers payoff changes, then National League over American League and finally West over Central over East (from a division perspective). There were a couple of cool sketches I made, on real paper and my iPad. Turns out, sometimes you really need to think about thing before you write it down and commit to it. Of course, this is all subject to change depending on the impact any game would have on the Dodgers. ",2018-04-02,how-to-pick-a-team-to-root-for-when-the-dodgers-arent-playing,"I’ve been thinking a bit about how to decide which team to root for. Mostly I just want to stay logically consistent with the way I choose to root for a team (when the Dodgers aren't playing obviously). After much thought (and sketches on my iPad) I’ve come … ",How to pick a team to root for (when the Dodgers aren’t playing),https://www.ryancheley.com/2018/04/02/how-to-pick-a-team-to-root-for-when-the-dodgers-arent-playing/ ryan,musings,"## Game Structure Hockey has some stuff in common with live theater. No ... really! 😁 They both have dressing rooms and they both have intermission ... but that is probably where the similarities end. Each hockey game is split into three 20 minute periods. There is an intermission between each period that lasts 18 minutes. During the intermission the players go back to the dressing room to regroup and chat about the previous period a strategize for the upcoming period. Out in the arena there are chances for you to get overpriced refreshments, stand in long lines to use the facilities, or just stay in your seat and watch the silly intermission games. Some examples I've seen of silly intermission games are Fuego Pong (like quarters, but with soccer balls and large 5 gallon buckets), ice bowling where a player is put into a giant slingshot on the ice and hudled towards inflatable bowling pins, and the dress up game. It's also during this time that the ice is resurfaced by a [Zamboni](https://en.m.wikipedia.org/wiki/Ice_resurfacer) to make it nice and clean for the next period. If at the end of the third period the game is tied then you're in luck because you get free hockey, also known as Overtime. One thing to keep in mind is that the overtime rules during a regular season game are different than a postseason game. ### Regular Season Overtime Rules At the end of the third period there is a 1 minute 'intermission' and then a 5 minute overtime period starts. The overtime period will feature 3 skaters from each team as well as their goalie. If a penalty occurs in Overtime (or is carried over from the third period) the period starts with four players on the power play team and 3 on the short handed team.1 Each team tries to score a goal first. If they do, then they win in overtime. If, at the end of 5 minutes of play, the score is still tied then a shootout happens. In the shootout each team has 3 chances to score a [penalty shot](https://en.wikipedia.org/wiki/Penalty_shot_\(ice_hockey\)). Essentially a skater from each team has the opportunity to try and score a goal with only the goalie trying to prevent it. If at the end of the three rounds we're still tied, we keep sending out skaters to try and get that penalty shot until one team is victorious. The record for most rounds of a shoot out is [20 rounds](https://youtu.be/oH79V8zcMKk?si=pZYQ0ANCpsPrt-5z) in the NHL, and 16 rounds in the AHL. ### Postseason Overtime Rules Postseason overtime rules are a bit different. Basically you just keep adding 20 minute periods until someone scores. Once a team scores they have won that game. The longest overtime in NHL Postseason history went into the 6th overtime and was [played in 1936](https://records.nhl.com/records/playoff- team-records/overtime/longest-overtime-playoff) between the Detroit Red Wings and the Montreal Maroons. The longest AHL overtime was between the [Charlotte Checkers and the Lehigh Valley Phantoms](https://www.phantomshockey.com/timeline-relive-longest-game-ahl- history/#:~:text=The%20game%2C%20which%20took%20place,series%20lead%20over%20the%20Checkers) which went into a 5th overtime period. This game started at 7:03 pm local and didn't finish until almost 3:00 am local the next day! In general most hockey games don't get past the first OT period. From The 2006 playoffs through to the 2024 playoffs there have only been 52 games that have gone into a second overtime period (out of [1312](https://ahl- data.ryancheley.com/games?sql=select%0D%0A++g.game_status%0D%0A++%2C+min%28g.game_date%29%0D%0A++%2C+count%28%2A%29%0D%0Afrom%0D%0A++games+g%0D%0Ainner+join+dim_date+as+d+on+g.game_date+%3D+d.date%0D%0Awhere+d.season_phase+%3D+%27post%27%0D%0Agroup+by+g.game_status%0D%0Aorder+by+g.game_status&_hide_sql=1)). OK, you've got a few basics 'under your belt'. In the next part I'll try and answer the question, 'What should I watch?'. 1. essentially it would be a short Overtime period and probably pretty boring ↩︎ ",2025-01-29,how-to-watch-a-hockey-game-game-play,"## Game Structure Hockey has some stuff in common with live theater. No ... really! 😁 They both have dressing rooms and they both have intermission ... but that is probably where the similarities end. Each hockey game is split into three 20 minute periods. There is an intermission between each period that lasts … ",How to Watch a Hockey Game - Game Play,https://www.ryancheley.com/2025/01/29/how-to-watch-a-hockey-game-game-play/ ryan,musings,"This is the fourth part of my How to Watch a Hockey Game Series. You can catch up on previous articles [here](https://www.ryancheley.com/2025/01/27/how-to- watch-a-hockey-game-three-rules/) ## Game Outcomes In many North American sports when reading the standings there are typically just Wins (W), and Losses (L).1 Hockey is a bit different. When you look at the standings for Hockey you'll see 4 headers: * W: Wins * L: Losses * OTL: Overtime Losses * SOL: Shootout Losses As discussed [earlier in this series](https://www.ryancheley.com/2025/01/29/how-to-watch-a-hockey-game-game- play/), if a game is tied at the end of regulation, a five-minute overtime period is played. If either team scores during this Overtime period then the winning team gets a Win, while the losing team gets an Overtime Loss (OTL). If they're still tied then a Shootout is played. Once a winner is declared in the Shootout they get the Win, while the losing team gets a Shootout Loss. Because of this, values are assigned to each type of outcome: Outcome | Points ---|--- Win | 2 Loss | 0 OTL | 1 SOL | 1 This might best be shown with a concrete example. ## A Concrete Example Let's say that the Coachella Valley Firebirds have played 39 games so far. They have won 21 games and lost 13 games. They've also played in 5 games that went into overtime and lost. Their overtime losses are one (1) in the Overtime period and 4 in Shootouts. Their record would look like this: Coachella Valley Firebirds: 21-13-1-4 Points Calculation: * Wins: 21 × 2 = 42 points * OTL: 1 × 1 = 1 point * SOL: 4 × 1 = 4 points Total: 42 + 1 + 4 = 47 points The Firebirds play in the Pacific Division of the Western Conference, and the standings might look like this: Team | GP | W | L | OTL | SOL | PTS | PCT ---|---|---|---|---|---|---|--- Calgary | 41 | 27 | 13 | 1 | 0 | 55 | 0.671 Coachella Valley | 39 | 21 | 13 | 1 | 4 | 47 | 0.603 Colorado | 36 | 21 | 11 | 2 | 2 | 46 | 0.639 Ontario | 37 | 22 | 13 | 1 | 1 | 46 | 0.622 San Jose | 36 | 20 | 13 | 1 | 2 | 43 | 0.597 Abbotsford | 37 | 20 | 15 | 1 | 1 | 42 | 0.568 Tucson | 37 | 19 | 16 | 2 | 0 | 40 | 0.541 Bakersfield | 35 | 16 | 14 | 4 | 1 | 37 | 0.529 San Diego | 37 | 11 | 20 | 4 | 2 | 28 | 0.378 Henderson | 39 | 12 | 25 | 2 | 0 | 26 | 0.333 Legend: \- GP: Games Played \- W: Wins \- L: Losses \- OTL: Overtime Losses \- SOL: Shootout Losses \- PTS: Points \- PCT: Points Percentage ## Winning Percent There are 2 things to look at in the standings: (1) Total Points, and (2) Winning Percent. The Total Points we've already spoken about so let's review winning percent. The winning percent is calculated as the Total Points the team has divided by the total possible points that they could have gotten. The total possible points are calculated as the Games Played x 2 (that is, what are the total number of points that they would have if they won every game they played). That is Winning Percent = Total Points ÷ (Games Played × 2) For example in the table above, we see that the PCT column for the Firebirds is 0.603. This is calculated by the Points (47) divided by GP x 2 (39 x 2 = 78), that is 47 / 78 = 0.603. The winning percent allows ranking intra-season when teams haven't played the same number of games. After all games have been played, the rankings are determined by the total number of points a team has.2 ## Conclusion You should now be able to parse the standings in a Hockey League and be able to tell how well (or poorly) your team is doing. This is the end of my series (for now). If there are any other burning questions you have about hockey, reach out to me on [Mastodon](https://mastodon.social/@ryancheley). 1. Football also has Ties (T) but they are exceedingly rare and are only ever displayed when the first Tie of the season occurs ↩︎ 2. Depending on the league there are tiebreakers, but that's outside the scope of this article ↩︎ ",2025-02-03,how-to-watch-a-hockey-game-reading-the-standings,"This is the fourth part of my How to Watch a Hockey Game Series. You can catch up on previous articles [here](https://www.ryancheley.com/2025/01/27/how-to- watch-a-hockey-game-three-rules/) ## Game Outcomes In many North American sports when reading the standings there are typically just Wins (W), and Losses (L).1 Hockey is a bit different. When you … ",How to Watch a Hockey Game - Reading the Standings,https://www.ryancheley.com/2025/02/03/how-to-watch-a-hockey-game-reading-the-standings/ ryan,musings,"I've written a few times before about hockey. I love watching my local sports puck team1 and really wish more people watched it. So, I'm going to write a beginners guide to watching hockey so that you too, dear reader, can become an avid fan. Hockey is a pretty fast paced game at the professional level. In the 90s Fox Sports had broadcast rights to hockey in the US and to help its viewers they had a glowing halo on the puck called [FoxTrax](https://en.wikipedia.org/wiki/FoxTrax) which allowed fans to more easily find it. This practice was discontinued at some point, and I honestly think it was one of the better innovations that Fox Sports did and really wish that it would make a come back. ## The Rules As a beginner hockey observer there's only three rules that you really need to know to be able to follow the game. 1. Offside2 2. Icing 3. Power Play / Penalty Kill ### The Set up The ice rink can be broken into 3 sections from the perspective of 1 team. Let's assume we have two teams, A and B. Let's root for team A. ![Ice Hockey Rink](https://www.conceptdraw.com/How-To-Guide/picture/Sport- Hockey-Simple-hockey-field-Template.png) 1. The Defending zone - This is where team A's Goal is located. It starts right behind team A's goal and goes to the right toward the blue line 2. Neutral Zone - This is the center of the ice between the two blue lines; it also contains a red line that is called 'Center Ice' 3. The Attacking Zone - This is where team A are trying to score. It starts at the OTHER blue line and goes back behind Team B's goal ### Offside Offside is defined as ... actually that's not important. What is important to understand is that a player on the offense cannot enter their Attacking zone before the puck does. If they do, then that player is called Offside. When an Offside happens a face off takes place outside of the Attacking zone (i.e. in the Neutral Zone) where each team will try and gain control of the puck. ### Icing Icing, or icing the puck, is when a player in their half of the ice and shots the puck down the ice towards their Attacking zone and it is NOT touched by anyone before it passes the face off circles in the Attacking zone. When an icing occurs the puck is returned to the defending zone for a face off3. When an icing occurs the team that the icing is called on have to keep all of their players on the ice, that is, they can not send in any substitutions. ### Power Play / Penalty Kill The two rules above, when broken, result in a stoppage of play and a new face off for each team to try to gain control of the puck. Other rules, when broken, will result in a penalty4 which sees one, or more, players sent to the Penalty Box5. Penalties can either be minor, which result in a two minute penalty, or major, which typically result in a 5 minute penalty6. When a team is on the Power Play they will have 1 or more extra skaters than the other team. The other team's 'missing' players will be in the Penalty Box. The Power Play team, with the advantage, will remain on that advantage until either they score OR the penalty expires. If a team scores while on the Power Play, they are said to have scored a Power Play Goal. The team that has penalized players is said to be on the Penalty Kill. They are trying to 'kill' the advantage that the Power Play brings to the other team. If the team on the Penalty Kill scores a goal, it is called a Short- handed goal ... because they were short a person, i.e. short handed, when the goal was scored. In the [National Hockey League](https://www.nhl.com/) (NHL), [American Hockey League](https://theahl.com/) (AHL), and most other leagues when a short handed goal is scored the Penalty keeps going until time is over OR a goal is scored by the team on the Power Play. The [Professional Women's Hockey Leagure](https://www.thepwhl.com/en/) (PWHL) has a rule (which I think is genius) which states that IF a team scores a short handed goal, the Power Play is over.7 In the next post I'll talk a bit more about game play. 1. The [Coachella Valley Firebirds](https://cvfirebirds.com) ↩︎ 2. in hockey it is not pluralized like in American Football ... even though in American Football it's not pluralized either! ↩︎ 3. This does NOT apply when your team is on a Penalty Kill ↩︎ 4. I'll talk more about various penalties in future a post ↩︎ 5. it's a small room where players are sent to think about what they did ↩︎ 6. There are a few caveats here about game misconduct, but they're not important for an introductory primer ↩︎ 7. Now, there are lots of Nuances to the PP/PK write up above, but you don't need to understand them initially to enjoy hockey. ↩︎ ",2025-01-27,how-to-watch-a-hockey-game-three-rules,"I've written a few times before about hockey. I love watching my local sports puck team1 and really wish more people watched it. So, I'm going to write a beginners guide to watching hockey so that you too, dear reader, can become an avid fan. Hockey is a pretty … ",How to Watch a Hockey Game - Three Rules,https://www.ryancheley.com/2025/01/27/how-to-watch-a-hockey-game-three-rules/ ryan,musings,"In [a previous post of this series](https://www.ryancheley.com/2025/01/27/how- to-watch-a-hockey-game-three-rules/) I laid out some basic rules of hockey. In this post I'll hopefully provide some tips on what to watch during your first few hockey games. ## What should I 'watch' though? This is a tough question and depends on if you're watching on TV or in person. ### On TV If you're watching on TV you're limited by whatever the camera and director are showing you. Hopefully they're pretty good at what they do and they'll help to show you what is interesting. You'll also have the benefit of replays. 1 Watching the action on TV will be your best bet. The commentators will do a reasonable job of explaining the play. For some of the best NHL broadcasts you'll want to watch a Canadian feed. This might not be an option depending on where you live, but in general, watching a Canadian feed of a Canadian team will be really helpful. If, for whatever reason, you're watching an AHL game2 the best broadcasts to watch, in my opinion, are the Lehigh Valley Phantoms called by [Bob Rotruck](https://www.phantomshockey.com/staff/bob-rotruck/) and Cleveland Monsters called by [Tony Brown](https://www.tonybrownpxp.com/). Each of these is a single broadcaster doing both the color commentary and the play-by-play ... and they honestly get **so** excited it's hard to NOT get excited with them. ### In Person For your first in person game, just try and follow the puck as best you can. If for whatever reason you can't do that, pick a spot on the ice to concentrate on, preferably near one of the goalies. Which one? The goalie of the team you're not rooting for is a good choice! Then you can just kind of watch the action there. Keeping in mind [the rules](https://www.ryancheley.com/2025/01/27/how-to- watch-a-hockey-game-three-rules/) start by focusing on just one rule - either icing or offside - for an entire period. Once you feel comfortable recognizing that rule during gameplay, switch your attention to watching for the other rule in the next period. For example, if you spent the first period watching for icing, spend the next period looking for offside plays. Hopefully after a full game you're able to see them when icing or offside happen. If not, it just means you'll need to come back and try again 😁. ## What not to worry about Hockey is a fast paced game. No, like really fast. Don't worry too much about anything other than watching for the puck, if you can, and trying to pick up icing and offside. You'll see other stoppages in play when a penalty is called. The refs will make [hand gestures](https://www.chicagowolves.com/gameday/hockey-101/penalties-and- signals/) to indicate the call on the ice and someone will be sent to the box. Don't worry about whether or not a fight will break out. They don't always, and if they do, each player will be assessed a major penalty and will spend 5+ minutes in the penalty box. Don't worry too much about learning the positions. The goalie is an obvious one (that's the person with all of the pads, the bigger stick, and the giant, well painted mask in front of the net), but trying to distinguish between a defender and a center ... like just don't worry about it! ## Conclusion Hockey is an amazing sport to watch, whether in person or on TV. It can take a little bit of time to get used to the fast pace, but hopefully this series has given you some tips to enjoy it and understand what's going on. 1. and refreshments that are much less expensive! ↩︎ 2. home of my beloved Coachella Valley Firebirds ↩︎ ",2025-01-31,how-to-watch-a-hockey-game-what-to-watch,"In [a previous post of this series](https://www.ryancheley.com/2025/01/27/how- to-watch-a-hockey-game-three-rules/) I laid out some basic rules of hockey. In this post I'll hopefully provide some tips on what to watch during your first few hockey games. ## What should I 'watch' though? This is a tough question and depends on if you're watching on … ",How to Watch a Hockey Game - What to Watch,https://www.ryancheley.com/2025/01/31/how-to-watch-a-hockey-game-what-to-watch/ ryan,musings,"I have a 10 year old daughter in the fifth grade. She has participated in the Science Fair almost every year, but this year was different. This year was required participation. dun … dun … dun … She and her friend had a really interesting idea on what to do. They wanted to ask the question, **“Is Soap and Water the Best Cleaning Method?** ” The two Scientists decided that they would test how well the following cleaning agents cleaned a white t-shirt (my white t-shirt actually) after it got dirty: * Plain Water * Soap and Water * Milk * Almond Milk While working with them we experimented on how to make the process as scientific as possible. Our first attempt was to just take a picture of the Clean shirt, cut the shirt up and get it dirty. Then we’d try each cleaning agent to see how it went. It did not go well. It was immediately apparent that there would be no way to test the various cleaning methods efficacy. No problem. In our second trial we decided to approach it more scientifically. We would draw 12 equally sized squares on the shirt and take a picture: ![Clean Shirt](/images/uploads/2016/12/Clean-Shirt-Grid-small-300x200.png) We needed 12 squares because we had 4 cleaning methods and 3 trials that needed to be performed > > 4 Cleaning Methods X 3 Trials = 12 Samples Next, the Scientists would get the shirt dirty. We then cut out the squares so that we could test cleaning the samples. Here’s an outline of what the Scientists did to test their hypothesis: 1. Take a picture of each piece BEFORE they get dirty 2. Get each sample dirty 3. Take a picture of each dirty sample 4. Clean each sample 5. Take a picture of each cleaned sample 6. Repeat for each trial For the ‘Clean Each Sample’ step they placed 1/3 of a cup of the cleaning solution into a small Tupperware tub that could be sealed and _vigorously_ shook for 5 minutes. They had some tired arms at the end. Once we had performed the experiment we our **raw** data: # Trial 1 Method Start Dirty Cleaned * * * Water ![Trial1_Start_Water](/images/uploads/2016/12/Trial1_Start_Water-300x300.jpg) ![Trial1_Dirty_Water](/images/uploads/2016/12/Trial1_Dirty_Water-300x300.jpg) ![Trial1_Clean_Water](/images/uploads/2016/12/Trial1_Clean_Water-300x300.jpg) Soap And Water ![Trial1_Start_SoapAndWater](/images/uploads/2016/12/Trial1_Start_SoapAndWater-300x300.jpg) ![Trial1_Dirty_SoapAndWater](/images/uploads/2016/12/Trial1_Dirty_SoapAndWater-300x300.jpg) ![Trial1_Clean_SoapAndWater](/images/uploads/2016/12/Trial1_Clean_SoapAndWater-300x300.jpg) Milk ![Trial1_Start_Milk](/images/uploads/2016/12/Trial1_Start_Milk-300x300.jpg) ![Trial1_Dirty_Milk](/images/uploads/2016/12/Trial1_Dirty_Milk-300x300.jpg) ![Trial1_Clean_Milk](/images/uploads/2016/12/Trial1_Clean_Milk-300x300.jpg) Almond Milk ![Trial1_Start_Milk](/images/uploads/2016/12/Trial1_Start_Milk-300x300.jpg) ![Trial1_Dirty_Milk](/images/uploads/2016/12/Trial1_Dirty_Milk-300x300.jpg) ![Trial1_Clean_Milk](/images/uploads/2016/12/Trial1_Clean_Milk-300x300.jpg) * * * # Trial 2 Method Start Dirty Cleaned * * * Water ![Trial2_Start_Water](/images/uploads/2016/12/Trial2_Start_Water-300x300.jpg) ![Trial2_Dirty_Water](/images/uploads/2016/12/Trial2_Dirty_Water-300x300.jpg) ![Trial2_Clean_Water](/images/uploads/2016/12/Trial2_Clean_Water-300x300.jpg) Soap And Water ![Trial2_Start_SoapAndWater](/images/uploads/2016/12/Trial2_Start_SoapAndWater-300x300.jpg) ![Trial2_Dirty_SoapAndWater](/images/uploads/2016/12/Trial2_Dirty_SoapAndWater-300x300.jpg) ![Trial2_Clean_SoapAndWater](/images/uploads/2016/12/Trial2_Clean_SoapAndWater-300x300.jpg) Milk ![Trial2_Start_Milk](/images/uploads/2016/12/Trial2_Start_Milk-300x300.jpg) ![Trial2_Dirty_Milk](/images/uploads/2016/12/Trial2_Dirty_Milk-300x300.jpg) ![Trial2_Clean_Milk](/images/uploads/2016/12/Trial2_Clean_Milk-300x300.jpg) Almond Milk ![Trial2_Start_AlmondMilk](/images/uploads/2016/12/Trial2_Start_AlmondMilk-300x300.jpg) ![Trial2_Dirty_AlmondMilk](/images/uploads/2016/12/Trial2_Dirty_AlmondMilk-300x300.jpg) ![Trial2_Clean_AlmondMilk](/images/uploads/2016/12/Trial2_Clean_AlmondMilk-300x300.jpg) * * * # Trial 3 Method Start Dirty Cleaned * * * Water ![Trial3_Start_Water](/images/uploads/2016/12/Trial3_Start_Water-300x300.jpg) ![Trial3_Dirty_Water](/images/uploads/2016/12/Trial3_Dirty_Water-300x300.jpg) ![Trial3_Clean_Water](/images/uploads/2016/12/Trial3_Clean_Water-300x300.jpg) Soap And Water ![Trial3_Start_SoapAndWater](/images/uploads/2016/12/Trial3_Start_SoapAndWater-300x300.jpg) ![Trial3_Dirty_SoapAndWater](/images/uploads/2016/12/Trial3_Dirty_SoapAndWater-300x300.jpg) ![Trial3_Clean_SoapAndWater](/images/uploads/2016/12/Trial3_Clean_SoapAndWater-300x300.jpg) Milk ![Trial3_Start_Milk](/images/uploads/2016/12/Trial3_Start_Milk-300x300.jpg) ![Trial3_Dirty_Milk](/images/uploads/2016/12/Trial3_Dirty_Milk-300x300.jpg) ![Trial3_Clean_Milk](/images/uploads/2016/12/Trial3_Clean_Milk-300x300.jpg) Almond Milk ![Trial3_Start_AlmondMilk](/images/uploads/2016/12/Trial3_Start_AlmondMilk-300x300.jpg) ![Trial3_Dirty_AlmondMilk](/images/uploads/2016/12/Trial3_Dirty_AlmondMilk-300x300.jpg) ![Trial3_Clean_AlmondMilk](/images/uploads/2016/12/Trial3_Clean_AlmondMilk-300x300.jpg) This is great and all, but now what? We can’t really use subjective measures to determine cleanliness and call it science! My daughter and her friend aren’t coders, but I did explain to them that we needed a more scientific way to determine cleanliness. I suggested that we use `python` to examine the image and determine the brightness of the image. We could then use some math to compare the brightness. 1 Now, onto the code! OK, let’s import some libraries: from PIL import Image, ImageStat import math import glob import pandas as pd import matplotlib.pyplot as plt There are 2 functions to determine `brightness` that I found [here](http://stackoverflow.com/questions/3490727/what-are-some-methods-to- analyze-image-brightness-using-python). They were super useful for this project. As an aside, I love StackOverflow! #Convert image to greyscale, return average pixel brightness. def brightness01( im_file ): im = Image.open(im_file).convert('L') stat = ImageStat.Stat(im) return stat.mean[0] #Convert image to greyscale, return RMS pixel brightness. def brightness02( im_file ): im = Image.open(im_file).convert('L') stat = ImageStat.Stat(im) return stat.rms[0] The next block of code takes the images and processes them to get the return the brightness levels (both of them) and return them to a `DataFrame` to be used to write to a `csv` file. I named the files in such a way so that I could automate this. It was a bit tedious (and I did have the scientists help) but they were struggling to understand why we were doing what we were doing. Turns out teaching CS concepts is harder than it looks. f = [] img_brightness01 = [] img_brightness02 = [] trial = [] state = [] method = [] for filename in glob.glob('/Users/Ryan/Dropbox/Abby/Science project 2016/cropped images/**/*', recursive=True): f.append(filename.split('/')[-1]) img_brightness01.append(round(brightness01(filename),0)) img_brightness02.append(round(brightness02(filename),0)) for part in f: trial.append(part.split('_')[0]) state.append(part.split('_')[1]) method.append(part.split('_')[2].replace('.png', '').replace('.jpg','')) dic = {'TrialNumber': trial, 'SampleState': state, 'CleaningMethod': method, 'BrightnessLevel01': img_brightness01, 'BrightnessLevel02': img_brightness02} results = pd.DataFrame(dic) I’m writing the output to a `csv` file here so that the scientist will have their data to make their graphs. This is where my help with them ended. #write to a csv file results.to_csv('/Users/Ryan/Dropbox/Abby/Science project 2016/results.csv') Something I wanted to do though was to see what our options were in `python` for creating graphs. Part of the reason this wasn’t included with the science project is that we were on a time crunch and it was easier for the Scientists to use [Google Docs](https://docs.google.com) to create their charts, and part of it was that I didn’t want to cheat them out of creating the charts on their own. There is a formula below to determine a `score` which is given by a normalized percentage that was used by them, but the graphing portion below I did after the project was turned in. Let’s get the setup out of the way: #Create Bar Charts trials = ['Trial1','Trial2','Trial3'] n_trials = len(trials) index = np.arange(n_trials) bar_width = 0.25 bar_buffer = 0.05 opacity = 0.4 graph_color = ['b', 'r', 'g', 'k'] methods = ['Water', 'SoapAndWater', 'Milk', 'AlmondMilk'] graph_data = [] Now, let’s loop through each cleaning method and generate a list of scores (where one score is for one trial) for singlemethod in methods: score= [] for trialnumber in trials: s = results.loc[results['CleaningMethod'] == singlemethod].loc[results['TrialNumber'] == trialnumber].loc[results['SampleState'] == 'Start'][['BrightnessLevel01']] s = list(s.values.flatten())[0] d = results.loc[results['CleaningMethod'] == singlemethod].loc[results['TrialNumber'] == trialnumber].loc[results['SampleState'] == 'Dirty'][['BrightnessLevel01']] d = list(d.values.flatten())[0] c = results.loc[results['CleaningMethod'] == singlemethod].loc[results['TrialNumber'] == trialnumber].loc[results['SampleState'] == 'Clean'][['BrightnessLevel01']] c = list(c.values.flatten())[0] scorepct = float((c-d) / (s - d)) score.append(scorepct) graph_data.append(score) This last section was what stumped me for the longest time. I had such a mental block converting from iterating over items in a list to item counts of a list. After much [Googling](https://www.google.com) I was finally able to make the breakthrough I needed and found the idea of looping through a range and everything came together: for i in range(0, len(graph_data)): plt.bar(index+ (bar_width)*i, graph_data[i], bar_width-.05, alpha=opacity,color=graph_color[i],label=methods[i]) plt.xlabel('Trial Number') plt.axvline(x=i-.025, color='k', linestyle='--') plt.xticks(index+bar_width*2, trials) plt.yticks((-1,-.75, -.5, -.25, 0,0.25, 0.5, 0.75, 1)) plt.ylabel('Brightness Percent Score') plt.title('Comparative Brightness Scores') plt.legend(loc=3) The final output of this code gives: ![Results_Graph](/images/uploads/2016/12/Results_Graph-300x212.png) From the graph you can see the results are … inconclusive. I’m not sure what the heck happened in Trial 3 but the Scientists were able to make the samples dirtier. Ignoring `Trial 3` there is no clear winner in either `Trial 1` or `Trial 2`. I think it would have been interesting to have 30 - 45 trials and tested this with a some statistics, but that’s just me wanting to show something to be statistically valid. I think the best part of all of this was the time I got to spend with my daughter and the thinking through the experiment. I think she and her friend learned a bit more about the scientific method (and hey, isn’t that what this type of thing is all about?). I was also really excited when her friend said, “Science is pretty cool” and then had a big smile on her face. They didn’t go onto district, or get a blue ribbon, but they won in that they learned how neat science can be. 1. [The score is the ratio of how clean the cleaning method was able to get the sample compared to where it started, i.e. the ratio of the difference of the `cleaned` sample and the `dirty` sample to the difference of the `starting` sample and the `dirty` sample. ↩︎ ",2016-12-17,its-science,"I have a 10 year old daughter in the fifth grade. She has participated in the Science Fair almost every year, but this year was different. This year was required participation. dun … dun … dun … She and her friend had a really interesting idea on what to do. They wanted to … ",It's Science!,https://www.ryancheley.com/2016/12/17/its-science/ ryan,musings,"One thing I like to do with my family is watch movies. But not just any movies, Comic Book movies. We've seen both [Thor](https://itun.es/us/ieifP) and [Thor: The Dark World](https://itun.es/us/7tLNR), [Iron Man](https://itun.es/us/sLibP) and [Guardians of the Galaxy](https://itun.es/us/KoVM1). It's not a lot, but we're working on it. I've mapped out the [Marvel Cinematic Universe](https://en.m.wikipedia.org/wiki/Marvel_Cinematic_Universe) movies for us to watch, and it's OK, but there wasn't a easy way to link into the iTunes store from the list. I decided that I could probably use [Workflow](https://appsto.re/us/2IzJ2.i) to do this, but I hadn't really worked with it to do it, but today I had a bit of time and figured, ""what they heck ... why not?"" My initial attempt was clunky. It required to workflows to accomplish what I needed. This was because I had to split the work of [Workflow](https://appsto.re/us/2IzJ2.i) into 2 workflows: * Get the Name * Get the Link Turns out there's a much easier way, so I'll post the link to that workflow, and not the workflows that are much harder to use! The workflow [Add Movie to Watch](https://workflow.is/workflows/66f269ed34cb42469df4de8dcb7739e7) accepts `iTunes products`. The workflow then does the following: * It saves the `iTunes products` URL as a variable called `iTunes` * It then gets the `iTunes` variable to retrieve the `Name` and sets the value to a variable called `Movie` * Next it asks 'Who is the movie being added by?' This is important for my family as we want a common list, but it's also good to know who added the movie! * This value is saved to a variable called `User` * Finally, I want to know when the movie was added so I get the current date. We take all of the items and construct a bit of `text` that looks like this: `[{Movie}]({iTunes}) - Added on {Input} by {User}` Where each of the words above surrounded by the {} are the variable names previously mentioned ({Input} is from the get current date and doesn't need to be saved to a variable). In my last step I take this text and append it to a file in Dropbox called `Movies to Watch.md`. It took **way** longer than I would have liked to finish this up, but at the end of the day, I'm glad that I was able to get it done. ",2016-11-28,keeping-track-of-which-movies-i-want-to-watch,"One thing I like to do with my family is watch movies. But not just any movies, Comic Book movies. We've seen both [Thor](https://itun.es/us/ieifP) and [Thor: The Dark World](https://itun.es/us/7tLNR), [Iron Man](https://itun.es/us/sLibP) and [Guardians of the Galaxy](https://itun.es/us/KoVM1). It's not a lot, but we're working on it. I've mapped out the [Marvel …](https://en.m.wikipedia.org/wiki/Marvel_Cinematic_Universe) ",Keeping track of which movies I want to watch,https://www.ryancheley.com/2016/11/28/keeping-track-of-which-movies-i-want-to-watch/ ryan,musings,"# Looking Back at the Half Marathon Streak ## How It Started In February 2012, a half marathon was being held in Palm Springs, and one of my walking friends asked if I wanted to do it... about 5 days before it was set to happen. I said I wasn't interested, and she said ""Where is your sense of adventure?"" ... though it was in slightly more colorful language. Six days later, I was participating in my first half marathon. Now, I hadn't really run too much up to that point. A 5K here and there, and for the most part, I wasn't running much during those ""runs"". At the start of the half marathon, I looked at my friend that had persuaded me to participate and said something like, ""We're just going to walk, right?"" She said we had to run at least some of it. Eight miles later, I was still running and enjoying it. She wanted to walk a bit. So we did, and then she encouraged me to start running again, so I did. ## The First Taste of Success I finished that first half marathon in something like 2h30m, but I was suddenly hooked. I thought, ""I bet if I actually _trained_ for a half marathon, I could do better."" So I set out to train for a half marathon. I started a training schedule using [this plan](https://www.halhigdon.com/training-programs/half-marathon- training/novice-1-half-marathon/) and was able to complete the San Diego Rock 'n Roll half in a little more than 2 hours. I continued to run medium distances (up to 12 miles on weekends) and really enjoyed it. I got to a point where I was in the best shape of my life. I had a resting heart rate of something like 50 with blood pressure that was pretty low (almost low enough that my doctor was concerned!) but my labs were good, and I felt GREAT! ## The Birth of the Streak I was looking at half marathons in 2014 and saw the Palm Springs one again, but also saw one in a local city called [Desert Hot Springs](https://www.cityofdhs.org/) in December 2013. Then there was the Carlsbad half in January 2014. Another one looked interesting in Zion National Park (sort of) in March of 2014. And then I saw that there was the La Jolla half in April. It also turns out that if you run the Carlsbad, La Jolla, and America's Finest City (AFC) half marathons, you get a nice triple crown medal. Well, the AFC was in August. I was looking at the calendar and thought, ""Holy shit, I might be able to schedule half marathons each month for an entire year!"" ## The Journey Begins In November of 2013, I signed up for a couple of the half marathons that were further out (essentially the ones for the Triple Crown medal) and the Palm Springs half. I wanted to do the Zion run, but it's a 10-12 hour drive to Zion from where I live. I casually mentioned this to an acquaintance who said, ""I'd run that with you."" The next thing I knew, I had a pretty good string of runs set up: (1) Carlsbad, (2) Palm Springs, (3) Zion, (4) La Jolla, (5) America's Finest City ... but I still hadn't told anyone, other than my wife, about my crazy idea to run a half marathon each month. ## Making the Commitment One day while on a walk with a friend, I mentioned that I was thinking about doing it and he said, ""That's an awesome idea... you should totally do it."" We spent most of the walk with me talking about the idea and wavering until I finally just said, ""I'm going to do it."" And that was it. I had made a commitment, publicly, about this thing I was going to do. ## The Year of Running All that was left was to finalize each of the runs, and then train. And by train, I mean run. A lot. So much running. I ended up running 13 half marathons in 364 days, bookending the feat with the Half Marathon in Desert Hot Springs in December of 2013 and 2014. In all, I ran in the following cities (some still have my results online!): * Desert Hot Springs (twice!) in December (2013, [2014](https://my.racewire.com/result/3182333)) * [Carlsbad](https://my.racewire.com/athlete/5131448) in January * Palm Springs in February * Zion in March * [La Jolla](https://my.racewire.com/result/5108370) in April * Menifee in May * Rock n Roll in San Diego in June * Oceanside in July * [San Diego (AFC)](https://my.racewire.com/result/5064858) in August * Ventura in September * San Luis Obispo (SLO) in October * Santa Barbara in November During that year I ran roughly 1000 miles training, and 170.3 miles for the actual runs. ## The Reality of the Challenge I have never been so tired in all of my life as I was that year, but I look back on it and it was really fun. At the beginning of the year, I had an idea that I would get better and faster at running. That didn't happen1 for a variety of reasons, but mostly because it wasn't fun. What was fun was going to different places with my family where the races were being held and hanging out with them. I still have fond memories of being in Ventura and going to a thrift store with my wife and daughter and finding a pair of roller skates that fit my daughter perfectly. ## The Memorable Moments I remember the kitschy B&B in Santa Barbara where my wife and I stayed and walking around Santa Barbara and finding this cool co-op style building with lots of vendors for getting food, drinks, or artisanal handcrafted stuff. I also remember running the La Jolla half with a low-grade fever and realizing exactly how bad of an idea that was. Also, that hill at mile five on that course was absolutely brutal! ## The Why of It All In looking back on this, I don't really know why I did it other than the hubris of thinking I could, and then telling someone I was going to. The hardest stretch was the runs in the second quarter. The first one (La Jolla) was the last weekend in April, the Menifee one was in the middle of May, and the Rock n Roll in San Diego was the first week of June. I ran three half marathons in five weeks. I still look back on that and think it was the point that broke me. ## The Challenges I really did want to give up more times than I can remember, but because I had said I was going to do a thing, I was going to do it no matter what. There was the nerve-wracking part where I was also going to do a run-a-mile every day between Thanksgiving and New Year's, and then on the first run, I twisted my ankle so my adventure almost didn't even start at all! ## The Lessons Learned I look back on this experience and remember that yes, I can do hard things. Yes, they are worth it, but not always for the reasons that you think they will be. Telling someone you're going to do something hard can help push you forward and keep you accountable, even just to yourself. ## Looking Forward Would I ever do something like this again? Maybe if I was 10 years younger! In all seriousness, I think I would IF I went into it with a bit of a different headspace. When I started this challenge in 2013, it was with the piss and vinegar of a young person who was sure they could conquer the world. If I did it this time, I would be more mindful. I would try to enjoy the practice of running. I would enjoy the destinations I was going to get to run in. I would share these joys more with my family. ## The Support System Doing things like this are never done alone. I think that was the thing I learned most about this. During that year, there were some sacrifices made that I didn't realize at all. My wife and daughter did a really good job of supporting me and my decision, but it did put some strain on family life. ## Work-Life Balance Something else it taught me, ironically, was a bit of work-life balance. I was the manager for a technical team at the time. We had an upgrade that was set to happen the weekend before my Menifee run in May. Due to an issue with a third-party vendor for that application, we had to push back the upgrade... I had to decide to push back the upgrade which meant it would happen the weekend of my run. As I was working towards making the decision, my boss and my team all knew what I was trying to do, and they supported not only the decision to push back the upgrade but also encouraged me to go do the run. They told me that they could handle the upgrade without me, and they did. ## The Hard Lessons That Menifee run was also where I discovered, for the first time, exactly how bad dehydration can make you feel. Not an experience I recommend, and not one I ever hope to repeat. There are still parts of Old Town Temecula that make me feel a bit queasy when I visit them! ## The Final Reflection Overall, this was a great experience, and I learned a lot about myself. But I also learned a lot about my friends, family, and coworkers as well. Would I do it again ... maybe. Would I like to run at least one of those half marathons again? Absolutely. I just need to get back into running shape! 1. just take a look at my available results above via the links! ↩︎ ",2025-01-17,looking-back-at-the-half-marathon-streak,"# Looking Back at the Half Marathon Streak ## How It Started In February 2012, a half marathon was being held in Palm Springs, and one of my walking friends asked if I wanted to do it... about 5 days before it was set to happen. I said I wasn't interested, and … ",Looking Back at the Half Marathon Streak,https://www.ryancheley.com/2025/01/17/looking-back-at-the-half-marathon-streak/ ryan,musings,"To say that I attend a lot of meetings is a bit of an understatement. However, as a manager that is part of my job and I accept that it is something I need to do. What I have been trying to do at my office is lead more effective meetings, but also to encourage my colleagues to have more effective meetings as well. It's been challenging as the organization I work for is large and all I can do is lead by example with the meetings that I am in. Until now ... maybe I read an article on [LinkedIn](https://www.linkedin.com) titled [Tired of wasting time in meetings? Try this](https://www.linkedin.com/pulse/tired- wasting-time-meetings-try-oisin-grogan) and there were several suggestions for better meetings some of which I already knew: 1. Define the purpose of the meeting 2. Define the outcome of the meeting 3. Have a timed agenda and someone in charge And others that I didn't: 1. Facts - not opinions! 2. Keep people on-point. (Only talk about matters relating to their job) I think that number 4 is a key idea for any meeting (that isn't a brainstorming meeting) but number 5 is a bit too much. Keeping people on point is an important aspect to any meeeting, but only allowing people to talk about matters related to their job ... what is the dividing line between 'my job' and 'not my job'? This seems like it wouldn't actually have the intended outcome. I think people who are already quite will be encouraged to stay quite as the topic isn't related to their job (even if it might be) and those that talk too much already will assume that everything is related to their job so they will still contribute inappropriately. I think that point 5 is much better when restated as: 1. Keep people on-point, only talk about the current agenda item The article did include a nice diagram that you can download (need to provide an email address first). ",2017-02-04,making-better-meetings-maybe,"To say that I attend a lot of meetings is a bit of an understatement. However, as a manager that is part of my job and I accept that it is something I need to do. What I have been trying to do at my office is lead more effective … ",Making Better Meetings ... maybe,https://www.ryancheley.com/2017/02/04/making-better-meetings-maybe/ ryan,musings,"Having just finished up my second round of Djangonaut.Space (which I wrote about [here](https://www.ryancheley.com/2024/08/29/reflections-on-djangonaut- space-session-2/)) 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](https://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 ↩︎ ",2024-09-16,mentors,"Having just finished up my second round of Djangonaut.Space (which I wrote about [here](https://www.ryancheley.com/2024/08/29/reflections-on-djangonaut- space-session-2/)) 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 … ",Mentors,https://www.ryancheley.com/2024/09/16/mentors/ ryan,musings,"This weekend I migrated my site from [Square Space](https://www.squarespace.com ""Spare Squace!"") to [WordPress](https://www.wordpress.com ""WordPress!""). I had been planning to do this for a while (ever since a [Hover](https://www.hover.com ""Hover!"") ad read on [ATP](https://www.atp.fm ""Accidental Tech Podcast"") earlier this summer). This weekend was the last weekend before my [Square Space](https://www.squarespace.com ""Spare Squace!"")subscription was set to expire so I finally made the switch. ## Why I did it [Square Space](https://www.squarespace.com ""Spare Squace!"") offers a beautiful interface and great templates to get you started. They make everything about setting up a blog, portfolio or online store as easy as it can get. But ... that’s kind of where it ends for me. While the set up is amazingly easy, the actually content posting (for me this means my writing) was more difficult than I would have liked. In order to get something posted to my [Square Space](https://www.squarespace.com ""Spare Squace!"") site I would write something in anyone of a number of Plain Text Editors ([BBEdit](https://www.barebones.com/products/bbedit/), [Drafts](https://agiletortoise.com/drafts/), [Editorial](http://omz- software.com/editorial/), [Ulysses](https://ulyssesapp.com)). Then I would preview the generated `HTML` to verify it looked the way I wanted it to. Finally, I would post my `MarkDown` to the [Square Space](https://www.squarespace.com ""Spare Squace!"") Blog App on iOS and do it All. Over. Again. To say that it was frustrating is a bit of an understatement. I looked really hard to see what `API`s existed and found that there _used to be_ an API but that Square Space removed them for some reason. So no direct posting to my blog by my favorite text editors. So, with Hover having a discount on domains, and me getting an [AWS](https://aws.amazon.com ""Amazon Web Services"")account where I could host WordPress and a rich set of WordPress `API`s to post directly from some of my favorite text editors, it seemed like a no brainer to make the switch. ## How I set up my Wordpress Install The AWS ecosystem has some amazing documentation on how to do just about anything that you want. So, instead of laboriously taking screenshots and writing up what I did, I’ll just link to [Amazon’s Launch a WordPress Website tutorial](https://aws.amazon.com/getting-started/tutorials/launch-a-wordpress- website/ ""Launch a WordPress Website"") ## Exporting from Square Space to Wordpress For all the pain it was to get content into SquareSpace, it was a breeze to get it out. Again, no need to get screenshots or write it up if I can just [link](https://support.squarespace.com/hc/en-us/articles/206566687-Exporting- your-site ""Getting my stuff from SquareSpace"") to it instead! ## What I hope to gain from it As I wrote earlier my main reason for leaving Square Space was the difficulty I had getting content in. So, now that I’m on a WordPress site, what am I hoping to gain from it? 1. Easier to post my writing 2. See Item 1 Writing is already _really_ hard for me. I struggle with it and making it difficult to get my stuff out into the world makes it that much harder. My hope is that not only will I write more, but that my writing will get **better** because I’m writing more. ## Ulysses integration With all of that, what has my experience been with writing my first post to my WordPress site? This entire post was written and edited in Ulysses. I was able to preview my post in Ulysses. I was able topost my content to the site with Ulysses. Basically, Ulysses is a kick ass app and on day one of the conversion, I’m about as happy with a decision that I can be given the short amount of time since I’ve made it. ",2017-10-01,migrating-from-square-space-to-word-press,"This weekend I migrated my site from [Square Space](https://www.squarespace.com ""Spare Squace!"") to [WordPress](https://www.wordpress.com ""WordPress!""). I had been planning to do this for a while (ever since a [Hover](https://www.hover.com ""Hover!"") ad read on [ATP](https://www.atp.fm ""Accidental Tech Podcast"") earlier this summer). This weekend was the last weekend before my [Square Space](https://www.squarespace.com ""Spare Squace!"")subscription was set to expire so I finally … ",Migrating from Square Space to Word Press,https://www.ryancheley.com/2017/10/01/migrating-from-square-space-to-word-press/ ryan,musings,"With the announced [demise of Pocket by Mozilla](https://support.mozilla.org/en-US/kb/future-of-pocket) I needed to migrate all of my saved articles to 'something else' by the end of the month. I've actually tried to migrate from Pocket a few times over the years. I landed on [Instapaper](https://www.instapaper.com/) for a while, but it never really clicked for me. I tried a service called [Devmarks](https://devmarks.io/) that [Adam G Hill](https://indieweb.social/@adamghill) runs, and I really liked it, but for whatever reason I stopped using it. I had also previously tried [Raindrop.io](https://Raindrop.io/) ... and I'm not really sure what drove me away from it, but it didn't stick for me at the time. Since I didn't have a choice about Pocket I did a bit of purusing my options, and finally landed on Raindrop.io again. The process of migration is pretty painless. I just export out the links from Pocket and then import them into Raindrop. No fuss ... no muss. Raindrop even checks for duplicates and allows you to not import them! So, I imported everything (all 11,500+ articles!) and started to incorporate Raindrop into my workflow. This basically just means saving things to Raindrop instead of pocket, and then checking Raindrop instead of Pocket every week to make sure I'm all caught up on my articles to read. Over the last weekend I was looking at how all of the imported items in Raindrop were put into the 'archive' collection and decided that I could probably do something about putting them into proper collections. With the help of Claude Code, I was able to put them into better collections. There were some stragglers and I decided that I could categorize them on my own (there were less than 100). I started going through these last ones I kept coming across articles for iOS7, or an app that I think I liked in 2015 but isn't on the App store anymore. I came across [this article](https://www.inc.com/graham-winfrey/what- the-internet-of-things-will-look-like-in-2025.html) (which I also [tooted](https://mastodon.social/@ryancheley/114689388596371458) about on Mastadon) from September 4, 2014 with the title `What the Internet of Things Will Look Like in 2025 (Infographic)`. It's wildly naive, but a fun read nonetheless. Needless to say it was the only gem in the 100 articles that I went through. I had so many saved articles that aren't 'Evergreen'. I then started looking at some of the articles that had been categorized and came across stuff for Django 1.11, Python 3.8, and other older stuff. These were great articles when I read them, but I don't know that I **need** them now. In fact, when I looked at my general workflow for using any read-it- later service, I essentially save it to read later. If it's sitting in my read-it-later service for more than 4 weeks I'll either delete or just archive it. So really, unless I'm planning on _doing_ something with these articles, I'm not sure that I need to keep them. And that's when it hit me ... I can just delete them. All of them. I don't need to keep them. If they are truly impactful, I can write up something about them in Obsidian. If I really think someone else will get something out of my reaction I can write it up and post it. But, if I'm being honest with myself, this is just digital clutter that isn't ""sparking"" any joy for me. So, just like that, I went from having 11,000+ links to having 0. And I have [no ragrets](https://inkcredibletattoovb.com/bad-tattoos-no-ragerts/). I'm sure there's some deeper story here about physical things and just letting them go as well, and maybe I'll be able to apply that to my non-digital life, but for now, I'm just going to revel in the fact that I was able to offload this thing and just not ... care? Be sad? I'm not sure what the correct term would be here. Regardless, it was a good exercise to have gone through, and I'm glad I did. ",2025-06-19,migrating-to-raindrop-io,"With the announced [demise of Pocket by Mozilla](https://support.mozilla.org/en-US/kb/future-of-pocket) I needed to migrate all of my saved articles to 'something else' by the end of the month. I've actually tried to migrate from Pocket a few times over the years. I landed on [Instapaper](https://www.instapaper.com/) for a while, but it never really … ",Migrating to Raindrop.io,https://www.ryancheley.com/2025/06/19/migrating-to-raindrop-io/ ryan,musings,"Because I have a couple of posts that I need/want to work on, and I have the time to work on them, I have of course decided to instead to update the theme on my blog because that was a way better use of my time 😂 Also, because the day is just too nice to not be sitting outside watching baseball (even if it's on TV ... and even if it's the **ping** of the bat and not the **crack** of the bat1) 1. Since the MLB Lockout is **still** going on and there's [no end in sight](https://www.espn.com/mlb/story/_/id/33347425), I've resorted to watching NCAA Baseball. I have to say, it's really entertaining AND it seems like there's 100 games on each day! ↩︎ ",2022-02-27,new-theme-who-dis,"Because I have a couple of posts that I need/want to work on, and I have the time to work on them, I have of course decided to instead to update the theme on my blog because that was a way better use of my time 😂 Also, because the … ","New Theme, who dis?",https://www.ryancheley.com/2022/02/27/new-theme-who-dis/ ryan,musings,"# Podcasts I like: * [Accidental Tech Podcast](http://atp.fm) * [Cortex](https://www.relay.fm/cortex/) * [Free Agents](https://www.relay.fm/freeagents) * [Connected](https://www.relay.fm/connected) * [Talk Python to Me](https://talkpython.fm) * [Canvas](https://www.relay.fm/canvas) * [Robosim](https://www.relay.fm/roboism) * [Ben, Ben and Blue](https://www.benbenandblue.com) * [Mac Power Users](https://www.relay.fm/mpu) * [Upgrade](https://www.relay.fm/upgrade) * [Back to Work](http://5by5.tv/b2w) ",2017-09-24,podcasts-i-like,"# Podcasts I like: * [Accidental Tech Podcast](http://atp.fm) * [Cortex](https://www.relay.fm/cortex/) * [Free Agents](https://www.relay.fm/freeagents) * [Connected](https://www.relay.fm/connected) * [Talk Python to Me](https://talkpython.fm) * [Canvas](https://www.relay.fm/canvas) * [Robosim](https://www.relay.fm/roboism) * [Ben, Ben and Blue](https://www.benbenandblue.com) * [Mac Power Users](https://www.relay.fm/mpu) * [Upgrade](https://www.relay.fm/upgrade) * [Back to Work](http://5by5.tv/b2w) ",Podcasts I like,https://www.ryancheley.com/2017/09/24/podcasts-i-like/ ryan,musings,"# What is the AHL [The AHL](https://theahl.com/), 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](https://www.nhl.com/) which is the top Hockey League in North America. There are 32 teams in the AHL, and [23 of them make the playoffs](https://theahl.com/qualification-rules). The teams play for the [Calder Cup](https://en.wikipedia.org/wiki/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](https://en.wikipedia.org/wiki/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](https://en.wikipedia.org/wiki/Rose-colored_glasses) I might be wearing). There is a post on the [AHL Site ](https://theahl.com/howson-guiding-ahl-back- to-normalcy) 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](https://streamlit.io/) to see what a potential realignment would look like that can be found [here](https://ahl- realignment.streamlit.app/). The idea would be: 1. Move both Tucson and Colorado to the Central Divsiion to get the Pacific Division down to 8 team 2. 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](https://www.ryancheley.com/2023/07/01/firebirds-inaugural-season/) 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. 1. 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 ↩︎ 2. 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 ↩︎ 3. Coachella Valley is abbreviated CV in some cases below to save space ↩︎ 4. 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) ↩︎ ",2024-02-24,realign-the-ahl,"# What is the AHL [The AHL](https://theahl.com/), 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](https://www.nhl.com/) which is the top Hockey League in North America. There are 32 teams in the AHL, and [23 …](https://theahl.com/qualification- rules) ",An Argument to Realign the AHL,https://www.ryancheley.com/2024/02/24/realign-the-ahl/ ryan,musings,"A few weeks ago I completed my second session as a [Djangonaut.Space](https://djangonaut.space/) [Navigator](https://github.com/djangonaut- space/program/blob/main/navigators.md). 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](https://www.linkedin.com/in/emmanuel-katchy). Our Djangonauts were [Andy](https://softwarecrafts.uk/), [Maryam](https://www.linkedin.com/in/maryam-yusuf/), and [Rosana](https://rosanarufer.blogspot.com/). 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](https://www.agile- academy.com/en/scrum-master/daily-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](https://maryam.hashnode.dev/contributing-to-django-with-djangonaut- space) 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](https://code.djangoproject.com/ticket/13376), [35464](https://code.djangoproject.com/ticket/35464) and [12203](https://code.djangoproject.com/ticket/12203) ↩︎ ",2024-08-29,reflections-on-djangonaut-space-session-2,"A few weeks ago I completed my second session as a [Djangonaut.Space](https://djangonaut.space/) [Navigator](https://github.com/djangonaut- space/program/blob/main/navigators.md). 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 … ",Reflections on Djangonaut Space Session 2,https://www.ryancheley.com/2024/08/29/reflections-on-djangonaut-space-session-2/ ryan,musings,"## The Roman Colosseum After the fall of the Western Roman Empire in 497 CE the Colosseum fell into disrepair. Rightfully so! Who can worry about keeping up a giant megalith made by people centuries ago while you're just trying to figure out where your next meal may come from, or the ranging hordes of barbarians showing up and taking the food you did find! However, during the medieval period, while Rome's population declined dramatically and many ancient structures fell into disrepair or were repurposed, the Colosseum remained a prominent landmark. There are stories that as the centuries progressed, the inhabitants of Rome forgot who built it. While some fantastical legends did develop around it, the basic historical facts of its construction by the Flavian emperors and its original purpose remained part of common knowledge among educated Romans. For the non-educated Roman's there were lots of misconceptions about the colosseum. The non-education Romans would have created stories1 about the large building. It was haunted. It was used for pagan rituals and no good Christian would go in. Folklore would rise up around it. As many of us have seen or experienced, in the absence of information, people will make it up.2 ## The Story of the Legacy System OK, but why is this important from a technology perspective? Imagine if you will a large system, built 10 years ago, by a group of developers, that have all left the organization. No one left knows how it works, or how to make changes to it. Most people don't even really know WHY it's there in the first place. There isn't any documentation that can be referred to. Either because it wasn't ever created OR it was destroyed by Barbarians, I mean well meaning IT processes that 'clean up' unused files. So what happens? The people remaining create stories about the system. Stories like the long timer 'Bob' that once caused the entire system to Crash and then an old copy backup copy had to be restored, and months worth of work was lost. No one ever saw Bob after that. Now we're all afraid to touch any part of it. We mostly leave it alone, and it leaves us alone. There are stories about another gray beard that actually built the system, but everyone assumes these are just fairy tales. The stories tell of this Gray Beard busting out the entire system in a weekend, using nothing but a pin to move the electrons into the proper places to get all of the logic to work as expected. Of course, no one really believes that story, but it encourages people to never want to have to make and changes to it. The problem here is that it's running on a server with an OS that hasn't been supported for 7 years and there is security mandate to upgrade 'everything' to be on current software No one wants to be in charge of this project, but someone is going to have to be in charge of it. What do you do? The story above isn't real, at least not for me. But it could be. How many times have you gotten to a system that is old, no one around has any idea how it was built and people mostly just avoid it? Probably more than once. But how can we avoid this fate? Do we just keep the old timers on until they (or the system) die? There are options, and they are some of the easiest things to do, but many people don't like to do them. What is the answer? ## Documentation Documentation. No really, Documentation. Just write it down. For a new project especially. For an old project? Most definitely. For new projects it's best to just get into the habit of writing good docs3 as you go. If that's doc strings in a method, or a full fledged Knowledge Management System using a documentation framework like [diataxis](https://diataxis.fr/), then so be it. But write it down. Write down the why's whenever you can. Use something like an [Architectural Decision Dsocument](https://www.cognitect.com/blog/2011/11/15/documenting-architecture- decisions) to understand WHY you made a technical decision you made. Maybe it's not the best decision, but it's the best decision given a set of constraints. For existing projects, it can be more challenging. It's possible that NO ONE that created the system is at the organization. It could be that NO ONE that asked for the system to be created is at the organization. This leads to a bunch of problems to try to solve, but the journey of 1000 miles starts with a single step. ## How do you solve it? Use the helpful [Awareness-Understanding Matrix](https://en.wikipedia.org/wiki/There_are_unknown_unknowns)4 | Aware | Unaware ---|---|--- Understand | Known Knowns | Unknowns Known Don't Understand | Known Unknowns | Unknown Unknowns That is, * Known Knowns: Things we are aware of and understand * Known Unknowns: Things we are aware of but don't understand * Unknown Knowns: Things we are not aware of but do understand or know implicitly * Unknown Unknowns: Things we are neither aware of nor understand The Known Knowns may be very small, but it won't be empty. The Unknown Unknowns might (will probably) be the largest. The lack of knowledge here represents Risk5. Risk to your team, or to your organization. This Risk needs to be handled as much as possible. Looking at a system with the Awareness-Understanding Matrix can help to risk it properly. Once you've properly risked the system, then you can start writing documentation. The documentation can take the form of Architectural Review of System X (DRAFT) The system does these things 1. Thing 1 2. Thing 2 3. Many other things that are still unknown Sometimes just the act of writing these things out will help you in finding out what you know and what you don't know. If you're using a documentation framework like [diataxis](https://diataxis.fr/) for this, you will want to keep your documentation parts separated (How To, Tutorials, Reference, Explanation). You may start righting a Reference article on the system and realize that you also need to have some, yet to be discovered, Explanation. The issue is that the Explanation still needs to be researched and written. That's OK! One strategy I've encouraged, and use, is if I'm writing a Reference Article and need to link to a yet to be written Explanation article, is that I'll simply create the yet to be written Explanation article and tag it with `Explanation` and `Stub`. This frees me to come back to it later and fill in the details. The other thing that will need to be done is to figure out who uses the system. Sometimes that's super easy, and sometimes, it's not. Once you're able to determine who uses the system, you can talk with them about the system and then work to fill in the gaps from above. Occasionally, you find out who everyone _thinks_ is using the system, and discover that actually, it hasn't been used for 5 years because **reasons** , and they didn't know who to tell. Now you can just retire the system using a decommissioning process. You have a technology decommissioning process, right? If you don't, it may be time to look into one! ## Back to the colosseum The inhabitants of Rome never got to a spot where none of them knew why it was built, or who built it. Or even why. But what did happen is that the people with the knowledge may have been parts of groups that were marginalized and therefore their knowledge was discounted or ignored. Because the knowledge was a verbal knowledge and not written down. It was, to use a loaded term, tribal knowledge. EVERYONE just knows the obvious thing. But the thing is ... obvious things are only obvious in the context they were created. It's obvious what Python is. I mean, why would someone use a snake to write code to get a computer to do a thing. EVERYONE knows I'm talking about the programming language Python ... until they don't. Just write this shit down. Make sure everyone gets into the habit of documenting. Make the documentation public. And if it's not possible to make all of the documentation public, make as much public as possible. For the parts that aren't public, make sure they are accessible by the people that will need access to it. Really, documentation is a means to an end. Sometimes you won't need the documentation. You'll know how the thing works, and it has an obvious API or UI and people just ""get it"". This can lead to people not writing the documentation because we don't need it. This is kind of like saying, I've used a seatbelt every day for 30 years and I've never needed it. I don't see why I need to wear it any more. This might be fine until you're in an accident. Not writing documentation is fine, until it's needed. And that's the worst time to discover that you need it. Better to have it and not need it, than to need it and not have it. 1. such as it being a temple to the sun ↩︎ 2. Brené Brown ↩︎ 3. any docs in this case are good docs! ↩︎ 4. This is in no way an endoresement of Donald Rumsfeld. He was a horrible person ↩︎ 5. Jacob Kaplan-Moss has a great series on [Risk](https://jacobian.org/series/risk/) ↩︎ ",2025-01-21,remember-the-colosseum,"## The Roman Colosseum After the fall of the Western Roman Empire in 497 CE the Colosseum fell into disrepair. Rightfully so! Who can worry about keeping up a giant megalith made by people centuries ago while you're just trying to figure out where your next meal may come from, or … ",Remember the Colosseum!,https://www.ryancheley.com/2025/01/21/remember-the-colosseum/ ryan,musings,"Rogue One - A Star Wars Movie: My Thoughts Today I watched [Rogue One](https://en.m.wikipedia.org/wiki/Rogue_One) and I wanted to jot down my thoughts while they were still fresh. First, what I didn't like: 1. The Rogue One Font at the beginning on the movie. There was just something about it that wasn't as strong as the Original Franchise 2. The jumping around done at the beginning of the movie with the planet names (again, with a weak font). 3. There were no [Bonthans](http://starwars.wikia.com/wiki/Bothan) either dying or otherwise. OK, not that's out of the way. What did I like: Every. Thing. Else. Jin's character had the depth needed to be a protagonist you would both believe and want to follow. I think the most surprising thing (maybe ... I still need to think about this) is that from a writing perspective you know **ALL** of your characters are going to be throw away characters. They won't appear in Episodes 4-6, although the actions they take drive those movies. As I realized this, I realized that each lead character was going to die. It can't really be any other way. And while I was sad to see that premonition come to fruition, I was also glad that the writers did what the story called for. Make the story a one-off whose characters can't influence the canon in any way other then how they already had. Maybe I went into the movie with low expectations, or maybe it was just **that** good. Either way, I would see this again and again and again. The story was strong, with dynamic characters. A mix of good and bad for the rebels (as it should be) and all bad, but with depth for the imperial characters. I liked this so much I have already pre-purchased it on [iTunes](https://itun.es/us/mn6tgb). ",2016-12-22,rogue-one-a-star-wars-story,"Rogue One - A Star Wars Movie: My Thoughts Today I watched [Rogue One](https://en.m.wikipedia.org/wiki/Rogue_One) and I wanted to jot down my thoughts while they were still fresh. First, what I didn't like: 1. The Rogue One Font at the beginning on the movie. There was just something about it that wasn't as … ",Rogue One - A Star Wars Story,https://www.ryancheley.com/2016/12/22/rogue-one-a-star-wars-story/ ryan,musings,"There’s this new commercial by Apple called [Share Your Gifts](https://youtu.be/3dJCroCMBPM) all about a young creative woman that keeps all of her creativity to herself. She does a really good job through the entire video of creating neat things, some seen, some not, and then making sure that no one else sees them by stuffing them into her idea box. Her ideas are only shared when her dog opens the window to her apartment at which point her ideas are spread throughout the city. People on the street see the ideas as the horrified young creator watches her creations get shared. And you know what happens? People are genuinely happy about the creations that have been shared with them. The creator’s fear that people would not appreciate or understand her creations were unfounded. People laugh and smile and enjoy what she’s shared. It’s a hugely impactful video for me because I, like most creative people I’m guessing, are terrified of sharing what they’ve created. What if what I made isn’t understood? What if no one likes what I've made? Worse, what if no one notices what I’ve made. What if people make fun of what I made. What if ... what if ... what if ... ? I like this commercial because it takes those “what if’s” and turns it on it’s head! What if people connect with what I’ve made? What if people enjoy what I’ve made? What if people are happy because of what I’ve made? The act of creating, for me at least, is less about any external validation, and more about trying out something new and learning, but I still am afraid to share. These feelings, these “what if’s” can hold me back from sharing some truly fun things I’ve done. Who knows, maybe some of them are amazing. So what if someone doesn’t like what you’ve made? So what if someone makes fun of what you’ve made? If you hold yourself hostage to the naysayers, and the potential negativity of the world, you rob the world of something truly extraordinary ... you. And so, with this in mind, I am going to worry less about the potential negatives of what I create when I share it, and focus more on the happiness that it brings me, and the happiness it might bring to others. Here’s to sharing your creativity ... here’s to sharing your gifts with the world! ",2018-11-27,share-your-gifts,"There’s this new commercial by Apple called [Share Your Gifts](https://youtu.be/3dJCroCMBPM) all about a young creative woman that keeps all of her creativity to herself. She does a really good job through the entire video of creating neat things, some seen, some not, and then making sure that no one … ",Share Your Gifts,https://www.ryancheley.com/2018/11/27/share-your-gifts/ ryan,musings,"I've written before about the [Theme's that CGP Grey](https://youtu.be/NVGuFdX5guE?si=-9zFaB0xjmxOEh26) has discussed and I think they're great! I've just recently completed my 'Spring of Transition'. So what is the Spring of Transition? For me it meant focusing on that last bit of time that my daughter will be living with me and my wife full time. She just graduated from High School and is getting ready to go off to college in the Fall. I've taken the last quarter to really try and focus on spending quality time with her, and enjoy the last bits of her living here with me and my wife. One of the things I am eternally grateful for is that when my daughter was a baby/toddler I started a [WordPress](https://wordpress.org/) blog to keep track of all of the adventures we got into. This was 2008 - 2010 and while Facebook was _kind_ of a thing, Instragram was **NOT** a thing. I used this blog to post pictures with a fun caption of the context of the picture. I would also write a monthly letter to her and recap what fun adventures we had, or what changes I had noticed. I did this for a couple of years, but then life got in the way and the changes that she was going through were harder and harder to see, and capture, with a camera. This made it very hard to write about as well. I ended up taking down my site, but I kept a backup of the WordPress XML just in case1 I would want to use it again. At one point I stumbled upon a journalling app called [Day One](https://dayoneapp.com/) that I used to journal. I used it for a couple of years and then found a feature that allowed me to import my WordPress blog data. I played around with this a bit and finally made the plunge to import the data. It may be the best decision I've ever made with respect to tech. Over the last several years I focused on trying to journal every day. One of the grear features of Day One is 'On This Day'. After I journal I'll click on that tab and look back at what I've written ""On This Day"". The best entries are from the blog. Small reminders of the toddler my (now) adult daughter was. This has been especially great over the last 3 months as she has wrapped up High School and prepared for College. It's really allowed me to focus on the great times we had, and work to create some awesome new memories. We didn't do anything exotic, or visit any far off places during this 'Spring of Transition' ... there's already sooooo much to be done at the end of a High School career! But, I have tried to focus on the things that we do like to do. We have watched a bunch of Star Wars: * [Bad Batch Season 3](https://en.wikipedia.org/wiki/Star_Wars:_The_Bad_Batch) * [Acolyte](https://en.wikipedia.org/wiki/The_Acolyte_\(TV_series\)) * [Tales of the Empire](https://en.wikipedia.org/wiki/Star_Wars:_Tales#Tales_of_the_Empire_\(2024\)) We've also tried to watch the [Battle Star Galactica TV](https://en.wikipedia.org/wiki/Battlestar_Galactica_\(2004_TV_series\)) show from the early 2000s. This didn't go well. Another thing that we've been doing is trying to cook meals together. My daughter is a vegetarian, and my wife and I are not, so this makes dinner (and other meals) challenging. To over come this she found several vegetarian dishes that she thought I would like and we've made them together for dinner. It's been a real treat to see what she thinks of some of these recipes, which are mostly Thai and Vietnamese meals which is not something she would typically eat (she's really big into the various combinations of cheese and starch, i.e. Grilled Cheese Sandwiches, Quesadillas, and Cheese Pizza 😊 We've also been trying really hard to get take out from a Thai place that has many vegetarian options, but haven't been able to make it work just yet. This looks to be something that we'll **hopefully** be able to do over the summer before she leaves for school. I think the hardest part about all of this has been knowing that each of the things that she's done will be the last. She had her last dance recital (I've been watching her dance for 15 years). She had her last Girl Scout meeting. She had her last High School class. Soon she'll have her last night sleeping here before she goes to school. Obviously I always knew this day would come, but I didn't really think it would get here so quickly. [The days are long, but the years are short](https://www.goodreads.com/quotes/239043-the-days-are-long-but-the- years-are- short#:~:text=Quote%20by%20Gretchen%20Rubin%3A%20%E2%80%9CThe,but%20the%20years%20are%20short.%E2%80%9D). I never **really** understood what that meant until these last few months. There is now this full grown adult living in my home ... at least for the next few months. But just yesterday she was a silly toddler walking around the house claiming that the elves must have left her milk in the pantry! I know that her leaving for college isn't the last time I'll ever see her. I mean, she'll still have a room at our house, so she'll want to come back at some point, right? Right? And it's not like she's going to school on the other side of the country. It's just a short 2 hour drive away. But still ... it won't be the same. It's just all so different. My wife and I are planning to be empty nesters. Like, what does that even mean? For the last 19 years our daughter has been a part of, and influenced, the lives that we've lead. I'm also a little nervous about my 'little girl'2 going away into the big bad world. I know I shouldn't be though. She is the most thoughtful, capable, intelligent, caring, hard working person I've ever met in my life. I know she's going to do great in her next chapter. I just didn't realize that next chapter would come so soon. 1. this is one of the ONLY times my digital hoarding has actually paid off ↩︎ 2. Fun fact: she's 5'7 with the strength of someone that's been dancing for 15 years so she's not _actually_ little ↩︎ ",2024-06-20,spring-of-transition,"I've written before about the [Theme's that CGP Grey](https://youtu.be/NVGuFdX5guE?si=-9zFaB0xjmxOEh26) has discussed and I think they're great! I've just recently completed my 'Spring of Transition'. So what is the Spring of Transition? For me it meant focusing on that last bit of time that my daughter will be living with me … ",Spring of Transition,https://www.ryancheley.com/2024/06/20/spring-of-transition/ ryan,musings,"On Sundays mornings I wake up pretty early, make myself some coffee and read through all of the interesting articles I came across during the week (usually from [Twitter](https://www.twitter.com)). Last weekend I came across an article, [You probably know to ask yourself, “What do I want?” Here’s a way better question](https://getpocket.com/explore/item/you-probably-know-to-ask- yourself-what-do-i-want-here-s-a-way-better-question-1149529539) I was struck by several passages in the article: > > If you find yourself wanting something month after month, year after year, > yet nothing happens and you never come any closer to it, then maybe what you > actually want is a fantasy, an idealization, an image and a false promise. > Maybe what you want isn’t what you want, you just enjoy wanting. Maybe you > don’t actually want it at all. >> >> I wanted the reward and not the struggle. I wanted the result and not the process. I was in love not with the fight but only the victory. And life doesn’t work that way. >> >> This is the most simple and basic component of life: our struggles determine our successes. So choose your struggles wisely, my friend. When I was younger I wanted to be many things, a Physicist, an Architect, an Engineer, a Professor ... but none of those things ever got any closer. I'd be really engaged in the ideas of one of these for weeks or months at a time. I remember being so enamoured with the idea of Civil Engineering I convinced my parents to get me a drafting board that I had in my room and I used to 'design' a prototype of a Martian Habitat. But, as soon as I got bored I would move onto something else. From Physics to Architecture to Engineering and back to Physics. I would always stop when it either got too hard **OR** something else looked more interesting. I was always awed by my peers that could stay laser focused on a single hobby or dream job and was amazed at the amount of sacrifice they would be willing to make in order to achieve their goals. It wasn't until I got to college when I started to see what I needed to sacrifice in order to get ahead. Parties on the weekend. Not for me ... I had a full time job and was a full time student. I would hang with friends when I could, but I was mostly at the library studying, or at work studying or maybe getting a little bit of sleep. I suddenly became laser focused like the people I knew in high school. I had a single goal and that was to graduate and go onto graduate school so I could get a PhD in economics. The PhD didn't happen, and in the following years I felt like I did in high school ... becoming very interested in a 'thing' and then moving on from it because I'd get bored. Then I stumbled into the Healthcare Industry and it all came back. An ability to be laser focused on new and interesting things. Wanting (maybe needing) to learn everything I could about Healthcare. It's been more than 8 years since I started on my journey, and I've struggled every time I've started to learn a new aspect of the industry, or just an aspect of a new job that I had started. And that's when the final passage in the article really hit me like a ton of bricks: > > This is the most simple and basic component of life: our struggles > determine our successes. So choose your struggles wisely, my friend. It truly is the struggle that determines the success. I've struggled mightily while working in healthcare, but those struggles have lead to the most fulfilling and successful career I could have hoped for. ",2017-01-27,struggle-determines-success,"On Sundays mornings I wake up pretty early, make myself some coffee and read through all of the interesting articles I came across during the week (usually from [Twitter](https://www.twitter.com)). Last weekend I came across an article, [You probably know to ask yourself, “What do I want?” Here’s a way …](https://getpocket.com/explore/item/you- probably-know-to-ask-yourself-what-do-i-want-here-s-a-way-better- question-1149529539) ",Struggle determines success,https://www.ryancheley.com/2017/01/27/struggle-determines-success/ ryan,musings,"One of my goals for 2017 has been to read more. According to [Pocket](https://www.getpocket.com) I have been in the top 1% of 'pockters' in both 2015 and 2016, but even if that's true (and I'm not entirely convinced it isn't just marketing **stuff** ) what I'm reading are web articles, some long form, but mostly short form articles. This isn't the kind of reading I want to focus on in 2017. I've got a list of (mostly) science fiction books I'm planning on reading this year. I'm also listening to audio books through [Audible](https://www.audible.com) during my commute to work. Those books are a little more varied in their content so far, and exclusively non-fiction. But why does this matter? As I [do](https://www.ryancheley.com/blog/2017/1/26/struggle-determines-success) I was reading an article on [Isaac Asimov](https://en.m.wikipedia.org/wiki/Isaac_Asimovs) entitled [Isaac Asimov: How to Never Run Out of Ideas Again – Personal Growth – Medium](https://medium.com/personal-growth/isaac-asimov-how-to-never-run-out- of-ideas-again-b7bf8e09cc91#.tbua3lk49). From the article 4 points really struck me: * Read widely. Follow your curiosity. Never stop investing in yourself. * Diversity is insurance of the mind. * We fail. We struggle. And that is why we succeed. * After all, never having ideas means never having to fail. Although I had planned on reading more **before** having read the article, after reading it I'm even more dedicated to making sure I read as much as I can this year. The last 2 points are also something I've been trying to work on. One of the reasons for this site is so I can showcase the ways in which I _fail_ and what I am able to learn from those 'failures'. The ideas that failure and struggle lead directly to success is something I'd never really connected, but I can see the connection between them now. I like the idea that Isaac Asimov failed at things, but that they didn't prevent him from accomplishing those (and other) things. This article really helped crystallize an idea that I've had a hard time putting into words ... > > Failing only happens when you don't try. Trying to do a thing and not > achieving that thing is not failing, it's simply a different result than you > expected. The success is in the trying. I don't know if these are the _best_ words, but as I'm learning, the success is in the trying, not in the perfection of the result. ",2017-01-28,success-through-failure,"One of my goals for 2017 has been to read more. According to [Pocket](https://www.getpocket.com) I have been in the top 1% of 'pockters' in both 2015 and 2016, but even if that's true (and I'm not entirely convinced it isn't just marketing **stuff** ) what I'm reading are web articles, some … ",Success through failure,https://www.ryancheley.com/2017/01/28/success-through-failure/ ryan,musings,"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 **more**1. 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](https://hachyderm.io/@lacey) was [having similar thoughts](https://hachyderm.io/@lacey/112550334978638433). [Mario](https://hachyderm.io/@pythonbynight@fosstodon.org) and [Trey](https://hachyderm.io/@treyhunner@mastodon.social) had some interest as well and so we formed a writing group! We meet every Wednesday (more or less) for about an hour. I had really hoped that the forming the cohort would give me the encouragement and accountability I needed ... and it HAS! But I also quickly realized that all I had calendared (really) was the Wednesday writing session, and so I set out to have a 30 minute daily writing session on my own. Life has a way of kicking you in the ass though when you least expect it. Roughly 10 days into my 'Summer of Writing' a work thing came up and kind of consumed all of my thought and energy. I realized quickly that something had to give, and so I looked ahead at my Autumn theme and borrowed from it a bit, while still keeping the spirit of trying to write. The next theme was going to be 'The Autumn of Mindfulness' which included starting a meditation practice so I dove into that. I also decided that I needed to try to find something to do from a physical activity perspective. I live in the desert of southern california so the summers are brutal ( daily highs that can average 110F+) and being outside isn't something I really like, even in the early morning, before the sunrise, the temps can be mid to high 80s ... sometimes even the low 90s. I decided that I would pick up swimming and going to the gym to help alleviate some of the stress from work. That, in addition to the writing, seemed to be a good thing to work on. During my Summer of Writing I only wrote 5 posts (including this one) * [Summer of Writing](https://www.ryancheley.com/2024/10/03/summer-of-writing/) * [SSH Keys](https://www.ryancheley.com/2024/07/13/ssh-keys/) * [How to ask a question without sounding like a jerk](https://www.ryancheley.com/2024/08/22/how-to-ask-why-without-sounding-like-a-jerk/) (mentioned in the [Django News Newsletter #248](https://django-news.com/issues/248)) * [Reflections on Djangonaut Space Session 2](https://www.ryancheley.com/2024/08/29/reflections-on-djangonaut-space-session-2/) ([lots of love](https://mastodon.social/@ryancheley/113044831659253804) on socials) * [Mentors](https://www.ryancheley.com/2024/09/16/mentors/) (mentioned in [Django News Newsletter #251](https://django-news.com/issues/251#start)) The articles had a total of 5237 words and so, from the perspective of writing, I managed to do _some_ writing, but it wasn't really anymore than what I had done during the Spring of Transition where I wrote 4 articles with 3890 * [Spring of Transition](https://www.ryancheley.com/2024/06/20/spring-of-transition/) * [Using justpath to go on a pyrrhic adventure to clean up my PATH](https://www.ryancheley.com/2024/05/24/using-justpath-to-go-on-a-pyrrhic-adventure-to-clean-up-my-path/) * [Trying out pyenv ... again](https://www.ryancheley.com/2024/03/29/trying-out-pyenv-again/) * [Winter of Learning](https://www.ryancheley.com/2024/03/19/winter-of-learning/) However, the ability to transition from one idea to another is something that [CGP Grey talks about in his themes](https://www.youtube.com/watch?v=NVGuFdX5guE) 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 ↩︎ ",2024-10-03,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 **more**1. I had a few things I needed to do to get this started. One of … ",Summer of Writing,https://www.ryancheley.com/2024/10/03/summer-of-writing/ ryan,musings,"> ""If you think technology will solve your problems, you don't understand > technology and you don't understand your problems"" > > ~ attrib. Laurie Anderson From a [Toot](https://mas.to/@natureworks/113917094844091858) by [Jake Rayson](https://mas.to/@natureworks) In a previous post, I wrote about how to [ask why without sounding like a jerk](https://www.ryancheley.com/2024/08/22/how-to-ask-why-without-sounding- like-a-jerk/). This is a slightly related concept (at least in my head). Sometimes, as technical people, we are asked to solve problems. The more we dig into them, the more we discover that the problem that needs to be solved isn't a technical one but a people one. In many cases, it's just getting two groups to actually talk to one another. This can be hard and awkward, so people may want to avoid it. Creating a report telling someone they're doing something wrong is way easier. No hurt feelings! However, I've found that the approach tends to create more problems than it solves. ## The situation The situation is a real one, and I'm obfuscating details to help 'protect the innocent'. At the start of each year, large amounts of new data are needed to be added to a system. The additions are, by their nature, very manual1 and so the team responsible for them spends much of their time trying to get the data added. Another team is highly dependent on this new data being added in order to process their widgets2. The widgets get loaded into the system and checked to see if the data from team A is complete. If it isn't, then the widget gets flagged. This flag directs the members of Team B to reach out to Team A to get clarification on the state of the data needed to process the widget. Only, that's not how Team A understands it. While they are furiously trying to update data, there is some basic data that covers roughly 80% of the widget processing data needs that are already available. So, the vast majority of the time, there is no need for Team B to reach out to Team A because the information they need is available in the system to process the widget. This understanding was either lost or never communicated effectively so Team B would just email Team A with questions about the widget data and then get their answer and move on. This is despite the fact that the information is available in the system for the members of Team B to review! The leader of Team A asked me if I could 'update a report' to 'remove some of these widgets so Team A could better focus on the work of adding the data'. I thought that seemed reasonable, so I asked Team B a few questions and then made a bit more discoveries and found out the actual problem, which was that the information needed by Team B was in the system. Team A just needed Team B to do a better job of looking for it and asking questions about the things that were needed instead of everything. ## The Solution I proposed that the leaders from Team A and Team B get together to talk about the issue. At the meeting, the leader of Team B was horrified to hear what was happening. They had no idea that many emails were going to Team A about questions that the members of Team B should be able to answer on their own. This is all well and good, but why did it take a tech person to spot this and get the team leadership together to figure it out? I wish I **knew** the answer. I think part of the insight I had was the current pipeline of work, how long it was going to create a report, and the need to have the problem solved sooner rather than later didn't line up. At all. I **needed** to look for a potential non-technical solution. The other thing that I think happened here is that I wasn't weighed down by any history of interactions between the Teams. I was just trying to gather information. In gathering information I was able to see what the real problem was and that the only solution that made sense was for the two teams to just talk to each other. ## The Outcome During the meeting, Team B committed to retraining staff and helping to make sure that they only reached out when there was an actual question about the data for the widget production. Team A was thrilled with this solution, and now they can focus on getting the data into the system more efficiently and with fewer interruptions. A win-win, all because a tech guy got some non-tech people to talk to one another. 1. yes I would like to automate this, but one step at a time! ↩︎ 2. Not actually widgets ↩︎ ",2025-02-06,technical-solutions-to-people-problems,"> ""If you think technology will solve your problems, you don't understand > technology and you don't understand your problems"" > > ~ attrib. Laurie Anderson From a [Toot](https://mas.to/@natureworks/113917094844091858) by [Jake Rayson](https://mas.to/@natureworks) In a previous post, I wrote about how to [ask why without sounding like a jerk](https://www.ryancheley.com/2024/08/22/how-to-ask-why-without-sounding- like-a-jerk/). This is a slightly related concept (at … ",Technical Solutions to People Problems,https://www.ryancheley.com/2025/02/06/technical-solutions-to-people-problems/ ryan,musings,"## The Origin of Systems When thinking about systems it's easy to think that they have always been there, or been that way. This isn't true of course. The systems that are in place were put there, by people. People that made decisions. Decisions are what I want to focus on here. In general when making a decision about the implementation of a system you would want to engage with the stakeholders of that system. This of course implies that you can identify at least some of those stakeholders. But sometimes there aren't any key stakeholders other than regulations, or best practice, or some other nebulous thing that needs to be met. These are the decisions I really want to focus on. ## The Illusion of Success Take a security system for instance. The basic tenets of the security system are that it keeps 'something' safe. If the thing to be kept safe is still safe after the implementation of the security system then the people that implemented the system can claim success. They can look at the evidence that since the security system was put into place the thing has been kept safe. Of course, it's entirely possible that the thing was never in danger, and that the previous system was doing just fine. In fact, it could be that the security system is actually making it harder to keep the thing safe. It's just harder to see because all you're looking at are potentially meaningless metrics like. Questions like is the thing safe after implementation of the security system don't take into account if the thing was 'unsafe' before? This can lead you to think that the new security system must be responsible for the safety of the thing. Something else that can be happening is that the security system has caused the people responsible for keeping the thing safe to work more hours, hire more people,who are oftentimes keeping the security system running. ## Questioning Purpose The more we look into a system like this, the more we might ask, ""Why is it there?"" There can be a couple of reasons, but I'll focus on one in particular. The person ultimately responsible for keeping the thing safe can show with some kind of metrics that the thing is safe with the new security system, whereas they couldn't under the previous system. There weren't any reports or metrics that showed what was going on, which is why the system was implemented in the first place. OK ... so that's how some systems can be put in place. ## User-Hostile Systems What about systems that are hard to use, or maybe actively hostile to their users? How do those get put into place? I would argue that the reason we see many user hostile systems in place is because they are decided upon not by their users, but by their ability to meet regulations, AND their ability to maintain by a support system. The consideration of the user is secondary, or maybe not even thought about. Think about any Enterprise software you've ever encountered. Would you say that it was a joy to use? Would you say that onboarding was simple, and that new employees loved to use it? My guess would be no. ## Why Bad Systems Persist So if the users don't like it, why is it in place? Two reasons: 1. It meets some kind of regulation (this could be a government regulation, but it could also be a regulation of a guild, or union, or something else) 2. It's easy to maintain by the support system For any software that meets these criteria you are likely to have users that don't like the software, because they are always an afterthought. The primary responsibility of the software developers of these types of systems is always the regulators, and the support infrastructure. The first because they have to keep producing software that is compliant in order to be sold with a specific rating or seal of approval. The second because if the support team can't easily support it, they're going to find an alternative solution that they can support. ## Conclusion It's a simple decision of maximizing for the people that enforce the rules (regulators) and that make the decisions (support). The users of the software don't matter. At all. This is why you will see software for widget processing that could benefit from bulk operations, keyboard shortcuts, or being browser agnostic and they just aren't. The only considerations are: Does it meet the regulations? Is it easy to support? If the answers are yes then the users tend to lose out. They don't matter. If the answer is no, then find a competitor that does and move over to them, even if the current system is loved by your users. ",2025-03-31,the-invisible-decision-makers-why-systems-ignore-their-users,"## The Origin of Systems When thinking about systems it's easy to think that they have always been there, or been that way. This isn't true of course. The systems that are in place were put there, by people. People that made decisions. Decisions are what I want to focus on … ",The Invisible Decision-Makers: Why Systems Ignore Their Users,https://www.ryancheley.com/2025/03/31/the-invisible-decision-makers-why-systems-ignore-their-users/ ryan,musings,"How pretty it was On Sunday March 18, 2018 I ran the [LA Marathon](https://www.lamarathon.com). It was my first one and it was an amazing experience. I never thought I would be able to compete in, let alone finish, a marathon, but on Sunday I did. I started training, like **really** training, for the marathon last August. I would wake up every morning and walk for 45 minutes. This was to get me back into a shape that would allow me to run a bit. On Sunday, September 24 I completed my first run since February 25th (basically 7 months between runs!). It was a 45 minute run that covered 3.82 miles. Over the next 6 months I slowly increased the distances I would run from that modest 3.82 run up to an 18 mile run. In total, I completed 89 training runs which covered 441.92 miles and spent 79+ hours running (see table below for details). * * * Month Distance Time Runs September 14.68 3:03:14 4 October 62.96 12:12:05 17 November 87.70 16:52:06 20 December 37.42 7:03:57 7 January 90.80 17:09:12 18 February 69.49 14:16:52 17 March 43.06 08:29:11 6 **Total** ** 441.92 **** 79:06:37** ** 89** * * * With all of the training that I did, there was a bit of December where I had pulled my right calf on a training run that forced me to rest for a couple of weeks. The only good news of that was that it coincided with a family trip to Utah where I would not have been able to really run while there (the average day time highs were in the teens and the ground seemed to be constantly covered in ice). Also, with all of the training that I did, there isn’t really any way to train for race day itself. You get up early (in my case 3:50) and you take a shuttle to the start line and then wait. For hours. I got to Dodger stadium at about 5:00am but the race wasn’t set to start until 6:55am. So I waited, with my running buddies, for the run to start. It was cold (about 48 degrees) and crowded. Once the race started it took nearly 20 minutes before I was able to cross the start line (there were nearly 25,000 people that ran). None of the training that you do can really prepare you for this. Even if you do a race during your training, chances are it won’t have that many people, or have that many logistics involved with getting to and starting. That being said, having good company and a good playlist is essential. I stayed with my coach, Marirose, for the entire race. We ran for the first 15 miles without stopping (except for a potty break at mile 5) and were making pretty good time. For the most part I felt really good. But then something happened. At about 15 miles I hit a running wall. At 20 miles I hit a walking wall and didn’t want to finish. I think the only reason I finished was because I promised my daughter that I would finish a marathon and I wanted to keep my promise. At mile 23 all I wanted to do was sit down and take a break, but I kept walking anyway. Finally, at mile 26 I could see the finish line and Marirose and I ran the last 0.2 miles to the finish line. I had such a wave of emotion. I kind of wanted to cry. I wanted to cry because I had accomplished an amazing physical feat. I wanted to cry because I hurt EVERYWHERE. I wanted to cry because it was my daughter’s 12 birthday and I was running a marathon and she was home with family friends. With the wave of emotion and the feeling of having completed such an awesome experience I walked towards the people handing out the medals and got my finisher’s medal. ![Finisher's Medal](/images/uploads/2018/03/IMG_9370.jpg) Now, not only did I have the feeling of completing the LA Marathon, I had a physical manifestation of that feat! When it was all said and done my unofficial time for the [LA Marathon was 05:56:08](https://www.trackshackresults.com/lamarathon/results/2018/mar_results.php?Link=14&Type=2&Div=F&Ind=4). Not too shabby for a first timer. Not too shabby for guy who 7 months earlier struggled to run 45 minutes and wasn’t sure he’d ever be able to get past 10 miles. After the race on Sunday I said I’d never do a marathon again. I had checked it off my bucket list and that was that. Now, sitting here, only a couple of days later, I’m thinking that **never** is a long time and that there is a possibility that yes, I might run another marathon. But not for a while. For now, I’ll stick to my next goal of getting to a sub 25-minute 5k and running a half marathon every year. Those goals seem a little more reasonable, and a little less brutal on my body! ",2018-03-21,the-la-marathon,"How pretty it was On Sunday March 18, 2018 I ran the [LA Marathon](https://www.lamarathon.com). It was my first one and it was an amazing experience. I never thought I would be able to compete in, let alone finish, a marathon, but on Sunday I did. I started training, like **really …** ",The LA Marathon,https://www.ryancheley.com/2018/03/21/the-la-marathon/ ryan,musings,"This last weekend was the divisional round of the NFL playoffs. There were 3 really good games and the game that the Patriot played in. This is unfortunate because I only had the Patriots game on the calendar for the weekend so that meant other things could get scheduled whenever and I would end up missing many, if not all, of the other games. Sunday had 2 amazing games. The Steelers lost to the Jaguars in an upset and I got to see the last drive that put the Steelers down by a Field Goal as time expired. It was simply amazing to see how hard they played even though they must have known that they weren’t going to win. When I got home from being out the New Orleans at Minnesota game was at half time with Minnesota up 17-0. It looked like it was going to be a route and I was glad that I wasn’t really watching it. I started to do the chores that needed to be done (laundry, straightening up, getting ready for the week) and had the game on in the background. And then the improbable started to happen. Drew Brees played an amazing half of football and all of a sudden it’s 21-20 New Orleans. After a couple of field goals are exchanged it’s 24-23 New Orleans with Minnesota in possession of the ball. Case Keenum had made a couple of errors earlier in the game (one interception lead to a touch down and really helped the Saints get back in the game). It looked like he was on track to do something similarly ill-advised. Then, with 10 seconds left the bar is snapped and he passes the ball to Stefon Diggs who catches the ball. And just as he catches the ball Marcus Williams, a defensive back for New Orleans is cued up to make an ordinary tackle in an extraordinary situation. I was only on my high school football team for 2 years, but one thing the coaches were always on us about was wrapping up the ball carrier when we were going to tackle. “Wrap him up” they’d scream at us. Over and over again. It became something we did just so they’d stop yelling at us (for that anyway). So Marcus Williams is getting ready to tackle Stefon Diggs and all he has to do is “Wrap him up!” But something inside of Willliams’ head is saying, “Sports Center highlight” and instead of going for the boring, but effective arm wrapping tackle, he tried to hit Diggs with his shoulder to hopefully get the ball to be knocked loose. Instead, he whiffs by Diggs who spins, plants his hand on the ground to stay up and proceeds to run 60 yards for the game winning, walk-off, touchdown. I truly believe that Williams was thinking about how cool it would be to get on Sport Center when he was deciding how to tackle Diggs, and that cost the Saints the game. Dear Sports center, stop making our sports be bad and our athletes make dumb decisions. Can you just go away now. Ok, thanks, bye ",2018-02-04,the-sports-center-effect,"This last weekend was the divisional round of the NFL playoffs. There were 3 really good games and the game that the Patriot played in. This is unfortunate because I only had the Patriots game on the calendar for the weekend so that meant other things could get scheduled whenever … ",The Sports Center Effect,https://www.ryancheley.com/2018/02/04/the-sports-center-effect/ ryan,musings,"# The Technical Debt of Others Technical Debt as defined on [technopendia](https://www.techopedia.com) is: > a concept in programming that reflects the extra development work that > arises when code that is easy to implement in the short run is used instead > of applying the best overall solution. In the management of software development we have to make these types of easy- to-implement-and-we-need-to-ship versus need-to-do-it-right-but-it-will-take- longer decisions all of the time. These decisions can lead to the dreaded **working as designed** answer to a bug report. This is infuriating. It’s even more infuriating when you are on the receiving end of this. A recent feature enhancement in the EHR we use touted an > Alert to let proscribing providers know that a medication is a duplicate. For anyone in the medical field you can know what a nightmare it can be to prescribe a duplicate medication from a patient safety perspective, so we’d obviously want to have this feature on. During our testing we noticed that if a medication was prescribed in a dose, say 75mg, and stopped and then started again at a new dose, say 50mg, the Duplicate Medication Alert would be presented. We dutifully submitted a bug report to the vendor and the responded > The Medication is considered a true duplicate as when a medication is > stopped it is stopped for that day it is still considered active till ( > _sic_ ) the end of the day due to the current application logic, which > cannot be altered or changed. What your providers/users may do is enter a > DUR Reason and Acknowledge with something along the lines of ""New > Prescription"". These DUR reasons can be added via Tools > Preferences > > Medications > DUR > Override Reason tab - type in the desired DUR Override > Reason > Select Add > OK to save. > > If functionality and logic outside of this is desired this will need to be > submitted as an Idea as well since this is currently **functioning off of > development's intended design.** ” Then the design is broken. From a technical perspective I know exactly what is going on. This particular vendor stores `date` values as `varchar(8)` but stores `datetime` values as `datetime`. There may be some really good reasons for making this design decision. However, when the `medication` tables were designed, the developers asked the question, ""Will we **EVER** care about the time a medication is started or stopped?"" They answered no and decided to set up a `start date` (and by extension an `end date`) for medications to not respect the time that a prescription started or stopped and therefore set them as `varchar(8)` and not as `DATETIME`. But now they’ve rolled out this **awesome** feature. A feature that would actually allow providers to recognize duplicate medications potentially saving lives. But because they don’t store the time of the stopped medication, their logic can only look at the date. When it sees the same medication (but in different doses) active on the same date a warning appears letting the provider know that they have a duplicate medication (even though they don’t). Additionally, this warning serves no purpose other than to be **one more damned click** from a provider’s perspective because the vendor is not storing (ie ignoring) the time. When clinicians complain about the impact of EHRs on their ability to deliver effective care ... when they complain about EHRs not fulfilling their promise of increased patient safety, these are the types of things that they are complaining about. I think this response from one of the clinicians sums up this issue > I don't see the logic with the current ""intended design"" in considering a > medication that has just been inactivated STILL ACTIVE until the end of the > day. A prescriber would stop current and start new meds all in one sitting > (which includes changing doses of the same med), not wait until the next day > to do the second step. It decreases workflow efficiency to have to enter a > reason when no real reason exists (since there IS no active entry on med > list). The whole point is to alert a prescriber to an existing entry of a > medication and resolve it by inactivating the duplicate, if appropriate > (otherwise, enter reason for having a duplicate), before sending out a new > Rx. > > While it's relatively easy to follow and resolve the duplication alert if > the inactivation and new prescribing is done by the same prescriber, I can > see a scenario where prescriber A stops an old ibuprofen 600mg Rx[\^2] (say > PCP) and patient then goes to see prescriber B (say IC[\^3]) who then tries > to Rx ibuprofen 800mg…. and end up getting this duplication alert. The > second prescriber would almost be lost as to why that message is showing up. > > The application logic should augment the processes the application was > designed to facilitate, **but right now it is a hindrance**. (emphasis > added) I know that sometimes we need to build it fast so that we can ship, but developers need to remember, _forever_ is a long freaking time. When you make a forever decision, be prepared to have push back from users of your software when those decision are markedly ridiculous. And be prepared to be scoffed at when you answer their bug report with a Working-as–Designed response. [\^2]: Rx = prescription [\^3]: IC = Immediate Care ",2017-07-28,the-technical-debt-of-others,"# The Technical Debt of Others Technical Debt as defined on [technopendia](https://www.techopedia.com) is: > a concept in programming that reflects the extra development work that > arises when code that is easy to implement in the short run is used instead > of applying the best overall solution. In the management of software development … ",The Technical Debt of Others,https://www.ryancheley.com/2017/07/28/the-technical-debt-of-others/ ryan,musings,"As a a manager no one will ever agree with every decision you make. Not the people you manage, and not the people that manage you. But if you always know why you made a decision and you can articulate that decision, then you’ll be on a good footing when someone asks you, “How did you know to do that?” or “How did you know to make **that** decision?” One of the best lessons I learned from my boss LB is that the decision is less important than the **why** of the decision. Make no mistake, bad decisions are bad decisions, but they are much less likely to be made if you know why you made it. Once I was able to internalize that lesson, it freed me to actually make decisions. When faced with a decision, I tend to ask these questions: 1. What do I know? 2. How do I know it (i.e. how confident am I in the information I know)? 3. What do I gain by waiting for more information? 4. What’s the worst that happens if I make the wrong decision? 5. What’s the worst that happens if I make no decision now? 6. Who can I talk to about this decision? Having answers to these questions doesn’t guarantee that my decision will be right, but it does help me to understand why I’m making the decision that I’m making. It will also help me to explain the decision later on if needed. One of the things I try to tell the people I work with is this: > > The decision itself is less important than why you made the decision. If > you don’t know why you made a decision, then you shouldn’t be making the > decision yet.” Know **why** you made a decision and you’ll be better equipped **to make** the decision. ",2017-08-24,the-why-of-a-decision,"As a a manager no one will ever agree with every decision you make. Not the people you manage, and not the people that manage you. But if you always know why you made a decision and you can articulate that decision, then you’ll be on a good footing … ",The why of a decision,https://www.ryancheley.com/2017/08/24/the-why-of-a-decision/ ryan,musings,"I've been trying to update my [LinkedIn Profile](https://www.linkedin.com/in/ryan-cheley/) for a couple of weeks now (maybe a couple of months) and I keep hitting a roadblock. Not really sure why ... Since being 'promoted' from Director of NextGen Support Services to Director of Business Informatics, I've wanted to update the Profile but haven't really had the 'time' to do it. So a couple of weeks ago I decided that start in earnest on the update. I've done more research than I can stand but I don't feel like I'm any closer to an update that I like. I think part of the problem is that I don't really know* ~~what~~ who the summary is for. Is it for me or for other people. People that are reading my summary (for whatever reason people read LinkedIn summaries)? If it's for me then I guess I'd write about the things that I really like to do, like data analysis and bits of programming to get to solutions to hard problems. If it's for other people then I guess I need to be genuine about who I am while also 'selling' myself to the prospective others. Maybe the best thing is to write it for me and then hope for the best. I kind of like that. Besides, if someone else reads it and they don't like it then that's a good indication about how well I would get along with that person in a professional setting anyway and might be best to avoid them. And if they do like it then all the better that they will also like me ... the real me. ",2017-03-13,updating-my-linkedin-profile,"I've been trying to update my [LinkedIn Profile](https://www.linkedin.com/in/ryan-cheley/) for a couple of weeks now (maybe a couple of months) and I keep hitting a roadblock. Not really sure why ... Since being 'promoted' from Director of NextGen Support Services to Director of Business Informatics, I've wanted to update the Profile but … ",Updating my LinkedIn Profile,https://www.ryancheley.com/2017/03/13/updating-my-linkedin-profile/ ryan,musings,"For my wedding anniversary my wife and I went to the mountains of Southern California to get out of the heat of the desert. The weekend started of really nicely. The crisp clear air next to Big Bear Lake and the sounds of nature really helped to relax us. We were staying at an AirBNB within walking distance of the village. This was great because one of the things we really like to do is walk. This is very hard in the desert in the summer. We arrived on Thursday and spent that first day just enjoying the weather and being outside. On Friday the cool mountain breeze picked up a bit, but nothing too bad. My brother-in-law and his wife have a place in Big Bear Lake as well. They receieved a text message from the local power company that the power may be turned off that day due to 'high winds'. Now, where we were there weren't any high winds, but the power transmission lines that bring the power up to Big Bear Lake were in a potential high wind area. The estimated time for the power to be turned off was 3pm Friday. Well, 3pm Friday came and went and the power was still on. We didn't think much of it as we walked to a restaurant for dinner. After dinner we walked to a different place for dessert. We even closed the place down!1 We walked back to the house and at just about 9:30pm the power went off. This was disappointing. We figured that the power would be back on the next morning so we went to bed. The next day at 6am the power was still out. At 9am the power was still out. As far as I know, the power was out until the end of day Sunday, but we didn't stay to find out. By 10am on Saturday we had decided to leave and come back home. Not only was the power out at our place, but it was out everywhere. Like, litterally everywhere in town. The restaurants, the shops, but grocery stores. No power was to be had. The reason that a power company can just turn off the power like this is due to a California Law (law needed). It's couched in terms of saving lives, but in my opinion it allows power companies to not perform needed maintenance and then just shut off the power. If you know anything about the California Energy market, you know it's kind of a shit show. Well, not everywhere. The power company where I live is one of the best ones. They have inexpensive, reliable power. In the 19 years I've lived in my community I can count on one hand the number of power outages ... and one of them was due to an airplane that didn't land properly at the local airport and they clipped the power lines. Within 12 hours though, the power was restored. Like really, Imperial Irrigation District is one of the best utility companies in ever. And the thing about them is that they are based in Imperial County. But I live in Riverside County. They provide power to my part of the county because when they were first laying out power lines what would become Southern California Edison couldn't be bothered to provide power to the eastern side of the Coachella Valley, so IID did. However, it was only for 100 years. And that 100 years expires in 2030. At that point one of two things will happen: 1. IID will renew it's right to deliver power to the Eastern Coachella Valley (where I live) and I will still have inexpensive, reliable power 2. IID will not be able to renew it's right to deliver power and I'll be switched over to Souther California Edison. To give a sense of SCE, this is the power company that consistently turns off power to thousands of it's customers in the height of summer to perform maintenance. This endangers the lives of their crews and their customers. But because the decision makers don't live in the desert, they don't realize what a bad idea this is. Anyway, why am I telling this story? The experience in Big Bear Lake made me rethink about my dependence on power where I live. And that if there is a way for me to become energy independent, then I should investigate it. Enter Claude Code I used Claude Code to help me plan and budget for a project to help me achieve this goal. All I did was start with a simple statement > Energy Independence is achieved in two ways: > > * limit / decrease the energy consumed > * Generate your own electricity > with that simple prompt Claude Code output a pretty robust plan. There were somethings I needed to help guide it on (like the fact that I replaced my HVAC in 2017 and have kept it serviced every 6 months since so I wouldn't likely need a replacement for a while) and that may roof would need to be replaced before installing Solar Panels (it's the original roof from when the house was built 30 years ago) Would an 'expert' have given me the exact same advice? Maybe not, but it did make me think about some things that I hadn't considered. Things like * evaluating the duct sealing * applying window film to windows * having an energy audit done, and that my energy provider might actually do it for free I have until 2030 when the switch over to SCE will likely occur. My hope is that by 2031 at the latest I'm on Solar and I have a battery backup. This will leave me with anywhere from 1 - 24 months of being on SCE and I'm mostly OK with that. I'd like to have this all done before the switch over happens, but it's still possible that it won't. And if it doesn't, then the worst that happens is I get a new roof ... which I need anyway. For some context on the price differences for power from SCE and IID SCE: $0.316 / kWh IID: $0.1976 / kWh I'm very lucky that I am able to enroll in the average pay program and so my power bill each month is $136. On SCE this bill will be $217. This still isn't a lot, but if I don't have to pay anything to them I'd be happier. 1. granted closing time was 9pm, but it's been a while since I've closed a place down ↩︎ ",2025-06-26,using-claude-for-non-tech-stuff,"For my wedding anniversary my wife and I went to the mountains of Southern California to get out of the heat of the desert. The weekend started of really nicely. The crisp clear air next to Big Bear Lake and the sounds of nature really helped to relax us. We … ",Using Claude for non-Tech Stuff,https://www.ryancheley.com/2025/06/26/using-claude-for-non-tech-stuff/ ryan,musings,"Twelve years ago today Steve Finley hit a Grand Slam in the 9th to clinch the NL West title against the Giants. Today, the Dodgers have already won the NL West title so we won't have anything like that again, but it is Vin Scully's last game to be called. EVER.

I remember watching Dodgers games on KTLA with my grandmother in the 80's. I thought baseball was slow and boring, but the way that Vin would tell stories was able to keep me interested.

Vin is able to call a game, with no emotion, just tell the story of the game. Dropping tidbits about this player or that player. Always knowing more about the people in the game while also knowing so much about the game.

He's quite literally seen everything. From perfect games to triple plays. He called Hank Aaron's historic record breaking home run. He even saw a pitcher throwing a perfect game through 7 get pulled (I'm looking at you DAve Roberts).

In the last game he ever called the Dodgers are in playoff form. This ... is not a good thing. The Dodgers are historically an awful performing playoff team, and so far, they have managed to lose 4 of their last 5 and are working on making it 5 of 6.

It's a dark and dreary day in San Francisco. It's raining in San Francisco. Kenta Maeda is pitching for the Dodgers.

Dodgers first out of the game is a Stikeout of Hunter Pence ... but the Dodgers are down 0-2. Might be a long one today

...

The game ended not with a win, but a whimper as the Dodgers lost to the Giants 7-1.

As Vin gave his last call it wasn't a great call like Charlie Culberson's Home Run to win the West (and the game) last weekend. It was a pop fly that sent the Giants back to New York to face the Mets.

Five years ago I never wanted him to retire. This season, I'm glad he decided to put the microphone up. A little slower in the outfield, not quite as quick with the bat, still the greatest broadcaster that ever lived.

Vin was teaching lessons all those years, not just calling games. It was only in his last season, his last game, that I really was able to hear them.

_Realize that you are blessed to do what you do._

_Don't be sad that something has ended, but be happy that it had started._

The last one gets me in a way I can't quite describe. Maybe it's where I'm at in life right now, maybe it's that it would resonate with me regardless, but it is a nice reminder, that life is what you make of it. Don't be sad that a thing has ended, but instead be happy that you had a chance to have it happen at all.

Great words Vin. Thank you ",2016-10-03,vins-last-game,"Twelve years ago today Steve Finley hit a Grand Slam in the 9th to clinch the NL West title against the Giants. Today, the Dodgers have already won the NL West title so we won't have anything like that again, but it is Vin Scully's last game to be called … ",Vin's Last Game,https://www.ryancheley.com/2016/10/03/vins-last-game/ ryan,musings,"On a previous post I went through my new found love of Fantasy Football and the rationale behind the 'why' of this particular project. This included getting the team names and their URLs from the [ESPN website](https://www.espn.com). As before, let's set up some basic infrastructure to be used later: from time import strptime year = 2016 # allows us to change the year that we are interested in. nfl_start_date = date(2016, 9, 8) BASE_URL = 'http://espn.go.com/nfl/team/schedule/_/name/{0}/year/{1}/{2}' #URL that we'll use to cycle through to get the gameid's (called match_id) match_id = [] week_id = [] week_date = [] match_result = [] ha_ind = [] team_list = [] Next, we iterate through the `teams` `dictionary` that I created yesterday: for index, row in teams.iterrows(): _team, url = row['team'], row['url'] r=requests.get(BASE_URL.format(row['prefix_1'], year, row['prefix_2'])) table = BeautifulSoup(r.text, 'lxml').table for row in table.find_all('tr')[2:]: # Remove header columns = row.find_all('td') try: for result in columns[3].find('li'): match_result.append(result.text) week_id.append(columns[0].text) #get the week_id for the games dictionary so I know what week everything happened _date = date( year, int(strptime(columns[1].text.split(' ')[1], '%b').tm_mon), int(columns[1].text.split(' ')[2]) ) week_date.append(_date) team_list.append(_team) for ha in columns[2].find_all('li', class_=""game-status""): ha_ind.append(ha.text) for link in columns[3].find_all('a'): # I realized here that I didn't need to do the fancy thing from the site I was mimicking http://danielfrg.com/blog/2013/04/01/nba-scraping-data/ match_id.append(link.get('href')[-9:]) except Exception as e: pass Again, we set up some variables to be used in the `for` loop. But I want to really talk about the `try` portion of my code and the part where the `week_date` is being calculated. Although I've been developing and managing developers for a while, I've not had the need to use a construct like `try`. (I know, right, weird!) The basic premise of the `try` is that it will execute some code and if it succeeds that code will be executed. If not, it will go to the exception portion. For Python (and maybe other languages, I'm not sure) the exception **MUST** have something in it. In this case, I use Python's `pass` function, which basically says, 'hey, just forget about doing anything'. I'm not raising any errors here because I don't care if the result is 'bad' I just want to ignore it because there isn't any data I can use. The other interesting (or gigantic pain in the a\$\$) thing is that the way [ESPN](https://www.espn.com) displays dates on the schedule page is as `Day of Week, Month Day`, i.e. `Sun Sep 11`. There is no year. I think this is because for the most part the regular season for an [NFL](https://www.nfl.com) is always in the same calendar year. However, this year the last game of the season, in week 17, is in January. Since I'm only getting games that have been played, I'm _safe_ for a couple more weeks, but this will need to be addressed, otherwise the date of the last games of the 2016 season will show as January 2016, instead of January 2017. Anyway, I digress. In order to change the displayed date to a date I can actually use is I had to get the necessary function. In order to get that I had to add the following line to my code from yesterday from time import strptime This allows me to make some changes to the date (see where `_date` is being calculated in `for result in columns[3].find('li'):` portion of the `try:`. One of the things that confused the heck out of me initially was the way the date is being stored in the list `week_date`. It is in the form `datetime.date(2016, 9, 1)`, but I was expecting it to be stored as `2016-09-01`. I did a couple of things to try and _fix_ this, especially because once the list was added to the `gamesdic` `dictionary` and then used in the `games` `DataFrame` the `week_date` was then stored as `1472688000000` which is the milliseconds since Jan 1, 1970 to the date of the game, but it took an embarising amount of [Googling](https://www.google.com) to ~~realize~~ discover this. With this new discovery, I forged on. The last two things that I needed to do was to create a `dictionary` to hold my data with all of my columns: gamesdic = {'match_id': match_id, 'week_id': week_id, 'result': match_result, 'ha_ind': ha_ind, 'team': team_list, 'match_date': week_date} With dictionary in hand I was able to create a `DataFrame`: games = pd.DataFrame(gamesdic).set_index('match_id') The line above is frighteningly simple. It's basically saying, hey, take all of the data from the `gamesdic` `dictionary` and make the `match_id` the index. To get the first part, see my post [Web Scrapping - Passer Data (Part I)](https://www.ryancheley.com/blog/2016/11/17/web-scrapping). ",2016-11-18,web-scrapping-passer-data-part-ii,"On a previous post I went through my new found love of Fantasy Football and the rationale behind the 'why' of this particular project. This included getting the team names and their URLs from the [ESPN website](https://www.espn.com). As before, let's set up some basic infrastructure to be used later: from … ",Web Scrapping - Passer Data (Part II),https://www.ryancheley.com/2016/11/18/web-scrapping-passer-data-part-ii/ ryan,musings,"In Part III I'm reviewing the code to populate a DataFrame with Passer data from the current NFL season. To start I use the `games` `DataFrame` I created in [Part II](https://www.ryancheley.com/blog/2016/11/18/web-scrapping-passer-data-part- ii) to create 4 new `DataFrames`: * reg_season_games - All of the Regular Season Games * pre_season_games - All of the Pre Season Games * gameshome - The Home Games * gamesaway - The Away Games A cool aspect of the DataFrames is that you can treat them kind of like temporary tables (at least, this is how I'm thinking about them as I am mostly a `SQL` programmer) and create other temporary tables based on criteria. In the code below I'm taking the `nfl_start_date` that I defined in [Part II](https://www.ryancheley.com/blog/2016/11/18/web-scrapping-passer-data-part- ii) as a way to split the data frame into pre / and regular season `DataFrame`. I then take the regular season `DataFrame` and split that into home and away `DataFrames`. I do this so I don't double count the statistics for the passers. #Start Section 3 reg_season_games = games.loc[games['match_date'] >= nfl_start_date] pre_season_games = games.loc[games['match_date'] < nfl_start_date] gameshome = reg_season_games.loc[reg_season_games['ha_ind'] == 'vs'] gamesaway = reg_season_games.loc[reg_season_games['ha_ind'] == '@'] Next, I set up some variables to be used later: BASE_URL = 'http://www.espn.com/nfl/boxscore/_/gameId/{0}' #Create the lists to hold the values for the games for the passers player_pass_name = [] player_pass_catch = [] player_pass_attempt = [] player_pass_yds = [] player_pass_avg = [] player_pass_td = [] player_pass_int = [] player_pass_sacks = [] player_pass_sacks_yds_lost = [] player_pass_rtg = [] player_pass_week_id = [] player_pass_result = [] player_pass_team = [] player_pass_ha_ind = [] player_match_id = [] player_id = [] #declare the player_id as a list so it doesn't get set to a str by the loop below headers_pass = ['match_id', 'id', 'Name', 'CATCHES','ATTEMPTS', 'YDS', 'AVG', 'TD', 'INT', 'SACKS', 'YRDLSTSACKS', 'RTG'] Now it's time to start populating some of the `list` variables I created above. I am taking the `week_id`, `result`, `team_x`, and `ha_ind` columns from the `games` `DataFrame` (I'm sure there is a better way to do this, and I will need to revisit it in the future) player_pass_week_id.append(gamesaway.week_id) player_pass_result.append(gamesaway.result) player_pass_team.append(gamesaway.team_x) player_pass_ha_ind.append(gamesaway.ha_ind) Now for the looping (everybody's favorite part!). Using `BeautifulSoup` I get the `div` of class `col column-one gamepackage-away-wrap`. Once I have that I get the table rows and then loop through the data in the row to get what I need from the table holding the passer data. Some interesting things happening below: * The Catches / Attempts and Sacks / Yrds Lost are displayed as a single column each (even though each column holds 2 statistics). In order to _fix_ this I use the `index()` method and get all of the data to the left of a character (`-` and `/` respectively for each column previously mentioned) and append the resulting 2 items per column (so four in total) to 2 different lists (four in total). The last line of code gets the [ESPN](https://www.espn.com) `player_id`, just in case I need/want to use it later. for index, row in gamesaway.iterrows(): print(index) try: request = requests.get(BASE_URL.format(index)) table_pass = BeautifulSoup(request.text, 'lxml').find_all('div', class_='col column-one gamepackage-away-wrap') pass_ = table_pass[0] player_pass_all = pass_.find_all('tr') for tr in player_pass_all: for td in tr.find_all('td', class_='sacks'): for t in tr.find_all('td', class_='name'): if t.text != 'TEAM': player_pass_sacks.append(int(td.text[0:td.text.index('-')])) player_pass_sacks_yds_lost.append(int(td.text[td.text.index('-')+1:])) for td in tr.find_all('td', class_='c-att'): for t in tr.find_all('td', class_='name'): if t.text != 'TEAM': player_pass_catch.append(int(td.text[0:td.text.index('/')])) player_pass_attempt.append(int(td.text[td.text.index('/')+1:])) for td in tr.find_all('td', class_='name'): for t in tr.find_all('td', class_='name'): for s in t.find_all('span', class_=''): if t.text != 'TEAM': player_pass_name.append(s.text) for td in tr.find_all('td', class_='yds'): for t in tr.find_all('td', class_='name'): if t.text != 'TEAM': player_pass_yds.append(int(td.text)) for td in tr.find_all('td', class_='avg'): for t in tr.find_all('td', class_='name'): if t.text != 'TEAM': player_pass_avg.append(float(td.text)) for td in tr.find_all('td', class_='td'): for t in tr.find_all('td', class_='name'): if t.text != 'TEAM': player_pass_td.append(int(td.text)) for td in tr.find_all('td', class_='int'): for t in tr.find_all('td', class_='name'): if t.text != 'TEAM': player_pass_int.append(int(td.text)) for td in tr.find_all('td', class_='rtg'): for t in tr.find_all('td', class_='name'): if t.text != 'TEAM': player_pass_rtg.append(float(td.text)) player_match_id.append(index) #The code below cycles through the passers and gets their ESPN Player ID for a in tr.find_all('a', href=True): player_id.append(a['href'].replace(""http://www.espn.com/nfl/player/_/id/"","""")[0:a['href'].replace(""http://www.espn.com/nfl/player/_/id/"","""").index('/')]) except Exception as e: pass With all of the data from above we now populate our `DataFrame` using specific headers (that's why we set the `headers_pass` variable above): player_passer_data = pd.DataFrame(np.column_stack(( player_match_id, player_id, player_pass_name, player_pass_catch, player_pass_attempt, player_pass_yds, player_pass_avg, player_pass_td, player_pass_int, player_pass_sacks, player_pass_sacks_yds_lost, player_pass_rtg )), columns=headers_pass) An issue that I ran into as I was playing with the generated `DataFrame` was that even though I had set the numbers generated in the `for` loop above to be of type `int` anytime I would do something like a `sum()` on the `DataFrame` the numbers would be concatenated as though they were `strings` (because they were!). After much [Googling](https://www.google.com) I came across a [useful answer](http://stackoverflow.com/questions/15891038/pandas-change-data-type- of-columns) on [StackExchange](https://www.stackexchange.com) (where else would I find it, right?) What it does is to set the data type of the columns from `string` to `int` player_passer_data[['TD', 'CATCHES', 'ATTEMPTS', 'YDS', 'INT', 'SACKS', 'YRDLSTSACKS','AVG','RTG']] = player_passer_data[['TD', 'CATCHES', 'ATTEMPTS', 'YDS', 'INT', 'SACKS', 'YRDLSTSACKS','AVG','RTG']].apply(pd.to_numeric) OK, so I've got a `DataFrame` with passer data, I've got a `DataFrame` with away game data, now I need to join them. As expected, `pandas` has a way to join `DataFrame` data ... with the [join](http://pandas.pydata.org/pandas- docs/stable/generated/pandas.DataFrame.join.html) method obviously! I create a new `DataFrame` called `game_passer_data` which joins `player_passer_data` with `games_away` on their common key `match_id`. I then have to use `set_index` to make sure that the index stays set to `match_id` ... If I don't then the `index` is reset to an auto-incremented integer. game_passer_data = player_passer_data.join(gamesaway, on='match_id').set_index('match_id') This is great, but now `game_passer_data` has all of these extra columns. Below is the result of running `game_passer_data.head()` from the terminal: id Name CATCHES ATTEMPTS YDS AVG TD INT SACKS match_id 400874518 2577417 Dak Prescott 22 30 292 9.7 0 0 4 400874674 2577417 Dak Prescott 23 32 245 7.7 2 0 2 400874733 2577417 Dak Prescott 18 27 247 9.1 3 1 2 400874599 2577417 Dak Prescott 21 27 247 9.1 3 0 0 400874599 12482 Mark Sanchez 1 1 8 8.0 0 0 0 YRDLSTSACKS ... match_id ... 400874518 14 ... 400874674 11 ... 400874733 14 ... 400874599 0 ... 400874599 0 ... ha_ind match_date opp result team_x match_id 400874518 @ 2016-09-18 washington-redskins W Dallas Cowboys 400874674 @ 2016-10-02 san-francisco-49ers W Dallas Cowboys 400874733 @ 2016-10-16 green-bay-packers W Dallas Cowboys 400874599 @ 2016-11-06 cleveland-browns W Dallas Cowboys 400874599 @ 2016-11-06 cleveland-browns W Dallas Cowboys week_id prefix_1 prefix_2 team_y match_id 400874518 2 wsh washington-redskins Washington Redskins 400874674 4 sf san-francisco-49ers San Francisco 49ers 400874733 6 gb green-bay-packers Green Bay Packers 400874599 9 cle cleveland-browns Cleveland Browns 400874599 9 cle cleveland-browns Cleveland Browns url match_id 400874518 http://www.espn.com/nfl/team/_/name/wsh/washin... 400874674 http://www.espn.com/nfl/team/_/name/sf/san-fra... 400874733 http://www.espn.com/nfl/team/_/name/gb/green-b... 400874599 http://www.espn.com/nfl/team/_/name/cle/clevel... 400874599 http://www.espn.com/nfl/team/_/name/cle/clevel... That is nice, but not exactly what I want. In order to remove the _extra_ columns I use the `drop` method which takes 2 arguments: * what object to drop * an axis which determine what types of object to drop (0 = rows, 1 = columns): Below, the object I define is a list of columns (figured that part all out on my own as the documentation didn't explicitly state I could use a list, but I figured, what's the worst that could happen?) game_passer_data = game_passer_data.drop(['opp', 'prefix_1', 'prefix_2', 'url'], 1) Which gives me this: id Name CATCHES ATTEMPTS YDS AVG TD INT SACKS match_id 400874518 2577417 Dak Prescott 22 30 292 9.7 0 0 4 400874674 2577417 Dak Prescott 23 32 245 7.7 2 0 2 400874733 2577417 Dak Prescott 18 27 247 9.1 3 1 2 400874599 2577417 Dak Prescott 21 27 247 9.1 3 0 0 400874599 12482 Mark Sanchez 1 1 8 8.0 0 0 0 YRDLSTSACKS RTG ha_ind match_date result team_x match_id 400874518 14 103.8 @ 2016-09-18 W Dallas Cowboys 400874674 11 114.7 @ 2016-10-02 W Dallas Cowboys 400874733 14 117.4 @ 2016-10-16 W Dallas Cowboys 400874599 0 141.8 @ 2016-11-06 W Dallas Cowboys 400874599 0 100.0 @ 2016-11-06 W Dallas Cowboys week_id team_y match_id 400874518 2 Washington Redskins 400874674 4 San Francisco 49ers 400874733 6 Green Bay Packers 400874599 9 Cleveland Browns 400874599 9 Cleveland Browns I finally have a `DataFrame` with the data I care about, **BUT** all of the column names are wonky! This is easy enough to fix (and should have probably been fixed earlier with some of the objects I created only containing the necessary columns, but I can fix that later). By simply renaming the columns as below: game_passer_data.columns = ['id', 'Name', 'Catches', 'Attempts', 'YDS', 'Avg', 'TD', 'INT', 'Sacks', 'Yards_Lost_Sacks', 'Rating', 'HA_Ind', 'game_date', 'Result', 'Team', 'Week', 'Opponent'] I now get the data I want, with column names to match! id Name Catches Attempts YDS Avg TD INT Sacks match_id 400874518 2577417 Dak Prescott 22 30 292 9.7 0 0 4 400874674 2577417 Dak Prescott 23 32 245 7.7 2 0 2 400874733 2577417 Dak Prescott 18 27 247 9.1 3 1 2 400874599 2577417 Dak Prescott 21 27 247 9.1 3 0 0 400874599 12482 Mark Sanchez 1 1 8 8.0 0 0 0 Yards_Lost_Sacks Rating HA_Ind game_date Result Team match_id 400874518 14 103.8 @ 2016-09-18 W Dallas Cowboys 400874674 11 114.7 @ 2016-10-02 W Dallas Cowboys 400874733 14 117.4 @ 2016-10-16 W Dallas Cowboys 400874599 0 141.8 @ 2016-11-06 W Dallas Cowboys 400874599 0 100.0 @ 2016-11-06 W Dallas Cowboys Week Opponent match_id 400874518 2 Washington Redskins 400874674 4 San Francisco 49ers 400874733 6 Green Bay Packers 400874599 9 Cleveland Browns 400874599 9 Cleveland Browns I've posted the code for all three parts to my [GitHub Repo](https://www.github.com/miloardot). Work that I still need to do: 1. Add code to get the home game data 2. Add code to get data for the other position players 3. Add code to get data for the defense When I started this project on Wednesday I had only a bit of exposure to very basic aspects of `Python` and my background as a developer. I'm still a long way from considering myself proficient in `Python` but I know more now that I did 3 days ago and for that I'm pretty excited! It's also given my an ~~excuse~~ reason to write some stuff which is a nice side effect. ",2016-11-19,web-scrapping-passer-data-part-iii,"In Part III I'm reviewing the code to populate a DataFrame with Passer data from the current NFL season. To start I use the `games` `DataFrame` I created in [Part II](https://www.ryancheley.com/blog/2016/11/18/web-scrapping-passer-data-part- ii) to create 4 new `DataFrames`: * reg_season_games - All of the Regular Season Games * pre_season_games - All of the Pre Season Games … ",Web Scrapping - Passer Data (Part III),https://www.ryancheley.com/2016/11/19/web-scrapping-passer-data-part-iii/ ryan,musings,"I started college in 1996. In 1997 one of the most influential albums of my early adulthood was introduced to me ... [Weezer's Pinkerton](https://en.wikipedia.org/wiki/Pinkerton_\(album\)). I hated it. I wanted the [Blue Album](https://en.wikipedia.org/wiki/Weezer_\(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](https://en.wikipedia.org/wiki/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 UCSD](https://ucsdtritons.com/facilities/liontree-arena/2)1. 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.](https://en.wikipedia.org/wiki/Dinosaur_Jr.) and [The Flaming Lips](https://en.wikipedia.org/wiki/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](https://www.youtube.com/watch?v=ab5WvwfLuLM). Yes, I totally identify with Matt Damon's character! ↩︎ ",2024-11-26,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](https://en.wikipedia.org/wiki/Pinkerton_\(album\)). I hated it. I wanted the [Blue Album](https://en.wikipedia.org/wiki/Weezer_\(Blue_Album\)) again but different somehow, and Pinkerton was NOT it. However, a weird thing happened. Once I moved into my … ",Weezer Live,https://www.ryancheley.com/2024/11/26/weezer-live/ ryan,musings,"I’ve been working on a project to create a [Django](https://www.djangoproject.com) based website. Over the weekend (Saturday I think) I tried to get it up and running on my [Linode](https://www.djangoproject.com) server. However, after a couple of failed attempts I decided to use the free hosting coupon1 I had for [DigitalOcean](https://www.digitalocean.com) to see if that allowed me to reply more easily deploy … the short answer … meh. What I didn’t realize over the weekend is that while I had been trying to deploy my Django site, I had installed [Nginx](http://nginx.org) on my Linode server that was also running [apache2](https://httpd.apache.org). This lead to them both trying to listen on port 80 but because Nginx was the last thing I had kicked off, it was _winning_. While I was working on my Django site I should have realized that something was up when I tried to connect to the blog for the site (still a Wordpress site on my Linode server) and it returned a ‘Can not connect to the server message’. I didn’t pay much attention because I figured (incorrectly) that I had done something specific to that subdomain, and not that I had made all of the sites on my Linode server inaccessible. Last night at about 9 I thought, “Well, it shouldn’t take long for me to figure out the issue with the new blog. ” By 10:15 I tried everything the internet had told me to try and I was still unable to get apache2 to reload. I googled a bunch of stuff, but nothing was helping. When I tried to get the status on apache2 I would get this: ● apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: inactive (dead) since Tue 2018-05-01 05:01:03 PDT; 5s ago Docs: man:systemd-sysv-generator(8) Process: 7718 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS) Process: 7703 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS) May 01 05:01:03 milo apache2[7703]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80 May 01 05:01:03 milo apache2[7703]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80 May 01 05:01:03 milo apache2[7703]: no listening sockets available, shutting down May 01 05:01:03 milo apache2[7703]: AH00015: Unable to open logs May 01 05:01:03 milo apache2[7703]: Action 'start' failed. May 01 05:01:03 milo apache2[7703]: The Apache error log may have more information. May 01 05:01:03 milo apache2[7703]: * May 01 05:01:03 milo apache2[7718]: * Stopping Apache httpd web server apache2 May 01 05:01:03 milo apache2[7718]: * May 01 05:01:03 milo systemd[1]: Started LSB: Apache2 web server. This morning I started to google each line of the status message and finally got to this: no listening sockets available, shutting down Googling for that lead me to trying this: sudo netstat -ltnp | grep ':80' Which output this: tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3324/nginx -g daemo tcp6 0 0 :::80 :::* LISTEN 3324/nginx -g daemo And finally, I saw the issue. Over the weekend while I was futzing around I had apparently installed Nginx and let it listen on port 80 AND kept it running. Once I killed the Nginx process with this: sudo kill -9 3324 I was able to restart apache2 with no problems. Thank goodness. I find that when I mess something up like this it’s important to ask myself what I learned from the experience. In that vein … What did I learn from this experience? 1. Can’t run apache2 and Nginx on the same server and have them listen on the same port. Seems obvious, but you know having to **actually** deal with it really seals the deal 2. The output messages are super helpful … google each part of them and don’t give up 3. A good night’s sleep can make all the difference 4. Rolling your own web server is less expensive than having it be Turnkey (a la SquareSpace, or some other hosted solution) but you end up being your own Sys Admin and that’s actually pretty easy when things are going well, and a freaking nightmare when they’re not 1. [Thanks to the Talk Python to Me Course for Entrepreneurs ↩︎ ",2018-05-01,whoops-or-how-i-broke-my-website-by-installing-nginx-with-apache,"I’ve been working on a project to create a [Django](https://www.djangoproject.com) based website. Over the weekend (Saturday I think) I tried to get it up and running on my [Linode](https://www.djangoproject.com) server. However, after a couple of failed attempts I decided to use the free hosting coupon1 I had for … ",Whoops! Or how I broke my website by installing Nginx with Apache,https://www.ryancheley.com/2018/05/01/whoops-or-how-i-broke-my-website-by-installing-nginx-with-apache/ ryan,musings,"I started writing my last [post](http://www.ryancheley.com/) on my iMac but because Apple Photos is a bit ... finicky with the iCloud syncing a screenshot I had taken on my iPad wasn’t there. No fear, just keep writing in Ulysses, then move from the iMac to the iPad and drop the image in. It worked, no problems no fuss. It just works. Now, if only iCloud would just work ... ",2017-12-15,why-ulysses-is-awesome,"I started writing my last [post](http://www.ryancheley.com/) on my iMac but because Apple Photos is a bit ... finicky with the iCloud syncing a screenshot I had taken on my iPad wasn’t there. No fear, just keep writing in Ulysses, then move from the iMac to the iPad and drop the … ",Why Ulysses is Awesome,https://www.ryancheley.com/2017/12/15/why-ulysses-is-awesome/ ryan,musings,"## Winter of Learning Retrospective Have you heard the good word about themes? If you haven't, take a look at this great video by [CGP Grey on Themes](https://youtu.be/NVGuFdX5guE?si=auqXL9SMfYeftcup) and how they can work. For the last couple of years I've been doing yearly themes ... with limited success. This lack of success was entirely due to me not actually reviewing the status of my themes until the end of the year ... and by then it's too late! This last December I decided that I'd do the themes, but this time I'd do seasonal set of themes instead of one BIG annual theme. My current theme ended yesterday (March 18th) and this time I'm going to actually take stock of where I am and how 'well' I did. Since my theme started on December 21, 2023 which is the Northern Hemisphere Winter Solstice, I decided to have a seasonal theme of 'Winter of Learning' with the following things I wanted to learn more about: * [Tailscale](https://github.com/ryancheley/til/tree/main/tailscale) * [Docker](https://github.com/ryancheley/til/tree/main/Docker) * Postgres * [CSS](https://github.com/ryancheley/til/tree/main/css) * GitHub Actions To help me keep track of this I dusted off my [TIL github repo](https://github.com/ryancheley/til) and started to write down some TILs. Over the course of the 88 days of my Seasonal theme I added 28 TILs. I also had 16 other, more personal, TILs that didn't make it into the repo for a total of 44 TILs. With 88 days that's a 50% hit rate on writing down stuff that I learned. This is much better than I thought I had done. I'd been pretty down on myself because I had meant to write a TIL every night, but I didn't. I over estimated the number of times I **didn't** write a TIL and thought I had done much worse on it than I had. Now, just because I wrote a TIL doesn't mean that it was one of the topics above that I had indicated I would WANT to write about, but that's OK! The point of a TIL is to document some stuff that you learned and the topics above were only ever meant to be guides, not directives. I think the one thing I learned that I'm more proud of is spending a pretty good amount of time one weekend trying to learn Docker better. During one of [Jeff Triplett](https://mastodon.social/deck/@webology)'s office hours I had joked that Docker scared me. And it was me actually saying it out loud that drove me to sit down and figure some shit out. I even had a [public notes issue](https://github.com/ryancheley/public-notes/issues/6) about it! Overall this Winter of Learning isn't what I thought it would be, but I'm glad I did it. I am going to work to try and keep on writing TILs and hopefully I'll be able to get in at least 2 per week! That being said, it's now time to prepare for my next seasonal theme ... the Spring of Transition. My daughter is a Senior in High School and is getting ready to head off to college. Now seems like a good time to start getting ready for my wife and I to be empty nesters and so we'll be spending the next 92 days figuring out how we can do that. ",2024-03-19,winter-of-learning,"## Winter of Learning Retrospective Have you heard the good word about themes? If you haven't, take a look at this great video by [CGP Grey on Themes](https://youtu.be/NVGuFdX5guE?si=auqXL9SMfYeftcup) and how they can work. For the last couple of years I've been doing yearly themes ... with limited success. This lack of success … ",Winter of Learning,https://www.ryancheley.com/2024/03/19/winter-of-learning/ ryan,musings,"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](https://www.better-simple.com/personal/2023/12/30/my-year-in- review/), [Paolo Melichore](https://www.paulox.net/2023/12/31/my-2023-in- review/), and [Velda Kiara](https://dev.to/veldakiara/djangoconus-2023-a-wish- fulfilled-2mmc), 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](https://track.toggl.com/shared- report/9091b753451ad2edafbb36f18be33d82/summary/period/last12Months), 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](https://en.wikipedia.org/wiki/Jira_\(software\)) and [Confluence](https://en.wikipedia.org/wiki/Confluence_\(software\))) to [YouTrack](https://en.wikipedia.org/wiki/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](https://en.wikipedia.org/wiki/Health_Insurance_Portability_and_Accountability_Act) 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](https://mermaid.js.org/), 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](https://en.wikipedia.org/wiki/Version_control) from [Subversion](https://en.wikipedia.org/wiki/Apache_Subversion) to [git](https://en.wikipedia.org/wiki/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](https://en.wikipedia.org/wiki/SQL_Server_Integration_Services) packages used in our [ETL](https://en.wikipedia.org/wiki/Extract,_transform,_load) 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](https://www.ryancheley.com/2023/10/24/djangocon-us-2023/) and [here](https://www.ryancheley.com/2023/12/15/so-you-want-to-give-a-talk-at-a- conference/)). 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](https://www.ryancheley.com/2023/04/01/gcp-cloud-architect- exam-experience/). 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](https://2023.djangocon.us/tutorials/django-3-airflow/) lead by [Sheena O'Connell](https://fosstodon.org/@sheena). 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](https://www.901pt.com/post/rucking-what-it-is-benefits-how- to-do-it) 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](https://www.linkedin.com/in/ronardluna/) (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](https://mastodon.social/@kjaymiller) interviewed me about my talk and that was super awesome. I was nervous at first, but Jay (and [Dawn](https://mastodon.online/@BajoranEngineer)) did a great job of making me feel at ease 😁 I also spent time working with [Jeff Triplett](https://mastodon.social/@webology) and [Maksudul Haque](https://github.com/saadmk11) on [DjangoPackages](https://djangopackages.org) 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](https://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](https://search- ryancheley.vercel.app/pelican?sql=select+summary+as+%27Summary%27%2C+url+as+%27URL%27%2C+published_date+as+%27Published+Data%27+%0D%0Afrom+content+%0D%0Awhere+published_date+%3E%3D+%272023-01-01%27+%0D%0Aand+category+%21%3D+%27pages%27%0D%0Aorder+by+published_date) (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](https://github.com/ryancheley/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](https://www.ryancheley.com/2023/07/01/firebirds-inaugural-season/), 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](https://github.com/ryancheley/ahl) that dumps data into a [datasette](https://datasette.io) [instance on vercel](https://ahl- data.vercel.app). At the time of this writing the Firebirds are [9 points behind the pace they had last year](https://ahl- data.vercel.app/games?sql=with+data+%28TheYear%2C+W%2C+L%2C+OTL%2C+SOL%29%0D%0Aas+%28%0D%0A%0D%0Aselect+strftime%28%27%25Y%27%2C+game_date%29%0D%0A%2C+sum%28case%0D%0A++when+home_team+%3D+%3Ateam_name+and+home_team_score+%3E+away_team_score+then+1%0D%0A++when+away_team+%3D+%3Ateam_name+and+home_team_score+%3C+away_team_score+then+1%0D%0A++else+0%0D%0Aend%29+as+%27W%27%0D%0A%2C+sum%28case%0D%0A++when+home_team+%3D+%3Ateam_name+and+home_team_score+%3C+away_team_score+and+game_status+%3D+%27Final%27+then+1%0D%0A++when+away_team+%3D+%3Ateam_name+and+home_team_score+%3E+away_team_score+and+game_status+%3D+%27Final%27then+1%0D%0A++else+0%0D%0Aend%29+as+%27L%27%0D%0A%2C+sum%28case%0D%0A++when+home_team+%3D+%3Ateam_name+and+home_team_score+%3C+away_team_score+and+game_status+%3D+%27Final+OT%27+then+1%0D%0A++when+away_team+%3D+%3Ateam_name+and+home_team_score+%3E+away_team_score+and+game_status+%3D+%27Final+OT%27then+1%0D%0A++else+0%0D%0Aend%29+as+%27OTL%27%0D%0A%2C+sum%28case%0D%0A++when+home_team+%3D+%3Ateam_name+and+home_team_score+%3C+away_team_score+and+game_status+%3D+%27Final+SO%27+then+1%0D%0A++when+away_team+%3D+%3Ateam_name+and+home_team_score+%3E+away_team_score+and+game_status+%3D+%27Final+SO%27then+1%0D%0A++else+0%0D%0Aend%29+as+%27SOL%27%0D%0Afrom%0D%0A++games%0D%0Awhere+%28home_team+%3D+%3Ateam_name%0D%0A+++++++or+away_team+%3D+%3Ateam_name%29%0D%0Aand+++strftime%28%27%25m-%25d%27%2C+game_date%29+%3E%3D+%2710-01%27%0D%0A++AND+game_date+%3C%3D+strftime%28%27%25Y%27%2C+game_date%29+%7C%7C+%27-%27+%7C%7C+strftime%28%27%25m-%25d%27%2C+%27now%27%29%0D%0A++group+by+strftime%28%27%25Y%27%2C+game_date%29%0D%0A%29%0D%0Aselect+*%0D%0A%2C+2+*+W+%2B+OTL+%2B+SOL+as+%27Points%27%0D%0Afrom+data%0D%0Aorder+by+TheYear&team_name=Coachella+Valley+Firebirds&_hide_sql=1). 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](https://hammerplumbing.com/) 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](https://www.imdb.com/title/tt0085995/). 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](https://visitjulian.com/) 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](https://en.wikipedia.org/wiki/Paramore) with Abby), but Emily and Abby were able to see several shows including [Shania Twain](https://www.shaniatwain.com/#/), [Lizzo](https://www.lizzomusic.com/), and [Pentatonix](https://www.ptxofficial.com/). 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](https://www.szasos.com/tour/) (all three of us plus a friend of Abby's) and a [Kings game](https://www.nhl.com/avalanche/news/colorado-avalanche-los- angeles-kings-game-recap-december-3-x2816) (just Emily and me). Abby was also able to see the last show of [Taylor Swift's Eras tour](https://www.taylorswift.com/tour-us/) at [SoFi Stadium](https://en.wikipedia.org/wiki/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](https://maniacs.com/) with their new lead singer ([Leigh Nash](https://en.wikipedia.org/wiki/Leigh_Nash) from [Six Pence None the Richer](https://en.wikipedia.org/wiki/Sixpence_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](https://imgur.com/tczZ7ez). # 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](https://en.wikipedia.org/wiki/Haboob), felt Earthquakes, seen smoke from nearby Wild Fires, and a couple of pretty bad rain storms (like the [Valentine's Day massacre](https://www.desertsun.com/picture- gallery/weather/2020/02/13/2019-valentines-day-storm-and-its-aftermath-across- region/4747997002/), and the [Storm Cell that wouldn't move](https://kesq.com/news/2014/09/11/la-quinta-cleanup-from-700-year- storm/)) ... 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](https://www.desertsun.com/story/news/2023/09/03/tropical-storm- hilary-destroyed-one-palm-springs-area-neighborhood-heres-why/70733017007/) 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? 1. Our current stack involves commits to Azure DevOps which is picked up by TeamCity and then deployed using Octopus Deploy ↩︎ 2. That year I ran the LA Marathon in March, and in July I tore a muscle in my left hamstring ↩︎ 3. They've been in the house for almost 9 years! ↩︎ 4. I read mostly Sci Fi written by people that mostly look like me ↩︎ 5. These aren't particular good or well written, but I was in between books and they were on my kindle so 🤷🏼‍♂️ ↩︎ 6. more on that in the next article 😁 ↩︎ 7. Average costs is about $15,000 ↩︎ 8. Close to $30,000 ↩︎ 9. 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! ↩︎ ",2023-12-31,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](https://www.better-simple.com/personal/2023/12/30/my-year-in- review/), [Paolo Melichore](https://www.paulox.net/2023/12/31/my-2023-in- review/), and [Velda Kiara](https://dev.to/veldakiara/djangoconus-2023-a-wish- fulfilled-2mmc), I was inspired to **actually** finish mine. # Professional In the moment … ",Year in Review 2023,https://www.ryancheley.com/2023/12/31/year-in-review-2023/ ryan,musings,"I did my first [Year in Review](https://www.ryancheley.com/2023/12/31/year-in- review-2023/) last year and have decided to carry on the tradition to make sure I know what I did! I've written about themes before, so I won't go over it again here. Below is a high level of what my 2024 themes were * [Winter of Learning](https://www.ryancheley.com/2024/03/19/winter-of-learning/) * [Spring of Transition](https://www.ryancheley.com/2024/06/20/spring-of-transition/) * [Summer of Writing](https://www.ryancheley.com/2024/10/03/summer-of-writing/) * Fall of Mindfulness Overall my themes were pretty successful. I do wish I had been a bit more mindful, and am now left to wonder if I shouldn't have gone with Autumn of Mindfulness instead of Fall of Mindfulness, because I seem to have taken a step back on some of my hopes for mindfulness 😄 ## Professional Last year I said > In the moment it can feel like I don't really get anything done at work I've felt this way pretty much every year for probably since I first became a manager, but I'm starting to embrace it a bit more as I get older I guess. For some context, in 2024 I worked 2235 hours with the following breakdown: Category | Hours | Percentage ---|---|--- Administration | 1193.5 | 53.4 Meetings | 838.1 | 37.5 Coding | 93.5 | 4.2 Conference | 55.5 | 2.39 Commuting | 54 | 2.42 There were a couple of highlights from work this year though that I wanted to call out I celebrated 16 years with my current employer which means that my career is now old enough to drive in the US! My team finally was able to migrate our SQL Database version control from Subversion to Git. I wrote about the migration to git last year in my year in review and this was the last project that needed to be migrated over. There are still some things to do to help with the migration to make it easier for the teams that work with this project, but the first couple of steps have been completed which is nice. One of the big things I wanted to focus on was the validation issues that my company had with transmissions of claims data. Working with a couple of smart and dedicated people we were able to do some pretty amazing things. One thing to keep in mind with the validation errors is that they have to be corrected, by a person, in order to allow the claims to be transmitted to the Health Plans (which is a major goal of my company) At the start of the year, the validation error rate for Institutional Claims was 13.7% while the rate for Professional Claims was 8.7% By the end of the year those rates were down to 1.1% for Institutional Claims and 0.3% for Professional Claims. This represents decreases for 89% and 96.4% respectively. I'm really proud of what the team was able to accomplish. ## Personal ### Health I usually like to run or walk to keep my cardio health up, but I seemed to keep running into one injury or another with my knees, feet, ankles ... whatever. In July I decided to give swimming a try. Since July 15 I've swum 83,650 yards / 76489.56 meters ... which is 47.5 miles. This absolutely blows my mind because my first swim was only 200 yards, lasted about 10 minutes and I thought I was going to die. I'm now consistently swimming 3 days a week for about 55 minutes and 2000 yards / 1828.8 meters. At about the same time I really doubled down on starting a meditation practice. I tend to do about 20 minutes of meditation each day. In 2024 I had 54 hours of meditation. I wish I could split up my walking and running statistics, but Apple doesn't think these are different and so they are combined in all of the health apps! My combined Walking+Running stats came in at 1015 miles which looks like a lot, but is down significantly from my high in 2019 of nearly 2000 miles. It's also the lowest annual total by far since 2015 (my first full year of tracking) I think I know what I'll need to focus on in 2025! ### Writing In June I started a writing group with [Mario Munuz](https://fosstodon.org/@pythonbynight) and [Trey Hunner](https://mastodon.social/@treyhunner) 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](https://ryancheley.com/archive/2024/). This is the most since [2021](https://ryancheley.com/archive/2021/) when I wrote 23, but about 1/3 of my high mark in [2018](https://ryancheley.com/archive/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](https://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](https://www.youtube.com/watch?v=JLYaAYY4JPc). As always, my time at DjangoCon US was a blast and I'm looking forward to seeing everyone in [2025 in Chicago](https://www.defna.org/announcements/2024/12/31/djangoconus-2025-announced/)! I also ran for the [Django Steering Council](https://www.djangoproject.com/weblog/2024/dec/10/django-6x-steering- council-candidates/). I wasn't successful in making it into the Steering Council, but [the five folks](https://www.djangoproject.com/weblog/2024/nov/21/announcing- the-6x-steering-council-elections/) 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](https://mastodon.social/@webology)'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](https://social.jacobian.org/@jacob) and [Thibaud Colas](https://fosstodon.org/@thibaudcolas). 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](https://cvfirebirds.com/). 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](https://www.ryancheley.com/2023/07/01/firebirds-inaugural-season/) 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](https://discoverpalmdesert.com/spring-concerts-2024/) 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](https://en.wikipedia.org/wiki/San_Jacinto_Peak). I also got to see [Weezer](https://www.ryancheley.com/2024/11/26/weezer-live/) and had a good time hanging out with my daughter. Finally I rediscovered the amazing music of [The Tragically Hip](https://en.wikipedia.org/wiki/The_Tragically_Hip) from a [toot](https://mastodon.social/@gvwilson/112666592482656620) by [Greg Wilson](https://mastodon.social/@gvwilson) and it's brought me a lot of joy to listen to them again. [Phantom Power](https://en.wikipedia.org/wiki/Phantom_Power_\(The_Tragically_Hip_album\)) is my favorite album of theirs with so many good songs. [Bobcaygeon](https://en.wikipedia.org/wiki/Bobcaygeon_\(song\)) is probably my favorite on the album, but it can change depending on my mood. #### Empty Nesting As I wrote about [here](https://www.ryancheley.com/2024/06/20/spring-of- transition/) 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](https://mastodon.social/@ryancheley/113557183813506655) 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](https://mastodon.social/@ryancheley/113580121231076190) 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](https://third-bit.com/sdxpy/). 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](https://www.manning.com/books/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. ",2025-01-02,year-in-review-2024,"I did my first [Year in Review](https://www.ryancheley.com/2023/12/31/year-in- review-2023/) last year and have decided to carry on the tradition to make sure I know what I did! I've written about themes before, so I won't go over it again here. Below is a high level of what my 2024 themes were * [Winter …](https://www.ryancheley.com/2024/03/19/winter-of-learning/) ",Year in Review 2024,https://www.ryancheley.com/2025/01/02/year-in-review-2024/ ryan,musings,"I was hoping to have this written and posted last week, but for Christmas this year Santa brought me a cold which knocked me on my butt for a few days. I had done a bit of prep, but wow, when I look back at 2025 it was a pretty big year for me personally. ## Professional I celebrated 17 years at my [current employer](https://www.mydohc.com). While this isn't a nice round number sort of anniversary, about 6 months before the actual anniversary date I was promoted to an Associated Vice President and joined the Senior Management Team. This has been a goal of mine since about 2010 and after a lot of hard work (and honestly more than a bit of good luck) I ""made it"". In addition to the promotion at work, I also helped to lead a multi department team to a successful upgrade for a major application AND helped to lead a major network migration for our EHR that went really well. Two major projects accomplished in the same calendar year was a pretty good feeling. We also do annual employee satisfaction surveys and my department had a 96% satisfaction rating. This is a really good feeling as a leader. We get shit done AND people are happy to do it! Since 2021 my department has consistently scored above 90%. This isn't just me though! I have a great management team that helps to make this happen. Over this same time period I've had 7 people leave the department1. Five of them because of retirement. I really like that where I work is a place you retire at more often than not! That, along with the high satisfaction rates, suggest that my management team and I are doing something right. ## Django and Python On the Django and Python side it was also a really big year. In February I [spoke](https://youtu.be/FBMg2Bp4I-Q?si=tzHCWboxaEa8vEh3) at [PyCascades](https://2025.pycascades.com/) in Portland, Oregon. In September I [spoke](https://youtu.be/aZwKCo5kwJU?si=eel7u86Czjzl-CsV) at [DjangoCon US](https://2025.djangocon.us/) in Chicago, Illinois. This was my THIRD talk at DjangoCon US2 I was also active with [Django Commons](https://django-commons.org/) on the admin team, was a [Djangonaut.Space](https://djangonaut.space/) [Navigator](https://github.com/djangonaut- space/program/blob/main/navigators.md) in [Session 5](https://djangonaut.space/sessions/2025-session-5/) for 2 amazing Djangonauts, and got to hang out at [Jeff](https://mastodon.social/@webology)'s Office Hours pretty consistently (though not as often as I would have liked!) The biggest accomplishment was [getting elected to the DSF Board](https://www.djangoproject.com/weblog/2025/nov/28/2026-dsf-board- election-results/) and then being [elected Treasurer of the Board](https://www.djangoproject.com/weblog/2025/dec/18/introducing- the-2026-dsf-board/). This is still all **very** new and I'm trying to feel my way around, but I've got some amazing support and I'm really looking forward to working with the board in 2026 and beyond. ## Technology A few weeks ago I watched Jeff Triplet migrate various infrastructure for [DjangoPackages.org](https://djangopackages.org/) from [Digital Ocean](https://www.digitalocean.com/) to [Hetzner](https://www.hetzner.com/) with [Coolify](https://coolify.io/). This got me to dive into that ... pretty deeply. I spent a lot of my December PTO3 working to migrate my servers from Digital Ocean to Hetzner managed with Coolify. I plan to write more about that later, but needless to say, as of December 29, 2025 I had successfully migrated everything off Digital Ocean to Hetzner. ## Personal ### Music Watching live music is a lot of fun. My wife Emily and I really enjoy doing this. We didn't get to see as many concerts as we would have liked to, but we were still able to see a few. [Kelsea Ballerini](https://www.kelseaballerini.com/home) (with our daughter Abby) and [Benson Boone](https://www.bensonboone.com/) at [Crypto.com arena](https://en.wikipedia.org/wiki/Crypto.com_Arena) in Downtown Los Angeles, [Sessanta](https://sessantalive.com/?srsltid=AfmBOoqKeaTi6S9G5bzemiit74Ed6cuRHGyKm4G3gwZ1yU0Y9xVVL49H) at [Acrisure Arena](https://en.wikipedia.org/wiki/Acrisure_Arena), [Third Eye Blind](https://www.thirdeyeblind.com/)4 at a local casino, a show at the [Grand Ole Opry](https://en.wikipedia.org/wiki/Grand_Ole_Opry) in Nashville, Tennessee as part of a conference I attended. We also saw about 5 or 6 different bands in 3 days at different venues while we were in Nashville (though sadly we didn't get to see a show on the stage at the [Taco Bell Cantina](https://locations.tacobell.com/tn/nashville/131-2nd-avenue- north.html) which feels like a real miss!) though we did get to see [The Steel Drivers](https://www.thesteeldrivers.com/) at the historic [Ryman Auditorium](https://www.ryman.com/) We also saw [Post Modern Jukebox](https://postmodernjukebox.com/) at the [Fox Theater](https://www.foxriverside.com/) in [Riverside](https://www.visitcalifornia.com/places-to-visit/riverside/). We stayed a few days to get out of the heat of the Coachella Valley, but were shocked to learn that Riverside is only about 15-20 degrees cooler. And when it's 115-120 here it can still be above 100 there! We still had a great time and it convinced me even more that the wild idea my friend [Mario](https://pythonbynight.com/) and I had to pitch Riverside as a location for DjangoCon US 2027/2028 was actually a really good idea, not just a wild idea 😀 ### Hockey I went to a ton of hockey games. To start the year off I went to the [Cactus Cup](https://acrisurearena.com/event/cactus-cup-2/) and saw 4 NCAA Division 1 games in 2 days. The best part was sitting behind the goal right at the glass and seeing just how fast (and LOUD) the game can be. ![Teddy Bear Toss 2025](/images/Cactus-Cup-2025.jpeg) I was pretty exhausted (but happy) by the end of it. I also got to see 36 [Firebirds](https://cvfirebirds.com/) home games (regular season5 and post season6), 2 Firebirds road games (both in San Diego against the [Gulls](https://www.sandiegogulls.com/)), and was able to attend the [AHL All Star Competition](https://theahl.com/news/coachella-valley-to- host-2025-ahl-all-star-classic) at [Acrisure Arena](https://en.wikipedia.org/wiki/Acrisure_Arena) in February. On the NHL front I went to a game to watch the [LA Kings](https://www.nhl.com/kings/) host the [Seattle Kraken](https://www.nhl.com/kraken/) (the Firebirds big kid club) and while I was in Nashville for a conference in November I got to watch the [Nashville Predators](https://www.nhl.com/predators/) play the [Calgary Flames](https://www.nhl.com/flames/). My favorite hockey-related experiences this year though were the [Teddy Bear Toss](https://en.wikipedia.org/wiki/Teddy_bear_toss) [game](https://theahl.com/stats/game-center/1028181) (even though the Firebirds lost) and getting to greet the players in the tunnel before the game ![Teddy Bear Toss 2025](/images/Teddy-BearToss-2025.jpeg) ### Baseball Sadly we only made it out to a few baseball games this year. We saw a few California Winter League games one Saturday in February, and one game out in Rancho Cucamungo to see the Dodgers Low A Affiliate the Quakes play. The Dodgers won the World Series, and that was nice, but I didn't see any of their games in person this year. ## Family This year Abby started her second year of College so Emily and I continue to be empty nesters most of the year7 One of my favorite highlights from the year include Abby coming home from college for the weekend for my birthday last March to surprise me. A completely unexpected visit that literally made it one of the best birthdays ever. I read something earlier this year that once your child leaves your home for college, or whatever, they'll have spent about 95% of the time they're EVER going to spend with you. This hit me pretty hard. Like wanting to sob uncontrollably hard. So for Abby to come home to spend time with me for my birthday was the best gift ever. # Conclusion Looking back it was a pretty great year. Lots of accomplishments, lots of great memories. The year started off with lots of fear and trepidation. I still have that (in spades) but I also am starting to have a bit more hope. I don't have any lofty goals, and I didn't do the same kind of [Theme](https://youtu.be/NVGuFdX5guE?si=FewkUjQis5kjiQTv) planning that I've done in the past. This year it just didn't really work for me, so I'm pausing on that exercise. That being said, if I was going to have a theme for 2026 it would be 'The year of Intentionality'. I've spent more time this year than I would have liked doing things but not thinking about what I wanted to do. I just did them because they were easy or it's just what I always do. For the last few weeks I've been trying (with varying degrees of success) to be more intentional in my actions, and my plan is to continue that into 2026. Here's hoping to a great 2026! 1. The department is 13 people ↩︎ 2. [DCUS 2023](https://youtu.be/LG-3TB8GIZA?si=GbHaFNdb0Y9KyMcT), [DCUS 2024](https://youtu.be/VPldDxuJDsg?si=YH9nCZxNsYX5Baj3) ↩︎ 3. Paid Time Off / Vacation ↩︎ 4. yes, they are still a band ... no this was not my idea! ↩︎ 5. This includes games for the 2024-25 and 2025-26 season ↩︎ 6. just 2025, obviously ↩︎ 7. I might just be misremembering, but when I was in college we didn't have this many breaks, and they weren't this long! ↩︎ ",2025-12-31,year-in-review-2025,"I was hoping to have this written and posted last week, but for Christmas this year Santa brought me a cold which knocked me on my butt for a few days. I had done a bit of prep, but wow, when I look back at 2025 it was a pretty … ",Year in Review 2025,https://www.ryancheley.com/2025/12/31/year-in-review-2025/