Recent Articles
Resolving firmlinks in Python
I recently had the need to resolve firmlinks in python. For example given a path like /Applications/Safari.app
, I needed to get /System/Volumes/Data/Applications/Safari.app
.
Turns out there is not a single example of this anywhere online, so if you are in the same place as I am, here is an example of how to do that:
How (Programming) Languages Shape Problem Solving
It is increasingly important to be a multilingual developer. Being a developer who is fluent in many programming languages not only helps your marketability, but it will also improve your problem-solving skills. It will help you become a more powerful developer who can tackle a problem with deeper insight, better-informed architectural decisions, and think beyond the inherent limitations of any single language. In the past six months,
Practical Dynamic Type Part 3: Attributed Strings
Ensuring that applications remain accessible for all is one of our highest priorities at Livefront, and we believe that a key component in achieving that goal is to flawlessly support Dynamic Type in all of our applications. Part 1 of our Practical Dynamic Type series focused on supporting iOS 10 and Part 2 focused on unit testing. This third installment will focus on Attributed Strings.
Understanding Swift's Characterset
Have you ever needed to check if a string was made up only of digits? How about the presence of punctuation or non-alphanumeric characters? One could use a variety of methods from one of the Formatter
classes to NSScanner
to even NSPredicate
, but the most likely snippet you would’ve found involved the use of an inverted CharacterSet
.
Practical Dynamic Type: Part 2, Testing
Last year, Livefront’s software developer Chris Sessions wrote a helpful article about practical usage of Dynamic Type. This short follow-up addresses one primary concern: Unit Testing.