Skip to main content

Command Palette

Search for a command to run...

From Technical Uncertainty to Product Launch

Apple Developer Academy Challenge 6 Retrospective

Updated
3 min read
S

Hello, I'm Sijun Yang, a Software Engineer. I'm a developer who is happiest when coding. Give me a computer, a terminal, and Dark Mode, and I'm ready for anything.

Handong Global University: Completed 2nd year, Advanced Major in AI & Computer Science (Currently on a leave of absence) Apple Developer Academy @ POSTECH: Alumnus of the Cohort 2025

Korean version of this article (here)

Over the past three months, I spent the most intense period of my time at the Apple Developer Academy working on the final project, Challenge 6. This retrospective summarises the technical challenges and insight I gained as an engineer while deploying two apps simultaneously and preparing for the final Showcase.

1. 'Problem Definition' Over Technology (The First Pivot)

Our initial project was a sleep management app. We implemented features to restrict app usage at set times using NFC tags and the Screen Time API. While the technical implementation was polished and the design was excellent, user testing revealed that it did not lead to a practical solution for sleep issues. Acknowledging that a "solving a real problem" comes before "working code," we made the bold decision to scrap the app we had been developing for a month.

2. Technical Challenges in a No-Reference Environment: IMDF and Indoor Maps

For our new challenge, we chose to implement an indoor map using Apple's Indoor Maps Program. We had to adhere to Apple's IMDF (Indoor Mapping Data Format) standards, but there were no local references (in Korea) available, and even existing automated tools were unsuitable.

Eventually, my team and I manually created coordinate data and reverse-engineered the data structure to pass Apple's strict schema validation, successfully building the map. Through this process, I gained a deep understanding of MapKit and geographic data processing logic.

Because the Indoor Maps project involved complex procedures, including Apple's approval, there was a risk that we might not finish within the limited challenge period. Consequently, we strategically converted it into a side project and ultimately received approval to complete 'ShowX', an information guide app for the Apple Developer Academy Showcase.

3. On-Device AI and App Extensions: Implementing an Agent App Beyond Technical Constraints

With only one month left in the three-month project period, our team's main product was decided. It is 'kip!', an agent app that analyses and archives screenshots and links, offering timely and relevant reminders to the user.

To reduce server costs and ensure privacy, we adopted On-Device AI (Foundation Models) and implemented additional support for OpenAI's GPT and Google's Gemini API for scalability. We focused on optimising logic to process unstructured data and provide meaningful suggestions to users.

Additionally, we implemented a Share Extension so that key logic could be processed via the 'Share' action without entering the app. We resolved various technical hurdles to enhance the app's completeness, such as designing for the strict memory limits of Share Extensions and utilising App Groups for Shared Containers and file storage synchronisation.

Beyond simply making it work without bugs, I constantly communicated with the PO, UX/UI designers, and fellow developers, reviewing code to craft a product that offers a seamless user experience.

4. Showcase, Deployment, and Results

'ShowX', the indoor map app developed to support the Showcase, became the first case in Korea implemented through the Apple Indoor Maps Program. Furthermore, for our main product 'kip!', we deployed hotfixes and stabilised features right up until a famous tech YouTuber's demonstration, reliably handling edge cases in a live environment.

Conclusion

The greatest takeaway from this project is 'Teamwork and Synergy'. The process of reviewing implementation feasibility from the planning stage with designers, a domain expert, and fellow developers, and finding alternatives when facing technical difficulties, was a significant learning experience in itself.

Because I was with team members who possessed both the skills and attitudes to trust one another, we were able to create an impact that exceeded the sum of our individual efforts. I would like to thank my best teammates and mentors.

Now, stepping out of the sandbox that is the Academy, I aim to become an engineer who solves problems in the field driven by this intensity.

More from this blog

yangsijun.log()

2 posts

The log of Software Engineer Sijun Yang. A place where I share what I read, learn, and experience. 소프트웨어 엔지니어 양시준의 로그입니다. 읽고 공부하고 경험한 것들을 나누는 곳입니다.