<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>정진영의 포트폴리오</title><link>https://wjdwlsdud.github.io/en/</link><atom:link href="https://wjdwlsdud.github.io/en/index.xml" rel="self" type="application/rss+xml"/><description>정진영의 포트폴리오</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 24 Oct 2022 00:00:00 +0000</lastBuildDate><image><url>https://wjdwlsdud.github.io/media/sharing.jpg</url><title>정진영의 포트폴리오</title><link>https://wjdwlsdud.github.io/en/</link></image><item><title>Naver Set to Debut Empathetic AI Assistant “NAVER Mate,” Poised to Reshape Korea’s Search Landscape</title><link>https://wjdwlsdud.github.io/en/news/news1/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/en/news/news1/</guid><description>&lt;p&gt;Korea’s largest portal is reportedly preparing to unveil &lt;strong&gt;NAVER Mate&lt;/strong&gt;, an &lt;strong&gt;emotionally aware personal AI agent&lt;/strong&gt; that goes far beyond answer-only chatbots. By reading a user’s &lt;em&gt;mood, context, and habits&lt;/em&gt; before suggesting actions, analysts believe it could upend the country’s search paradigm.&lt;/p&gt;
&lt;h2 id="1-what-exactly-is-naver-mate"&gt;1. What Exactly Is NAVER Mate?&lt;/h2&gt;
&lt;p&gt;NAVER Mate is designed as a &lt;strong&gt;hybrid assistant&lt;/strong&gt; that actively gathers and analyzes information across a user’s day-to-day life. Connected at an API level to Naver Calendar, Mail, News, Maps, Shopping, and more, it promises hands-free workflows via voice or text conversations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key capabilities&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatic schedule clean-up with reminders&lt;/li&gt;
&lt;li&gt;News and document summarization with cited sources&lt;/li&gt;
&lt;li&gt;Sentiment detection that adapts responses to your mood&lt;/li&gt;
&lt;li&gt;Interest-based content recommendations&lt;/li&gt;
&lt;li&gt;Real-time natural-language search and summarization&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-how-it-differs-from-existing-ai-assistants"&gt;2. How It Differs from Existing AI Assistants&lt;/h2&gt;
&lt;p&gt;The industry is watching closely because NAVER Mate aims to be a &lt;strong&gt;“verifiable AI”&lt;/strong&gt; rather than yet another summary bot.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Comparison&lt;/th&gt;
&lt;th&gt;Typical Chatbot&lt;/th&gt;
&lt;th&gt;NAVER Mate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Source transparency&lt;/td&gt;
&lt;td&gt;Often unclear&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Shows reference links&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Core role&lt;/td&gt;
&lt;td&gt;Q&amp;amp;A focused&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Summaries + fact checks + suggestions&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UX&lt;/td&gt;
&lt;td&gt;Pure chat UI&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Hybrid surface with no tab switching&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Whenever the AI synthesizes information, &lt;strong&gt;supporting links appear alongside the answer&lt;/strong&gt;, encouraging users to verify facts without leaving the flow.&lt;/p&gt;
&lt;h2 id="3-expert-commentary"&gt;3. Expert Commentary&lt;/h2&gt;
&lt;p&gt;One AI analyst summed up the shift this way:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;“Users are moving past &lt;strong&gt;collecting links&lt;/strong&gt; toward &lt;strong&gt;verifying insights&lt;/strong&gt;. NAVER Mate is the first domestic attempt to solve ‘search → summary → fact-check’ on a single screen.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Still, there are caveats. With an AI that learns routines and emotional states, &lt;strong&gt;privacy, data governance, and emotional dependence&lt;/strong&gt; all demand scrutiny.&lt;/p&gt;
&lt;h2 id="4-what-happens-next"&gt;4. What Happens Next?&lt;/h2&gt;
&lt;p&gt;Naver is expected to run a closed beta soon, iterate with feedback, and launch publicly before year’s end. Competitors anticipate that a successful release could ignite a &lt;strong&gt;new round of competition with Kakao, Google, and Perplexity&lt;/strong&gt; over next-generation search experiences.&lt;/p&gt;
&lt;h2 id="5-bottom-line"&gt;5. Bottom Line&lt;/h2&gt;
&lt;p&gt;NAVER Mate signals a shift to an era where users &lt;strong&gt;“understand through conversation and verify with links.”&lt;/strong&gt; Whether AI can mature into a truly &lt;strong&gt;responsible information partner&lt;/strong&gt; remains the question to watch.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;※ This article is a fictional scenario created for storytelling purposes and is unrelated to any real corporate roadmap.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Machine Learning</title><link>https://wjdwlsdud.github.io/en/studying/mr/</link><pubDate>Mon, 13 Oct 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/en/studying/mr/</guid><description>&lt;h2 id="machine-learning-study-log-teaching-a-computer-with-data"&gt;Machine Learning Study Log: Teaching a Computer with Data&lt;/h2&gt;
&lt;p&gt;As I entered the fall semester of my junior year, I began taking a course called &amp;ldquo;Machine Learning&amp;rdquo;. I&amp;rsquo;m attending Professor Song Hyun-je&amp;rsquo;s lectures every Monday and Wednesday at 4:00 PM in Room 523 of Engineering Building 7. You can find more information on Professor Song Hyun-je&amp;rsquo;s site via the link attached above!&lt;/p&gt;
&lt;p&gt;At first, the term &amp;ldquo;Machine Learning&amp;rdquo; felt very difficult and complex. However, now that I&amp;rsquo;ve started learning it, I&amp;rsquo;ve realized it&amp;rsquo;s a fascinating technology that is much closer to our daily lives than I expected. I&amp;rsquo;ve decided to summarize the basic ML concepts I&amp;rsquo;ve learned in my own simple words.&lt;/p&gt;
&lt;p&gt;🧐 So, what is Machine Learning? My understanding is that machine learning starts with a very simple idea. Instead of explicitly telling a computer every single rule (e.g., &amp;ldquo;this is an apple,&amp;rdquo; &amp;ldquo;this is an orange&amp;rdquo;), it is a technology that lets the computer learn patterns and rules on its own by showing it vast amounts of data.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s similar to how a young child might look at hundreds of pictures of dogs and come to realize on their own, &amp;ldquo;Ah, an animal with perky ears and fluffy fur is a dog!&amp;rdquo;&lt;/p&gt;
&lt;p&gt;📚 Two Learning Methods I&amp;rsquo;ve Learned There are many types of machine learning, but I have learned about the two most representative methods.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Teaching with the &amp;ldquo;Answer Key&amp;rdquo;: Supervised Learning Supervised learning is, as the name suggests, a method of training a computer using data that already has the &amp;ldquo;answer&amp;rdquo; (known as a Label). It works by repeatedly showing the computer sets of &amp;ldquo;problems&amp;rdquo; and &amp;ldquo;answers&amp;rdquo; together.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A spam filter is a classic example. By training the model on countless emails (problems) labeled as &amp;ldquo;this is spam&amp;rdquo; (answer) or &amp;ldquo;this is important&amp;rdquo; (answer), it eventually learns to classify new, unseen emails on its own.&lt;/p&gt;
&lt;p&gt;Housing price prediction is another example. If it learns from vast amounts of housing data (problems) like, &amp;ldquo;A 3-bedroom house in Area A costs $500,000&amp;rdquo; (answer), it will be able to predict the price when given information about a new house.&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Letting it Learn on its Own: Unsupervised Learning Unsupervised learning is like giving the computer raw data without any answers and telling it, &amp;ldquo;Find some meaningful groups or structures within this!&amp;rdquo; The computer analyzes the features of the data and groups similar items together by itself.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is very useful for customer management. By feeding it customer purchase pattern data, the model can discover hidden customer segments, such as a &amp;ldquo;budget shopper group&amp;rdquo; or a &amp;ldquo;new product enthusiast group.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;News article clustering is another great example. When given thousands of news articles, the AI can automatically bundle them into similar topics like &amp;ldquo;Politics,&amp;rdquo; &amp;ldquo;Economy,&amp;rdquo; or &amp;ldquo;Sports.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;✨ Closing Thoughts Now that I&amp;rsquo;ve learned the concepts firsthand, I feel that machine learning isn&amp;rsquo;t some vague, abstract technology, but rather a very logical tool for solving problems. Of course, I still only know the absolute basics, but I find the process of discovering meaning within data to be truly fascinating. I&amp;rsquo;ve now set a goal for myself to study this more deeply and to try and build a simple project of my own.&lt;/p&gt;</description></item><item><title>JAVA</title><link>https://wjdwlsdud.github.io/en/studying/java/</link><pubDate>Sun, 12 Oct 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/en/studying/java/</guid><description>&lt;p&gt;I began this study not just to simply understand Java&amp;rsquo;s syntax and features, but to deeply explore why those features are necessary and how they can be applied in practice.&lt;/p&gt;
&lt;p&gt;The topics I have studied so far are as follows.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Object Class&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Object class is the top-level parent of all classes. I studied the reasons why the Object class is necessary, the features it provides, and also learned about the concepts of identity vs. equality in Java through the equals() method.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Immutable Objects&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;An immutable object is an object whose state cannot be changed after it is created. Many objects provided by Java—including String, wrapper classes, and date/time objects—are immutable. I studied why immutable objects are necessary and how to create them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;String Class&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The String class is used for handling character strings in Java. I studied not only the basic features of String objects but also the functional and performance differences between StringBuilder and String, as well as how Java optimizes the String class.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wrapper &amp;amp; Class Classes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I learned about the limitations of Java&amp;rsquo;s primitive types and studied the wrapper classes designed to overcome them. Additionally, I studied the Class class, which represents class information, the System class, which provides system information, and other frequently used classes like Math and Random.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enumerations (Enums)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Enums are an excellent feature that provides a high level of type safety. Rather than just learning the syntax, I studied the fundamental reasons why enums are necessary. I also tried implementing the &amp;ldquo;typesafe enum pattern&amp;rdquo; that was manually implemented in the days before enums existed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nested and Inner Classes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Placing a class within another class is known as a nested or inner class.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Exception Handling&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While Java&amp;rsquo;s exception handling syntax is simple, I studied why exception handling is necessary.&lt;/p&gt;</description></item><item><title>Spring MVC</title><link>https://wjdwlsdud.github.io/en/studying/spring/</link><pubDate>Sun, 12 Oct 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/en/studying/spring/</guid><description>&lt;p&gt;##From Servlets to Spring MVC: Learning the Evolution of Java Web Development
This time, I took the opportunity to trace the evolution of web applications, a technology that can be called the core of Java backend development.&lt;/p&gt;
&lt;p&gt;Why Web Applications? Most modern applications operate in a web environment. The countless services we use every day are, in fact, web applications. Java backend developers play a critical role in developing the server-side logic for these applications, and the most powerful tool used for this is the Spring Framework—specifically, Spring MVC.&lt;/p&gt;
&lt;p&gt;To gain a deep understanding of Spring MVC, which helps us develop complex web applications quickly and easily, I studied its foundational technologies step-by-step, starting from its very roots.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The Beginning of Java Web Tech: Servlets
Everything started with Servlets. A Servlet is pure Java code that receives a client&amp;rsquo;s request, processes business logic, and generates a dynamic HTML response. However, this approach had a major drawback: HTML code had to be written directly within the Java code as strings (e.g., out.println(&amp;quot;&lt;html&gt;&amp;hellip;&amp;quot;)). This made modifying the view (the UI) cumbersome and severely harmed readability.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Separating the View: JSP (JavaServer Pages)
JSP emerged to compensate for this shortcoming. JSP is a technology that allows embedding Java code within an HTML document, which made collaboration between designers and developers much easier. Thanks to this, the task of presenting the view became much more manageable.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;But JSP alone was not enough. Business logic and presentation code were still mixed in a single file. As projects grew larger, this led to &amp;ldquo;spaghetti code,&amp;rdquo; which became increasingly difficult to maintain.&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;The Start of Role Separation: The MVC Pattern
To solve this problem, a design philosophy called the MVC (Model-View-Controller) pattern emerged.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Model: Manages the data and business logic.&lt;/p&gt;
&lt;p&gt;View: Manages the screen (UI) shown to the user. (JSP)&lt;/p&gt;
&lt;p&gt;Controller: Acts as the intermediary, receiving the user&amp;rsquo;s request and connecting the Model and View. (Servlet)&lt;/p&gt;
&lt;p&gt;By clearly separating these roles, the code became much more structured and reusable.&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li&gt;The Birth of Spring MVC and its Practical Use
Implementing the MVC pattern manually still involved a lot of repetitive and cumbersome work. Developers began to create MVC frameworks to make using this pattern easier, and the most successful and overwhelmingly popular of these became Spring MVC.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Spring MVC handles the complex processes required for MVC implementation on behalf of the developer, providing an environment where one can focus solely on the business logic. This study covered everything from the origins of Spring MVC to the modern techniques used in the field, allowing me to personally understand why countless companies choose Spring.&lt;/p&gt;
&lt;p&gt;I will continue to share my experiences as I conduct my own projects using these technologies. Thank you!&lt;/p&gt;
&lt;p&gt;You can check out the code I&amp;rsquo;ve studied so far via the link attached above!&lt;/p&gt;</description></item><item><title>Apple Unveils “iOS AI,” Declaring a Shift from App-Centric to Agent-Centric Experiences</title><link>https://wjdwlsdud.github.io/en/news/news2/</link><pubDate>Fri, 10 Oct 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/en/news/news2/</guid><description>&lt;p&gt;Apple’s next operating system, &lt;strong&gt;“iOS AI,”&lt;/strong&gt; promises to move the smartphone experience from &lt;strong&gt;app-driven UX to agent-driven automation&lt;/strong&gt;. The company claims the update will “let the OS launch and complete tasks for users before they even open an app,” signaling dramatic industry changes ahead.&lt;/p&gt;
&lt;h2 id="1-whats-new-in-ios-ai"&gt;1. What’s New in iOS AI?&lt;/h2&gt;
&lt;p&gt;At the heart of the release is an &lt;strong&gt;agent-first OS&lt;/strong&gt;. The AI can proactively complete jobs without a user manually launching anything.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Headline features&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Execute multi-step workflows from a single natural-language request&lt;/li&gt;
&lt;li&gt;Predictive UI that puts suggested actions ahead of static icons&lt;/li&gt;
&lt;li&gt;AI summaries and triage for messages and mail&lt;/li&gt;
&lt;li&gt;Context-aware actions that consider time, location, and user state&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Apple calls this the dawn of the &lt;strong&gt;“No-App Surface Era.”&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="2-ux-shift-from-execution-to-delegation"&gt;2. UX Shift: From Execution to Delegation&lt;/h2&gt;
&lt;p&gt;Traditional smartphone UX follows the &lt;em&gt;“open app → do work”&lt;/em&gt; sequence. Apple plans to flip that model:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Existing UX&lt;/th&gt;
&lt;th&gt;iOS AI UX&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;User launches each app&lt;/td&gt;
&lt;td&gt;AI opens what’s needed first&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User hunts for info&lt;/td&gt;
&lt;td&gt;AI summarizes and organizes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User plans tasks&lt;/td&gt;
&lt;td&gt;AI suggests — and sometimes completes — actions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The company emphasizes that &lt;strong&gt;“users share intent, and the OS handles the execution.”&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="3-debate-and-concerns"&gt;3. Debate and Concerns&lt;/h2&gt;
&lt;p&gt;Experts highlight both upside and risk:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;“System-level automation will skyrocket productivity,&lt;br&gt;
but it invites an era of &lt;strong&gt;unprecedented regulation on privacy and algorithmic bias&lt;/strong&gt;.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Because AI now powers the OS core, users’ “right to know why they saw a given recommendation” is expected to grow even more critical.&lt;/p&gt;
&lt;h2 id="4-whats-next"&gt;4. What’s Next?&lt;/h2&gt;
&lt;p&gt;iOS AI is slated for beta in March and a public release in June next year. Analysts see the announcement as the opening salvo in a &lt;strong&gt;full-scale ‘AI OS war’ with Google and Samsung.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="5-bottom-line"&gt;5. Bottom Line&lt;/h2&gt;
&lt;p&gt;Apple’s message is clear: &lt;strong&gt;“Agents, not apps, will lead the next decade of mobile.”&lt;/strong&gt; The battleground is shifting from app stores to control over &lt;strong&gt;generative operating systems.&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;※ This feature is a fictional narrative and does not reflect any real-world Apple announcement.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Samsung Rumored to Launch “Galaxy Glass” Next Year, Eyeing Life Beyond Smartphones</title><link>https://wjdwlsdud.github.io/en/news/news3/</link><pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/en/news/news3/</guid><description>&lt;p&gt;Rumors suggest Samsung will introduce an AR wearable called &lt;strong&gt;“Galaxy Glass”&lt;/strong&gt; in the first half of next year, drawing intense attention from global tech circles. With Apple’s Vision Pro and Meta’s Quest lineup already sparring, analysts say Samsung’s entry into the &lt;strong&gt;full-stack AR arena&lt;/strong&gt; could reshape the market.&lt;/p&gt;
&lt;h2 id="1-ar-glasses-as-the-next-platform-after-smartphones"&gt;1. AR Glasses as the Next Platform After Smartphones&lt;/h2&gt;
&lt;p&gt;Industry insiders describe Galaxy Glass as an &lt;strong&gt;ultra-lightweight AR device&lt;/strong&gt; that can operate key functions without tethering to a phone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expected capabilities&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AR navigation and live translation&lt;/li&gt;
&lt;li&gt;Integration with the Samsung Gauss AI assistant&lt;/li&gt;
&lt;li&gt;Eye and gesture-based controls&lt;/li&gt;
&lt;li&gt;Cloud-streamed app execution&lt;/li&gt;
&lt;li&gt;Expanded ecosystem across phones and wearables&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Samsung reportedly sees the device as its main interface &lt;strong&gt;after the smartphone era.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="2-the-competitive-landscape"&gt;2. The Competitive Landscape&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Company&lt;/th&gt;
&lt;th&gt;Strategic Focus&lt;/th&gt;
&lt;th&gt;Weak Spot&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Apple&lt;/td&gt;
&lt;td&gt;High-end performance &amp;amp; premium ecosystem&lt;/td&gt;
&lt;td&gt;High price and entry barrier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meta&lt;/td&gt;
&lt;td&gt;Mass-market mixed reality&lt;/td&gt;
&lt;td&gt;Profitability challenges&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Samsung (rumored)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Lightweight, real-world usability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Need to secure content&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;While Apple pursues polish and Meta pursues scale, many expect Samsung to &lt;strong&gt;bet on practicality and comfort&lt;/strong&gt; to carve a different path.&lt;/p&gt;
&lt;h2 id="3-expert-take"&gt;3. Expert Take&lt;/h2&gt;
&lt;p&gt;One AR researcher notes:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;“Samsung is one of the few firms with &lt;strong&gt;display, chip, and device portfolios&lt;/strong&gt; under one roof.&lt;br&gt;
If it truly ships this product, it could be the swing factor in AR’s power balance.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Content, app ecosystems, regulation, and privacy protections remain hurdles.&lt;/p&gt;
&lt;h2 id="4-outlook"&gt;4. Outlook&lt;/h2&gt;
&lt;p&gt;If Galaxy Glass arrives, the chase for a platform beyond smartphones could harden into a &lt;strong&gt;three-way contest&lt;/strong&gt;. Observers wonder if 2026 might mark the first genuine year of mainstream AR adoption.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;※ This article is a fictional scenario created for storytelling and is unrelated to Samsung’s actual product plans.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Pacman</title><link>https://wjdwlsdud.github.io/en/projects/pacman/</link><pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/en/projects/pacman/</guid><description>&lt;p&gt;This is the UC Berkeley Pacman AI project I completed as part of my Artificial Intelligence and Data Structures coursework. The core objective of this assignment was to implement fundamental Graph Search algorithms from scratch and apply them to solve tangible problems within the Pacman game environment.&lt;/p&gt;
&lt;p&gt;My work involved implementing generic search algorithms in &lt;strong&gt;search.py&lt;/strong&gt; and defining/solving specific Pacman problems in &lt;strong&gt;searchAgents.py&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="1-core-search-algorithm-implementation-searchpy"&gt;1. Core Search Algorithm Implementation (search.py)&lt;/h2&gt;
&lt;p&gt;First, I implemented four fundamental search algorithms that can be applied to any search problem.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DFS (Depth-First Search): Using a &lt;strong&gt;Stack&lt;/strong&gt;, this algorithm explores nodes as deeply as possible first. It was implemented as a graph search, using an &lt;strong&gt;explored&lt;/strong&gt; list to prevent cycles.&lt;/li&gt;
&lt;li&gt;BFS (Breadth-First Search): Using a &lt;strong&gt;Queue&lt;/strong&gt;, this algorithm explores the shallowest (closest) nodes first. It guarantees the shortest path when all edge costs are uniform.&lt;/li&gt;
&lt;li&gt;UCS (Uniform Cost Search): Using a &lt;strong&gt;PriorityQueue&lt;/strong&gt;, this algorithm prioritizes nodes by their total cumulative &amp;lsquo;cost&amp;rsquo;. It always explores the path with the lowest cost first, guaranteeing the shortest cost path.&lt;/li&gt;
&lt;li&gt;A* (A-Star) Search: Also uses a &lt;strong&gt;PriorityQueue&lt;/strong&gt;, but its priority is the sum of the &amp;lsquo;cumulative cost to date&amp;rsquo; ($g(n)$) and an &amp;rsquo;estimated cost to the goal&amp;rsquo; (heuristic, $h(n)$). This function is $f(n) = g(n) + h(n)$. As an informed search, it finds the optimal solution far more efficiently than UCS.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-defining-and-solving-pacman-problems-searchagentspy"&gt;2. Defining and Solving Pacman Problems (searchAgents.py)&lt;/h2&gt;
&lt;p&gt;Beyond just implementing the algorithms, I modeled complex problems Pacman faces as formal &amp;lsquo;search problems&amp;rsquo; and solved them.&lt;/p&gt;
&lt;p&gt;📍 The Corners Problem (CornersProblem)
The challenge is to find a path for Pacman to visit all four corners of the map.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;State Definition: To solve this, the state space couldn&amp;rsquo;t just be (x, y). I defined the state as &lt;strong&gt;(currentPosition, (visitedCornersTuple))&lt;/strong&gt;. For example, a state might be &lt;strong&gt;((5, 5), (True, False, False, True))&lt;/strong&gt;, tracking both the position and the visit-status of each corner.&lt;/li&gt;
&lt;li&gt;Goal Definition: The goal state is reached when all boolean values in the tuple state[1] are &lt;strong&gt;True&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Successor Function: As Pacman moves, the function checks if the new position is one of the corners. If it is, it generates a new state with the corresponding boolean in the tuple updated to &lt;strong&gt;True&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;💡 Corners Problem Heuristic (cornersHeuristic)&lt;/p&gt;
&lt;p&gt;I designed a heuristic for solving the Corners Problem using A* search.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Design: A heuristic must be admissible (never overestimates the true cost).&lt;/li&gt;
&lt;li&gt;Logic: The function calculates the Manhattan Distance from the &amp;lsquo;current position&amp;rsquo; to &amp;rsquo;every unvisited corner&amp;rsquo;. It then returns the maximum (max) value among these distances.&lt;/li&gt;
&lt;li&gt;Justification: This is admissible because Pacman must travel at least as far as the farthest remaining corner to complete the goal. This value serves as a safe lower bound on the true remaining cost.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🍔 All Food Heuristic (foodHeuristic)&lt;/p&gt;
&lt;p&gt;This heuristic was for the &lt;strong&gt;FoodSearchProblem&lt;/strong&gt;, which involves finding a path to eat all the food dots on the map.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Logic: Similar to the corners heuristic, I calculated the actual maze distance (&lt;strong&gt;mazeDistance&lt;/strong&gt;) from the &amp;lsquo;current position&amp;rsquo; to &amp;rsquo;every remaining food dot&amp;rsquo; and returned the maximum (max) value.&lt;/li&gt;
&lt;li&gt;Using &lt;strong&gt;mazeDistance&lt;/strong&gt;: Unlike Manhattan distance, &lt;strong&gt;mazeDistance&lt;/strong&gt; is a helper function that runs a BFS to find the true shortest path considering walls, providing a much more accurate (and still admissible) estimate.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🎯 Closest Dot Search Agent&lt;/p&gt;
&lt;p&gt;Finding a path to eat all food is very complex (NP-hard). Therefore, I implemented a greedy algorithm that repeatedly finds and eats the closest food dot.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;findPathToClosestDot&lt;/strong&gt; Implementation: I defined a sub-problem called &lt;strong&gt;AnyFoodSearchProblem&lt;/strong&gt; (where the goal is to reach any single food dot).&lt;/li&gt;
&lt;li&gt;Using UCS: I applied &lt;strong&gt;UCS&lt;/strong&gt; to this sub-problem. This finds the path to the food dot with the lowest cost (i.e., the closest dot). (Since costs are uniform, &lt;strong&gt;BFS&lt;/strong&gt; would also have guaranteed the same result).&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Phone Book Application</title><link>https://wjdwlsdud.github.io/en/projects/mobile/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/en/projects/mobile/</guid><description>&lt;p&gt;This is a simple mobile app I created for my &amp;ldquo;Mobile Programming&amp;rdquo; course in the 2024 fall semester. This project is a phonebook management app that utilizes fundamental Android features and a database.&lt;/p&gt;
&lt;p&gt;First, I designed a database named phoneDB and a table named phoneTBL. This table stores a name (VARCHAR(20)) and a phone number (VARCHAR(20)). I set a UNIQUE constraint on the name column to prevent duplicates. I included two initial data entries: &amp;ldquo;Hong Gil-dong&amp;rdquo; and my own contact information.&lt;/p&gt;
&lt;p&gt;The main features I implemented are as follows:&lt;/p&gt;
&lt;p&gt;Main Screen (Read Data): On app launch, the app queries the database and displays all saved user names in a ListView. An &amp;ldquo;Add&amp;rdquo; button and an options menu are placed at the bottom.&lt;/p&gt;
&lt;p&gt;Add Contact (Create): Tapping the &amp;ldquo;Add&amp;rdquo; button opens a separate Activity to receive name and phone number input. Upon completion, this information is passed back to the main Activity, saved to the database, and the ListView is immediately refreshed.&lt;/p&gt;
&lt;p&gt;Database Initialization (Delete All): Selecting &amp;ldquo;Initialize&amp;rdquo; from the options menu displays a confirmation dialog. If the user confirms, all content in the database is deleted, and the list is refreshed.&lt;/p&gt;
&lt;p&gt;Data Backup (Export): Through the &amp;ldquo;Backup&amp;rdquo; feature in the options menu, I implemented a function to save all names and phone numbers from the database as a .txt file (named after my student ID) to the /sdcard path.&lt;/p&gt;
&lt;p&gt;Phone App Integration (Intent): When a specific item in the list is clicked, the app retrieves that item&amp;rsquo;s phone number and uses an Intent to immediately launch the default Android phone app with the number pre-filled.&lt;/p&gt;
&lt;p&gt;Update &amp;amp; Delete: A long click on a list item navigates to a separate Activity where the selected item can be modified or deleted. I implemented confirmation dialogs for each action. Upon completion, the changes are reflected in the main Activity&amp;rsquo;s database and ListView in real-time.&lt;/p&gt;</description></item><item><title>Linux TCP chat program</title><link>https://wjdwlsdud.github.io/en/projects/linux/</link><pubDate>Wed, 26 Jun 2024 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/en/projects/linux/</guid><description>&lt;p&gt;Based on what I learned in my Linux System Programming class, I implemented a simple multi-client TCP chat program as a project.&lt;/p&gt;
&lt;p&gt;It was a meaningful experience to directly apply the concepts of C socket communication and multithreading (pthreads). I&amp;rsquo;d like to summarize the project&amp;rsquo;s structure, core operating principles, and the key takeaways.&lt;/p&gt;
&lt;h2 id="1-project-overview"&gt;1. Project Overview&lt;/h2&gt;
&lt;p&gt;This program is a simple console-based (terminal) chatroom that allows a single server and multiple clients to chat in real-time over the TCP/IP protocol.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key Technologies&lt;/strong&gt;: C Language, TCP/IP Socket Programming, pthread (Multithreading)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Core Features&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Server: Manages multiple client connections simultaneously.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Broadcasting: Transmits a message from one client to all other connected clients (except the sender).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Multi-Chat: Allows multiple users to send and receive messages at the same time.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-core-architecture-how-concurrency-is-achieved"&gt;2. Core Architecture: How Concurrency is Achieved&lt;/h2&gt;
&lt;p&gt;The core challenge of a chat program is handling multiple requests simultaneously. Functions like accept(), recv(), and fgets() are blocking by default. This means the entire program pauses and waits for an operation to complete before moving on.&lt;/p&gt;
&lt;p&gt;I used multithreading to solve this problem.&lt;/p&gt;
&lt;p&gt;⚙️ &lt;strong&gt;Server: Thread-per-Client Model&lt;/strong&gt;
The server needs to handle connection requests and receive messages from multiple clients at the same time.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;The main thread waits for new client connections using the accept() function.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When a new client connects, it calls pthread_create() to create a new, dedicated thread (client_chat) just for that client.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;This dedicated thread waits for messages from its client using the recv() function.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The main thread immediately loops back to accept() to wait for the next client.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In effect, the &amp;ldquo;connection handling&amp;rdquo; thread (main) and the &amp;ldquo;per-client message receiving&amp;rdquo; threads all run independently and concurrently.&lt;/p&gt;
&lt;p&gt;When a thread receives a message, it calls the send_msg function, which iterates through the clientList to broadcast the message to all other clients.&lt;/p&gt;
&lt;p&gt;💻 &lt;strong&gt;Client: Separation of Sending and Receiving Threads The client has its own major&lt;/strong&gt;
challenge: it must be able to receive messages from others in real-time, even while the user is typing their own message.&lt;/p&gt;
&lt;p&gt;If it were single-threaded, the program would block on fgets() (waiting for user input), making it impossible to call recv() and receive incoming messages.&lt;/p&gt;
&lt;p&gt;To solve this problem, the client program is also split into two threads:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Main Thread (main function): This thread is dedicated only to the &amp;ldquo;sending&amp;rdquo; role. It waits for the user&amp;rsquo;s keyboard input (fgets) and sends (send) the message to the server.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Receiving Thread (receive function): Created with pthread_create(), this thread is dedicated only to the &amp;ldquo;receiving&amp;rdquo; role. It blocks on recv(), waiting for messages to arrive from the server.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;By splitting the roles this way, the receive thread can display incoming messages from the server in real-time, even while the user is busy typing a new message in the main thread.&lt;/p&gt;
&lt;p&gt;You can check out the code via the link(s) attached above!&lt;/p&gt;</description></item><item><title>experience</title><link>https://wjdwlsdud.github.io/en/experience/</link><pubDate>Tue, 24 Oct 2023 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/en/experience/</guid><description/></item></channel></rss>