Git Product home page Git Product logo

howstheweatherseattle's Introduction

<-- check out my sweet cloud technology <--

also available in weather app format*

* = weather permitting. try another zip code if default weather location isn't providing the clouds you seek.

howstheweatherseattle's People

Contributors

dependabot[bot] avatar sojeri avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

howstheweatherseattle's Issues

add Seattle skyline

downtown from the south

important landmarks + interesting animation reasons for inclusion

  • smith tower -- globe light that turns on at night
  • columbia tower - lights to animate, maybe chance of API to query for current color?
  • great wheel -- interesting lights to animate
  • i5 corridor foreground? -- add traffic during normal rush hours?

haze weather style should be mist

today's weather around 2-3pm local time was considered haze. however, looking outside it was much more like fog than smoke. therefore, the CSS should use the mist style for haze rather than the smoke style.

this should be a small/easy change! :)

move the sun through the sky

depending on proximity to sunrise/sunset, the sun's location should be closer or farther from the horizon.

this could include additional sunrise/sunset styles for the sky & other elements (skyline, etc).

literal stretch goal: add the sodo/stadium skyline when viewport wide

related to #1

if viewport is wide enough, add the stadium.

  1. I believe there is another API which could be used to add traffic when an event is ongoing or nearby.
  2. more lights to animate.

if it's wider, could also add the port:

  • cranes
  • many shipping containers
  • maybe a ship comes and goes?

not sure on level of detail here, but the light rail could be an interesting addition as well.

  • could incorporate the schedule and animate it coming, stopping, & going according to the current time of day's frequency. eg, 3s for 6min freq, 7.5s for 15min.

find an HTTPS moon phase API

farmsense does not support HTTPS API, so some workaround or new API must be found.

workaround idea:

  • stand up an HTTPS middleman on heroku to get around CORS issues >_>
  • unfortunate due to the time spent spinning up the instance @_@

add manual weather adjustment

create a pop-out panel for configuring weather manually.

  • this should make testing various conditions like cloud jumps easier to manage without having to reload the page all the time, AND
  • supporting the configuration aspect should give free support for re-fetching/updating displayed weather without having to reload the page

bonus feature: support URL param for this so can bookmark settings popped-out mode

support URL params to override queries

eg ?zip=98101 could pull weather from a less specific location

  • in that case, use the lat/long returned by the OWM API to power the moon API

as part of this, could support an override for units as well, eg units=metric to display celsius instead

EPIC | progressive web app (PWA) support

add support for PWA

I kinda want to save this like an app on my phone, so some s#$%'s required

basic requirements for MVP

data layer

  • implement service worker & simple retry logic (every 6-8 hours?)
  • update fallback weather logic
  • add manifest file

view layer

  • add last queried weather status
  • implement a sweet, sweet favicon

stretch goals

data layer

  • add cache invalidation / retry logic: query once every 4-6 hours or 30min after sunset / before sunrise, whichever comes first

view layer

  • display current time (local to query location)

figure out versioning story

since 757b801 there has been a version in root package.json. however, it is not being updated on every commit.

investigate versioning and relevant enforcement options. eg, should commits be rejected if changes are made and the version has not updated?

as part of this, it may be necessary to define some sort of road map and release plan. eg, what goals should be met before 1.0.0? (yo probably tests @,,@)

fix cloud-type weather jump

cloud-type weather should have a copy of itself following so that when it completes a "loop" it is seamlessly replaced with itself. however, for certain wind speeds this is not operating properly and there is a visible jump when the animation resets.

investigate the cause of this issue and fix the underlying bug.

#12 relates to cloud styles as well, so these could be fixed together.

fix snow before it snows?

I worked on this project when it was beginning to snow last year. before it snows again, find a better way to animate snow.

update moon phase handling

consider the following partial blob returned from an API call:

{
   "moonPhase":"Waning Gibbous",
   "moonIllumination":0.9913326951713101
}

moonIllumination is very nearly full, while moonPhase is waning gibbous. should this be considered full? while the API is correct this is technically a waning gibbous-- there's a reason that some cultures consider the full moon to last for 3 days. it looks full.

some thresholds to play with:

  • 95% == full

  • 90%

will keep an eye on API responses the next couple days & make a judgment call on this.

another option here would be to:

  • keep the phase handling as is for hinting, and to then
  • divide the total illumination into slices, and
  • update inline styles to adjust height/width of gibbous/crescent moon illumination according to calculations based on the slice value
    • eg, 19/20 units of illumination on a waning gibbous -> insert calculations here -> almost full moon!

more gracefully handle weather API 404s

most common source right now is bad zip/country combos. eg, trying to use both parts of Canadian zip when API prefers only first part.

a good v1 fix for this issue will:

  • gracefully fall back to Seattle weather
  • fall back to hard coded values if that also fails

improve loading behavior

for custom locations, the moon API call doesn't go out until the weather API response has returned. since the weather response handler is the only code which currently handles loading behavior, this means the loading state can end before the whole view is in place.

instead, both response handlers should check that data is finished processing and update loading state accordingly.

Close-to-full moon + light clouds = rainbow circle (mostly red)

Start with 3/4 & full moon, but keep track over the next couple moon cycles. How much illumination is required to form the ring? How much cloud coverage? Does this map to what the APIs are returning?

Consider v1 a mode to expose some of these props to the UI, perhaps vis another URL param. Play also with info or settings gear UX.

add actual forecast

current UI only shows the weather right now.

add support for displaying the weather later today, tomorrow, etc.

as part of this, may need to

  • investigate what currently used APIs support
  • investigate other weather API options
  • creep on hourly forecast options / displays in other apps
  • trial different data sources to find one that works well for seattle
    • bias: just b/c it's good here doesn't mean it'll be good for other locs
    • risk: what if the one that's best for here doesn't support int'l locs? :(

investigate performance

with things like every raindrop separately animated, it's highly likely that this is not a very performant app. calculate some baseline stats and compare with positioning drops on a layer that moves instead. dive into the heap to find out what else could be improved.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.