PinnedChris NevininBetter ProgrammingIntroducing Assert — My Wrapper Framework Around XCTestWrite robust tests in iOSNov 1, 2022Nov 1, 2022
PinnedChris NevininBetter ProgrammingAutoLayoutBuilder —My Swift Package to Reduce Boilerplate CodeLeverage @resultBuilder to create a DSL for UIView constraintsOct 6, 2022Oct 6, 2022
PinnedChris NevininLevel Up CodingExpressible Dynamic Phantom TypesA phantom type is a custom type that has one or more unused type parameters.Oct 19, 2022Oct 19, 2022
PinnedChris NevininBetter ProgrammingUIView/NSView Styling With @propertyWrapperFiguring a layout-implementation logic in the sea of styling codeOct 21, 2022Oct 21, 2022
Chris NevinExtending Core DependenciesAs codebases grow we can end up with Ravioli code or Lasagne code here are some ways to refactor to avoid that eventuality.May 9May 9
Chris NevinBuilding a Clipping Infinite CarouselI wanted to build something similar to the Netflix carousels which lets you scroll infinitely to the right but not to the left and when you…May 13, 20231May 13, 20231
Chris NevininLevel Up CodingDependency Graph Hell (iOS)A common pattern I see emerging in large codebases that have dozens or hundreds of dependencies is that a parent object has knowledge about…Nov 7, 2022Nov 7, 2022
Chris NevinModular VIPER Architecture (iOS)Enforcing boundaries with Swift Package ManagerNov 6, 2022Nov 6, 2022
Chris NevininLevel Up CodingWriting Valuable TestsThe best tests do not tie your code to your tests.Jan 30, 2020Jan 30, 2020
Chris NevininThe Alchemy LabRestricting function argumentsBy leveraging Phantom TypesOct 17, 2019Oct 17, 2019