SShortSingh.
Back to feed

MicroLeague Sports dev reveals why sports data identity is harder than simulation

0
·1 views

Eddie Solar, developer of MicroLeague Sports, writes in his third dev blog that building cross-era sports simulations proved far more challenging on the data side than on the simulation engine side. The core difficulty is what he calls an identity problem: franchises relocate and rebrand, and players cannot be treated as single consistent entities across time. Cases like the Cleveland Browns relocation and the Houston Oilers becoming the Tennessee Titans expose deep contradictions in how franchise identity can be modeled. Solar notes that no single schema cleanly resolves whether identity should follow an organization, a city, or a name, and that getting this wrong silently corrupts all downstream simulation results. The team's early engineering time was largely consumed by these entity resolution challenges before any meaningful normalization of historical statistics could begin.

Read the full story at DEV Community

This is an AI-generated summary. ShortSingh links to the original source for the complete article.

Discussion (0)

Log in to join the discussion and vote.

Log in

Related stories

0
ProgrammingDEV Community ·

Rust API Design: When to Use Borrowed Data, Cow Type, and Safe Destructors

A technical guide on advanced Rust API design explores the trade-offs between storing owned data versus references, advising that ownership should be required only when the code genuinely needs it. The Cow (Clone-on-Write) type is highlighted as a solution for cases where ownership requirements are only known at runtime, allowing functions to borrow data when no modification is needed and clone it only when mutation is required. Small primitive types like i32 and bool are treated as exceptions, where copying is as cheap as referencing, while large types such as fixed-size arrays should still be passed by reference. The guide also addresses destructors via the Drop trait, noting they are typically expected to be non-blocking and infallible, though exceptions exist when releasing certain resources. Practical code examples illustrate how Cow can be used in function signatures to avoid unnecessary heap allocations.

0
ProgrammingDEV Community ·

Go vs Ruby: How Go Replaces All Loop Constructs With a Single 'for'

A developer documenting their transition from Ruby to Go highlights how Go consolidates all looping patterns into a single 'for' construct, replacing Ruby's multiple options like 'while', 'until', 'loop do', and '.each'. Go's conditional syntax mirrors Ruby's logic but uses curly braces instead of 'end' to define blocks. The language also supports 'break' and 'continue' keywords familiar to Ruby developers, mapped to Ruby's 'break' and 'next'. Go's 'switch' statement differs notably in that it does not fall through by default, requiring an explicit 'fallthrough' keyword to continue into the next case. The article concludes that while the two languages differ in syntax and design choices, neither approach is inherently superior — they simply reflect different priorities.

0
ProgrammingHacker News ·

AI-Themed Billboards Spark Dystopian Concerns Across San Francisco

San Francisco has seen a surge of billboards promoting artificial intelligence companies and products, drawing criticism from residents and observers. Many locals argue the ads are transforming the city's visual landscape in an unwelcome and unsettling way. Critics describe the proliferation as emblematic of Silicon Valley's outsized influence on the city's culture and identity. The controversy reflects broader tensions between the tech industry's dominance and the everyday experience of San Francisco residents.

0
ProgrammingDEV Community ·

Discord Cut WebSocket Bandwidth 40% by Switching Compression Algorithms

Discord's engineering team reduced WebSocket traffic by 40% after migrating their gateway compression from zlib to zstandard (zstd), a process that took six months to complete. Zstd offers better compression ratios at comparable or faster speeds, especially for repetitive structured data like JSON payloads. Unlike async content platforms, Discord operates as a real-time, event-driven system handling millions of persistent concurrent connections, making compression strategy a critical architectural concern. A key technical consideration in WebSocket compression is whether to maintain shared context across messages, which improves efficiency but adds state management complexity. The case highlights that compression is not a trivial configuration change but a significant engineering decision with direct impact on bandwidth costs and latency.