Khan Winter @khanwinter.com · 07/09/2026There might not be anything better than a hammock in a Minneapolis park on a warm sunny day 1151
Khan Winter @khanwinter.com · 05/09/2026It’s been 8 years since I got this Fjäll Raven backpack, in high school. Today was finally time to replace it 040
Khan Winter @khanwinter.com · 02/09/2026@stream.place why are there duplicates of almost every UI element on the stream? The bottom ones appear to not be interactable 100
Khan Winter @khanwinter.com · 30/08/2026Here’s the widget I was talking about. I’m so happy with it. All I have to do in my markdown is write <phone-video src=“”/> and my Swift website generator injects the HTML 010
Khan Winter @khanwinter.com · 10/08/2026Did another little project using Swift on WASM! I've been building out a YATA CRDT text algorithm. Using elementary-ui and Vapor I built a live text editor entirely in Swift on the web! It handles multiple live connections and live editing, resolving edit conflicts using the CRDT structure. 190
Khan Winter @khanwinter.com · 20/07/2026I'm transitioning to this new method. A Channel type consumes a set of Request protocols. Requests have Request/Response associated types and a path. Request site is cleaner. The type checker can correctly guess response types without hints, and enforces bodies or lack of bodies for requests. 2/2 000
Khan Winter @khanwinter.com · 20/07/2026I think I figured out my new favorite way of doing strongly typed network requests in Swift. Previously I was doing a big `Resources` enum, which had a case for each path on the server, and a whole slew of type aliases for Request/Response types. 1/2 110
Khan Winter @khanwinter.com · 17/07/2026Wicked was lit last night. Phenomenal performance at the Orpheum 010
Khan Winter @khanwinter.com · 15/07/2026My Swift Code Screenshot any% speedrun submission. INSANE attempt, with a solid __48.24s__ split. #1 on @speedrun.net for SURE. Unfortunate only the pros can do it this fast, takes lots of time and practice to get this good ✌️ 000
Khan Winter @khanwinter.com · 03/07/2026Best part of making iOS apps rn is making blobby glassy UI like this Everything goes sproiioing and feels right at home and with the glass looks so good. Adding some extra here, with the button morphing physically as it’s dragged, and the menu expanding out of the same button shape. So fun!!!! 030
Khan Winter @khanwinter.com · 02/07/2026Related, good drag and drop UX is super important to me so getting dragging these folders and categories down perfect has been a huge goal of this rewrite It always bugged me how bad the old version was when it came to this. Tons of flashes, glitches, reloads, and jumping around. Now it’s so smooth 030
Khan Winter @khanwinter.com · 02/07/2026Really nailing down the grouped categories navigation on the larger iPad screen. Navigating via the sidebar means the detail nav has to be managed more closely. Really happy with how this is working now. Also keyboard navigation ofc 000
Khan Winter @khanwinter.com · 28/06/2026We lived! 44km paddled in three nights, about two miles of portages, and ZERO fish. Gonna have more pics later 180
Khan Winter @khanwinter.com · 08/06/2026This is the only content I want an AI image generator to make for me @apple.com 0185
Khan Winter @khanwinter.com · 07/06/2026Four out of the top Six education apps on the Mac App Store are obvious ChatGPT or Claude ripoffs right now. 080
Khan Winter @khanwinter.com · 04/06/2026Okay last demo cause I’m really proud of this. Here’s importing 8 RAW photos with only a brief moment before the images are compressed, viewable, and interactive. I presume most users will be using this for photos of like, receipts, so this may be way overengineered 😅😭 120
Khan Winter @khanwinter.com · 04/06/2026Also fun tidbit with this is that I was able to implement fast, lossless, compression for all images by default (lzfse). Images stored here are usually a chunk smaller than Apple’s photos app. Swift made this fun. I’ve got a library now for creating async streams of in/deflate file data. 110
Khan Winter @khanwinter.com · 04/06/2026I pigeonholed way too hard on images the last week but I’m finally calling it after this and moving on. Got EXIF, GPS, and TIFF metadata importing with images. If you snap a pic of a receipt at a store, OpenBudget will remember it and (eventually) let you search and view by location! 110
Khan Winter @khanwinter.com · 03/06/2026So called ‘free thinkers’ when the monthly siren tests happen in Minneapolis 36520
Khan Winter @khanwinter.com · 28/05/2026More OpenBudget iPad work. Added the sidebar, and made some design adjustments when the home screen is acting as a sidebar (glass bg, tighter spacing). Also added a maximum width on all modals and keyboard support for the widebar. Feeling _really_ good about this. UIKit is so nice to work with. 160
Khan Winter @khanwinter.com · 28/05/2026System interop is so important, especially with Drag and Drop in the iOS ecosystem. Makes for really nice interactions like this, where it should feel to a user like they're just moving around their photos, not having to 'copy' or 'import' them into another app. 000
Khan Winter @khanwinter.com · 28/05/2026Definitely needs some love but we got OpenBudget on da iPad 020
Khan Winter @khanwinter.com · 26/05/2026I need to write the next OpenBudget dev log, but I’ve made some crazy progress recently. Very happy with this transaction flow. Things I think are nicely spaced, and as I’ve tested it out irl it works very well. Big part of this update is metadata. Showing off here is notes, images, and locations 220
Khan Winter @khanwinter.com · 22/05/2026My absolute favorite Xcode debugging tool is the memory graph view. It's sometimes nice to just poke around in here. Ofc it's also so incredibly useful for debugging memory leaks and retain cycles. 1110
Khan Winter @khanwinter.com · 19/05/2026A sad end to the Wolves playoff run, but what a fun season. Had season tickets in seats 6 and 7, gonna miss it 120
Khan Winter @khanwinter.com · 14/05/2026Found a force try crash in a new iOS 26 API! 🤩 Why would an enumerator crash instead of returning `nil`? Who knows! 140