<?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:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Ethan's Blog]]></title><description><![CDATA[Thoughts, stories and ideas.]]></description><link>https://blog.eny.li/</link><image><url>https://blog.eny.li/favicon.png</url><title>Ethan&apos;s Blog</title><link>https://blog.eny.li/</link></image><generator>Ghost 5.40</generator><lastBuildDate>Sat, 04 Apr 2026 15:49:45 GMT</lastBuildDate><atom:link href="https://blog.eny.li/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Advanced 3D Face Reconstruction: Innovations and Challenges]]></title><link>https://blog.eny.li/advanced-3d-face-reconstruction-innovations-and-challenges-in-the-metaverse-entertainment-industry/</link><guid isPermaLink="false">65ba596c0d69fe0001b897ff</guid><category><![CDATA[Career Portfolio]]></category><dc:creator><![CDATA[Ethan Yu]]></dc:creator><pubDate>Wed, 31 Jan 2024 14:30:04 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1511331528021-af91b624a676?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fG11bHRpcGxlJTIwY2FtZXJhfGVufDB8fHx8MTcwNjcyMTAwOXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded/></item><item><title><![CDATA[The Power of Environment: Insights from Environmental Psychology]]></title><description><![CDATA[<p>Environmental psychology is a fascinating field that delves into the intricate relationship between people and their surroundings. This discipline recognizes that our environments, whether they be natural, built, social, or cultural, play a profound role in shaping our behaviors, emotions, and overall well-being. In light of a recent narrative on</p>]]></description><link>https://blog.eny.li/the-power-of-environment-insights-from-environmental-psychology/</link><guid isPermaLink="false">64e0a4e7968b1c00014ab61d</guid><category><![CDATA[Psychology]]></category><category><![CDATA[Applied Psychology]]></category><category><![CDATA[Environmental Psychology]]></category><dc:creator><![CDATA[Ethan Yu]]></dc:creator><pubDate>Sat, 19 Aug 2023 11:17:59 GMT</pubDate><content:encoded><![CDATA[<p>Environmental psychology is a fascinating field that delves into the intricate relationship between people and their surroundings. This discipline recognizes that our environments, whether they be natural, built, social, or cultural, play a profound role in shaping our behaviors, emotions, and overall well-being. In light of a recent narrative on personal growth, the impact of environment on one&apos;s development becomes even clearer.</p><h2 id="immersion-the-fast-track-to-learning">Immersion: The Fast-Track to Learning</h2><p>Consider the example of an individual trying to learn a language. Traditional methods might include classroom lessons, memorization, and repetitive practice. But what if this individual were suddenly placed in the heart of a city where that language is the primary mode of communication, without any resources? The immersion would force the person to adapt rapidly, accelerating the learning process. This is not just about learning a language; it&apos;s about the environmental context enhancing and speeding up the learning process.</p><h2 id="the-athletic-phenomenon-thriving-in-high-performance-environments">The Athletic Phenomenon: Thriving in High-Performance Environments</h2><p>Similarly, when an average individual joins a national athletics team, they&apos;re no longer in their comfort zone. They&apos;re surrounded by elite athletes, rigorous training regimens, and a culture of excellence. This environment doesn&apos;t just challenge them; it transforms them. Environmental psychology posits that such high-performance environments can elevate an individual&apos;s abilities, pushing them to levels they might not have reached in a more mundane setting.</p><h2 id="military-training-a-testament-to-environmental-transformation">Military Training: A Testament to Environmental Transformation</h2><p>The transformative power of environment is further evident in military training. New recruits undergo intensive training in an environment that is starkly different from civilian life. This environment, with its discipline, structure, and camaraderie, molds individuals into soldiers.</p><h2 id="change-the-environment-change-the-self">Change the Environment, Change the Self</h2><p>The narrative emphasizes a profound insight: changing personal habits and learning methods can be challenging, but altering one&apos;s environment can act as a catalyst for growth. From an environmental psychology perspective, this resonates deeply. Our surroundings constantly interact with our internal processes, subtly guiding our actions, thoughts, and feelings. A supportive, challenging, and nurturing environment can foster growth, while a negative one can hinder it.</p><h2 id="in-conclusion">In Conclusion</h2><p>Environmental psychology teaches us that our surroundings are not mere backdrops to our lives; they&apos;re active players in our personal development journey. If we wish to grow, sometimes it&apos;s not about trying harder but about placing ourselves in environments that naturally steer us towards betterment. In 2023 and beyond, may we all find or create those environments that propel us to our best selves.</p>]]></content:encoded></item><item><title><![CDATA[Taking a Closer Look at Ngrok for SSH Tunneling]]></title><description><![CDATA[<p>Howdy tech enthusiasts! &#x1F913; Today, we&apos;re taking a deep dive into the world of Ngrok and SSH tunneling. I&apos;ll be your guide through this process and by the end of it, you&apos;ll be a master at setting up <strong><a href="https://ngrok.com/?ref=blog.eny.li">Ngrok</a></strong> to expose your SSH service</p>]]></description><link>https://blog.eny.li/taking-a-closer-look-at-ngrok-for-ssh-tunneling/</link><guid isPermaLink="false">645b561c7748ac000158cc3b</guid><category><![CDATA[Computer Science]]></category><category><![CDATA[Computer Network]]></category><category><![CDATA[Reverse Proxy]]></category><dc:creator><![CDATA[Ethan Yu]]></dc:creator><pubDate>Wed, 10 May 2023 08:30:20 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1485796826113-174aa68fd81b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDI0fHxoYWNrZXJ8ZW58MHx8fHwxNjgzNjk5Nzg2&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1485796826113-174aa68fd81b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDI0fHxoYWNrZXJ8ZW58MHx8fHwxNjgzNjk5Nzg2&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Taking a Closer Look at Ngrok for SSH Tunneling"><p>Howdy tech enthusiasts! &#x1F913; Today, we&apos;re taking a deep dive into the world of Ngrok and SSH tunneling. I&apos;ll be your guide through this process and by the end of it, you&apos;ll be a master at setting up <strong><a href="https://ngrok.com/?ref=blog.eny.li">Ngrok</a></strong> to expose your SSH service on port 22 to the internet. Plus, I&apos;ll show you how to stop the Ngrok process when you&apos;re done using it. Sound good? Let&apos;s get started!</p><h2 id="getting-started-with-ngrok">Getting Started with Ngrok</h2><p>1. Download the Ngrok binary from the official website:</p><p><code>wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz</code></p><p>2. Unpack the downloaded file using the tar command:</p><p><code>tar --extract --verbose --file ngrok-v3-stable-linux-amd64.tgz</code></p><p>3. Move the Ngrok binary to a directory in your system&apos;s PATH:</p><p><code>mv ngrok /usr/local/bin</code></p><h2 id="setting-up-your-ngrok-account">Setting Up Your Ngrok Account</h2><p>3. Get your Ngrok authtoken from your account dashboard on the Ngrok website.</p><p>4. Add the authtoken to the configuration file to authenticate with the Ngrok service:</p><p><code>ngrok config add-authtoken Your_Authtoken_Here</code></p><h2 id="running-ngrok">Running Ngrok</h2><p>5. Run Ngrok to expose your SSH service to the internet (replace <code>22</code> with your SSH service port number if different):</p><p><code>ngrok tcp 22</code></p><p>Or you can run Ngrok in the background and keep it running even after closing the terminal using the <code>nohup</code> command and send the process to the background using <code>&amp;</code>:</p><p><code>nohup ngrok tcp 22 --log=/path/to/your/logfile.log &amp;</code></p><h2 id="monitoring-the-ngrok-log">Monitoring the Ngrok Log</h2><p>6. You can monitor the Ngrok log to see the status of the tunnel:</p><p><code>tail --follow=name /path/to/your/logfile.log</code></p><p>At the end of the log output, you should see a line that looks like this:</p><p><code>t=2023-05-10T05:52:42+0000 lvl=info msg=&quot;started tunnel&quot; obj=tunnels name=command_line addr=//localhost:22 url=tcp://0.tcp.jp.ngrok.io:10465</code></p><p>The URL at the end of this line is the public URL that you can use to access your SSH service from the internet.</p><h2 id="wrapping-up-your-ngrok-session">Wrapping Up Your Ngrok Session</h2><p>Once you&apos;re done with Ngrok, you can stop the process by finding its process ID (PID) and then using the <code>kill</code> command:</p><p>7. Find the PID of the Ngrok process using the <code>ps aux | grep ngrok</code> command:</p><p><code>ps aux | grep --color=auto ngrok</code></p><p>8. Once you have the PID, use the <code>kill</code> command to stop the Ngrok process:</p><p><code>kill Ngrok_PID</code></p><p>Don&apos;t forget to replace <code>Ngrok_PID</code> with the actual process ID of the Ngrok process.</p><p>And that&apos;s a wrap, folks! You&apos;ve successfully set up Ngrok for SSH tunneling on your Linux system. Congratulations! You can now access your SSH service from anywhere with an internet connection.</p><p>Thanks for tuning in and happy hacking! &#x1F60E;</p>]]></content:encoded></item><item><title><![CDATA[Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis]]></title><description><![CDATA[<p>As a dedicated software engineer and a proud member of the PLASS lab, I had the unique opportunity to contribute to a cutting-edge project entitled &quot;Diaphragm Function Evaluation through Chest CT Image in COPD Patients.&quot; This project, a collaboration with Prof. Jinkyeong Park from the Department of Pulmonary</p>]]></description><link>https://blog.eny.li/diaphragm-function-evaluation-in-copd-patients-using-chest-ct-image-analysis/</link><guid isPermaLink="false">644bfcf47748ac000158cc1f</guid><category><![CDATA[Career Portfolio]]></category><dc:creator><![CDATA[Ethan Yu]]></dc:creator><pubDate>Fri, 28 Apr 2023 17:05:56 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1666214280165-20e3d73d70bf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDMyfHxjb21wdXRlZCUyMHRvbW9ncmFwaHl8ZW58MHx8fHwxNjgyNzAyNzMz&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1666214280165-20e3d73d70bf?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDMyfHxjb21wdXRlZCUyMHRvbW9ncmFwaHl8ZW58MHx8fHwxNjgyNzAyNzMz&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis"><p>As a dedicated software engineer and a proud member of the PLASS lab, I had the unique opportunity to contribute to a cutting-edge project entitled &quot;Diaphragm Function Evaluation through Chest CT Image in COPD Patients.&quot; This project, a collaboration with Prof. Jinkyeong Park from the Department of Pulmonary at Kyung Hee University Hospital, was generously supported by the Ministry of Science and ICT (MSIT) of the Government of the Republic of Korea. Our primary objective was to develop a precise and practical method for evaluating diaphragm function in COPD patients using chest CT images.</p><figure class="kg-card kg-image-card"><img src="https://blog.eny.li/content/images/2024/02/1.png" class="kg-image" alt="Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis" loading="lazy" width="2000" height="771" srcset="https://blog.eny.li/content/images/size/w600/2024/02/1.png 600w, https://blog.eny.li/content/images/size/w1000/2024/02/1.png 1000w, https://blog.eny.li/content/images/size/w1600/2024/02/1.png 1600w, https://blog.eny.li/content/images/size/w2400/2024/02/1.png 2400w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/III-Flowchart.png" width="2000" height="2652" loading="lazy" alt="Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis" srcset="https://blog.eny.li/content/images/size/w600/2023/04/III-Flowchart.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/III-Flowchart.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/III-Flowchart.png 1600w, https://blog.eny.li/content/images/size/w2400/2023/04/III-Flowchart.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/III.D-Peripulmonary-outlier-deduction-1.png" width="2000" height="1376" loading="lazy" alt="Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis" srcset="https://blog.eny.li/content/images/size/w600/2023/04/III.D-Peripulmonary-outlier-deduction-1.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/III.D-Peripulmonary-outlier-deduction-1.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/III.D-Peripulmonary-outlier-deduction-1.png 1600w, https://blog.eny.li/content/images/size/w2400/2023/04/III.D-Peripulmonary-outlier-deduction-1.png 2400w" sizes="(min-width: 720px) 720px"></div></div></div></figure><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/III.A-Data-preprocessing-1.png" width="2000" height="1448" loading="lazy" alt="Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis" srcset="https://blog.eny.li/content/images/size/w600/2023/04/III.A-Data-preprocessing-1.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/III.A-Data-preprocessing-1.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/III.A-Data-preprocessing-1.png 1600w, https://blog.eny.li/content/images/2023/04/III.A-Data-preprocessing-1.png 2216w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/III.C-Acquisition-of-pulmonary-3D-point-cloud-1.png" width="2000" height="1945" loading="lazy" alt="Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis" srcset="https://blog.eny.li/content/images/size/w600/2023/04/III.C-Acquisition-of-pulmonary-3D-point-cloud-1.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/III.C-Acquisition-of-pulmonary-3D-point-cloud-1.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/III.C-Acquisition-of-pulmonary-3D-point-cloud-1.png 1600w, https://blog.eny.li/content/images/size/w2400/2023/04/III.C-Acquisition-of-pulmonary-3D-point-cloud-1.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/III.E-Pulmonary-substructure-segmentation-and-polygon-mesh-reconstruction-1.png" width="2000" height="529" loading="lazy" alt="Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis" srcset="https://blog.eny.li/content/images/size/w600/2023/04/III.E-Pulmonary-substructure-segmentation-and-polygon-mesh-reconstruction-1.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/III.E-Pulmonary-substructure-segmentation-and-polygon-mesh-reconstruction-1.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/III.E-Pulmonary-substructure-segmentation-and-polygon-mesh-reconstruction-1.png 1600w, https://blog.eny.li/content/images/size/w2400/2023/04/III.E-Pulmonary-substructure-segmentation-and-polygon-mesh-reconstruction-1.png 2400w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/III.F-Uniform-sampling-of-based-on-collision-detection-1.png" width="2000" height="1756" loading="lazy" alt="Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis" srcset="https://blog.eny.li/content/images/size/w600/2023/04/III.F-Uniform-sampling-of-based-on-collision-detection-1.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/III.F-Uniform-sampling-of-based-on-collision-detection-1.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/III.F-Uniform-sampling-of-based-on-collision-detection-1.png 1600w, https://blog.eny.li/content/images/size/w2400/2023/04/III.F-Uniform-sampling-of-based-on-collision-detection-1.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/III.G.1-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png" width="2000" height="937" loading="lazy" alt="Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis" srcset="https://blog.eny.li/content/images/size/w600/2023/04/III.G.1-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/III.G.1-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/III.G.1-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png 1600w, https://blog.eny.li/content/images/size/w2400/2023/04/III.G.1-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/III.G.2-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png" width="2000" height="2456" loading="lazy" alt="Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis" srcset="https://blog.eny.li/content/images/size/w600/2023/04/III.G.2-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/III.G.2-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/III.G.2-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png 1600w, https://blog.eny.li/content/images/size/w2400/2023/04/III.G.2-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png 2400w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/III.G.3-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png" width="2000" height="898" loading="lazy" alt="Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis" srcset="https://blog.eny.li/content/images/size/w600/2023/04/III.G.3-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/III.G.3-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/III.G.3-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png 1600w, https://blog.eny.li/content/images/size/w2400/2023/04/III.G.3-Surface-fitting-of-the-pulmonary-diaphragmatic-contact-surface--1.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/III.H.1-Properties-and-area-correction-for-surface-meshes-1.png" width="2000" height="924" loading="lazy" alt="Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis" srcset="https://blog.eny.li/content/images/size/w600/2023/04/III.H.1-Properties-and-area-correction-for-surface-meshes-1.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/III.H.1-Properties-and-area-correction-for-surface-meshes-1.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/III.H.1-Properties-and-area-correction-for-surface-meshes-1.png 1600w, https://blog.eny.li/content/images/size/w2400/2023/04/III.H.1-Properties-and-area-correction-for-surface-meshes-1.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/IV.B.1-Experimental-results-1.png" width="2000" height="1014" loading="lazy" alt="Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis" srcset="https://blog.eny.li/content/images/size/w600/2023/04/IV.B.1-Experimental-results-1.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/IV.B.1-Experimental-results-1.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/IV.B.1-Experimental-results-1.png 1600w, https://blog.eny.li/content/images/size/w2400/2023/04/IV.B.1-Experimental-results-1.png 2400w" sizes="(min-width: 720px) 720px"></div></div></div></figure><h2 id="project-approach">Project Approach</h2><p>As the architect of the experiment, I was responsible for designing and implementing the code. Our approach comprised several stages, utilizing image processing algorithms, computational geometry algorithms, and surface fitting algorithms to generate simulated diaphragm surfaces. We employed Python, C++, MATLAB, NumPy, Pandas, CGAL, OpenCV, Open3D, Plotly, and other libraries in our implementation.</p><p>The following steps were undertaken during the project:</p><ol><li>Reading CT slices from DICOM images and generating a 3D visualization of the lungs.</li><li>Implementing a Python-based denoising algorithm to minimize image noise.</li><li>Extracting the lung bottom from the 3D visualization and converting the 3D point cloud into a 3D polygon mesh.</li><li>Creating numerous polylines using CGAL and C++ and intersecting these polylines with the 3D polygon mesh of pulmonary substructure.</li><li>Recording the coordinates of polyline intersections with the 3D polygon mesh.</li><li>Constructing a non-border diaphragm surface using MATLAB&apos;s gridfit surface fitting function.</li><li>Segmenting the final diaphragm surface using the pulmonary substructure mask, extracted via a collision algorithm-based method.</li><li>Designing a correction technique to obtain the area closest to the actual situation, considering that the simulated diaphragm and the real diaphragm&apos;s end are not connected.</li></ol><h2 id="results-and-achievements">Results and Achievements</h2><p>Our innovative method demonstrated exceptional accuracy and feasibility in evaluating diaphragm function in COPD patients. We submitted a paper entitled &quot;Motility Analysis of Diaphragm in Patients with Chronic Pulmonary Lung Disease Based on Computed Tomography Technique&quot; to IEEE Access, where I serve as the lead author. The paper is currently under review (manuscript number Access-2023-01370).</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://drive.google.com/file/d/1x7YrUQv0c9mizGTI0jQtVuobIYc-DqIl/view?usp=sharing&amp;ref=blog.eny.li"><div class="kg-bookmark-content"><div class="kg-bookmark-title">IEEE_Access_Paper_Hao_Yu-v9.1.0.pdf</div><div class="kg-bookmark-description"></div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://ssl.gstatic.com/images/branding/product/1x/drive_2020q4_32dp.png" alt="Diaphragm Function Evaluation in COPD Patients Using Chest CT Image Analysis"><span class="kg-bookmark-author">Google Docs</span></div></div></a></figure><p>This project yielded a non-invasive and accurate method for assessing diaphragm function in COPD patients, with the potential to enhance diagnostic and treatment strategies. Furthermore, our project provided an unparalleled learning experience, as our diverse team consisted of members from three different countries.</p><h2 id="conclusion">Conclusion</h2><p>In summary, our proposed method for evaluating diaphragm function in COPD patients using chest CT image analysis showcased outstanding accuracy and practicality. We made use of various algorithms and libraries throughout the implementation process, ultimately producing a non-invasive method for assessing diaphragm function in COPD patients. This project also fostered a unique learning environment, as our team collaborated with specialists from various countries.</p>
        <div class="kg-card kg-file-card kg-file-card-medium">
            <a class="kg-file-card-container" href="https://blog.eny.li/content/files/2023/04/project_screenshot-3.zip" title="Download" download>
                <div class="kg-file-card-contents">
                    <div class="kg-file-card-title">Project screenshot</div>
                    
                    <div class="kg-file-card-metadata">
                        <div class="kg-file-card-filename">project_screenshot.zip</div>
                        <div class="kg-file-card-filesize">40 MB</div>
                    </div>
                </div>
                <div class="kg-file-card-icon">
                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><defs><style>.a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}</style></defs><title>download-circle</title><polyline class="a" points="8.25 14.25 12 18 15.75 14.25"/><line class="a" x1="12" y1="6.75" x2="12" y2="18"/><circle class="a" cx="12" cy="12" r="11.25"/></svg>
                </div>
            </a>
        </div>
        ]]></content:encoded></item><item><title><![CDATA[Developing just-LINK Mobile: A React-Native-Based Educational Video Conferencing App]]></title><description><![CDATA[<p>As a software engineer, I had the opportunity to lead the development of just-LINK mobile, an educational video conferencing app using React Native and TypeScript. Our team, comprising members from four different countries, employed TypeScript to catch errors at compile-time and reduce data redundancy in REST API and WebSocket.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_12.png" width="1283" height="2778" loading="lazy" alt srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_12.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_12.png 1000w, https://blog.eny.li/content/images/2023/04/1_12.png 1283w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_14.png" width="1284" height="2778" loading="lazy" alt srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_14.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_14.png 1000w, https://blog.eny.li/content/images/2023/04/1_14.png 1284w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_16-2.png" width="648" height="1318" loading="lazy" alt srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_16-2.png 600w, https://blog.eny.li/content/images/2023/04/1_16-2.png 648w"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_18-1.png" width="1320" height="648" loading="lazy" alt srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_18-1.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_18-1.png 1000w, https://blog.eny.li/content/images/2023/04/1_18-1.png 1320w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_21-3.png" width="648" height="1303" loading="lazy" alt srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_21-3.png 600w, https://blog.eny.li/content/images/2023/04/1_21-3.png 648w"></div></div></div></figure><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_22.png" width="648" height="1302" loading="lazy" alt srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_22.png 600w, https://blog.eny.li/content/images/2023/04/1_22.png 648w"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_23.png" width="888" height="1920" loading="lazy" alt srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_23.png 600w, https://blog.eny.li/content/images/2023/04/1_23.png 888w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_25.png" width="1284" height="2778" loading="lazy" alt srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_25.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_25.png 1000w, https://blog.eny.li/content/images/2023/04/1_25.png 1284w" sizes="(min-width: 720px) 720px"></div></div></div></figure><h2 id="team-collaboration-and-leadership">Team</h2>]]></description><link>https://blog.eny.li/developing-just-link-mobile-a-react-native-based-educational-video-conferencing-app/</link><guid isPermaLink="false">644a65897748ac000158cc11</guid><category><![CDATA[Career Portfolio]]></category><dc:creator><![CDATA[Ethan Yu]]></dc:creator><pubDate>Thu, 27 Apr 2023 12:07:37 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1512428559087-560fa5ceab42?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDQxfHxtb2JpbGUlMjBtZWV0aW5nfGVufDB8fHx8MTY4MjYwMjAwMw&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1512428559087-560fa5ceab42?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDQxfHxtb2JpbGUlMjBtZWV0aW5nfGVufDB8fHx8MTY4MjYwMjAwMw&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Developing just-LINK Mobile: A React-Native-Based Educational Video Conferencing App"><p>As a software engineer, I had the opportunity to lead the development of just-LINK mobile, an educational video conferencing app using React Native and TypeScript. Our team, comprising members from four different countries, employed TypeScript to catch errors at compile-time and reduce data redundancy in REST API and WebSocket.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_12.png" width="1283" height="2778" loading="lazy" alt="Developing just-LINK Mobile: A React-Native-Based Educational Video Conferencing App" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_12.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_12.png 1000w, https://blog.eny.li/content/images/2023/04/1_12.png 1283w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_14.png" width="1284" height="2778" loading="lazy" alt="Developing just-LINK Mobile: A React-Native-Based Educational Video Conferencing App" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_14.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_14.png 1000w, https://blog.eny.li/content/images/2023/04/1_14.png 1284w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_16-2.png" width="648" height="1318" loading="lazy" alt="Developing just-LINK Mobile: A React-Native-Based Educational Video Conferencing App" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_16-2.png 600w, https://blog.eny.li/content/images/2023/04/1_16-2.png 648w"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_18-1.png" width="1320" height="648" loading="lazy" alt="Developing just-LINK Mobile: A React-Native-Based Educational Video Conferencing App" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_18-1.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_18-1.png 1000w, https://blog.eny.li/content/images/2023/04/1_18-1.png 1320w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_21-3.png" width="648" height="1303" loading="lazy" alt="Developing just-LINK Mobile: A React-Native-Based Educational Video Conferencing App" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_21-3.png 600w, https://blog.eny.li/content/images/2023/04/1_21-3.png 648w"></div></div></div></figure><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_22.png" width="648" height="1302" loading="lazy" alt="Developing just-LINK Mobile: A React-Native-Based Educational Video Conferencing App" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_22.png 600w, https://blog.eny.li/content/images/2023/04/1_22.png 648w"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_23.png" width="888" height="1920" loading="lazy" alt="Developing just-LINK Mobile: A React-Native-Based Educational Video Conferencing App" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_23.png 600w, https://blog.eny.li/content/images/2023/04/1_23.png 888w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_25.png" width="1284" height="2778" loading="lazy" alt="Developing just-LINK Mobile: A React-Native-Based Educational Video Conferencing App" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_25.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_25.png 1000w, https://blog.eny.li/content/images/2023/04/1_25.png 1284w" sizes="(min-width: 720px) 720px"></div></div></div></figure><h2 id="team-collaboration-and-leadership">Team Collaboration and Leadership</h2><p>As the lead developer, I ensured that our team delivered high-quality software on time. I developed my leadership skills and learned to communicate effectively with a diverse team. We followed the agile development model, using Jira for task management and Slack for communication. Unito.io helped us connect Jira, Github, and Slack, making task synchronization easier. Our team culture emphasized transparency, mutual respect, and effective feedback, helping us work efficiently and deliver results.</p><h2 id="tech-stack">Tech Stack</h2><p>We used a combination of React Native, React Native WebRTC, React Native Incall Manager, React Native Async Storage, React Native Clipboard, React Native Picker, React Native Modal, React Native Permissions, React Native SVG, Android SDK, and libraries like React, React Router, React Navigation, Redux, Redux Persist, Redux Thunk, Reselect, Immer, and Lodash for the just-LINK mobile client. This tech stack helped us create a user-friendly, responsive, and feature-rich app. React Native framework played a significant role in delivering a seamless and native-like experience across both iOS and Android platforms. React Native WebRTC helped us implement real-time video conferencing, delivering a high-quality and reliable video conferencing experience to our users.</p><h2 id="features-and-contributions">Features and Contributions</h2><p>During the development of the just-LINK mobile app, I played a crucial role in several areas, including:</p><ul><li>Designing and developing a comprehensive cross-platform app architecture, ensuring optimal functional UI for both iOS and Android platforms.</li><li>Implementing efficient Redux state management and designing the meeting room screen layout.</li><li>Developing multiple REST API requests, including a feature to send the local device state to other users and building a swipe meeting room UI allowing users to swipe and touch videos of participants, bringing them to the center of the screen.</li><li>Employing the AES algorithm using crypto-js to encrypt usernames and passwords, ensuring enhanced security.</li><li>Conducting iOS app testing using TestFlight and successfully submitting the app to the App Store for distribution.</li><li>Reviewing all pull requests while suggesting necessary changes and taking charge of 75% of the app development.</li><li>Implementing screen share functionality and creating the UI for the landscape mode of the app.</li><li>Creating various screens, such as AuthScreen, ChatScreen, JoinLinkScreen, LectureScreen, LoginScreen, MeetingScreen, RoomInfoScreen, and UserListScreen, to provide users with an exceptional experience.</li><li>Developing various features, including the ask-to-join feature for guest users and the ability to change usernames.</li><li>Creating detailed setup and contribution documentation to ensure project transparency and scalability.</li><li>Internationalizing the app for four different languages, enhancing its global appeal.</li></ul><h2 id="learning-experience">Learning Experience</h2><p>Developing the just-LINK mobile client was a remarkable learning experience. Collaborating with a multicultural team taught me the importance of effective communication and feedback. We used an agile development model, refining our features based on user feedback, delivering software in increments. Working on this project allowed me to hone my skills in TypeScript, React Native, and mobile app development.</p><h2 id="conclusion">Conclusion</h2><p>The development of just-LINK mobile was an exciting and challenging project that allowed me to develop my skills as a software engineer and as a leader. Our team developed a system that empowers educators to deliver an interactive and engaging learning experience to their students remotely. I&apos;m proud to be part of this team and look forward to continuing to work on this project and delivering a high-quality product that will benefit the education industry.</p>
        <div class="kg-card kg-file-card kg-file-card-medium">
            <a class="kg-file-card-container" href="https://blog.eny.li/content/files/2023/04/project_screenshot-2.zip" title="Download" download>
                <div class="kg-file-card-contents">
                    <div class="kg-file-card-title">Project screenshot</div>
                    
                    <div class="kg-file-card-metadata">
                        <div class="kg-file-card-filename">project_screenshot.zip</div>
                        <div class="kg-file-card-filesize">26 MB</div>
                    </div>
                </div>
                <div class="kg-file-card-icon">
                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><defs><style>.a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}</style></defs><title>download-circle</title><polyline class="a" points="8.25 14.25 12 18 15.75 14.25"/><line class="a" x1="12" y1="6.75" x2="12" y2="18"/><circle class="a" cx="12" cy="12" r="11.25"/></svg>
                </div>
            </a>
        </div>
        ]]></content:encoded></item><item><title><![CDATA[Developing just-LINK: A WebRTC-Based Educational Video Conferencing Software]]></title><description><![CDATA[<p>As a software engineer, I had the opportunity to work on the development of just-LINK, a WebRTC-based educational video conferencing software. The project was a collaboration between our PLASS lab team and Unique UX Co., Ltd., with the aim of developing a system that would seamlessly integrate with their learning</p>]]></description><link>https://blog.eny.li/developing-just-link-a-webrtc-based-educational-video-conferencing-software/</link><guid isPermaLink="false">644915f47748ac000158cc03</guid><category><![CDATA[Career Portfolio]]></category><dc:creator><![CDATA[Ethan Yu]]></dc:creator><pubDate>Wed, 26 Apr 2023 12:15:48 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1585974738771-84483dd9f89f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDR8fHZpZGVvJTIwY29uZmVyZW5jZXxlbnwwfHx8fDE2ODI1MTQ5Njc&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1585974738771-84483dd9f89f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDR8fHZpZGVvJTIwY29uZmVyZW5jZXxlbnwwfHx8fDE2ODI1MTQ5Njc&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Developing just-LINK: A WebRTC-Based Educational Video Conferencing Software"><p>As a software engineer, I had the opportunity to work on the development of just-LINK, a WebRTC-based educational video conferencing software. The project was a collaboration between our PLASS lab team and Unique UX Co., Ltd., with the aim of developing a system that would seamlessly integrate with their learning management system, enabling educators to deliver an interactive and engaging learning experience to their students remotely.</p><figure class="kg-card kg-image-card"><img src="https://blog.eny.li/content/images/2023/04/1_4.png" class="kg-image" alt="Developing just-LINK: A WebRTC-Based Educational Video Conferencing Software" loading="lazy" width="1024" height="629" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_4.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_4.png 1000w, https://blog.eny.li/content/images/2023/04/1_4.png 1024w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_2.png" width="492" height="728" loading="lazy" alt="Developing just-LINK: A WebRTC-Based Educational Video Conferencing Software"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_6.png" width="2000" height="1125" loading="lazy" alt="Developing just-LINK: A WebRTC-Based Educational Video Conferencing Software" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_6.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_6.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/1_6.png 1600w, https://blog.eny.li/content/images/size/w2400/2023/04/1_6.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_9.png" width="1708" height="1113" loading="lazy" alt="Developing just-LINK: A WebRTC-Based Educational Video Conferencing Software" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_9.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_9.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/1_9.png 1600w, https://blog.eny.li/content/images/2023/04/1_9.png 1708w" sizes="(min-width: 720px) 720px"></div></div></div></figure><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_16-1.png" width="1582" height="938" loading="lazy" alt="Developing just-LINK: A WebRTC-Based Educational Video Conferencing Software" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_16-1.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_16-1.png 1000w, https://blog.eny.li/content/images/2023/04/1_16-1.png 1582w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_17.png" width="1774" height="1304" loading="lazy" alt="Developing just-LINK: A WebRTC-Based Educational Video Conferencing Software" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_17.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_17.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/1_17.png 1600w, https://blog.eny.li/content/images/2023/04/1_17.png 1774w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_18.png" width="641" height="917" loading="lazy" alt="Developing just-LINK: A WebRTC-Based Educational Video Conferencing Software" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_18.png 600w, https://blog.eny.li/content/images/2023/04/1_18.png 641w"></div></div></div></figure><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_20.png" width="1673" height="955" loading="lazy" alt="Developing just-LINK: A WebRTC-Based Educational Video Conferencing Software" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_20.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_20.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/1_20.png 1600w, https://blog.eny.li/content/images/2023/04/1_20.png 1673w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_21.png" width="2000" height="999" loading="lazy" alt="Developing just-LINK: A WebRTC-Based Educational Video Conferencing Software" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_21.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_21.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/1_21.png 1600w, https://blog.eny.li/content/images/size/w2400/2023/04/1_21.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_24.png" width="1492" height="1002" loading="lazy" alt="Developing just-LINK: A WebRTC-Based Educational Video Conferencing Software" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_24.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_24.png 1000w, https://blog.eny.li/content/images/2023/04/1_24.png 1492w" sizes="(min-width: 720px) 720px"></div></div></div></figure><h2 id="role-and-contributions">Role and Contributions</h2><p>My role as a software engineer involved developing 40% of the frontend React web application and 20% of the backend Node.js and MySQL development. I used various tools and technologies such as TypeScript, JavaScript, ES6, Node.js, ExpressJS, MySQL, Redis, Nginx, CloudFlare, Webpack, Babel, Sass, CSS3, HTML5, React, Redux, Redux-Thunk, Redux Persist Utilities, reselect, Socket.IO, WebRTC, Lodash, Moment.js, Axios, Passport, Postman, Git, GitHub, Vim, Visual Studio Code, WebStorm, Xcode, npm, Yarn, nodemon, pm2, and TURN server to accomplish my responsibilities.</p><h2 id="features-implemented">Features Implemented</h2><p>The following are some of the features that I implemented in just-LINK:</p><h3 id="server-management">Server Management:</h3><ul><li>Configured Nginx configuration files to ensure seamless server operation.</li><li>Installed and established a TURN server for reliable and secure communication.</li></ul><h3 id="general">General:</h3><ul><li>Developed efficient and concise code for various HTTP requests utilizing Axios.</li><li>Implemented multiple REST API endpoints using Express.js.</li><li>Utilized multiple socket.io to incorporate multiple websocket emitters and listeners for real-time communication.</li><li>Designed and modified database tables to store data using node-mysql2, thereby achieving efficient data management.</li><li>Created state management instances using Redux and related tools such as Redux-Thunk.</li></ul><h3 id="meeting-room-component-development">Meeting Room Component Development:</h3><ul><li>Integrated React-Toastify to facilitate in-app notifications of user entry/exit for an enhanced user experience.</li><li>Developed a feature to enable instructors to approve/deny student entry to the meeting room for better control.</li><li>Constructed a dropdown menu within the video component to ensure easy access to settings.</li><li>Implemented a feature to enable users to update their displayed names within the meeting room.</li></ul><h3 id="landing-page-component-development">Landing Page Component Development:</h3><ul><li>Designed the user interface for the landing page component based on the provided Zeplin design to create a cohesive and attractive UI.</li><li>Developed a sound meter component to visually represent microphone sound levels on the landing page for a better user experience.</li><li>Created a camera and microphone selector component to manage audio/visual input options on the landing page for improved functionality.</li><li>Designed a setting to allow instructors to preset student camera and microphone settings in the meeting room settings page for better customization.</li></ul><h3 id="user-list-component-development">User List Component Development:</h3><ul><li>Developed the user interface design for the user list component based on the provided Zeplin design.</li><li>Incorporated a sliding transition effect when switching between user list views with React Transition Group to create a smooth user experience.</li><li>Differentiated user avatars based on host permissions to provide a clear indication of host status.</li><li>Designed the user list to pin the current user and added functionality for other users to pin the list for better organization.</li></ul><h3 id="chat-component-development">Chat Component Development:</h3><ul><li>Implemented the user interface design for the chat component based on the provided Zeplin design.</li><li>Designed a feature to cancel downloads to enhance usability.</li><li>Incorporated direct/private messaging functionality for better communication.</li><li>Integrated a feature to download files from a chat window for a better user experience.</li><li>Improved the user interface of image and file transfers for better visual display.</li></ul><h2 id="collaboration-and-communication">Collaboration and Communication</h2><p>Working on just-LINK provided me with the opportunity to collaborate with multicultural teams, as our team members came from 4 different countries. Effective communication and feedback were crucial for the project&apos;s success. We learned how to communicate effectively, provide feedback regularly, and work toward a common goal. Through this experience, I developed my communication skills and learned how to work in a team effectively.</p><h2 id="agile-software-development">Agile Software Development</h2><p>Just-LINK was developed using an agile software development approach, allowing us to deliver the software in increments and continuously refine the features based on user feedback. Working with an agile team taught me how to prioritize tasks, break them down into smaller, more manageable components, and adapt to changes quickly.</p><h2 id="conclusion">Conclusion</h2><p>In conclusion, developing just-LINK was an incredible learning experience that allowed me to gain valuable experience in software development, collaboration, communication, and agile software development. The skills I have acquired during this project will be beneficial in my future endeavors. I am proud to have been part of the team that developed just-LINK, a system that empowers educators to deliver an interactive and engaging learning experience to their students remotely.</p>
        <div class="kg-card kg-file-card kg-file-card-medium">
            <a class="kg-file-card-container" href="https://blog.eny.li/content/files/2023/04/project_screenshot-1.zip" title="Download" download>
                <div class="kg-file-card-contents">
                    <div class="kg-file-card-title">Project screenshot</div>
                    
                    <div class="kg-file-card-metadata">
                        <div class="kg-file-card-filename">project_screenshot.zip</div>
                        <div class="kg-file-card-filesize">18 MB</div>
                    </div>
                </div>
                <div class="kg-file-card-icon">
                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><defs><style>.a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}</style></defs><title>download-circle</title><polyline class="a" points="8.25 14.25 12 18 15.75 14.25"/><line class="a" x1="12" y1="6.75" x2="12" y2="18"/><circle class="a" cx="12" cy="12" r="11.25"/></svg>
                </div>
            </a>
        </div>
        ]]></content:encoded></item><item><title><![CDATA[How to Debug Code in PyCharm]]></title><description><![CDATA[<p>Debugging code is an essential skill for any programmer. It allows you to identify and fix errors in your code quickly and efficiently. PyCharm comes with a powerful debugger that can make the debugging process much easier. In this blog post, we will explore the different debugging features available in</p>]]></description><link>https://blog.eny.li/how-to-debug-code-in-pycharm/</link><guid isPermaLink="false">64363aef69d8e10001b5523b</guid><category><![CDATA[Computer Science]]></category><category><![CDATA[Software Development]]></category><category><![CDATA[Core Activities]]></category><category><![CDATA[Debugging]]></category><dc:creator><![CDATA[Ethan Yu]]></dc:creator><pubDate>Wed, 12 Apr 2023 05:00:31 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1555949963-ff9fe0c870eb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDE2fHxjb2Rpbmd8ZW58MHx8fHwxNjgxMzE4Mzc1&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1555949963-ff9fe0c870eb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDE2fHxjb2Rpbmd8ZW58MHx8fHwxNjgxMzE4Mzc1&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="How to Debug Code in PyCharm"><p>Debugging code is an essential skill for any programmer. It allows you to identify and fix errors in your code quickly and efficiently. PyCharm comes with a powerful debugger that can make the debugging process much easier. In this blog post, we will explore the different debugging features available in PyCharm and how to use them effectively.</p><h2 id="setting-breakpoints">Setting Breakpoints</h2><p>Breakpoints are markers in your code that tell the debugger to pause the program&apos;s execution at a specific line of code. You can set a breakpoint in PyCharm by clicking on the left margin of the code editor. A red dot will appear, indicating that the debugger will pause the program&apos;s execution at that line.</p><pre><code class="language-python"># Example of setting a breakpoint in PyCharm
def main():
    x = 1
    y = 2
    z = x + y  # Set breakpoint on this line
    print(z)

if __name__ == &quot;__main__&quot;:
    main()
</code></pre><h2 id="stepping-through-your-code">Stepping Through Your Code</h2><p>Once you have set a breakpoint, you can use the Step Over button to execute the next line of code after the breakpoint. This is useful when you want to step through your code line by line and identify the source of a problem. To use Step Over, click on the Step Over button, which looks like a blue right arrow.</p><pre><code class="language-python"># Example of using the Step Over button in PyCharm
def main():
    x = 1
    y = 2
    z = x + y  # Set breakpoint on this line
    print(z)  # Use Step Over to execute this line

if __name__ == &quot;__main__&quot;:
    main()
</code></pre><p>The Step Into button allows you to step into a function call and inspect its implementation. If you only want to step into your code and not external libraries, you can use the Step Into My Code button.</p><pre><code class="language-python"># Example of using the Step Into button in PyCharm
def add(x, y):
    return x + y

def main():
    x = 1
    y = 2
    z = add(x, y)  # Set breakpoint on this line
    print(z)  # Use Step Into to inspect the add function

if __name__ == &quot;__main__&quot;:
    main()
</code></pre><p>The Step Out button allows you to move out of the current function and return to the caller function. This is useful when you want to quickly move to the next function call without stepping through the entire function&apos;s implementation.</p><pre><code class="language-python"># Example of using the Step Out button in PyCharm
def add(x, y):
    return x + y

def subtract(x, y):
    return x - y

def main():
    x = 1
    y = 2
    z = add(x, y)  # Set breakpoint on this line
    a = subtract(z, y)  # Use Step Out to move to this line
    print(a)

if __name__ == &quot;__main__&quot;:
    main()
</code></pre><h2 id="evaluating-expressions">Evaluating Expressions</h2><p>The Evaluate Expression window allows you to enter arbitrary expressions and evaluate them in the context of your program. This can help you quickly identify the source of a problem by inspecting variables and their values at different points in your program&apos;s execution.</p><pre><code class="language-python"># Example of using the Evaluate Expression window in PyCharm
def main():
    x = 1
    y = 2
    z = x + y  # Set breakpoint on this line
    print(z)  # Open Evaluate Expression window and enter &quot;x + y&quot;

if __name__ == &quot;__main__&quot;:
    main()
</code></pre><h2 id="conclusion">Conclusion</h2><p>The PyCharm Debugger is a powerful tool that can help you debug your code quickly and efficiently. By learning how to use the various debugging features in PyCharm, you can save a lot of time and effort in the debugging process. Set breakpoints at critical points in your code, use Step Over to step through your code line by line, and use the Evaluate Expression window to inspect variables and their values. With the PyCharm Debugger, debugging code has never been easier.</p>]]></content:encoded></item><item><title><![CDATA[Building a Shield Tunneling Safety Monitoring and Evaluation System]]></title><description><![CDATA[<p>As a software engineer, I had the privilege of working on a groundbreaking project at the Urban and Underground Space Laboratory at Qingdao University of Technology. Our team&apos;s primary objective was to develop a safety monitoring and evaluation system for shield tunneling, a critical aspect of the construction</p>]]></description><link>https://blog.eny.li/building-a-shield-tunneling-safety-monitoring-and-evaluation-system/</link><guid isPermaLink="false">64350166c2aba10001509c84</guid><category><![CDATA[Career Portfolio]]></category><dc:creator><![CDATA[Ethan Yu]]></dc:creator><pubDate>Tue, 11 Apr 2023 06:42:46 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1495870043034-74e1a009f631?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDN8fHR1bm5lbHxlbnwwfHx8fDE2ODExOTkwMzI&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1495870043034-74e1a009f631?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDN8fHR1bm5lbHxlbnwwfHx8fDE2ODExOTkwMzI&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Building a Shield Tunneling Safety Monitoring and Evaluation System"><p>As a software engineer, I had the privilege of working on a groundbreaking project at the Urban and Underground Space Laboratory at Qingdao University of Technology. Our team&apos;s primary objective was to develop a safety monitoring and evaluation system for shield tunneling, a critical aspect of the construction industry that ensures the safety of workers and materials during tunnel construction projects.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.eny.li/content/images/2023/04/1_0.png" class="kg-image" alt="Building a Shield Tunneling Safety Monitoring and Evaluation System" loading="lazy" width="2000" height="1151" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_0.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_0.png 1000w, https://blog.eny.li/content/images/size/w1600/2023/04/1_0.png 1600w, https://blog.eny.li/content/images/2023/04/1_0.png 2000w" sizes="(min-width: 1200px) 1200px"></figure><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_5.png" width="1230" height="1070" loading="lazy" alt="Building a Shield Tunneling Safety Monitoring and Evaluation System" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_5.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_5.png 1000w, https://blog.eny.li/content/images/2023/04/1_5.png 1230w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.eny.li/content/images/2023/04/1_13.png" width="1200" height="1056" loading="lazy" alt="Building a Shield Tunneling Safety Monitoring and Evaluation System" srcset="https://blog.eny.li/content/images/size/w600/2023/04/1_13.png 600w, https://blog.eny.li/content/images/size/w1000/2023/04/1_13.png 1000w, https://blog.eny.li/content/images/2023/04/1_13.png 1200w" sizes="(min-width: 720px) 720px"></div></div></div></figure><h2 id="project-overview">Project Overview</h2><p>Tunnel construction projects have become increasingly popular in recent years, and with this growth comes the need for robust safety measures. Our project aimed to meet this challenge by designing a system with three primary modules: data collection, data processing, and data evaluation and analysis.</p><p>The <strong>data collection module</strong> allowed for data input through the system&apos;s user interface, which could import data from Excel files. The two categories of input data were tunneling data and composite stratum data. The data collected was categorized into existing and analysis data.</p><p>The <strong>data processing module</strong> took the input data and processed it into torque and thrust units, which were used for analysis and output in the data evaluation and analysis system. The processing system also formed a data analysis library.</p><p>The <strong>data evaluation and analysis module</strong> presented the processed data in the data analysis library through a data analysis graph, which was then used to output the results in a tabular format.</p><h2 id="tech-stack">Tech Stack</h2><p>To develop a reliable and efficient system that met the project&apos;s goals and requirements, we used a combination of tools and technologies, including:</p><ul><li><strong>Python 3</strong>: For its simplicity, versatility, and data analysis support</li><li><strong>GitHub</strong>: For version control and collaboration</li><li><strong>NumPy</strong>: For array manipulation and scientific computing capabilities</li><li><strong>Pandas</strong>: For powerful data manipulation and analysis capabilities</li><li><strong>Matplotlib</strong>: For high-quality data visualization</li><li><strong>Qt</strong>: For building the graphical user interface</li><li><strong>Virtualenv</strong>: For creating isolated Python environments</li><li><strong>PyInstaller</strong>: For packaging Python programs into standalone executable files</li><li><strong>Gettext</strong>: For internationalization support</li><li><strong>Yapf</strong>: For automatic code formatting</li></ul><p>Leveraging these tools and technologies enabled us to create a robust and efficient system that met our project&apos;s goals and requirements.</p><h2 id="features-that-i-implemented">Features that I Implemented</h2><p>As the project&apos;s software engineer, I worked on several advanced features that enhanced the safety monitoring and evaluation system for shield tunneling. These features included:</p><ul><li><strong>Extensive documentation</strong>: The system&apos;s documentation made it easy to understand and use.</li><li><strong>User-friendly GUI</strong>: The system&apos;s graphical user interface implemented using the Qt framework made it easy to use, even for non-technical users.</li><li><strong>Internationalization support</strong>: The system supported English and Chinese languages.</li><li><strong>Authentication</strong>: The system used authentication to ensure security.</li><li><strong>Data modeling and curve fitting</strong>: The system used data modeling and curve fitting to identify trends and predict errors.</li><li><strong>Display of math equations and plots</strong>: The system displayed math equations and plots for complex calculations and analysis.</li><li><strong>Display of tables within the Qt interface</strong>: The system displayed tables within the Qt interface and exported data to Excel files.</li><li><strong>Packaging for several platforms</strong>: The system could be packaged for several platforms.</li><li><strong>Trend graph generation</strong>: The system generated trend graphs for unit thrust and unit torque.</li></ul><h2 id="project-benefits">Project Benefits</h2><p>The project offered several benefits, including:</p><ul><li><strong>Improved safety</strong>: The software monitored and evaluated the safety of shield tunneling, ensuring that any issues were identified and addressed before they became a problem.</li><li><strong>Efficient data analysis</strong>: The software&apos;s data processing and analysis capabilities made it easy to analyze data and output results in a timely manner.</li></ul><h2 id="conclusion">Conclusion</h2><p>Developing a safety monitoring and evaluation system for shield tunneling was an exciting project that allowed us to apply our software engineering skills to a real-world problem. With the use of Python, NumPy, Pandas, Matplotlib, and other powerful tools, we were able to design a system that greatly improved the safety and efficiency of tunnel construction projects. This project not only allowed us to contribute to the betterment of the construction industry but also provided us with invaluable experience in applying our software engineering expertise to create practical solutions for complex problems.</p>
        <div class="kg-card kg-file-card kg-file-card-medium">
            <a class="kg-file-card-container" href="https://blog.eny.li/content/files/2023/04/project_screenshot.zip" title="Download" download>
                <div class="kg-file-card-contents">
                    <div class="kg-file-card-title">Project screenshot</div>
                    
                    <div class="kg-file-card-metadata">
                        <div class="kg-file-card-filename">project_screenshot.zip</div>
                        <div class="kg-file-card-filesize">2 MB</div>
                    </div>
                </div>
                <div class="kg-file-card-icon">
                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><defs><style>.a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}</style></defs><title>download-circle</title><polyline class="a" points="8.25 14.25 12 18 15.75 14.25"/><line class="a" x1="12" y1="6.75" x2="12" y2="18"/><circle class="a" cx="12" cy="12" r="11.25"/></svg>
                </div>
            </a>
        </div>
        ]]></content:encoded></item><item><title><![CDATA[Why It's Easy to Play Video Games for Hours, But Not to Read a Book for a Long Time]]></title><description><![CDATA[<p>Have you ever found yourself playing video games for hours without feeling any pressure, but reading a book for even a short period becomes tedious? This is because of the feedback cycle.</p><h2 id="understanding-the-feedback-cycle">Understanding the Feedback Cycle</h2><p>The feedback cycle is the time between performing an action and receiving feedback on</p>]]></description><link>https://blog.eny.li/why-its-easy-to-play-video-games-for-hours-but-not-to-read-a-book-for-a-long-time/</link><guid isPermaLink="false">64358e9869d8e10001b55225</guid><category><![CDATA[Psychology]]></category><category><![CDATA[Cognitive Psychology]]></category><category><![CDATA[Memory]]></category><category><![CDATA[Learning]]></category><dc:creator><![CDATA[Ethan Yu]]></dc:creator><pubDate>Mon, 10 Apr 2023 10:14:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1508014924734-d75124b0f402?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDd8fGxlYXJuaW5nfGVufDB8fHx8MTY4MTIzMTU2Mg&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1508014924734-d75124b0f402?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDd8fGxlYXJuaW5nfGVufDB8fHx8MTY4MTIzMTU2Mg&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Why It&apos;s Easy to Play Video Games for Hours, But Not to Read a Book for a Long Time"><p>Have you ever found yourself playing video games for hours without feeling any pressure, but reading a book for even a short period becomes tedious? This is because of the feedback cycle.</p><h2 id="understanding-the-feedback-cycle">Understanding the Feedback Cycle</h2><p>The feedback cycle is the time between performing an action and receiving feedback on its results. Video games provide immediate feedback within seconds, making it easy to continue playing for an extended period without feeling any pressure. On the other hand, reading a book has a more extended feedback cycle. It requires time to read and process the information before any feedback can be received, making it difficult to remain engaged in the activity for a prolonged period.</p><h2 id="shortening-the-feedback-cycle">Shortening the Feedback Cycle</h2><p>Many important things require repetitions or iterations of small actions, each of which contains feedback and correction. Shortening the feedback cycle makes it easier to get started, and with each iteration, there is a continuous improvement in performance. This approach is useful not only for learning but also for many other activities.</p><p>The learning cycle comprises reading, thinking, applying, and correcting. Shortening this cycle makes learning easier and more efficient. Perseverance is essential, but it does not determine what we can or cannot learn. The ability to persevere determines how long we can endure a feedback cycle.</p><p>Adopting a mindset that prioritizes shortening the feedback cycle can make many things more approachable. For example, taking notes while reading and reviewing them regularly or breaking down a lengthy book into shorter sections and giving oneself feedback after each section can make it easier to remain engaged in the activity.</p><h2 id="conclusion">Conclusion</h2><p>In summary, the feedback cycle plays a significant role in making an activity feel easy or challenging. By adopting a mindset that prioritizes short feedback cycles, we can approach many activities more efficiently and with less pressure. Shortening the feedback cycle can help improve performance and make an activity more engaging and enjoyable, enabling us to endure it for a longer period.</p>]]></content:encoded></item><item><title><![CDATA[Diaphragm Segmentation in CT Images: A Review of Mathematical and Computational Methods]]></title><description><![CDATA[<p>Medical imaging plays a crucial role in the diagnosis and treatment of various health conditions. Accurate segmentation of the diaphragm from CT images is essential for diagnosing and treating respiratory and related diseases. This article reviews several research papers that propose different approaches for automatic or semi-automatic diaphragm segmentation.</p><h2 id="methodologies">Methodologies</h2>]]></description><link>https://blog.eny.li/diaphragm-segmentation-in-ct-images-a-review-of-mathematical-and-computational-methods/</link><guid isPermaLink="false">64306013ba5fc9000188d1cc</guid><category><![CDATA[Career Portfolio]]></category><dc:creator><![CDATA[Ethan Yu]]></dc:creator><pubDate>Fri, 07 Apr 2023 18:25:23 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1666214282459-c7dff167ecc0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDM0fHxjb21wdXRlZCUyMHRvbW9ncmFwaHl8ZW58MHx8fHwxNjgxMjA2MDU4&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1666214282459-c7dff167ecc0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDM0fHxjb21wdXRlZCUyMHRvbW9ncmFwaHl8ZW58MHx8fHwxNjgxMjA2MDU4&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Diaphragm Segmentation in CT Images: A Review of Mathematical and Computational Methods"><p>Medical imaging plays a crucial role in the diagnosis and treatment of various health conditions. Accurate segmentation of the diaphragm from CT images is essential for diagnosing and treating respiratory and related diseases. This article reviews several research papers that propose different approaches for automatic or semi-automatic diaphragm segmentation.</p><h2 id="methodologies">Methodologies</h2><p>A variety of mathematical and computational methods have been proposed for diaphragm segmentation:</p><p><strong>1. 3D active appearance model</strong> (<a href="https://www.spiedigitallibrary.org/conference-proceedings-of-spie/4684/1/Diaphragm-dome-surface-segmentation-in-CT-data-sets--a/10.1117/12.467190.short?SSO=1&amp;ref=blog.eny.li">2002</a>)</p><figure class="kg-card kg-image-card"><img src="https://blog.eny.li/content/images/2023/04/DraggedImage.png" class="kg-image" alt="Diaphragm Segmentation in CT Images: A Review of Mathematical and Computational Methods" loading="lazy"></figure><ul><li>This mathematical model requires a dataset for training and validation. The heart-diaphragm interface is not considered.</li></ul><p><strong>2. Manual modeling using Altair HyperMesh</strong> (<a href="https://link.springer.com/article/10.1007/s00276-006-0080-5?ref=blog.eny.li">2006</a>)</p><figure class="kg-card kg-image-card"><img src="https://blog.eny.li/content/images/2023/04/DraggedImage-1.png" class="kg-image" alt="Diaphragm Segmentation in CT Images: A Review of Mathematical and Computational Methods" loading="lazy"></figure><p><strong>3. Automated estimation of the upper surface of the diaphragm in 3-D CT images</strong> (<a href="https://ieeexplore.ieee.org/abstract/document/4360044?ref=blog.eny.li">2008</a>)</p><figure class="kg-card kg-image-card"><img src="https://blog.eny.li/content/images/2023/04/DraggedImage-2.png" class="kg-image" alt="Diaphragm Segmentation in CT Images: A Review of Mathematical and Computational Methods" loading="lazy"></figure><ul><li>On each voxel, the normal vector V of the lung surface is calculated. The voxel P on the lung surfaces that satisfies the condition {-(3/4)&#x3C0; &lt; direction of V on P &lt; -(1/4)&#x3C0;} is regarded as the candidate voxel. A thin-plate model is deformed to fit the subsample points on the diaphragmatic lung surface by using a 3D thin-plate spline method.</li></ul><p><strong>4. Quadratic surface modeling</strong> (<a href="https://link.springer.com/article/10.1007/s10278-007-9091-y?ref=blog.eny.li">2008</a>)</p><figure class="kg-card kg-image-card"><img src="https://blog.eny.li/content/images/2023/04/DraggedImage-3.png" class="kg-image" alt="Diaphragm Segmentation in CT Images: A Review of Mathematical and Computational Methods" loading="lazy"></figure><ul><li>The shape of the lung is obtained by morphological transformation, and then the lung-diaphragm interface is calculated (no specific elaboration), and finally, the quadratic surface is fitted.</li></ul><p><strong>5. Manual segmentation and 3D mesh generation</strong> (<a href="https://www.semanticscholar.org/paper/Modelling-of-diaphragm-motion-for-simulation-of-and-Acharya/923ab4ddacde80be30b27c7fb0d71072ebb95b27?ref=blog.eny.li">2008</a>)</p><figure class="kg-card kg-image-card"><img src="https://blog.eny.li/content/images/2023/04/DraggedImage-4.png" class="kg-image" alt="Diaphragm Segmentation in CT Images: A Review of Mathematical and Computational Methods" loading="lazy"></figure><ul><li>The diaphragm was manually segmented and a 3D mesh generated using Insight SnAP software.</li></ul><p><strong>6. Local entropy-based segmentation</strong> (<a href="https://ieeexplore.ieee.org/abstract/document/5490132?ref=blog.eny.li">2010</a>)</p><figure class="kg-card kg-image-card"><img src="https://blog.eny.li/content/images/2023/04/DraggedImage-5.png" class="kg-image" alt="Diaphragm Segmentation in CT Images: A Review of Mathematical and Computational Methods" loading="lazy"></figure><ul><li>Does not clarify where the red section stops segmentation.</li></ul><p><strong>7. Multiorgan extraction and surface fitting in volumetric CT</strong> (<a href="https://aapm.onlinelibrary.wiley.com/doi/full/10.1118/1.4866836?ref=blog.eny.li">2014</a>)</p><figure class="kg-card kg-image-card"><img src="https://blog.eny.li/content/images/2023/04/DraggedImage-6.png" class="kg-image" alt="Diaphragm Segmentation in CT Images: A Review of Mathematical and Computational Methods" loading="lazy"></figure><ul><li>There is no specific explanation of the 3D ray projection method and no reference to related papers. But Matlab&apos;s gridfit surface fitting algorithm is worth trying.</li></ul><p><strong>8. Ray projection-based segmentation</strong> (<a href="https://aapm.onlinelibrary.wiley.com/doi/full/10.1118/1.4953451?ref=blog.eny.li">2016</a>)</p><figure class="kg-card kg-image-card"><img src="https://blog.eny.li/content/images/2023/04/DraggedImage-7.png" class="kg-image" alt="Diaphragm Segmentation in CT Images: A Review of Mathematical and Computational Methods" loading="lazy"></figure><ul><li>Refer to Paper 7 (Automatic): 2014-Thoracic cavity segmentation algorithm using multiorgan extraction and surface fitting in volumetric CT</li></ul><p><strong>9. Anatomy-based segmentation</strong> (<a href="https://www.spiedigitallibrary.org/journals/journal-of-medical-imaging/volume-3/issue-4/046004/Anatomy-based-algorithm-for-automatic-segmentation-of-human-diaphragm-in/10.1117/1.JMI.3.4.046004.short?ref=blog.eny.li">2016</a>)</p><figure class="kg-card kg-image-card"><img src="https://blog.eny.li/content/images/2023/04/DraggedImage-8.png" class="kg-image" alt="Diaphragm Segmentation in CT Images: A Review of Mathematical and Computational Methods" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://blog.eny.li/content/images/2023/04/DraggedImage-9.png" class="kg-image" alt="Diaphragm Segmentation in CT Images: A Review of Mathematical and Computational Methods" loading="lazy"></figure><ul><li>The algorithm proposed in the paper is unstable. The above figure is a coronal slice arbitrarily selected along the anteroposterior axis (x-axis). If the segment lung-diaphragm interface starts along the horizontal axis (y-axis), the green circles marked in the figure may be misjudged as stops due to gradient change.</li></ul><p><strong>10. Patient-specific diaphragm muscle modeling</strong> (<a href="https://ir.lib.uwo.ca/etd/5703/?ref=blog.eny.li">2018</a>)</p><ul><li>The development of a patient-specific model of the diaphragm muscle began with modification and use of a previously developed automatic segmentation algorithm for 4DCT images in order to segment the diaphragm volume at end exhalation, which coincides with muscle relaxation. The diaphragm volume was converted into a mesh with hexahedral elements using 3D Slicer.</li></ul><p><strong>11. Real-time direct diaphragm tracking</strong> (<a href="https://aapm.onlinelibrary.wiley.com/doi/10.1002/mp.13738?ref=blog.eny.li">2019</a>)</p><figure class="kg-card kg-image-card"><img src="https://blog.eny.li/content/images/2023/04/DraggedImage-10.png" class="kg-image" alt="Diaphragm Segmentation in CT Images: A Review of Mathematical and Computational Methods" loading="lazy"></figure><ul><li>It is not clear whether to apply the intensity threshold at the 2D or 3D level; further investigation is required.</li></ul><h2 id="strengths-and-weaknesses">Strengths and Weaknesses</h2><p>Each approach has its own set of advantages and limitations. Manual segmentation, as used in Paper 5, can be time-consuming and requires expert knowledge. Automated methods, such as those proposed in Papers 3, 4, 6, 7, 8, and 9, 11 can be faster and more consistent, but may not be as accurate as manual segmentation.</p><p>Methods based on specific features or conditions, such as normal vectors, quadratic surfaces, or local entropy, may perform differently depending on the specific CT images being analyzed. Further investigation is needed to compare their performance in different scenarios.</p><h2 id="conclusion">Conclusion</h2><p>The development of automated or semi-automated segmentation methods for the diaphragm has important implications for the diagnosis and treatment of respiratory and related diseases. Accurate segmentation can aid in surgical planning, radiation therapy, and assessment of lung function and disease progression.</p>]]></content:encoded></item><item><title><![CDATA[Coming soon]]></title><description><![CDATA[<p>This is Ethan&apos;s Blog, a brand new site by Ethan Yu that&apos;s just getting started. Things will be up and running here shortly, but you can <a href="#/portal/">subscribe</a> in the meantime if you&apos;d like to stay up to date and receive emails when new content</p>]]></description><link>https://blog.eny.li/coming-soon/</link><guid isPermaLink="false">642eacb7ba5fc9000188cffd</guid><category><![CDATA[News]]></category><dc:creator><![CDATA[Ethan Yu]]></dc:creator><pubDate>Thu, 06 Apr 2023 11:27:51 GMT</pubDate><media:content url="https://static.ghost.org/v4.0.0/images/feature-image.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://static.ghost.org/v4.0.0/images/feature-image.jpg" alt="Coming soon"><p>This is Ethan&apos;s Blog, a brand new site by Ethan Yu that&apos;s just getting started. Things will be up and running here shortly, but you can <a href="#/portal/">subscribe</a> in the meantime if you&apos;d like to stay up to date and receive emails when new content is published!</p>]]></content:encoded></item></channel></rss>