<?xml version='1.0' encoding='utf-8' ?>
<!-- Made with love by pretalx v2026.3.0.dev0. -->
<schedule>
    <generator name="pretalx" system="pretalx.com" version="2026.3.0.dev0" />
    <version>0.15</version>
    <conference>
        <title>PyCon Hong Kong 2025</title>
        <acronym>pyconhk2025</acronym>
        <start>2025-10-11</start>
        <end>2025-10-12</end>
        <days>2</days>
        <timeslot_duration>00:05</timeslot_duration>
        <base_url>https://pretalx.com</base_url>
        
        <time_zone_name>Hongkong</time_zone_name>
        
        
        <track name="DevOps" slug="5793-devops"  color="#f865db" />
        
        <track name="Libraries / Tools" slug="5794-libraries-tools"  color="#3ca7f4" />
        
        <track name="Lightning &#9889;" slug="5795-lightning"  color="#d09800" />
        
        <track name="LLM" slug="5796-llm"  color="#c13dfe" />
        
        <track name="Performance" slug="5797-performance"  color="#3bb06a" />
        
        <track name="Perspectives" slug="5798-perspectives"  color="#ff4500" />
        
        <track name="Workshop" slug="5992-workshop"  color="#141414" />
        
    </conference>
    <day index='1' date='2025-10-11' start='2025-10-11T04:00:00+08:00' end='2025-10-12T03:59:00+08:00'>
        <room name='Main Track (Morning) (LT-18)' guid='8ebbf95d-e73c-5858-97a9-b4b2f42fed9c'>
            <event guid='2b0a433f-fde3-5669-a114-5cb2e69f8ae9' id='73949' code='A9ZA7U'>
                <room>Main Track (Morning) (LT-18)</room>
                <title>pip install community</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T10:25:00+08:00</date>
                <start>10:25</start>
                <duration>00:30</duration>
                <abstract>We learn Python through tutorials, bootcamps, or classes. Syntax here, libraries there. Maybe a few YouTube deep dives and some late-night Stack Overflow scrolling. The resources are endless.
But here&#8217;s what many miss: Python isn&#8217;t just a language. It&#8217;s a living, breathing community. And knowing that changes everything.
In this talk, we&#8217;ll look at the part of Python that doesn&#8217;t come in a package: its people. You&#8217;ll learn what the Python Software Foundation actually does (besides existing), how decisions about the language are made, and why even local meetups in Hong Kong are part of something much bigger.
Whether you&#8217;re new to Python, teaching it, or wondering what keeps this language thriving across the world&#8212;this talk will give you new ways to connect, contribute, and grow.
Because &#8220;Come for the language, stay for the community&#8221; isn&#8217;t just a feel-good line. It&#8217;s Python&#8217;s secret sauce. And once you taste it, it&#8217;s better than Lee Kum Kee.</abstract>
                <slug>pyconhk2025-73949-pip-install-community</slug>
                <track></track>
                
                <persons>
                    <person id='73784'>Georgi Ker</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/A9ZA7U/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/A9ZA7U/feedback/</feedback_url>
            </event>
            <event guid='b862da0b-2973-56be-8e58-d536682c77ef' id='72942' code='97ULTT'>
                <room>Main Track (Morning) (LT-18)</room>
                <title>Building Agentic AI on AWS: From Concept to Python Implementation</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T10:55:00+08:00</date>
                <start>10:55</start>
                <duration>00:30</duration>
                <abstract>This presentation explores the rapidly evolving field of Agentic AI that is gaining significant industry attention, with a focus on practical Python-based implementations. 

The first section introduces the fundamental concepts and technical architecture of Agentic AI, Agentic IDE (Kiro), AgentCore, and MCP. 

The second section demonstrates concrete applications of Agentic AI on AWS built with Python, featuring a conversational weather agent implemented using Nova Act and Python libraries, alongside analyses of agent-based solutions for e-commerce and hotel reservation systems. 

The third section provides practical guidance on developing enterprise-grade Agentic AI applications using the open-source Strands Agents SDK with Python. 

This presentation aims to inspire innovative approaches among Python developers and foster collaborative exploration of the expanding potential in Python-based Agentic AI application development.</abstract>
                <slug>pyconhk2025-72942-building-agentic-ai-on-aws-from-concept-to-python-implementation</slug>
                <track></track>
                
                <persons>
                    <person id='72996'>Haowen Huang</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/97ULTT/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/97ULTT/feedback/</feedback_url>
            </event>
            <event guid='b222c1cd-e381-58cd-805b-17de86afa9eb' id='73111' code='VU7KCM'>
                <room>Main Track (Morning) (LT-18)</room>
                <title>What&apos;s new in pandas 3.0</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T11:30:00+08:00</date>
                <start>11:30</start>
                <duration>00:30</duration>
                <abstract>pandas 3.0 is going to be released in the next months. While pandas hasn&apos;t changed much since it became popular many years ago, pandas 3 does bring some interesting new features that will make working with data easier, faster and more powerful. In this talk I will explain what&apos;s new in pandas 3.0.</abstract>
                <slug>pyconhk2025-73111-what-s-new-in-pandas-3-0</slug>
                <track></track>
                
                <persons>
                    <person id='73138'>Marc Garcia</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/VU7KCM/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/VU7KCM/feedback/</feedback_url>
            </event>
            <event guid='40e4653d-ccba-5b6e-85f4-f7d483ccd594' id='82355' code='X3JHUT'>
                <room>Main Track (Morning) (LT-18)</room>
                <title>Building Consistent &amp; Secure Container Environments</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T12:10:00+08:00</date>
                <start>12:10</start>
                <duration>00:30</duration>
                <abstract>*&quot;It works on my machine&quot;* is the developer equivalent of *&quot;the dog ate my homework&quot;*&#8212;and we&apos;ve all been there.

Picture this: Your dev environment is a beautiful snowflake. So is your teammate&apos;s. And production? That&apos;s a whole different animal. Now imagine if they were all... the same. Not just similar. Actually identical.

But here&apos;s the kicker: what if that identical environment was also actually secure? Not &quot;we ran a scanner once&quot; secure, but &quot;built from the ground up with security baked in&quot; secure. Zero known vulnerabilities instead of the usual 200+, complete software bill of materials included.

This talk is about ditching the chaos and building environments that are consistent, secure by default, and work the same whether you&apos;re coding at 2am or deploying to production.

We&apos;ll explore Dev Containers and Wolfi&#8212;practical patterns that&apos;ll make your life easier, your deployments more reliable, and your security team actually happy for once.</abstract>
                <slug>pyconhk2025-82355-building-consistent-secure-container-environments</slug>
                <track></track>
                
                <persons>
                    <person id='83820'>Jack Chen</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/X3JHUT/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/X3JHUT/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Main Track (Afternoon) (LT-13)' guid='2b5c1c5d-0225-5ce5-9f24-066ae31ee2e0'>
            <event guid='642643a0-776b-538a-b5a1-581a21fbacfc' id='71697' code='XS9DDR'>
                <room>Main Track (Afternoon) (LT-13)</room>
                <title>Kubernetes Isekai (&#30064;&#19990;&#30028;): Gamifying Kubernetes Education in Free AWS Academy Learner Lab</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T14:00:00+08:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract># Kubernetes Isekai (&#30064;&#19990;&#30028;)

**Kubernetes Isekai** is a Python open-source RPG that turns learning Kubernetes into an epic adventure! Tailored for students, it offers:
- &#127918; **Interactive gameplay** with hands-on Kubernetes tasks&#160; 
- &#129504; **Dynamic NPC interactions** that guide and challenge you&#160; 
- &#128187; **Practical experience** in a fun, gamified environment&#160; 
- &#9729;&#65039; **Cost-effective deployment** using AWS Academy Learner Lab or free GitHub Codespace&#160; 
Step into a fantastical world where mastering Kubernetes is part of the quest. Learn by doing, explore by playing, and level up your cloud-native skills!</abstract>
                <slug>pyconhk2025-71697-kubernetes-isekai--gamifying-kubernetes-education-in-free-aws-academy-learner-lab</slug>
                <track></track>
                <logo>/media/pyconhk2025/submissions/XS9DDR/Kubernetes_Isekai_archit_VQZg1Bk.jpg</logo>
                <persons>
                    <person id='71766'>Cyrus Wong</person><person id='83198'>Kathy Wu</person><person id='83206'>Camila leung</person>
                </persons>
                <language>zh-hant</language>
                <description># Kubernetes Isekai (&#30064;&#19990;&#30028;)

**Kubernetes Isekai** is an open-source Python RPG designed to make learning Kubernetes fun and interactive through gamification. Tailored for junior to [Higher Diploma in Cloud and Data Centre Administration](https://www.vtc.edu.hk/admission/en/programme/it114115-higher-diploma-in-cloud-and-data-centre-administration/) students at the [**Hong Kong Institute of Information Technology (HKIIT)**](https://hkiit.edu.hk/), it transforms technical education into an engaging adventure.

## &#127918; Key Features

1. **Role-Playing Adventure**  
   Students take on quests from NPCs who assign real Kubernetes tasks.

2. **Task-Based Learning**  
   Learn by doing&#8212;set up and manage Kubernetes clusters in a guided, hands-on environment.

3. **Free Access**  
   Runs on the cost-effective **AWS Academy Learner Lab** or **GitHub Codespace** using **Minikube** or **Kubernetes**.

4. **Scalable Grading**  
   Kubernetes setups are automatically tested using an **AWS SAM** application within **AWS Lambda**.

5. **Progress Tracking &amp; Rewards**  
   Students can track their progress, earn rewards, and level up their skills.

6. **GenAI-Powered NPCs**
   Integrates **Generative AI** to make NPC interactions more dynamic and engaging, enhancing the overall learning experience.

---

This game-based platform offers a **practical, cost-effective**, and **fun** way to gain real-world Kubernetes experience.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/XS9DDR/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/XS9DDR/feedback/</feedback_url>
            </event>
            <event guid='2e9d23ad-28c6-5f26-bae5-33612f0ad88d' id='73432' code='LY893F'>
                <room>Main Track (Afternoon) (LT-13)</room>
                <title>IPList to BPFRule: A Python DDoS Mitigation Framework for Domain-Level Attacks via XDP_HOOK of bpfilter</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T14:40:00+08:00</date>
                <start>14:40</start>
                <duration>00:30</duration>
                <abstract>This paper presents a domain-specific DDoS mitigation approach combining DNS redirection, reverse proxy WAF, and kernel-level filtering with eBPF XDP via bpfilter. Instead of using BGP Flowspec, attacker IPs are identified at the origin, uploaded to a central IP list, and dynamically applied as XDP_HOOK rules using a Python-based service. This architecture enables efficient, low-resource blocking for phishing-injected gambling domains without requiring expensive infrastructure, making it ideal for organizations with limited network-layer control.</abstract>
                <slug>pyconhk2025-73432-iplist-to-bpfrule-a-python-ddos-mitigation-framework-for-domain-level-attacks-via-xdphook-of-bpfilter</slug>
                <track></track>
                <logo>/media/pyconhk2025/submissions/LY893F/iplist_to_bpfrule_NgwV8LN.png</logo>
                <persons>
                    <person id='73389'>Nizar Akbar Meilani</person>
                </persons>
                <language>en</language>
                <description>Introduction:
In recent years, Distributed Denial of Service (DDoS) attacks targeting previously compromised injected websites have become increasingly prevalent. This trend poses a significant threat to Indonesian web infrastructure, particularly domains under the .id top-level domain associated with governmental or institutional organizations. Unlike attacks that rely on specific Layer 7 pattern - such as SQL Injection or Cross-Site Scripting (XSS) - these DDoS attacks exploit volumetric or stateful protocol-layer weakness (e.g., OSI Layer 4 and Layer 7) without leaving standard application-layer signatures. Consequently, conventional Web Application Firewalls (WAFs) often fail to detect or mitigate the threat effectively, and attempting to do so can result in excessive resource consumption on the WAF itself. Mitigating such attacks typically requires volume-based or stateful traffic analysis tools capable of distinguishing between legitimate requests and malicious traffic patterns. While low-volume Layer 7 DDoS attacks may still be managed at the origin server level, doing so risks overwhelming the server&#8217;s firewall and web server stack - particularly when filtering rules impose high latency loading time then require the web server to have health checks that resulted in reload or restart. If the health check of the web server causes too many restarts it could have a bad effect on the site.
Another commonly used defense mechanism is BGP Flowspec, which enables volume-based traffic analysis and filtering at the network level [1]. While effective against high-bandwidth volumetric attacks, this method has limitations - it cannot mitigate stateful DDoS attacks that exploit the stateful connection layer 4 request. In such cases, traffic must be redirected to scrubbing center, where more sophisticated inspection and mitigation are performed. To execute filtering at these centers, one of the most advanced and increasingly adopted technologies is eBPF XDP (eXpress Data Path). XDP enables high-performance packet processing in the Linux kernel, allowing packets to be intercepted at the NIC driver level, thus avoiding unnecessary transitions to user space for blocking. This results in faster, more efficient mitigation [2].
XDP works by attaching hooks at low level in the network kernel stack, enabling the implementation of custom filtering logic using eBPF. However, most BGP Flowspec and XDP integrations are designed to protect specific IP addresses, not domain names. This approach is therefore unsuitable for organizations that do not own BGP Flowspec-enabled routers or need filtering on domain names. Furthermore, deploying this infrastructure solely to block domain-based attacks may lead to unnecessary overhead and resource use.
Instead of relying on BGP Flowspec in combination with XDP, this paper proposes an alternative approach that integrates domain name resolution via DNS, reverse proxy-based WAF, and XDP filtering using the bpfilter tool. By leveraging DNS resolution, domain-specific DDoS attacks can be mitigated without the need of BGP-based redirection. In this model, DNS is used to reroute targeted domain traffic to a reverse proxy server that is integrated with bpfilter XDP rules for rarely-stage packet filtering.
Furthermore, widely adopted reverse proxy WAF - such as Safeline or BunkerWeb - can be configured to route clean traffic to appropriate origin server after initial filtering. This layered approach not only enables domain-focused filtering at the kernel level, but also reduces the computational burden on the reverse proxy WAF by offloading early blocking to XDP. As a result, DDoS attacks against specific domains can be handled more efficiently with lower resource consumption, without requiring access to advanced routing infrastructure such as BGP Flowspec.  
Methodology:
To effectively mitigate DDoS attacks on specific domains, a volume-based traffic analysis system-similar in function to BGP Flowspec-is required. However, instead of implementing full-scale, low-level volume analysis mechanism, this solution adopts a simplified version that minimizes complexity and avoids kernel-level development.
Before detailing the meethod, the following are the key components that make up the solution:
- Volume-Based Analysis Tool at the origin server, which detects volumetric attacks and uploads attacker IPs to a centralized IP list (&#8220;Bucket IP List&#8221;).
- DNS A Record Redirection, pointing the targeted domain to a Reverse Proxy WAF (e.g. Safeline).
- iplist_to_bpfrule Linux Service, which executes a Python script to pull thousands of attacker IPs from the central Bucket IP List
- bpfilter XDP tool and service, responsible for enforcing the ruleset at the kernel level using XDP_HOOK
- safeline WAF as it&apos;s reverse proxy WAF
The Volume Based Analysis Tool runs on the origin server and monitors resource-intensive, volumetric HTTP behavior. In its original implementation, it blocked detected attacker IPs directly using the server&#8217;s firewall. However, as the volume of malicious IPs grew, this approach became problematic - it caused excessive rule loading and triggered frequent restarts due to health check failures.
To address this, this tool was redesigned to offload blocking to a reverse proxy layer. Once the attack threshold is surpassed, the origin no longer performs direct mitigation. Instead, it uploads the identified attacker IPs to cloud bucket (the &#8220;IP List&#8221;) and switches the targeted domain&#8217;s DNS A record to point to pre-configured Reverse Proxy WAF server.
The reverse proxy server (e.g., Safeline) forwards clean traffic to the origin server, while the initial filtering of malicious requests is handled at the kernel level using bpfilter XDP ruleset. In front of the reverse proxy, the bpfilter tool combined with iplist_to_bpfrule service dynamically injects XDP_HOOK rulesets based on attacker lists fetched from the bucket. This functionality is driven by iplist_to_bpfrule service, a Python-based daemon that periodically pulls new IPs and applies them to the ruleset using bpfilter.
This architecture allows for efficient L3/L4 blocking, reduces the resource burden on the WAF, and eliminates the need for high-cost BGP or scrubbing center infrastructure, making it suitable for smaller-scale or budget-conscious environments.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/LY893F/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/LY893F/feedback/</feedback_url>
            </event>
            <event guid='522e24e3-251d-5af3-8d51-75f7b85904a8' id='73704' code='ARQM7C'>
                <room>Main Track (Afternoon) (LT-13)</room>
                <title>&#35531;&#25793;&#25265; pyproject.toml&#65292;&#36319; requirements.txt &#35498;&#20877;&#35211;</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T15:50:00+08:00</date>
                <start>15:50</start>
                <duration>00:30</duration>
                <abstract>&#27599;&#27425;&#21946; terminal &#36664;&#20837; `pip install -r requirements.txt`&#65292;&#25105;&#37117;&#26377;&#38928;&#21655;&#22833;&#25943;&#22021;&#28310;&#20633;&#65292;&#21487;&#33021; Python &#29256;&#26412;&#21780;&#22846;&#65292;&#21487;&#33021;&#23433;&#35037;&#26377;&#20808;&#24460;&#27425;&#24207;&#65292;&#21487;&#33021;&#26377;&#19968;&#20841;&#34892;&#26377;&#20154;&#20154;&#25163;&#25913;&#23436;&#26681;&#26412;&#28961;&#35430;&#36942;&#65292;&#23526;&#22312;&#26377;&#22826;&#22810;&#22826;&#22810;&#21487;&#33021;&#65281;

&#20854;&#23526; Python Community &#26089;&#21946;&#24190;&#24180;&#25552;&#20986;&#22021; PEP (Python Enhancement Proposals) 621 &#24050;&#32147;&#25552;&#20986;&#19968;&#20491;&#20840;&#26032;&#22021;&#26041;&#27861;&#65292;&#21578;&#21029; requirements.txt&#65292;&#29992; pyproject.toml &#21462;&#20195;&#36942;&#24448;&#22021;&#22320;&#29508;&#65292;&#32780;&#19988;&#20210;&#26377;&#21780;&#23569;&#24037;&#20855;&#20363;&#22914; poetry setuptools  &#32027;&#32027;&#25505;&#32013;&#65281;

&#21487;&#33021;&#20320;&#24050;&#32147;&#29992;&#32202; poetry&#65292;&#21487;&#33021;&#20320;&#20854;&#23526;&#29992;&#32202; poetry 1.x &#26410;&#29992;&#21040; PEP621 &#22021; pyproject.toml&#65292;&#21487;&#33021;&#20320;&#20210;&#29992;&#32202; requirements.txt&#65281;&#21602;&#20491; Talk &#24076;&#26395;&#21487;&#20197;&#30001;&#28154;&#20837;&#28145;&#65292;&#24118;&#22823;&#23478;&#19968;&#27493;&#27493;&#20102;&#35299;&#29694;&#20195; Python &#26368; portable &#26368; robust &#22021; project metadata &#23531;&#27861;&#65292;&#30906;&#20445;&#21602;&#24190;&#24180;&#23531;&#20986;&#22175;&#22021; python projects&#65292;&#19981;&#35542;&#20418;&#35469;&#30495;&#35069;&#36896;&#12289;&#38568;&#24515;&#29609;&#19979; LLM&#12289;&#29978;&#33267; vibe coding &#20063;&#22909;&#65292;&#36942;&#22810;&#19968;&#25490;&#37117;&#23526;&#23526;&#28136;&#28136;&#65292;&#21487;&#20197;&#29992;&#24471;&#36820;&#65281;</abstract>
                <slug>pyconhk2025-73704-pyproject-toml--requirements-txt</slug>
                <track></track>
                
                <persons>
                    <person id='73595'>Alex Lau</person>
                </persons>
                <language>zh-hant</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/ARQM7C/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/ARQM7C/feedback/</feedback_url>
            </event>
            <event guid='7bc32c9c-ac49-5ae8-befe-64908fbd5158' id='74578' code='BXPFES'>
                <room>Main Track (Afternoon) (LT-13)</room>
                <title>Python for the Paranoid: how to secure your Python code</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T16:30:00+08:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>Vibe coding is great when it works, but less so when it leads to security vulnerabilities. This beginner-friendly introduction will equip you with the knowledge to make your Python code more secure. We will explore common ways Python projects can become susceptible to issues&#8212;from dependency risks to malicious data&#8212;and provide practical, actionable recommendations on tools and strategies to safeguard your work. Leave feeling more confident and less paranoid about your code.</abstract>
                <slug>pyconhk2025-74578-python-for-the-paranoid-how-to-secure-your-python-code</slug>
                <track></track>
                
                <persons>
                    <person id='74305'>Sau</person>
                </persons>
                <language>en</language>
                <description>## Motivation 

As a cybersecurity professional, I want to raise awareness of known Python security concerns in an easy-to-understand manner, especially for those who are new to the language. Intermediate-level learners are also welcome, if they wish to refresh their memory.

Especially in this era of &#8220;vibe coding&#8221;, I feel there is an overemphasis on &#8220;what works&#8221;, and a lack of consideration of &#8220;what might go wrong&#8221;. I hope this talk will inspire listeners to start coding with good cybersecurity hygiene. 

## Scope

This talk will cover security considerations unique to Python. This means that, instead of touching on general concepts like SQL injection or hardcoding secrets, I will focus on known security concerns and considerations in the Python ecosystem. 

## Talk outline

### Breakdown of why your code might be unsafe (20min)
1. Unsafe data (XML, zip, pickle)
2. Unsafe algorithms (random, hashlib)
3. Unsafe versions (using deprecated Python versions)
4. Unsafe third-party packages (supply chain attack)

In this section, to demonstrate the relevance and danger of these cases, I will supply real-life examples and easy-to-understand sample code. I will also recommend safer equivalents where available.

### Mitigation strategies (10min)

I will recommend some tools to address these concerns. In this age where the bulk of codebase may be generated by an AI tool, I will focus on tools that can be set up for automatic scans.

## References

Official list of modules with security considerations: https://docs.python.org/3/library/security_warnings.html  
Example of the ruff linter detecting dangerous pickle use: https://docs.astral.sh/ruff/rules/suspicious-pickle-usage/</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/BXPFES/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/BXPFES/feedback/</feedback_url>
            </event>
            <event guid='1934bc73-8192-520e-8d76-b37be7aa0249' id='71741' code='XCQ9WW'>
                <room>Main Track (Afternoon) (LT-13)</room>
                <title>Unscripted Yes, Consistent Commitment: From Meetup Attendee to PyCon APAC 2025 Co-Chair Journey</title>
                <subtitle></subtitle>
                <type>Short talk</type>
                <date>2025-10-11T17:05:00+08:00</date>
                <start>17:05</start>
                <duration>00:15</duration>
                <abstract>Many hesitate to join tech communities or take on leadership roles, fearing they&#8217;re not &quot;ready.&quot; My journey was anything but planned&#8212;I simply said &quot;yes&quot; to opportunities, even when unprepared. From attending meetups as a newcomer to becoming a core volunteer and now PyCon APAC 2025 Co-Chair, my story is one of commitment, uncertainty, and growth.

In this talk, I&#8217;ll share how showing up, embracing challenges, and volunteering transformed my career and community involvement. I&apos;ll also break down common misconceptions about tech meetups and how anyone regardless of experience can start contributing. If you&#8217;re hesitant to take that first step, this talk will inspire you to leap, learn, and find your place in the Python and tech community.</abstract>
                <slug>pyconhk2025-71741-unscripted-yes-consistent-commitment-from-meetup-attendee-to-pycon-apac-2025-co-chair-journey</slug>
                <track></track>
                <logo>/media/pyconhk2025/submissions/XCQ9WW/465869228_27368879509393_3NccPxW.jpg</logo>
                <persons>
                    <person id='71818'>Rodney Lei Estrada</person>
                </persons>
                <language>en</language>
                <description>Many believe that to contribute meaningfully to a tech community, they need to be an expert or have years of experience. But my journey proves otherwise. I started as someone who simply showed up attending meetups, learning from others, and saying &quot;yes&quot; to volunteering, even when I wasn&#8217;t sure what I was getting into. What followed was an unexpected but transformative journey, from a local Python volunteer to co-chairing PyCon APAC 2025.

In this talk, I&#8217;ll share how my &quot;fake it till you make it&quot; mindset and consistent commitment led me to this point. I&apos;ll discuss how I navigated the world of Python &amp; tech meetups, the lessons I learned from being a tech community nomad, and the surprising impact of small actions in community growth. Attendees will gain insights into how they can start their own journey, overcome self-doubt, and make meaningful contributions, no matter their skill level.

By the end of this talk, I hope to inspire more people to step up, take a leap of faith, and actively engage in the Python and tech community because every great journey starts with a simple &quot;yes.&quot;</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/XCQ9WW/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/XCQ9WW/feedback/</feedback_url>
            </event>
            <event guid='3cef8446-a6e6-5273-b194-696e6aeee660' id='74472' code='RHYPBS'>
                <room>Main Track (Afternoon) (LT-13)</room>
                <title>Make use of Tox in your CI workflow</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2025-10-11T17:30:00+08:00</date>
                <start>17:30</start>
                <duration>00:05</duration>
                <abstract>Are you tired of your code working in your environment, but failing when your teammate tries to run it? Are you tired of typing commands into your bash terminal again and again just to run your test cases? Are you tired of pushing your code to a shared repo, just to find out it failed the CI checks put in place by the repo&apos;s admin?

If you&apos;ve ever encountered any of these situations, you may benefit from having tox in your CI workflow. With tox, you can set up virtual environments to automatically run your format checks and test cases - all in a single file. It&apos;s a simple and elegant solution that can save you and your team time and frustration.</abstract>
                <slug>pyconhk2025-74472-make-use-of-tox-in-your-ci-workflow</slug>
                <track></track>
                
                <persons>
                    <person id='74211'>Rex Liu</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/RHYPBS/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/RHYPBS/feedback/</feedback_url>
            </event>
            <event guid='1948e19e-42db-5762-9c8a-12d1fb418bf7' id='73496' code='LRTWNA'>
                <room>Main Track (Afternoon) (LT-13)</room>
                <title>Shall We Upgrade? Navigating Python&apos;s Rapid Evolution</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2025-10-11T17:35:00+08:00</date>
                <start>17:35</start>
                <duration>00:05</duration>
                <abstract>The rapid evolution of Python presents version selection challenges for developers. We will talk about the development process of Python versions, mainly focusing on the key changes from Python 3.10 to 3.14. This talk will highlight the most impactful features and their implications for real-world development, helping developers make informed decisions about upgrading their Python.</abstract>
                <slug>pyconhk2025-73496-shall-we-upgrade-navigating-python-s-rapid-evolution</slug>
                <track></track>
                
                <persons>
                    <person id='73443'>Wenxin Jiang</person><person id='73444'>Jian Yin</person>
                </persons>
                <language>en</language>
                <description>Python&apos;s continuous evolution introduces specialized tools for diverse development challenges. By examining release highlights from 3.10 onward - including structural pattern matching, performance optimizations, typing enhancements and the just-in-time (JIT) compiler - this talk summarize the great strides Python has made in recent years. We will also explore the Python Enhancement Proposal (PEP) lifecycle to understand feature evolution mechanisms. We would like to equip attendees to make strategic decisions: adopting improvements where they deliver meaningful impact while preserving system stability where essential.
The slide of this talk is available at [https://lucajiang.github.io/new_in_python/](https://lucajiang.github.io/new_in_python/)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/LRTWNA/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/LRTWNA/feedback/</feedback_url>
            </event>
            <event guid='eb31fb71-1f48-5bdc-8673-0034a4fbf7ce' id='74535' code='EYTFQA'>
                <room>Main Track (Afternoon) (LT-13)</room>
                <title>Tired of Waiting? Bring Your Python Loops to Life with tqdm</title>
                <subtitle></subtitle>
                <type>Lightning talk</type>
                <date>2025-10-11T17:40:00+08:00</date>
                <start>17:40</start>
                <duration>00:05</duration>
                <abstract>Nobody likes waiting around, especially when code is silently crunching away. For data scientists, engineers, and anyone running long-loop operations in Python, the endless blank console can be a source of much anxiety and frustration.

This lightning talk introduces tqdm, Python&apos;s secret weapon for banishing the black box. We&apos;ll quickly explore how this deceptively simple library transforms mundane loops into engaging, informative progress bars, providing crucial real-time feedback. You&apos;ll walk away from this talk understanding how a few simple lines of code can dramatically improve the user experience of your scripts and boost your productivity.</abstract>
                <slug>pyconhk2025-74535-tired-of-waiting-bring-your-python-loops-to-life-with-tqdm</slug>
                <track></track>
                
                <persons>
                    <person id='74263'>Cheryl Cong</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/EYTFQA/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/EYTFQA/feedback/</feedback_url>
            </event>
            <event guid='5509904d-5917-581d-9245-902b759e62c3' id='82504' code='W8UDQD'>
                <room>Main Track (Afternoon) (LT-13)</room>
                <title>The Year of the Snake (Python)</title>
                <subtitle></subtitle>
                <type>Lightning Talk On-Day</type>
                <date>2025-10-11T17:45:00+08:00</date>
                <start>17:45</start>
                <duration>00:05</duration>
                <abstract>2025 is the Year of the Snake in the Asian Zodiac. This is a light-hearted lightning talk about the relationship between Python and Snakes, thereby celebrating the Year of Python.</abstract>
                <slug>pyconhk2025-82504-the-year-of-the-snake-python</slug>
                <track></track>
                
                <persons>
                    <person id='74305'>Sau</person>
                </persons>
                <language>en</language>
                <description>- Introduction to the Asian Zodiac (1 min)
- History of Python and the Snake (2 min)
- Relationship of the Snake to Python (2 min)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/W8UDQD/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/W8UDQD/feedback/</feedback_url>
            </event>
            <event guid='52b98cb9-d7c7-5f4e-ad13-73335cbdb041' id='82505' code='B8REC8'>
                <room>Main Track (Afternoon) (LT-13)</room>
                <title>My Python Journey from Coding to Community</title>
                <subtitle></subtitle>
                <type>Lightning Talk On-Day</type>
                <date>2025-10-11T17:50:00+08:00</date>
                <start>17:50</start>
                <duration>00:05</duration>
                <abstract>Sharing my 20-year Python journey starting from coding to community.</abstract>
                <slug>pyconhk2025-82505-my-python-journey-from-coding-to-community</slug>
                <track></track>
                
                <persons>
                    <person id='83980'>Sammy Fung</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/B8REC8/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/B8REC8/feedback/</feedback_url>
            </event>
            <event guid='8eb0db75-9ef4-55c2-b7a5-26550b7f92a5' id='82510' code='ADGCNZ'>
                <room>Main Track (Afternoon) (LT-13)</room>
                <title>Chills and Submit Your Proposal</title>
                <subtitle></subtitle>
                <type>Lightning Talk On-Day</type>
                <date>2025-10-11T17:55:00+08:00</date>
                <start>17:55</start>
                <duration>00:05</duration>
                <abstract>This is just a story about me submitting my paper to multiple Python Conference, get rejected and some of it get accepted.

The story will tells about the journey of me accepted at Pycon HK 2025 and will tells about some funny story about the process of traveling to Pycon HK 2025.

The first slide will tell to chills and submit your completed proposal to multiple Pycon and feels the contribution.

The second  slide will tell the story about me get accepted at multiple PyCon and feels the happy thing and the panic thing in preparing for the conference.

The third slide will tell the fun story when having a journey from my country to HongKong for Pycon Hong Kong 2025.

The fourth and the five will tell a story about me exploring Hong Kong and have an insiparation quote at the last.</abstract>
                <slug>pyconhk2025-82510-chills-and-submit-your-proposal</slug>
                <track></track>
                
                <persons>
                    <person id='73389'>Nizar Akbar Meilani</person>
                </persons>
                <language>en</language>
                <description>Just a fun and chills story about submitting proposal to multiple Pycon and the fun thing about the journey</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/ADGCNZ/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/ADGCNZ/feedback/</feedback_url>
            </event>
            <event guid='1b9350b4-f6f3-5654-b263-00958df37b63' id='82511' code='NSDPHV'>
                <room>Main Track (Afternoon) (LT-13)</room>
                <title>Web Scraping with Python Selenium</title>
                <subtitle></subtitle>
                <type>Lightning Talk On-Day</type>
                <date>2025-10-11T18:00:00+08:00</date>
                <start>18:00</start>
                <duration>00:05</duration>
                <abstract>- What the heck is web scraping
- When to use it
- General pointers on where to start</abstract>
                <slug>pyconhk2025-82511-web-scraping-with-python-selenium</slug>
                <track></track>
                
                <persons>
                    <person id='83984'>Nicholas B.</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/NSDPHV/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/NSDPHV/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Track A (Sessions) (LT-15)' guid='c70daeda-3fd4-592b-a462-580f0e054f80'>
            <event guid='36594904-9716-56c5-a68b-67931a05a731' id='81822' code='QR9URY'>
                <room>Track A (Sessions) (LT-15)</room>
                <title>Demystify vLLM: introducing the de-facto LLM inference engine for private AI</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T11:30:00+08:00</date>
                <start>11:30</start>
                <duration>00:30</duration>
                <abstract>With the rise of public cloud services, most people began using LLMs online. However, in August 2025, hundreds of thousands of chat were leaked and surfaced on Google, raising serious concerns about whether it&#8217;s still safe to share confidential information with online LLMs. As a result, growing numbers of users are looking to deploy their own models&#8212;either in home labs or enterprise environments&#8212;to maintain full control.

Ollama has been the most popular self-hosted LLM solution, but it isn&#8217;t designed for large-scale deployments. In contrast, vLLM has recently emerged as a de facto standard for high-performance LLM inference serving.

In this talk, we&#8217;ll compare vLLM and Ollama and highlight the advantages of vLLM. We&#8217;ll also explore the technical inference optimization techniques behind vLLM that reduce GPU compute and memory usage. Finally, we&#8217;ll demonstrate how to use and configure vLLM within a Python script.</abstract>
                <slug>pyconhk2025-81822-demystify-vllm-introducing-the-de-facto-llm-inference-engine-for-private-ai</slug>
                <track></track>
                
                <persons>
                    <person id='83306'>Peter Ho</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/QR9URY/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/QR9URY/feedback/</feedback_url>
            </event>
            <event guid='9eadd11d-93aa-5603-8adf-8f549a9242d7' id='82423' code='BXRAXM'>
                <room>Track A (Sessions) (LT-15)</room>
                <title>You Don&#8217;t Need to Be a Hero to Contribute</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T12:10:00+08:00</date>
                <start>12:10</start>
                <duration>00:30</duration>
                <abstract>Ever looked at the code in an open-source project and thought, &#8220;Those contributors are way too talented, my little PR would be meaningless&#8221;? Or maybe you&#8217;ve opened a repository, seen thousands of lines of code, and decided it was too complex to even find a bug to fix? 


I hear you &#8212; because I&#8217;m one of you. I&#8217;m not a brilliant engineer pushing thousands of lines of code every day, nor a famous blogger with thousands of followers. 


But in this talk, I&#8217;ll share my story about how some of my open-source projects and security research led to new networks, collaborations, recognition, and how you can start contributing to the open-source ecosystem, no matter your experience level. You don&#8217;t need to be a hero to make an impact.</abstract>
                <slug>pyconhk2025-82423-you-don-t-need-to-be-a-hero-to-contribute</slug>
                <track></track>
                
                <persons>
                    <person id='83911'>Richard Fan</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/BXRAXM/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/BXRAXM/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Track A (Workshop) (LT-15)' guid='ba2c6b30-dfdb-5cb2-bfb0-0e758b3c8b96'>
            <event guid='f4b0ac1a-0e14-5466-a858-33465e54eb5d' id='72978' code='KESSTA'>
                <room>Track A (Workshop) (LT-15)</room>
                <title>OpenTelemetry Foundations: Hands-On Guide to Observability</title>
                <subtitle></subtitle>
                <type>Workshop</type>
                <date>2025-10-11T14:00:00+08:00</date>
                <start>14:00</start>
                <duration>01:30</duration>
                <abstract>Unlock the power of observability in your software systems! This beginner-friendly, hands-on workshop introduces you to OpenTelemetry, the leading open-source observability framework. Designed for developers, operators, SREs, and even technical managers with little to no experience in observability, this session walks you through the fundamentals of observability, core OpenTelemetry architecture, and how to get started instrumenting your applications with minimal code.

By the end of this session, you&#8217;ll have a strong foundational understanding and practical exposure to OpenTelemetry concepts and implementation, equipping you to bring observability to your projects or teams.
Attendees will be provided:

A GitHub repo with sample applications and instrumented code
Cheat sheets and quick-start guides</abstract>
                <slug>pyconhk2025-72978-opentelemetry-foundations-hands-on-guide-to-observability</slug>
                <track></track>
                
                <persons>
                    <person id='73008'>Hemangi Karchalkar</person>
                </persons>
                <language>en</language>
                <description>What You&#8217;ll Learn:

Introduction to Observability: Understand the importance of observability in modern software systems and how it can help you gain insights into your applications.

Core Principles of OpenTelemetry: Learn the fundamental concepts and principles that drive OpenTelemetry, the leading open-source observability framework.

Key Components and Architecture: Dive into the architecture of OpenTelemetry, exploring its key components and how they work together to provide comprehensive observability.

Practical Use Cases and Examples: See OpenTelemetry in action with examples and use cases that demonstrate its capabilities and benefits.

How to Get Started with OpenTelemetry in Your Organization: Get practical tips and guidance on how to implement OpenTelemetry in your own projects and start reaping the benefits of enhanced observability.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/KESSTA/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/KESSTA/feedback/</feedback_url>
            </event>
            <event guid='c9fcaad6-3915-536f-ae8a-7acff8f74d31' id='75028' code='EYXF9W'>
                <room>Track A (Workshop) (LT-15)</room>
                <title>Setting Up Reliable CI/CD Pipelines with Python, K8s &amp; Testcontainers</title>
                <subtitle></subtitle>
                <type>Workshop</type>
                <date>2025-10-11T15:50:00+08:00</date>
                <start>15:50</start>
                <duration>01:30</duration>
                <abstract>Build a production-grade CI/CD pipeline using Python, Docker, Testcontainers, GitHub Actions, and Kubernetes. This workshop takes you from zero to deployment with real-world automation, testing, and monitoring. Perfect for all levels, it blends simplicity, storytelling, and powerful DevOps tools to boost your confidence in delivering reliable software.</abstract>
                <slug>pyconhk2025-75028-setting-up-reliable-ci-cd-pipelines-with-python-k8s-testcontainers</slug>
                <track></track>
                
                <persons>
                    <person id='73237'>Koti Vellanki</person>
                </persons>
                <language>en</language>
                <description>Shipping software should feel empowering &#8212; not like fighting fires. Yet for many developers, CI/CD feels like a maze of YAMLs, fragile tests, cloud complexity, and guesswork. This workshop changes that story, using Python as your guiding light.

In this 85-minute hands-on session, you&#8217;ll build a complete, production-grade CI/CD pipeline &#8212; one that starts with a commit and ends with a deployed, monitored app in the cloud. But unlike most DevOps sessions, this one is crafted through the lens of simplicity, storytelling, and the power of Python.

We&apos;ll start with Python scripts that automate GitHub repo creation and Jenkins setup. From there, you&#8217;ll use Testcontainers to run realistic integration tests in Docker &#8212; giving you confidence that your tests reflect the real world. We&apos;ll automate builds and trigger workflows using GitHub Actions, then containerize your app and push it to Docker Hub.

Then comes the moment of truth: deploying your Python app to a live Kubernetes cluster (AWS EKS), using Python to manage manifests, rollouts, and environment configs. To top it off, you&apos;ll integrate a custom Prometheus exporter written in Python, visualized in Grafana, so you can watch your app breathe in real time.

This isn&#8217;t just another workshop filled with configs. It&#8217;s a journey &#8212; from chaos to clarity, from &#8220;I&#8217;m not sure what I&#8217;m doing&#8221; to &#8220;I actually built that!&#8221; Every step is hands-on, beginner-friendly, and deeply practical. We blend technical depth with real-world insight, humour, and moments of celebration.

Whether you&#8217;re just starting out with DevOps, or you&#8217;re a seasoned engineer who wants a clean, Pythonic approach to CI/CD, this session is for you. You&#8217;ll leave with a complete working pipeline, a solid understanding of every tool involved, and the confidence to recreate it at work, in your side projects, or with your teams.

By the end, you&#8217;ll walk away not only with skills, but with a story &#8212; a story of how you connected the dots and built something amazing, powered by Python.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/EYXF9W/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/EYXF9W/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Track B (LT-14)' guid='f189e1ae-3004-5b65-aec9-012cd4ce31dd'>
            <event guid='48becc7e-c7b9-588b-94c6-4cc84687bcf3' id='71824' code='VUXSPF'>
                <room>Track B (LT-14)</room>
                <title>Pyodide: Python Reborn in the Browser</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T11:30:00+08:00</date>
                <start>11:30</start>
                <duration>00:30</duration>
                <abstract>Have you ever wished you could run Python directly in the browser&#8212;without any server backend or WebSocket setup?

In this talk, I will introduce Pyodide, a WebAssembly-based Python distribution that brings the full Python runtime to the browser. You&#8217;ll learn how Pyodide enables scientific computing, data visualization, and interactive notebooks&#8212;all in client-side web apps. We&#8217;ll explore how Pyodide is built, how to integrate it with JavaScript, and the real-world limitations to watch out for.

Whether you&apos;re building a no-backend playground, an AI-enabled tool, or an offline-capable app, Pyodide opens new doors for Python in the frontend.</abstract>
                <slug>pyconhk2025-71824-pyodide-python-reborn-in-the-browser</slug>
                <track></track>
                
                <persons>
                    <person id='71916'>Calpa</person>
                </persons>
                <language>en</language>
                <description>Pyodide is an emerging solution for running Python in the browser using WebAssembly. In this session, I will:

1. Explain the architecture and use cases of Pyodide.
2. Show how to build apps that combine Pyodide with modern web frameworks (e.g., React, Vue).
3. Demo real-world use cases including AI model inference, scientific visualization, and interactive education tools.
4. Discuss Pyodide&apos;s ecosystem, performance tips, and current limitations.

This talk is suitable for Python developers curious about frontend technologies, WebAssembly enthusiasts, and anyone exploring the boundaries of full-stack Python.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/VUXSPF/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/VUXSPF/feedback/</feedback_url>
            </event>
            <event guid='d996a9b7-842a-5888-a440-60fe39666053' id='75343' code='RNY8EP'>
                <room>Track B (LT-14)</room>
                <title>What are AI pipeline frameworks good for?</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T12:10:00+08:00</date>
                <start>12:10</start>
                <duration>00:30</duration>
                <abstract>So, you want to build an AI-powered application in Python. In addition to the UI and database you would need in any application, you will of course need LLM deployments to call and prompts engineered to generate the desired output. Yet, with all of these elements in place, an AI application presents distinctive challenges for coordinating the interaction of LLMs and user data. A toy example that fills a few user-inputted variables into a prompt for use with a single LLM deployment endpoint requires only a few dozen lines of backend code. But what if you want to be able to swap between different models, deployments, or APIs? And how will you handle problems such as hitting quota limits or encountering irregularities in LLM output, or test how you process inputs and outputs? Or what if you want to build a more complex AI system that enriches the model&apos;s context (RAG) or can make its own calls to various tools in response to user requests (agents): which data sources and tools will you connect to, and how? Several Python packages -- including LangChain, LlamaIndex, Haystack, and PydanticAI -- claim to offer end-to-end frameworks for building application-ready AI pipelines and agents. Through a systematic comparison of their different features and structures, alongside the option of rolling a solution oneself, this talk will consider how using these frameworks might, or might not, make it easier to answer some of the challenging questions involved in building an AI application.</abstract>
                <slug>pyconhk2025-75343-what-are-ai-pipeline-frameworks-good-for</slug>
                <track></track>
                
                <persons>
                    <person id='74907'>Mark Cohen</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/RNY8EP/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/RNY8EP/feedback/</feedback_url>
            </event>
            <event guid='f81fc937-0627-5e44-bb56-c73717d439df' id='74110' code='RDTRNC'>
                <room>Track B (LT-14)</room>
                <title>From Chaos to Harmony: A GenAI Solution to Music Library Clutter</title>
                <subtitle></subtitle>
                <type>Short talk</type>
                <date>2025-10-11T12:45:00+08:00</date>
                <start>12:45</start>
                <duration>00:15</duration>
                <abstract>Ever opened your music folder only to be greeted by a chaotic mix of album and track names that trigger your inner OCD? This talk explores the journey from manual cleanup to building a Python tool that brings order to musical chaos. By harnessing Retrieval-Augmented Generation (RAG), Large Language Models (LLMs), and natural language processing (NLP), the project intelligently standardizes music libraries across diverse naming conventions and languages. The presentation focuses on the creative process, core AI concepts, and key lessons learned, tracing the path from tedious folder cleaning to an automated, AI-powered solution.</abstract>
                <slug>pyconhk2025-74110-from-chaos-to-harmony-a-genai-solution-to-music-library-clutter</slug>
                <track></track>
                
                <persons>
                    <person id='73895'>Matthew Yuen</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/RDTRNC/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/RDTRNC/feedback/</feedback_url>
            </event>
            <event guid='73005577-1bcd-5149-8d6f-d91fc1584ba3' id='73074' code='7VASSD'>
                <room>Track B (LT-14)</room>
                <title>IaC Meets Python: When Terraform Isn&apos;t Enough</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T14:00:00+08:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>Terraform is powerful&#8212;but it has limits. In this talk, we&#8217;ll explore where Python can complement infrastructure-as-code (IaC): from dynamic resource creation and complex validations to custom workflows and post-deployment logic. Using real-world SRE/DevOps scenarios, we&#8217;ll walk through how Python scripts and tools (like Pulumi, Python CDK, or simple custom wrappers) help close Terraform&#8217;s gaps. This session is for anyone building infra who&#8217;s hit the wall with HCL and needs flexibility&#8212;without abandoning automation.</abstract>
                <slug>pyconhk2025-73074-iac-meets-python-when-terraform-isn-t-enough</slug>
                <track></track>
                
                <persons>
                    <person id='73106'>Rajani Ekunde</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/7VASSD/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/7VASSD/feedback/</feedback_url>
            </event>
            <event guid='e6dfb2b2-c6f2-5391-a640-09adce9ff451' id='73895' code='UU8XBZ'>
                <room>Track B (LT-14)</room>
                <title>GraphRAG with Python and Neo4j</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T14:40:00+08:00</date>
                <start>14:40</start>
                <duration>00:30</duration>
                <abstract>Large Language Models (LLMs) often struggle to provide current and comprehensive answers from vast, interconnected knowledge bases, a common challenge in fields like business, legal and administrative tasks. While traditional RAG improves LLM context, it can falter with complex, relationship-heavy information. GraphRAG offers a powerful solution by leveraging graph databases to enhance retrieval with structured relationships, leading to deeper contextual understanding.

This talk provides a practical introduction to implementing GraphRAG using Neo4j. We will explore how Neo4j can be used to construct knowledge graphs from unstructured data and enable advanced, relationship-aware retrieval. Attendees will learn the core concepts of GraphRAG and gain practical insights to build smarter RAG systems, capable of delivering more accurate and contextually rich LLM responses for complex real-world applications.

GitHub Repo: https://github.com/hksquinson/pycon-hk-graphrag</abstract>
                <slug>pyconhk2025-73895-graphrag-with-python-and-neo4j</slug>
                <track></track>
                
                <persons>
                    <person id='73743'>Hon Kwan Shun Quinson</person>
                </persons>
                <language>en</language>
                <description>Large Language Models (LLMs) have revolutionized access to information, yet their inherent reliance on static training data often limits their ability to provide the most current, comprehensive, and contextually nuanced answers. This limitation is particularly evident when interacting with the vast, dynamically evolving, and highly interconnected knowledge bases found in many professional domains. 

While Retrieval-Augmented Generation (RAG) offers a significant step forward by allowing LLMs to access external information, it frequently struggles with the intricate relationships embedded within complex datasets. This challenge is acutely felt in sectors such as legal research, business intelligence, and corporate knowledge management, where the ability to precisely navigate extensive documents and extract deep, interconnected insights is critical for informed decision-making. Traditional RAG, in these scenarios, often fails to select truly relevant context, resulting in fragmented or incomplete answers.

GraphRAG directly addresses these limitations by recognizing that information often derives its true meaning from its connections. This powerful paradigm enhances RAG by leveraging the structural richness of graph databases to represent knowledge as a network of entities and their relationships. By doing so, GraphRAG empowers LLMs to not just retrieve isolated text snippets, but to intelligently traverse and query the underlying relationships, leading to a far more comprehensive and contextual understanding of information.

Attendees will discover:

* The fundamental principles of GraphRAG and its significant advantages over conventional RAG methods in handling complex, interconnected datasets&#8212;a critical capability for applications in business analysis, legal document interpretation, and comprehensive knowledge base exploration.
* How Neo4j efficiently structures and queries interconnected data, enabling optimal information retrieval.
* An overview of Python tools related to GraphRAG, showcasing its user-friendliness in building GraphRAG applications. This includes its capabilities for automated knowledge graph construction, extracting entities and relationships, and its support for various LLM providers and embedding models.
* Practical patterns for ingesting diverse data into Neo4j and leveraging its graph intelligence to enrich LLM prompts, thereby significantly improving the relevance, coherence, and depth of generated responses.

Whether you&apos;re a Python developer eager to build more sophisticated LLM applications, a data scientist exploring advanced retrieval techniques, or a professional in business, law or administration, this session will equip you with the foundational knowledge and practical insights to begin your journey with Neo4j-powered GraphRAG in a Python environment.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/UU8XBZ/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/UU8XBZ/feedback/</feedback_url>
            </event>
            <event guid='d5febc25-2e13-5aa1-980c-f488808baec0' id='75250' code='7MCNCZ'>
                <room>Track B (LT-14)</room>
                <title>Implementing an MCP Server for DBMS in Python &#8212; YDB&#8217;s Experience</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T15:50:00+08:00</date>
                <start>15:50</start>
                <duration>00:30</duration>
                <abstract>Learn how YDB leverages the Model Context Protocol (MCP) to integrate AI models with database systems. This session explores the development of a Python-based MCP server that facilitates seamless interactions between large language models and YDB&#8217;s open-source Distributed SQL database management system. Learn about the design decisions, challenges faced, and the practical benefits of integrating MCP into data architecture. Ideal for developers and AI practitioners aiming to enhance AI capabilities with direct database access.

General understanding of Large Language Models (LLM) and Database Management Systems (DBMS). No deep knowledge of Python itself is necessary.</abstract>
                <slug>pyconhk2025-75250-implementing-an-mcp-server-for-dbms-in-python-ydb-s-experience</slug>
                <track></track>
                
                <persons>
                    <person id='74830'>Ivan Blinkov</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/7MCNCZ/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/7MCNCZ/feedback/</feedback_url>
            </event>
            <event guid='19584669-008b-560d-9b25-b913d43b953f' id='74138' code='H3MBTJ'>
                <room>Track B (LT-14)</room>
                <title>AI&#24037;&#20855;&#25913;&#35722;&#20102;Python&#29978;&#40636; / How AI Tools Changed the Python Language</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T16:30:00+08:00</date>
                <start>16:30</start>
                <duration>00:30</duration>
                <abstract>&#26032;&#33288;&#30340;AI&#24037;&#20855;&#65292;&#20363;&#22914;Github copilot&#21644;cursor&#65292;&#20196;&#23531;&#31243;&#24335;&#26356;&#26041;&#20415;&#12290;&#20294;&#25105;&#30332;&#29694;&#36889;&#20123;&#24037;&#20855;&#20431;&#20431;&#22320;&#25913;&#35722;&#20102;Python&#36889;&#20491;&#35486;&#35328;&#65292;&#25105;&#26371;&#29992;&#24190;&#20491;&#20363;&#23376;&#65292;&#38928;&#28204;&#26410;&#20358;Python&#36889;&#20491;&#35486;&#35328;&#30340;&#25913;&#35722;&#65292;&#25105;&#20497;&#21487;&#20197;&#20570;&#29978;&#40636;&#65292;&#20197;&#21450;&#28858;&#20309;&#36889;&#20123;&#25913;&#35722;&#26371;&#20986;&#29694;&#12290;

The new AI tools, such as GitHub Copilot or Cursor, have made programming easier. However, I observed that these tools silently changed the Python language. I will give a few examples to explain and predict the future of Python language. I will give my opinion on why this happens and what we can do about it.</abstract>
                <slug>pyconhk2025-74138-aipython-how-ai-tools-changed-the-python-language</slug>
                <track></track>
                
                <persons>
                    <person id='73914'>Dr. Adrian Tam</person>
                </persons>
                <language>zh-hant</language>
                <description>&#19968;&#20491;&#35486;&#35328;&#20006;&#19981;&#38480;&#26044;&#35486;&#27861;&#65292;&#36996;&#26377;&#20351;&#29992;&#32722;&#24931;&#65292;&#20363;&#22914;Microsoft&#21916;&#27489;&#29992;Hungarian notation&#23531;C++&#12290;&#38263;&#20037;&#20197;&#20358;&#65292;Python&#37117;&#26159;&#20197;&#31777;&#28500;&#33879;&#31281;&#65292;&#26576;&#31243;&#24230;&#19978;&#21487;&#33021;&#28304;&#26044;&#25078;&#24816;&#65292;&#25152;&#20197;type annotation&#21644;docstring&#30340;&#19981;&#35211;&#26044;&#25152;&#26377;&#31243;&#24335;&#12290;&#28982;&#32780;&#65292;AI&#24037;&#20855;&#30340;&#20986;&#29694;&#26371;&#20196;&#23531;&#20986;&#36889;&#20123;&#12300;&#27794;&#29992;&#30340;&#37096;&#20214;&#12301;&#26356;&#24265;&#20729;&#65292;&#24478;&#32780;&#20196;&#20043;&#26356;&#30427;&#34892;&#12290;&#21478;&#19968;&#26041;&#38754;&#65292;&#36889;&#20123;&#24037;&#20855;&#32943;&#23450;&#20196;&#20154;&#23569;&#20102;&#24605;&#32771;&#65292;&#29986;&#20986;&#30340;&#35486;&#35328;&#26356;&#21934;&#19968;&#12290;&#25105;&#26371;&#29992;&#19968;&#20123;&#20363;&#38988;&#30475;&#30475;&#36889;&#20123;&#24037;&#20855;&#22914;&#20309;&#22609;&#36896;Python&#30340;&#26410;&#20358;&#65292;&#20197;&#21450;&#35299;&#37323;&#28858;&#20309;Python&#26371;&#27604;&#20854;&#20182;&#35486;&#35328;&#26356;&#23481;&#26131;&#21463;&#21040;AI&#24037;&#20855;&#30340;&#24433;&#38911;&#12290;
&#28858;&#37197;&#21512;&#27604;&#21947;&#21450;&#31505;&#35441;&#65292;&#36889;&#20491;&#35611;&#38988;&#26371;&#29992;&#24291;&#26481;&#35441;&#65292;&#22914;&#35264;&#30526;&#35201;&#27714;&#37197;&#21512;&#65292;&#21487;&#21363;&#22580;&#25913;&#20197;&#33521;&#35486;&#36914;&#34892;&#12290;

A language is not only its syntax but also its conventions of usage. For example, Microsoft is famous for using Hungarian notation in C++.

Python is famous for its concise syntax. There are type annotations and docstrings in the language, but they are not used by all projects. This is partially because humans are too lazy to do this extra work. The availability of the AI tools will make these &quot;useless bits&quot; cheap to add and thus more common. On the other hand, AI outputs are more uniform, unoriginal, and dull. I will prove this with some examples. I will also explain why it is the case, why Python is more susceptible to these problems than other languages, and what we should do about it.

This talk is intended to be delivered in Cantonese because of the jokes and analogies, but it can be switched to English if the audiences prefer.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://pretalx.com/media/pyconhk2025/submissions/H3MBTJ/resources/How_AI_Changed_KptFvjY.pdf">Presentation slides</attachment>
                </attachments>

                <url>https://pretalx.com/pyconhk2025/talk/H3MBTJ/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/H3MBTJ/feedback/</feedback_url>
            </event>
            <event guid='a525b3c0-fd62-5541-bda9-b21f51c5cece' id='73878' code='QBPXZ9'>
                <room>Track B (LT-14)</room>
                <title>What does it take to create a language of your own in Python?</title>
                <subtitle></subtitle>
                <type>Short talk</type>
                <date>2025-10-11T17:05:00+08:00</date>
                <start>17:05</start>
                <duration>00:15</duration>
                <abstract>Ever wondered how to create your own domain-specific language tailored to your needs?

This session explores how to build a programming language that lets users write code using natural language. Designed to be fun, intuitive and easy to use, the language is crafted for young learners especially those for whom English is not a first language. Built with Python, the system parses and interprets natural language into executable code. I&#8217;ll share the design challenges, key insights and lessons learned from creating a language that&#8217;s user-centered.</abstract>
                <slug>pyconhk2025-73878-what-does-it-take-to-create-a-language-of-your-own-in-python</slug>
                <track></track>
                
                <persons>
                    <person id='73726'>Chaw Chit Su Thwe</person>
                </persons>
                <language>en</language>
                <description>This session is for anyone curious about building your own little domain-specific languages, exploring new ways to teach programming or just crafting code that speaks your own language, literally.

Inspired by my working with an organization that taught coding to children and talks at PyCon APAC, I asked: What if programming could be made more accessible with a language tailored to children? 

The talk will cover:

**Language Design**
- Making decisions around syntax depending on the purpose.

**Architecture Choices**
- Interpreter vs compiler: which architecture best fits for your need?
- Parsing libraries: tools available such as PLY, Lark.

**Technical Implementation**
- Building the lexer, parser, and interpreter and handling errors using Python.

**Demo**
- The language in action.

**Future Directions**
- Adding support for more languages, introducing to wider community.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/QBPXZ9/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/QBPXZ9/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Track C (LT-16)' guid='dcf3e4c4-84bc-58e8-a11a-c5bb9320e726'>
            <event guid='8aca53b9-2faa-592e-a53a-18f6a5bbf7df' id='75201' code='KDMRUJ'>
                <room>Track C (LT-16)</room>
                <title>Mercari LLM Benchmark: Building a Practical LLM Benchmark for Your Business</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T11:30:00+08:00</date>
                <start>11:30</start>
                <duration>00:30</duration>
                <abstract>Every new LLM comes with glowing performance on English-centric benchmarks. This makes it difficult to predict how that performance will translate to business use cases in other languages or specialized domains. At Mercari, Japan&apos;s largest C2C marketplace, we faced this exact problem with Japanese. Inspired by Kagi, Wolfram, and Aider benchmarks, we are building our own continuously updated internal benchmark to evaluate major LLMs on unpolluted, business-critical tasks that models have not seen in their training data. The talk will cover task design, an evaluation pipeline in Python, a comparison of the latest models on accuracy, cost, and latency, and practical lessons for creating your own benchmark tailored to your needs.</abstract>
                <slug>pyconhk2025-75201-mercari-llm-benchmark-building-a-practical-llm-benchmark-for-your-business</slug>
                <track></track>
                
                <persons>
                    <person id='73853'>Prashant Anand</person><person id='74786'>Kanta Suga</person>
                </persons>
                <language>en</language>
                <description>Outline
1. Motivation: Why Standard Benchmarks Fail in Non-English Contexts. Speaker introduction. (2 minutes)
2. Task Taxonomy and Dataset Curation: Creating unpolluted tasks that mirror real business problems. Examples of tasks. (3 minutes)
3. Python Evaluation Pipeline: A robust, automated pipeline with Litellm, Pydantic, SQLite, etc. (9 minutes)
4. Methodology and Metrics: Ensuring fair, unpolluted evaluation beyond simple accuracy. (3 minutes)
5. Results: A snapshot of how the latest major LLMs perform on our private, business-critical tasks. (3 minutes)
6. Surprising Trade-offs: Analyzing the Pareto frontier of accuracy, cost, and speed for production systems. (3 minutes)
7.  Building Your Own Benchmark: Essential Python libraries, design patterns, and practical lessons. (5 minutes)
8. Conclusion and Q&amp;A (2 minutes)

Audience
Python developers, ML/DS engineers, tech leads, and product managers using Large Language Models for real-world business applications, especially in non-English or specialized domains.</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/KDMRUJ/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/KDMRUJ/feedback/</feedback_url>
            </event>
            <event guid='0b536c63-0849-5dd6-8bd4-2eb371dd6a5d' id='72910' code='3WPDCG'>
                <room>Track C (LT-16)</room>
                <title>The graph capture mechanisms in PyTorch</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T12:10:00+08:00</date>
                <start>12:10</start>
                <duration>00:30</duration>
                <abstract>PyTorch is the the most popular deep learning framework used in both academic and industry. Researchers and engineers use PyTorch to train their models with the convenient and well-defined neural network APIs in eager mode. After training, one has to export the model computation flow as a graph to a framework-agnostic format (e.g., ONNX, TensorRT, etc.) to deploy the trained model for inference with better performance. Thus, we need a mechanism to capture the computation operations happend inside a DNN model.

Graph capturing aims to track and record the PyTorch API invocations used in a model. Since the release of PyTorch 2.0 in 2023, there are two primary machineries to trace a model computation graph: `fx.symbolic_trace` and Dynamo. In this proposal, I&apos;d like to introduce the usage of both kinds of APIs, and further dissect the underlying working machinary of these two approaches. We also tend to discuss the limitations of both, showing that `fx.symbolic_trace` is limited by the static symbolic tracing mode and Dynamo is still on its early age.

The slides are available: https://docs.google.com/presentation/d/12u6sjOJgLeWltmLTzpoNvcR6bUynTZ4iyFwPpPVrRwI/edit?usp=sharing</abstract>
                <slug>pyconhk2025-72910-the-graph-capture-mechanisms-in-pytorch</slug>
                <track></track>
                <logo>/media/pyconhk2025/submissions/3WPDCG/Snipaste_2025-10-10_19-1_TMyYWaS.png</logo>
                <persons>
                    <person id='72962'>Xuanteng Huang</person>
                </persons>
                <language>en</language>
                <description>In this proposal, I&apos;d like to share the following key topics about the graph capture approaches in PyTorch:
- How can we harness `fx.symbolic_trace` and `torch.dynamo.export` to capture the DNN operations during the model execution
- How does the symbolic trace mechanism from FX produces the static model graph by substituting the substantial tensors in the graph with &quot;fake&quot; symbolic values
- How Dynamo exploits the custom frame evaluation interface provided by CPython since PEP 523 to dynamically evaluate and dump the PyTorch API invocations during eager execution of DNN models, showing that PyTorch not only treats Python as a frontend language, but also deeply leverages CPython runtime features to extend its flexibility and usability
- The respect limitations of both interfaces</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/3WPDCG/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/3WPDCG/feedback/</feedback_url>
            </event>
            <event guid='25be4558-54bc-5b23-9f24-bf3669ccad2a' id='78141' code='WECB7J'>
                <room>Track C (LT-16)</room>
                <title>My Poor Fund: How MPF Fees Are Eating Your Retirement</title>
                <subtitle></subtitle>
                <type>Short talk</type>
                <date>2025-10-11T12:45:00+08:00</date>
                <start>12:45</start>
                <duration>00:15</duration>
                <abstract>Hong Kong&#8217;s Mandatory Provident Fund (MPF) is supposed to secure your retirement&#8212;but what if it&#8217;s secretly shrinking your savings? Using Python, we&#8217;ll simulate how high fees erode your returns over time, compare MPF performance against low-cost alternatives (like index funds), and uncover whether sticking with the default plan could cost you millions. Through interactive visualisations, we&#8217;ll expose the maths behind, and explore how self-directed investing might be the escape hatch.</abstract>
                <slug>pyconhk2025-78141-my-poor-fund-how-mpf-fees-are-eating-your-retirement</slug>
                <track></track>
                
                <persons>
                    <person id='79207'>Philip C.</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/WECB7J/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/WECB7J/feedback/</feedback_url>
            </event>
            <event guid='12c684e1-9f40-566d-b10a-e14d654a5c99' id='73377' code='LSRJ8Q'>
                <room>Track C (LT-16)</room>
                <title>Pythonic Finance: Analyze Company Fundamentals with SEC EDGAR APIs</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T14:00:00+08:00</date>
                <start>14:00</start>
                <duration>00:30</duration>
                <abstract>In this talk, Python and quantitative methods are used to access, validate, and analyze fundamental financial data from the US Securities and Exchange Commission (SEC) EDGAR system. The SEC&apos;s JSON API provides structured financial data, derived from company filings reported in eXtensible Business Reporting Language (XBRL), an international standard for financial reporting. Pydantic is used for robust data validation. Attendees will learn to:

- Fetch basic metrics
- Calculate financial ratios
- Visualize trends
- Navigate common data challenges

While focused on the US market data, a brief explanation of the international landscape will also be provided. No finance background required. Basic Python is required to understand the data processing part.</abstract>
                <slug>pyconhk2025-73377-pythonic-finance-analyze-company-fundamentals-with-sec-edgar-apis</slug>
                <track></track>
                
                <persons>
                    <person id='73352'>Nicholas Dwiarto</person>
                </persons>
                <language>en</language>
                <description>### Target

- **Who**: This talk is designed for anyone interested in using Python to understand public company financials, spanning from students, programmers, hobbyists, even experienced working professionals. As mentioned, no finance background is required for this talk. Beginner-level Python (variables, functions, lists, using libraries) might be required to understand how the financial data is processed to output metrics.

- **What:** Attendees will be able to discover briefly about the XBRL language, hands-on techniques for getting data from SEC EDGAR&apos;s `companyfacts` API, combining data science and software engineering to validate data with Pydantic, extract key fundamental metrics from the API responses, calculate basic financial ratios, visualize financial trends, and learn the nuances of working with public financial data APIs, even internationally.

- **How:** This talk will be presented in a mixed-style of core financial concepts with live (fallback is prepared in case network errors) Python demonstrations in a Jupyter Notebook / Google Colaboratory. This talk will go through the entire process: selecting a company to visualize its financial health, techniques to ensure that the data is valid, and calculating financial metrics and ratios.

### Scope

- **I am NOT a financial advisor and this talk is for educational purposes only, I will NOT promote or recommend any specific assets, companies, products, and strategies, and this talk is NOT to be construed as any financial, investment, or trading advice**
- Advanced financial modeling, company valuations, and comprehensive ratio analysis are outside of the talk&apos;s scope
- This talk does not dive deep with parsing XBRL format
- This talk does not cover how to buy and/or sell securities
- All examples of this talk use historical data, past performance is not indicative of future performance

### Outline

Planned outline of the presentation:

- Introduction and Disclaimer (~3 minutes)
    - Quick self-introduction and an important disclaimer that I am not a financial advisor and this talk is not a financial advice
    - Why analyze company fundamentals with Python?
- The Data: SEC EDGAR, XBRL, and APIs (~4 minutes)
    - Overview of SEC, EDGAR system, and U.S. company filings (10-K)
    - Brief introduction to XBRL as the structured data standard
    - Focus on the `companyfacts` JSON API for XBRL-derived data
- Real-Life Scenario: Ensuring Data Quality with Pydantic (~3 minutes)
    - Why Pydantic and a quick overview of the Pydantic models for the API response
- Fetching and Validating Company Data (~3 minutes)
    - Use `requests` and `pydantic` to get and validate data for a sample U.S. company
    - Handle potential API or validation issues
- Finance Metrics Explanation &amp; Extraction (~7 minutes)
    - Explanation of basic, core finance metrics: `Revenue`, `Net Income`, `Assets`, `Liabilities`, `Equity`
    - Extraction of the annual data, building the `pandas`&apos;s `DataFrame` to showcase the data
    - Adapting to different XBRL tags (different derived JSON property) for the same financial concept, companies might not have the same schema
- Calculation of Finance Ratios (~3 minutes)
    - Explanation of finance ratios: `Net Profit Margin`, `Debt to Equity Ratio`
    - Calculation of the metrics
- Visualizing Trends (~2 minutes)
    - From the metrics and calculations, generating and showcasing plots with `matplotlib` / `seaborn`
- Internationalization and Data Nuances (~2 minutes)
    - How other countries (example: Japan has `EDINET`) has a different system, but with the same XBRL data structure, proving the skills and knowledge are transferrable
- Key Takeaways, Recap, Closing (~2 minutes)
    - Summary of the process, the tools, suggestions for future exploration</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links>
                    <link href="https://github.com/lauslim12/analyze-company-fundamentals-with-sec-edgar-api">GitHub Repository</link>
                </links>
                <attachments>
                    <attachment href="https://pretalx.com/media/pyconhk2025/submissions/LSRJ8Q/resources/pythonic-finan_pc26aWn.pdf">Slide</attachment>
                </attachments>

                <url>https://pretalx.com/pyconhk2025/talk/LSRJ8Q/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/LSRJ8Q/feedback/</feedback_url>
            </event>
            <event guid='df510594-527a-5cdf-b707-8a70847ec0f5' id='72858' code='SGNMQN'>
                <room>Track C (LT-16)</room>
                <title>Search matters: Engineering search systems that actually work</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T14:40:00+08:00</date>
                <start>14:40</start>
                <duration>00:30</duration>
                <abstract>Large language models face fundamental limitations, including outdated training data, context window constraints, and a tendency to hallucinate. While vector similarity search is a popular solution through Retrieval-Augmented Generation (RAG), simple cosine similarity often fails to capture the nuanced relevance needed for high-quality LLM responses. 

This talk explores how search capabilities can enable your LLMs to provide accurate responses. We examine how sophisticated retrieval methods work through hybrid search combining dense and sparse retrieval, semantic reranking, and external memory using Qdrant Vector Database - Python client. We demonstrate how search becomes the critical bridge between knowledge and real-world information needs.</abstract>
                <slug>pyconhk2025-72858-search-matters-engineering-search-systems-that-actually-work</slug>
                <track></track>
                
                <persons>
                    <person id='72920'>Tarun Jain</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/SGNMQN/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/SGNMQN/feedback/</feedback_url>
            </event>
            <event guid='4264ab2c-9b85-59c8-b926-252052ebefb4' id='71594' code='HJYDTX'>
                <room>Track C (LT-16)</room>
                <title>Peek Inside the Pixels: Visual Interpretability for Computer Vision Models</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2025-10-11T15:50:00+08:00</date>
                <start>15:50</start>
                <duration>00:30</duration>
                <abstract>As computer vision becomes more deeply integrated into real-world applications, understanding how and why models make decisions is no longer optional, it&#8217;s essential. This talk introduces practical interpretability techniques that bring transparency to computer vision models. We&#8217;ll explore popular methods such as Grad-CAM and LIME, and see how they reveal the inner workings of deep learning models through visual explanations. Through live demos, attendees will learn how these tools can be used to debug models, uncover biases, and build trust with users. Designed for Python developers of all backgrounds, this session makes a complex topic accessible even if you&apos;re new to machine learning or explainable AI.</abstract>
                <slug>pyconhk2025-71594-peek-inside-the-pixels-visual-interpretability-for-computer-vision-models</slug>
                <track></track>
                
                <persons>
                    <person id='71666'>Cyrus Mante</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/HJYDTX/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/HJYDTX/feedback/</feedback_url>
            </event>
            <event guid='f3fd6edb-15af-521e-bb55-f226a773c69b' id='73501' code='CUPHVJ'>
                <room>Track C (LT-16)</room>
                <title>Functional Python: Practical Paradigms for Readable and Robust Code</title>
                <subtitle></subtitle>
                <type>Short talk</type>
                <date>2025-10-11T17:05:00+08:00</date>
                <start>17:05</start>
                <duration>00:15</duration>
                <abstract>While Python&apos;s object-oriented paradigm dominates developer discussions, its functional capabilities offer powerful tools for modern development. This talk explores how integrating functional programming (FP) concepts can enhance code readability and maintainability in Python projects. We will discover how to transform imperative logic flow into composable functions and implement declarative error-handling using intuitive railway patterns. This talk aims to provide an optional toolbox for Python developers to improve code quality.</abstract>
                <slug>pyconhk2025-73501-functional-python-practical-paradigms-for-readable-and-robust-code</slug>
                <track></track>
                
                <persons>
                    <person id='73443'>Wenxin Jiang</person><person id='73444'>Jian Yin</person>
                </persons>
                <language>en</language>
                <description>Functional programming (FP) offers powerful tools and is increasingly adopted across modern languages, including Python. Since Python is not a purely functional language, rather than advocating for a complete shift to FP, this talk will demonstrate how to effectively integrate functional techniques, such as pure functions and higher-order functions, into your Python codebase. By converting imperative procedure-style logic into composable functions, developers can focus more on the &quot;what&quot; (logic) rather than the &quot;how&quot; (implementation details). As for error handling, we will explore how to organize code using a fun and easy-to-understand railway analogy. By the end of this talk, you&apos;ll understand how to apply basic FP concepts in Python, which improve code&apos;s readability, maintainability, and robustness.
The slides of this talk is available at [https://lucajiang.github.io/functional_python/](https://lucajiang.github.io/functional_python/)</description>
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://pretalx.com/pyconhk2025/talk/CUPHVJ/</url>
                <feedback_url>https://pretalx.com/pyconhk2025/talk/CUPHVJ/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    <day index='2' date='2025-10-12' start='2025-10-12T04:00:00+08:00' end='2025-10-13T03:59:00+08:00'>
        
    </day>
    
</schedule>
