Sign in

Dmitry Sharabin

@d12n.me
41 followers 63 following 129 posts

Apprentice Software Engineer, mentored by @lea.verou.me • Teacher • Microsoft Certified Expert & Trainer

PostsRepliesMedia
Reposted by Dmitry Sharabin
Lea Verou, PhD @lea.verou.me · 14/02/2025
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!
510512
Reposted by Dmitry Sharabin
Lea Verou, PhD @lea.verou.me · 12/02/2025
🚀 🆕 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
lea.verou.me
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...
627259
Dmitry Sharabin @d12n.me · 28/09/2022
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! 🙏🏻
000
Dmitry Sharabin @d12n.me · 01/02/2022
📣 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
000
Dmitry Sharabin @d12n.me · 30/01/2022
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 ✅!
000
Dmitry Sharabin @d12n.me · 28/01/2022
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 👇🧵
000
Dmitry Sharabin @d12n.me · 27/01/2022
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.😍
000
Dmitry Sharabin @d12n.me · 26/01/2022
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 👇🧵
000
Dmitry Sharabin @d12n.me · 22/01/2022
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). 👇
000
Dmitry Sharabin @d12n.me · 21/01/2022
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. 😉
000
Dmitry Sharabin @d12n.me · 19/01/2022
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.
000
Dmitry Sharabin @d12n.me · 18/01/2022
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!
000
Dmitry Sharabin @d12n.me · 17/01/2022
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! 😍
000
Dmitry Sharabin @d12n.me · 17/01/2022
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 👇
000
Dmitry Sharabin @d12n.me · 16/01/2022
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) 👇
000
Dmitry Sharabin @d12n.me · 13/01/2022
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. 👇
000
Dmitry Sharabin @d12n.me · 12/01/2022
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(). 🤯 👇
000
Dmitry Sharabin @d12n.me · 11/01/2022
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 🚀
000
Dmitry Sharabin @d12n.me · 10/01/2022
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 ✅.
000
Dmitry Sharabin @d12n.me · 09/01/2022
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
000
Dmitry Sharabin @d12n.me · 26/12/2021
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. 😊
000
Dmitry Sharabin @d12n.me · 25/12/2021
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!
000
Dmitry Sharabin @d12n.me · 24/12/2021
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!
000
Dmitry Sharabin @d12n.me · 24/12/2021
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. 🥳
000
Dmitry Sharabin @d12n.me · 22/12/2021
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.
000
Dmitry Sharabin @d12n.me · 21/12/2021
On day 71 of #100DaysOfSwiftUI, I learned how to fetch data from Wikipedia and present them to a user in a friendly way. I was surprised to know that we can use “+” to add text views together to apply different kinds of formatting to them, for example. 🤯 Awesome! 😎
000
Dmitry Sharabin @d12n.me · 20/12/2021
My main takeaways from day 70 of #100DaysOfSwiftUI: — add a static example property with sample data to custom types; — write your optimized comparison functions in Equatable structs if needed; 1/3
000
Dmitry Sharabin @d12n.me · 19/12/2021
Day 69 of #100DaysOfSwiftUI was quite brief. However, it was full of new concepts (like other days). It introduced two new iOS frameworks: MapKit and LocalAuthentication. I was waiting for a day when Paul teach us to use Touch ID and Face ID with SwiftUI. And it happened. Yay! 🥳
000
Dmitry Sharabin @d12n.me · 18/12/2021
As Paul said, day 68 of #100DaysOfSwiftUI was easy.🥳 I learned how to: – make custom types conform to the Comparable protocol; – write data to the documents directory (I also wrote an extension for FileManager to be able to load and decode data); – switch view states with enums.
000
Dmitry Sharabin @d12n.me · 15/12/2021
On day 65 of #100DaysOfSwiftUI, we began to bring the Instafilter app to live by putting into practice all the technical aspects we covered in the previous days: – we built our basic UI, – let the user pick an image from their photo library, – and applied the sepia filter to it.
000
Dmitry Sharabin @d12n.me · 14/12/2021
Even though the stuff introduced on day 64 of #100DaysOfSwiftUI was tough, @twostraws did an incredible job to make it understandable. 👏🏻 I learned how to bridge UIKit and SwiftUI via coordinators and delegates and to save images to the user's photo library (with permission).
000
Dmitry Sharabin @d12n.me · 13/12/2021
Day 63 of #100DaysOfSwiftUI was exciting and full of new concepts I've never heard about. And I loved it! 😍 I learned about the different types of images we can use in our SwiftUI apps: UIImage, CGImage, and CIImage. 1/2
000
Dmitry Sharabin @d12n.me · 12/12/2021
Day 62 of #100DaysOfSwiftUI. A new project. And it promises to be a tough one. We are to go beyond SwiftUI and learn to connect Apple's other frameworks to SwiftUI. TIL about the confirmationDialog() modifier, how to use the onChange() modifier to respond to state changes.
000
Dmitry Sharabin @d12n.me · 09/12/2021
Day 59 of #100DaysOfSwiftUI (project 12 & test) is ✅. It was beneficial to challenge my understanding of Core Data. I could manage it with honor (at least I feel this way). Yay! 🥳 Here is my solution (I worked with the generic version of FilteredList):
000
Dmitry Sharabin @d12n.me · 08/12/2021
Day 58 of #100DaysOfSwiftUI brought much new Core Data stuff to the table. Not elementary stuff, I must admit. But Paul does a great job cushioning the blow. I learned how to (dynamically) filter FetchRequest using NSPredicate and how to establish relationships between entities.
000
Dmitry Sharabin @d12n.me · 07/12/2021
On day 57 of #100DaysOfSwiftUI, I continued my deep dive into Core Data to explore how it works under the hood. And thanks to @twostraws, for now, everything looks manageable. Will see how it goes. 😜 I also learned about the Hashable protocol and how it's related to \.self.
000
Dmitry Sharabin @d12n.me · 05/12/2021
On day 55 of #100DaysOfSwiftUI, I learned how to: — sort fetch requests with SortDescriptor and delete from a Core Data fetch request — pop a NavigationLink programmatically. I also added a view for book details where a book's rating can't be changed (thanks to constant binding).
000
Dmitry Sharabin @d12n.me · 04/12/2021
On day 54 of #100DaysOfSwiftUI, I — built my own Core Data model, — learned how to develop a reusable and customizable rating component, — solidified the skills I've learned so far and put into practice the new ones. Views composition in SwiftUI is a breeze. I love it! 😍
000
Dmitry Sharabin @d12n.me · 03/12/2021
Day 53 of #100DaysOfSwiftUI—an overview day. There was a ton to get familiar with: — @.Binding to expose properties — TextEditor for multi-line text input — CoreData (🤯) with entities & attributes, NSPersistentContainer, @.FetchRequest, FetchedResults, and \.managedObjectContext
000
Dmitry Sharabin @d12n.me · 02/12/2021
Day 52 of #100DaysOfSwiftUI — the Cupcake Corner project and all the proposed challenges are done. 🥳 I really enjoyed refactoring the Order class into a wrapper around the Order struct (a called it Model). It was such a useful experience to have. Thank you @twostraws. 🙏🏻
000
Dmitry Sharabin @d12n.me · 01/12/2021
On day 51 of #100DaysOfSwiftUI, I added logic to the Cupcake Corner app & learned: — that to make async func work inside a button action closure we need to wrap it with Task { }; — how to send encoded codable data over the internet; — about useful service .
000
Dmitry Sharabin @d12n.me · 30/11/2021
Today is a halfway day of this amazing journey called #100DaysOfSwiftUI. 🥳 I'm so grateful to @twostraws for every piece of it. 🙏🏻 Today I finished building the UI for the Cupcake Corner app (project 10). Looking forward to adding some logic to it tomorrow.
000
Dmitry Sharabin @d12n.me · 29/11/2021
On day 49 of #100DaysOfSwiftUI, there was a lot to study. I learned how to: — make classes with published properties conform to Codable; — receive codable data from the internet with URLSession; — work with AsyncImage and handle its phases; — validate and disable forms.
000
Dmitry Sharabin @d12n.me · 20/11/2021
✅Day 44 of #100DaysOfSwiftUI. I learned: – stride(from:to:by:), CGAffineTransform; – the easy way to enable “even-odd rule” with FillStyle struct; – the way to get fancy borders and fills with ImagePaint; – how to pass heavy lifting drawing operations to Metal with drawingGroup.
000
Dmitry Sharabin @d12n.me · 17/11/2021
Day 43 of #100DaysOfSwiftUI kicked off another technique project. Specifically, today's topic was about Core Graphics (CG) in SwiftUI. Computer graphics, in general, is my life-long love. It's funny how one can be passionate about something they could hardly ever master. 😅
000
Dmitry Sharabin @d12n.me · 14/11/2021
On day 40 of #100DaysOfSwiftUI, I learned: 💡 how generics help make code reusable; 💡 how correctly decode dates in Codable data using dateDecodingStrategy; 💡 why it could be useful to extend the ShapeStyle protocol; 💡 and how to force dark mode inside an app.
000
Dmitry Sharabin @d12n.me · 13/11/2021
On day 39 of #100DaysOfSwiftUI I – learned about lazy stacks and grids; – got to know GeometryReader, ScrollView, and NavigationLink; – found out how to work with hierarchical Codable data. Can't wait to apply this new knowledge to the Moonshot project.
000
Dmitry Sharabin @d12n.me · 09/11/2021
Day 37 of #100DaysOfSwiftUI is ✅. What a great experience I'm gaining by taking part in this splendid course by @twostraws! Another app is built with such little code but with lots of useful techniques. We worked with ObservedObject, Published, sheet, UserDefaults, and more. 😍
000
Dmitry Sharabin @d12n.me · 08/11/2021
There was a lot to learn on day 36 of #100DaysOfSwiftUI: sharing SwiftUI state, showing and hiding views, deleting list items, storing user settings with UserDefaults, and archiving Swift objects with Codable. Project 7 is expected to be very interesting. I'm excited! 🤩
000
Dmitry Sharabin @d12n.me · 05/11/2021
I adore learning something new.🤓 And #100DaysOfSwiftUI gives me a lot of food for thought. Day 33 is not an exception. I got to know transitions, learned how to control the animation stack, animate gestures, and build custom transitions using ViewModifier. That was great! 😍
000