Life at theScore
Software Developer

Summer 2023

By: Andrew Chow

theScore Office in Toronto

For my second work term, I returned back to theScore. However, this time I was a Software Developer on the Promotions Team!

What is theScore?

theScore, a wholly-owned subsidiary of PENN Entertainment, empowers millions of sports fans through its digital media and sports betting products. Its media app ‘theScore’ is one of the most popular in North America, delivering fans highly personalized live scores, news, stats, and betting information from their favorite teams, leagues, and players. theScore’s sports betting app ‘theScore Bet Sportsbook & Casino’ delivers an immersive and holistic mobile sports betting and iCasino experience. theScore Bet is currently live in the Company's home province of Ontario. theScore also creates and distributes innovative digital content through its web, social and esports platforms.

What is the Promotions Team?

The Promotions team at theScore is responsible for creating marketing campaigns that allow users to participate and receive awards for completing user actions. Each promotion can contain a set of rules that define an audience, as well as the type of action(s) required.

Example:

  • User X bets Y to receive a $Z Bonus Bet
  • User X registers to receive $Y Cash Back
  • 💻 Technologies Used

    Elixir

    Phoenix

    PostgreSQL

    Apache Kafka

    GraphQl

    The main tech-stack at theScore is built on Elixir & Phoenix. Elixir is a functional programming language that runs on the Erlang virtual machine (BEAM) and is designed for building highly scalable, fault-tolerant, and distributed applications. Similarly, it pairs well for systems that need to handle a large number of concurrent users and processes, which is what theScoreBet excels at. On the other hand, Phoenix is a web framework written in Elixir that builds web applications. Some cool things about Phoenix include channels, websockets and LiveViews, which is a feature that allows developers to build real-time interactive user interfaces with server-rendered HTML templates and minimal JavaScript!

    One of the cool things I learned about Elixir these past months is the pipe operator! |> The pipe operator allows you to chain function calls making the code more clear and readable.

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 defmodule Math do def add(a, b) do a + b end def square(a) do a * a end end value = Math.add(5, 5) |> Math.square() IO.puts("Result: " <> Integer.to_string(value)) # Outputs: 100

    💬 Communication

    As a service team, communicating with other backend services is important. In this regard, we rely on gRPC (Google Remote Procedure Call) protocols to transmit information between different services. Leveraging gRPC, we can exchange data and execute remote procedures across various services, enhancing the overall reliability and performance of our distributed system. Similarly, we use Kafka as our message publishing system to consume various types of messages that can be sent via gRPC.

    📚 Learning Goals

    Here are a couple of goals I wanted to accomplish during my term at theScore

    • Learn new languages and tools: Elixir, Phoenix, gRPC, Kafka, etc
    • Contribute! Building new features and products to deliver to users
    • Understand system architecture and design at a technical level

    🎒 My Experience

    During the first couple of weeks, I spent the time onboarding, configuring my personal development environment, reading documentation and asking questions. Pushkar, my onboarding buddy helped me with my first couple of tickets. At first, it was overwhelming jumping into the code base for the first time. My previous QA experience had helped me a lot as I already had a solid understanding of the product. To me, it was more of a puzzle to solve where I needed to put the pieces together. In the end, I was able to open and merge my very first pull request!

    After the first couple of weeks, I was getting the hang of everything. I had the opportunity to work on various features, including optimizing one of our gRPC endpoints that we support. Futhermore, I had the chance to build UI components for the marketing and cx team using Phoenix LiveView! One of the things that I love the most about being a developer is being able to make an impact by delivering products to customers. It's extremely rewarding knowing that my work will impact many users around the world.

    Near the end of my work term, I had the opportunity to participate in theScore's Summer 2023 Co-op Hackathon. My team and I decided to build an AI feature that would recommend bets to users based on their betting history. To do this, we created a recommendation engine using collaborative based filtering and trained a machine learning model with available markets and bets. In the end, it was really fun and a great experience as we presented our product to the Sr. Leadership team! Shoutout to my team, for the amazing work and effort that was put into the Hackathon.

    co-op hackathon
    Team 1: D-Generators

    📘 Reflection

    Over the last 4 months, my journey as a software developer has been a great learning experience. I was able to develop new features, collaborate with team members, network with others, and learn new technical skills and coding practices. As always, I'm looking forward to the future as I progress in my software development career. Here's to embracing the next exciting journey! 🍻

    🎖️ Acknowledgements

    • 🏆 Special thanks to Pushkar and Hughie for being great mentors, leaders who provided me with feedback and guidance
    • 🏆 Shoutout to everyone on the Promotions team, it's been a pleasure working with all of you again!
    • 🏆 Thanks to Michelle for shaping the co-op culture and hosting all of the co-op events, hackathons and activites throughout the term!
    co-op students

    Made with ❤️ by Andrew Chow