About Search Archive
Matt Gallagher: Cocoa with Love Matt Gallagher: Cocoa with Love
← Newer 1 2 3 4 5 6 7 8 9 Older →
  • Introducing CwlViews

    Apr 28, 2019

    CwlViews is a library that offers declarative construction for all common iOS and macOS view and application objects. The result hides many of the busywork tasks that consume much of Cocoa application programming, leaving behind a highly concise, declaratively constructed, view-state driven, reactively connected experience.
    Read more...
  • Article updates, 2018 edition

    Oct 9, 2018

    After a look at headaches due to Xcode 10's new build system, this article will largely be a log of changes to Cocoa with Love content, in reverse chronological order, as I go back through all my Swift articles and make sure everything is up-to-date for Swift 4.2, Xcode 10, iOS 12 and mac OS 10.14.
    Read more...
  • A Farewell to StreamToMe

    Sep 4, 2018

    Last night, I removed my app StreamToMe from the iOS App Store, after 9 years on sale. This will be a discussion about what it's like to have an app on the App Store that is financially successful but eternally problematic, from a support and maintenance perspective. I'll talk about why I lost interest in StreamToMe and, at times, deliberately neglected my own product. Finally, I'll talk about why I've decided to simply pull it from the store – not open source it or sell it – even though it still works for many people. .
    Read more...
  • Model-View-Controller without the Controller

    Jan 20, 2018

    The upcoming CwlViews library offers a syntax for constructing views that has a profound effect on the Cocoa applications, making them naturally 'unidirectional' and eliminating the need for `UIViewController` subclasses. In this article, I look at what the Cocoa application design pattern becomes if we take away the need for a controller.
    Read more...
  • A view construction syntax

    Dec 15, 2017

    In this article, I look at constructing Cocoa views in code using a unique syntax that offers dynamic and constant options with no syntactic overhead, support for parameters inherited through the class hierarchy, support for large numbers of optional parameters without needing to push unused parameters onto the stack, avoidance of parentheses, and avoiding the need to specify types – all while remaining completely typesafe.
    Read more...
  • View-state driven applications

    Nov 8, 2017

    In this article, I'll look at View-state; a frequently ignored trait in typical MVC programs. I'll explore how treating View-state as a Model can lead to simpler navigation transitions, better debug logging, easier state restoration and tricks like time-travel.
    Read more...
  • The worst possible application

    Oct 20, 2017

    In an effort to explain what effects application design patterns have on code, I deliberately write an application using the worst possible application design pattern, in the hope that obvious mistakes will reveal the benefits of using better patterns.
    Read more...
  • CwlLayout: a Swift wrapper around Auto Layout

    Aug 3, 2017

    I present a small file for handling layout, similar to UIStackView or NSStackView but built around efficient Swift syntax and the aim of composing full layouts as a single expression.
    Read more...
  • About flatMap, compactMap and monads

    Jun 30, 2017

    A discussion about monads, whether Swift's flatMap is monadic, where you can use monads in Swift and where you can use some monad-like behaviors in Swift.
    Read more...
  • Statements, messages and reducers

    Jun 22, 2017

    I show how to structure programs around three tiers of computational units – statements, messages and reducers – and talk about the general problem of containing and isolating state that this restructuring aims to address.
    Read more...
← Newer 1 2 3 4 5 6 7 8 9 Older →
  • Subscribe: RSS or JSON
  • Mastodon: @cocoawithlove
  • Bluesky: @cocoawithlove
  • Github: mattgallagher

© 2008-2024 Matt Gallagher. All rights reserved.
Code may be used in accordance with license on About page.
If you need to contact me: