Hello friends!

For the last two months I have been spending my free nights learning how to design and code an app from start to finish.  I feel that the app is now nearing a point of completion and I’m ready to get feedback on how others use the app, and most importantly what issues you encounter!

How To Download

To download the beta version of my app, you will need to first install the TestFlight application.  You can download TestFlight here.  Once you have TestFlight installed, click the link I sent you and you should now see ‘Oh Weather’ appear in TestFlight and will be ready for download.

Using and Testing the App

As of today, the app has the following features:

  • Oh Weather uses the DarkSky weather service to pull weather data from a variety of sources for the most up to date weather conditions
  • Uses your current location to automatically show you the weather forecast for your location
  • Search, create, and edit your own list of favorite locations to reference the weather there at any time
  • Based on a given location, the following weather data can be displayed:
    • Current Conditions
      • Temperature and feels like temperature
      • Weather icon
      • Chance of precipitation
      • High and Low Temperature for the day
      • Current wind speed and direction
    • Next 24 Hours
      • Summary of the days weather
      • Weather icon and temperature
      • Chance of precipitation
      • Wind speed and direction
      • Humidity
    • Next 7 Days
      • Summary of the most prominent weather events of the week
      • Weather icon and high/ low temperatures for the day
      • Sunrise and sunset times
      • Wind speed and direction
      • Chance of precipitation, precipitation type, and accumulation
      • Humidity
      • Cloud Cover
      • Visibility

Please Share Issues or Suggestions

The app is still a beta, so you will find some quirks here and there.  However, in order to find and fix them I need your help!  If you encounter any of the issues below, let me know with a text, email, chat, telegram, etc.

  • If something looks weird…
    • Take a screenshot or screen recording if you can and describe what’s wrong.  Is something misaligned, distorted, animating weird, spelled incorrectly, too small, too big, cut off, etc.
  • If you get an error message…
    • Something
    • What was the one word error message that was listed in ALL CAPS?
    • What were you doing just before the error was shown?
    • If you were trying to get a weather forecast, what city was it for?
    • Did you have cell service?  Were you on WiFi?  
    • What time of day did this happen?
    • Did it work when you tried it again?
  • If the app crashed…
    • Well crap, that shouldn’t happen!  Please include as much info as you can as to the circumstances that led that to happen so that I can attempt to recreate it and find out what went wrong.
  • Everything else…
    • Is there something that I can change or add that would make you want to use this app over another one?  Something that you think would just make it look better overall?  Any feedback at all?

Time to take a moment to recap week three in coding my first app.  Unfortunately, I did not make much time for coding this week so this update will be light.  That being said, let’s get started.

What I Learned

  • I need to look for more opportunities to use structs and classes
  • UI/ UX Design is not as easy as I thought (or I’m not as good at it as I thought I would be)

Continue reading

Week two of coding is done.  This past week was brutally frustrating as I tried to work my way through Swift’s Codable type.  After 15 hours of Google searches, Swift Playgrounds, and countless rewrites of the same code; I finally figured out how to take my JSON response and turn it into useable information.

What I Learned

  • Playgrounds is useful for quickly testing blocks of code
  • Adding existing view controllers into a navigation bar is easy
  • Codable is great… as long as you don’t have a lot of nested data
  • URLSessions are an asynchronous process
  • You can return data through a completion handler

Continue reading