Tech/Development Nerd AMA

Hey y’all,

I had this question in the Slack #opl channel:

So Niv, when you make changes are you working with just Dev and Prod environments? If you had an earlier convo about your workspace here or on the community boards or a pod or somewhere else, I’d be interested.

I spoke to this briefly in Slack (just development and production environments, FYI) and realized there were a few folks that seemed to be interested in having a bit more of a conversation about this stuff. So let’s try a community AMA here. Ask away, keep it focused on the Ottoneu dev process or technical product questions as much as possible. I’ll flag questions that seem off-topic and do my best to fully quote whatever questions I am asking. Will try to keep this open until the end of the week, and hopefully some of the information will be interesting to those of you who have more of a developer / product manager bent.

So I guess my name is Niv, I am the sole developer at Ottoneu Fantasy Sports, AMA.

4 Likes

What kinds of security do you have to be concerned about with Ottoneu? Obviously we’re not dealing with sensitive customer financial/tax/personal info so hackers aren’t really going to get anything super valuable. Denial of service attacks would be a concern but in fantasy baseball, stats can always be caught up. The one area I would think might be a concern are in the money leagues where manipulation of individual teams for profit could be a concern.

Has there been any attempted hacks? Did they get anything of value?

EDIT: No judgement here on any answer. It might actually make sense from on ROI standpoint to have no security precautions and merely fix things after a hack occurs.

aka Framber Forever from Slack channel

1 Like

What front-end framework / technologies do you use?

1 Like

There are also sorts of interesting data feed interactions. In progress stats will be different depending on what page you’re looking at (Standings, Dashboard, Today’s Stats, League Home Page). Are individual stats being retrieved on a different schedule than accumulated stats?

1 Like

I can’t speak to this directly as you might imagine.

Pretty mild to be honest. Our auth is managed by FanGraphs and thus WordPress and we don’t keep anyone’s personal information so the main thing is making sure no one is trying to pull a fast one and manage multiple teams in one league. That has come up a couple of times and it is really, really easily thwarted.

1 Like

We have a custom SCSS framework that was developed by Thoughtbot (a Rails-first agency that I could not recommend more) as part of the big redesign and launch of football in 2015. Most of the JS is handwritten, though I use jQuery and a few different plugins as I see fit. Nothing super complicated, as my strengths are on the backend and I didn’t want to learn some new front-end system for a plethora of features Ottoneu ultimately wouldn’t use. There is obviously plenty of room for polish but this setup keeps things simple and easy to update / deploy.

1 Like

Yeah this isn’t intentional by any means but you definitely caught me on this one. AMA over!

Just kidding. In this case most pages are showing the stats that we have stored locally and that are used for auction / waiver claim tiebreakers. However the Today’s Stats page uses our feed directly from our data provider rather than going through the middleman of being stored locally in the Ottoneu DB. This makes Today’s Stats more up to date, but not necessarily aligned with how the game sees a team’s current performance, if that makes sense.

1 Like

I was guessing it was Rails-based, given the transactional nature of the site. It does keep things really stable and straightforward. I do all React in my day job, but I maintain some old sites that combine custom templating (Freemarker) and jQuery and it’s amazing how straightforward they are.

2 Likes

The agency that developed the SCSS / CSS framework we use is a Rails shop. The site is not Rails-based at all. It is PHP-based, though I wouldn’t consider Rails or PHP “front end” in terms of your original question FWIW. I have a very 2005 mindset.

1 Like

Ah, my mistake. My first big job in front-end development was writing the templates and CSS for Apache-MySQL-PHP sites.

2 Likes

Is PHP used for any technical reason or just your familiarity with the language? Does Ottoneu use a web framework like Laravel?

I’m also kind of curious about data retention… I see you’re able to correct some issues if caught early. Do you retain all day-to-day statistics throughout a season? I see some other data (e.g., the lineups and stats for my teams a year ago) goes away… do you archive all of that at some point?

3 Likes

I started working on Ottoneu in 2005 and PHP was popular and easy to run and about as good as it gets and I kinda think that is mostly still true. So it’s just what I’m familiar with and what I like working in - I’ve worked in other frameworks but I find them to be too busy / opinionated. Ottoneu doesn’t run on a framework, just on my own custom “thing” as it were.

3 Likes

We retain all day to day stats every day from pretty much forever. You can look at your lineup from a year ago and look at your standings from a year ago, if your league was around a year ago. Just plug in the dates. At some point I’d like to move away from storing the data on my own and just reflecting the data from FanGraphs as it comes in, but I am really wary of messing with such a core part of the platform so we will see if I ever get around to that.

2 Likes

Heh. Deciphering pythonic boilerplate code is half the fun though.

One more question I was always curious about given how often you change the site: do you have any scripted unit tests and/or webdriver testing in place? Or do you mostly test manually?

Thanks for the AMA!

2 Likes

I have a solid development environment so I do manual testing. If I ever had a second developer, a lot of my attitude around the deployment process (and frankly a lot of the answers I’ve given in this thread) would change I think, but since it is a team of one I don’t have automated testing.

2 Likes