Posts

Showing posts from September, 2025

No Nonsense - How do I make posts

 Full Transparency I am currently employed by Amazon as a software engineer, every day I have ~20-35 minute drive to get to and from work each way. These drives bore me, to pass the time I have downloaded an app which I talk to while on the road. I then take the transcribed text and pass it to claude, who writes the blog content for me.  This post and the introduction post are the only two posts I will be writing with my own hands on this blog. That's not to say the words are not my own, I am careful when prompting claude with context for the writing, I specify that it is not allowed to make up any information, and to ask questions if anything isn't clear. I (briefly) review each post before making it, and will make light edits to each post before it is published. This blog is an experiment for me, I am testing one of the many use cases that LLMs support and I get to utilize my time driving to discuss topics I find interesting. This idea was born from wanting to post on Linked...

Understanding Recursion: Essential Programming Concepts

Foundational Concepts Function Fundamentals Before examining recursion, it's essential to understand functions as discrete units of executable code. A function encapsulates specific logic that can be invoked to perform defined operations and return results to the calling context. Functions provide modularity, reusability, and abstraction in software design. Recursive Function Definition Recursion occurs when a function calls itself during its execution. This self-referential behavior creates a cycle where the same code logic is applied repeatedly with modified parameters, enabling elegant solutions to problems that exhibit self-similar structure. Critical Implementation Requirements Base Case Necessity The most critical aspect of recursive implementation is establishing a proper base case—a condition that terminates the recursive calling sequence. Without a base case, the function will call itself indefinitely, creating an infinite loop that eventually exhausts availa...

The Wheel Strategy: Risk Management in Options Trading

Strategy Overview The wheel strategy represents a systematic approach to options trading that combines cash-secured puts and covered calls in a cyclical pattern. This strategy aims to generate consistent income through premium collection while managing the inherent risks of options assignment through structured position management. Mechanical Framework Initial Position: Cash-Secured Put The strategy begins with selling a cash-secured put option on a target equity. For example, with a stock trading at $200, an investor might sell a put option with a $180 strike price expiring in one month. Capital Requirements : The position requires sufficient cash reserves to purchase 100 shares at the strike price ($18,000 in this example), ensuring the ability to fulfill assignment obligations. Outcome Scenarios : Stock Above Strike at Expiration : The put expires worthless, and the investor retains the premium collected Stock Below Strike at Expiration : Assignment occurs, requiring ...

Strategic User Experience Design for iOS gaming

Problem Statement As mobile game development progresses beyond core mechanics implementation, the challenge shifts to designing scalable user experience architectures that support diverse gameplay modes while maintaining engagement through systematic progression systems. This analysis examines the strategic design decisions for a physics-based puzzle game's homepage and user interface architecture. Gameplay Architecture Framework The application implements a three-tier gameplay architecture designed to accommodate different user engagement patterns and skill levels: Regular Level Progression The primary gameplay mode consists of developer-created levels that form the core progression experience. These levels integrate with the upgrade system, allowing players to leverage enhanced object capabilities as they advance through increasingly complex challenges. Challenge Mode Implementation Challenge levels represent a parallel progression track specifically designed to eli...

Building a Production Options Trading System

Problem Statement Over the past five years, I developed a comprehensive options trading system that addresses the complex challenges of real-time market data collection, strategy backtesting, and automated trade execution. The system needed to handle high-frequency data ingestion from multiple providers while maintaining the reliability and precision required for financial operations. Data Architecture and Collection Strategy Multi-Provider Data Integration The system implements a diversified data collection strategy using three primary providers: Charles Schwab API : Serves as the primary data source for high-volume collection, leveraging account-based access to minimize operational costs while providing comprehensive market coverage. ORATS : Premium data provider offering superior data quality and specialized options analytics, justified by the enhanced accuracy requirements for strategy validation. CBOE : Secondary provider maintained for redundancy, though cost consi...

Architecting Extensible Game Systems: Lessons from AI-Assisted iOS Development

Problem Statement During the development of a physics-based puzzle game for iOS, I encountered a critical scalability challenge that many game developers face: how to efficiently manage and extend game object systems without creating maintenance overhead. What began as a straightforward implementation quickly revealed the importance of architectural foresight in game development. Technical Architecture Overview The game is built using SwiftUI for the user interface layer and SpriteKit for the core game mechanics, leveraging iOS's native physics engine for realistic ball movement and collision detection. The core gameplay involves players placing track objects to guide balls through levels, collecting coins, and reaching targets while managing limited object placement constraints. Game Mechanics Framework The system distinguishes between two primary object categories: Fixed Objects : Level-defining elements including environmental hazards (spike traps, spinning saws) and...

Options Trading Fundamentals - A Primer for Beginning Traders

 Core Concepts and Contract Structure Options contracts represent leveraged positions on 100 shares of underlying stock, enabling significant exposure with reduced capital requirements compared to direct equity ownership. Option Chain Analysis and Pricing Option chains display available contracts through platforms like Thinkorswim, with strike prices centered around current stock value and calls/puts positioned on opposite sides. For Apple trading at $200, the option chain centers around this "at-the-money" strike. In-the-money calls include strikes below $200 (e.g., $199), while out-of-the-money calls include strikes above $200 (e.g., $201). Put options follow inverse logic. Contract Pricing and Expiration Mechanics Option pricing displays as individual contract cost, with actual investment calculated at 100x the displayed price. A $2 option costs $200 for one contract representing 100 shares. Example: Call Option Purchase Purchasing a one-week $200 strike call for $2 ($200 ...

Pixelmator Pro - My Asset Creation Workflow

 Problem Statement and Tool Selection During iOS application development, reliable asset generation became a critical requirement. Initial attempts using Canva proved inadequate due to limited export functionality and color editing constraints that didn't align with game development requirements. After evaluating software editing alternatives, Pixelmator Pro emerged as the optimal solution at $50 for a one-time purchase, providing comprehensive functionality for game asset creation. Asset Creation Workflow The development process begins with requirement identification, typically driven by game mechanics requiring specific assets such as springs or interactive objects. The preferred approach prioritizes open-source materials, as creating original artwork presents significant technical challenges. When open-source assets are unavailable, I source inspiration from existing games and online references, using them as foundations for custom implementations. Core Tool Functionality Select...

When AI Goes Wrong - A Weekend Lost to A Bad Assumption

Edit I have since made a follow up post which changes this solution yet again. The dynamic resizing was a flawed approach, to see the correct solution check out this post: https://jeremypjohnson.blogspot.com/2025/12/solving-aspect-ratio-problems-for-good.html Problem Context and Initial Architecture This case study examines a critical architectural failure, ineffective LLM consultation, and the resulting implementation overhead that consumed an entire weekend of development time. The application supports user-placed objects within a physics-based game environment. To ensure consistent level presentation across devices with varying aspect ratios and pixel densities, I implemented a "game units" coordinate system: 100 units wide by 60 units tall. This abstraction layer was designed to maintain visual consistency between iPhone and iPad deployments, where pixel-based positioning would produce inconsistent layouts due to different screen dimensions and pixel densities. Issue Disc...

Mastering Claude for iOS Development

LLM Capabilities and Limitations Claude 4 demonstrates exceptional code generation velocity and can achieve working implementations faster than traditional development approaches. However, the model exhibits consistent error patterns and requires continuous oversight to prevent architectural drift and implementation mistakes. Strategic Implementation Framework Context Injection Through Configuration The `.clinerules` file serves as a foundational configuration for the Cline VS Code extension, establishing coding standards and workflow requirements. The critical directive requires Claude to review README documentation before initiating any development work. The documentation architecture consists of three core files: `README.md`, `ARCHITECTURE.md`, and `UI_SYSTEM.md`. These files are maintained by Claude itself, creating a self-documenting system that provides comprehensive context injection at the start of each development session. This approach ensures high-level system understanding ...

Getting Started in the iOS Ecosystem

Foundation Building Through Structured Learning Entering the iOS development ecosystem without prior experience in Xcode, Swift, or mobile development frameworks required a systematic approach to knowledge acquisition. I selected a comprehensive 60-hour Udemy course with the highest user ratings to establish foundational understanding of Swift programming concepts and iOS development patterns. Learning Strategy and Time Investment I completed approximately 25-30 hours of the curriculum, focusing on core concepts rather than exhaustive coverage. This approach provided sufficient exposure to Swift syntax, iOS development paradigms, and ecosystem architecture to enable effective collaboration with AI-assisted development tools. The structured learning approach proved valuable for understanding how components integrate within the iOS framework, even though specific implementation techniques would later be superseded by programmatic approaches. Practical Application vs. Academic Learning Th...

Why I'm Building an iOS Game

Problem Statement The mobile gaming landscape presents significant user experience challenges that impact long-term engagement. My experience with Pun Ball, a progression-based game featuring character advancement and equipment systems, highlighted these issues when the developers discontinued support for core engagement features, effectively abandoning their user base. Market Analysis and User Experience Gaps During my evaluation of alternative mobile games, I identified a systemic problem with current monetization strategies. The prevalent advertising model forces interruptions at every user interaction, creating a fragmented experience that prioritizes ad revenue over gameplay quality. Users cannot engage with the core mechanics without constant disruption. This contrasts sharply with reward-based advertising models, where users opt into ad consumption in exchange for in-game benefits. This approach respects user agency and creates a more sustainable engagement pattern. Technical Ap...

What's this blog about - an introduction

 Software Engineering I started coding my second year of college and was immediately obsessed. I changed my major and fully immersed myself. This blog will contain information about my career as it progressed, what I am currently working on, what I find interesting, and honestly anything tech related. I want to document my findings, what works, and maybe one day help an aspiring software engineer with their career.  I have long been interested in teaching, while the salary possibilities ultimately drove me towards a career in tech I have never lost the interest in helping other people learn. I was a paid tutor for students in Math and CS from high school (around 2010, I am not old!) all the way until ~2020 when covid happened. One hope I have for this blog is to capture information someone finds interesting, and help them learn new things! At the time of writing I am coming up on 10 years of professional experience, a BS in math/CS and a MS in Cybersecurity. There will be no s...