<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Viennarz Curtiz on Medium]]></title>
        <description><![CDATA[Stories by Viennarz Curtiz on Medium]]></description>
        <link>https://medium.com/@viennarzc?source=rss-21239e3431c6------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*-0Q466a8hxN3ieANB8CkUA.jpeg</url>
            <title>Stories by Viennarz Curtiz on Medium</title>
            <link>https://medium.com/@viennarzc?source=rss-21239e3431c6------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Wed, 10 Jun 2026 05:07:26 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@viennarzc/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Indie Dev Diaries: Shelf Life — my Shipaton sprint to App Store release]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://viennarzc.medium.com/indie-dev-diaries-shelf-life-my-shipaton-sprint-to-app-store-release-4fdcca0a5f37?source=rss-21239e3431c6------2"><img src="https://cdn-images-1.medium.com/max/896/1*LGJp5jx4no-0Eq80JZp5Uw.png" width="896"></a></p><p class="medium-feed-snippet">&#x1F44B; The Challenge</p><p class="medium-feed-link"><a href="https://viennarzc.medium.com/indie-dev-diaries-shelf-life-my-shipaton-sprint-to-app-store-release-4fdcca0a5f37?source=rss-21239e3431c6------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://viennarzc.medium.com/indie-dev-diaries-shelf-life-my-shipaton-sprint-to-app-store-release-4fdcca0a5f37?source=rss-21239e3431c6------2</link>
            <guid isPermaLink="false">https://medium.com/p/4fdcca0a5f37</guid>
            <category><![CDATA[revenuecat]]></category>
            <category><![CDATA[shipaton]]></category>
            <category><![CDATA[ios-development]]></category>
            <category><![CDATA[indiedev]]></category>
            <category><![CDATA[native-ios-development]]></category>
            <dc:creator><![CDATA[Viennarz Curtiz]]></dc:creator>
            <pubDate>Thu, 21 Aug 2025 08:29:48 GMT</pubDate>
            <atom:updated>2025-08-21T08:29:48.814Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[SwiftUI: How Far We’ve Come Since WWDC 2019]]></title>
            <link>https://viennarzc.medium.com/swiftui-how-far-weve-come-since-wwdc-2019-2cb24eaff58d?source=rss-21239e3431c6------2</link>
            <guid isPermaLink="false">https://medium.com/p/2cb24eaff58d</guid>
            <category><![CDATA[wwdc25]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[swiftui]]></category>
            <category><![CDATA[apple]]></category>
            <category><![CDATA[programming]]></category>
            <dc:creator><![CDATA[Viennarz Curtiz]]></dc:creator>
            <pubDate>Sun, 22 Jun 2025 11:57:00 GMT</pubDate>
            <atom:updated>2025-06-22T11:57:00.750Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*G8KwJ2vJwWGj-Edj" /><figcaption>Photo by <a href="https://unsplash.com/@nsobject?utm_source=medium&amp;utm_medium=referral">Artem Horovenko</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>🏁 Introduction</h3><p>I have been working mainly as an iOS Developer for years now.</p><p>I remember when SwiftUI dropped in <a href="https://youtu.be/psL_5RIBqnY"><strong>WWDC 2019</strong></a>, it felt like the future had arrived — declarative UI for Apple platforms. We were all mind-blown 🤯. But like many developers, I had questions. Would it replace UIKit? Could it handle production apps? Here’s what I’ve learned over the past 6 years.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FpsL_5RIBqnY%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DpsL_5RIBqnY&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FpsL_5RIBqnY%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/3ff34aa4aca2809782c0b4db3b5b8682/href">https://medium.com/media/3ff34aa4aca2809782c0b4db3b5b8682/href</a></iframe><h3>🍎 WWDC 2019: The First Impressions</h3><p>To be honest, during my early years working as an iOS Developer, I wasn’t really into checking out new APIs or eagerly waiting for WWDC. But guess what? Some folks in our local community were super excited about it.</p><p>I still remember watching that Craig Federighi <a href="https://youtu.be/psL_5RIBqnY?t=7675">presentation</a>. It was mind-blowing! They showed how little code you needed to build compared to UIKit. It was a total game-changer for me. and you can see a preview without running the whole app in the Simulator!</p><p>Writing code in the UIKit framework was so different.</p><h3>🗺️ Exploring SwiftUI and its Limitations</h3><p>I never really got to deeply explore SwiftUI from 2019 up until 2022, since most of our apps in our company use UIKit — Swift and Objective-C. Though I get to check on it once in a while, I usually check on the website <a href="https://www.hackingwithswift.com">HackingWithSwift</a> by Paul Hudson.</p><h3>🚢 First Production App with SwiftUI</h3><p>During the first quarter of 2022, we were going to have a ✨ new <strong>small-medium scale app project</strong>, and we in the iOS Dev team decided to use SwiftUI. I can’t remember how many times we encountered so many issues, frustrations, state management, and challenges in navigation, as it was not as good as when we used the <strong>Coordinator pattern</strong> with UIKit.</p><p>That was our fault, though, since we still had a surface level of knowledge of SwiftUI, and we were learning and building at the same time.</p><h3>📔 The Learning Curve</h3><p>While in UIKit we mostly use autolayouts, constraints, and anchors. In SwiftUI it is totally different as Views take up the available space.</p><p>Thankfully, in our iOS Dev team, we have experience in reactive programming as it is a core of SwiftUI.</p><p>We have to understand what are those Property Wrappers such as <em>@State, @Binding</em>, and more.</p><h3>💭 UIKit vs SwiftUI Mindset</h3><p>SwiftUI is r<strong>eactive and state-driven</strong>, declarative programming, the use of modifiers, view stacks, etc. <br>UIKit is imperative programming, manual state management ( unless you use libraries like RxSwift ), frames and constraints.</p><h3>🔭 Current View ( as of 2025 )</h3><p>SwiftUI has become my default framework for building personal apps, as it is cross-platform across Apple devices. Over the years, it has matured significantly, making it an excellent stack for medium-scale apps, particularly when developing for various Apple platforms.</p><p>For my personal projects, I mostly code directly in SwiftUI these days. Figma is still useful, but SwiftUI is my go-to for prototyping and quickly building apps that work on all Apple devices. This makes it easier to make changes and keep the development process moving forward.</p><p>However, SwiftUI still has certain limitations compared to UIKit. Assuming that you still support older iOS Versions, some features that are standard in UIKit, such as customizable textviews, scroll views missing delegation methods, and more that are not yet available in SwiftUI. <br>Thankfully, there is some interoperability between UIKit and SwiftUI to some extent.</p><p>Despite these gaps, SwiftUI continues to evolve, and its efficiency in cross-platform development makes it a powerful tool in my workflow.</p><h3><strong>Helpful Resources That Guided Me</strong></h3><p>Over the years, these resources helped me get through bugs, architecture questions, and best practices:</p><ul><li><a href="https://www.hackingwithswift.com/"><strong>Hacking with Swift </strong></a>— Paul Hudson’s hands-on SwiftUI tutorials are legendary. Paul breaks down SwiftUI concepts with practical, real-world examples. Great for both beginners and experienced developers.</li><li><a href="https://www.swiftbysundell.com"><strong>Swift by Sundell</strong></a> — Great insights into architecture and Swift best practices.</li><li><a href="https://developer.apple.com/documentation/swiftui"><strong>Apple’s SwiftUI Documentation</strong></a> — It got better year after year. I now actually read this before StackOverflow. <strong><em>Read the </em></strong><a href="https://developer.apple.com/design/human-interface-guidelines"><strong><em>Human Interface Guidelines!</em></strong></a></li><li><a href="https://www.kodeco.com"><strong>RayWenderlich.com</strong></a> — (Now Kodeco) for more structured courses.</li><li><a href="https://www.avanderlee.com/"><strong>SwiftLee — Antoine van der Lee</strong></a> — Antoine’s weekly posts helped me keep up with updates across the Apple ecosystem. His deep dives into Swift, Xcode tips, and architecture practices are consistently useful.</li><li><a href="https://www.udemy.com/course/ios-13-app-development-bootcamp/"><strong>Dr Angela Yu’s Courses</strong></a> — A solid, beginner-friendly course with a step-by-step approach. I often recommend it to junior devs or anyone new to Swift and SwiftUI.</li><li><a href="https://www.essentialdeveloper.com"><strong>Essential Developer</strong></a><strong> — </strong>These two really helped level up my mindset around iOS architecture, testing, and clean code. Even if not SwiftUI-specific, their focus on fundamentals translates well into declarative UI thinking.</li></ul><h3>🛣️ Looking Forward</h3><p>WWDC25 has a ton of exciting stuff to show off, but I’ve still got a lot to explore.</p><p>There’s this new Liquid Glass design language that looks really cool, and they’ve added 3D and spatial layout support for visionOS. They’ve also integrated 3D Swift Charts, which is awesome! Oh, and finally (wohoo!) they added rich text editing, a new WebView component, and major performance improvements for lists and scrolling. Lists used to be slow, but now they’re much faster. SwiftUI can now bridge scenes with UIKit/AppKit, there’s a new AssistiveAccess scene for accessibility, and they’ve deepened their RealityKit integration for immersive apps. These updates make it easier to create more immersive, performant, and visually stunning apps across all Apple platforms.</p><h3>📝 Conclusion</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ZM79OZ5Q1eLWFtJt" /><figcaption>Photo by <a href="https://unsplash.com/@alesnesetril?utm_source=medium&amp;utm_medium=referral">Ales Nesetril</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h4><strong>🌟 Reflecting on the SwiftUI Journey</strong></h4><p>Looking back at SwiftUI’s evolution since <strong>WWDC 2019</strong>, it’s clear how transformative these years have been. From initial excitement to practical challenges, the journey has been enlightening. SwiftUI’s declarative approach reshaped UI development, making it a new mindset.</p><p>Early days were filled with learning curves, including state management, property wrappers like<em> @State</em> and <em>@Binding</em>, and shifting from UIKit’s imperative style to SwiftUI’s reactive flow. By 2025, SwiftUI had matured, becoming a preferred choice for personal projects and cross-platform development, despite lingering limitations compared to UIKit.</p><h4>👩‍💻 Message to Developers and Aspiring Developers</h4><p>To all current and aspiring developers:</p><ul><li><strong>Embrace Change:</strong> The tech landscape evolves rapidly. Be open to new frameworks, technologies, and methodologies. Growth comes from adaptation.</li><li><strong>Continuous Learning:</strong> Don’t shy away from challenges. Every bug, every frustrating issue is a stepping stone to mastery.</li><li><strong>Community Matters:</strong> Engage with developer communities. Platforms like HackingWithSwift and others, WWDC sessions, and local meetups can be invaluable.</li><li><strong>Think Beyond Code:</strong> Understand design principles, user experience, and product thinking. Coding is just one part of building great apps.</li></ul><h4>🙏 Thank You to the Readers</h4><p>Thank you for taking the time to read this reflection. Your curiosity and passion for learning fuel the continuous growth of our dev community. Whether you’re a seasoned iOS developer or just starting out, I hope this journey through SwiftUI’s evolution has provided insights, inspiration, and perhaps a few lessons learned.</p><p>Keep building, keep exploring, and never stop learning. 🚀</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2cb24eaff58d" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Skills and Mindsets I Wish I’d Learned in College]]></title>
            <link>https://viennarzc.medium.com/the-skills-and-mindsets-i-wish-id-learned-in-college-71646e9c8a5f?source=rss-21239e3431c6------2</link>
            <guid isPermaLink="false">https://medium.com/p/71646e9c8a5f</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[information-technology]]></category>
            <category><![CDATA[careers]]></category>
            <category><![CDATA[reflections]]></category>
            <category><![CDATA[software-engineering]]></category>
            <dc:creator><![CDATA[Viennarz Curtiz]]></dc:creator>
            <pubDate>Wed, 12 Mar 2025 02:27:17 GMT</pubDate>
            <atom:updated>2025-03-12T02:27:17.755Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*59dwVxVo-t49XsWk" /><figcaption>Photo by <a href="https://unsplash.com/@mattragland?utm_source=medium&amp;utm_medium=referral">Matt Ragland</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>Introduction</h3><p>My college journey took me through Information Technology with a Multimedia specialization. We delved into programming fundamentals and even dabbled in game development, but at its heart, the curriculum was focused on business IT solutions. When I entered the tech industry, I realized that I should have learned some skills early on during my college years.</p><p>Here are the key areas where I had to learn beyond the textbook:</p><h3>1. Git: Beyond Simple Version Control</h3><p>While my core IT with Multimedia courses didn’t cover Git, students in the IT Software Engineering specialization learned it independently. On my first job, we didn’t use Git, and my seniors taught me it when I worked as an iOS Developer at my second company.</p><p>I found Git confusing at first, but it’s very useful and essential. It’s like a save point.</p><h3>2. The “Quick Fix” Mentality: Undermining Fundamentals</h3><p>While we did learn programming fundamentals, the pressure to deliver projects often led to a ‘just make it work’ approach. This meant prioritizing quick fixes over solid foundations. In the professional world, this mindset is a liability. I learned that understanding the underlying principles and writing clean, maintainable code is far more valuable than a rushed, temporary solution. The investment in understanding fundamentals pays off exponentially.</p><h3>3. Problem-Solving: From Long Functions to Modular Design</h3><p>Our programming assignments often led to lengthy, complex functions, which are inefficient and hard to debug. Real-world software development requires a modular approach, breaking problems into smaller, manageable components.</p><p>Learning to design and implement reusable code was a significant shift. I had to unlearn old habits and adopt a strategic problem-solving approach. It took time to adapt, but my pair programming buddies and seniors helped me become a better developer.</p><h3>4. Backend Concepts: REST API? Endpoints?</h3><p>Our curriculum did cover essential backend components, including database management, SQL, and setting up local server environments. We learned how to manage data and create basic server configurations, which provided a foundational understanding. However, there was a significant gap in our training when it came to modern web application development.</p><p>I didn’t learn about REST APIs, endpoints, or API design until I worked in the industry. This crucial backend development layer connecting front-end interfaces to server-side logic was largely absent from my education. Students in the Software Engineering specialization may have explored these concepts, but they weren’t core to my learning. So, I had to learn how to build and consume APIs, which is essential in today’s interconnected web.</p><h3>Conclusion</h3><p>Looking back, I realize my IT degree provided a solid foundation, but I wish I’d been more committed to software development fundamentals like I was in multimedia and graphics. I poured my passion into mastering visual aspects, gaining deep expertise.</p><p>Initially, I aspired to graphics or multimedia design, but software development won me over. I chose this path and am grateful, but now I understand the importance of balancing passion with dedicated focus on core software development principles. You can have deep expertise in multiple areas, but you must be fully engaged in your chosen pursuit. For me, that’s building software. The lesson is that it’s never too late to learn fundamental skills, even if your initial focus was elsewhere.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=71646e9c8a5f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[My routine as a software developer while working remotely]]></title>
            <link>https://viennarzc.medium.com/my-routine-as-a-software-developer-while-working-remotely-7e421e4c1eee?source=rss-21239e3431c6------2</link>
            <guid isPermaLink="false">https://medium.com/p/7e421e4c1eee</guid>
            <category><![CDATA[routine]]></category>
            <category><![CDATA[developer-stories]]></category>
            <category><![CDATA[remote]]></category>
            <category><![CDATA[remote-working]]></category>
            <category><![CDATA[remote-work]]></category>
            <dc:creator><![CDATA[Viennarz Curtiz]]></dc:creator>
            <pubDate>Wed, 07 Aug 2024 00:25:25 GMT</pubDate>
            <atom:updated>2024-08-07T00:25:25.942Z</atom:updated>
            <content:encoded><![CDATA[<p>Working remotely as a software developer has its unique challenges and perks. Over time, I’ve found a routine that balances productivity and personal well-being. Here’s a glimpse into my typical working day.</p><h3>🌄 Early Morning: Setting the Tone</h3><p>I start my day early, around 5am, with a walk or a run. This early morning exercise not only energizes me but also gives me a chance to clear my mind and set positive intentions for the day. After that, I prepare a simple breakfast and engage in some light reading. Sometimes, I opt for motivational videos or podcasts to kickstart my day with inspiration.</p><h3>📖 Pre-Work Personal Projects</h3><p>Before my official work hours begin at 9am, I often spend some time on personal projects or studies. This period is a quiet, focused time where I can work on my own coding projects or delve into new technologies and techniques. By the time 9am rolls around, I’m ready for a freshly brewed coffee, though instant coffee does the trick on lazier mornings.</p><h3>👨🏻‍💻 Starting the Work Day</h3><p>My workday begins with checking emails and reviewing any pull requests from fellow developers. Code reviews are a key part of my morning, allowing me to provide feedback and stay updated on the team’s progress. We don’t have many meetings, which leaves me with ample time to dive into the most challenging and significant tasks of the day.</p><h3>🌞 Mid-Morning: Staying Productive</h3><p>To maintain productivity, I take short 10–20 minute naps in the morning. These quick breaks help me stay sharp and focused. Around noon, I take a lunch break, often accompanied by an episode of a TV series or anime. This break serves as a refreshing pause before I resume work.</p><h3>😪 Afternoon: Balancing Work and Rest</h3><p>I return to work at 1pm, tackling medium or less complicated tasks. If there are no pressing tasks, I allow myself a 30-minute nap around 3pm to recharge. In the afternoons, I sometimes take a light walk for 15 to 30 minutes to relieve stress, paired with a light snack like bread — though occasionally, I skip the snack.</p><h3>🏃🏻 Wrapping Up the Workday</h3><p>From 5pm to 6pm, I review my day, prepare reports, and take another round of light walking exercises. This routine helps me unwind and transition from work mode. Dinner usually follows a 15–30 minute break, although I often eat earlier if I’m hungry around 5pm.</p><h3>🌆 Evening: Family Time and Personal Growth</h3><p>Dinner is a family affair, providing a chance to connect and relax. After dinner, I watch some videos and dedicate an hour to personal studies or projects. I cap off my day with 30 minutes of reading before heading to bed around 8:30pm to 9:30pm.</p><h3>Conclusion</h3><p>It took me months to finally have a good routine. This is thankfully because of some books I read, namely “The Power of Habit” and “The Checklist Manifesto,” while also adopting certain mindsets of continuous improvement like in Stoicism. This routine has been instrumental in maintaining a healthy work-life balance while working remotely.</p><p>It ensures that I stay productive, manage stress, and continue to grow both professionally and personally.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7e421e4c1eee" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[From City Life to Remote Work: A Journey of an iOS Developer]]></title>
            <link>https://viennarzc.medium.com/from-city-life-to-remote-work-a-journey-of-an-ios-developer-a92576b0d4f9?source=rss-21239e3431c6------2</link>
            <guid isPermaLink="false">https://medium.com/p/a92576b0d4f9</guid>
            <category><![CDATA[developer]]></category>
            <category><![CDATA[philippines]]></category>
            <category><![CDATA[work-from-home]]></category>
            <category><![CDATA[remote-working]]></category>
            <category><![CDATA[life]]></category>
            <dc:creator><![CDATA[Viennarz Curtiz]]></dc:creator>
            <pubDate>Fri, 31 Mar 2023 13:31:52 GMT</pubDate>
            <atom:updated>2023-03-31T13:31:52.669Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*TmD4EtYNnSH0zHmq" /><figcaption>Photo by <a href="https://unsplash.com/es/@senyor_oj?utm_source=medium&amp;utm_medium=referral">OJ Serrano</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>Introduction: My journey from the city to the suburbs</h3><p>I’ve been in the IT field for over 7 years, and while I know that IT jobs are challenging, demanding, and lucrative, it’s still a very rewarding and fulfilling job. My first job was in a city in the country’s south, and a few years later I moved to another highly urbanized city far away from my hometown.</p><p>Working in a densely populated city like Metro Manila was a thrilling experience for me, particularly as a software developer. I got to work with and meet a lot of people in the tech industry. However, the traffic and pollution were terrible, and it took a significant amount of time just to travel to and from work. Budgeting is a needed skill to survive. Despite these challenges, I learned to adapt and thrive in the environment, but the pandemic presented a unique opportunity for me to move back to Mindanao and work remotely.</p><h4>TL;DR:</h4><p>I moved from Metro Manila to Mindanao during the pandemic to work remotely as an iOS developer. Despite some challenges, I discover the benefits of working in a more relaxed and natural environment. If want to consider in working remotely as an iOS developer, here are some tips: invest in reliable internet and workspace, establish clear boundaries, stay connected with your team, and pursue your personal growth.</p><h3>Reasons for moving: ✈️</h3><p>The pandemic has been a turning point for many people, including myself. It offered an opportunity to explore new things and opportunities that I hadn’t considered before.</p><p>My current company allowed us to work remotely, which was a chance to be back home. The fast-paced lifestyle of the city can be both exciting and exhausting, and the pandemic made me realize that I was missing a lot back in my hometown, as well as in nearby cities. The prospect of being closer to family and friends, exploring new places, and enjoying a slower pace of life was too good to be missed. However, the transition wasn’t easy, particularly with internet connection stability being a challenge. We had to complete a lot of paperwork to travel, and there were so many restrictions due to the pandemic. As developers, we were already used to remote work, so it wasn’t something new to us. The decision to move was not an easy one, but I’m glad I took the leap.</p><h3>Communication and Collaboration: “Can you hear me?”</h3><p>Communication and collaboration were key components of our remote work setup. Working remotely meant that we were no longer in the same physical space as our colleagues, which made communicating using messaging apps a bit challenging when it comes to collaborating with teams and solving problems together. However, we were able to overcome this challenge by using the right tools for collaboration. Our team used a variety of tools such as Google Chat, Jamboard, LucidApp for creating charts and graphs, Zoom, and Google Meet. These tools allowed us to have better communication and collaborate effectively despite being miles apart.</p><h3>Work-life balance: 10 reps of squats or 1000 lines of code?</h3><p>Finding a routine that works for me was essential in making my day efficient, productive, and balanced. I had to develop new habits to adjust to remote work since we tend to overwork, and also relax too much. My typical routine now includes waking up early and doing some light exercises or heavy workouts on some days. Before starting work, I make sure to read technical books or watch tech videos related to software development to get myself in the right mindset.</p><p>Cooking at home can be time-consuming, so we sometimes order food online to save time. At the end of the day, I love sitting outside and just watching nature in a laid-back setting. Spending time with my family at night is also a priority for me. When winding down, I usually read motivational and self-help books to keep myself motivated and inspired.</p><blockquote>Finding a routine that works for me was essential in making my day efficient, productive, and balanced.</blockquote><h3>Conclusion: Any Developer can work remotely but not for everyone.</h3><p>Now that I have been working remotely for more than 2 years, I can say that it has been a positive experience for me. Of course, there are still some challenges and trade-offs, such as the limited social interaction, office perks, coffee break with co-workers, tech discussions, and gaming on breaks. However, I believe that with the right mindset and the right tools, anyone can thrive as a remote worker.</p><p>If you’re an iOS developer who’s considering working remotely, here are some tips that might help you:</p><ul><li>Invest in a reliable internet connection and backup options (e.g. mobile data, hotspot)</li><li>Set up a comfortable and ergonomic workspace, with good lighting and ventilation. Better if your home office is in a separate room as your bed room.</li><li>Establish clear boundaries between work and personal life, and avoid overworking or procrastinating.</li><li>Stay connected with your team and your clients, through regular meetings and updates</li><li>Pursue your interests and hobbies, and use your free time to learn new skills and broaden your perspective.</li><li>Invest on books, and courses to fuel up your passion, increase in knowledge and skills.</li></ul><p>Well, there you have it! As a proud resident of the countryside, I can say that remote work has been a game-changer for many of us. With remote work, we get to spend more time with our families, enjoy the fresh air and beautiful scenery, and work in a relaxed and comfortable environment.</p><p>But don’t let the laid-back lifestyle fool you! As Software developers, or people who work in in Tech, we are still on top of our game, and we continue to produce high-quality work for our clients. With the right tools and mindset, we can thrive in any work environment, whether in the city or in the countryside.</p><p>However, it’s important to acknowledge that remote work is not for everyone. Some people may thrive in a structured office environment and may find it difficult to stay motivated or focused while working from home with so much distractions.</p><p>Additionally, remote work can pose challenges for individuals who require in-person collaboration or have limited access to technology and internet connectivity. It’s important to weigh the pros and cons of remote work and determine if it’s the right fit for your personal and professional goals.</p><p>Thanks for reading! Comment down if you have similar experiences, or you want to work remotely! Let me know your thoughts.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a92576b0d4f9" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Airpods Pro Control Center animation with Matched Geometry Effect]]></title>
            <link>https://viennarzc.medium.com/airpods-pro-control-center-animation-with-matched-geometry-effect-5d9da0921f15?source=rss-21239e3431c6------2</link>
            <guid isPermaLink="false">https://medium.com/p/5d9da0921f15</guid>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[app-development]]></category>
            <category><![CDATA[swiftui]]></category>
            <category><![CDATA[ios-development]]></category>
            <dc:creator><![CDATA[Viennarz Curtiz]]></dc:creator>
            <pubDate>Fri, 24 Feb 2023 07:06:16 GMT</pubDate>
            <atom:updated>2023-02-27T08:57:06.830Z</atom:updated>
            <content:encoded><![CDATA[<p>When I learned SwiftUI, I thought of replicating the animation of the Airpods Pro in Control Center.</p><p>I learned that with <strong>Matched Geometry Effect, </strong>some animations are easily achieved.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*b8tCRvf6x_fPEM_I5-UCHQ.jpeg" /></figure><h4>Build the content</h4><p>As of writing, I use Xcode 14.2.</p><pre>   enum Mode {<br>        case noiseCancellation<br>        case transparency<br>        case off<br>    }</pre><pre>@Namespace private var circleAnimate</pre><p>Apple Docs says <strong>Namespace </strong>is</p><blockquote>A dynamic property type that allows access to a namespace defined by the persistent identity of the object containing the property (e.g. a view).</blockquote><pre>@State private var selectedMode: Mode = .off</pre><p>Let’s use <strong><em>ZStack</em></strong> with the Circle below of the Image, instead of using the modifier <em>.background(Circle()) .</em></p><pre>var body: some View {<br>            HStack {<br>                ZStack {<br>                    if selectedMode == .noiseCancellation {<br>                        Circle()<br>                            .fill(Color.blue)<br>                            .frame(width: 60, height: 60)<br>                    }<br>                    <br>                    Image(systemName:<br>                            &quot;person.fill&quot;)<br>                        .foregroundColor(.white)<br>                        .padding()<br>                }<br>    <br>                Spacer()<br>                <br>                ZStack {<br>                    if selectedMode == .off {<br>                        Circle()<br>                            .fill(Color.gray)<br>                            .frame(width: 60, height: 60)<br>                        <br>                    }<br>                    <br>                    Image(systemName: &quot;person.fill&quot;)<br>                        .foregroundColor(.white)<br>                        .padding()<br>                }<br>                <br>                Spacer()<br>                <br>                ZStack {<br>                    if selectedMode == .transparency {<br>                        Circle()<br>                            .fill(Color.blue)<br>                            .frame(width: 60, height: 60)<br>                    }<br>                    <br>                    Image(systemName: &quot;person.fill&quot;)<br>                        .foregroundColor(.white)<br>                        .padding()<br>                }<br>                <br>            }<br>            .padding(4)<br>            .frame(width: 300)<br>            .background(Capsule())<br>            .font(.title2)<br>    }</pre><p>It should look like this.</p><p><em>Note that there is no </em><strong><em>SF Symbol</em></strong><em> that is exactly the same on the icons of the Control Center — Airpods Pro.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uShGXVTZ8JZew_KUN4rLkw.png" /></figure><p>Let’s add tap gesture with animation on each Icon View</p><pre>ZStack {<br>...<br>}<br>.onTapGesture {<br>    withAnimation {<br>          selectedMode = .noiseCancellation<br>                        <br>    }<br>}</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/640/1*jYMwDNdZUme8lHZx2QtWJw.gif" /></figure><p>The animation is still not the one we wanted.</p><h4><strong>Matched Geometry Effect</strong></h4><ul><li>allows for synchronized animation between views that have the same ID and belong to different view hierarchies. It enables the creation of smooth transitions when elements are added, removed, or moved between screens.</li></ul><p>Apple <a href="https://developer.apple.com/documentation/swiftui/menu/matchedgeometryeffect(id:in:properties:anchor:issource:)/">Documentation</a></p><p>Add this modifier to each <strong>Circle() </strong>view, after the .frame modifier.</p><pre>.matchedGeometryEffect(id: &quot;selection&quot;, in: circleAnimate)</pre><p>Now it should behave like this.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgiphy.com%2Fembed%2F8iRyrM8rxtFUKIi1gk%2Ftwitter%2Fiframe&amp;display_name=Giphy&amp;url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExZTkwYzQ3Y2ViN2NhMGU5MzgyMTFjNDA4OTU0YmFhZDhhNzg0NzU5NSZjdD1n%2F8iRyrM8rxtFUKIi1gk%2Fgiphy.gif&amp;image=https%3A%2F%2Fi.giphy.com%2Fmedia%2F8iRyrM8rxtFUKIi1gk%2F200.gif&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=giphy" width="435" height="152" frameborder="0" scrolling="no"><a href="https://medium.com/media/3090395129a898a7cc5f448588ed1f23/href">https://medium.com/media/3090395129a898a7cc5f448588ed1f23/href</a></iframe><h3>Conclusion</h3><p>Although MatchedGeometryEffect has made certain animations easier than ever before, I’ve also encountered some limitations when using it. While I haven’t used it extensively, I’m excited to see what improvements will be made in the future.</p><p>Hurray 🎉. Now go explore and experiment more!</p><h4>Project Repository</h4><p><a href="https://github.com/viennarzc/AirpodsProLikeAnimation">https://github.com/viennarzc/AirpodsProLikeAnimation</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5d9da0921f15" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[My 5-year journey(so far) in the tech industry]]></title>
            <link>https://viennarzc.medium.com/5-years-in-the-tech-industry-78665eea217e?source=rss-21239e3431c6------2</link>
            <guid isPermaLink="false">https://medium.com/p/78665eea217e</guid>
            <category><![CDATA[software-technology]]></category>
            <category><![CDATA[career-paths]]></category>
            <category><![CDATA[ios-development]]></category>
            <dc:creator><![CDATA[Viennarz Curtiz]]></dc:creator>
            <pubDate>Tue, 02 Mar 2021 12:56:44 GMT</pubDate>
            <atom:updated>2021-03-07T01:55:37.062Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ob4AltUc9s2X-H0M" /><figcaption>Photo by <a href="https://unsplash.com/@karlp?utm_source=medium&amp;utm_medium=referral">Karl Pawlowicz</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>2015 ( May — )</h3><p><em>TL;DR</em></p><h4>Hybrid mobile Dev &amp; Front-end Web Dev</h4><p>Skillset at this time</p><ul><li><strong>HTML5</strong></li><li><strong>CSS</strong></li><li><strong>Javascript</strong></li><li><strong>Bootstrap</strong></li><li><strong>Apache Cordova </strong>( little experience )</li><li><strong>CodeIgniter</strong> (little knowledge)</li><li><strong>SQL</strong> ( little knowledge )</li><li><strong>Wordpress</strong> (beginner, learned from my Internship)</li></ul><p>I remember a job post looking for a web developer with experience in Apache Cordova. It caught my eye since I have experienced using <strong>Apache Cordova </strong>when we used it for our <em>Capstone Project</em>, a game built on <strong>HTML5</strong>. To be able to build it for android, <strong>Apache Cordova</strong> was the one we needed.</p><p>I applied for the job, got accepted, and so the work began. Badabum badabam! ✨ It was my first ever job as a programmer and first time to be on a team who creates actual websites.</p><p>Most of my tasks were User -interface (UI) creation.</p><p>During that time, web tech wrapped with Cordova had terrible performance. It was so laggy when navigating pages. 😫</p><h4>Learnings:</h4><p><a href="https://ionicframework.com/"><strong>Ionic Framework</strong></a> and <a href="https://angularjs.org/"><strong>AngularJS</strong></a><strong>. </strong>( Beginner Tier )</p><p><em>Two-way binding</em> of AngularJS was mind blowing at that time, but I did not use it much anyway. We only used AngularJS and Ionic for one particular project and the rest was basic HTML / CSS / SQL web apps and websites. 😅</p><h4>Struggles:</h4><p>The PCs we used were super duper slow and low-end. You know the struggle when you open 10 tabs of google chrome on a 2gb RAM computer?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*oBSiApD321ZahT71" /><figcaption>Photo by <a href="https://unsplash.com/@bugsster?utm_source=medium&amp;utm_medium=referral">Taras Shypka</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>2016 ( May — )</h3><p>Joined a company of high tier developers. I applied for a different role/position, but on the interview day I was told to learn Swift for iOS as they are in need of iOS Developers. I was shookt! 😱 (shocked!) I was expected to start in a few days.<em> </em>I thought<em>, how am I going to learn Swift without a Mac computer! ?</em></p><p>Well, of course they issued me a Macbook Pro 2013. It was shiny, shimmering splendid. ✨</p><h4>Learning Swift, and iOS Development:</h4><p>I was given learning materials (videos) about iOS development, and I was like <em>oh, (Swift language) syntax is so readable, much like Javascript . </em>Storyboards and Interface builder was on point<em>. </em>Then on later topics, I could not understand what I was watching, <em>I thought What the heck are these Delegates, Protocols, optionals, whatsoever!?.</em></p><p>This was a new realm for me, it almost felt like it was completely different from web programming.</p><p><strong>First steps.</strong></p><ul><li><strong>Swift</strong> Language</li><li>Storyboards, and Interface Builder</li><li>Object Oriented Programming, Inheritance</li><li>Basic <strong>UIKit</strong> Framework</li><li>Tableview Delegates, DataSource</li></ul><h4>Learning Version Control using Git:</h4><p>I know this was not taught in college, but, man I have regretted I did not try to learn. At this time I know how useful this is. Funny how we can see stupid little mistakes we made. Admittingly, I did these too. 😛</p><pre>“Fix Typo”</pre><pre>“Remove space”</pre><pre>“Fix Typo”</pre><pre>“Fix Typo”</pre><pre>“Fix Typo”</pre><pre>“Fix Typo”</pre><pre>“Fix Typo”</pre><h4>Struggles:</h4><p>It was an overwhelming learning experience. I could not absorb everything in one day. It was like holding and balancing dozens of hard-bound books stacked over each other on your head.</p><p>Just so you know, I lived in a dorm and the internet is ok if I were in the lobby. But, if I were in our room I used cellular data, it could hardly load a webpage. Such a sad life for an aspiring developer.</p><p>Took me over a month to adjust. I did feel unworthy on those days. 😆</p><p>For months, most of my tasks are on user interface, maintaining legacy and existing projects, and fixing bugs.</p><h4>Encountered Fastlane Automation Tool:</h4><p>I was taught how to do fastlane commands. I did not try to understand it much, but, I saw how automations saves up your time rather than manually doing everything:</p><ul><li>do unit tests</li><li>incrementing version and build number</li><li>cleanup project</li><li>add app icon badges</li><li>compiling the project</li><li>logging in</li><li>codesigning</li><li>adding changelog</li><li>do git commands ( reset, pushes to repo )</li><li>sends a message your group when successfully uploaded to appstore connect ( I think that time it was still called iTunesConnect )</li></ul><p>With just a one line of command. 🤖</p><h4>Data Persistence using RealmSwift:</h4><p>Encountered RealmSwift in some of the projects. It is a local database for any app. Also learned some of the basic concepts and functions, nothing deep yet.</p><h4>Milestones:</h4><ul><li>iOS developer! ( Beginner Tier )</li><li>Basics of iOS development</li><li>Learned Version Control</li><li>Learned <strong>Swift</strong> Programming Language</li></ul><h3>2016 Sideprojects</h3><h4>Game development using Defold Game Engine</h4><p>There were 2 projects that I worked on. Defold for game dev, commissioned by different groups.</p><p>I had to do the drawing, animation, and programming. I realized how fun, challenging, and tough it can be as a game developer.</p><h4>Struggles:</h4><ul><li>My 4 year old Personal Windows Laptop was a dying piece of tech.</li><li>Battery was dead. You have to always plug it for it to work.</li><li>Super slow boot Operating System. I think it was Windows 8 at that time.</li><li>Blue-screen of deaths ( yes plural ).</li><li>Laggy</li><li>The Wacom tablet cord was faulty, destroying my momentum when drawing.Slow and unstable Internet connection, can’t update the engine.</li></ul><h4>Milestones:</h4><ul><li>Learned <strong>Lua</strong> Programming Language</li><li>Experienced being a <em>one-man-team-indie</em> Game developer</li></ul><h3>2017</h3><p>There was a new project and it was my first time being involved in many features of the app.</p><p>That is also when I first encountered <strong>RxSwift! </strong>I did not pay much attention since it was only used on some little parts of the project.</p><p>As the project grew bigger, my teammate suggested we should use <strong>RxSwift .</strong></p><h4>Learning RxSwift, Reactive Programming :</h4><p>As the project grew even bigger, the RxSwift usage increased. I was just a code monkey while not understanding how it works, and so, I got frustrated. Finally, I had discussions with my teammate and asked him to teach me the concept.</p><p>I am amazed at how reactive programming works and how fast it can be.</p><p>The learning curve was steep for me. It took me weeks to understand some of the basic concepts.</p><ul><li>Observables</li><li>Subscribing</li><li>Subjects</li><li>Disposing</li></ul><h4>Learning Objective-C:</h4><p>At some time, I had to help maintain and fix bugs on an existing project. It was purely written in Objective-C programming language. My colleagues said the learning curve for this is higher than other languages. Reading it at first was nightmarish. The syntax was so hard to read, but, at some point, I got the hang of it.</p><p>Did you know Swift was released in 2014? The version 2.2 was made <a href="https://en.wikipedia.org/wiki/Open-source_software">open-source software</a> under the <a href="https://en.wikipedia.org/wiki/Apache_License">Apache License</a> 2.0 on December 3, 2015, for Apple’s platforms and <a href="https://en.wikipedia.org/wiki/Linux">Linux</a></p><h4>Just a quick comparison! Swift vs Objective-C syntax.</h4><p><strong>Objective-C</strong></p><pre>NSString *message = “@Hello World, I am written in Obj-c.”;</pre><pre>NSLog(@”%@”, message);</pre><p><strong>Swift</strong></p><pre>let message = “Hello World, I am written in Swift”</pre><pre>print(message)</pre><h4>Struggles:</h4><ul><li>Objective-C is hard to read</li><li>Nil / Null handling is harder</li></ul><h4>Milestones:</h4><ul><li>Learned <strong>RxSwift</strong> Framework, Reactive Programming</li><li>Better Understanding on KVC ( Key-Value Observing )</li><li>Learned <strong>Objective-C </strong>Programming Language</li><li>Better Understanding on UIKit, RealmSwift, Cocoapods Libraries</li><li>Learned <strong>Service-Oriented Pattern</strong></li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*VnHDSmRG_U2LUKbC" /><figcaption>Photo by <a href="https://unsplash.com/@evadarron?utm_source=medium&amp;utm_medium=referral">Eva Darron</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>2018</h3><p>In the first quarter of the year, there was nothing much as it was mostly maintaining existing apps, and continuing an under-development project.</p><p>Fast-forward around <em>August of 2018, </em>I had to review some legacy apps written in Objective-C.</p><p><strong>September 2018: Relocating to a new world</strong></p><p>There were so many changes happening in this time, but that’s going to be a different story.</p><p>At this point I had to review, read, and understand the whole codebase of an existing app written in Objective-C.</p><p>It took me weeks to understand how everything works. I learned how important it is to decouple modules, how important architecture design patterns are, how important naming conventions are, and how useful to have different <strong>XCode Schemes</strong></p><h3>2019</h3><p>There was a new project. Starting from scratch, it was an opportunity to learn, and implement other coding patterns.</p><p>This is the 2nd biggest, and most complex project that I have helped write from scratch. I saw the advantages of using <strong>Service Oriented Pattern,</strong> which decouples, and separate responsibilities that are usually in the <strong>AppDelegate.</strong></p><p>I learned to implement the <strong>Flow Coordinators</strong> which aims to decrease the responsibilities of <strong>ViewControllers</strong>, in which they don’t need to know the next ViewController to be shown, they just have to know that they are going to be dismissed, and they tell the Flow Coordinator, it will decide which View Controller to show next.</p><p>During the development, I also learned how to integrate Webhooks using different services. I helped automate many repetitive tasks in our workflow for the iOS Team. I got hooked up with automations, and took a lot of time trying to automate many things, using <strong>bash scripts, </strong>and<strong> </strong>the<strong> Fastlane Tool.</strong></p><h4>Milestones:</h4><ul><li>Created iOS projects from scratch</li><li>Learned Coordinator Pattern</li><li>Realized how Automations can be super efficient</li><li>Realized that having too many 3rd-Party Libraries can be too messy</li><li>Actually Read and Enforced Apple Human Interface Guidelines ( took me 3 years to appreciate this, lmao . Thanks <a href="https://swift.ph/"><strong>SwiftPH</strong></a><strong> !</strong> )</li></ul><h3>2020</h3><p>There was a new feature in our App which is scanning and extracting texts from a document using the Phone’s camera.</p><h4>Learning Apple’s Machine Learning APIs Frameworks; CoreML, Vision, and Natural Language.</h4><p>Learning all of these at the same time was quite overwhelming. While I did not dive deep into these frameworks, I learned how to implement and create a Text scanning App, where you could take photos or videos, then recognize texts, and be able to extract those texts.</p><h4>Learning ARKit Framework for Augmented Reality.</h4><p>I was also exploring this framework along with Machine Learning APIs. Using the iPhone’s True Depth (Front ) Camera is impressive in tracking the facial expressions.</p><h4>Adapting the <a href="https://developer.apple.com/videos/play/wwdc2015/408/">Protocol-Oriented Programming.</a></h4><p>When I was adapting this paradigm, I saw how this is much cleaner, and easier to maintain than <strong>Object-Oriented Programming </strong>in which it can get messy with all those unneeded inheritance.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*x4-NiKuvbHVI_2L3" /><figcaption>Photo by <a href="https://unsplash.com/@wonderlane?utm_source=medium&amp;utm_medium=referral">Wonderlane</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>2020 WWDC “Dub-dub-dee-see” 👨🏻‍💻 ( June )</h3><p>WorldWide Developers Conference is one of the most anticipated events for Developers, that year it was a WWDC Virtual event.</p><p>It was also my first time to actively watch Sessions.</p><h4>Appointment with Apple Engineers about Machine learning and Computer Vision.</h4><p>I applied for a virtual appointment, and I was not expecting much since there were only limited slots, and when they had confirmed and approved my appointment, I was filled with excitement, and before the appointed date, I had to prepare many questions including best practices in using the Machine Learning APIs.</p><p>Since it was based in the USA, Calfronia , and I am on the other side of the world, I had to wake up before 4am for the appointment.</p><p>There I spoke with the Apple Engineers, showed them my problem, case, and goal of this certain app. Then they recommended me to use certain frameworks, classes, and to watch certain sessions. It was a memorable experience, I could not forget how hard it was to speak fluently in english with all those jargons, lol.</p><p>Hooray for 5 years! 🎉 Keep moving forward!</p><blockquote><a href="https://www.azquotes.com/quote/1065152?ref=progress-not-perfection">Progress not perfection… you can’t be perfect every time… but you can gain progress on a daily basis.</a></blockquote><p>-Court Mcgee</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=78665eea217e" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>