With all the buzz about Final Cut, it sure would have been a good time for me to have had my clapperboard app ready to go, huh? 😒
I think I can take a sprint at this before WWDC, might make some progress. I have Freeform prepped, Xcode open. I have a bunch of things to do before I can get this to a shippable 1.0, including changing the core navigation & library structure, and removing all the SwiftUI I added in the early days. Fortunately, past-me was smart enough to port the whole project to Swift already, so it’s ready for me to pick up and run with it
Rework in progress 👌
Since I started this project in 2019, the design language I use in my apps has shifted a bit — and that of iPadOS, too. Restructuring it is kinda fun

If I'm to cut features to get to a ship target, it’ll primarily be by not including iPhone & Mac support at launch. Even so, I'll be progressing all three platforms at the same time as I go, as iPad still needs multiple resizable windows and compact/regular size class switching.

No platforms means I don't have to have a sync strategy out of the gate, too… 👀

Working a little on my editing modes and interactions, reducing the gesture overload I had in earlier versions and splitting them out into distinct states (rearranging vs text/field editing, etc)
Fewer mystery meat gestures and weird animations, more buttons
Finding the right SF Symbols for my use case is impossible, so I think I'm going to use this form instead
Layouts all work on iPhone!
My module library was a UITableView, of all things. Well that had to go
As I flesh out the rest of the UI, I'm starting to see ways for this to make sense on macOS, even if the use cases are very different to iPhone or iPad — I didn't get that impression from the last two development sprints I did on this (in 2019, and 2020)
Quick UI roundup; I can see a path towards completing and shipping this app before WWDC, on iPad. I don't know that I'll be able to hit that target before distraction comes knocking, but it's worth a try. I've made quite a bit of progress in the past day, and it's starting to look good
Doing away with the context menus frees up some confusion with Pencil usage. Trying out a dashed line pattern too, though it might still need some tweaking. I also cleaned up the @takeoneapp Mastodon profile a tad
Here's a bunch of screenshots from the early development of @takeoneapp, in June 2019, since I haven't posted them over here. That’s before I'd started work on Broadcasts or Pastel, in a very different era of iPad app development. In hindsight, the improvements to the iPad SDK vis a vis UIKit & Mac Catalyst have been tremendous in the past 4 years. All of that effort is going to pay off for an AR headset built around the iPadOS app platform, if the rumors are true
Reimplemented the stripes color picker as a collection view, works nicely 👌
Those popovers adapt to my favorite sheet style on iPhone, custom title and close button included 😄
Very easy to add new palettes too — I can copy paste them into the codebase directly from @pastelapp 😄
I'm quite partial to the hazard stripes!
End of day 2! @takeoneapp is starting to look so good that if I don't ship this at the end of this sprint, I will be so mad at myself. Apart from the major areas I have yet to implement, I think the UI is nearly at a production-ready level — you'd easily mistake it for a shipping app. I maaay do a TestFlight run of this before release, but no promises. I expect pricing to be very similar to Broadcasts and Pastel, so free to try + $5 ish IAP to make more than one board (or something like that)
Instead of struggling with PencilKit for the rest of the day, I went ahead and built a template picker instead. Another item checked off the todo list ✅
One way for me to punt the PencilKit scaling issue down the road a bit is to ship with UIRequiresFullScreen=YES 🤔 It would mean explicitly opting out of splitscreen and Stage Manager resizing for the time being, but that actually might be OK in this case? It's a very fullscreen-centric app, and that changes a release blocker to minor user annoyance. May just be the way to go
Just because the individual windows need fullscreen doesn't mean I can't still do multiwindowing — it actually works quite nicely in Stage Manager
I was out today, so didn't get much work done — but I refactored @takeoneapp’s data model to let me create and save to folders. Part of that involved wiring up the templates store so I can create/edit/delete templates too
Unifying a little bit of the design language with Pastel, I’m going to use the same Reminders-style sidebar on iPad for @takeoneapp. Also injects a splash of color into a very black & white out-of-the-box experience
End of day UI roundup; getting closer to a MVP 😄
I don’t have complex development notes for this app, but I am enjoying Freeform as an infinite canvas to dump images onto so I can annotate and do a basic bit of mind mapping. It really makes me yearn for an iPad mini Pro with an M-series chip and ProMotion, though — what a fun desktop companion that would be
It’s always nice that the iPhone version picks up everything I’ve been working on for iPad without me thinking about it. Universal development is my jam
Got some odds and ends done today; worked on keyboard focus, styled the 'new folder' button as per @pastelapp, and do a bit more lazy thumbnail generation. It is looking increasingly likely that I actually finish this app this time, which has me extra motivated to work on it 🤓
Also pretty confident in the post-launch roadmap, too, since I know I'll need to ship iPhone+Mac, iPad splitscreen, and sync, and most of that work has already been done
I'm pretty happy with the two basic screens of @takeoneapp; it looks modern and fresh, without entirely sacrificing the skeuomorphic elements that made the original so pleasant. The splash of color in the clappers and sidebar makes all the difference. I think I have the balance right?
…and here's the current state of all the auxiliary screens and modes. I still have to design editors for the various module types (numbers, date, etc), so I'll work on that this week
New module type — image! Somewhere you can put your production logo, perhaps? I have working spacers now too
I added a little wiggle animation (thanks ChatGPT!) for when you're tapping one of the modules without edit mode being on. I might add color to make it less subtle, but the wiggle is great! Communicates what I intended
Spent some time today getting the field editors functional and styling them up a little. And I added double and triple tap gestures to increment/decrement the number counters. Powering through the todo list!
Some fun examples of how one might use the image module on a board 😎
Very simple field editors for v1.0, but they do the trick. They're going to need a rework for the Mac version, as Mac-Idiom Catalyst does not allow for spinny picker controls, but that's a ‘later’ problem
Shocked to find that iOS just doesn't have an API to tell whether the mute switch is on or not 😅 You've gotta jump through hoops playing silent audio clips and checking how long they actually took to play — so I've done that, and now have a mute indicator in @takeoneapp
I did a quick test and, aside from an SF Symbol or two I can backport, there's nothing in @takeoneapp that would prevent it from running on iOS 15. I may then take that as the baseline, once I charge up my testing iPads and give it a full run through. Everything seems to work as intended on iPhone, though
I pulled the original version of @takeoneapp (2011) from GitHub to run it side by side with the new app. Amazingly, it came right up with only a single line of code changed. Fun to see an iOS 5 app beside an iOS 16 one
New @takeoneapp is nearly 8 kloc now, with double the classes of the original. Though not a line of it survives, as I started afresh
It was a feature I wanted for myself, so there's now a setting to always have white boards in dark mode (or vice versa). It is quite nice how easy UIKit makes this
Since I did go ahead and build a whole library for this, I might as well integrate a Help bundle into @takeoneapp. I'll see how quickly I can put together worthwhile documentation if I get a chance before 1.0
⭐️ I am opening up an initial @takeoneapp TestFlight for iPad users! There are still missing features, but I have a good-enough chunk of the app ready that I want to start getting your thoughts. It would be really great to get this 1.0 over the line by early next week, alongside Final Cut Pro for iPad https://testflight.apple.com/join/qSyBk0i6
Join the Take One beta

Available on iOS

I'm getting precariously close to the point where I’m just going to avoid using PencilKit directly in my apps — genuinely not sure how I'm going to salvage this. I think I need to present the drawing surface as a separate modal view, and just render it to an image to show in the board fields. Using PKCanvasView directly as a resizable subview does not seem like the way to go at all

OK. Doing it modally has so many benefits.

Downside:
• You can't ‘just draw’ directly on a module

Upside:
• You get a full canvas to draw on, pinch and zoom
• Drawing is thus available to finger users and not just Pencil
• You have an undo stack
• You can lasso-select and move things around
• Showing the tool picker lets you use different colors and tools
• Scaling just works — it's just an image, so it aspect fits any size

I think my mind is made up on this one

Working on a whole grab-bag of features and improvements for @takeoneapp today after making my mind up on the pencil drawing issue (the new drawing UI is live on TestFlight, btw!). Now deleted boards go to a 'recently deleted' section, so they can be undeleted or permanently removed at will. I have nearly hit my target for 'feature complete’, which is exciting 😄
Since I'm getting closer to finalizing v1.0 of @takeoneapp, it's time to work on features like in-app purchase. I spent some time engineering a decent prompt for Midjourney that has produced a variety of header images I'm happy with, and this is my favorite so far — a young filmmaker or student for which this kind of app would be ideal
@stroughtonsmith Ghost of input rectangle for aspect estimation?

@stroughtonsmith I dislike the × Button for closing. That feels too much like canceling. Can you put Done there?

Also I find myself slightly confused by the two separate edit modes, trying it for the first time. In my opinion there should only be one, and tapping on a text field should also show the keyboard, long tapping it should bring up its context menu and holding it should enter the rearranging mode. Especially since this already kinda works for number fields and drawing but not text.

@stroughtonsmith first time I turned on edit mode, I tapped a text field five times before I noticed I had to go into edit mode 2.
@SherlockHans too many accidental inputs. You should be able to hold the device facing away from you without triggering any wrong modes. There’s a Help feature for the slightly confused 😂 Dual edit modes fixed a bunch of the issues I had with the earlier version, which had only one
@stroughtonsmith maybe as a transparent PDF to retain editing capabilities?
@stroughtonsmith I'm interested in what you do. Can you please tell me more about it?
@stroughtonsmith @takeoneapp I can't seem to put away the initial user guide — tapping Done highlights the Done button, but does nothing.
@command_tab @timo try build 49, or, failing that, force-quit or delete/reinstall
@stroughtonsmith @timo Build 49 works great! No issues so far.
@stroughtonsmith can’t seem to tap Done on the Help view. Stuck there.

@stroughtonsmith @takeoneapp Thanks for letting us try it! My initial feedback is re: timecode. Filming it with my phone, looks like it uses 24fps? (Could be labeled 24fps so it’s clear.) 24fps is good, but even better to let us choose other framerates and drop frame timecode, like 25fps for Europe, 29.97DF for US TV.

I’m confused by “Timer” option, why 16 hours?

Also, an option to set an arbitrary timecode, to sync with other gear, seems crucial.

Good UI!

@daniel @takeoneapp timecode will be configurable, I just haven’t exposed the UI yet. Uh timer shows time since last clap, clock shows current time

@stroughtonsmith @takeoneapp great!

when I choose “Timer” and the clapper is up, it shows 00:00:00:00. after the clap, it shows 16:00:00:01 and counts up from there. was confused why it started at 16: ?

@daniel @takeoneapp 😟 There must be something timezone-based going on, it should start at 0
@stroughtonsmith where would you like to get feedback? Here or email?
@stroughtonsmith got a bit longer I send you an email :)
@paul got it; great input! I will keep it in mind for future versions — the initial release has drawing as a catch-all for anything outside the preset templates, and with a few tweaks to how templates work (to preserve drawings, for example). I don't expect to go deep into high-end features as there are established $50+ apps and hardware integration I could never compete with, but I do want to make a compelling case for the casual user
@stroughtonsmith @takeoneapp just wait til you see what kind of shenanigans we have to do to use the volume button for a shutter control...
@stroughtonsmith @takeoneapp if only the people who brought us “there’s an app for that!” had the same mind for APIs.
@stroughtonsmith @takeoneapp interesting! I’d love to read the process if you ever get it into a blog post.
@stroughtonsmith @takeoneapp I’m probably rusty, but IIRC, after all this time you still can’t detect what the _current_ orientation of iPad is. You can only listen for orientation change.
@stroughtonsmith @takeoneapp If I recall correctly, Apple is allergic to mute audio play. Especially when an App goes into Background
@stroughtonsmith the majority of setups are going to be in the A to maybe L or K range. But I did see my share of double-letter shots. 12AB/2, etc. And you will get scenes like A12 when you’re dealing with rewrites, reshoots, and 2nd Unit. I’d recommend keeping it flexible.
@jonmichaels only so much I can design for, but you can use the Pencil to write over any module, or just use a text module for flexibility
@stroughtonsmith Will it play a tone synced with a graphic to help with manual audio sync? (Sometimes still needed)
@stroughtonsmith do you see the wiggle in this gif? i dont see anything 🙈
@stroughtonsmith that is adorable, and a nice subtle hint to the user of what they need to do to edit. Love it!
@stroughtonsmith Does number support decimal points for something like frame rate? I would imagine frame rate would be common enough to have it’s own module type with predefined options for all the popular rates.
@camkerr you can draw over any module, so you could just put fps there. Number is more for numbers that change frequently, and has controls to increment, etc, where fps is probably better as a static element?
@stroughtonsmith Mostly static, yes. Might change for a couple takes if you’ve gotta shoot some stuff overcranked.
@stroughtonsmith app looks great! Quick question… how does your timecode get generated? Can it jam to sound/camera?
@stroughtonsmith great idea for the logo image slot. can definitely see this being very popular
@stroughtonsmith I love your work on this app! 😍 - Congrats! 👌