janodev.bsky.social
@janodev.bsky.social
iOS Developer, https://jano.dev
How to dramatically improve compilation time and coalesce updates with Observations (v26).
October 15, 2025 at 9:55 AM
Breaking news, a duck is 0.64 similar to a goose and 0.18 similar to a piano. github.com/janodev/Mini...
GitHub - janodev/MiniLM-Embedding: An example of how to embed in Swift using MiniLM.
An example of how to embed in Swift using MiniLM. Contribute to janodev/MiniLM-Embedding development by creating an account on GitHub.
github.com
October 1, 2025 at 11:26 AM
Couple of curl scripts to let Claude ask o3/gemini when he becomes stuck.

gist.github.com/janodev/4549...
May 31, 2025 at 8:39 PM
Presentation hack:
1. Write research on Google Docs
2. Use Plus AI trial (a GDocs extension) to convert Doc to Google Slides
3. Ask a LLM for a list of Google Image links to vector image styles
4. Choose an image as reference
5. Ask GPT 4o for diagrams in that style
April 9, 2025 at 11:26 AM
will I ever remember them?
April 8, 2025 at 6:01 PM
Package traits SE-0450:

1. Define a trait as an arbitrary token. e.g. "Firebase"

2. Add Firebase as optional dependency when that trait is enabled

3. Conditionally compile
#if Firebase
import Firebase
...
#endif

4. A client of your package can enable "Firebase" to add related code and libraries.
April 8, 2025 at 3:04 PM
Xcode, why you don’t
git ls-remote --tags
then
git clone --depth=1 --branch=tag-name
?
April 7, 2025 at 3:05 PM
Xcode builtin rsync misbehaving leads to ITMS-90048: Your archive contains [._Symbols]
developer.apple.com/forums/threa...

Solution: custom export and remove manually

# check
unzip -l YourApp.ipa| grep -i "._Symbols"

# delete
zip -d YourApp.ipa ._Symbols/

Then upload with Transporter.
April 4, 2025 at 3:47 PM
halp
April 1, 2025 at 3:26 PM
Claude Code can increase test coverage working unattended. I use this Makefile gist.github.com/janodev/0380... for a SPM package. Claude is able to see the report and run isolated tests. It uses xcbeautify -q to minimize token usage. Unattended = I’m watching but often I don’t need to interact.
March 29, 2025 at 3:46 PM
Tell Claude Code to use 'swift build | xcbeautify' to avoid sharing walls of text. LLMs perform best with well-defined tasks. Solve concurrency problems in a blog post then add it to the context. LLMs are a time saver, but they can't one-shot yet, you need to iteratively review their output.
March 26, 2025 at 12:26 PM
I get this a lot with PreferenceKey and see no way around it. It is sensitive to overlapping updates. I rather not use it.
March 25, 2025 at 3:10 PM
did you know? the pop culture phrase “endure and survive” refers to fools telling you that NSLock is technical debt
March 19, 2025 at 12:18 PM
There are ~35 Cursor-like projects. I made another for Xcode. The bar is very low. Used Xcode.sdef to observe open workspace and files. Let the user pin files to send them as context. Use CG to attach to the window. JSON Structured Outputs to exchange information.
March 9, 2025 at 11:49 AM
How to solve some Swift 6 migration errors.
jano.dev/apple/macos/...
More Swift 6 Migration Errors
How to solve some Swift 6 migration errors.
jano.dev
March 9, 2025 at 11:24 AM
A new addition to the Apple Testing framework allows running code before and after the tests.

jano.dev/apple/swift/...
Test Scoping Traits
Test Scoping in the Apple Testing framework.
jano.dev
February 24, 2025 at 8:39 PM
A Minimal Core Data Stack jano.dev/apple/coreda...
December 28, 2024 at 8:03 AM
Breaking code into 10-line functions is about readability as much as searchability. To find a bug in 1000 lines, you'll need to read ~70 lines or 7 functions (log₂(100)). Just a rough example about debugging interactions. For high level understanding no one should have to read implementation.
December 21, 2024 at 11:06 PM
Actor Conformance to Non-Isolated Protocols
jano.dev/apple/concur...
December 17, 2024 at 1:38 AM
Did you know Swift implementation has a _modify/yield property accessor?
jano.dev/apple/2024/1...
December 12, 2024 at 12:17 PM
An overview of synchronization mechanisms in Apple platforms. jano.dev/apple/mach-o...
December 8, 2024 at 9:45 PM
o1 < claude 3.5 < o1-preview < o1 pro

but o1 pro is a multimodal o1-preview, 10% better at 20x the cost
December 7, 2024 at 10:29 PM