It's about time. PyCon APAC 2022 tomorrow!!

It's tomorrow! Be sure you have gotten the "attendee letter" email to access main conference, our discord chat server, and more. Contact staff with name prefix [PyCon TW] in our gather.town main conference venue, and #information-desk of our discord if you have any questions!


銀級贊助商 - Reuven Lerner - An intro to Python bytecodes

One of the most common myths that I encounter in my corporate training is that Python is an interpreted language. It's not really surprising that people believe that -- after all, Python is often referred to as a "scripting" language, and often has the feel of an interpreted language, one that is translated into machine code one line at a time.

But in fact, Python is a byte-compiled language: First, the code that you write is translated into bytecodes -- an interim, portable format that resembles a high-level assembly language. When you run your program, those bytecodes are executed by the Python runtime. This is pretty similar to how things work in a number of other platforms, including .NET and Java -- but the process in Python is so transparent that we often don't think about it.

This is often easiest to see when we define a function. Whenever we use "def", we actually do two things: First, we create a function object. Then we assign that object to a variable.  Both of these seemingly simple steps can be a bit surprising, even to people who have been using Python for many years.

First, the notion that Python has "function objects" seems a bit weird. But really, it's part of Python's overall philosophy that everything is an object. Every string is an instance of class "str", every dictionary is an instance of class "dict", and every function is an instance of class "function". (Note that while both "str" and "dict" are builtin names, "function" is not.) The fact that functions are objects allows us to store them in lists and dicts, and to pass them as arguments to other functions (e.g., the "key" parameter in the builtin "sorted" function). The fact that functions are objects also means that they have attributes, names following dots (.) that act like a private dictionary.

The fact that "def" assigns our newly created function object to a variable is also a bit surprising to many, especially those coming from languages in which functions and data are in separate namespaces. Python has only a single namespace, which means that you cannot have both a variable named "x" and a function named "x" at the same time.

So if I execute the following code in Python:

    def hello(name):

        return f'Hello, {name}!'

I have assigned a new value, a function object, to the variable "hello".  I can even ask Python what type of object the variable refers to, using the "type" builtin:

    >>> type(hello)


It doesn't matter what "hello" might have referred to before; once we have executed "def", the variable "hello" now refers to a function object. We can call our function with parentheses:

    >>> hello('world')

Not surprisingly, we get the following back:

    'Hello, world!'

What happens, though, when we execute our function? In order to understand that, we'll need to have a close look at what is done at compile time (i.e., when we define our function) and at runtime (i.e., when we actually run our function).

I mentioned above that when we define a function, we create a function object, and that the object (like all others in Python) has attributes. The most interesting attribute on a function object is called "__code__" (pronounced "dunder-code" in the Python world, where "dunder" means "double underscore before and after a name"). This is the code object, the core of what is defined when we create a function. The code object itself has a number of attributes, the most interesting of which all start with "co_".  We can see a full list with the "dir" builtin:

    >>> dir(hello.__code__)

Here's a list of the attributes (a subset of the list that you'll get from running "dir") that start with co_:



















I wrote above that when we define a function, Python compiles it into bytecodes. Those are stored inside of the co_code attribute. We can thus see the bytecodes for a function by looking at it:

    >>> print(hello.__code__.co_code)

The good news is that this works. But the bad news is that it's pretty hard to understand what's going on here:


What we see here is a bytestring, a sequence of bytes -- as opposed to a sequence of characters, which is what we would have in a normal Python string. This is the code that Python executes when we run our function.

But wait -- what are these codes? What do they mean, and what do they do? In order to understand, we can use the "dis" function in the "dis" module. That module (and its function) are short for "disassemble," and they allow us to break apart the function and see it:

    >>> import dis

    >>> dis.dis(hello)

      2           0 LOAD_CONST               1 ('Hello, ')

                  2 LOAD_FAST                0 (name)

                  4 FORMAT_VALUE             0

                  6 LOAD_CONST               2 ('!')

                  8 BUILD_STRING             3

                 10 RETURN_VALUE

Things might now start to make more sense, even though we've also opened up a bunch of additional new mysteries.  The (CAPITALIZED) names that we see are the bytecodes, the names of the pseudo-assembly commands that Python recognizes.  The integers to the left of each command indicates the index into co_code with which each bytecode is associated.

So the byte at index 0 is for LOAD_CONST. The byte at index 2 is LOAD_FAST. And the byte at index 4 is FORMAT_VALUE.

But wait: What do these commands do? And why are we only using the even-numbered bytes?

The LOAD_CONST instruction tells Python to load a constant value. We're not talking about a constant in the general language, but rather a constant value that was assigned to the function object when it was compiled. At compile time, Python noticed that there was a string, 'Hello, '. It stored that string as a constant on the function object, in a tuple named co_consts. The function can thus retrieve that constant whenever it needs.  We can, of course, look at the co_consts tuple ourselves:

    >>> hello.__code__.co_consts

    (None, 'Hello, ', '!')

As you can see, the element at index 1 in our function's co_consts is the string 'Hello, '.  So the first bytecode loads that constant, making it available to our Python interpreter.  But wait, where did this constant come from? Look carefully, and you'll see that it's the first part of the f-string that we return in the body of the function. That's right -- while we think of an f-string as a static string with a dynamic component (inside of the {}), Python thinks of it as the combination of static parts (which are stored in co_consts as strings) and dynamic parts (which are evaluated at runtime).

So our f-string, which looks like this:

    f'Hello, {name}!'

Is turned by the Python compiler into

    'Hello, ' (constant) + name (variable lookup) + '!' (constant)

And indeed, we can see that co_consts[1] is 'Hello, ', and co_consts[2] is the single-character string '!'.  In between, we'll need to get the value of the "name" variable.

In order to do this, Python needs to know if "name" is a local variable or a global one. In this case, it's an easy call: Because "name" is a parameter to our function, it is by definition a local variable. Local variable values are retrieved using the LOAD_FAST bytecode, which we see at byte index 2. But how does it know which local variable to retrieve?

Fortunately, our function object also has an attribute named co_vars, a tuple of strings with all of the local variable names:

    >>> hello.__code__.co_varnames


So the argument 0 which is given to LOAD_FAST indicates that we want to retrieve the value of local variable 0, aka "name".  In the first two bytecodes, we thus load a constant and a variable name. Then Python uses the special FORMAT_VALUE bytecode to format our "name" variable:

      2           0 LOAD_CONST               1 ('Hello, ')

                  2 LOAD_FAST                0 (name)

                  4 FORMAT_VALUE             0

Usually, formatting a value means turning it into a string using "str".  But some objects have a special "__format__" method defined, which allows them to have a special output in this context.

We now have two strings on our stack -- and yes, the Python runtime is a stack machine, which you might have learned about if you studied computer science. But we need the exclamation point, so we load that, too:

                6 LOAD_CONST               2 ('!')

We now have three strings on the stack -- our initial constant, the formatted version of "name", and the constant '!'.  We now create a string, based on these three components, with another bytecode, BUILD_STRING. We hand BUILD_STRING an argument of 3, to indicate that it should crate a string from the three topmost items on the stack:

                8 BUILD_STRING             3

And that's it! We have created the string that we wanted, based on the user's argument. The time has come to return that value, and we do so with the special RETURN_VALUE bytecode:

               10 RETURN_VALUE

How often do you really need to read Python bytecodes? Never. But reading the bytecodes does give you a sense of how Python works, what it's doing behind the scenes, how particular functionality (e.g., f-strings) are implemented, and which decisions are made at compile time, rather than runtime.  Understanding Python's division of labor between compile time and runtime can, in my experience, help to make sense of error messages you get, and also to put into context so many other parts of Python that can see mysterious.

I'll be talking about these and other parts of Python bytecodes, especially through the lens of functions, at PyCon APAC 2022, in my talk, "Function dissection lab." I hope to see you there!


白金級贊助商 - PyCon APAC 2022 x 國泰金控 Gather Town活動搶先預告 技術短講&人才諮詢&限量好禮我全都要!



國泰金控PyCon專屬攤位在 Gather Town 開張囉!還有好禮可以拿!




好禮2:完成小任務「填問券、入社團」就有機會各獲得50元Uber eat禮卷!(數量有限,送完為止,獲得者可兌換Uber Eats禮卷乙次,唯使用禮券時需一次性使用完,相關使用規則將於禮券寄出時載明)



技術短講資訊:將於國泰Gather Town SpaceA攤位進行


時間:9/3 (SAT)11:15~11:25

講者:國泰人壽 數據經營部 詹珺崴分析師 / 黃喬敬 經理

內容:保險商務的推動多仰賴業務員推動,但到底哪個業務員最適合客戶呢? 國泰團隊以網路萃取特徵,結合客戶與業務員的互動紀錄進行機器學習,成功建構了一套業務員推薦系統,協助推薦客戶最適合的業務員。

場次二:Restful to Kafka 即時模型評分服務實現

時間:9/3 (SAT) 14:35~14:45

講者:國泰世華銀行 數據部林子暐

內容:數據部門產出的模型結果需要更即時地送達前線系統,造成Restful API請求的架構漸漸呈現流程繁瑣和重複的情況。因此團隊規劃使用容器化的技術,實現串流資料的處理和服務負載的監控機制,將多個模型評分送到流處理平台Kafka,進而優化上下游系統取得各自需要模型評分的流程。


時間:9/4 (SUN) 11:05~11:15

講者:國泰產險 數據科技發展部 李郁芳



#國泰技術短講 #人才諮詢 #獨家獻禮



白金級贊助商 - 美光智慧製造,加速全球半導體產業發展

美光於 2014 年底開始採用大數據技術。利用新的智慧製造技術,美光全球營運 (Micron Global Operations) 團隊能部署複雜的半導體架構、程序以及技術,來創新與打造新產品,進而為客戶、投資人以及企業帶來價值。


台灣美光在開發美光領先的 DRAM 產品方面扮演關鍵性角色。身為一個高產量的 DRAM 卓越製造中心,台灣美光致力於採用尖端科技生產 DRAM,提供伺服器、個人電腦、GPU、手機、高效能運算及其他領域來使用。


美光智慧製造(Smart Manufacturing & AI, SMAI) 副總裁 Koen De Backer 表示:「此一認可見證了美光在採用和整合工業 4.0 技術,以及形塑半導體製造未來方面的成功。我們會透過在各廠區落實採用工業 4.0 技術,持續引領半導體製造的未來,為顧客提供更高效能的產品。」


透過採用工業 4.0 技術,美光可減少勞力密集的營運,並且重新設計各個工作項目使它發揮出更多價值。這些改變並不會減縮員工人數,但是會提升員工的技能。我們將能夠找出哪些團隊成員適合技能提升以及職涯發展,提供在職及課堂訓練,並且安排他們擔任其他職務。

透過採用工業 4.0 技術,美光讓團隊成員隨時能夠取用資料,方便他們從遠端執行任務以及監控多項工具的健全情況及狀態,不需要親臨廠區或位在該設備附近。

美光智慧製造  (Smart Manufacturing & AI, SMAI)

美光智慧製造,其中包含運用雲端先進科技的跨國數據團隊SMTS (SMAI technical solution team),透過巨量資料處理技術和雲端服務,整合並建構標準化解決方案與平台,以加速美光公司內的智慧製造,成功推動各式人工智慧應用,包含製程量產優化,品質流程控管和優化,以及自動化減少人工操作。


想了解更多,請前往美光官網 micron.com


PyCon APAC 2022 regular ticket on sale until Aug 1 2022

 PyCon APAC 2022 regular ticket on sale until Aug 1 2022.

See more different kinds of ticket, or buy the ticket here.


Call for Sprint Project Leaders. Apply before July 20th 2022


Do you want to invite more people to join the project you're developing?

Bring your #OpenSource #Python project and lead the Sprint development!

Apply before July 20th via this form.

More info of the sprint:

Time:09:30 ~ 17:00, 14th, Aug. Sunday (2022/08/14 09:30 ~ 17:00) (TST, GMT+8) 

Location:Gather Town *

Deadline of submission : 23:59:59, 20th, July Friday (2022/07/20 23:59:59) (TST, GMT+8)

We will start to review your submission after the deadline of submission, and will inform you if your project is accepted on 23th July. We are looking forward to your participation.

* Due to Gather Town's age restriction policy, participants in PyCon APAC 2022 Sprints must be over 18 years old.


PyCon APAC 2022 Financial Aid 財務補助開跑!

PyCon APAC 2022 is opening applications for the Financial Aid program!
PyCon APAC 2022 財務補助開跑!


Whilst following the Everyone Contributes / Everyone Pays policy, we also provide a 

financial aid program to help friends in the community, financially or otherwise.

本著 Everyone Contributes / Everyone Pays policy 的同時,今年也



Don't forget to apply financial aid, if you are really interested in participating in PyCon 

APAC 2022 but with some economic considerations.

如果您真的對 PyCon APAC 2022 很有興趣,但礙於某些經濟考量的話,別忘了您可考慮申



More details in official website https://tw.pycon.org/2022/en-us/registration/financial-aid



Early bird ticket is going to close until May 22 (UTC+8)

Buy early bird ticket here.

You may take a sneak peek of keynote speakers this year from our twitter. We will update more details as soon as possible. Stay tuned!


PyCon APAC 2022 CfP is Open!

 (Mandarin Below) 

The CfP for PyCon APAC 2022 is OPEN now!

PyCon APAC 2022 will be held in Gather Town and on Youtube fully remote on Sep. 3-4. 

There will be a different conference style this year, so look out for future updates on what to expect!

We accept a broad range of Python-related proposals ranging from academic research to commercial projects, case studies, running a community, communication strategies, mental health, failed experiences etc.

Important Points:

  1. Due to the ongoing global pandemic, all online talks will be pre-recorded, optional with live Q&A sessions on conference day.

  2. Duration of each session types:

    1. Talk : 15 / 30 / 45 min 

    2. Tutorial : 90 min

  3. You may present in any language you are comfortable with, but the proposals for talks made through our CFP system must be in English or Mandarin Chinese only so that our reviewers can understand them.

  4. We will refer or forward some of the rejected proposals to local Python communities in APAC for their consideration in their own events.

Important Dates : 

  • Talks & Tutorial CfP starts: Mar. 1

  • Talks & Tutorial CfP ends: Apr. 15  (23:59:59 AoE)

  • Dates of the Conference: Sep. 3 - Sep. 4

For more detailed CfP info, please visit PyCon APAC 2022 website - CfP.

Your proposals for talks or tutorials are needed to make this conference a success!


PyCon APAC 2022 CfP 徵稿已正式開放!

PyCon APAC 2022 年會將於 Gather, Youtube 平台全線上舉行,並嘗試與過往年會不同的會議風格,敬請期待!

我們接受泛 Python 相關的各類投稿,包括學術報告、商用專案或者案例研究等,或是社群經營、溝通、心理健康、失敗經驗等軟議題。



  1. 因應疫情,PyCon APAC 2022 採全預錄演講及遠端直播 Q&A(自由參與)。

  2. 演講時間長度

    1. 演講 (Talk) : 15 分鐘、 30 分鐘、45 分鐘,您可以自由選擇合適的演講長度。

    2. 專業課程 (Tutorial) :90 分鐘。

  3. 演講語言不限。但請使用英文或中文投遞稿件,以便於 PyCon APAP 2022 審稿委員進行審稿。

  4. 即使稿件最後未錄取, PyCon APAC 會將部分未錄取稿件推薦至 APAC 各國在地社群。


  • 議程、課程 開放徵稿:3/1 (二)

  • 議程、課程 投稿截止:4/15 (五) 23:59:59 (AoE)

  • 大會日期:9/3 (六) - 9/4 (日)

更多詳細 CfP 說明,請見 PyCon APAC 2022  - CfP



PyCon APAC and PyCon Taiwan

What is PyCon APAC?

Python Conference APAC (PyCon APAC) is authorized by Python Software Foundation, PSF, and organized by the Python community in APAC.

PyCon APAC is held once a year. It started in Singapore in 2010, moved to Japan in 2013. In 2014, it came to Taiwan for the first time. and “again”  it is hosted in Taiwan this year. PyCon APAC 2022 is hosted by the organizing team of PyCon Taiwan and other Python communities in the Asia-Pacific region. In this grand feast, we are honored to invite all the friends from various fields to learn, share new technological developments, and inspire new ideas from each other.

What are the Taiwan Python Conference (Python Conference Taiwan, PyCon Taiwan) and The organizing team of PyCon Taiwan?

The organizing team of PyCon Taiwan is a local Python community in Taiwan to organize and prepare for the Python Conference Taiwan. PyCon Taiwan is focused on exchanging Python technology and its various possible applications. PyCon Taiwan is committed to building a platform for Taiwanese and foreign Python enthusiasts to communicate. PyCon Taiwan also follows the principle of Everybody Contributes, which has become a feature of PyCon Taiwan that is different from other conferences in Taiwan.

PyCon Taiwan is an annual Python Conference in Taiwan. Because the organizing team of PyCon Taiwan is driving, hosting, and organizing PyCon APAC this year (2022) along with the other Python communities in APAC, the annual PyCon Taiwan will be “upgraded” to PyCon APAC 2022.

PyCon APAC 2022 is planned to run as a virtual conference event for the border control of pandemic to make most Python developers, users, and promoters participate.

PyCon APAC 與 PyCon Taiwan

什麼是 PyCon APAC?

PyCon APAC ( 全名是 Python Conference APAC ),是獲得 Python 軟體基金會 ( Python Software Foundation , PSF )授權,並且由亞洲太平洋地區的 Python 社群自發性舉辦的研討會。

PyCon APAC 每年舉辦一次,自2010年由新加坡開始、2013年移師到日本,並且在2014年首次在台灣舉辦,今年又再度於台灣登場。PyCon APAC 2022 將由 Python Taiwan 籌備團隊主辦,與其他亞太地區的 Python 社群共同籌辦,我們非常誠摯地邀請各位 Python 的愛好者,一同參與這場盛宴,互相學習、分享新的技術發展、激盪出更多的新創意。

台灣 Python 年會跟 PyCon Taiwan 籌備團隊

PyCon Taiwan 籌備團隊(以下簡稱「我們」)是由一群台灣在地的 Python 社群自發性組織的社群,負責籌備台灣 Python 年會 ( Python Conference Taiwan , PyCon Taiwan ),PyCon Taiwan 主要聚焦在促進 Python 技術的交流與其未來的各種可能發展性,為台灣本土及世界各地的 Python 愛好者提供一個開放且友善的平台。PyCon Taiwan 依循 PyCon US 的 Everybody Contributes 的原則籌備,這也成為 PyCon Taiwan 有別於台灣地區其他年會的一大特色。

PyCon Taiwan 是一年一度的台灣 Python 盛會,今年由於我們榮獲了承辦 PyCon APAC 2022 的機會,將每年舉辦的 PyCon Taiwan 升級至 PyCon APAC。因受疫情影響,年會將以線上交流形式舉辦,為廣大的亞太地區 Python 愛好者提供一個既安全又新鮮的體驗!

如果你想要知道更多我們如何透過 Gather Town 舉辦線上活動,可以點擊這裡觀看更多!


PyCon APAC 2022 Call for Proposal Deadlines and Important Dates

PyCon APAC 2022 will be held fully remote on September 3-4. And the official release time of the call for papers will start on March 1 and end on April 15.


  • March 1st: Talks & Tutorial CFP begins

  • April 15th, 23:59:59 (AoE): Talks & Tutorial CFP ends
  • April 15: End of Call for Proposals

  • April 16 ~ Apr 30: First round review

  • May 7 ~ May 21: Modification stage for submitters

  • May 22 ~ June 5: Second round review

  • June 12: Announce accepted and rejected proposals, and the waiting list



  • All online talks will be pre-recorded, optionally with live Q&A sessions.

  • Proposal for talks made shall be in English or Mandarin Chinese.

PyCon APAC 2022 will be held in "Fully Remote". Our online attendees, including online speakers, will also join our Discord to interact with others and watch talks live. Last year in PyCon Taiwan, we used Gather Town to give attendees an experience that is comparable to in-person participation. If you are interested in how Gather Town is used in PyCon Taiwan, see here !

 We're looking forward to the upcoming PyCon APAC 2022 :)

 #PyConAPAC2022  #PyConAPAC #PyConTW


Call for Project Leader of Sprint Event on March 13rd 2022

Sprint Event: March 13rd (Sun) 10:00 ~ 16:30 (TST)

Venue: Gather Town (the link will be announced later)

Call for Project Leader by Feb 28th (Mon) 23:59:59 (TST)

Please fill this form out to register your projects as a project leader https://forms.gle/fGaqfN31YKJdv7xC6



由於疫情目前尚未穩定,本次的 Sprint 會搬至 Gather 舉行,讓專案主持人和會眾能放心的在線上盡情的與專案主持人進行衝刺開發。對每一個專案,我們會開設在 Gather 的場地內的一個專屬房間。


舉行時間:3 月 13 日 (日) 10:00 ~ 16:30 (TST)

會場:Gather Town 線上舉行 (連結會事後公告)

專案主持人 Project Leader 招募截止日期:2 月 28 日 (一) 23:59:59 (TST)

請專案主持人在招募截止日期前,填寫報名登記表 https://forms.gle/fGaqfN31YKJdv7xC6

PyCon APAC 2022 將由 PyCon Taiwan 籌備團隊於 2022 九月舉辦

我們很高興宣佈今年 ( 2022 )的 PyCon APAC 將由台灣 Python 年會籌備團隊 ( PyCon Taiwan Organizing Team )主辦。日期為 2022 九月三日至四日、線上舉辦。歡迎訂閱 PyCon Taiwan @PyConTW 以持續追蹤更多最新消息!!

什麼是 PyCon APAC

Python Conference APAC ( PyCon APAC ) 是由 Python 軟體基金會 ( Python Software Foundation , PSF ) 授權、由亞洲太平洋地區的 Python 社群、自發性為亞太地區 Python 愛好者所舉辦的研討會。

它於 2010 由新加坡開始,在 2013 年移師日本東京,並於 2014 年首次來到台灣台北,PyCon APAC 每年舉辦一次,而今年 PyCon APAC 再次以台灣為主場、由 Python Taiwan 籌備團隊主辦、與其他亞太地區的 Python 社群共同籌辦,進行一次盛大的饗宴,邀請各界同好一齊相互學習、分享新的技術發展、激發新創意。

台灣 Python 年會 ( Python Conference Taiwan , PyCon Taiwan ) 與 PyCon Taiwan 籌備團隊

PyCon Taiwan 籌備團隊是一個由台灣在地 Python 社群自發組織與籌備台灣 Python 年會 ( Python Conference Taiwan Python )的社群,PyCon Taiwan 是聚焦在交流  Python 技術與其多樣的可能應用,並致力促進台灣國內外 Python 愛好者交流的平台。PyCon Taiwan 依循 PyCon US 的 Everybody Contributes 的原則籌備,這也成為 PyCon Taiwan 有別於台灣地區其他年會的一項特色。

PyCon Taiwan 是台灣一年一度盛大的 Python 活動,今年由於 PyCon Taiwan 籌備團隊承辦 PyCon APAC 2022 ,所以每年舉辦的 PyCon Taiwan 擴大辦理成 PyCon APAC、廣邀整個亞太地區的 Python 愛好者參與交流。因為疫情與邊境管制的關係,年會計畫藉由舉辦線上的交流形式來讓最多的亞太地區 Python 愛好者能夠一起共襄盛舉。


PyCon APAC 2022 Will be Hosted by PyCon Taiwan Organizing Team in September 2022

We are thrilled to announce that PyCon APAC 2022 will be hosted by us this year. The date of PyCon APAC 2022 is 3-4 September 2022. The main conference is planned as a virtual event, so our APAC and global friends (YOU!) could participate easily.

More details will be announced soon. Follow us on Twitter @PyConTW. Stay tuned!

PyCon APAC and PyCon Taiwan Organizing Team

Python Conference APAC (PyCon APAC) is authorized by Python Software Foundation, PSF, and organized by the Python community in APAC.

PyCon Taiwan is an annual Python Conference in Taiwan, organized by the PyCon Taiwan organizing team composed of the regional/local Python community in Taiwan. Because the organizing team of PyCon Taiwan is driving, hosting, and organizing PyCon APAC this year (2022) with the other Python communities in APAC, the annual PyCon Taiwan will be “upgraded” to PyCon APAC 2022.

PyCon APAC 2022 is planned to run as a virtual conference event for the border control of pandemic to make most Python developers, users, and promoters participle. If you are not from APAC, you are still more than welcome to join this virtual event. Stay tuned!


How PyCon Taiwan Uses Gather Town to Build the Virtual Conference Venue


This (2021) May, Taiwan encountered an unexpected COVID-19 outbreak which gave PyCon TW no choice but to go online. There are plenty of tools support great quality streaming and should be sufficient for speakers to share their ideas. However, a community conference is not just about the talks but also about interaction among people, which was the greatest challenge until we stumbled upon Gather Town. I was amazed by it at first glance. People can walk around and chat just like they were attending an on-site conference or playing an online game. Beyond that, I can even create a PyCon TW world that a real-world venue can never achieve. In the end, the venue got so many goodies way beyond what I expected. Without the help of Gather Town, PyCon TW would never hold such a successful online conference that can even compete with its on-site counterparts.

To recollect the great memories of 2021 PyCon TW, we had journalized each event we had within Gather Town.

 Wei Lee, Chair of PyCon Taiwan 2021 

Keynotes & Talks & Lightning Show

"Keynotes & Talks & Lightning Show" session is written by Jo

The Keynotes and Talks took place in 4 arenas, where the attendees can remain inside Gather Town and watch Youtube Live Streams. It felt like standing in New York Time Square with everyone. I could just chat with surrounded attendees about the content. Within each arena, there are information boards that provide useful links: shared notes, Slido, and website.

Where people watch live streaming in the R0 square (at the right side of the image). The blocks at the left region are the chat spaces of Open Space event. See below for what Open Space is.

R0 and R1 squares.

After each talk, speakers walked into an open space - ‘Mingle Lounge’. In this area, speakers and attendees can communicate freely and directly. For everyone who got questions, this was the perfect time to approach the speakers. Moreover, I had seen experts from different fields had some random but lively discussions in this area. I enjoyed this QA session a lot. The discussion got much deeper with the instant communicating.

How the speaker and attendees talk with each other at R0 mingle lounge after the corresponding talk.

More “mingle lounges” (for tracks of R0 and R1)

Lightning Show is held at a separated special stage. In order to make sure all attendees have 100% synchronized screen, a PyCon TW staff shared his screen streaming the Youtube live signal. Many attendees gathered in front of the stage. This huge crowd made me feel very excited to be a part of the scene. We cheered to the speakers by blinking emoji on and off. Comments swamping the chat panel non-stoppingly. We even did final count-down together by the end of each session. I think this Lightning Show session created a strong involving sense of Python Community.

Live lightning talk and talk streaming

The lightning talk stage


"PyNight" session is written by Shirley 

PyNight is the grand finale of PyCon TW’s first day. In this conventional event, the attendees could feel free to interact with others, accompanied by amazing musical performances and great food. This year, PyCon TW staff built this party-like venue on Gather town and brought a realistic virtually-held PyNight experience.

After leaving the outer space-themed main venue, a space shuttle landed me on a lawn, with clear instructions towards the party venue.

The first partition was the ballroom, with a luxurious huge stage and some eye-catching neon floor decorations. In the first session, the two PyCast hosts, Benson and 4Cat held a live podcast corner, inviting PyCon TW staff and conference attendees to share their thoughts after the first day of PyCon TW.

Later, the attendees moved to another partition for the PyCon TW quiz corner. The hosts gave questions about PyCon TW histories or Python knowledge, following by options A to D; and the attendees would move to the corresponding boxes to answer. The ones with wrong answers were eliminated until the final champion was left in the venue.

Besides the “official” events, the venue also provided numerous private spaces for people to enjoy private conversations without disturbing others. The virtual garden buffet and the concert hall brought in the reminiscent elements of previous PyNights.

At the end of PyNight, the attendees gathered at the concert hall, and initiated a stunning ad improvising musical show. Talented pianists, guitarists, cellists, ukuleleists appeared one after another. The advantage of virtual PyNight was that people could pick up their musical instruments in their place and join the show immediately if they wanted.

PyNight on Gather town was much more intriguing than I expected! It should be noticed that the live podcast show and PyCon TW quiz at the beginning not only made everyone feel involved, but also eliminated the awkwardness of interacting with people through the screen. To me, this is a satisfying experience.

Open Space

"Open Space" session is written by Winnie

Open Space is a self-organizing meetup event that happen simultaneously with the main conference. It provides a way for attendees to define, organize, plain out the meetup as they preferred. Briefly, attendees can enjoy the Open Space while making new friends, chat about any topic they’d like at the same time.

Unlike previous years, 10 private spaces are prepared in Gather.Town instead of actual chatting spaces. Everyone could go there and join a discussion anytime. Beyond my imagination, the attendees are fully engaged this year. There are 18 different sessions launched by the attendees/sponsors! Open Space 2021 topic includes python projects, financial tools, communities, education issues,…,etc. Some people also kept discussing or chatting even after the session ends.

One of the best things, I could enter the different sessions freely and easily without embarrassment through this online event. Moreover, there’s no limitation for topics so that I could chat anything not only related to “python”. Actually, I held an session about Covid-19 vaccination. Lots of people came to my session and shared their vaccinated experience. Especially, a doctor also attended this event and shared the application of python on medical field. I think it’s a really great chance to meet a variety of people here.

Booth Game

"Booth Game" session is written by Pinchun

When walking into the main venue, there are avatars promise giving price to attendee who pass all three challenges.The challenges are located separately in the venue with icons presented in the dialogue.

It turns out to be three different games, such as word bank, spot the difference challenges. Those challenges are implemented through teleport feature provided by gather. After passing all three challenges, attendee collect three passwords. Yet attendee still need to crack final challenges for entering the code.

Wondering around the venue, attendee will see a mysterious hallway linking somewhere. When trying to walk on this so-called neon bridge, the hint indicates a unique path is required to get through it. It is around sponsor booths where attendee could the same icons. Following the color pattern, neon bridge will guide attendee to a room with an embedded google form for lottery. Through this bonus game, attendee could explore our carefully designed venue and also interact with our sponsor booths.

Using Gather town as the main conference venue definitely gave us a great advantage on social networking and community interacting.

We also designed traffic tracker to know how many people visited somewhere. See "Venue Traffic" session below.

Auxiliary Infrastructure

"Auxiliary Infrastructure", including "Duo-lingo" and "Tutorial for Gather Town Beginner" sessions are written by Ray and Allen


When I first time came into this online venue, my avatar appeared on a little island. This island has some instructions for me to know how to use gather town. If attendees aren’t a newbie of gather town, attendees can just go straight to choose their user language(Chinese or English), and the portal will take attendees to a tunnel.

Tutorial for Gather Town Beginner

Although I am not a newbie to Gather Town, I still experienced the instruction provided by this cute island. Following the road signs, I met many avatars. They told me some of Gather Town’s tips in dialogue, just like playing RPG. I have to say that there are many tips that are quite practical.

Going into the tunnel, there have appeared different colors of the avatar to give me some information that I can finish in the main space. Continue straight ahead and attendees can get into the major venue with a portal that is amazing and sci-fi.

After staring with tutorial, I can choose space 1 or space 2 to join the online conference, communicate with speaker in mingle area. There are a little different between space 1 and space 2, such as open space, PyCast area are only in space 1 and lighten talk is in space 2. During the event, I can switch to another space through teleport at anytime.

When I first step into the conference space, I will see the sponsors booths, where I can interact with Gather object to browse company’s information and chat with staff from this company directly. And if I encounter any problems during the event, head to the space with the two pythons which were close to sponsor booth. That would be the help desk throughput the event. In this area, I also can check the timetable for the conference talks and search job opportunities on the job hiring board.

In the bottom right corner of the main space, I found a soothing forest where can interact with other attendees. And there have huge television attendees who can press X to open the message board, which can leave any comment about the conference. It’s cool for me to interact with other attendees in the virtual space. In addition, there have some avatar look like robots. When you approach them there will pop up a chat window to share some stories about PyCon TW.

When I go through the middle of the main venue I found a fancy area. There have some interactive objects that look like music albums when I press X there has the podcast player of PyCast I can listen to the PyCast for each episode which easier for attendees to know PyCast.

Venue Traffic

"Venue Traffic" session is written by Allen

In order to understand the traffic of people in the Gather.town venue, we have designed a object to record. We embedded the video interactive objects in Gather.town with links to the short URL and redirect them to this year’s conference short film. When other people pass by the interactive object, a preview will automatically pop up in the lower right corner of the screen. When previewing the short URL redirecting, the short URL service will record the number of times and use transparent pixels for the objects, which is similar to using transparent pixels in web pages. Record the number of times without the user’s knowledge.