Skip to content
Topic

Coding

72 notes.

Android Oct 11, 2026 3 min read

Flutter: the Android keyboard won’t open on a field with an iOS-only TextInputAction

A TextField with TextInputAction.join works on iOS. In a debug build on Android, tapping it gives the field focus and nothing else: no keyboard, no cursor, and nothing in logcat. The release build of the same code is fine. It looks like a broken emulator keyboard and it is one line of Dart.

Android Oct 11, 2026 4 min read

Test fingerprint login in the Android emulator from the command line

The Android emulator's fingerprint sensor is a console command: adb emu finger touch 1. Getting to the point where that command does anything takes a PIN, a trip through the enrollment wizard and a wait for the sensor to start listening. All of it can be scripted, including a screenshot of a prompt that adb screencap returns as a black frame.

Coding Oct 11, 2026 4 min read

Shrink variable webfonts by removing the axes you don’t use

Fonts were more than 90% of the bytes on a post here. Subsetting to Latin had already been done, since that is how Google Fonts serves them. The weight was in the variation data: an optical-size axis the page pins at one value and a weight range it uses a sixth of. Instancing both away cut the fonts by 73%.

iOS Oct 11, 2026 4 min read

Test Face ID in the iOS Simulator from the command line

The Simulator's Features menu has three Face ID items: Enrolled, Matching Face and Non-matching Face. All three are notifications you can post with simctl, so a script can enroll a face, wait for the prompt and answer it. The one thing the simulator will not do is enforce biometric access control on a Keychain item.

PHP Oct 5, 2026 3 min read

__debugInfo() does not hide anything from dd()

The card object in my Laravel package kept its number in a private property, masked it in __debugInfo(), and marked the constructor arguments #[SensitiveParameter]. dd() printed the full card number and CVN anyway, and so did var_export() and an (array) cast. The fix was to stop storing them on the object at all.

WordPress Oct 5, 2026 6 min read

wp_update_post() eats your backslashes

Two WP-CLI scripts rewrote 78 posts on this site. 69 came back exactly as planned. The other 9 lost every literal backslash they had, including the string interpolation in two Swift tutorials, and nothing reported an error. wp_update_post() expects slashed input and unslashes whatever it is given.

Android Sep 22, 2026 4 min read

Flutter: Check Internet Connection with connectivity_plus

To check the internet connection in a Flutter app, use the connectivity_plus package. It tells you whether the phone is on Wi-Fi, mobile data or no network at all, and when that changes. It can't tell you the internet actually works, so your requests still need to handle failure.

iOS Sep 22, 2026 3 min read

SwiftUI: Check Internet Connection with NWPathMonitor

To check the internet connection in a SwiftUI app, use NWPathMonitor from the Network framework. It tells you whether a network path is available, whether it is expensive or in Low Data Mode, and when any of that changes. It can't tell you the internet is actually reachable, so your requests still need to handle failure.

Android Sep 13, 2026 4 min read

Flutter Login and Signup Screen tutorial: iOS + Android + PHP 8 + Biometrics

A Flutter app for iOS and Android with signup, login, logout and Face ID or fingerprint unlock, talking to a PHP 8 API. The session token goes in the Keychain or the Android Keystore, and the forms work with password AutoFill on both platforms.

iOS Sep 13, 2026 4 min read

iOS Login and Signup Screen tutorial: SwiftUI + iOS 26 + PHP 8 + Face ID

Eleven years after the Swift 2 version, here is the login and signup tutorial again: SwiftUI screens, async/await networking, the session token in the Keychain, Face ID unlock, and a PHP 8 API that stores passwords and tokens the way they should be stored.

iOS Sep 13, 2026 2 min read

SwiftUI navigation bars on iOS 26: style the system bar, don’t hide it

Hiding the navigation bar to draw your own has always cost you swipe to go back. On iOS 26 both swipe gestures stop working, and the usual delegate workaround never even gets asked. Here's what the system bar can do instead, and where a custom bar still makes sense.

WordPress Sep 12, 2026 9 min read

wp cache flush doesn’t flush what your site is actually serving

Three times in one week I changed something on this site, verified the change, and watched the old version keep going out. Each time the change was correct. Each time a different cache was holding it, and the command I used to check was testing a layer that wasn't the problem.