I’m on hour 7 of writing data database loading routines. Writing queries in Access is uniquely disappointing. The syntax for joins is awful, the lack of case statements is unfortunate, and the query editor is primitive. I vastly prefer SQL Server, and MySQL is OK as well.

UITableView moveRow(at: IndexPath, to: IndexPath) works differently when tableView.dragInteractionEnabled = true, and causes my (dev) app to crash when a move (even when not issued by drag-and-drop) completely empties a section of my table view. It’s been frustrating!

Today at work I thought: “I wish I was better at Awk”. The last time I thought that was 5 years ago…which is why I am not better at Awk.

On my lunch break I submitted a new build of SwiftoDo to the App Store. My release philosophy has changed this year. I’m leaning toward releasing smaller updates, more frequently.

SwiftoDo 2.7.1 is now available in the App Store. It includes minor updates and bug fixes.

I’ve got a couple releases lined up for my iOS app, and need to think about a total rewrite for its macOS counterpart. So, instead of doing anything constructive tonight, I am watching “Supergirl”. Rest is good sometimes, no?

I spent my evening figuring out how to transfer an 18-year-old domain name and several personal websites to new hosting providers. It’s not something I do every day, so I won’t be surprised if something gets screwed up—not that it matters too much.

The program I wrote yesterday has been running, with no output whatsoever, for over 12 hours now, and is nowhere near done. So, how do you, time- and space- efficiently, search for 60,000 strings within 20 million lines of text? 😅

I’m coding something new for work today, mostly because ACL can’t read my enormous data files correctly all the way through.

I really liked this back-to-basics post by John Sundell about type composition in Swift. I think lots of programming tutorial writers—and readers—fail to focus on fundamentals. John does not.

SwiftoDo 2.7.0 is now available in the App Store. It vastly improves the loading speed for huge task lists, and adds URL support (long-press a task to open any URL it contains).

I submitted SwiftoDo 2.7.0 to the App Store earlier today, and tonight I made enough bug fixes and library updates to warrant a version 2.7.1 soon thereafter.

I did some complicated sampling today. ACL’s new APPEND command made short work of combining 4 tables, which sounds like nothing, but it has long been a weak point in ACL’s functionality. It’s a welcome improvement.

I diagnosed and fixed a memory leak in my iOS app using Instruments and Xcode’s memory debugger for the first time tonight. It almost made sense to me. My fix involved removing retain cycles by getting rid of a closure and turning one of my classes into a struct.

I made another change to SwiftoDo to help a user with an abnormally large task list load their file faster. Now loading a big list is way faster, but table view scrolling stutters once again. Performance tuning is full of trade-offs.

I’m adding some very basic URL handling support to SwiftoDo tonight, based on a user request. I almost never put URLs into my task list, so I never thought to add it, but of course it makes sense.

SwiftoDo 2.6.3 is now available in the App Store 📱. It fixes a couple bugs and improves scrolling performance of the task list.

I resubmitted SwiftoDo 2.6.3 to the App Store after several more days of testing. It looks good to go.

I think it is really cool how many people are hacking away at projects to integrate their sites with micro.blog. I am happy, too, to have @manton handle hosting for me, so I can concentrate on writing.

When I woke up today, the TestFlight version of the app I’ve been working on all week didn’t work at all for some reason. Hastily, I rejected the Developer Build in iTunes Connect, so it wouldn’t go out to customers. Rebooting my iPhone reboot fixed all the problems, though.

I submitted a new SwiftoDo build to the App Store for a “Bug Fixes and Performance Improvements” update. Now I can move on to more important things.

The performance enhancements I coded for SwiftoDo this week required me to replace some clean, clever code with some far less clever, but far more performant, code. All the unit tests pass, and scrolling is smoother, so I guess it’s an OK trade-off.

I am righting the ship, compared to this morning. I scrapped my C# solution and started fresh. I won’t be happy with it until I’ve coded the entire thing. Maybe not even then.

I am getting that sinking feeling again that I have overthought everything. I get this a lot while coding, especially because my work-related coding should be time efficient above other considerations. That requirement often forces me to revert to simpler, less reusable code.

Tonight I made my first commit to SwiftoDo since mid-December. I fell behind on development last month due to the holidays, travel, and spending a week or so of my normal coding time doing a C# project for work. Hopefully I am now getting back on track.