What I… (September 2016)

… Did

Released ScreenFloat 1.5.13 (mac app store, website, blog post)
Just in time for macOS Sierra I was able to release a compatibility update for my picture-in-picture productivity-app ScreenFloat.
As I previously mentioned, macOS Sierra introduces a new sandbox entitlement which prevented ScreenFloat from working correctly, because it prohibited launching an interactive screencapture section using NSTask.
Version 1.5.13 adds that entitlement and fixes a couple of minor bugs along the way, as a good bugfix- and compatibility update should :)

Blogged about Re-Implementing macOS’ screencapture CLI (blog post)
When I first learned macOS Sierra broke ScreenFloat, I immediately switched into my worst-case-scenario-mode and started working on my own implementation of macOS’ screencapture utility – at that point, there was no way to be sure Apple would make that sandbox entitlement public and let developers use it.
The in-depth blog post details what I found poking around in macOS’ screencapture command line utility and how I went about implementing my own solution making it look and work almost exactly like Apple’s solution.

Worked on Transloader 3.0 (mac app store, app store, website)
One of my goals for Transloader 3.0 is to support a multi-Mac environment.
In order to do that, I had to transfer the app’s inner workings from iCloud Key-Value Storage to CloudKit.
The reason is pretty straight forward: Up until now, Transloader sent a URL the user entered for download on a Mac to iCloud, associated with a unique key, something like ‘14225b23-fafb-41cd-be35-461acc583084’.
I would prefix that key with the current state of the download, as to be able to show it in the iOS Transloader UI:

  • no prefix – the download has not yet been received on the Mac
  • dwnld – the URL has been received on the Mac and is downloading
  • dlfin – the download has finished on the Mac
  • faild – the download failed on the Mac
  • –del– – the download was deleted on the iOS device and is to be cancelled and deleted on the Mac

Mind you, this was before I had CloudKit and I had to get the most out of what I was handed. And it worked pretty well, if I may say so. But it was already pretty complex. And when it comes to a multi-Mac environment, it’s not very extensible.
Sure, I could add yet another prefix to specify the Mac, but that’s got head-ache written all over it. Plus, if I’d like to extend the system even further, I’d be in trouble.
Having two prefixes, one to specify the Mac, one for the download state, isn’t something you can easily wrap your mind around, and it’s a nightmare to debug (believe me, I had an internal build of this working). Along with other pitfalls, it just wasn’t worth proceeding with this method.
The beauty of iCloud’s Key-Value Storage is that it syncs “transparently”. You use it like NSUserDefaults (where you might store users’ preference settings) and the OS would sync it in the background, whenever it would see fit. If sync failed, the system would try again at a later point. Beautiful.
With CloudKit, you have to take care of all the syncing (and errors) yourself. But you have so much more possibilities when it comes to your data model.
I now have two record types: ‘Mac’ and ‘Download’. A download record references a Mac record, which lets Transloader know which Mac(s) a download belongs to, and the Mac would take according actions (i.e., start the download).
Furthermore, the download record contains the current download state and additional metadata used internally in Transloader. It’s clean and understandable.
However, what had to happen, happened. In a frenzy of keeping everything in sync, I forgot to put the user first.
The beauty of Transloader is that you could add a URL if you had an internet connection or not and it would sync as soon as an internet connection would be available.
In my first version of CloudKit-based Transloader, I made the user wait for a successful sync: You’d add a URL and instead of adding it to your downloads-list right away, the app would wait to hear back from iCloud’s servers to see if it worked.
That might be (it’s not) OK if you always had a good, working internet connection. But what if you didn’t? Then you couldn’t add the URL, because CloudKit would return an error and tell the user to try again later.
That’s unacceptable. So I refactored the system in an important way:
I separated the sync from the data model. That was my error in thinking.
I thought – sync right away and you won’t run into any trouble, you’ll always be in sync.
But the proper way to handle it is this: Know that the data the user enters is always “right” and worry about the sync in the background. That definitely takes the pressure off.
Syncing should happen instantly, of course, but if it doesn’t because of an error, I don’t make the user wait and the user doesn’t lose the URL. Sync is just retried at a later time.
I also had trouble debugging push notifications. Not because of my code, but because Xcode 7 and/or macOS El Capitan couldn’t cope with maintaining code signing in regards to the Apple Push Service over restarts / logouts of the Mac, so push notifications would arrive at the Mac, but they wouldn’t be forwarded to my app. I even had a system of getting it to work again, after hours of experimentation – Reset to “Don’t Code Sign”, clean and build, Set to “Code Sign Automatically”, clean and build. Tada, it worked again (until the next restart or logout).
In macOS Sierra and Xcode 8, this is a thing of the past and everything is working perfectly. I can finally restart whenever I feel like it.

… Downloaded

Instead of doing my usual round-up of multiple apps I’ve downloaded over the month, I decided to do away with that for good and talk about just one app I’ve tried during the month.
I’m starting with the excellent time-tracking Mac app Timing, by Daniel Alm (@daniel_a_a on twitter).

Timing Mac App IconTiming (mac app store, website)
I’m not doing much time tracking. Maybe because I haven’t done much work for other people I could bill my hours to. Maybe because I like working for a flat-rate.
Or maybe it’s because I haven’t found the right tool for the job. To be frank, I haven’t looked around much, but having found Timing, I doubt there’s any need to look much further.
Timing automatically tracks almost anything you do on your Mac.

Timing in Action

Timing in Action, with color-coded activities and hopefully many billable hours. (Screenshot taken from the app’s website)

When you have the app running, it will unobtrusively track the apps (and its windows and documents) you use as well as the time you spend there – something that can come in handy even if you don’t have the need to bill hours to someone, as it gives you insights into what documents and projects you work on the longest (and where you might be able to optimize your time).
Apps (and their windows or documents) can be assigned to projects or activities so you have a nice group of apps that belong together.
If you’re a software developer, I suggest you check out this page, which will list some of the advantages you get out of tracking your time with Timing – something I plan on doing in the future for sure, even if only to see where I can improve my productivity or fix some (extremely rare) procrastination.
A free trial of Timing is available here, and it’s available for purchase on the Mac App Store.

… Read

Austria: The up-and-coming early-stage investment capital of Europe (techcrunch)
“With Germany to the north and the high-tech Netherlands beyond that, few have paid attention to the rapid changes taking place on the other side of the Alps.”

Providing the Best Possible App Store Experience (omni)
“All of these limitations stem from a single underlying problem: they’re all due to the fixed cost of the original download of the app.”

… Listened To

Steve Jobs at NeXT Introduction Press Conference (youtube)

… Watched

The Adventures of Indiana Jones by Patrick Schoenmaker (youtube)
A beautifully animated short film of my favorite archaeologist.

Mohenjo Daro Movie Mp3 Songs Pk Free DownloadMohenjo Daro (imdb)
An entertaining and thrilling story about Mohenjo Daro’s rise and fall.

Beatles eight days a weekThe Beatles: Eight Days A Week – The Touring Years (itunes)
The movie of the year for me. Granted, I’m a huge The Beatles fan, but even if you aren’t, I think this is a more than worthwhile picture.

Lights out movie poster 2016 by johnyisthedevil da5g865Lights Out (itunes)
A good horror flick with a new concept (“lights out”).

… Ate

Köttbullar

Köttbullar. No, not at IKEA. In Stockholm, at “Restaurang Tradition“. Very good food. Very pricey, too.

… Went to See

Me at Drottningholm, Sweden

Drottningholm Palace, Sweden

Stockholm from Stadshuset Tower

Stockholm, as seen from Stadshuset Tower

Eternal Storms Software Logo

– – – Do you enjoy my blog and/or my software? – – –
Stay up-to-date on all things Eternal Storms Software and join my low-frequency newsletter (one mail a month at most).
Thank you :)

Advertisements

What I… (August 2016)

… Did

Released Glimpses 2.1 (website, mac app store)
With over a year since the 2.0 release (and rebranding) of Glimpses, it was about time the app received an update.
It brings the app up-to-speed in terms of integration with macOS and has a couple of nice new, albeit smaller, features.
Glimpses is kind of a difficult app for me to work on. Back when I first released it under the name of Briefly, it never really took off. Sure, I sold a couple of copies here and there, but never enough to merit further development – of any sort, really, be it maintenance or feature-heavy.
Nevertheless, I tried once more with version 2.0 and in the last second decided to rebrand it – new name (Glimpses) and a new icon (the green eye-ball) along with a better description of what the app does, hoping it would do better.
It had a more modern interface and nice new features like facial recognition for intelligent positioning of photos in the video’s frame. Having been featured by Apple once or twice, it is selling a little bit better now, but still not enough to make me think working on it is “worth it”, in the monetary sense.
I don’t like saying this, because I’m fond of the app. But that’s the cold truth: not every app sells.
I’ll keep on trying, as far as time permits. Perhaps it finds its audience, yet.

Released Yoink 3.2.1 (website, mac app store)
Version 3.2.1 of Yoink is a maintenance update, improving QuickLook for web files, emails, Word docs and more, and fixing several bugs along the way.
It’s been receiving very, very nice reviews and now has a 5-star-on-average-over-all-versions rating on the Mac App Store, based on more than 850 reviews worldwide. That makes me a very happy and grateful indie developer.
I released it as a “silent” update (I didn’t send out a press release), since it was mainly a bugfix update. To my surprise, it was picked up by Macworld in its weekly “The Week in Mac Apps” article, as dot-dot-x versions usually don’t get much coverage from the press, unless you’re a big software company.

Worked on a ‘screencapture’ replacement for ScreenFloat (website, mac app store)
As I blogged about, using the screencapture command-line-utility on macOS Sierra via NSTask in an app doesn’t work – you’ll get a sandbox violation. It now was confirmed to me that a new sandbox entitlement is required, namely “com.apple.security.temporary-exception.mach-register.global-name” and it works (also confirmed, by yours truly). So that’s the solution I’m going with now, and ScreenFloat 1.5.13 is currently “In Review” – for unusually long, but still not rejected.
Still, before I knew all of that, to be on the safe side, I started developing a screencapture replacement with all the features I needed from the original. It’s based on the CGWindowList* APIs for screenshot-creation and CAShapeLayer for drawing the selection rectangle, as it’s more efficient than using NSView’s -drawRect:.
I I’ll post about developing the replacement and “reverse engineering”* ‘screencapture’ soon – how Apple’s developers implemented ‘screencapture’ is both very interesting and confusing at the same time – and I’m sure they’re using private methods here and there… So stay tuned, it’ll be a fun post.
*I didn’t really reverse engineer it. I just poked around a little bit.

Blog Post: Inactive Checkboxes are Poor UX (blog)
A blog post that garnered way more attention than I had anticipated (it’s my most-read post so far) about how inactive checkboxes are poor UX in some cases.
I posted it to designernews and it took off from there – it got several replies (some were lengthy and came by mail) and prompted some discussion on twitter.
I’m planning a follow-up post, clarifying what I decided to do with the checkbox in question in Yoink and containing some of the great feedback I received.

… Thought About

MacBook Pros with OLED Touch-Bar Instead of Function Keys
There’s a rumor the new MacBook Pro will replace the function keys (F1, F2, …) with a touch-sensitive OLED bar. I like the idea, it sounds practical.
However, I’m worried for a lot of my keyboard shortcuts. A lot of them are just a function key (for example, to manually show Yoink, I use F5, its default keyboard shortcut).
Those keys are easily accessible and don’t need any modifier keys like option (⌥), command (⌘), control (^) or shift (⇧).
The media keys (rewind, play/pause, fast forward, volume up/down, eject) can be easily replaced in the OLED bar, but custom keyboard shortcuts might not be that simple. We’ll see how that turns out.

The Eternal Storms Software Newsletter (subscribe)
With the release of Glimpses 2.1 and Yoink 3.2.1, I sent out Issue #2 of the Eternal Storms Software Newsletter.
I’d like to add more “value” to it.
I send out the newsletter quite infrequently – only when I release a substantial app update or new software. When I send out an issue, I usually include what’s been going on, aside from the big news, like smaller software updates or blog posts I’ve written.
Now, to add more “value”, I’m thinking about adding a section about other developer’s apps, a “Pick of the Issue”, so-to-speak. I’d have to pick more obscure or lesser-known apps for this though, so the “Pick” is not something you’ve already seen a thousand times in your news-feed already.
It’s just a thought at this point, however, not a plan.

… Downloaded

Pixel Cup Soccer 16 App IconPixel Cup Soccer 16 (app store)
Sometimes the controls are a bit of a problem, but other than that, it’s a fun game.

Drifty League App IconDrifty League (app store)
It’s fun for a quick gaming session, but nothing I would play a lot.

Noodles! App IconNoodles! (app store)
Connect all noodle pieces. A nice puzzle game.

hocus. App Iconhocus. (app store)
An M.C. Escher-esque (and Monument Valley-like) puzzle game.

Blogo Mac App IconBlogo (mac app store)
A blog publishing app for Mac. I wanted to try it, but for some reason I *need* to sign up with them or sign in with Facebook or Google+ for syncing.
Why is syncing needed anyway? The posts are all there on wordpress…

Flume App IconFlume (mac app store)
An Instagram browser for Mac. I want to like it, but I found the interface confusing – I couldn’t find the title bar to move the window around, I couldn’t find how to get to different sections…
I do like its focus on the content, but it might be too minimalistic for its own good.

… Read

20 Years of Music in Tomb Raider Video Games (gamasutra)
“The aim of this article is not to bring anything new to the table, but to introduce the reader to the music of the Tomb Raider games.”

Secrets of the Apple Store, Revealed by Ex-Employees (thrillist)
“…the new cable was such a secret that when they originally sent them to us, they were disguised inside of a mock enclosure that mimicked the older, 30-pin cable design.”

The Apple Goes Mushy Part I: OS X’s Interface Decline (Introduction) (nwh)
“Perhaps you recall the short-lived icon of the original Notes app, which perfectly resembled a real yellow legal pad. OS X Yosemite replaced it with a more abstract pad with white paper and a bright yellow top that imitates no real material.”

Playing the Long Game Inside Tim Cook’s Apple (fastcompany)
“”The most important thing is, Do you have the courage to admit that you’re wrong? And do you change?” Cook says.”

Eddy Cue and Craig Federighi Open Up About Learning From Apple’s Failures (fastcompany)
“There’s not just one way to get things done here.”

The Beatles’ Revolver: 50th Anniversary (esquire)
“You see a four-day gap, and they made an album there.”

How I Drew a Pop Art Masterpiece for The Beatles (theguardian)
“When I heard the music, I was just shocked, it was so great. So amazing.”

Kagi Shuts Down After Falling Prey to Fraud (tidbits)
“it’s […] depressing to learn that the reason [for the end of Kagi] was an unsuccessful attempt to recover from a situation involving fraud.”

… Watched

NeXT Introduction Press Conference (youtube)
After the unveiling of the NeXT Cube, Steve Jobs (then 33) answers questions from the media.

… Ate

Parathas with Potatoes and Mango ChutneyParathas with Bombay Potatoes and Mango Chutney

… Went to See

View of Vienna from CobenzlCobenzl, Vienna

A meadow on CobenzlA lovely meadow

Eternal Storms Software Logo

– – – Do you enjoy my blog and/or my software? – – –
Stay up-to-date on all things Eternal Storms Software and join my low-frequency newsletter (one mail a month at most).
Thank you :)

What I… (July 2016)

… Did

Worked on Glimpses v2.1 (website, mac app store)
Glimpses 2.0, I’m petrified to say, was released and then not updated again on June 7th, 2015 – that’s more than a year ago. An update has been overdue for quite some time.
In version 2.1, I focused on bringing the app up-to-speed concerning the integration with macOS – mainly, the Photos.app.
Version 2.1 includes a Share extension so photos can be sent from Photos.app to Glimpses right from within the app. Glimpses will also accept drag’n’dropped photos from Photos.app, something that didn’t work before, because Photos.app uses promise file drags.
It also includes a QuickLook plugin, which makes identifying project files easier. Photos can now be shuffled and edited in external editors.
Of course, Glimpses also includes many improvements where performance is concerned, as well as usability improvements.
I’ve also transferred the app to the base-location system along with AutoLayout. It took a bit of time, but I think moving forward, probably wanting to localize the app into further languages, this will make things much easier.
Glimpses v2.1 will be released early-to-mid-August 2016 as I’m still working on overhauling its website.

Worked on Yoink v3.2.1 (website, mac app store)
I’ve also been working on an update for Yoink – a typical x.x.1 bugfix release.
It includes bugfixes to its Force Touch capability, alias files and a crash when going backwards in the splash screen.
Yoink v.3.2.1 will be released shortly.

Worked on ScreenFloat v1.5.13 (website, mac app store)
This will be a specific update for early adopters of macOS Sierra, where ScreenFloat currently doesn’t take screenshots (I blogged about it, in case you’re interested about what’s going on).
The TL;DR version: I’m using the screencapture command-line utility via NSTask, and interactive screencaptures are apparently blocked in sandboxed apps on macOS Sierra.
I’m not yet sure how I will fix this issue, as I haven’t heard back from Apple yet about it (although I filed a bugreport: rdar://27610157 and contacted Apple directly).
There are two ways this can go: The easy way, and the hard way.
The easy way would mean me adding a temporary entitlement to ScreenFloat so until I can run my own screencapture solution, it will work unchanged for the time being.
The hard way would mean me developing my own screencapture solution right away and make it in time for macOS Sierra’s official public release.
I’ve started working on ‘the hard way’, just in case.

… Downloaded

LEGO Pirates of the Caribbean IconLEGO Pirates of the Caribbean (mac app store)
I love those LEGO games, but somehow missed this one when it was released. I recently picked it up and it’s just lovely. Jack Sparrow is as quirky as ever.

Claquette IconClaquette (mac app store)
A great screen recorder app for Mac.
“Edit your recordings and share them as Animated GIF/PNG or as movie.”
I had something like this in the works myself (especially the animated GIF part), but it never worked quite correctly using Apple’s built-in tools.
I spoke with Thomas, the developer of this app and a fellow Austrian, some time ago and he told me he developed his own GIF creation code for this app – something that takes a lot of effort and dedication.
It’s all around a great app and can only recommend it!

iPulse IconiPulse (mac app store)
A Mac app that shows the system status.
However, I can not for the life of me figure out what all the circles or colors mean. No idea.

Split Screen IconSplit Screen (mac app store)
Resizes your windows to exactly half of your screen size. Can be practical.

Snip IconSnip (app store)
A cool new game by a developer friend of mine, Thomas, where you have to hit a target by snipping a circular object. Very intelligent design!
You can watch an introductory video at the website.

Pokémon Go IconPokémon Go (app store)
In my youth, I completely missed Pokémon. It just went by me. Sure, I’d heard of it and watched other people play here and there, but I never played it myself.
It all changed with Pokémon Go, though. My girlfriend and I go out and play almost daily, and it’s really fun. One of us watches the traffic, the other one plays ;)
Sure, I have no idea what these Pokémon are called or what they can do (something my girlfriend can recall before you can even ask her). It’s still fun when you find (and capture) new ones.
I can recommend getting it, but please be safe out there.

macOS Sierra IconmacOS Sierra beta (public beta, website)
Because of the issues with ScreenFloat, I had to get the macOS Sierra beta. But to not have to install the beta over my production setup, I had to get a new external hard drive (my two backup drives are, well, for backups, and pretty full).
I originally had my heart set on an external SSD, but they weren’t available. My backup plan was an internal SSD with an external enclosure, but I couldn’t get the enclosure. Then I thought I’d get an SD card for my MacBook Pro, you know, because it’s practical and small. But for the price of a 128 GB SD card, I could have bought a dozen external SSDs, or hundreds of external HDs. So I decided on an ordinary, external HD. For a beta OS drive, it works just fine and it was the cheapest solution after all. Plus, it’s a 1TB drive, so I can put other stuff on there and keep the 128 GB partition for future betas of macOS.
Too bad, though, I always thought I’d install beta systems on an SD card. That’s just so cool.

… Read

Working on Fable Destroyed my Life, but I don’t Regret it (polygon)
“We felt invincible. With Lionhead, Peter Molyneux and Microsoft in your corner, what could go wrong?”

Inside Apple’s Perfectionism Machine (mashable)
“From the beginning, the Mac has been about Apple taking responsibility for the whole thing: hardware, software, how applications can work and, increasingly, Internet services”

Why it’s Time to go Back to the Moon (theverge)
“It can teach us about interplanetary living, just as the International Space Station has taught us about life in space.”

Apple’s ‘Differential Privacy’ is About Collection Your Data – but not Your Data (wired)
“Differential privacy is a research topic in the areas of statistics and data analytics that uses hashing, subsampling and noise injection to enable…crowdsourced learning while keeping the data of individual users completely private.”

The macOS Sierra Developer Preview: Different Name, Same ol’ Mac (arstechnica)
“But the Mac feels like it has settled into a quiet and reliable groove, a groove that Sierra is happy to trundle along in.”

Physicists Simulate Sending Particles of Light Into the Past, Strengthening the Case that Time Travel is Possible (earthmysterynews)
“One aspect of general relativity that has long intrigued physicists is the relative ease with which one can find solutions to Einstein’s field equations that contain closed timelike curves (CTCs)—causal loops in space–time that return to the same point in space and time.”

Indiana Jones and the Iron Phoenix: The Lost Sequel to Fate of Atlantis (mixnmojo)
“It’s a title equal parts fascinating and frustrating to learn about, as it seems to have been more or less exactly what Fate of Atlantis fans would have wanted in a successor.”

… Watched

The Conjuring 2 Movie PosterThe Conjuring 2 (itunes)
Just like The Conjuring 1, this is a great horror flick. The only thing that bugged me was some CGI that felt completely out of place, but it was brief, so it was bearable.
Other than that, if you’re into horror movies, go check it out :)

Still of The Talk Show LiveThe Talk Show Live From WWDC 2016 (vimeo)
An interview of Craig Federighi and Phil Schiller by John Gruber. Highly recommended.

Zelda - Breath of the Wild ImageZelda – Breath of the Wild Trailer (youtube)
Can’t wait for this game to come out. I’ve been playing all of these with my cousin, and I’m so looking forward to playing this one with him.

… Ate

Jerk Chicken with Rice and CornJerk Chicken with Rice and Corn on the cob

… Went to See

Danube, Danube-CityBritta and I went for a bike ride to ‘Gänsehäufel’, an open-air public bath, went for a swim and then rode back again.
The most I moved in months!

Eternal Storms Software Logo

– – – Do you enjoy my blog and/or my software? – – –

Stay up-to-date on all things Eternal Storms Software and join my low-frequency newsletter (one mail a month at most).
Thank you :)