Firebase
Everything you need to know about Firestore COUNT(*)
Being able to count the number of documents in a collection or a query is something that Firestore users have been asking us for ever since we first launched Firestore.
The good news is - it's finally here. David walks you through how it works.
Oh, and if you think his 4 minute video is too long, why don't you check out the YouTube short I created, it's a full 75% shorter.
Computer History
Historical Source Code That Every Developer Should See
Did it ever occur to you that GitHub is like a Wayback Machine, but for code? In this article, Shalitha Suranga shares a couple of code bases that can be consider historical - for example, the demo source code for the original version of the World Wide Web.
Swift
async/await support for Combine’s sink and map
Can you combine async/await and Combine? Why yes, you can - Toomas shows how to implement an async/await-enabled sink
subscriber, and an async/await-enabled map
operator.
If you're curious to learn more, check out my book - it contains several chapters that look at this in more detail.
SwiftUI
How to Update or Refresh a Widget?
When developing widgets, we want to make sure they always display the most up-to-date information. I've got plenty of widgets on my home screen(s), and there are a few that don't seem to update as often as I would like them to.
In this article, Lee Kah Seng explains when and how to refresh your widgets and why they need to play by the rules.
Software Engineering
Inevitable Complexity
“The funny thing is, I have no memory of writing this code.”
I often feel like that, too. Ryan has some excellent tips for how to deal with this: essentially, treat your project as if you were working as part of a team! So if you feel writing unit tests is a waste of time, or not using proper modularisation gives you a competitive edge ("I am faster if I don't modularise my code"), maybe think twice. Your future self will thank you.
Besides, Ryan's app FoodNoms which he talks about in this blog post, is a really nice food tracking app. So - if you want to make good on your New Year's resolution to eat more healthily, why not check it out? Ryan was kind enough to set up a discount code which will give you $10 off the first year for new subscriptions. That's $19.99 instead of $29.99. Use this link to claim the discount on your phone.
Semantic Versioning
Someone recently asked about how to increase an app's version with new releases, and Tunde recommended checking out Semantic Versioning.
It might look overly detailed at first, but I found their rationale for using SemVer very compelling:
This is not a new or revolutionary idea. In fact, you probably do something close to this already. The problem is that “close” isn’t good enough.
So if you want to avoid your version numbers being useless, give this a read.
Productivity
What It Takes to Put Your Phone Away
Both Android and iOS have built-in mechanisms that are intended to help you reduce the time you spend on your phone, and there is a great number of third-party services that aim to do the same, but with different takes.
In this article, the author shares how they became a more conscious user of technology by following Cal Newport's one-month digital detox. As developers, we are at our computers most of the day, and most of us have our phones nearby most of the time. We are both creators and users of the technology.
I am curious - how do you manage to disconnect? Do you have a personal phone, and a "for-work" phone? Let me know by hitting the reply button in your email app!
Tools
Keystroke Pro and Cursor Pro
Need to highlight your cursor, or show keystrokes on screen? Check out Martin’s tools - they look fantastic and will make your next video stand out.
Suddenly, AppCode Is Dead. Now What?
I've been using AppCode a lot for developing my own apps in the past, but switched back to almost exclusively using Xcode when I joined the Firebase team: using the same tools that the majority of other developers use puts me in a much better position to understand the challenges they're facing when using our SDKs. It also makes it easier for my audience to follow what's happening on screen when I demonstrate something.
Jon Reid looks at some of the reasons why AppCode struggled with catching up.
In a race to keep up, you are always going to be behind.
I will say, though, that I really miss(ed) AppCode's refactoring capabilities, and do hope that Apple and the maintainers of the Swift Extension for Visual Studio Code keep on adding more features.
Conferences
Do iOS Conference: All videos now available on YouTube
I really enjoyed Do iOS in Amsterdam last year. Besides all the great conversations I had with many of the attendees, I was blown away by the quality of the talks.
If you weren't able to attend, you can now watch all the talks online - the A/V team did an amazing job at recording and editing them all.
Comment
Today, I am thrilled to announce that my book, Asynchronous Programming with SwiftUI and Combine has been published. You can buy the eBook now, and pre-order the paper book for an estimated shipping date at the end of January.
Writing (and actually publishing) a book has always been one of the things on my bucket list, but no-one quite prepares you for the amount of grit and persistence that is required to push through and deliver.
Just today, I received the shipping notification for my author copies - a few more days, and I will hold the results of my efforts in my very own hands. Really looking forward to this.
But much more than that, I am looking forward to seeing the book being read by the developer community. It's an exhilarating feeling - will they like what I wrote? Will the book be useful in their daily work? Will it inspire people to create something they thought wasn't possible before? I hope to find out! If you bought the book, I would love to hear your feedback - just DM me or send an email.
Peter đź“š
(*) a friend once sent me this link, quoting "#34: Writing a technical book takes between a year and two.". He wasn't that far off.