Replies: 7 comments
-
I have the same concerns in the inverse priority order. |
Beta Was this translation helpful? Give feedback.
-
Hi, Thank you so much for taking the time to write out this list- your points here are clear, well laid out, and well taken on my end. I came to this project from a data processing standpoint, which means I'm very new to thinking about a lot of the concerns you're raising. While I can't promise I'll have terribly satisfying answers, I'll do my best to address these in turn:
To be perfectly honest, I've been blown away by the interest in this, and so I really apologize that it's pretty rough around the edges. In the last month, the level of traffic has grown 10x, which is incredibly exciting and motivating, but also raises the expectations a lot. I'm hopeful that in a few months this will have improved to the point I can address some of these concerns, and again, appreciate the time you took to write everything out. |
Beta Was this translation helpful? Give feedback.
-
Thanks for your extremely detailed response! Some further comments on my end.
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
I'd love to contribute to the frontend code too. That'd enable non-json response formats that could be more memory efficient. |
Beta Was this translation helpful? Give feedback.
-
@oisact I have a weather app too and I have similar concern with you. So this is some reason I will not using Pirate Weather in my apps: |
Beta Was this translation helpful? Give feedback.
-
Since this has turned into more of a discussion, I've moved the issue over to this side of things. All the points here are critically important, and I want to make sure they get addressed. In the next big version of the API (will be v2.0, targeting launching early winter), I'm planning on open sourcing the code that produces the response. I have to rewrite a lot of it anyway, so this is my chance to do it in a way that will be easier for the community to participate in! I'm going to stick with the permissive license, and it will all be based on Zarr files, so should be reasonably easy for other people to use. As a side benefit, this should speed up the calls- it won't be a dramatic change, but hoping to get things down to ~600ms. |
Beta Was this translation helpful? Give feedback.
-
First of all thanks for providing an alternative weather API. Unfortunately, after spending $25 with the intention of evaluating this in my apps for a month, I had to switch away to another service (using WeatherKit) after just a few days. The following are all reasons why I had to discontinue using your API, and I hope this may illustrate items that you might want to address in case other developers have needs similar to mine.
Inaccurate high temperatures in the evening (I believe after 7 PM). The forecasts show a seemingly random (IE not the high for the current day or the next day) high temperature during the evening time for the current (zero index) day. This temperature appears to represent the highest temperature for the rest of the daily forecast range, as it is greater than the high for the current or next day. For example, today's high was only 62. Tomorrow's high is 68, the next day is 69. However the first entry in the daily->data array shows a high of 72.57. This appears to be the high temperature 3 days from now, and is grossly incorrect for the current day forecast.
API latency. The API response time I see, minimum, is over 1000 ms. This is far too slow for an API of this kind, and is probably the result of the on-demand AWS lamdba functions having to process into a massive dataset for each request. Sure this is convenient on your end, for scalability, ease of implementation and only paying AWS for the minimum processing you need, but it is at a performance cost for all end users. If you really want to provide nationwide coverage, then pre-generating static json in 3km grids would result in vastly faster response times, and if your service grows in use, will actually require less processing on average as well. Regardless, this latency is directly passed down to my app users (although I cache county-wide data in 15 minute intervals to save on API calls, so at least some of the requests are cache hits), and it is far too slow.
Cost. I already pay $100 a year for the Apple Developer Program, so basically I get 500k REST weather requests a month free. However even if I didn't, it would still only cost $8.33 a month for 500k requests purely to access weather from Apple. Pirate Weather costs $25 a month for 300k requests, which is 3 times as much for less requests. Further it isn't clear what happens when I exceed 300k requests, or how one goes about paying for a plan to get more than 300k requests per month.
There is no way (that I could find) to track my API request usage. Sure, I can try and count this on my end, but whatever the service itself is counting is what really matters, as that is the limit that, when exceeded, could immediately cause my app's weather to cease functioning for the remainder of the billing period.
The Minutely, Hourly and Daily "summary" is no longer a summary as it was in DarkSky, but is just a precipitation condition code, like "Clear" or "Rain". The "Clear" value is apparently used to represent any condition that is not precipitating. Thus overcast, foggy, cloudy, etc all has a summary of "Clear" which is highly inaccurate. Regardless, the summary fields were, for my use, the highest value piece of information in the entire forecast dataset (with the possible exception of the low and high temp). This is not generated by your API, so this cannot serve as a drop-in DarkSky replacement for me, which is how the service is advertised.
The code used by the API is not open source, as the true core of the implementation, which is whatever is generating the JSON output, has not been released. I believe this is the code that is in error or deficient as discussed above, and the lack thereof also prevents me from rolling my own internal processing of NWS data to pre-calculate the data I need instead of doing so only on demand. So I am unable to fix, enhance or increase the performance of this service. It just seems to advertise as an open source service when it isn't.
Beta Was this translation helpful? Give feedback.
All reactions