Logan Melton

iOS Developer
Picture of Logan

App Development

Florida Man

Swift - UIKit - WebKit

Scope:

Create an app that shows "Florida Man" articles for the current date in previous years.

Features:
  • Ability To Share Articles
  • Search by Date
Process:

This project was pretty cut and dry. Once the API was in place, the build was pretty intuitive.
Custom Table View Cells were used rather than default configurations. Unfortunately, Apple's API for UIDatePicker does not allow for only Month and Date selections. Can be futher iterated upon and provide a cleaner UX.

Challenges:

Original intent was to use a standard news API with a default parameter "Florida Man". Unfortunately, was not able to find an API that met the budgetary restraints of the project.
Eventually, we found a website and article by University of Princeton researcher DUDE'S NAME, that scraped Reddit posts featuring news articles about "Florida Man".

Screenshot of Florida Man Launch Screen Screenshot of table listing Florida Man news articles for March 15 Screenshot of date picker to select a date to return Flrodia Man news articles

Staged Cooking

Swift - UIKit

Scope:

Design and develop an app to search for receipes, then parse the instructions and ingredients into a "Step-By-Step" format.

Features:
  • Save Search History
  • Save Viewed History
  • Save Favorites
  • Save For Later
Process:
  • Phase 1
    • Develop algorithm to effectively sort and organize ingredients and instructions
    • Find API that provides the required data

  • Phase 2
    • Build custom Table View Cells to ensure correct layout
    • Reduce heirachtical complexity into a flattened response
Challenges:

The first API used only retured the recipe and ingredients, but no instructions.
The API in current use makes liberal use of Optionals and Nested JSON properties. This slowed development down significantly.
With every object property being Optional, checks are spread through out, including a dedicated object model that only contained a static function to parse the network call results into a [String: String] Dictionary. This had the added benefit of not having to convert data types into Unwrapped Strings, which again, would require unwrapping of Optionals.
As for the Nested JSON properties, the first approach involved the strict heirachy that is an exact match for the network results. This was followed by CodingKey Pattern, where all properties, including nested properties were defined withing the original model, and immediately followed with an Enumuration that conforms to the CodingKey protocol.
However, that was not ideal either. Once the models were restructured again into a strict heirachy, but with liberal use of generics, then we were able to proceed.

Studio Ghibli Reference

Swift - UIKit

Scope:

Provide a resource to view details on all Studio Ghibli films.

Features:
  • View All Ghibli Films
  • Option To Sort By Title
  • Option To Sort By Release Date
Process:

Challenges:

The original networking methods were extremely limited. These were converted to using Generics for response and JSON decoding.
Additionally, providing each view with full networking call and parsing was unweildy. These were extracted into an external layer to provide portability and has since become my default networking scheme.

Screenshot showing Studio Ghibli Logo Screenshot showing a table list of Studio Ghibli films Screenshot showing details of Castle in the Sky

Swipe Snake

Swift - SpriteKit - SceneKit

Scope:

Build a simple, gesture based Snake Game based on the classic Nokia 3310 game.

Features:
  • Change Direction Based On Swipe Directions
  • Game Board Not A Defined Grid
Process:
  • Phase 1
    • Generate game board & food at random location within game board area
    • Generate snake at a random position with an initial direction and velocity towards the center of the game board

  • Phase 2
    • When snake eats the food, that food instance is removed and new instance is placed at another random location on the game board
    • Create a new snake segment to append onto the "end" of the existing snake. "End" is defined as the opposite side of current direction to the last segement

Challenges:

The primary challenge of this project was largely the limitations of SceneKit and SpriteKit.
The interactions between a physics elements in complex organizisms, as I have found, is not ideal within the frameworks.
A number of approaches were applied to resolve the issues of the snake itself, including an indepth dive into SKPhysicsJoints & SKPhysicsBodies.

Work History

Work

  • Independent iOS Developer
    • See Projects Above

  • Integrated Access Corp.
    • Beverage & Pharma Sales
    • Fully Remote

  • Freelance Front-End Web Development
    • Convert Sketch & Zepplin Files into Functional Atomic Elements for use in PHP Assembly
    • Fully Remote

  • Damar Worldwide
    • Sales Manager

Skills

  • App Development
    • Swift
    • UIKit - Foundation
    • SpriteKit / SceneKit
    • MusicKit

  • Web Development
    • HTML, CSS, JS (Vanilla Preferred, but none really)
    • Atomic Design

  • General Tech
    • Rest API
    • Agile Methodology

  • General Skills
    • Useless Trivia
    • Cooking

  • Helping You Kill Time

Personal Info

Background

To distill my greatest motivator into a single word: "boredom." More accurately state it, "avoiding boredom."
Maybe "Adversion to Stagnation" would be a better way of putting it.
I take great pleasure in being challenged. Be it mentally, politically, spiritually or any aspect of what I feel defines me. While Hegal's view of Thesis conflicting with Antithesis to produce a Synthesis and resulting in a new dominant Thesis seems to have vanished in the realm of policical discourse, I still hold that model to be true when discussing personal growth.

General Interests

  • History & Development of Monotheistic Traditions in the Western Hemisphere
  • History of Rome: From Romulus - Justinian I
  • History & Development of Western Music
  • Chili, Fried Chicken, Milanesa y Jamon Torta
  • Mutli-instrumentalst: Guitar, Bass, Banjo, Mandolin