56,966 blogs · [ { "id": "01a087a4-277b-73db-be18-cb7d97b08f4e", "title": "The Eval Loop: Stop Guessing, Start Measuring", "url": "https://merowing.info/posts/eval-loops-for-llm-features/", "published_at": "2026-03-30T07:00:00+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d983d49fd", "title": "The Age of the Micro-Entrepreneur", "url": "https://merowing.info/posts/the-age-of-micro-entrepreneurs/", "published_at": "2025-12-31T10:00:00+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d984f553e", "title": "Stop Getting Average Code from Your LLM", "url": "https://merowing.info/posts/stop-getting-average-code-from-your-llm/", "published_at": "2025-10-27T12:00:00+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d989affe3", "title": "Introducing Swifty Stack", "url": "https://merowing.info/posts/swifty-stack/", "published_at": "2023-11-01T14:00:23+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d994683ce", "title": "Creating Developer Tool - Part 2", "url": "https://merowing.info/posts/creating-developer-tool-part-2/", "published_at": "2023-08-09T12:22:43+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d99b2dc2c", "title": "Creating a developer tool - part 1", "url": "https://merowing.info/posts/creating-dev-tool-part-1/", "published_at": "2023-07-18T12:00:39+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d9a5e17d1", "title": "The Journey to Financial Independence as a Programmer", "url": "https://merowing.info/posts/the-journey-to-financial-independence/", "published_at": "2023-06-21T14:41:56+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d9b28f834", "title": "Work-Life Balance for Sustainable Success", "url": "https://merowing.info/posts/work-life-balance-for-sustainable-success/", "published_at": "2023-05-18T13:01:25+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d9c131f33", "title": "Optimizing Swift: Tracking property changes and building a Memoization system", "url": "https://merowing.info/posts/memoization-part-1/", "published_at": "2023-04-05T10:38:07+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d9ca92a01", "title": "How to avoid burnout as a software engineer?", "url": "https://merowing.info/posts/how-to-avoid-burnout-as-a-software-engineer/", "published_at": "2023-03-07T13:01:10+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d9d46a5b5", "title": "The Composable Architecture - Best Practices", "url": "https://merowing.info/posts/the-composable-architecture-best-practices/", "published_at": "2023-02-22T12:00:55+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d9dc783f7", "title": "Widget Architecture - Part 3", "url": "https://merowing.info/posts/widget-architecture-part-3/", "published_at": "2023-02-15T15:54:34+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d9e5d5606", "title": "Widget Architecture - Part 2", "url": "https://merowing.info/posts/widget-architecture-part-2/", "published_at": "2023-01-23T13:27:39+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d9e600476", "title": "Widget architecture - part 1", "url": "https://merowing.info/posts/widget-based-architecture-part-1/", "published_at": "2022-12-05T12:45:20+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d9f085d69", "title": "Debugging Tips", "url": "https://merowing.info/posts/swift-debugging-tips/", "published_at": "2022-11-14T12:00:19+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7d9f79caa4", "title": "TCA Performance and Multi-Store", "url": "https://merowing.info/posts/multi-store-tca/", "published_at": "2022-10-10T17:02:36+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da0653bb4", "title": "Composable Architecture @ Scale", "url": "https://merowing.info/posts/composable-architecture-scale/", "published_at": "2022-09-20T09:22:37+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da08b77da", "title": "Improving Developer Experience through tools and techniques", "url": "https://merowing.info/posts/improving-developer-experience-through-tools-and-techniques/", "published_at": "2022-09-07T13:21:47+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da129d8b0", "title": "TCA Action Boundries - Convenience", "url": "https://merowing.info/posts/tca-action-boundries-convenience/", "published_at": "2022-08-29T12:38:57+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da159ae64", "title": "TCA Action Boundaries", "url": "https://merowing.info/posts/boundries-in-tca/", "published_at": "2022-08-15T13:14:13+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da20d5119", "title": "Practical Sourcery examples", "url": "https://merowing.info/posts/practical-sourcery-examples/", "published_at": "2022-08-01T15:12:53+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da2ff93ce", "title": "Building captivating content reveal animation.", "url": "https://merowing.info/posts/content-reveal/", "published_at": "2022-07-25T12:22:58+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da35e4746", "title": "Supporting updatable assets", "url": "https://merowing.info/posts/remote-asset-manager/", "published_at": "2022-07-18T13:00:17+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da3d49440", "title": "Hot Reloading in Swift", "url": "https://merowing.info/posts/hot-reloading-in-swift/", "published_at": "2022-07-05T20:36:14+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da3ee7a78", "title": "Exhaustive testing in TCA", "url": "https://merowing.info/posts/exhaustive-testing-in-tca/", "published_at": "2022-03-21T15:49:00+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da4eb2cad", "title": "Code-Review best practices", "url": "https://merowing.info/posts/code-review-best-practices/", "published_at": "2022-02-20T23:00:00+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da5656658", "title": "Leave your ego at the door", "url": "https://merowing.info/posts/leave-your-ego-at-the-door/", "published_at": "2021-11-07T23:00:00+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da595c4db", "title": "Improving Composable Architecture Debugging", "url": "https://merowing.info/posts/improving-composable-architecture-debugging/", "published_at": "2021-08-18T05:43:04+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da5d8b1d5", "title": "Apple Treats interview", "url": "https://merowing.info/posts/apple-treats-interview/", "published_at": "2021-05-05T05:43:04+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da6069463", "title": "Dear Xcode....", "url": "https://merowing.info/posts/dear-xcode----/", "published_at": "2021-04-20T05:43:04+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da6e0b080", "title": "Introducing Sourcery Pro", "url": "https://merowing.info/posts/introducing-sourcery-pro/", "published_at": "2021-04-08T09:43:04+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da75f9f96", "title": "The Decade in Review", "url": "https://merowing.info/posts/the-decade-in-review/", "published_at": "2021-03-15T09:43:04+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da7a027ee", "title": "Improve build times by extracting 3rd party tooling to processing script.", "url": "https://merowing.info/posts/improve-build-times-by-extracting-3rd-party-tooling-to-processing-script/", "published_at": "2021-01-17T23:00:00+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da7b67117", "title": "Adding support for versioning and migration to your Codable models.", "url": "https://merowing.info/posts/adding-support-for-versioning-and-migration-to-your-codable-models-/", "published_at": "2020-06-09T22:00:00+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da83614c2", "title": "Straighforward Data Snapshots", "url": "https://merowing.info/posts/straighforward-data-snapshots/", "published_at": "2019-07-14T22:00:00+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da8dee6ab", "title": "Finding exact difference between 2 instances", "url": "https://merowing.info/posts/finding-exact-difference-between-2-instances/", "published_at": "2017-10-18T10:30:51+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da936e175", "title": "How to find retain cycles and memory leaks sooner", "url": "https://merowing.info/posts/how-to-find-retain-cycles-and-memory-leaks-sooner/", "published_at": "2017-10-01T10:30:51+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7da9b3e21e", "title": "Metaprogramming in Swift talk", "url": "https://merowing.info/posts/metaprogramming-in-swift-talk/", "published_at": "2017-05-03T06:04:14+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7daa5b8755", "title": "Using protocol compositon for dependency injection", "url": "https://merowing.info/posts/using-protocol-compositon-for-dependency-injection/", "published_at": "2017-04-12T16:13:31+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7daaa8600c", "title": "Stop weak-strong dance", "url": "https://merowing.info/posts/stop-weak-strong-dance/", "published_at": "2017-04-03T14:52:42+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7dab08ec87", "title": "Swift Coders interview", "url": "https://merowing.info/posts/swift-coders-interview/", "published_at": "2017-02-02T17:50:14+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7dab5d8fd9", "title": "Seniority", "url": "https://merowing.info/posts/seniority/", "published_at": "2017-01-18T14:43:04+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7dabd29319", "title": "Testing iOS Apps", "url": "https://merowing.info/posts/testing-ios-apps/", "published_at": "2017-01-11T07:17:47+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7daccea1e1", "title": "How hard would it be to adjust your iOS app in real-time?", "url": "https://merowing.info/posts/how-hard-would-it-be-to-adjust-your-ios-app-in-real-time-/", "published_at": "2017-01-02T15:21:09+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7dad526c4d", "title": "Meta-programming in Swift", "url": "https://merowing.info/posts/meta-programming-in-swift/", "published_at": "2016-12-14T10:54:13+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7dae0f4d12", "title": "Better MVVM setup with POP and Runtime", "url": "https://merowing.info/posts/better-mvvm-setup-with-pop-and-runtime/", "published_at": "2016-08-17T16:17:19+00:00" }, { "id": "01a087a4-277b-73db-be18-cb7dae43a741", "title": "Investing time into developer tools", "url": "https://merowing.info/posts/investing-time-into-developer-tools/", "published_at": "2016-08-08T10:47:33+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bedf698094", "title": "Setting up pre-commit hook for iOS", "url": "https://merowing.info/posts/setting-up-pre-commit-hook-for-ios/", "published_at": "2016-08-03T10:12:55+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee008d05a", "title": "Logging in Swift", "url": "https://merowing.info/posts/logging-in-swift/", "published_at": "2016-07-13T15:36:06+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee0669c47", "title": "iOS Architecture", "url": "https://merowing.info/posts/ios-architecture/", "published_at": "2016-06-26T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee0b5ed36", "title": "8 Books that everyone should read", "url": "https://merowing.info/posts/8-books-that-everyone-should-read/", "published_at": "2016-02-03T12:13:48+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee1b4d314", "title": "Programming", "url": "https://merowing.info/posts/programming/", "published_at": "2016-01-14T15:21:06+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee21b6952", "title": "Improve your iOS Architecture with FlowControllers", "url": "https://merowing.info/posts/improve-your-ios-architecture-with-flowcontrollers/", "published_at": "2016-01-05T10:23:46+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee234f81b", "title": "Little things that can make your life easier in 2016", "url": "https://merowing.info/posts/little-things-that-can-make-your-life-easier-in-2016/", "published_at": "2015-12-23T09:31:43+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee253a232", "title": "Details matter - harnessing the power of Core Animation", "url": "https://merowing.info/posts/details-matter---harnessing-the-power-of-core-animation/", "published_at": "2015-12-16T21:23:13+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee310fdd4", "title": "Writing Xcode plugin in Swift", "url": "https://merowing.info/posts/writing-xcode-plugin-in-swift/", "published_at": "2015-12-08T10:07:09+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee40ec9de", "title": "The beauty of imperfection", "url": "https://merowing.info/posts/the-beauty-of-imperfection/", "published_at": "2015-11-24T11:29:37+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee455b279", "title": "Swift init()", "url": "https://merowing.info/posts/swift-init--/", "published_at": "2015-11-17T12:51:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee4a6a4dc", "title": "Tips for Interface Builder", "url": "https://merowing.info/posts/tips-for-interface-builder/", "published_at": "2015-11-12T23:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee4a8d4f2", "title": "Prototyping floating burger menu with CAShapeLayer", "url": "https://merowing.info/posts/prototyping-floating-burger-menu-with-cashapelayer/", "published_at": "2015-11-04T12:29:44+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee4e9d3f2", "title": "Simple way to scrape web with Ruby", "url": "https://merowing.info/posts/simple-way-to-scrape-web-with-ruby/", "published_at": "2015-01-14T23:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee50bbc39", "title": "Playgrounds for Objective C", "url": "https://merowing.info/posts/playgrounds-for-objective-c/", "published_at": "2014-10-22T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee5e62a4c", "title": "iOS Project Bootstrap", "url": "https://merowing.info/posts/ios-project-bootstrap/", "published_at": "2014-10-14T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee68e52cc", "title": "How do I work?", "url": "https://merowing.info/posts/how-do-i-work-/", "published_at": "2014-10-05T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee7750bee", "title": "A Swift introduction into fitness", "url": "https://merowing.info/posts/a-swift-introduction-into-fitness/", "published_at": "2014-09-29T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee77a94b9", "title": "Writing less code", "url": "https://merowing.info/posts/writing-less-code/", "published_at": "2014-08-26T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee85d447c", "title": "Improving development speed", "url": "https://merowing.info/posts/improving-development-speed/", "published_at": "2014-07-17T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee8e6db13", "title": "Implementing observable in Swift", "url": "https://merowing.info/posts/implementing-observable-in-swift/", "published_at": "2014-07-16T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee8ee784c", "title": "Behaviours and Xcode 6", "url": "https://merowing.info/posts/behaviours-and-xcode-6/", "published_at": "2014-06-21T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee9c4cc6e", "title": "Implementing image comparison view in 20 minutes", "url": "https://merowing.info/posts/implementing-image-comparison-view-in-20-minutes/", "published_at": "2014-05-19T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bee9e3b507", "title": "iOS App Architecture, Part 2: Data parsing", "url": "https://merowing.info/posts/ios-app-architecture--part-2--data-parsing/", "published_at": "2014-04-02T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0beea9d330d", "title": "Refactoring tricks", "url": "https://merowing.info/posts/refactoring-tricks/", "published_at": "2014-03-23T23:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0beeb11c7af", "title": "7 most common code issues", "url": "https://merowing.info/posts/7-most-common-code-issues/", "published_at": "2014-03-19T23:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0beebda7fe8", "title": "iOS App Architecture, Part 1: Setting up", "url": "https://merowing.info/posts/ios-app-architecture--part-1--setting-up/", "published_at": "2014-03-13T23:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0beecd802c8", "title": "iOS tips", "url": "https://merowing.info/posts/ios-tips/", "published_at": "2014-02-19T23:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0beed534623", "title": "Fit geek", "url": "https://merowing.info/posts/fit-geek/", "published_at": "2014-02-09T23:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0beee4c94de", "title": "iOS Developer Tools", "url": "https://merowing.info/posts/ios-developer-tools/", "published_at": "2014-02-06T23:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0beeec16f03", "title": "Stop writing data parsing code in your apps", "url": "https://merowing.info/posts/stop-writing-data-parsing-code-in-your-apps/", "published_at": "2013-07-24T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0beef1e464a", "title": "Expanded use of asserts", "url": "https://merowing.info/posts/expanded-use-of-asserts/", "published_at": "2013-07-02T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0beef704196", "title": "Crafter - setup your cocoa projects with ease", "url": "https://merowing.info/posts/crafter---setup-your-cocoa-projects-with-ease/", "published_at": "2013-05-01T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0beef7d58d3", "title": "iOS Game with Interface Builder", "url": "https://merowing.info/posts/ios-game-with-interface-builder/", "published_at": "2013-04-10T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0beefb6d2fd", "title": "Statusboard and Jenkins", "url": "https://merowing.info/posts/statusboard-and-jenkins/", "published_at": "2013-04-10T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bef0901128", "title": "Overlaying application version on top of your icon", "url": "https://merowing.info/posts/overlaying-application-version-on-top-of-your-icon/", "published_at": "2013-03-06T23:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bef12be930", "title": "Quick tip for Interface Builder", "url": "https://merowing.info/posts/quick-tip-for-interface-builder/", "published_at": "2012-12-25T23:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bef17ea47b", "title": "Pinch to reveal animation, like in Boeing Milestones", "url": "https://merowing.info/posts/pinch-to-reveal-animation--like-in-boeing-milestones/", "published_at": "2012-06-30T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bef1ff1b45", "title": "Programmers bad habits", "url": "https://merowing.info/posts/programmers-bad-habits/", "published_at": "2012-05-28T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bef25bce6a", "title": "Drawing smooth lines with cocos2d ios inspired by Paper", "url": "https://merowing.info/posts/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/", "published_at": "2012-04-22T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bef2d17982", "title": "Automatic removal of NSNotificationCenter or KVO observers", "url": "https://merowing.info/posts/automatic-removal-of-nsnotificationcenter-or-kvo-observers/", "published_at": "2012-03-27T22:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bef3129b77", "title": "How to check if user touched anything in your ios app", "url": "https://merowing.info/posts/how-to-check-if-user-touched-anything-in-your-ios-app/", "published_at": "2012-03-04T23:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bef3371830", "title": "Using UIGestureRecognizers in cocos2d", "url": "https://merowing.info/posts/using-uigesturerecognizers-in-cocos2d/", "published_at": "2012-03-04T23:00:00+00:00" }, { "id": "01a087a4-277c-71f1-a038-f0bef346f06f", "title": "iOS Developer Tips", "url": "https://merowing.info/posts/ios-developer-tips/", "published_at": null }, { "id": "01a087a4-277c-71f1-a038-f0bef3f76c7c", "title": "From Good to Great: Enhancing Developer Experience for Maximum Team Performance", "url": "https://merowing.info/posts/the-art-of-creating-a-great-developer-experience-empowering-your-team-for-success/", "published_at": null } ] posts Claim your blog
Back to merowing.info
Blog · corpus.blog/blogs/merowing.info/posts

merowing.info

merowing.info

2026

2025

2023

2022

2021

2020

2019

2017

2016

2015

2014

2013

2012

Undated