{"version":"https://jsonfeed.org/version/1","title":"Micro.blog - Brian Ganninger","home_page_url":"https://micro.blog","feed_url":"https://micro.blog/posts/bgannin","_microblog":{"about":"https://micro.blog/about/api","id":"9565","username":"bgannin","bio":"snarky bastard, code monkey, UI nerd, gamer, shutterbug","pronouns":"they/them","is_following":false,"is_you":false,"following_count":18,"discover_count":0},"author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://micro.blog/bgannin/avatar.jpg"},"items":[{"id":"30873461","content_html":"<p>The modern CLLocationManager (CLLocationMonitor, WWDC 2023): <a href=\"https://bgannin.micro.blog/2024/02/12/the-modern-cllocationmanager.html\">bgannin.micro.blog</a></p>","summary":"","url":"https://bgannin.micro.blog/2024/02/12/the-modern-cllocationmanager.html","date_published":"2024-02-12T11:23:58+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2024-02-12 11:23","date_timestamp":1707737038,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":["https://mastodon.social/@bgannin/111918254646509923"]}},{"id":"4029096","content_html":"<p>There’s a simple way to clean out your LinkedIn feed if you’re not into everybody’s updates. Here you go: <a href=\"https://www.linkedin.com/feed/following/\">www.linkedin.com/feed/foll…</a> Enjoy!</p>\n","summary":"","url":"https://bgannin.micro.blog/2019/06/13/theres-a-simple.html","date_published":"2019-06-14T01:38:07+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2019-06-14 01:38","date_timestamp":1560476287,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"3857111","content_html":"<p>A quick primer on recursion: <a href=\"https://bgannin.micro.blog/2019/06/02/a-quick-primer.html\">bgannin.micro.blog</a></p>","summary":"","url":"https://bgannin.micro.blog/2019/06/02/a-quick-primer.html","date_published":"2019-06-02T20:33:00+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2019-06-02 20:33","date_timestamp":1559507580,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"3285156","content_html":"<p>I just encountered a 400 line method. How it grew to this size and what it does make sense but that’s not tenable. Time to break it apart into readable, logical chunks for future maintainers. And then add the new feature 😉 #ProgrammingTips</p>\n","summary":"","url":"https://bgannin.micro.blog/2019/04/24/i-just-encountered.html","date_published":"2019-04-24T19:16:48+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2019-04-24 19:16","date_timestamp":1556133408,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"3163370","content_html":"<p>When debugging or extending a particular area of code (like a file/object) I strive for a negative line change by removing unused methods and updating to modern styles and practices. Better for readability and binary both when done properly🤞#ProgrammingTips</p>\n","summary":"","url":"https://bgannin.micro.blog/2019/04/15/when-debugging-or.html","date_published":"2019-04-16T04:33:25+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2019-04-16 04:33","date_timestamp":1555389205,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"2047776","content_html":"<p>Day 15: #ProjectUmma - explored watchOS APIs and restrictions. Started on app + extension, got assets together and the UI skeleton in place to mock up and test experience. Will build out fully and start wiring up next. 📱⌚️ #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2019/01/27/day-projectumma-explored.html","date_published":"2019-01-27T10:54:34+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2019-01-27 10:54","date_timestamp":1548586474,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1843054","content_html":"<p>Day 14: #ProjectUmma - built out a Today widget for complete session management from there as well (meets and exceeds 3D Touch actions &amp; intents.) Only extension/destination left for MVP is watchOS. 📱 #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2019/01/12/day-projectumma-built.html","date_published":"2019-01-12T23:18:21+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2019-01-12 23:18","date_timestamp":1547335101,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1763814","content_html":"<p>Day 13: #ProjectUmma - Basic (v1) intents are properly donated and working as expected 🙌🎉 Works with the Shortcuts app, Siri, and Siri Suggestions, tested on device and data confirmed in HealthKit. 🗣📱 #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2019/01/07/day-projectumma-basic.html","date_published":"2019-01-08T07:24:15+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2019-01-08 07:24","date_timestamp":1546932255,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1761168","content_html":"<p>I <em>think</em> my #100DaysOfCode strategy for #ProjectUmma will be 25 days for prototyping and MVP, 50 days for UI/UX explorations, and then 25 days to prep &amp; ship 1.0 🤞📱</p>\n","summary":"","url":"https://bgannin.micro.blog/2019/01/07/i-think-my.html","date_published":"2019-01-08T03:38:03+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2019-01-08 03:38","date_timestamp":1546918683,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1748234","content_html":"<p>Day 12: #ProjectUmma - Siri intents are built out; wiring them up tomorrow when time allows. Same with donating them which will really unlock some use cases like detected recurring visits. 🗣📱⌚️ #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2019/01/07/day-projectumma-siri.html","date_published":"2019-01-07T10:16:51+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2019-01-07 10:16","date_timestamp":1546856211,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1745841","content_html":"<p>Looking for Xcode’s Siri intents that are based on your definition file while working with Swift? 😕 Use “Generated Interfaces” in the <em>Related Items</em> menu from the jump bar’s left side and you’ll find them in AppName-Swift.h 📖 #ProgrammingTips</p>\n","summary":"","url":"https://bgannin.micro.blog/2019/01/06/looking-for-xcodes.html","date_published":"2019-01-07T05:34:22+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2019-01-07 05:34","date_timestamp":1546839262,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1732665","content_html":"<p>Day 11: #ProjectUmma - built persistence for the data model, including coordinated access (hat tip to <a href=\"https://micro.blog/atomicbird\">@atomicbird</a>’s article) 📦🤝 Tested with app lifecycle and 3D touch actions on device. Siri intents are up next. 🗣📱 #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2019/01/06/day-projectumma-built.html","date_published":"2019-01-06T09:22:16+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2019-01-06 09:22","date_timestamp":1546766536,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1668630","content_html":"<p>Day 10: #ProjectUmma - wired up 3D touch actions, started planning out shared data for app + extensions and also the Siri actions structure. Looking forward to bringing it all together over the next few days. 🗣📱📦 #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2019/01/02/day-projectumma-wired.html","date_published":"2019-01-02T09:12:24+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2019-01-02 09:12","date_timestamp":1546420344,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1607192","content_html":"<p><a href=\"https://micro.blog/hartlco\">@hartlco</a> Congrats, can't wait to try it out!</p>\n","url":"https://micro.blog/bgannin/1607192","date_published":"2018-12-29T07:17:56+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-12-29 07:17","date_timestamp":1546067876,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"1593348","content_html":"<p><a href=\"https://micro.blog/uliwitness\">@uliwitness</a> I've noticed iBooks syncing across devices is quite flaky. Randomly my entire Mac collection (not on Mojave) will delete over two dozen titles because they aren't on my phone as well. 🤬</p>\n","url":"https://micro.blog/bgannin/1593348","date_published":"2018-12-28T06:51:19+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-12-28 06:51","date_timestamp":1545979879,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"1580396","content_html":"<p>Day 9: #ProjectUmma - added 3D touch shortcuts for iOS home screen to start/stop session, view history; tested all aspects on 📱 🎉 Next up is wiring them up with storyboard navigation and state responses 🤞 #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2018/12/27/day-projectumma-added.html","date_published":"2018-12-27T08:01:17+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-12-27 08:01","date_timestamp":1545897677,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1579901","content_html":"<p>TIL defining 3D touch application shortcuts doesn’t allow you to control which side the icon appears on… and it’s a bit random between first and third party apps alike (typically on the left but not guaranteed) #iOS #ProgrammingTips</p>\n","summary":"","url":"https://bgannin.micro.blog/2018/12/27/til-defining-d.html","date_published":"2018-12-27T06:38:32+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-12-27 06:38","date_timestamp":1545892712,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1566881","content_html":"<p>Day 8: #ProjectUmma - 🎄- Integrated HealthKit, added the access prompt, wired up data entry to health store entries 🙌 Technically this means the MVP is ✅ Now I can start to branch out into 3D Touch, Siri, and then watchOS! #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2018/12/26/day-projectumma-integrated.html","date_published":"2018-12-26T06:28:39+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-12-26 06:28","date_timestamp":1545805719,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1542173","content_html":"<p>Day 7 (finally): #ProjectUmma - built a functional UI to enter new data, wired up data model, confirmed calculations for a session 👍 Next up is persistence and presentation for any entered sessions. Ideas list continues to grow, heh. 🗣📱⌚️ #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2018/12/24/day-finally-projectumma.html","date_published":"2018-12-24T08:58:18+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-12-24 08:58","date_timestamp":1545641898,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1439505","content_html":"<p>Needed a temp icon for #ProjectUmma so in true DIY (develop it yourself) fashion I made this lovely little number. Not only am I on trend but clearly design is my future calling 🤪 #BetterThanBlank</p>\n\n<p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fbgannin.micro.blog%2Fuploads%2F2018%2F7796fb3407.jpg\" width=\"138\" height=\"140\" alt=\"\" loading=\"lazy\"></p>\n","summary":"","url":"https://bgannin.micro.blog/2018/12/16/needed-a-temp.html","date_published":"2018-12-17T04:28:32+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-12-17 04:28","date_timestamp":1545020912,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1439417","content_html":"<p>Day 6: #ProjectUmma - implemented basic logic in a shared framework 📦 (data types, models, management) and started on a super simple UI to test it all out. Once that’s all verified in-memory I’ll move on to storage and retrieval. 🗣📱⌚️ #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2018/12/16/day-projectumma-implemented.html","date_published":"2018-12-17T04:20:07+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-12-17 04:20","date_timestamp":1545020407,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1339506","content_html":"<p><a href=\"https://micro.blog/joec\">@joec</a> Great UX + implementation 👏</p>\n","url":"https://micro.blog/bgannin/1339506","date_published":"2018-12-10T15:19:47+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-12-10 15:19","date_timestamp":1544455187,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"1339458","content_html":"<p>Day 5: #ProjectUmma - Temporary branding/iconography in place along with basic app navigation structure. Planning out framework-apps-extensions balance currently before diving in on logic side.  🗣📱⌚️ #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2018/12/10/day-projectumma-temporary.html","date_published":"2018-12-10T15:17:28+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-12-10 15:17","date_timestamp":1544455048,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1321602","content_html":"<p>Day 4: #ProjectUmma - pivoting to a new one for the time being, putting AR explorations (Appa) on backburner for the moment after exploring use cases IRL. Going for a well rounded app focused on streamlining some health data entry. Bootstrapping currently. 🗣📱⌚️ #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2018/12/08/day-projectumma-pivoting.html","date_published":"2018-12-09T07:38:14+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-12-09 07:38","date_timestamp":1544341094,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1280184","content_html":"<p>Day 3: #ProjectAppa - migrated over the sample #ARKit plane detection logic while formatting and reviewing it to ensure I understand concepts. Will add in ability to prefer horizontal visualization only. So far, so good but the #SceneKit ramp awaits… 🤞🤳 #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2018/12/05/day-projectappa-migrated.html","date_published":"2018-12-06T07:14:56+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-12-06 07:14","date_timestamp":1544080496,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1250325","content_html":"<p>Day 2: #ProjectAppa - learned about and added a simple Siri intent for donating direct launch at common test locations. 🗣 Fixed iPhone X series inset issue. Planning out how I’d like to do the plane detection/origin prototype UI during my evenings. 🤳 #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2018/12/03/day-projectappa-learned.html","date_published":"2018-12-04T07:23:54+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-12-04 07:23","date_timestamp":1543908234,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1235203","content_html":"<p>Day 1: #ProjectAppa - #ARKit research started with sample code and project template installed on device. Settings bundle w/ debug controls added. Copious warnings enabled. Plane detection reimplementation in-progress to ensure I understand all the moving parts. 🤳 #100DaysOfCode</p>\n","summary":"","url":"https://bgannin.micro.blog/2018/12/02/day-projectappa-arkit.html","date_published":"2018-12-03T06:58:04+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-12-03 06:58","date_timestamp":1543820284,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"1099802","content_html":"<p>I’ve said it before and I’ll say it again: \n     guard let varName = value else { return }\nis my jam. #ProgrammingTips</p>\n","summary":"","url":"https://bgannin.micro.blog/2018/11/20/ive-said-it.html","date_published":"2018-11-20T21:51:41+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-11-20 21:51","date_timestamp":1542750701,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"949991","content_html":"<p><a href=\"https://micro.blog/manton\">@manton</a> Great recommendation, thanks!</p>\n","url":"https://micro.blog/bgannin/949991","date_published":"2018-10-09T09:56:24+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-10-09 09:56","date_timestamp":1539078984,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"694652","content_html":"<p><a href=\"https://micro.blog/ben\">@ben</a> I've noticed persistent inconsistencies between it and Apple's Weather, the latter being more accurate. I still prefer CARROT's presentation (Today widget, Watch complication) but want precision… 🤷‍♂️</p>\n","url":"https://micro.blog/bgannin/694652","date_published":"2018-07-06T20:57:45+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-07-06 20:57","date_timestamp":1530910665,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"692751","content_html":"<p>@rishabh I wish I could say I found a UI for doing it but it was just persistent rejection on each visit until there was nothing left. Dedication to the cause essentially after it suggested “Blue Lives Matter” as a topic to follow. I’m… not a fan of that to say the least.</p>\n","url":"https://micro.blog/bgannin/692751","date_published":"2018-07-06T03:13:13+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-07-06 03:13","date_timestamp":1530846793,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"609070","content_html":"<p><a href=\"https://micro.blog/brentsimmons\">@brentsimmons</a> The same reason iPhoto used Objective-C++ to ameliorate ObjC message send ‘cost’… hubris 😬</p>\n","url":"https://micro.blog/bgannin/609070","date_published":"2018-05-31T20:18:20+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-05-31 20:18","date_timestamp":1527797900,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"609063","content_html":"<p><a href=\"https://micro.blog/brentsimmons\">@brentsimmons</a> Pretty sure it’s still carrying around a custom threading model on top of pthreads 🤮🤫</p>\n","url":"https://micro.blog/bgannin/609063","date_published":"2018-05-31T20:14:17+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-05-31 20:14","date_timestamp":1527797657,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"608862","content_html":"<p><a href=\"https://micro.blog/Bruce\">@Bruce</a> <a href=\"https://micro.blog/brentsimmons\">@brentsimmons</a> i meant… completely custom mess under the hood </p>\n","url":"https://micro.blog/bgannin/608862","date_published":"2018-05-31T19:31:07+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-05-31 19:31","date_timestamp":1527795067,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"608854","content_html":"<p><a href=\"https://micro.blog/Bruce\">@Bruce</a>  <a href=\"https://micro.blog/brentsimmons\">@brentsimmons</a> I wouldn’t use Photos as a bellwether for platform API direction, it’s always been a completely mess under the hood. I’ve got the scars 😉</p>\n","url":"https://micro.blog/bgannin/608854","date_published":"2018-05-31T19:26:41+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-05-31 19:26","date_timestamp":1527794801,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"606028","content_html":"<p><a href=\"https://micro.blog/manton\">@manton</a> Thanks for building a great alternative to the gardens. I have a feature request for Discover: ability to filter media/text/combined (ala Tweetbot). Increases density of desired content, especially if text search is present too.</p>\n","url":"https://micro.blog/bgannin/606028","date_published":"2018-05-30T20:18:58+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-05-30 20:18","date_timestamp":1527711538,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"597577","content_html":"<p><a href=\"https://micro.blog/curt\">@curt</a> There’s a location in Mountain View on Castro too. One of my lunch go-tos. </p>\n","url":"https://micro.blog/bgannin/597577","date_published":"2018-05-27T17:25:31+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-05-27 17:25","date_timestamp":1527441931,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"526894","content_html":"<p><a href=\"https://micro.blog/uliwitness\">@uliwitness</a> Is the protagonist a moose? 😂</p>\n","url":"https://micro.blog/bgannin/526894","date_published":"2018-05-01T17:34:58+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-05-01 17:34","date_timestamp":1525196098,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"503061","content_html":"<p><a href=\"https://micro.blog/macgreg\">@macgreg</a> I upgraded from an AirPort Extreme and Time Capsule to a Velop mesh network (3 node base set) and it was a 3x to 5x improvement with great coverage unlike before. A bit pricey but worth the investment IMHO.</p>\n","url":"https://micro.blog/bgannin/503061","date_published":"2018-04-22T10:42:46+00:00","author":{"name":"Brian Ganninger","url":"https://about.me/bgannin","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fmicro.blog%2Fbgannin%2Favatar.jpg","_microblog":{"username":"bgannin"}},"_microblog":{"date_relative":"2018-04-22 10:42","date_timestamp":1524393766,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}}]}