Are you one of those people who believes that you can (literally) outrun all of your problems? Is 10k the first thing you do when get first signs of cold or flu – the opposite of staying at home and saving energy? Is 10-more-k the next thing you do when the first 10k fails you? Yes, you know what I’m talking about, high five! ✋
As a few might have learned already, 10k won’t help you if got Covid-19 and, hopefully, you are putting your training on pause during the recovery. Once you start feeling better you will wonder when…
Gifox 2 is finally here and officially out after almost a year of intense undercover work! 🎉 This post contains all you need to know about it and looks into the future plans.
Let’s start with the elephant in the room, macOS dark mode… Yes, every bit of the new version is fully optimized for the dark mode and looks beautiful in low light!
Recently I was blessed to do a fairly complex parsing of arbitrary Swift source files with consecutive data extraction and modification. The assumption was that the code would contain expected declarations, but the overall structure would be unknown. Thankfully, we, Swift developers, already live in the future and have tools like SourceKit and SourceKitten to not even consider the use of regular expressions – amen to that… 🙏
With SourceKitten debuting not so long ago and making big waves in the community it seemed like a perfect candidate for the job – to remind, it can digest Swift source code…
If you are as much of a fan of functional reactive programming and heavy ReactiveSwift/Cocoa user as I am, then every once in a while you find yourself creating own extensions. It doesn’t take a long until you come across a situation where a signal (or producer) and binding share the same name.
The de facto approach is to use singular names, like objectValue
, for bindings and plural, like objectValues
, for signals and producers. …
Not so long ago Gifox introduced support for global palette generation, which along with other recording and compression configuration gives plenty of control over resulting output. This article looks at how different Gifox configurations affect GIF quality, file size and processing time.
GIF can use local and global color palettes. Local palettes are unique to each frame and allow more colors per GIF at a cost of increased file size. Global palette limits entire GIF to 256 colors allowing to significantly bring down the file size and have consistent colors across the entire frame row.
Today’s specimen is an animation…
Every once in awhile there comes a time when a class needs to do early autonomous initialisation that doesn’t belong into application launch handlers.
Objective-C runtime has perfect candidates for the job: +load
and +initialize
, read about both here and here. Unfortunately, neither work with Swift 4 with following override errors:
Error: method ‘load()’ defines Objective-C class method ‘load’, which is not permitted by Swift
Error: method ‘initialize()’ defines Objective-C class method ‘initialize’, which is not permitted by Swift
There’s a very simple solution to that — private Objective-C categories:
There are a few things to keep in mind:
Since starting working with Swift and Apple frameworks I often find myself dealing with epic issues, most relate to features that are not come across every day and not explicit bugs, just things that were not well thought through. Hopefully this will be a series of unique and useful solutions, not pure bitching, with today’s post-mortem on BroadSystemFontWeight warning and broken fonts.
Things go wrong when compiling storyboards that contain text with default system font and custom weight using OS X 10.11 SDK and deployment targets below that.
So little time. So much to say.