There’s no doubt that coding agents can make an individual developer more productive, at least in the initial stage of actually creating the code. However, I’ve got bad news for all the software development organizations out there. AI isn’t going to make you more productive. To do that, you need to improve your process. Why is that? Let me explain. I’m a proponent of the #NoEstimates movement. One…
On of the first programs I ever ran on a computer was a text adventure game, also known as Interactive Fiction. I think the first one I played was Adventureland by Scott Adams , which was based on the first ever text adventure called Adventure by Crowther and Woods. Adventureland was the first text adventure available for personal computers. Not long after that I discovered Zork I , the first game…
Since February of 2026, I’ve been publishing a series of videos on implementing Swish, a Clojure-like Lisp in Swift using Claude Code. You can find it here . Swish Logo I used Common Lisp for a solid year in college, and really enjoyed it. I always wanted to use it professionally, but never really had the chance.
Featured in Clojure Deref on December 30th, 2025 In my previous article , I showed how to embed a S7 Scheme interpreter in an iOS app. This time, I will show you how to embed a ClojureScript interpreter, or at least a dialect of it. Clojure itself, runs on the JVM, and there’s not really a way to embed the JVM in an iOS app. Maybe once swift-java gets rolling. There is GraalVM , which lets you…
I am a fan of Lisp . I was first attracted to it because it was the original language of artificial intelligence because of its ability to manipulate symbols and its own code. I spent a whole year using Lisp in a series of courses on artificial intelligence in college. I became quite adept at using it and quite enjoyed using it as well. My Obsession Lately, I’ve become kind of obsessed with being…
This is part 6 of my blog series on the history of my app Numerology. See Part 5 here . When we left off, Numerology was chugging along, slowly making less and less each month. First $300, then $200, sometimes as low as $100. Sometimes it would spurt back up to $300. This continued until fairly recently. In 2024, I noticed a competitor that always showed up first in the App Store search results…
This is part 5 of my blog series on the history of my app Numerology. See Part 4 here . I was probably the first numerology app on the App Store. If you searched for numerology, my app would be first in the results. At some point this was no longer true. A competitor came out and my sales started to go down. Today, in 2025, there are possibly over a 100 numerology apps on the store.
This is part 4 of my blog series on the history of my app Numerology. See Part 3 here . The First App Store Version In 2008, Apple announced the App Store and I applied for an Apple Developer membership ($99/year), so I could sell apps on the App Store. Everyone else did the same and Apple was swamped. Despite applying as soon as possible, I didn’t get approved for about 6 months.
This is part 3 of my blog series on the history of my app Numerology. See Part 2 here . The Birth of Cocoa In 2001, Apple released the first version of Mac OS X 10.0, the first desktop version of their new OS based on NEXTStep. All the great APIs from NeXTStep (hence the NS prefixes to all the class names and such) together were called Cocoa. Now I finally had my chance to use the wonderful…
This is part 2 of my blog series on the history of my app Numerology. See Part 1 here . The First Version It was the very early 90’s. Steve Jobs was at NeXT. I had some model of Macintosh II running on a 680x0 processor. I also had a compiler for C with object-oriented extensions (basically a subset of C++), called THINK C , with a class library called TCL, or the Think Class Library. For more…
Problem Are you self-employed? Are you unemployed? Do you have to purchase your own health insurance? Are you generally healthy, and rarely need a doctor? Are you into alternative health care, which health insurance never covers anyway? Do you find “Affordable” health care, unaffordable like you see on healthcare.gov? Do you find the whole process of finding the right plan and jumping through all…
Introduction My app, Numerology , has been in the Apple app store for over 17 years. During that time, it and its variations (lite version, Mac version) have been downloaded over 188,000 times, and made almost $150,000 in profit. Numerology Icon It’s ran on just about every Apple iPhone, iPad, and Mac. Before the App Store, it even ran on classic macOS machines.
In my last job, I was on a platform team. One of the responsibilities of a platform team is to support all the other software development teams in an organization by writing libraries and tools that can be used by the other teams. One of the libraries the platform team provided was a library that managed feature flags for the iOS app that our company produced. The primary function of the library…
Testing has grown to be a very important part of software development. When I first started my career, I didn’t hear about writing tests until a few years in. Then we started writing tests for all our libraries. When I first got into Cocoa development, testing was not a part of the culture. That slowly changed, and now it is an important part of development on Apple platforms. In many ways we are…
On June 6th, I flew out to Pittsburgh to see the Pirates play the Dodgers for the final stop in my lifetime goal to see a home game for every MLB team. What’s interesting is that the very first game I ever saw was the Dodgers vs. the Pirates in Los Angeles in 1976. So a fitting end. I didn’t plan it the way, it just happened. It took 48 years of being in the right city at the right time (due to…
In comments to my last article on The Composable Architecture readers have asked about examples of how I think an app should be written. In the article, I did mention my previous posts, which have examples for Clean Swift and MVVM, but those were written for UIKit. SwiftUI didn’t exist at the time. So, this article will talk about what I think is a great example of architecture for a SwiftUI app.…
Introduction I recently finished a 3 year stint with a company that uses the Composable Architecture ( TCA ) from PointFree . I wanted to write about my experiences with TCA and some of the problems I see with it. I think Brandon Williams and Stephen Cellis, the creators of TCA, are absolutely brilliant, and what they have managed to pull off with the creation of TCA is amazing. However, It’s just…
Busch Stadium I finally went to another baseball game in my goal to see every MLB team at their home stadium. This time I went to St. Louis to see the Cardinals. I call this my penultimate stadium because just Pittsburgh is left after this one. More on that later. Here’s the box score: Box Score
If you’ve visited this site in the past, you’ve probably noticed a change. I recently changed my blogging platform from WordPress to Hugo . Hugo is static site generator. I also changed my theme. Why? I was never really satisfied with the performance of my WordPress site. Combine that with the fact that my site kept going down every month, I decided that it was time to do something and be more in…
Believe or not, I just got around to watching the 2 Steve Jobs movies that came out a few years ago: Steve Jobs , starring Michael Fassbender, and Jobs , starring Ashton Kutcher I’ve held off watching them because I knew there would be a lot of inaccuracies. I grew up with Steve Jobs. I followed him. I didn’t want to see him distorted the way Hollywood does.
With SwiftUI, everything has changed. As Brent Simmons said, it’s the end of the NeXT era and the beginning of the Swift era. With the coming of SwiftUI, most of our app architectures are no longer valid (or at least parts of them). They need to be adjusted. MVC is certainly out. In fact, even controllers seem to be out. From Apple’s content, it seems all we have is models and views, and that’s…
I recently found two more examples of Clean Architecture. The first one is called CosyHome and is an example iOS application for a home heating system developed using Clean Architecture and developed with Acceptance Test Driven Development (ATDD) using Fitnesse . Fitnesse is something I’d like to dive more into and could be a future post. Let me know if you’re interested. You can find…
Today, I’d like to take an example iOS app written with an MVC architecture and show you what the example would be with a Clean Swift architecture. The example I’ve chosen to use is the Quiz app from chapter 1 of the 3rd edition of iOS Programming: The Big Nerd Ranch Guide . The Quiz is a simple app that is like flash cards. It looks like this:
In the last post , I talked about various architectures used as alternatives to MVC, in a attempt to solve MVCs problems, such as Massive View Controller. In this post, I would like to introduce you to another architecture, which seems to me to be the best starting point for your app’s architecture: the Clean Architecture. I think I first ran into the Clean Architecture in one of Uncle Bob’s…
In the last post , I talked about MVC, its problems, and how it could be done right. Various architectures have emerged to try to address the deficiencies of MVC. Before I talk about the Clean architecture, I’d like to talk about some of them. Alternative Architectures to MVC Up front, I don’t have a lot of experience with these, but I have studied them and I believe they are a step in the…
Model View Controller or MVC is the application architecture used by default for applications on all Apple platforms. Most of the tools, frameworks, and docs from Apple all talk about it and support it. In MVC, objects are assigned 1 of 3 roles: Model - objects that encapsulate and manage the data the application works with (this includes persistence). The data typically represents things in the…
Someone on the reddit iOS Programming group asked “What are the mistakes generally done by iOS developers while coding in Swift?” A lot of comments were about using force unwrapping on optionals. Comments such as: Force unwrapping everything Using pyramids of if-let as opposed to guard statements var firstName: String! ugh Overuse of force unwrapped optionals. I cringe when I see that especially…
A thread in the AskPrograming forum on reddit started with this question and I thought I would share my thoughts on planning and up-front design. Basically, the originator of the thread is expressing his dislike of planning before coding, but thinks it’s a good idea because they’ve either been told that or seen others do it. They also expresses dislike for planning tools and wonders if there’s a…
In part 3 , I talked about why putting the MOC in the app delegate makes any code that uses the MOC will be dependent on the app delegate and why that’s not a good thing. In part 2 , I talked about why putting the MOC in the app delegate is a violation of the Single Responsibility Principle. In part 1 , I talked about why putting the MOC in your app delegate makes you dependent on Core Data for…
In part 2 , I talked about why putting the MOC in the app delegate is a violation of the Single Responsibility Principle. In part 1 , I talked about why putting the MOC in your app delegate makes you dependent on Core Data for your application’s persistence. Today I like to talk about the 3rd reason I gave in part 1, which is: Any code you write that uses myManagedObjectContext will be dependent…
In my previous post , I gave some reasons why putting the Core Data MOC in your app delegate was a bad idea. Those reasons were: The app delegate is managing the Core Data stack. Classes should only have one responsibility. The app delegate is already responsible for managing application lifecycle. It shouldn’t be managing the Core Data stack as well. You are completely dependent on Core Data and…
In a previous post , I wrote about controlling my OWI robot arm with Elixir. Well, I decided to port that to Swift! In that post , there’s a link to some code that does it in Objective-C with IOKit. I first tried to just do a straight port and use IOKit in Swift. That didn’t work to well. The IOKit API is an old Core Foundation library and even has some old COM style APIs. There’s some complex…
Lots of companies have constant problems testing their iOS apps. Here are some ways to fix or ease them. 1. Don’t Make Developers Run or Write UI Tests UI tests are black box tests and test the app from the perspective of the user. Your developers are the worst choice to test the app from this viewpoint and you need a fresh set of eyes for those tests. The QA engineer’s job is to test the app from…
I saw this question on the iOSProgramming topic in reddit: I’ve seen a number of different ways to access the NSManagedObjectContext when working with Core Data, but I was wondering if there are any downsides to the way I’ve been doing it. Basically, I stick a computed variable in the AppDelegate, and grab it when I need it… Please let me know if you see any flaws… If…
My robot hobby is picking up steam. After going through the Python examples that came with the GoPiGo, I got inspired by some embedded Erlang videos on YouTube and decided to see if I could control the GoPiGo with Elixir . After watching Elixir Sips, I learned of a project called Elixir/Ale , an Elixir library for embedded programming. With Elixir/Ale, you can talk to the GPIO ports on the…
I’ve been getting into robots lately. For a long time I was searching for the perfect robot kit to use with my Arduino. Then I decided I’d rather use my Raspberry Pi to control my robots so I could use better programming languages like Clojure, Elixir, Scala, Ruby, etc. So I was looking around for the perfect Raspberry Pi robot kit. For Christmas, my parents gave me the OWI Robotic Arm Edge . For…
The Problem Last week, I had to implement sticky footers in a table view. Sticky footers are where the footer comes at the end of all the table contents, but if the contents are such that the scrollable content height of the table view is less than the height of the view, the footer will still appear at the bottom of the view. A non-sticky footer
You’ve probably noticed that my blog has changed again. I’ve moved back to Wordpress from Octopress. I could never find a plugin for Octopress that did image captions right. I spent way too much time on it and just decided to use something that just worked. I looked at a lot of static blogging engines and they all had their issues. With Wordpress, I have to use the web based editor,…
Yoshiko & I My name is Rod Schmidt. I’m a software developer from Sandy, Utah and the founder of infiniteNIL Software . I am also the founder of CocoaHeads SLC , the Salt Lake City chapter of the international CocoaHeads organization. I was the organizer for over a decade, but have passed on those duties. My journey into programming started when my Dad brought home an Apple computer, an…
A while back I wrote a blog post and entered it in a contest for App: The Human Story . I came in second, and for that I was awarded a custom app token from Matic. It finally came last week and here it is: My app token Now, I finally have a sign for my office.
There is a Kickstarter project that was started recently for a film titled App: The Human Story . It “is the story of the cultural phenomenon that touches all our lives.” It is about the people who make apps. Many of them are people I follow on blogs, and listen to on podcasts, and look up to. I simply had to back the project, and I did. The producers of the film, on their blog, have…
If you haven’t noticed, my weblog has a new design and new content. I have switched from WordPress to Octopress and have used a new theme. So far, I like it. It’s nice to be able to use Markdown instead of some slow web tool to write my posts. My old blog was mostly political commentary and I’ve decided to remove that. Some of my most popular posts were the posts about my…
Today is officially the last day of my sabbatical. Friday was my birthday and Monday is the day to begin anew. I had hoped that my sabbatical would bring spectacular changes to my world, but it did not. However I still think it was a good thing. It gave me a lot of time to reflect on what I want to do with my life and it helped me come to peace with how things are. I believe I’ve grown…
Wednesday, August 14th, 2002 Wednesday morning I got back in the Jeep and started my trip home. My plan was to stay the night in Lubbock, then Albuquerque for a day with my folks and then back home. I got to Lubbock in the afternoon, but Patricia and Robert weren’t there. Instead, I was greeted by their 16 year old daughter, Christine. On my previous visit, Christine had been in Vietnam,…
Sunday, August 11th, 2002 Sunday morning, I decided to go downtown and check out the JFK museum. John F. Kennedy was assasinated in Dallas on November 3rd, 1963. I wasn’t alive then, but I can imagine and I believe that it was a day that affected America even more than September 11th. Here was a president that many people admired and looked up to. Shortly after he was assasinated the decade…
Wednesday, August 13th, 2002 I met my friend Marc at his house and we headed off to the game. This game is kind of a milestone in my quest to visit every major league ball park. It will be my 20th team. Just ten more to go (barring expansion or contraction). The Ballpark at Arlington
August 8th - August 14th, 2002 Thurday morning I drove up to Dallas. It took about 4 hours and I checked into another extended stay motel. Originally, I had planned to stay in Dallas for a week, just like in Austin, but my Austin experience changed my plans. I was going to leave on the 14th, after the baseball game. Again, the idea was the same. To just be there and experience Dallas. However,…
August 4th - August 8th, 2002 I spent Sunday through Thursday morning in Austin. Austin was the main reason I came to Texas. I wanted to get a feel for it and see if I might want to live here. Austin has a lot of high technology companies and has a lot of culture and art. Basically a lot of creative people. Fortune has ranked it in the top 10 for the best cities for singles.
Monday, August 5th, 2002 Today was my first full day in Austin. I decided to take a drive down to San Antonio, which was just about an hour and half south. I wanted to see the Alamo, and my friend Laury had told me about the cool river walk there. So off I went. The Alamo For those of you who are not familiar with the Alamo (miss a little school, did we?), here’s the deal. The Alamo was a…
Saturday, August 3rd From Albuquerque, I decided to go half way to Austin, and stay the night with a recent friend of the family and her family. I had just met her when I had been up to Montana this summer and she had offered to let me stay with her and her family when I went to Texas. In the directions she gave me to get to her house she mentioned that there was a steel house that I…