App Store

icon most likely not final

ScreenFloat 2 has officially entered “production”.
Apart from a bit of prototyping of various new features over the last couple of months and years, not a lot has happened in regards to ScreenFloat. But I feel now is the time to finally get it done.

ScreenFloat lets you keep visual references to anything you see on your screen floating above other windows using screenshots. It’s also a screenshot organizer.

Disclaimer: Estimated Time of Arrival, Pricing

I don’t do ETAs for my own products.
I’m a solo developer, I have multiple apps that need maintenance and updates, there are just too many moving parts for me to be able to estimate basically anything. And while that may be a serious lack of managerial skill: I accept that flaw and ignore it 🤷‍♂️.

Regarding pricing, I don’t know what ScreenFloat 2 will cost yet. But I am resolved on its upgrade path: existing customers of ScreenFloat 1 will receive ScreenFloat 2 for free.

About this Journal

I thought it would be fun to chronicle my progress, struggles, successes, failures, struggles, failures, break-throughs, failures, and random stuff while developing ScreenFloat 2. That’s all.

Fundamental Decisions

Before I can start coding, there are a few decisions I have to make in order to be clear on where I want to go and what I want to achieve.

Decision 1 – Build on ScreenFloat 1’s code base, or start from scratch?

I began work on ScreenFloat 1 on March 11th, 2010.
Memory is still managed manually (for you youngster coders out there: google retain / release to know what I’m talking about).
Objective-C’s @property wasn’t even available yet back then.
It’s ancient!
In addition, it was one of my first apps, so ScreenFloat 1’s code is all over the place. And while I don’t think code has to be “pretty”, I do think it has to be readable and understandable; ScreenFloat 1 is neither.
So yes, I’ll definitely be starting ScreenFloat 2 from scratch.
Which my next decision factored into…

Decision 2 – Objective-C, or Swift?

Swift, of course. I love Objective-C (it’s got me this far), but I think by now it’s clear that the future is written in Swift. That’s not to say that if there wasn’t Swift, I wouldn’t love to continue working in Objective-C. However, with more and more frameworks being Swift only (for example, Widgets), I need to move on as well.
While this decision is of no consequence to users of the final product – a feature in an app should work no matter what language was used to program it -, it is quite consequential to me.
I began learning Swift earlier this year – my freeware developer tool BackLog is a first result of that – and I’ll continue to learn. For me, the easiest way to do that is “on the job”: to actually work on something I’m going to ship. Two birds with one stone.
Will that increase development time? Possibly.
Is it worth it? I believe so.

Decision 3 – Keep old storage model, or migrate to Core Data?

ScreenFloat 1’s “storage model” was two plist files (one for the shots library and associated metadata, and one for categories the user created in the Shots Browser) and a folder full of image files.
It worked ok, but I’d like something more sophisticated, robust and scalable.
That sounds like Core Data to me.
It’s not a new framework to me (thankfully – it is a lot to learn). I’ve been using it for a couple of internal tools, and for apps I’m maintaining for third parties.

As a side note, I do want to keep the “folder full of image files”. It makes them accessible in Finder, instead of being stored somewhere on disk in an opaque Core Data storage file.

Decision 4 – Core Data with CloudKit, or Core Data with custom iCloud/CloudKit sync?

I recently took to twitter to see what other developers thought about Core Data with built-in iCloud sync. The consensus was pretty much to stay away: it can be slow, very opaque as to what it’s doing, and thus difficult to debug.

Synchronisation is difficult to debug as it is, so I don’t want to make it any harder than it has to be.
Over the years, I’ve gained quite a bit of experience when it comes to syncing with iCloud / CloudKit (I manually sync with iCloud using CloudKit in Yoink for iPad and iPhone and Transloader), so I’m confident I’ll be able to write my own custom CloudKit sync solution for ScreenFloat 2.

Decision 5 – macOS, sure, but what about iOS/iPadOS?

ScreenFloat 2 will be available for Mac, as well as iOS/iPadOS.
So some code (most notably storage and sync) has to be able to run on all those platforms – something to consider going forward.

As with all my other apps, ScreenFloat 2 for Mac and ScreenFloat 2 for iOS will be developed for and tailored to each respective platform mostly separately, and so they will also be sold separately.

That’s it for this time.
Thank you for joining me. Feedback, input and questions are welcome: mail me, tweet me.
Take care! 🤗

Read more

Yoink for iPad and iPhone v2.4.1 is now available on the App Store.
It’s a maintenance update, improving its Clipboard Monitor, certain areas of its UI, as well as general performance and stability.

Yoink is a file- and snippet “shelf”, in a “hold this for me while I do something else for a while” sort of way.
Anything you can drag, copy, share or download, you can store in Yoink.
When you eventually need it, you can access files either directly from within the appYoink’s custom keyboard, and Siri Shortcuts. It also syncs across your iOS devices via iCloud.

What’s New in Yoink v2.4.1?

+ Improvements to Yoink’s Background Clipboard Monitor

When active, the Clipboard Monitor will save anything you copy or cut in other apps, even if Yoink itself is in the background.

  • v2.4.1 now allows you to start, pause, update and end your Clipboard Monitor sessions with Siri Shortcuts.
    By “update”, I mean you can change its timeout, and which data type it should look out for (everything, links, texts or images).
  • In Settings.app > Yoink > Clipboard Monitor, you can enable Display Last Saved Item, which will show the item the Clipboard Monitor last stored in Yoink in its Picture-in-Picture overlay.
  • Also in Settings.app > Yoink > Clipboard Monitor, you can disable Confirm Monitoring, which, when starting the Clipboard Monitor from within Yoink, will forego all confirmation dialogs and start the Clipboard Monitor right away, as requested by a number of users.
  • The Clipboard Monitor can now be started from Yoink’s Home Screen Quick Actions
  • Lastly, instead of terminating the Clipboard Monitor entirely when a time out occurs, it now pauses instead, making it easier to restart it.
+ General Improvements
  • Downloads now show their state if Use Small Previews is enabled in Settings.app > Yoink > Appearance
  • Downloads now show the size of the download, if available
  • The UI for renaming files has been revamped to use more space
  • Editing a URL now refreshes its icon
  • Yoink’s Share extension now works faster
  • Maps/Location items are now a separate option in Yoink’s filter (accessible by tapping Showing All at the bottom)
  • Many bug- and crash fixes

Where can I get Yoink?

Yoink is available for iPad and iPhone on the App Store – a one-time purchase of $5.99 / € 5,99 / £ 4.99.
It requires iOS 14 or newer.
To sync across your iOS devices, an iCloud account is required.

Links

Yoink for iPad and iPhone Website
Yoink on the iOS App Store
Yoink for iOS Usage Tips
Yoink for iOS Press Kit (.zip download)

Yoink is also available for Mac:
Yoink for Mac Website
Yoink on the Mac App Store
Yoink on Setapp
Yoink for Mac Usage Tips
Yoink for Mac Press Kit (.zip download)

I hope you enjoy Yoink’s recent updates. If you have any feedback or questions, don’t hesitate to mail me, I’d love to hear it!

Stay healthy and safe!

Read more

Yoink for iPad and iPhone v2.3.5 introduced Background Clipboard Monitoring, which, if enabled, stores anything you copy, even if Yoink itself is in the background, effectively giving you a clipboard history.

With version 2.4, I’ve improved it by adding the ability to only monitor for specific data types, and to temporarily pause the monitor.

Background Clipboard Monitoring in Action on iOS 15 and iPadOS 15
Captured on my iPad using iPadOS 15, lightly edited for brevity but otherwise unaltered

For demonstrative purposes, I kept Yoink in the foreground as a Slide-Over app, just to show what gets added when.
But all of this works even if Yoink is not visible on your display and put in the background.

In the video above, I enable Yoink’s clipboard monitor and consecutively copy an image, a link, and some text; all get stored in Yoink.
I then use the Picture-in-Picture’s fast forward button to tell Yoink to only watch for text. With that option set, I again copy an image, a link, and some text; this time only the text is stored in Yoink.
I click the fast forward button again to make Yoink only save links, and repeat the copy-procedure of an image, a link, and some text; now, only the link gets stored in Yoink.
A final time I click the fast forward button to have Yoink only watch for images and – you guessed it – when I copy an image, a link and some text, only the image is added to Yoink.

Next, I pause the clipboard monitor by using Picture-in-Picture’s Pause button. Now, Yoink does not react to any copy events at all. By pressing the Play button in PiP, I reactivate the clipboard monitor.

Notes on the monitor’s behavior

The clipboard monitor attempts to ignore sensitive data, like passwords. For this, it refers to the pasteboard data types proposed at nspasteboard.org, and checks if there are any password-type app names contained in the pasteboard data types, like “1password”, or “keychain”, for example. If encountered, Yoink ignores the copy-event and waits for the next.

As for energy consumption, it is very light-weight.
The images you see in Picture-in-Picture are static – it doesn’t play video, it doesn’t play audio.
Yes, Yoink will continue running in the background because of this, but all it does is check your pasteboard every couple of seconds (and not even the data directly, only a “changeCount” value provided by the API).
If a change has occurred, it will save the content to Yoink and to disk.
Syncing – if enabled – only occurs when the app comes back to the foreground, so there is no added network activity.

Other Changes in Yoink v2.4

– I improved Yoink’s compatibility with GarageBand. Dragging an audio file to GarageBand from Yoink now works correctly
– Picture-in-Picture for arbitrary content now properly displays Map location items
– I fixed a memory leak and a couple of app crashes

Pricing and Availability

Yoink is available on the iOS App Store as a one-time purchase, for $5.99 / €5.99.
It is localized in English, German, Simplified Chinese, Japanese and Korean, with more languages to follow.

Links

Yoink for iPad and iPhone Website
Yoink on the iOS App Store
Yoink for iOS Usage Tips
Yoink for iOS Press Kit (.zip download)

Yoink is also available for Mac:
Yoink for Mac Website
Yoink on the Mac App Store
Yoink for Mac Usage Tips
Yoink for Mac Press Kit (.zip download)

I do hope you enjoy Yoink!
If you have any feedback or questions, don’t hesitate to mail me, I’d love to hear from you.

Stay healthy and safe!

Read more