A New Adventure, 2024 Edition

This post isn’t about why I left teaching for the 2nd time in 9 years (that will eventually require its own lengthy post) but is about how I went about looking for a job outside of education. I’ve done this about 5 times over the last 15 years and have continually gotten better at knowing what I want and how to find it. Similar to how I narrowed down what cities to live in, a central spreadsheet with links and numerical scoring helped a lot.


The spreadsheet can be seen here: SHARED - KCMO Jobs 2024


What I wanted going into the job search:

  • job in KC, with less travel being better

  • in office and not remote

  • Architectural/Engineering/Construction (A/E/C) industries preferable

    • project management

    • business analyst

    • data analyst

    • CAD drafter (fallback)


January 2024 - not really wanting a job as spring semester just started, but beginning search

  • see a list of 150 companies that have a HQ in KC, search them on Google and get the careers link for each

  • combine with a list of 27 architecture companies in KC, search them on Google and get the careers link for each

  • combine with a bigger list of the 175 largest employers in KC, search them on Google and get the careers link for each

  • create an ALL_companies list from 186 remaining companies after duplicates have been removed

    • this list was fairly exhaustive to make, so I did a couple rounds of searching a company and getting their careers page link

    • to help break the monotony of going industry by industry, I created a random column and used the rand() formula to switch them all up

  • create a smaller list arch_engineering from ALL_companies that has just the 57 companies in the Architecture, Engineering, and Construction industries

  • create a spreadsheet of the 62 jobs I found even remotely interesting across those companies with their job specific websites linked

  • come back to the list and give each two different scores 1-3 with 3 best for how qualified I felt I was for the job as well as how interested I was in the job, along with some brief summary notes for each

  • I have a 1/23/24 look into ALL of the companies


February 2024 - still not wanting a job right away but convinced that I won’t be teaching again

  • start with January’s list of jobs, create a copy for February and see which jobs from January are no longer available in February and delete them

  • once or twice in the month look up any new jobs in the A/E/C list as well as select companies from the bigger ALL list (really no organized way but it wasn’t all of them)

  • end up with 56 jobs in February list

  • take the qualified and interested scores 1-3 and multiply them to find a quick overall score for the jobs out of 9 possible points

  • sometime around here I thought to have GPT-4 help me out, so on the sheet initial_gpt_suggestions is a list of jobs after I uploaded by resume PDF and the list of jobs I was interested in and asked it to create a list of best possible jobs

    • I then revised this list by giving each an interest level score 1-10 with 10 max and prompting GPT-4 to revise it based on my interest score


March 2024 - starting to get really interested in finding another job and would consider leaving before the school year was done

  • I updated February’s list in March and didn’t create a separate sheet, I don’t really know why

  • I have a 3/3/24 look into random companies and not just A/E/C but didn’t get through all of them

  • I found the first job (and company) that I researched pretty good into and eventually applied: Orange EV

    • fast growing company in KCK that gave me SolarCity vibes

    • they manufacture industrial electric vehicles, specifically electric terminal trucks which are the trucks that move trailers around distribution centers

    • applied for EV Process Engineer role that was sort of trying to streamline their engineering department workflows and reminded me of SolarCity process improvement


April 2024 - definitely was more serious about finding a job, applied a couple times throughout the month and debated quitting once state tests were finished at the end of the month (and leaving a month early)

  • create a copy of February list and see which are no longer available and delete them

  • added new jobs from the ALL list randomly, ended with 43 jobs

  • added a column for scoring how good the company was 1-3 and then multiplying that score with the scores from the qualified and interested scores for a new overall job score out of 27 possible points

  • applied to 6 jobs throughout the month (rough month of school for me):

    • 4/10 - another job at Orange EV, this time a Business Analyst role

    • 4/10 - a Building Enclosure Specialist job at BranchPattern, an engineering company

    • 4/23 - a Mechanical Engineer job at ME Engineers

    • 4/23 - a general interest job posting with bnim, an architecture company

    • 4/23 - a Civil Engineer EIT job at Wallace Design

    • 4/26 - a Project Engineer job at Centric, a construction company

      • a friend in KC is a Project Manager and has always raved about his company and sent over the job as he thought I would be a good fit for the role


May 2024 - was ready to leave at any point but also was determined to finish the school year, partly because I was so close but also selfishly because of a stipend bonus

  • copied April’s list and revised for jobs no longer available and any random new jobs I came across, ending up with 42 jobs

  • another teacher’s spouse worked at Taliaferro & Browne as a Project Manager and I applied and had an in-person interview for a Entry-Level Engineer/Inspector position

    • the teacher’s spouse PM was great to talk to and I could definitely work with him

    • the company seemed nice but the office was very sleepy and empty and not somewhere I could see myself working from

    • the position would have entailed the first 6 months being in the field overseeing road construction inspections, which didn’t seem too interesting

    • I decided to not pursue it further

  • I had an in-person with Centric for the Project Engineer position in mid May

    • the company seemed more and more impressive the more I learned about it, the office was busy and seemed somewhere I could work from

    • the role was more entry-level Project Manager type work, which was interesting to me and a career path that I was very interested in

      • one thing about the role was it was usually Construction Management new grads so I was a little bit out of the experience range but that’s ok

    • the interview went well I thought, they were very knowledgeable and nice to talk to

    • I thought that I had a 50/50 shot at getting the position

    • I didn’t follow up after the interview because I thought they would reach out after the interview (I was a little over-confident likely) and honestly I was a little hesitant as I thought I’d start right away, and all I was focused on was finishing the school year and enjoying summer a little bit

    • I didn’t get the job, was a little surprised but a little relieved, as I’d get to enjoy summer in June

    • I eventually followed up after about 3 weeks when I knew I didn’t get the job and asked for feedback from the interview after giving my impressions of how I did (good and bad)

  • I applied and had a phone interview for a Project Planning Assistant role at Populous, an architecture firm that building sports stadiums around the world (my dream company when I was graduating from my Architectural Engineering undergrad 15 years ago)

    • the company (and work) has always been a dream of mine

    • the role looked perfect, as I’d be helping Project Managers with various project tasks and be supporting them from a business analysis angle behind the scenes

    • they contacted me pretty quickly after applying and I thought I had a decent chance

    • the phone interview seems to go decent, I remember being very nervous for it because I loved it so much and talking too fast as I was too excited

      • one bad indicator from the phone call was its length, as it ended up only being about 15-20 minutes and I didn’t feel I communicated myself well

    • I followed up a week later and they told me that I didn’t get the job

    • I was more disappointed on not getting an in-person interview here than I was for not getting the Centric job

  • the jobs that are highlighted in pale yellow were ones I was particularly interested in and thought I would apply to

  • after those 3 job explorations in May, I decided to pause and enjoy summer in the month of June (I felt that I truly deserved it after teaching) and didn’t look at jobs from mid May to mid June


June 2024 - once I got a couple weeks of relaxation and enjoying the slow paced summer life, I started to get ready to find a job again in mid June and started looking again

  • I revised May’s list and ended with 45 jobs

  • I revised my qualified ranking for my favorite job posting (was up for a couple of months) and don’t really know why I never applied for it

    • Garmin would be fantastic to work for but they’re very big (and I might be lost at first) and the office is pretty far away (>30 minutes)

    • the role looked awesome, a Project Manager role that would work on Business Analyst type streamlining

    • a friend of a friend works there and I thought about reaching out to get a referral, but never really did

  • I did another round of randomization of ALL_companies and started looking at companies outside A/E/C potentially

  • I applied for two jobs on 6/17/24:

    • a Project Management associate role at an Advertising company, Global Prairie

    • an Operations Analyst role at what I first thought was an Architecture company but is really an Industrial Design + Build company, Dimensional Innovations (DI)


And that brings me to some good news: on Monday July 22nd, I’ll be starting my new job as an Operations Analyst at DI!


After my initial application to the job:

  • they contacted me the next day to schedule a phone interview two days later

  • the phone interview went decent to good, I was worried that I wouldn’t be able to communicate about myself effectively over the phone, similar to the Populous phone interview

    • luckily this one was longer (45-50 minutes) and I felt I got more about myself across

    • the talent manager explained a lot more about the job, and it sounded better and better with everything that I heard

      • I’d be working directly under the Chief Operations Officer (COO)

      • I’d be tasked with helping improve processes and assisting project managers, among others

      • sounded like a perfect mix of Project Management + Business Analyst + Data Analyst, something that greatly interested me

    • I was worried that I was too excited with how I was talking and was just hoping for an in-person interview

  • they followed up the next day (Friday) and wanted to schedule an in-person interview for the following Monday, which showed that I didn’t screw up the phone interview too bad and they were interested in me as well

  • the in-person interview ended up being directly with the COO and seemed to go really well, and I grew more interested in the role and working with her

  • the office was great and a quick tour around it by the COO gave me more insight and respect for what they do

  • I followed up with the COO 2-3 days later, saying it was great talking with her and again expressing my interest

  • the talent manager emailed and said they wanted to schedule a 3rd interview the following week with some department managers

  • the 3rd interview (2nd in-person) with two Directors of Project Management and Production Management seemed to go very well as well and I became 100% convinced that I wanted the job, that I think I’d do well in the job, and that I wanted to work at the company

  • a week after the 3rd interview, I got a call from the talent manager and was offered the job


Final tally: 186 companies, hundreds of jobs looked at, 11 jobs applied for, 4 companies interested for initial interview, 3 in-person interviews, 1 job offer.


The role, the people, and the work that DI does all seem very exciting and I don’t think that it could have worked out any better. I’m ready for this new challenge!


2024 Big Data Bowl Final Project: Attack Zones

For the 2nd time, I attempted to enter the Big Data Bowl competition but my frustrating combination of procrastination and inexperience with the Kaggle notebook posting procedures caused me to not upload my notebook correctly/on time and it did not count. However, I'm proud of the work that I did and want to share it, so below is an explanation post about my 2024 project (see this link for an explanation on my 2022 project)

Introduction

Officially, football games are won and lost by the points a team scores. Unofficially, football is a battle for distance, measured in yards from the opponent’s endzone. While a defender's primary responsibility is to prevent points, their main objective after an offensive player gets the ball is to minimize the yards gained by the ball carrier.

Before getting into the data preparation, let me introduce the main metric used to evaluate the yards given up by the tackler after initial contact: "Yards After Contact." Given that the endzones in our tracking data are positioned at the far ends of the X-values, "Yards After Contact" focuses solely on the X-direction and is calculated as the difference in the ball carrier's X-value between the "first_contact" event and the "tackle" event. A higher X-distance between these events indicates a poorer performance by the tackler, as it means they allowed more yards after initial contact before completing the tackle. This metric is added to the tracking data and labeled as "x_totaldis_fc_t" or sometimes "x_dist."

This post investigates which attack angles by a tackler (referred to as Attack Zones) lead to the fewest yards gained after the tackler has made first contact with the ball carrier. The analysis focuses specifically on solo tackles, standardizing the directions of motion for both the ball carrier and the tackler. Although this falls under the metric category, the insights gained are invaluable for coaches as well.


Data Preparation

The primary data sources for this notebook are from Big Data Bowl (BDB) and the R stats package "nflverse." The BDB data includes game, play, player, tackle, and tracking data for weeks 1-9 of the 2022 NFL season. Unique "gameId" and "playId" columns were merged into a single "game_play_Id" column, which was then matched with the corresponding “nflverse” game and play data. This integration added additional context, such as solo tackles, penalties, and expected points added, for each "game_play_Id," covering over 50,000 plays in total.

To filter the data, I isolated every "game_play_Id" that met the following criteria:

  • Involved a single solo tackler
  • Did not involve a penalty
  • Did not involve a turnover
  • Did not end out of bounds
  • Was not a special teams play
  • Was not a sack

This filtering process left approximately 5,450 plays within the Weeks 1-9 tracking data. I then used the BDB data to identify the unique ball carrier and tackler "nflId" for each "game_play_Id" and isolated these two "nflId"s (along with the football) in the tracking data for all solo tackles.

A big part of the data preparation involved standardizing the ball carrier’s direction of motion (and play direction) to the right and adjusting the tackler's angle of attack based on changes in the ball carrier's direction. To do this, I modified all direction angles from the given 0 degrees (increasing clockwise) to the more standard 0 degrees (increasing counterclockwise). I then rotated both the ball carrier's and tackler’s angles so that the ball carrier’s final direction was always 0 degrees to the right.

It's important to note that the angle between the ball carrier and tackler (angle of attack) remained unchanged, only their direction of motion was standardized. While this adjustment altered the position data, once I had the "Yards After Contact" X-distance for each solo tackle, I no longer needed the position data, as my focus shifted to the angle of attack. This standardization enabled a consistent comparison of each tackle's angle of attack.


Exploratory Analysis

For context, the chart below illustrates the correlations between expected points added (EPA) per play versus total yards gained per play (left) and "Yards After Contact" (right). As anticipated, both total yards gained and "Yards After Contact" show a positive correlation with a high EPA per play. This indicates that a defender should aim to limit both metrics as much as possible.

In my exploratory analysis, I first examined the time duration between the "first_contact" and "tackle" events in the tracking data. As shown in the chart below, the vast majority of solo tackles occur within 2 seconds of first contact, with 80% happening in under 1.8 seconds.

To analyze the plays and tackles themselves, I isolated the tracking data for just the ball carrier and tackler for each solo tackle. I began by creating basic animated GIFs of each play. A sample of these animations is shown below, displaying the players' movements along the field using their X and Y position data, with a black arrow indicating their orientation (the direction they were facing) and a green arrow showing their direction of movement. This visualization provided important context on the players' movements that the raw data alone couldn’t.


In-Depth Analysis

After investigating whether a player's momentum and force (calculated by multiplying their weight by their speed and acceleration, respectively) influenced the "Yards After Contact" given up on a play, I decided to focus on the player's attack angle toward the ball carrier.

Tacklers are traditionally taught to square up to the ball carrier and meet them head-on (moving in opposite directions) to drive the ball carrier backward and minimize "Yards After Contact." While this makes sense theoretically, in practice, most ball carriers have a significant momentum advantage when they meet a tackler, often driving the tackler backward from the point of first contact.

By standardizing the ball carrier’s direction of motion to 0 degrees right and rotating the tackler’s direction accordingly, I derived a single angle measurement (tackler’s angle of attack) instead of dealing with multiple directions. Due to the variety of angles, I grouped them into 12 groups of 30 degrees each, forming 12 Attack Zones.

Zone 1 ranges from 0 degrees right counterclockwise to 30 degrees, continuing in this manner until Zone 12, which covers 330 degrees to 360 degrees (0) right. This grouping allowed for a clearer understanding of which of the 12 Attack Zones were more successful in limiting the "Yards After Contact" compared to examining 360 individual degrees. Below are the descriptive statistics for the Attack Zones, along with an overall chart showing the median values and counts for each Attack Zone.

Given the directional nature of the data, I created the radar charts at the top of the post. These charts display the direction and median "Yards After Contact" values, as well as a similar radar chart illustrating the EPA/play for each Attack Zone. Lower values in both metrics are better for a defender, as they indicate giving up fewer "Yards After Contact" and expected points when attacking from a smaller angle rather than a larger one.


Results and Discussion

Contrary to conventional tackling wisdom, meeting the ball carrier head-on (Attack Zones 1 and 12) does not result in the lowest median "Yards After Contact" or lowest EPA/play. Surprisingly, these zones exhibit some of the highest values. This may be because defenders might be stationary, waiting for the ball carrier, making it easier for them to be overpowered.

Interestingly, the best Attack Zones from which a tackler should engage a ball carrier are from the side and at an angle from behind. Tackling from the side makes sense as the ball carrier may overcome a head-on momentum transfer and continue moving, whereas momentum transferred from the side is harder for them to counter. Even if a tackler has less momentum than the ball carrier, a smaller force from the side can effectively bring the ball carrier down compared to a larger force head-on.

The same principle applies to tackling from behind. The additional momentum from a different angle is more challenging for the ball carrier to overcome than a direct head-on confrontation. While it may seem counterintuitive to tackle from behind, as it might push the ball carrier forward, this forward push is often less than the "Yards After Contact" gained by meeting the ball carrier head-on with the same momentum.

For limitations about these results, it's important to note that this data only considers solo tackles that include both the "first_contact" and "tackle" events. Tackles lacking a "first_contact" event are not included in the "Yards After Contact" calculations, as the final metric cannot be determined without the initial contact point. Further research is needed to understand the distinction between these events fully.

Additionally, this analysis did not explore how Attack Zone knowledge could assist tacklers in collaborative efforts, such as helping from the side or back to complete the tackle faster. Nor did it examine "missed tackles" and which Attack Zones result in the most missed tackles. Both assisted tackles and missed tackles should be investigated further, as this notebook focuses solely on completed solo tackles that have both "first_contact" and "tackle" events.

Attention All The Way Down

Recently on Twitter, Anna Gat asked the question, “What was the last Big Idea?” and there were many great responses, many of which have been world-changing.

For me, two ideas immediately came to mind: "Attention Is All You Need" a paper from Google researchers in 2017 that has transformed the world of AI, and Dr. Iain McGilchrist’s Divided Brain theory, introduced in his 2009 book “The Master and His Emissary.”

A brief intro to the two ideas (errors in summarizing are mine of course):

  1. Attention Is All You Need: This paper introduced a new way of understanding and generating language via the transformer. Previously, models focused on word-by-word prediction and had trouble with longer inputs and understanding the context of the text. However, the new model doesn’t work sequentially word-by-word but instead reads the entire sentence or input as a whole and then uses its understanding of the context to focus its attention on the most important parts. This not only greatly increases text comprehension and generation but also enhances speed and efficiency.

  2. McGilchrist’s “Divided Brain” theory: McGilchrist wasn’t the first to introduce the concept of the two hemispheres of the brain being better at different tasks, but he popularized the theory that they focus attention in different ways. The divided brain has a left hemisphere (LH) that is more focused on details and good at tasks like language, math, and logic, processing information step-by-step. The right hemisphere (RH), however, is better at understanding the big picture, appreciating art and music, and processing information all at once.

Considering these revolutionary ideas together for the first time, I realized that they both involve the same basic function: the role of attention. With LLMs, attention means the algorithmic weights given to words or parts of words – a machine version of attention. With the divided brain, it means the more traditional human understanding of attention. This post is an attempt to connect the two (with the help of ChatGPT in italics).

The main similarity between the two is that although the ideas handle attention in different ways, they both involve it simultaneously to achieve the best results:

  • For the transformer, the two types of attention involved are called self-attention and multi-head attention. Self-attention weighs the importance of different words in a sentence relative to other words and to the text as a whole. Multi-head attention is similar but has multiple variations of the self-attention weights computed in separate layers and then merged, making it better at concentrating on separate details. Self-attention runs sequentially, and multi-head attention runs in parallel, so there are multiple ways the attention is calculated, and they run simultaneously.

  • For the Divided Brain theory, the LH focuses on the details of something, and the RH focuses on how it all fits together. The LH is analytical and logical, focused on representing things in our mind (thus making virtual representations and removing the liveliness from objects), whereas the RH is holistic and looks at the whole picture, focused on presenting something as a whole (thus invoking the liveliness of objects). Both types of attention are crucial for understanding intricacies and the whole picture, and both happen simultaneously.

Connecting them together:
  • Self-attention is similar to the RH of the brain since it takes into account the context of the integrative whole, whereas multi-head attention is similar to the LH since it’s better at focusing on details and specific parts.
  • From ChatGPT: Each layer in the Transformer model (multi-head attention) mimics the left hemisphere’s detailed focus by computing attention weights for each word relative to every other word. These layers operate in parallel, much like how different aspects of a task can be processed simultaneously in the brain.

    The second similarity is that both ideas have attentions that are dynamic and adjust to the information they consider in real-time. Again, a summary directly from ChatGPT:

    • Both human and Transformer attention are dynamic, capable of adjusting focus based on context. This reflects the ability to re-read or re-evaluate certain parts of the input as new information emerges. This ongoing integration of new information with existing knowledge, allows for a coherent and updated understanding.

    • Attention weights are recalibrated at each layer, allowing the model (or brain) to dynamically shift focus and update understanding.

    Thus, both the transformer and the Divided Brain theory suggest that attention is handled in different yet simultaneous ways, and both also dynamically adapt based on new information.

    Dr. McGilchrist expanded upon his Divided Brain theory in his 2021 book “The Matter With Things” and concluded that society has been placing more and more emphasis on LH processes (language, logic, analysis) instead of balancing them with RH processes (beauty, wholeness). This resulting imbalance is the root cause of many of society’s current problems. From not understanding each other because we’re not seeing commonalities to constant distractions caused by technology to the exponential rise in attention-related disorders, society seems out of whack.

    But we have been fighting back and trying to regain our hemispheric balance, and the two examples I’ll end with also involve attention.

    The first is the rise in practicing mindfulness. One of the most popular forms of mindfulness is called “focused attention meditation,” where you focus all of your attention on a single input (like your breathing) and try to keep your attention focused solely on that. When other thoughts try to steal your attention, you’re supposed to simply bring it back to that singular input. Another form of mindfulness is being open with your mind and allowing thoughts and feelings to come to you, observing them (paying attention to them) without judging or evaluating what they mean. The second potential rebalancing is following your curiosity, or what you feel naturally attentive to. Following these curiosities often feels like play instead of work, like you’re uncovering or following things that resonate with you.

    Thanks for your attention :)

    2024 NFL Draft Visits, by team and position

    For the 5th time in the past 10 years (previously 2023, 2022, 2019, and 2014), above is the NFL Draft Visit list from Walter Football organized by team and position. The numbers shaded in blue are conditionally formatted to show what position the team is concentrating on compared to other positions, those shaded in red are formatted to show what position each team is focusing on compared to other teams in the NFL.

    This year I kept the same draft visit points system as last year:

    • Visits worth 1 point = visits where the teams were already there and just talked to a player = Senior Bowl visit, NFL Combine visit, virtual visit
    • Visits worth 2 points = visits where the team sought out the player, but in a group setting = Pro Day visit, Local visits (players that grew up or went to college in the area)
    • Visits worth 3 points = individual visits where the player was brought in or worked out, often the most important = Private visits (teams have 30 of these to use), Workout visits

    One difference this year is instead of displaying the sum total of the amount of draft visit points per team per position, I chose to display the percentage proportion of that team's total draft visit points used (what I call NFL Draft Visit Resources). The reasoning is simple: even if not every visit is reported, what IS reported should be consistent within the team. 

    For example, if a team reports their visits often, it's likely that the reported visits are consistent across positions within that team, meaning we should be able to see what positions they're spending more resources on (resources in this case effectively mean time). Every team only has a certain amount of time pre-draft, and it's my theory that they allocate this time as efficiently and effectively as they believe they can. 

    Please keep in mind that this list is in no way complete, as these are only the visits that teams/agents/players have reported that Walter Football thankfully organizes every year. There are likely many prospect visits that are not reported (for various team reasons) or not collected in the list. Also, some teams definitely report their visits A LOT more, there are some local newspapers/blogs that report a lot more, and there's certain players whose agents report more, etc. (For example: the data on Los Angeles Rams visits is pretty sparse, whereas the data on Pittsburgh Steelers visits is pretty robust. See the linked spreadsheet at the bottom for visit info)

    Even though the data isn't 100% accurate, I believe it's still useful to look for trends on maybe what teams are concentrating on what positions. And I believe it'll be useful to similarly-minded mock draft nerds like myself. Happy mock drafting!


    Link: Spreadsheet with data (keep in mind it was put together in 3 hours so only basic data verification/cleaning was done)


    I'm Sorry...

    [The following was adapted from GPT-4 after I fed it a transcript of a 2 minute ramble I had recorded while walking a couple of weeks ago and asked it to turn it into a 1000 word essay]


    I've come to understand — it has taken a while — that the impact of my words matters as much as their intention.

    I want to help.

    I want to optimize.

    I want to make things better.

    Yet, the art of feedback is delicate. It's about choosing the right moment, delivering thoughts with kindness and tact. It's a skill I'm still honing, balancing honesty with sensitivity.

    Despite this awareness, there's a part of me that fiercely holds onto this trait; it's a part of who I am.

    It drives me to question.

    It pushes me to innovate.

    It motivates me to seek excellence. 

    But with this drive comes a responsibility – to be mindful, to be gentle.

    So, here's my heartfelt revelation:

    I am learning.

    I am growing.

    I am striving to find that sweet spot between sharing my insights and respecting the moment.

    It's a journey of self-improvement, of understanding when my voice is needed and when silence is more powerful. 

    In closing, this is my ongoing quest – to be thoughtful, to be considerate, yet to stay true to my instinct. To be the voice of change, yet the listener of the moment.

    And amidst this complex dance of words and silence, I embrace this flaw, for it is also my strength. I'm working on being softer, more empathetic.

    But in the depths of my soul, where truth whispers, I can't deny it:

    I'm sorry... but I'm right.