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.