<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Umitomo</title>
    <description>The latest articles on DEV Community by Umitomo (@umitomo-lab).</description>
    <link>https://dev.to/umitomo-lab</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3830906%2F16cf15d9-1805-4f8e-9063-eddbbac08195.png</url>
      <title>DEV Community: Umitomo</title>
      <link>https://dev.to/umitomo-lab</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/umitomo-lab"/>
    <language>en</language>
    <item>
      <title>A Curious Journey Into Reverse Engineering an AI-Generated Python .exe</title>
      <dc:creator>Umitomo</dc:creator>
      <pubDate>Tue, 26 May 2026 05:02:08 +0000</pubDate>
      <link>https://dev.to/umitomo-lab/a-curious-journey-into-reverse-engineering-an-ai-generated-python-exe-1n0b</link>
      <guid>https://dev.to/umitomo-lab/a-curious-journey-into-reverse-engineering-an-ai-generated-python-exe-1n0b</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I usually post weekly learning and development updates on Dev.to📝&lt;/p&gt;

&lt;p&gt;This time, however, I decided to write a standalone article about something a little different — my first attempt at reverse engineering🦾&lt;/p&gt;

&lt;p&gt;What started as simple curiosity quickly turned into an exciting journey of uncovering how a modern AI-generated Python application was actually structured internally🔎&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Reverse engineered a PyInstaller-based Python &lt;code&gt;.exe&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Reconstructed a surprisingly large portion of the application's architecture from the packaged &lt;code&gt;.exe&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Analyzed &lt;code&gt;.pyc&lt;/code&gt; files using tools like &lt;code&gt;strings&lt;/code&gt;, &lt;code&gt;pycdc&lt;/code&gt;, and &lt;code&gt;pycdas&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Learned how React/Vite frontend assets can be bundled into a standalone executable&lt;/li&gt;
&lt;li&gt;Realized how difficult production frontend bundles are to understand without the original source code&lt;/li&gt;
&lt;li&gt;Thought deeply about maintainability in the age of AI-generated applications&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  What I Reverse Engineered
&lt;/h1&gt;

&lt;p&gt;As someone who works in IT administration and internal tooling, I often become curious about how applications are actually built under the hood.&lt;/p&gt;

&lt;p&gt;This time, a coworker showed me a PDF-processing desktop application that had been created with the help of generative AI.&lt;/p&gt;

&lt;p&gt;The overall architecture had already been explained to me verbally beforehand.&lt;br&gt;
However, that led me to a simple but exciting question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How much of an application's internal structure can actually be reconstructed just by reverse engineering the final &lt;code&gt;.exe&lt;/code&gt; file?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That curiosity became the starting point of this exploration.&lt;/p&gt;

&lt;p&gt;The application itself was a harmless internal utility designed for local use, and this investigation was performed purely within an authorized and educational context.&lt;/p&gt;

&lt;p&gt;Rather than trying to analyze malware or bypass protections, I wanted to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What information remains inside packaged executables&lt;/li&gt;
&lt;li&gt;How modern Python applications are bundled&lt;/li&gt;
&lt;li&gt;Whether frontend/backend structures could still be inferred after packaging&lt;/li&gt;
&lt;li&gt;How much architectural detail could realistically be reconstructed from compiled artifacts alone&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What made the process especially exciting was slowly piecing together the architecture from small clues hidden inside the executable.&lt;/p&gt;


&lt;h1&gt;
  
  
  Reverse Engineering Environment Setup
&lt;/h1&gt;

&lt;p&gt;Since I was using Kali Linux on WSL for this experiment, I first prepared a small reverse engineering workspace.&lt;/p&gt;
&lt;h2&gt;
  
  
  Creating a Python Virtual Environment
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/reverse
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/reverse

python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
&lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;At first, the virtual environment failed because &lt;code&gt;python3-venv&lt;/code&gt; was missing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;python3.13-venv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that, I recreated the environment successfully.&lt;/p&gt;




&lt;h2&gt;
  
  
  Installing Basic Analysis Tools
&lt;/h2&gt;

&lt;p&gt;I installed a few basic tools for inspecting the executable and analyzing Python bytecode.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;pyinstaller
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I also installed &lt;code&gt;binutils&lt;/code&gt; so I could use &lt;code&gt;strings&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;binutils
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Building &lt;code&gt;pycdc&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;To inspect &lt;code&gt;.pyc&lt;/code&gt; files more deeply, I built &lt;code&gt;pycdc&lt;/code&gt; from source:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; cmake g++ git

&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/reverse/tools
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/reverse/tools

git clone https://github.com/zrax/pycdc.git

&lt;span class="nb"&gt;cd &lt;/span&gt;pycdc
&lt;span class="nb"&gt;mkdir &lt;/span&gt;build
&lt;span class="nb"&gt;cd &lt;/span&gt;build

cmake ..
make &lt;span class="nt"&gt;-j4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This generated:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pycdc
pycdas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;which I later used to inspect Python bytecode files.&lt;/p&gt;




&lt;h2&gt;
  
  
  Extracting the PyInstaller Executable
&lt;/h2&gt;

&lt;p&gt;After confirming the executable was likely packaged with PyInstaller, I used &lt;code&gt;pyinstxtractor&lt;/code&gt; to extract its contents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/extremecoders-re/pyinstxtractor.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/reverse/pdf_exe

python ~/reverse/pyinstxtractor/pyinstxtractor.py PDF.exe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This generated a directory like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PDF.exe_extracted/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside the extracted directory, I was finally able to inspect files such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.pyc
pdf_stamp_processor.pyc
pdf-stamp-frontend/dist
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This was the point where the application's overall structure started becoming much clearer.&lt;/p&gt;




&lt;h1&gt;
  
  
  How I Reverse Engineered It
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Step 1 — Running &lt;code&gt;strings&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;I first started with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;strings PDF.exe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Very quickly, I noticed Python-related strings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python313.dll
pyi-python-flag
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This strongly suggested that the application had been packaged using PyInstaller.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2 — Inspecting the PyInstaller Archive
&lt;/h2&gt;

&lt;p&gt;Next, I used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pyi-archive_viewer PDF.exe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This helped confirm that the executable had been packaged using PyInstaller and allowed me to inspect the internal archive structure.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3 — Analyzing &lt;code&gt;.pyc&lt;/code&gt; Files
&lt;/h2&gt;

&lt;p&gt;I then used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pycdc
pycdas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to inspect the extracted Python bytecode files.&lt;/p&gt;

&lt;p&gt;However, when running &lt;code&gt;pycdc&lt;/code&gt;, I noticed that some parts of the bytecode could not be fully reconstructed.&lt;/p&gt;

&lt;p&gt;In many cases, the output stopped after displaying messages like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Unsupported opcode: CALL_KW (247)
from fastapi import FastAPI, File, UploadFile, Form, HTTPException
...
# WARNING: Decompyle incomplete
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of fully recovering the original source code, I had to combine multiple fragmented clues together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Partial pycdc output&lt;/li&gt;
&lt;li&gt;pycdas disassembly output&lt;/li&gt;
&lt;li&gt;Extracted strings&lt;/li&gt;
&lt;li&gt;Module names&lt;/li&gt;
&lt;li&gt;API route names&lt;/li&gt;
&lt;li&gt;Library imports&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also used generative AI to help interpret and organize those fragmented technical details while reconstructing the application's architecture.&lt;/p&gt;

&lt;p&gt;Even with incomplete reconstruction, I was still able to identify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FastAPI routes&lt;/li&gt;
&lt;li&gt;PDF processing logic&lt;/li&gt;
&lt;li&gt;OpenCV-based blank-space detection&lt;/li&gt;
&lt;li&gt;PyMuPDF page rendering&lt;/li&gt;
&lt;li&gt;Automatic browser launching&lt;/li&gt;
&lt;li&gt;Local API endpoints such as:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/api/scan
/api/stamp_and_merge
/api/shutdown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 4 — Investigating the Frontend
&lt;/h2&gt;

&lt;p&gt;The frontend bundle was much harder to understand.&lt;/p&gt;

&lt;p&gt;The built JavaScript looked like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;defineProperty&lt;/span&gt;&lt;span class="p"&gt;,...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At first, it felt almost impossible to read.&lt;/p&gt;

&lt;p&gt;The extracted JavaScript was difficult to understand, and I could not initially tell what kind of frontend structure had originally existed before packaging.&lt;/p&gt;

&lt;p&gt;By combining:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The extracted dist/ directory structure&lt;/li&gt;
&lt;li&gt;The bundled JavaScript files&lt;/li&gt;
&lt;li&gt;API communication behavior observed in the browser developer tools&lt;/li&gt;
&lt;li&gt;And explanations generated through conversations with AI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I gradually started to understand how the frontend had likely been packaged and bundled, and that the application was probably using a modern frontend workflow similar to React/Vite.&lt;/p&gt;

&lt;p&gt;At the same time, I also realized that the original frontend source structure itself was no longer included inside the executable.&lt;/p&gt;




&lt;h1&gt;
  
  
  Reconstructing the Architecture
&lt;/h1&gt;

&lt;p&gt;By combining clues from strings, embedded &lt;code&gt;.pyc&lt;/code&gt; files, frontend assets, and API routes, I was eventually able to reconstruct a rough picture of the application's architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PDF.exe
    ↓
Launch FastAPI server
    ↓
Open browser automatically
    ↓
Serve React frontend
    ↓
React sends API requests
    ↓
Python processes PDFs locally
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The application was not rendering a desktop GUI directly.&lt;/p&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FastAPI served static frontend files&lt;/li&gt;
&lt;li&gt;React rendered the UI inside the browser&lt;/li&gt;
&lt;li&gt;Python handled backend processing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What fascinated me most was not simply discovering the architecture itself, but realizing how much of it could still be reconstructed purely from packaged artifacts.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I Learned
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Reverse Engineering Can Reveal More Than I Expected
&lt;/h2&gt;

&lt;p&gt;Before starting this experiment, I assumed that most of an application's architecture would disappear once everything had been packaged into a standalone &lt;code&gt;.exe&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;However, I was surprised by how many clues still remained inside the executable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python runtime artifacts&lt;/li&gt;
&lt;li&gt;PyInstaller structures&lt;/li&gt;
&lt;li&gt;Embedded &lt;code&gt;.pyc&lt;/code&gt; files&lt;/li&gt;
&lt;li&gt;Frontend build outputs&lt;/li&gt;
&lt;li&gt;API routes&lt;/li&gt;
&lt;li&gt;Localhost references&lt;/li&gt;
&lt;li&gt;Technology-specific strings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By connecting those small clues together step by step, I was able to reconstruct a surprisingly large portion of the application's overall architecture.&lt;/p&gt;

&lt;p&gt;That process itself was one of the most exciting parts of the experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  “Working Software” and “Understandable Software” Are Different Things
&lt;/h2&gt;

&lt;p&gt;This experience also made me think deeply about AI-generated applications and software maintainability.&lt;/p&gt;

&lt;p&gt;Generative AI can absolutely help create working applications quickly.&lt;br&gt;
However, once only compiled artifacts remain, reconstructing the original design and development intent becomes much harder.&lt;/p&gt;

&lt;p&gt;Even after reverse engineering the executable, I still could not fully reconstruct the original frontend source code or understand every implementation detail.&lt;/p&gt;

&lt;p&gt;That limitation itself became an important lesson for me.&lt;/p&gt;

&lt;p&gt;It reminded me that understanding software architecture and preserving maintainable source structures are just as important as making software work.&lt;/p&gt;

&lt;p&gt;Especially in the age of AI-assisted development.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;This reverse engineering journey was honestly a lot of fun.&lt;/p&gt;

&lt;p&gt;What made the experience especially enjoyable was gradually reconstructing the application's architecture from small technical clues hidden inside the executable.&lt;/p&gt;

&lt;p&gt;At the same time, the experience gave me a deeper appreciation for software architecture, maintainability, and the importance of preserving understandable source code alongside AI-generated applications.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>reversing</category>
      <category>security</category>
      <category>python</category>
    </item>
    <item>
      <title>Weekly Dev Log 2026-W06</title>
      <dc:creator>Umitomo</dc:creator>
      <pubDate>Thu, 21 May 2026 01:25:54 +0000</pubDate>
      <link>https://dev.to/umitomo-lab/weekly-dev-log-2026-w06-52do</link>
      <guid>https://dev.to/umitomo-lab/weekly-dev-log-2026-w06-52do</guid>
      <description>&lt;h2&gt;
  
  
  🗓️ This Week
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Made a little more progress in the SwiftUI tutorial🦾&lt;/li&gt;
&lt;li&gt;Started the journey of building my future portfolio site✈️ First, I created the project files and set up a repository on GitHub. I also started reserching React Router v7 by reading its documentation. I'm moving forward little by little🔥&lt;/li&gt;
&lt;li&gt;Completed the ContAInment room from the AI Security Learning Path on TryHackMe this week🤖&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  💡 Thoughts on the ContAInment Room
&lt;/h3&gt;

&lt;p&gt;This room was a hands-on investigation exercise set in a scenario where a company had suffered a security breach, resulting in important data being encrypted and used for blackmail. The goal was to investigate the compromised environment and discover the hidden flags🔎&lt;/p&gt;

&lt;p&gt;I felt that this room built nicely on the concepts I learned in the previous AI Forensics room. One thing I especially enjoyed was solving the investigation by using a dedicated &lt;strong&gt;AI assistant&lt;/strong&gt; available inside the victim environment🤖&lt;/p&gt;

&lt;p&gt;As I worked through the challenge, I had to think carefully about what looked suspicious and follow clues step by step while actively using Linux commands. It also turned out to be &lt;strong&gt;a great review of Linux operations and practical investigation workflows&lt;/strong&gt;🔥&lt;/p&gt;




&lt;h2&gt;
  
  
  📱 iOS (SwiftUI)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Worked through the SwiftUI tutorial and completed Sections 7 and 8: "Create an Algorithm for Badges"&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🌐 Web Development
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Posted my weekly dev log on Dev.to 📝&lt;/li&gt;
&lt;li&gt;Created a new React Router v7 project for my future portfolio site.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔐 Security (TryHackMe)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Completed the ContAInment room (part of the AI Security Learning Path) on TryHackMe.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  💡 Key Takeaways
&lt;/h1&gt;

&lt;h2&gt;
  
  
  📱 SwiftUI Learning
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Section 8: Calculate and Show Streaks
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Learned how to calculate a daily streak by comparing saved dates with the current day.&lt;/li&gt;
&lt;li&gt;Understood how reversing the array helps process moments from newest to oldest.&lt;/li&gt;
&lt;li&gt;Learned how &lt;code&gt;map&lt;/code&gt; and &lt;code&gt;compactMap&lt;/code&gt; can transform &lt;code&gt;Moment&lt;/code&gt; objects into simple day offsets like &lt;code&gt;[0, 1, 2]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Understood how &lt;code&gt;Calendar.dateComponents&lt;/code&gt; calculates date differences in calendar-based units.&lt;/li&gt;
&lt;li&gt;Learned that multiple moments on the same day should count as a single streak day.&lt;/li&gt;
&lt;li&gt;Realized that the &lt;code&gt;streak&lt;/code&gt; variable represents the next expected day offset during the calculation.&lt;/li&gt;
&lt;li&gt;Learned that comparing &lt;code&gt;daysAgo == streak&lt;/code&gt; is a simple way to detect consecutive days.&lt;/li&gt;
&lt;li&gt;Understood why using the end of the current day makes streak calculations more stable and predictable.&lt;/li&gt;
&lt;li&gt;Learned that &lt;code&gt;@ViewBuilder&lt;/code&gt; is used to build conditional or multiple-view UI structures, while &lt;code&gt;Group&lt;/code&gt; is mainly used to organize existing views or share modifiers without affecting layout.&lt;/li&gt;
&lt;li&gt;Understood that &lt;code&gt;VStack&lt;/code&gt; creates all child views immediately, whereas &lt;code&gt;LazyVStack&lt;/code&gt; generates views only when they become visible on screen.&lt;/li&gt;
&lt;li&gt;Realized that &lt;code&gt;LazyVStack&lt;/code&gt; is more suitable for scrollable, data-driven UIs with many or heavy views because it improves memory efficiency and performance.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🌐 Web Development Learning
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;React Router v7 Framework Mode is similar to Remix, so my Remix experience will still be useful.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;root.tsx&lt;/code&gt;, &lt;code&gt;routes.ts&lt;/code&gt;, and route files work together to render each page.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔐 TryHackMe Learning
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ContAInment
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Identified useful indicators from attacker notes and used them to recover encrypted files.&lt;/li&gt;
&lt;li&gt;Practiced DFIR-style investigation by following clues across logs, archives, and extracted data.&lt;/li&gt;
&lt;li&gt;Used AI-assisted forensic tools to analyze encoded flag candidates and identify the correct flag.&lt;/li&gt;
&lt;li&gt;Improved my understanding of how AI systems themselves can become targets in modern cyberattacks.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🚀 Next Week
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Complete the badge algorithm in the SwiftUI tutorial.&lt;/li&gt;
&lt;li&gt;Continue posting small articles on Dev.to and start creating Web UI designs in Figma.&lt;/li&gt;
&lt;li&gt;Continue working on the AI Security Learning Path.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🌈 Goals for This Year
&lt;/h1&gt;

&lt;h2&gt;
  
  
  📱 iOS (SwiftUI)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Build a solid foundation in SwiftUI and create at least one iOS app.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌐 Web Development
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Continue posting learning logs on Dev.to and eventually turn them into a portfolio site using React Router v7.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔐 Security (TryHackMe)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Continue learning cybersecurity on TryHackMe.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>devjournal</category>
      <category>security</category>
      <category>swift</category>
    </item>
    <item>
      <title>Weekly Dev Log 2026-W05</title>
      <dc:creator>Umitomo</dc:creator>
      <pubDate>Fri, 15 May 2026 04:44:53 +0000</pubDate>
      <link>https://dev.to/umitomo-lab/weekly-dev-log-2026-w05-3f1g</link>
      <guid>https://dev.to/umitomo-lab/weekly-dev-log-2026-w05-3f1g</guid>
      <description>&lt;h2&gt;
  
  
  🗓️ This Week
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Made a little more progress in the SwiftUI tutorial.&lt;/li&gt;
&lt;li&gt;Started researching web technology stacks and creating a roadmap to gradually turn my current blog into a portfolio site using React Router v7. I'm moving forward little by little.&lt;/li&gt;
&lt;li&gt;Completed the AI Forensics room from the AI Security Learning Path on TryHackMe this week.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  💡 Thoughts on the AI Forensics Room
&lt;/h3&gt;

&lt;p&gt;The AI Forensics room was much deeper and more challenging than I initially expected, and each task took a significant amount of time to complete. However, it turned out to be an incredibly valuable learning experience 🔥&lt;/p&gt;

&lt;p&gt;Task 5, &lt;strong&gt;"Practical - The Digital Trail,"&lt;/strong&gt; was especially impressive. It was a story-driven hands-on investigation where I analyzed a compromised company environment after attackers stole critical proprietary source code 🔎&lt;/p&gt;

&lt;p&gt;Instead of simply reading explanations, I had to actively investigate logs, suspicious files, reverse shells, persistence mechanisms, and data exfiltration activity step by step.&lt;/p&gt;

&lt;p&gt;Because I was constantly thinking, investigating, and connecting the dots myself, the experience felt far more practical and realistic. It gave me a much deeper understanding of how AI-assisted DFIR investigations work in real-world scenarios.&lt;/p&gt;

&lt;p&gt;One of the biggest lessons I learned from this room was that &lt;strong&gt;AI is a powerful tool, but human insight is still essential.&lt;/strong&gt; AI can quickly detect suspicious activity, but investigators still need to analyze the context and validate the findings themselves.&lt;/p&gt;




&lt;h2&gt;
  
  
  📱 iOS (SwiftUI)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Worked through the SwiftUI tutorial and completed Sections 6 and 7: "Create an Algorithm for Badges"&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🌐 Web Development
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Posted my weekly dev log on Dev.to 📝&lt;/li&gt;
&lt;li&gt;Researched how to transform my current blog site into the portfolio site I want to build in the future.&lt;/li&gt;
&lt;li&gt;Created a roadmap with ChatGPT to gradually turn my blog site into a portfolio site.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔐 Security (TryHackMe)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Completed the AI Forensics room (part of the AI Security Learning Path) on TryHackMe.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  💡 Key Takeaways
&lt;/h1&gt;

&lt;h2&gt;
  
  
  📱 SwiftUI Review
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Reviewed how SwiftData automatically creates relationships between &lt;code&gt;@Model&lt;/code&gt; objects through model properties.&lt;/li&gt;
&lt;li&gt;Understood how bidirectional relationships work between &lt;code&gt;Moment&lt;/code&gt; and &lt;code&gt;Badge&lt;/code&gt; models.&lt;/li&gt;
&lt;li&gt;Learned that &lt;code&gt;Group&lt;/code&gt; is useful when applying modifiers to conditionally displayed views.&lt;/li&gt;
&lt;li&gt;Realized that SwiftUI modifiers can only be attached to actual views, not directly to an &lt;code&gt;if&lt;/code&gt; statement.&lt;/li&gt;
&lt;li&gt;Reviewed how &lt;code&gt;@ViewBuilder&lt;/code&gt; allows a custom SwiftUI view to accept and display child views passed from outside.&lt;/li&gt;
&lt;li&gt;Understood that &lt;code&gt;.offset(y:)&lt;/code&gt; moves a view from its original position to fine-tune layouts.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔐 TryHackMe Learning
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AI Forensics Task 3 — AI &amp;amp; DFIR
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Learned how AI and machine learning are transforming modern DFIR investigations.&lt;/li&gt;
&lt;li&gt;Studied how CNN models can detect image tampering and manipulated content.&lt;/li&gt;
&lt;li&gt;Learned how machine learning is used in dynamic malware analysis.&lt;/li&gt;
&lt;li&gt;Understood that API call sequences represent program behavior patterns.&lt;/li&gt;
&lt;li&gt;Studied how API sequences can be converted into 2D images for AI analysis.&lt;/li&gt;
&lt;li&gt;Learned why CNN-based image recognition models can classify malware behavior.&lt;/li&gt;
&lt;li&gt;Learned how NLP models help identify phishing emails and suspicious communications.&lt;/li&gt;
&lt;li&gt;Understood how AI can reconstruct incident timelines from fragmented evidence.&lt;/li&gt;
&lt;li&gt;Studied how AI accelerates forensic analysis and improves detection capabilities.&lt;/li&gt;
&lt;li&gt;Understood that AI enhances human investigators rather than replacing them.&lt;/li&gt;
&lt;li&gt;Learned the importance of combining AI-assisted analysis with human expertise in cybersecurity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  AI Forensics Task 4 — AI Legal &amp;amp; Ethical Implications
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Learned that AI in forensics must be explainable and defensible in court.&lt;/li&gt;
&lt;li&gt;Understood how “black box” AI models can weaken the credibility of digital evidence.&lt;/li&gt;
&lt;li&gt;Learned that biased AI systems can lead to real-world injustice and wrongful accusations.&lt;/li&gt;
&lt;li&gt;Studied the importance of maintaining chain of custody and audit trails when using AI in DFIR.&lt;/li&gt;
&lt;li&gt;Understood why undocumented AI processing can make forensic evidence legally challengeable.&lt;/li&gt;
&lt;li&gt;Learned that privacy and legal compliance are critical when handling sensitive evidence with AI tools.&lt;/li&gt;
&lt;li&gt;Studied how Federated Learning and offline AI environments help preserve privacy.&lt;/li&gt;
&lt;li&gt;Learned that AI should enhance human investigators, not replace human judgment and responsibility.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  AI Forensics Task 5 — Practical: The Digital Trail
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Learned how AI and machine learning can support DFIR investigations by identifying suspicious logs and files.&lt;/li&gt;
&lt;li&gt;Studied how attackers use reverse shells to gain and maintain remote access to compromised systems.&lt;/li&gt;
&lt;li&gt;Learned how hidden files, &lt;code&gt;/tmp&lt;/code&gt;, and &lt;code&gt;/dev/shm&lt;/code&gt; are commonly abused for stealth and persistence.&lt;/li&gt;
&lt;li&gt;Understood how attackers disguise malicious tools as legitimate system utilities to evade detection.&lt;/li&gt;
&lt;li&gt;Studied how SSH key abuse and &lt;code&gt;authorized_keys&lt;/code&gt; modification can enable stealthy privilege escalation.&lt;/li&gt;
&lt;li&gt;Learned how fake telemetry logs and masquerading techniques help attackers blend into normal environments.&lt;/li&gt;
&lt;li&gt;Understood how compressed and Base64-encoded archives can be staged for data exfiltration.&lt;/li&gt;
&lt;li&gt;Learned how DFIR investigations connect evidence from logs, bash history, suspicious files, and network activity.&lt;/li&gt;
&lt;li&gt;Studied how AI can misclassify legitimate files as suspicious, highlighting the importance of human validation.&lt;/li&gt;
&lt;li&gt;Learned that AI enhances investigations, but human reasoning and contextual analysis remain essential in DFIR.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🚀 Next Week
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Complete the badge algorithm in the SwiftUI tutorial.&lt;/li&gt;
&lt;li&gt;Continue posting small articles on Dev.to.&lt;/li&gt;
&lt;li&gt;Continue working on the AI Security Learning Path.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🌈 Goals for This Year
&lt;/h1&gt;

&lt;h2&gt;
  
  
  📱 iOS (SwiftUI)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Build a solid foundation in SwiftUI and create at least one iOS app.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌐 Web Development
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Continue posting learning logs on Dev.to and eventually turn them into a portfolio site using React Router v7.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔐 Security (TryHackMe)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Continue learning cybersecurity on TryHackMe.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>devjournal</category>
      <category>security</category>
      <category>swift</category>
    </item>
    <item>
      <title>Weekly Dev Log 2026-W04</title>
      <dc:creator>Umitomo</dc:creator>
      <pubDate>Sat, 09 May 2026 05:36:45 +0000</pubDate>
      <link>https://dev.to/umitomo-lab/weekly-dev-log-2026-w04-26k1</link>
      <guid>https://dev.to/umitomo-lab/weekly-dev-log-2026-w04-26k1</guid>
      <description>&lt;h2&gt;
  
  
  🗓️ This Week
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;I had a long holiday during Golden Week in Japan and really enjoyed the break!&lt;/li&gt;
&lt;li&gt;Because of that, I didn't have as much learning time compared to last week 😂&lt;/li&gt;
&lt;li&gt;I made a little more progress in the SwiftUI tutorial&lt;/li&gt;
&lt;li&gt;It was my first time using GitHub Copilot in Xcode, and I tried using the chat feature to generate unit tests. I'd also like to gradually explore more advanced features such as custom instructions.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;I also want to thank everyone who commented on my previous &lt;a href="https://dev.to/umitomo-lab/weekly-dev-log-2026-w03-30a6"&gt;Weekly Dev Log 2026-W03&lt;/a&gt;✨&lt;/p&gt;

&lt;p&gt;Since English is not my native language, I was honestly a bit nervous about posting in English at first. But interacting with people on this platform has been a really valuable learning experience for me.&lt;/p&gt;

&lt;p&gt;The kind comments and discussions gave me more confidence to continue sharing my learning journey here. Thank you so much😊&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  📱 iOS (SwiftUI)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Worked through the Swift tutorial and completed Section 5: "Create an Algorithm for Badges"&lt;/li&gt;
&lt;li&gt;Used GitHub Copilot in Xcode to generate unit tests for badge sorting logic.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🌐 Web Development
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Posted my weekly dev log on Dev.to 📝&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔐 Security (TryHackMe)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Worked on the AI Forensics room (part of the AI Security Learning Path) on TryHackMe&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Reviewed the basics of building SwiftUI views using &lt;code&gt;NavigationStack&lt;/code&gt;, &lt;code&gt;ScrollView&lt;/code&gt;, and &lt;code&gt;HStack&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Learned how to integrate AI-assisted code generation into the testing workflow.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  TryHackMe Learning
&lt;/h3&gt;

&lt;h4&gt;
  
  
  AI Forensics
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Learned how AI/ML enhances DFIR through large-scale data processing, anomaly detection, and scalable analysis&lt;/li&gt;
&lt;li&gt;Explored practical AI use cases in DFIR tools, including phishing detection, malware classification, alert prioritisation, and event correlation&lt;/li&gt;
&lt;li&gt;Learned the difference between deterministic systems and probabilistic AI models, and why non-determinism can become a challenge in digital forensics&lt;/li&gt;
&lt;li&gt;Studied key AI evaluation metrics such as accuracy, precision, and recall, and learned why these metrics can be misleading when viewed in isolation&lt;/li&gt;
&lt;li&gt;Understood the “Garbage In, Garbage Out (GIGO)” principle and how low-quality training data can lead to unreliable AI outputs&lt;/li&gt;
&lt;li&gt;Learned that AI can accelerate DFIR workflows, but human oversight and validation are still essential in forensic investigations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 Next Week
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Continue working on the badge algorithm (Section 6) in the SwiftUI tutorial&lt;/li&gt;
&lt;li&gt;Continue posting small articles on Dev.to&lt;/li&gt;
&lt;li&gt;Continue working on the AI Security Learning Path&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌈 Goals for This Year
&lt;/h2&gt;

&lt;h4&gt;
  
  
  📱 iOS (SwiftUI)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Build a solid foundation in SwiftUI and create at least one iOS app&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  🌐 Web Development
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Continue posting learning logs on Dev.to and eventually turn them into a portfolio site using React Router v7&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  🔐 Security (TryHackMe)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Keep learning cybersecurity on TryHackMe&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>devjournal</category>
      <category>security</category>
      <category>swift</category>
    </item>
    <item>
      <title>Weekly Dev Log 2026-W03</title>
      <dc:creator>Umitomo</dc:creator>
      <pubDate>Tue, 28 Apr 2026 06:21:07 +0000</pubDate>
      <link>https://dev.to/umitomo-lab/weekly-dev-log-2026-w03-30a6</link>
      <guid>https://dev.to/umitomo-lab/weekly-dev-log-2026-w03-30a6</guid>
      <description>&lt;h2&gt;
  
  
  🗓️ This Week
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Finally finished the Cyber Security 101 learning path and discovered the AI Security Learning Path on TryHackMe&lt;/li&gt;
&lt;li&gt;Completed 2 rooms from the AI Security Learning Path this week&lt;/li&gt;
&lt;li&gt;Decided to continue working on the SwiftUI tutorial (also explored React Native with Expo out of curiosity)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📱 iOS (SwiftUI)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ran unit tests for badge unlocking logic and stepped through them using breakpoints&lt;/li&gt;
&lt;li&gt;Researched the differences between SwiftUI and React Native (with Expo) to determine the best platform for my learning&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🌐 Web Development
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Posted my weekly learning and development log on Dev.to📝&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔐 Security (TryHackMe)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Completed 2 rooms from the AI Security Learning Path on TryHackMe (AI Models &amp;amp; Data, Prompt Engineering)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Learned how to use the &lt;code&gt;po&lt;/code&gt; command and the &lt;code&gt;map&lt;/code&gt; function in the console during debugging&lt;/li&gt;
&lt;li&gt;Chose SwiftUI to focus on native iOS development (compared to React Native with Expo)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  TryHackMe Learning
&lt;/h3&gt;

&lt;h4&gt;
  
  
  AI Models &amp;amp; Data
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Learned that most AI models rely heavily on Common Crawl, a large public dataset collected from the internet&lt;/li&gt;
&lt;li&gt;Realized that unclear data provenance and hidden sensitive data can lead to security risks&lt;/li&gt;
&lt;li&gt;Learned that training decisions can impact security, including potential data leakage&lt;/li&gt;
&lt;li&gt;Understood that optimization techniques introduce trade-offs between efficiency and security&lt;/li&gt;
&lt;li&gt;Learned that fine-tuning inherits risks from base models such as bias and unsafe behavior&lt;/li&gt;
&lt;li&gt;Realized that models are black boxes and difficult to fully audit&lt;/li&gt;
&lt;li&gt;Learned that model cards are important but often incomplete&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Prompt Engineering
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Learned that LLMs process text as tokens and generate probabilistic outputs&lt;/li&gt;
&lt;li&gt;Learned how parameters like temperature and top-p affect responses&lt;/li&gt;
&lt;li&gt;Learned that effective prompts require clear instructions, context, format, and constraints&lt;/li&gt;
&lt;li&gt;Understood the difference between system prompts and user prompts&lt;/li&gt;
&lt;li&gt;Practiced prompt techniques such as zero-shot, few-shot, and Chain-of-Thought&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 Next Week
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Continue working on the badge algorithm (Section 5) in the SwiftUI tutorial&lt;/li&gt;
&lt;li&gt;Continue posting small articles on Dev.to&lt;/li&gt;
&lt;li&gt;Continue working on the AI security Learning Path&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>devjournal</category>
      <category>security</category>
      <category>swift</category>
    </item>
    <item>
      <title>Weekly Dev Log 2026-W02</title>
      <dc:creator>Umitomo</dc:creator>
      <pubDate>Wed, 22 Apr 2026 07:24:49 +0000</pubDate>
      <link>https://dev.to/umitomo-lab/weekly-dev-log-2026-w02-3ink</link>
      <guid>https://dev.to/umitomo-lab/weekly-dev-log-2026-w02-3ink</guid>
      <description>&lt;h2&gt;
  
  
  🗓️ This Week
&lt;/h2&gt;

&lt;h3&gt;
  
  
  📱 iOS (SwiftUI)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Worked on the SwiftUI tutorial and completed Section 4 (Create an algorithm for badges)&lt;/li&gt;
&lt;li&gt;Built a test file to verify the badge algorithm&lt;/li&gt;
&lt;li&gt;Created unit tests for badge unlocking logic using an in-memory SwiftData container&lt;/li&gt;
&lt;li&gt;Ran unit tests and stepped through them using breakpoint&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🌐 Web Development
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Posted my weekly learning and development log on Dev.to&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔐 Security (TryHackMe)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Completed OWASP Top 10 2025: Insecure Data Handling on TryHackMe&lt;/li&gt;
&lt;li&gt;Worked on the AI/ML Security Threats room and completed Tasks 1–4&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Learned how to use MARK: comments for code organization&lt;/li&gt;
&lt;li&gt;Understood the difference between insert and save, and how to isolate business logic from the UI&lt;/li&gt;
&lt;li&gt;Reviewed how to inspect variable values during debugging&lt;/li&gt;
&lt;li&gt;Learned how SSTI can lead to server-side code execution&lt;/li&gt;
&lt;li&gt;Understood the difference between Base64 encoding and actual encryption&lt;/li&gt;
&lt;li&gt;Reviewed the basics of AI/ML&lt;/li&gt;
&lt;li&gt;Learned how LLMs work&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Next Week
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Test the badge algorithm and complete the SwiftUI tutorial section&lt;/li&gt;
&lt;li&gt;Continue posting small articles on Dev.to&lt;/li&gt;
&lt;li&gt;Continue working on the AI security learning path&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>devjournal</category>
      <category>security</category>
      <category>swift</category>
    </item>
    <item>
      <title>Weekly Dev Log 2026-W01</title>
      <dc:creator>Umitomo</dc:creator>
      <pubDate>Fri, 17 Apr 2026 07:22:41 +0000</pubDate>
      <link>https://dev.to/umitomo-lab/weekly-dev-log-2026-w01-4n6j</link>
      <guid>https://dev.to/umitomo-lab/weekly-dev-log-2026-w01-4n6j</guid>
      <description>&lt;h2&gt;
  
  
  🗓️ This Week
&lt;/h2&gt;

&lt;h3&gt;
  
  
  📱 iOS (SwiftUI)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Worked on the SwiftUI tutorial and completed Section 4 Steps 9–12 (Create an algorithm for badges)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🌐 Web Development
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Started posting articles on Dev.to&lt;/li&gt;
&lt;li&gt;Managing my articles using GitHub and GitHub Actions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔐 Security (TryHackMe)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Completed OWASP Top 10 2025: IAAA Failures and Application Design Flaws on TryHackMe&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Learned basic state management through implementing a badge system in SwiftUI&lt;/li&gt;
&lt;li&gt;Building a habit of posting regularly is important for consistency&lt;/li&gt;
&lt;li&gt;Application design flaws can lead to serious security vulnerabilities&lt;/li&gt;
&lt;li&gt;Relearned how to check port status using nc and Nmap in Bash&lt;/li&gt;
&lt;li&gt;Learned how to send POST requests using curl&lt;/li&gt;
&lt;li&gt;Learned how to decrypt data using OpenSSL&lt;/li&gt;
&lt;li&gt;Understood the difference between Base64 encoding and AES-128-ECB encryption&lt;/li&gt;
&lt;li&gt;Learned how to use Gobuster&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Next Week
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Test the badge algorithm implementation&lt;/li&gt;
&lt;li&gt;Continue posting small articles on Dev.to&lt;/li&gt;
&lt;li&gt;Complete the remaining OWASP challenge rooms&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>devjournal</category>
      <category>webdev</category>
      <category>swift</category>
    </item>
    <item>
      <title>Hello Dev.to!👋 I'm starting my journey as a developer🌱</title>
      <dc:creator>Umitomo</dc:creator>
      <pubDate>Wed, 15 Apr 2026 02:52:20 +0000</pubDate>
      <link>https://dev.to/umitomo-lab/hello-devto-im-starting-my-journey-as-a-developer-5agb</link>
      <guid>https://dev.to/umitomo-lab/hello-devto-im-starting-my-journey-as-a-developer-5agb</guid>
      <description>&lt;h2&gt;
  
  
  👋 Hello Dev.to!
&lt;/h2&gt;

&lt;p&gt;Hi, I'm Umitomo 🐠 from Japan 🇯🇵&lt;br&gt;&lt;br&gt;
I work as an &lt;strong&gt;in-house systems engineer&lt;/strong&gt;, mainly focusing on IT infrastructure and security.&lt;/p&gt;

&lt;h2&gt;
  
  
  💼 What I do
&lt;/h2&gt;

&lt;p&gt;In my daily work, I handle IT infrastructure and security operations.&lt;/p&gt;

&lt;p&gt;Outside of work, I enjoy building things as a hobby and have been learning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SwiftUI (iOS development)&lt;/li&gt;
&lt;li&gt;Web development (Remix, Cloudflare)&lt;/li&gt;
&lt;li&gt;Cybersecurity (TryHackMe)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 What I'm building
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🌐 Web Development
&lt;/h3&gt;

&lt;p&gt;I built a personal blog using &lt;strong&gt;Remix + Cloudflare + microCMS&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Since I plan to publish articles on Dev.to, I'm thinking about turning it into a portfolio site using &lt;strong&gt;React Router v7&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  📱 iOS Development
&lt;/h3&gt;

&lt;p&gt;I'm currently learning SwiftUI through tutorials.&lt;br&gt;&lt;br&gt;
I'd love to build apps that I can enjoy with my kids.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 Why I'm here
&lt;/h2&gt;

&lt;p&gt;I chose Dev.to because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I want to challenge myself to write in English&lt;/li&gt;
&lt;li&gt;I like the culture where it's okay to share not only tutorials but also personal learning journeys&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I feel it's a great place to grow as a developer while sharing my progress.&lt;/p&gt;

&lt;h2&gt;
  
  
  ✍️ What I’ll write about
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;My journey from infrastructure to development&lt;/li&gt;
&lt;li&gt;Development logs and technical notes&lt;/li&gt;
&lt;li&gt;Security learning and experiments&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌱 My goal
&lt;/h2&gt;

&lt;p&gt;I'm starting small, but I want to stay consistent and keep learning step by step.&lt;/p&gt;

&lt;h2&gt;
  
  
  🙌 Nice to meet you!
&lt;/h2&gt;

&lt;p&gt;Feel free to connect with me!&lt;/p&gt;

</description>
      <category>introduction</category>
      <category>beginners</category>
      <category>devjournal</category>
      <category>career</category>
    </item>
  </channel>
</rss>
