Dmitry Sharabin
banner
d12n.me
Dmitry Sharabin
@d12n.me
Apprentice Software Engineer under @lea.verou.me • Teacher • Microsoft Certified Expert & Trainer
Reposted by Dmitry Sharabin
Wow, style-observer is featured very prominently on today’s issue of #JavascriptWeekly!
javascriptweekly.com/issues/723

Thanks for the shoutout folks (for Color.js too!), @d12n.me and I are very humbled!
February 14, 2025 at 10:41 PM
Reposted by Dmitry Sharabin
🚀 🆕 style-observer: A robust solution for observing CSS property changes in JS.

Developed with @d12n.me’s help over the last month.

Made possible by the pioneering work of @bram.us, Artem Godin, @janeori.propjockey.io and many others!

Blog post: lea.verou.me/blog/2025/st...
Docs: observe.style
Style-observer: JS to observe CSS property changes, for reals • Lea Verou
I cannot count the number of times in my career I wished I could run JS in response to CSS property changes, regardless of what triggered them: media queries, user actions, or even other JS. Use cases...
lea.verou.me
February 12, 2025 at 3:03 PM
Brilliant talk by @wwwalkerrun. Can't recommend it more for those who are interested in development apps for iOS and Android with @NativeScript!

Nathan, all NativeScript community would appreciate if you can give us more such tasty content. Thank you! 🙏🏻
November 23, 2024 at 4:13 PM
📣 A couple of days ago @karger challenged me to build the Wordle Game with @mavoweb. Since I like challenges, now we have another app showcasing awesome Mavo features. 😅
It takes ~70 lines of HTML.

Play with it and tell us what you think:

#MadeWithMavo
November 23, 2024 at 4:13 PM
Wow! That was an amazing journey. Thank you, @twostraws, from the bottom of my heart for the incredible work you did by developing this course: it's exceptionally thought, professionally designed, and remarkably delivered. You are THE Teacher!

#100DaysOfSwiftUI is officially ✅!
November 23, 2024 at 4:13 PM
On day 98 of #100DaysOfSwiftUI, we finished building the wonderful SnowSeeker app. I learned a ton! Here are some highlights:

✓ with .horizontalSizeClass and .dynamicTypeSize we can make our app look good on every device regardless of its size

👇🧵
November 23, 2024 at 4:12 PM
On day 97 of #100DaysOfSwiftUI, we started building our app.
I solidified the knowledge I already had and also learned how to force the stacked navigation view style on iPhones.

The declarative nature of SwiftUI plus elements of functional programming really shines together.😍
November 23, 2024 at 4:12 PM
After taking some time to reflect a bit on projects 16–18 (day 95 of #100DaysOfSwiftUI), I'm back on track

On day 96 we began working on our last big project. While getting ready for it:
✓ I learned how to work with side by side views in SwiftUI

👇🧵
November 23, 2024 at 4:12 PM
On day 93 of #100DaysOfSwiftUI,

✓ we learned how to position SwiftUI views, either absolutely or relatively, and recalled why the order of modifiers matters.

✓ We deep-dived into different coordinates the GeometryReader provides (global, local, and named).

👇
November 23, 2024 at 4:12 PM
On day 92 of #100DaysOfSwiftUI, I learned:

✓ how layout and alignment work in SwiftUI
✓ how to work with alignment guides and create a custom one.

I'm glad we have technique projects in this course—they help understand the “magic” of SwiftUI. 🤫 It's not magic. 😉
November 23, 2024 at 4:12 PM
On day 90 of #100DaysOfSwiftUI, we finished building the Flashzilla app. We added haptics to some actions, improved the app's a11ty, fixed some bugs, and let users add/remove and load/save their deck of flashcards.

I'm looking forward to some more challenges to solve tomorrow.
November 23, 2024 at 4:12 PM
On day 89 of #100DaysOfSwiftUI, we colored our cards as user swipes and made the UI accessible for users with color blindness, added a counting down timer that stops when the app is inactive, improved the app logic and UX.

I'm gaining a lot of crucial knowledge building the app!
November 23, 2024 at 4:12 PM
On day 88 of #100DaysOfSwiftUI, we began building the UI of our app: we designed a stack of cards that can be dragged by a user. While being dragged, cards are being rotated, offset, and disappear (or move back to the stack). I'm impressed with how little code it demands! 😍
November 23, 2024 at 4:12 PM
On day 87 of #100DaysOfSwiftUI, I learned how to:

✓ work with timer: create, connect to it, receive values it publishes with .onRecive, and react to them

✓ react to an app's state changes: when it's active, inactive, or in the background
👇
November 23, 2024 at 4:12 PM
On days 86 of #100DaysOfSwiftUI, I learned:
✓ what gestures SwiftUI supports and how to work with them (perform actions depending on a state of a gesture, prioritize gestures, tell SwiftUI that gestures trigger simultaneously or in sequence)

👇
November 23, 2024 at 4:12 PM
On day 84 of #100DaysOfSwiftUI, we added:

✓ the ability to store and load data with UserDefaults and performed small refactoring to make the code more professional and error-proof

✓ a context menu to a QR code and learned how to show, update, and save it effectively.

👇
November 23, 2024 at 4:12 PM
On day 83 of #100DaysOfSwiftUI, I learned how to:

✓ generate a QR code using the CoreImage framework (specifically the qrCodeGenerator() filter). I was surprised to know that, in case of an error, we can fall back to an empty image simply by writing UIImage(). 🤯

👇
November 23, 2024 at 4:12 PM
On day 82 of #100DaysOfSwiftUI, we began putting the new techniques into action. We built the tab bar that shares the same data across all its tabs using EnvironmentObject. TIL how to dynamically filter a SwiftUI list using the filter() method and a computed property. FP 🚀
November 23, 2024 at 4:12 PM
On day 81 of #100DaysOfSwiftUI, I learned how to:
✓ create context menus (what limitations they have and why)
✓ work with local notifications: request permission and schedule notification
✓ add packages (dependencies) in Xcode.

All the required techniques for the project ✅.
November 23, 2024 at 4:12 PM
Since I'm a bit off track (and luckily have some free time), I decided to complete days 79 & 80 of #100DaysOfSwiftUI in one shot. TIL:
✓ how to create tabs with TabView and tabItem() and programmatically control them

1/3
November 23, 2024 at 4:12 PM
On day 76 of #100DaysOfSwiftUI, I worked heavily with VoiceOver on iPhone to make the Cupcake Corner, iExpense, and Moonshot apps fully accessible. A valuable experience, I must say.

That was the last day tagged with “New.” So I can take a break and work on my project. 😊
November 23, 2024 at 4:12 PM
On day 75 of #100DaysOfSwiftUI, I fixed some accessibility issues in the previously built projects: Guess the Flag, Word Scramble, and Bookworm.

It's amazing how little we should do to make our apps accessible to a much bigger number of people!
November 23, 2024 at 4:12 PM
Day 74 of #100DaysOfSwiftUI. New technique project dedicated to a11y. From my pov, the toughest topic. I'm amazed how much effort Apple does in this direction (it's enough to look at the API they provide). Hats off. I also understand why so many folks fail with it. It is hard!
November 23, 2024 at 4:12 PM
Because of my business trip, I could work through the challenges for the Bucket List app, not yesterday but today. And now I can confirm that day 73 of #100DaysOfSwiftUI is officially closed: all the challenges are done and the final test is passed. 🥳
November 23, 2024 at 4:12 PM
I was hoping Paul would explain to us the MVVM design pattern. And he did. And of course, in an easy-to-follow and approachable way. It happened on day 72 of #100DaysOfSwiftUI. Yay!
That was a wonderful last day when we work on the BucketList project. The challenges are to come.
November 23, 2024 at 4:12 PM