Software Engineering Leader | O'Reilly Author | Umpire
I took to programming as a kid because I love creating software that make life better. That drive remains, but I've had the privilege of building bigger things: The first eCommerce sites for major European companies during the dot-com boom, a better solution for sales tax compliance, a market research platform that powers product decisions at major automotive brands, or a cannabis-friendly fintech platform (PCI/SOC 2 and all).
Building high-performing teams comes naturally to me because I care about the people on those teams. It matters that they have meaningful work, that they have a voice in how the work gets done, and that they have a growth path. Even if that growth leads them away from the company one day. High performance is an emergent property of treating people well, and success is a byproduct.
I'm also one of the top contributors on Stack Overflow. I didn't set out with that goal; I set out to help people learn.
If you're building something worthwhile and you care about the people who join you on the journey, let's talk.
When you have questions about C# 8.0 or .NET Core, this best-selling guide has the answers you need. C# is a language of unusual flexibility and breadth, but with its continual growth there’s so much more to learn. In the tradition of the O’Reilly Nutshell guides, this thoroughly updated edition is simply the best one-volume reference to the C# language available today.
Organized around concepts and use cases, C# 8.0 in a Nutshell provides intermediate and advanced programmers with a concise map of C# and .NET knowledge that also plumbs significant depths.
Who is the real enemy when your technology is smarter than you?
In 2044, the United States and China struggle for global supremacy when an alien artifact is seen orbiting Jupiter, a discovery that may redefine life on Earth.
NASA Commander Dylan Lockwood must outrace and outwit a better-equipped Chinese mission to control the mysterious object. The Chinese bested him before, but he won't allow it to happen again.
Sara Wells is Deputy Director of the National Security Agency. She commands vast resources — human and AI — to derail China's efforts and find Dylan an edge.
If Dylan fails, China will dominate the world stage, and the United States will become a second-rate power. Both sides leverage advanced AI to win the race, AI that begins to become self-aware as the goal draws near...
An unstoppable alien force hell-bent on tormenting humanity swarms across Earth, turning our worst weapons against us.
NASA Commander Dylan Lockwood races to secure the Quadriga, an advanced but abandoned alien starship he and his crew retrieved from deep space, before the invaders discover it. It may be the only edge for humanity.
Earth launches a last-ditch plan to save the planet, but the president doesn't trust Dylan's judgment. He places NSA Deputy Director Sara Wells in charge of the mission, a decision that places her on a collision course with Dylan's brash personality.
Can Sara and Dylan stop the invaders before every last human is dead?
How can she survive if even good-hearted people have nothing to share?
Ji-min is the daughter of peasant farmers in near-future North Korea. She was born with enormous potential in a bleak world unable to nurture her dormant strength. When American-led sanctions crush the hermit kingdom's economy, she is thrown into conflict with the nation's elite. Powerless, her life collapses into unthinkable hardship. How can she survive if even good-hearted people have nothing to share?
A mysterious stranger who wields unearthly talents senses the spark smoldering in Ji-min. The stranger's effort to foster that latent potential is threatened when fate offers Ji-min a chance at revenge, an opportunity that could ruin her.
As an umpire and former Little League manager, I know that there aren't great options for league management software.
As a software engineer, I know it can be better.
Some of the software we make due with began life in the early 2000s—and it shows. None of it seems to have us in mind: Guys and gals who want to get off the computer and onto the field. It's clunky to use and only solves some of the problems we face. We download things into Excel and upload from Excel. We click through unintuitive forms designed by programmers instead of by us.
I'm working on a system that solves the problems I face as an umpire and as a manager. Help me by sharing your pain points. Here's what we're working on so far.
Oh, and this thing doesn't have a name yet. We're working on that part.
The app makes it easy to set up your venues, which can have one or more fields. Either use the intuitive web interface, or import last year's venues & fields. You can refine what you import with a click or two.
Tell us when your season starts and ends, and what times you want games on each field. The system will create all the timeslots for you with a click.
It can be painful to create a game schedule that's fair to all teams and considers many real-life factors such as field availability, spreading out when teams face each other, driving distances, balancing home and away games, and many more.
This whole thing started after a conversation with ex-MLB umpire Adam Dowdy about how poorly umpire scheduling systems, even at the highest levels, handle these issues. I worked with Adam to create a better scheduler. It turns out, that same technology can power game scheduling.
What is this wizardry? It's a genetic algorithm, tailored to the specific needs of sports scheduling. Here's a video I created to show Adam the first version.
This means you just pick what kind of matchups you want (e.g. each team is home once and away once vs. every other team) and the system figures out the rest. Seasons and tournaments are supported.
Oh, if you assign officials to your games, the same technology will help you with that (see below).
In the Army, they say no plan survives contact with the enemy. In the civilian world, no plan survives family vacations, illness, injury, or any of the countless other reasons kids don't show up to play.
Teams turn to TeamSnap or similar solutions to track player availability, but those generally aren't integrated into the league management process. Practices, games, players, and parents need to be managed separately. And there's a separate bill for that system.
We're integrating player availability management into one bundle. Nothing is sold separately.
The system includes tracking game results. You can just record the final score, but if you're so inclined, you can also track each game's progress. Interested parties (grandparents, for example) can follow along on the website.
The standings page automatically updates as you record games and is available to everyone in your league.
In the future, we plan to include sports-specific game progress updates similar to GameChanger. For a baseball game, you will be able to record what each batter did, how many pitches each pitcher threw, etc. We won't have that ready at launch, but we already laid the foundation.
As a high school umpire, I know how hard it is to get officials for games. Giving your volunteer or paid officials the best possible experience maximizes the chances they'll work your games.
As mentioned above, this project came to be after a discussion with Adam Dowdy about how poorly umpire scheduling systems respect the time and needs of both umpires and assignors. Using our genetic algorithm, we can build an assignment schedule that is fair to all officials, balancing factors like driving distance, game frequency, different positions on the crew, and games close to the official's skill level.
Whether you work with paid or volunteer officials, that same technology can help you fill a last-minute vacancy with the press of a few buttons on your phone. No more scrolling through contact lists. The available officials closest to the game are listed in order. With a click you can call, text, or email them for help.
Do you think youth sports need better software? Are you happy with what's available?
What's the "killer app"? What pain can this technology solve that would make you say, "Sign me up!"?
eric@johannsen.us
https://www.linkedin.com/in/ericjohannsen/