Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Forecasting alternatives to Surfline #63

Open
ssobkajr opened this issue Aug 23, 2024 · 9 comments
Open

Forecasting alternatives to Surfline #63

ssobkajr opened this issue Aug 23, 2024 · 9 comments

Comments

@ssobkajr
Copy link

Hi Stefan,
I've been working on some stuff and think we could help each other. I'm new to github and coding in general, so I'm not sure if this is the best spot to write this, but I couldn't find anywhere else.
I've been wanting to get into forecasting but was never strong enough with coding to make any real progress. I recently figured out how to best leverage chatgpt to help with the meat of the coding (I've been using Python) and it has been a huge help.
Over the past couple of weeks I've built out a POSTgresql database (also a big learning experience) that has all buoy, US coastal Tide, and US coastal wind/weather from 2018 to present. Tide data also is DB for the next year (present -> Aug 2025) because its very predictable and the wind/weather forecast is input for 15 days in the future. Each day the historical data (buoys, observed weather) is updated, and the weather forecast is replaced with the current forecast.
I use NOAA API for buoy and tide. Synopticdata API for historical weather, and open-meteo API for forecast.

I started this project with the idea that I could use machine learning to forecast waves (conditions, height, etc.). Like everyone else on earth that surfs, I use Surfline but I know there are ways to make it better. A 5ft 16s west swell is not going to be FAIR-GOOD in Ocean Beach, despite how many times it tells me that. Its going to be closeout walls of death. User input should be able to shape future forecasts.

My thought was to make forecasting tool or app that relies heavily on user input. i.e. 200 people put there rating in for a day, based on those inputs the model would be trained and know how it will be in the future, and so on. This is nothing revolutionary but I don't really see it being done in surf forecasting, at least in any real way. I think it will help with individual spots rather than forecasting for a whole county or region. We have the raw data and semi-reliable forecasted data, but the target rating (height, conditions, shape, etc.) is what I need.

Anyways, I've been working a ton on this lately and wanted to reach out because it seems like your going down similar paths. Feel free to reach out, or ignore completely!
Scott
[email protected]

@kanedeiley
Copy link

Hey, working on a free alternative to Surfline for at least a weeks' worth of forecasting. Once I get to lifting the front end off the ground would love to touch base, to see if you would potentially want to collaborate!

@swrobel swrobel changed the title User input needed Forecasting alternatives to Surfline Aug 23, 2024
@ssobkajr
Copy link
Author

Absolutely! Gathering and organizing all of the open source data has been way more of a challenge then I expected, but I'm pretty much there at this point. The amount of lat/long inputs for weather data can be improved, but everything else is pretty built out.
As a POC I've been trying to scrape surfline's (or other tools) historical rating / wave height to correlate to the existing data and use it to predict, but its been tough. I've gone down some rabbit holes with scraping web.archive snapshots and using regex's to pull what I wanted, but after I realized those f'ers changed the code format in 2021 I put that task aside.

@swrobel
Copy link
Owner

swrobel commented Aug 23, 2024

I think this is a great place to have this conversation! I've renamed the issue to clarify what the discussion is about, so others can find it, but it's pretty amazing that @kanedeiley found this thread just minutes after @ssobkajr posted it - a testament to the github community that I was hoping to engage with when I open-sourced this years ago.

Anyway, I think it's worth noting that for California, at least, I made a point to pull in SpitCast data, so there are alternatives to Surfline out there that are more localized. I won't say its forecasts are always better, but the goal with this project was to get a "consensus opinion" on the forecast, so outliers (like @ssobkajr's Ocean Beach example) are less impactful. It was a major blow to this project when MagicSeaweed was shut down, so I would absolutely love to see other options for forecast data sources, and would be happy to support those as I'm able, with the caveat that I have very little Python or ML experience.

I do know that Surfline launched functionality to collect feedback on their forecasts, and I actually have a surfing acquaintance who built an app to crowdsource surf reports (goFlow) that was shut down because it's so hard to build a community, especially when that community (surfers) are so guarded about information sharing. I don't want to shoot a good idea down; I just want to caution that it's a lot harder to get surfers to provide consistent feedback (ie: they're much more likely to say the surf sucks than it was great if they know the audience is the whole world rather than their close surfing buddies). Psychology is just as important as logic here ... anyway, just some rambling thoughts that you can discard as you please.

@ssobkajr
Copy link
Author

Very true, all good points. I built a google sheets for my retired friend to track our spot. Over the past 4 years it has an average rating as "sucked to okay" lol. Why surf everyday if it really sucks? Anyways, there's also an app called LazySurfer that does something very similar, but the UI doesnt really work and I think it just takes individuals input for themselves, not necessarily the spot in general.
Honestly, if I built something that me and 15 people I know that surf my beach put there inputs in and it worked I'd be overjoyed. I really just like data analysis and surfing so this seemed like a good project. I guess the next step is to start gathering opinions on the actual day. I've built google forms that go to sheets in the past. It asks for wave height min/max, conditions (glassy, choppy, etc.), time surfed, and crowd.

@swrobel
Copy link
Owner

swrobel commented Aug 23, 2024

I guess the next step is to start gathering opinions on the actual day. I've built google forms that go to sheets in the past. It asks for wave height min/max, conditions (glassy, choppy, etc.), time surfed, and crowd.

I will say that I think this is an amazing idea, and I hope it works! I guess it's just the realist (pessimist?) in me that always has to play the devil's advocate with new ideas 😈

@kanedeiley
Copy link

Totally hear you on this. My idea in general was to have individuals to journal their sessions, and tie that in with geo-data as well as the forecast metrics for when they began to surf. That way I can generate a personalized forecasting system for Surfers based on their historical preferences. Did not think of it from a social aspect more less than a fun project I would probably only release to a few buddies. However, this has me thinking about maybe adding a Group Feature in which Journals and personalized rankings can be shared. To your point hard to keep this project pushing from a financial standpoint, but thought of this as a good learning opportunity for a Full Stack Application with ML baked in.

@ssobkajr
Copy link
Author

Dude same idea! I guess if you surf and you are into data stuff its a pretty logical path to go down.

@kanedeiley
Copy link

kanedeiley commented Aug 23, 2024

Lol! Love it; I'll keep in touch once I get my Journaling & Forecasting Features all together in a Frontend that I am happy with. Btw the stack I am working with is Next, TS, React, Supabase (Postrges), Zod, Prisma & Zustand. This modularly would be the Frontend and would obviously use Python with Libraries like PyTorch to handle the database seeding and ML Capabilities

@ssobkajr
Copy link
Author

Sounds good!
I realized I've been mistaken on certain parts of this, please correct me if I'm thinking about this wrong.. I was thinking I needed a lot of different users input per day per spot to get an accurate forecast, which has been the sticking point for moving forward. More input would obviously be better for averaging out opinions, but as long as I have at least one reading a day for my spot the actual forecasting aspect should still work, right? It will just be tailored to only my rating.
I am thinking of taking the couple years of my friends ratings (known as BobLine) and putting my own input moving forward.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants