Discover
Search across the public apps, tools, writing, vault, newsletter, and books.
Results
126 results
Scope Binder
Local-first iPhone app for comparing contractor quotes by scope, tracking follow-ups, organizing files, and exporting decision packets before signing.
Kitwise
Local-first emergency kit tracker for iPhone with go bag, home kit, and car kit templates, expiration dates, offline reminders, no account, no ads, and no tracking.
Ignis: Fasting Tracker
Intermittent fasting tracker for iPhone with a five-stage ring, Lock Screen Live Activity, streaks, and history.
ReceiptCrate
Local-first iPhone receipt tracker for return windows, warranties, image or PDF proof, reminders, encrypted backup, and one-time Lifetime Pro.
Sortes
iPhone decision utility with Decision Sessions, coin flips, wheel spins, dice rolls, and local history. Free download; Sortes Pro unlocks Decision Sessions, Flip, Wheel, Dice, History, and CSV export by subscription.
Hushlayer
Ambient sound mixer for iPhone with rain, thunder, fan, brown noise, white noise, ocean, forest, fireplace, cafe, and fireworks, plus Pro layering, saved mixes, timers, and one-time Pro.
UnitFlip
iPhone unit converter with live results, 13 included categories, and a one-time $2.99 Pro upgrade for live currency refresh and unlimited favorites.
QRift
Privacy-first QR code scanner and generator for iOS with automatic scanning, multiple code types, and searchable history.
Gloam
Daily micro-journal for iOS with twelve moods, streaks, Focus Shroud writing, and Memory Lane. Free to download.
VaultSnap
Encrypted iPhone photo vault with automatic SHA-256 integrity seals, unchanged-byte verification, JSON receipts, zero vault-data cloud storage, no ads, and no tracking.
SipStreak
No-ads water intake tracker with one-tap logging, streak milestones, widgets, HealthKit, reminders, and a one-time Pro upgrade.
SwipeClean
Gamified iPhone photo cleanup with 90-second rounds, four boss battles, Smart Clean filters, light and dark themes, and a one-time lifetime Pro with no ads, no tracking, and no subscription.
TheChosenVictor
The official home for Victor Solano's iPhone apps, books, articles, and developer resources.
Share-Safe Image
Inspect common photo metadata, remove it, resize the image, and create a fresh shareable copy.
Writing Pattern Checker
Find exact prose patterns worth reviewing without an AI score, a rewrite, or a claim about who wrote it.
Weighted Decision Matrix Calculator
Compare options in a weighted decision matrix and see exactly how each criterion affects the ranking.
Break-Even Calculator
Calculate contribution margin, break-even units and revenue, then compare named price or cost scenarios.
QR Code Generator
Create a clean, standards-compliant QR code for text or a URL and download it as PNG or SVG.
Random Choice Picker and Decision Wheel
Paste a list into a random choice picker, choose fairly with browser cryptography, and remove a winner before the next round.
App Store Submission Pack Checker
Check a listing pack against source-linked App Store Connect rules before you submit it for review.
App Review Rejection Decoder
Turn an App Review rejection message into the guidelines it cites, what each one asks for, and a checklist split into what you can verify and what you have to decide.
JSON Formatter and Validator
Validate, format, sort, minify, copy, and download JSON without sending it to a server.
Access Log Reader
Read your own server access log and see how far its raw visitor count is from the requests that came from a real browser.
I Have 48 Readers, Not 4,958: Counting Real People From a Server Log
Six days of my own access log said 4,958 pageviews from 529 visitors. Verified against asset loads and request cadence, it was 48 from 21 addresses. Here is the full method, the jq, the three ways the easy count lies, and the two bugs I found in my own classifier.
Twelve App Updates Rejected at Once Under Guideline 4.3(a)
Apple rejected every pending version in one batch with the same spam template, named no app and no specific defect, and left all twelve live apps on the store. Here is what I measured before replying once.
My Tests Never Made a Receipt With No Deadline
ReceiptCrate marked a saved receipt as Expired because both deadline fields were empty. The tests stayed green because none of them had ever built that valid case.
I Adapted Nine Workflows From Matt Pocock's Skills Repo
Matt Pocock's repo gave me nine useful workflows. I rewrote them around my own rules, pinned the pack to the commit I reviewed, and added checks for drift.
The First Thing My New Linter Flagged Was My Own Live App
Before publishing screenproof, I ran it on screenshots from apps I had already shipped. One folder came back with 16 findings: eight accepted PNGs with alpha channels, plus eight HTML files I had left beside them.
The npm Package I Was About to Ship Could Not Run Under npx
A clean install of metaproof's packed tarball failed before publication because Node refuses to strip TypeScript types under node_modules. I compiled the package before publishing 0.1.0.
Context Engineering: MECW Protection
Progressive skill-disclosure pattern for keeping agent context focused as capabilities grow.
Fair Value Gap Detection
Python implementation of FVG detection for Smart Money Concepts. Identifies liquidity imbalances in price action.
Daily Drawdown Protection
Circuit breaker pattern for halting trading after daily loss threshold. Resets at midnight UTC.
Stoic Builder Voice Checklist
Pre-publish checklist for eliminating AI slop and injecting authentic voice into content.
TheChosenVictor Design Tokens
The core color palette and typography variables used to build this digital garden.
SwiftUI Spring Card Swiping
Reusable DragGesture card stack with spring physics, rotation, and fly-away animations. Extracted from the SwipeClean iOS app.
Next.js MDX Blog Loader
File-system MDX blog loader with gray-matter frontmatter parsing, reading time estimation, and pinned post sorting.
Tailwind Dark Theme Toggle
CSS custom properties pattern for dark/light theme switching with Tailwind. HSL tokens for seamless mode transitions.
PM2 Ecosystem Deploy Config
Production PM2 process manager config for Next.js on a Hetzner VPS. Auto-restart, log rotation, and memory limits.
Zustand Persist Pattern
Typed Zustand store with optional persistence middleware. Minimal state management for React apps.
Zod Environment Validation
Type-safe environment variable validation with Zod. Separates server and client schemas with graceful CI fallback.
Karpathy: LLM as Operating System
Andrej Karpathy's framework redefining LLMs as CPUs with context windows as RAM. The foundation of Context Engineering.
Anthropic Research
Anthropic's research on AI reliability, the "Reliability Tax", and economic impacts of autonomous agents.
Vercel AI SDK
The standard for building AI-powered applications in Next.js. Streaming, tool calling, and structured outputs.
ICT Trading Concepts
Inner Circle Trader's educational content on Smart Money Concepts, Order Blocks, and Liquidity Sweeps.
Linear Design System
The gold standard for product design. A constant source of inspiration for high-fidelity interfaces.
Ray.so Code Snippets
Beautiful code snippet generator. Essential for high-fidelity technical content on social media.
Geist Font Family
The typeface used across Vercel products. Precision engineered for code and clean UI.
Hetzner Cloud
Affordable, high-performance VPS hosting for developers. Where thechosenvictor.com runs for $6.65/mo.
Caddy Server
Automatic HTTPS reverse proxy with zero-config TLS. Replaced Nginx in the production stack.
PM2 Process Manager
Production Node.js process management with auto-restart, log rotation, and cluster mode.
Apple Human Interface Guidelines
The definitive iOS design reference. Essential reading before building any native Apple app.
Framer Motion
Production animation library for React. Declarative spring physics and layout animations.
Shiki Syntax Highlighter
VS Code-quality syntax highlighting for the web. Powers the code blocks across this site.
VPS Migration Retrospective
I moved from Vercel to a $7 VPS. Here's what went right, what I'd do differently, and why I'm never going back.
SwipeClean Development Journal
Building a gamified photo cleanup app for iOS. The architecture decisions, the gamification math, and the tradeoffs that shaped SwipeClean.
The Responsiveness Audit
The 2-hour process that catches issues your users will never report. A viewport-by-viewport review system for any web project.
The 48-Hour Dopamine Audit
Track every consumption vs. creation moment for 48 hours. Find out where your time actually goes.
The Daily Non-Negotiables Checklist
The minimum viable day. Not a morning routine. The bare minimum that keeps momentum when motivation disappears.
The Comfort Audit
Identify the 5 comfortable decisions you make daily that are quietly killing your progress.
Motion vs. Progress Scorecard
Weekly review template. List what you did. Mark each item Motion or Progress. Calculate your ratio.
The "Nobody Is Coming" Manifesto
The core argument distilled. The rescue myth, the permission fantasy, and what to do about it.
Principles Price Calculator
List your principles. Write what each one has actually cost you. If the answer is nothing, it's a preference.
Nobody Is Coming: Chapter Map & Reading Guide
All 14 chapters with core arguments and reflection prompts. Pairs with the book, works standalone.
The Consumption Ratio Tracker
30-day tracking template. Hours consuming vs. hours creating. The only metric that matters.
Start Anyway Protocol
The anti-planning framework. Decision tree for when you don't feel like it. Because you're never going to feel ready.
The Solo Builder's Direction Filter
3 questions before starting any project. Separates real direction from productive procrastination.
Ship-or-Kill Checklist
Weekly audit for active projects. Is this shipping or is this a hobby? Honest criteria for the decision.
The Builder's Falling Apart Diagnostic
5 signs you're ghosting your own project while looking productive. The burnout nobody talks about.
VPS Self-Hosting Starter Pack
The actual setup for ditching Vercel. Hetzner + Caddy + PM2 + deploy script. Real costs, real config.
The Proving Ground: Victor's Actual Routine
The real split. Morning calisthenics. Afternoon weights. No optimization theater. Just reps.
The Physical Discipline Entry Point
Why the gym is the first domino. Not a workout plan. The argument for why physical discipline unlocks everything else.
30-Day Baseline Protocol
Minimum viable fitness for someone starting from zero. 30 days of proving you can do something you don't feel like doing.
The Sniper Wait Framework
Patience protocol for entries. Rules for sitting through drawdowns. Emotional control checklist for trading.
Daily Risk Circuit Breaker
Max daily loss, walk-away triggers, no-trade conditions. The rules that keep you in the game.
The Anti-AI-Slop Checklist
8 structural patterns that scream 'AI wrote this.' Quick-reference for anyone publishing written content.
The Plaque Test
3 mandatory pre-publish tests. Plaque Test, Niche Lock, Experience Anchor. Works for any content niche.
Voice Extraction Framework
How to build a writing voice system from scratch. The questionnaire, the rules, the process of going from AI-sounding to authentic.
The Solo Builder's Playbook
Lessons, decision frameworks, and checklists from shipping 3 iOS apps solo. The actual tools, the actual process, the actual mistakes.
The Lookup Price Is Not the Customer Price
A cache-busted US lookup returned Free for UnitFlip, QRift, and VaultSnap, and $6.99 for Sortes. The IAP block is a second public number on the free listings. A candidate version in App Store Connect is a third number, and it is not live.
Your Visitor Count Is 103 Times Too Big
A raw visitor count off a server log is not traffic. Six days of mine said 4,958 pageviews from 529 visitors. Verified: 48, from 21 addresses.
The Fix Shipped and the Bug Is Still Live
My one-line fix for a soft 404 is committed, deployed, and in the compiled output. The running site says the bug is still there. Three of the four places I checked were wrong.
305 Tests Failed and None of Them Was a Bug
My test suite went from green to 305 failures without a line of code changing. The cause was one environment variable set in the shell that started it, and the fix belongs in the config, not the shell.
Your First Duplicate-File Count Is Wrong
Hashing every source file across my apps reported two files shared between projects. Both were Xcode build output, sitting in a directory my exclude list did not match.
The Upload Check and the Running App Read Different Files
A commit said the shipped build had no HealthKit usage description. The built Info.plist agreed. The running app disagreed, and the permission sheet rendered the explanation anyway.
Pixel Size Is Not a Locale Check
496 localized App Store finals already measure 1320x2868. Opening six of them showed five leftover English-chrome notes were stale, and one Hindi mood screen still had an extra invented chip.
409 Green Tests Missed Three Persistent-State Defects
Three full simulator suites passed 409 tests. Persistent-state walkthroughs then found a stuck setup screen, a lost Files exporter, and a recovered drive saved as zero minutes.
Search the Store Before You Publish the Name
A public product URL is a name claim. Search the live US App Store for the exact name, in the same job, before you put that name on support, privacy, or terms pages.
The Report Named the Wrong Route
Two routes were reported as returning 500. Thirty-four live requests and ten days of the server's own access log said they had never returned anything but 200, and the log named the route family that actually failed.
launchctl submit Kept the App Alive
Two leftover launchctl submit jobs reopened a local macOS app after every quit. Apple's man page says submit tells launchd to keep the program alive in the event of failure, so a one-shot repair helper can outlive the repair.
One Row Cannot Prove One Sender
A send guard read its status row and wrote to it in two statements, so two simultaneous requests both passed it. Use this to decide when a clean record is evidence.
Do Not Backdate a Missed Publication
When a recurring publication falls behind, record the missed dates, restore today's complete delivery chain, and verify every public and subscriber surface without inventing a streak.
When Is an App Store Release Actually Done?
Approval, App Store Connect distribution, and public storefront availability are three different checks. A release closes only when the intended version clears all three for the storefront being verified.
A Quiet Inbox Is Not a Release Audit
Four App Store feedback collections were empty across twelve apps. A source-to-build comparison still found eleven uploaded builds older than meaningful fixes.
What Zero Clicks Looked Like at Position 74.9
A Search Console view configured for three months showed visible data from July 12 through August 7: zero clicks across 300 impressions. A page filter and four live checks separated low visibility from a broken destination.
The Guard Was Green Because It Could Not Fail
Two apps ship a test whose only job is to fail if the Google ad SDKs come back. Both passed while both lockfiles still pinned the packages. One was reading the right file with markers that could never match it.
The Shell Emptied the File Before It Failed
Four files went to zero bytes this morning and the shell printed only command not found. In zsh a redirect opens its target before the command is resolved, so a command that never runs still empties the file.
The Archive Was 87% of the Backup
I measured the tree before writing the script that copies it. 231G total, and 201G of that was one folder of old video and game archives that never changes. Excluding it took the routine run down to 26,424 MB and under five minutes.
A Newer Xcode Hid the Bug
An open XcodeBuildMCP issue printed the command that reproduces it. On a newer Xcode that command succeeds, because the toolchain started resolving the package the report said it could not resolve. The defect was untouched. A different entry point returned the filed error word for word.
The Lookup Said 1.0.1
A cache-busted App Store lookup returned 1.0.1 for an app whose 1.0.2 was approved and waiting. A known-live control proved the request worked. It did not prove the request pointed at the right app, and the version it returned was a fact, not a verdict.
Who It's For Is Not Where It Goes
I posted a traffic result about an iOS launch kit into a developer subreddit. The top comment said it was marketing, not development, and it outscored the post. Who a product is for does not decide where a post about it belongs.
The Offer Never Got Tested
On July 14 I wrote down the number that would decide whether my $29 kit had failed: 250 qualified product views in two weeks. The window closed on July 28 with 4. So I recorded it as a distribution failure, because the offer never got in front of enough people to pass or fail on its own merits.
I Wrote the Test to Fail. It Passed.
A note I wrote on July 12 said SwiftData's rollback() does not revert attribute edits. Sixteen days later I carried it into Kitwise, wrote a test to prove the same bug was there, and the test passed instead. The note had never been checked against that codebase.
I Fixed It and Never Said So
A maintainer requested three changes on my open-source pull request. I pushed all three the next morning and never replied on the review threads, so it sat for eight days looking stalled. One point-by-point comment cleared it in under seven hours.
I Published the Page and Missed the Email
Issue #034 was live on my site, but its email never went out. I tied subscriber delivery to the same deployment and record each completed issue in Postgres so a retry does not put the same message in the inbox twice.
I Kept the Search Query in the Browser
I added one search page for 95 public entries across six site sections. The catalog comes from existing public registries, and React filters it without putting the query in a URL, storage, analytics, server logs, or a backend.
The Website Was Showing the Wrong App
A Sortes gallery image showed a UnitFlip back indicator. Other app pages carried stale screenshots or claims for features that were not shipped, so I audited all twelve pages against current app truth.
I Finished the Videos. Then I Retired the Workflow.
Two finished YouTube masters passed every automated check but still needed eight human listening verdicts. Four days later I archived the production system instead of keeping it active because the videos were finished.
The Receipt Had No Deadline. My App Marked It Expired.
I created a receipt with no return or warranty deadline. ReceiptCrate marked it Expired and put it in Alerts anyway. The tests were green because none of them had ever made that exact receipt.
KDP Won't Show Me the Error
I tried to publish the same book as a paperback and a Kindle eBook. The paperback is live. The eBook is stuck in Draft behind an error banner that highlights nothing, and the publish request comes back with an empty errors object.
The Spec Page Moved Under Me
Apple's screenshot spec page changed which 6.9-inch resolution it led with between two visits six days apart. The accepted-size list still included all three, which is why I stopped treating one prominent number as the whole spec.
Taking the Ads Back Out
I put AdMob in some of my apps for a little passive revenue. The pennies never covered what the SDK cost me in launch time and a clean privacy label, so I'm pulling it back out one app at a time.
One Word Tripped the Filter
I shipped the same book copy to Amazon's US and UK stores. The US store published it. The UK store flagged one word as violence and blocked the page, and the fix changed how I clear an automated filter now.
Ship Your App Store Metadata Once
I kept changing App Store metadata one field at a time and made the results harder to read. Now I batch the title, subtitle, keywords, screenshots, and preflight checks before I submit.
Launch Day Is Too Late
I finished Product Hunt prep for the kit, checked the real surfaces, and cut the extra outreach. Launch day should be for replies, not panic.
Automate the 95, Drag the Rest
I automated almost a whole publishing workflow today, then hit a wall a browser bot can't cross. The real skill is knowing where to stop and just do the last step by hand.
My To-Do List Was Lying
I sat down to plan the day and half the list was already done. The boring failure nobody warns you about: your records drift from reality.
Shipped, Hidden, Then Fixed
A build log: two apps went live while my own site hid them, the lesson that came out of it, and a new code-only video style for the channel.
The System Goes Live
Introducing TheChosenVictor, the vault, and what to expect from this newsletter.
Consistency Over Intensity
A field manual for ending the restart loop. Set a floor you can keep on bad days, repair a broken promise quickly, and track whether your word still means something to you.
Proof Over Productivity
A field manual for men drowning in productivity advice. Turn input into visible proof through daily standards, a scoreboard, and a thirty-day proof run.
Nobody Is Coming
14 essays about why people stay stuck, how preparation becomes hiding, and what actually happens when you stop waiting.
Your Next Five Moves
A planning system for solo operators who need a short, concrete queue. Choose the next five moves, put them in order, and stop rebuilding the plan every time the calendar opens up.
Ninety Days to Different
A ninety-day identity-rebuild protocol built around daily standards, deliberate practice, and a fixed review window.
Discipline Over Feelings
A sixty-six-day system for replacing motivation with repeatable standards, physical discipline, and a routine that still runs on low-energy days.
Build the Person Who Wins
A field manual for defining the standards, routines, and identity behind consistent results instead of chasing the result by itself.
The Law of Abundance
A mindset and environment guide to abundance, and the earliest book in Victor Solano's current catalog.