MoreRSS

site iconThe Practical DeveloperModify

A constructive and inclusive social network for software developers.
Please copy the RSS to your reader, or quickly subscribe to:

Inoreader Feedly Follow Feedbin Local Reader

Rss preview of Blog of The Practical Developer

Steve Jobs: The Biography (Updated Edition)

2026-01-12 00:03:05

title: [Book Sharing] Steve Jobs (Latest Revised Edition)
published: false
date: 2020-12-27 00:00:00 UTC
tags: 
canonical_url: http://www.evanlin.com/reading-steve-jobs/
---

[![](https://cdn.readmoo.com/cover/po/kvomuzn_210x315.jpg?v=0)](http://moo.im/a/ehEGJY "Steve Jobs (Latest Revised Edition)")

Steve Jobs (Latest Revised Edition)
Steve Jobs
Author: Walter Isaacson
Original Author: Walter Isaacson
Published Date: 2013/09/11


#### Book Recommendation URL: [http://moo.im/a/ehEGJY](http://moo.im/a/ehEGJY)

## Preface:

This is the fifteenth book I've finished reading this year. Actually, I was reluctant to finish this book because I was used to watching movies while reading it. Or, I would watch Apple's product launch events to understand some of the details. In fact, my understanding of Steve Jobs back then came from the early Silicon Valley-related movie "[Pirates of Silicon Valley](https://zh.wikipedia.org/zh-tw/%E5%BE%AE%E8%BB%9F%E8%8B%B1%E9%9B%84)". Although this movie is quite old, many of the descriptions are quite in-depth and have a significant impact on other related books and movies.

Later, "Jobs" filmed by Ashton Kutcher further explored Steve Jobs' inner turmoil. I highly recommend everyone to watch it.

<iframe width="560" height="315" src="https://www.youtube.com/embed/SkjUi3z0IzI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>

Finally, let's talk about this book. It's a book of six or seven hundred pages. The content includes Steve Jobs' time as a student, all the way to his passing due to cancer. It's highly recommended.

## Content Summary and Thoughts:

Everyone knows that Steve Jobs spared no effort in protecting his privacy. This legendary entrepreneur never wrote a memoir, but he accepted more than forty in-depth interviews from the author of this book, Isaacson, over two years, and allowed him to visit his friends, relatives, competitors, enemies, and colleagues, totaling more than a hundred people.

Isaacson wrote "the most authentic Steve Jobs," describing the roller-coaster life of this creative entrepreneur. Jobs' persistent personality, his passion for perfection, and his fierce drive propelled revolutions in six major industries, including personal computers, animation, music, phones, tablets, and digital publishing.

This is not just the story of Steve Jobs, but also a book about innovation. In this digital age, many companies are striving to be at the forefront of innovation, and many countries are eager to build innovative economies. But in terms of originality, imagination, and innovation, Steve Jobs is undoubtedly a benchmark figure. He knows that to create something valuable in the 21st century, creativity and technology must be combined. Therefore, the company he built not only needs to have a leap of imagination but also to present exquisite technological craftsmanship.


### Chapter Outline

#### 1955-1980. Born Rebellious

This chapter mainly talks about his childhood, his schooling, and the founding of his Apple Computer company, and it details his eccentricities while working at Atari during his student days. He didn't like to shower at the time, so he only worked at night. But because his programming skills were excellent, he could often solve very difficult problems. So his supervisor let him work at night, which also avoided his interaction with others.

The big sales of Apple II also made Apple Computer a public company. It also instantly made Steve Jobs have to lead a bunch of experts who were much more senior than him to run the company at a very young age.

#### 1980-1991. Ups and Downs

After going public, the creation of Macintosh even made Apple Computer appear in the 1984 Super Bowl commercial.

<iframe width="560" height="315" src="https://www.youtube.com/embed/VtvjbmoDx-I" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>

However, with the launch of Macintosh, hidden worries also began. Apple Computer internally gradually split and fought. Steve Jobs was therefore ousted.

But leaving Apple, although disappointed, gave Steve Jobs the opportunity to become a shareholder of Pixar. Here's the most famous Pixar logo.

<iframe width="560" height="315" src="https://www.youtube.com/embed/50rAKjuTXbc" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
#### 1991-2004. Think Different

Through the acquisition of NexT, Apple Computer invited Steve Jobs back to be the iCEO (interm-CEO) through the acquisition of NexT, which Steve Jobs later founded. After that, there were iMacs and other amazing new products. It was also at this time that Pixar achieved its greatest success (the release of Toy Story), and Pixar later accepted Disney's acquisition and took over the development of the animation department.

In this stage, Steve Jobs, after the ten years of settling down, completely insisted on the development of more perfect products.

#### 2004-2011. Beyond Death

In the final stage, although Apple also developed the epoch-making product iPhone. It completely changed the era of application from desktop to mobile devices, but Steve Jobs' body also protested against him. The onset of cancer and the delay in treatment prevented the condition from being immediately controlled. Even after using many related therapies, the condition still could not be alleviated and relapsed.

Next, as everyone knows, Steve Jobs only stepped down as Apple CEO a few days before his death. He passed away with the company of his family.

## Thoughts:

I remember when Steve Jobs passed away, many people were very sad. I think, in addition to commemorating a great entrepreneur and product manager, it's also commemorating a product enthusiast who insisted on his own ideas. Often, there will be the feeling of wanting to be lazy and get by. But influenced by Steve Jobs' insistence on products and the pursuit of perfection, he would start working hard again.

Many people say that Steve Jobs was also human, and he also had many failures. This book also has his human side, whether it's not wanting to face his own children when he was young, or later regretting it. Whether it's more failed products, or the process of being forced to step down, it's described in more detail. The reason why Apple became a great company is precisely due to Steve Jobs' centralized power.

Whether you like Steve Jobs or not, we have to admit that the term "Steve Jobs" should become a symbol in our hearts for the continuous pursuit of products.

Finally, this sentence from Think Different, I share with everyone.

The people who are crazy enough to think they can change the world are the ones who do.”

──Apple's "Think Different" commercial, 1997


2020: Review and Outlook

2026-01-12 00:02:52

title: 2020 Year in Review and Outlook
published: false
date: 2020-12-31 00:00:00 UTC
tags: 
canonical_url: http://www.evanlin.com/til-year-review/

2020 Year in Review

  1. Daughter growing up healthy (the happiest thing for parents)
  2. 13 public speeches. (And at the end of the year, a large company event, two talks in one day)
    1. https://github.com/kkdai/slides
  3. 2 English international speeches (one at Japan DevDay)
    1. https://github.com/kkdai/slides
  4. 15 e-books read.
    1. http://www.evanlin.com/categories/
  5. Github 752 commits (2019 691)
    1. https://github.com/kkdai
  6. 3 Hackathons (Mei-Chu, internal, campus competition)
  7. Continued exercise (but the amount of exercise is not as high as before, need to work hard)
  8. 61 blog posts (continuous writing, lifelong learning)
  9. Mentoring juniors, Evangelion Unit 02 has great potential
  10. MHW, MHGU, looking forward to MH-R

2021 Outlook

  • Family health
  • Lose some more weight
  • Golang in Machine Learning

TIL: Byzantine Generals Problem in Real-World Distributed Systems

2026-01-12 00:02:09

title: [TIL][Reading Notes] Byzantine Generals Problem in the Real World of Distributed Systems (note from CloudFlare - A Byzantine failure in the real world)
published: false
date: 2021-01-15 00:00:00 UTC
tags: 
canonical_url: http://www.evanlin.com/til-byzantine-fail-cloudflare/
---

![](https://miro.medium.com/max/700/1*kJJpYLrKZ5hgByA-q3Zkjw.jpeg)

# Preface

When learning the Raft algorithm, the Byzantine Failure is usually excluded. Unexpectedly, CloudFlare's incident report last November used the real-world Byzantine problem as the title. I'll use this to organize some thoughts.

## What is Byzantine failure

In a distributed system, different computers communicate with each other as a "Consensus Communication" data confirmation process. It requires different computers to report what they are going to do or to vote for a leader. If a computer tells some members A and another group of members B, causing the entire group to fail to reach consensus or reach an unexpected state, it is called a Byzantine Failure. In many cases, Consensus Algorithms such as Paxos and Raft will first assume that Byzantine Failure does not exist because this problem will raise the complexity of Consensus to another level.

#### Reference articles:

- [Wiki Byzantine Generals Problem](https://zh.wikipedia.org/wiki/%E6%8B%9C%E5%8D%A0%E5%BA%AD%E5%B0%86%E5%86%9B%E9%97%AE%E9%A2%98)

## About CloudFlare's recovery mechanism

Before exploring more complex issues, there is actually an interesting angle to observe in this article. That is, how to view their backup mechanisms for system maintenance through CloudFlare's Incident Report.

### Service backup mechanism

- Each service is a series of Rack Servers
- Each machine has two switches
- Each machine rack has two or more power supply devices
- Each server uses a RAID-10 backup mechanism ([that is, RAID 1 + RAID 0 backup mechanism](https://en.wikipedia.org/wiki/Nested_RAID_levels#RAID_10_(RAID_1+0)))
- Each Rack has at least three or more machines.

## The problem that occurred

![](https://blog.cloudflare.com/content/images/2020/11/image1-20.png)

(**Image explanation**: Top left is Server 1, right is Server 2, and below is Server 3, which is also the Leader)

- Due to a network problem between Server 1 and Server 2.
- This caused Server 1 and Server 2 to have inconsistent information.
  - Server 1 believes that the Leader (Server 3) is offline
  - Server 2 believes that the Leader is running normally.
- It is also for this reason that CloudFlare calls this problem a Byzantine Failure

# Reference

- 

[Cloudflare Dashboard and Cloudflare API service issues](https://www.cloudflarestatus.com/incidents/9ggr0k6dwzwg?_ga=2.204546386.37818800.1609918736-1905359649.1609918736)

- 

[A Byzantine failure in the real world](https://blog.cloudflare.com/a-byzantine-failure-in-the-real-world/)

- 

[Raft does not Guarantee Liveness in the face of Network Faults](https://decentralizedthoughts.github.io/2020-12-12-raft-liveness-full-omission/)

- 

[wiki: Byzantine Generals Problem](https://zh.wikipedia.org/wiki/%E6%8B%9C%E5%8D%A0%E5%BA%AD%E5%B0%86%E5%86%9B%E9%97%AE%E9%A2%98)

- [Raft lecture (Raft user study) by Diego Ongaro](https://www.youtube.com/watch?v=YbZ3zDzDnrw)
- [The Cloudflare Blog](https://blog.cloudflare.com/)
- [Improving the Resiliency of Our Infrastructure DNS Zone](https://blog.cloudflare.com/improving-the-resiliency-of-our-infrastructure-dns-zone/)
- [A Byzantine failure in the real world](https://blog.cloudflare.com/a-byzantine-failure-in-the-real-world/)
- [Link aggregation - Wikipedia](https://en.wikipedia.org/wiki/Link_aggregation#Link_Aggregation_Control_Protocol)
- [Cloudflare Status - Cloudflare Dashboard and Cloudflare API service issues](https://www.cloudflarestatus.com/incidents/9ggr0k6dwzwg?_ga=2.204546386.37818800.1609918736-1905359649.1609918736)
- [Raft does not Guarantee Liveness in the face of Network Faults](https://decentralizedthoughts.github.io/2020-12-12-raft-liveness-full-omission/)
- 

[The power of the adversary](https://decentralizedthoughts.github.io/2019-06-07-modeling-the-adversary/)

- 

[Pull requests · etcd-io/etcd](https://github.com/etcd-io/etcd/pulls)

- 

[byzantine generals problem - Google Search](https://www.google.com/search?q=byzantine+generals+problem&sxsrf=ALeKk02ykB_xPVEN1o-7eVpMRgnk0z8R5g:1610015200344&tbm=isch&source=iu&ictx=1&fir=Ykr9zvzdD0RtHM%2CQrxo5tRgIuvd0M%2C_&vet=1&usg=AI4_-kQpPeUE1vmVPMIHsWCVog2PlYnURw&sa=X&ved=2ahUKEwjOreWAzonuAhXSIqYKHewTDusQ_h16BAgXEAE#imgrc=105uZAuhRI_3BM)

- 

| [Understanding the Byzantine Generals’ Problem (and how it affects you) | by Anthony Stevens | Coinmonks | Medium](https://medium.com/coinmonks/a-note-from-anthony-if-you-havent-already-please-read-the-article-gaining-clarity-on-key-787989107969) |

- 

[拜占庭將軍問題 - 維基百科,自由的百科全書](https://zh.wikipedia.org/wiki/%E6%8B%9C%E5%8D%A0%E5%BA%AD%E5%B0%86%E5%86%9B%E9%97%AE%E9%A2%98)!

- 

[Raft lecture (Raft user study) - YouTube](https://www.youtube.com/watch?v=YbZ3zDzDnrw)

- [Raft Consensus Algorithm](https://raft.github.io/)

[TIL] Golang community discussion about PTT BBS

2026-01-12 00:01:49

title: [TIL] Golang TG Community Discussion on PTT BBS Lazy Package
published: false
date: 2021-01-21 00:00:00 UTC
tags: 
canonical_url: http://www.evanlin.com/golangtg-ptt/
---

![](http://www.evanlin.com/images/2020/ptt_go.jpg)

# Preface

A discussion about [PTT BBS backend Golang backend partners (because it's a friend-making project, there's no salary)](https://moptt.tw/p/Soft_Job.M.1610976994.A.2C8), which also brought up discussions about PTT backend needs in the Golang TG discussion. The following is a compilation of relevant discussion content.

First, let's organize some relevant context about the partner recruitment article, with much of the content quoted from the original author.

The original PTT article is here:

- moptt https://moptt.tw/p/Soft\_Job.M.1610976994.A.2C8
- ptt.cc https://www.ptt.cc/bbs/Soft\_Job/M.1610976994.A.2C8.html

## Why is it required to read the `database/sql` and `go-sql-driver/mysql` packages in the article asking for partners?

It's mainly a matter of style. I (Pichu Chen) am very worried that someone will directly port C Code into Golang Code, and then all the comments will be written to look at which function in the C Code, then it's GG XD

## Regarding PTT BBS looking for Golang partners, what is the current goal?

At this stage, we want to first establish the necessary read and write interfaces for the overall BBS, as well as subsequent discussions and the culture of adoption.

And currently, the solution I (Pichu Chen) propose is to redesign the backend interface. We will initially get a new HTTP-based backend interface, and PTT APP middle-end or mobile APP development partners can access the BBS database through this interface. In the development process, unlike the previous BBS development process, I will first write the required functions into text documents and propose discussions, and then open a GitHub ISSUE for implementation after a period of time. Therefore, it can ensure that the new code has documentation and clear and easy-to-understand test cases, avoiding repeating the same mistakes. Currently, we have completed functions such as verifying accounts, obtaining board lists, obtaining article lists, and obtaining article content. We also need to continue to complete functions such as adding push/recommend, adding articles, and editing favorites. But I have an additional request. Because of the experience of the "Tokyo Metropolitan Government's COVID-19 Countermeasures Website (https://stopcovid19.metro.tokyo.lg.jp/)" mentioned earlier on Soft\_Job, I still hope that this project can be completed by the majority of the community, rather than, like most open-source projects in Taiwan, being completed by a fixed number of "gods."

## Current problems with PTT (arranged by urgency)

1. The code for the interface/business logic/database is mixed together, making it difficult to adjust the user experience and user interface.
2. The code lacks comments and has extremely low readability.
3. The original code has no testing code at all.
4. The code has no benchmark mechanism at all, and modifying the architecture relies on the authority of the designer rather than scientific evidence.
5. Most of the architecture still uses a 32-bit time representation, which will lead to the 2038 problem.
6. Passwords still use DES-based hashing, in other words, the strength is insufficient.
7. Excessive reliance on shared memory design makes server distribution difficult.
8. The index file storage method is not flexible enough and is not easy to add new fields.
9. The mail forwarding mechanism has been dead for a long time.
10. In-station messages (water balls), in-station letters cannot notify users in real-time via mobile phones.
11. Current PTT code does not support IPv6.
12. In-station articles still use Big-5 storage and do not support emoji or Taiwanese Romanization.
13. Does not support image uploads, audio, or video communication.

## So, reading SQL packages is not about writing PTT data into a database?

Actually, BBS articles are quite hierarchical, that is, the article itself has a unique id, and then the board ref a series of ids, which PTT already has, which is their own URL conversion system (like: https://www.ptt.cc/bbs/car/M.1611180581.A.E43.html) This kind of M.161180581.A.E43, so since there are ready-made keys and key generators, this aspect should not need to be redesigned. In addition, pictures and log...er... the data of bbs should mostly not be pictures or logs.

## If PTT data is written into the database

Then the discussion history of whether to convert the BBS backend database to SQL has been quite long, but in conclusion, after several years of discussion, there is really no one who has completely become a full SQL architecture (maybe Bahamut has? After all, they are not open source, so I don't know). But at this stage, I want to first establish the necessary read and write interfaces for the overall BBS, as well as subsequent discussions and the culture of adoption, because there were indeed many discussions about whether to convert to SQL before, but the actual performance tests were almost non-existent. After the interface is established, try another branch that is implemented with SQL. After there is performance data, this problem will be easier to reach a conclusion in the discussion.

## If PTT data has the opportunity to be put into RMDB

If it is to convert the original database to a SQL series of relational databases or MongoDB, I think the advantages will be that these are database tools familiar to modern developers, and then the performance part has other teams to help with the quality control, and there are ready-made distributed database designs.

The disadvantages I asked senior students several years ago, the larger part is that SQL Command needs to be parsed separately, which will have additional costs, and then not everything is suitable for blindly stuffing SQL, such as pictures or Log file design, I may not put it on a relational database, I guess AWS S3 won't either.

But it's not to say that SQL is useless in the BBS project. I remember that in PTT BBS, they put the push text in a relational database, but I'm not sure if it's the general PgSQL, MySQL or Sqlite (I guess it's sqlite, because I saw similar code)

As for whether the modern new design should or should not use FileSystem as DB, I think it still depends on the problem itself. For new projects like CoreDNS, he does save the issued lease in a space-separated format. He can actually use sqlite, but I think if he uses sqlite, he needs to introduce an external package. Then, if the online OP needs to directly delete a certain lease record, he needs to issue a DELETE command, which is not faster than opening vim and deleting it.

Furthermore, the advantages of modern relational databases, in addition to providing a unified operation interface, are that it has a b+-tree-based index, which is not seen in the current BBS system. Currently, the accelerated index seen in the BBS system will be like I want to find pichu and then classify by the first letter p, and then take the things under the /usr/p/pichu folder. As we all know, the frequency of e and i is usually higher, so it is very likely that the number of users or boards in this folder will be more than other folders, causing a slight imbalance. A better approach might be like the git database design, first hash the userid with sha1, and then also take one or two digits to make a folder index, which is easier to balance.

But the existing article-based approach does have some shortcomings. For example, the minimum file size will be limited by the file system's limitations. If the block size of a certain file system is 4KB, then even if it only has a line of 12 Byte text, it will also occupy 4KB and an inode in the hard disk, and therefore, each station will later promote the prohibition of "one-line articles", and even later developed a push text system, which is basically to deal with this problem. But modern hard disk space is actually much larger, and the number of inodes is also much larger, whether it is still a problem can also be re-explored. Or add some modern mechanisms to count how many times articles have been modified for more than a year, which are unpopular articles, and then predict that the probability of being modified in the next year is less than a p value, and then archive them into the same large file, and use another sqlite file to index their fseek position and length (if you want to be more open-minded, you can also add compression to save space.

That is to say, when the predecessors designed this system, it was not like "using a database", but rather to discuss how to design a database, and then different BBSs would refer to each other, and then it became what it is now.

As for these discussion articles, you actually have to look through the various small stations. It should be difficult to find them on Google, or like this article, when the time comes, it will be washed to who knows where by telegram~

# Others:

- PTT BBS source code https://github.com/ptt/pttbbs
- PTT File struct https://github.com/ptt/pttbbs/wiki/STRUCTURE
- MapleBBS 3.0 presentation document https://hackmd.io/@holishing/BkJHevM4f?type=view

# TG Discussion Full Text:

For query purposes

hsu jimmy, [20.01.21 19:04]
[Recruitment] BBS backend implementation (all remote) (unpaid)
https://moptt.tw/p/Soft_Job.M.1610976994.A.2C8

Wu Gordon, [20.01.21 19:06]
[Photo]

Wu Gordon, [20.01.21 19:06]
I'm curious why it's needed

Stefan ᅠ😹, [20.01.21 19:07]
[In reply to Wu Gordon]
Implies that ORM is not used

Wu Gordon, [20.01.21 19:08]
But there is no need to modify it to your own version, why is it necessary to have read it? The package doc usage specification should be able to satisfy the usage 🤔

Wu Gordon, [20.01.21 19:08]
I'm just curious about the thinking behind this requirement

Stefan ᅠ😹, [20.01.21 19:09]
That is to say, SQL is heavily used

Stefan ᅠ😹, [20.01.21 19:09]
No form of packaging is done well

Stefan ᅠ😹, [20.01.21 19:09]
Like sourcemod's messy sql

Evan Lin, [20.01.21 19:13]
[In reply to Stefan ᅠ😹]
In addition to this, I may want to understand the writing style of these two packages.
This can also ensure that you know that the other party's writing style can be based on the style of these two packages?

Wu Gordon, [20.01.21 19:14]
So that's it

Julian Chu, [21.01.21 07:34]
It looks more like borrowing the concept and architecture of database/sql to provide a common interface, and swapping the driver can access BBS file data in different formats

Rayer Tung, [21.01.21 07:47]
Speaking of which, isn't PTT using a general SQL (seems to be Postgres)?

Rayer Tung, [21.01.21 07:48]
What reason is there to do an adapter yourself instead of using the existing implementation?

Rayer Tung, [21.01.21 07:49]
Each implementation actually uses a common interface

Yami Odymel https://yami.io/, [21.01.21 07:54]
A mystery of the century

Julian Chu, [21.01.21 08:27]
I don't remember PTT using SQL, where can I see this information?

Peiming, [21.01.21 08:27]
[In reply to Rayer Tung]
Because no SQL is used, one article is one file. https://github.com/ptt/pttbbs/wiki/STRUCTURE

Julian Chu, [21.01.21 08:28]
[🍺 Sticker]

Peiming, [21.01.21 08:28]
More information needs to be found

Rayer Tung, [21.01.21 09:40]
ah, make sense.... I always thought he had imported it into sql before. But in this case, the first thing should be to import this system that uses FS as DB into a real DB o_o

Rayer Tung, [21.01.21 09:41]
Instead of trying to hardcode an FS as DB Adapter

Rayer Tung, [21.01.21 09:41]
[In reply to Julian Chu]
This is in my memory, but obviously I remembered it wrong 😆

Peiming, [21.01.21 09:45]
[In reply to Rayer Tung]
This idea is mainly to allow each BBS to write its own driver, because the BBS used by each station is not the same now
https://github.com/clyang/bbslist

Rayer Tung, [21.01.21 09:47]
This plan is quite grand 😆 But I think that, assuming I can make the decision, I will first convert PTT to DB, and the priority of this "adapter for other bbs" I will put at the very end. But maybe they have more reasons that I don't know, maybe.

Rayer Tung, [21.01.21 09:47]
After all, using FS as DB made sense 25 years ago, but it is very incomprehensible now (or even ten years ago).

Pichu Chen, [21.01.21 14:57]
[In reply to Rayer Tung]
Hello,

If it is to convert the original database to a SQL series of relational databases or MongoDB, I think the advantages will be that these are database tools familiar to modern developers, and then the performance part has other teams to help with the quality control, and there are ready-made distributed database designs.

The disadvantages I asked senior students several years ago, the larger part is that SQL Command needs to be parsed separately, which will have additional costs, and then not everything is suitable for blindly stuffing SQL, such as pictures or Log file design, I may not put it on a relational database, I guess AWS S3 won't either.

But it's not to say that SQL is useless in the BBS project. I remember that in PTT BBS, they put the push text in a relational database, but I'm not sure if it's the general PgSQL, MySQL or Sqlite (I guess it's sqlite, because I saw similar code)

As for whether the modern new design should or should not use FileSystem as DB, I think it still depends on the problem itself. For new projects like CoreDNS, he does save the issued lease in a space-separated format. He can actually use sqlite, but I think if he uses sqlite, he needs to introduce an external package. Then, if the online OP needs to directly delete a certain lease record, he needs to issue a DELETE command, which is not faster than opening vim and deleting it.

Furthermore, the advantages of modern relational databases, in addition to providing a unified operation interface, are that it has a b+-tree-based index, which is not seen in the current BBS system. Currently, the accelerated index seen in the BBS system will be like I want to find pichu and then classify by the first letter p, and then take the things under the /usr/p/pichu folder. As we all know, the frequency of e and i is usually higher, so it is very likely that the number of users or boards in this folder will be more than other folders, causing a slight imbalance. A better approach might be like the git database design, first hash the userid with sha1, and then also take one or two digits to make a folder index, which is easier to balance.

But the existing article-based approach does have some shortcomings. For example, the minimum file size will be limited by the file system's limitations. If the block size of a certain file system is 4KB, then even if it only has a line of 12 Byte text, it will also occupy 4KB and an inode in the hard disk, and therefore, each station will later promote the prohibition of "one-line articles", and even later developed a push text system, which is basically to deal with this problem. But modern hard disk space is actually much larger, and the number of inodes is also much larger, whether it is still a problem can also be re-explored. Or add some modern mechanisms to count how many times articles have been modified for more than a year, which are unpopular articles, and then predict that the probability of being modified in the next year is less than a p value, and then archive them into the same large file, and use another sqlite file to index their fseek position and length (if you want to be more open-minded, you can also add compression to save space.

That is to say, when the predecessors designed this system, it was not like "using a database", but rather to discuss how to design a database, and then different BBSs would refer to each other, and then it became what it is now.

As for these discussion articles, you actually have to look through the various small stations. It should be difficult to find them on Google, or like this article, when the time comes, it will be washed to who knows where by telegram~

Liu Kakashi, [21.01.21 15:01]
It's written very well, it should be preserved

Rayer Tung, [21.01.21 15:04]
Actually, BBS articles are quite hierarchical, that is, the article itself has a unique id, and then the board ref a series of ids, which PTT already has, which is their own URL conversion system (like: https://www.ptt.cc/bbs/car/M.1611180581.A.E43.html) This kind of M.161180581.A.E43, so since there are ready-made keys and key generators, this aspect should not need to be redesigned. In addition, pictures and log...er... the data of bbs should mostly not be pictures or logs. I also know a little bit about the concerns of the MAPLE era. SQL may not run as well as FS back then. But modern DBs have indexes, redundancy, and partitions, all of which can greatly increase read and write efficiency. Of course, MAPLE is already over 20 years old, and it is indeed very difficult to change this. But I think writing a go sql lib compatible interface compared to this, which investment is good and which is not good, I think it can be discussed? 😆

Rayer Tung, [21.01.21 15:05]
Especially FS backup, I guess they use Sunday morning rsync? If so, DB should do much better....

Rayer Tung, [21.01.21 15:05]
But whether PTT still has such a high investment value, I respect the opinion of the person in charge, after all, in consensus, this is a sunsetting thing, but we can see if we can make him go a little longer

Pichu Chen, [21.01.21 15:33]
[In reply to Rayer Tung]
Basically, there is no need to be compatible with the sql lib. The reason why I asked everyone to look at these two projects at that time was also mentioned by someone in the TG group above. It's mainly a matter of style. I'm basically very worried that someone will directly port C Code into Golang Code, and then all the comments will be written to look at which function in the C Code, then it's GG XD

And the discussion history of whether to convert the BBS backend database to SQL has been quite long, but in conclusion, after several years of discussion, there is really no one who has completely become a full SQL architecture (maybe Bahamut has? After all, they are not open source, so I don't know). But at this stage, I want to first establish the necessary read and write interfaces for the overall BBS, as well as subsequent discussions and the culture of adoption, because there were indeed many discussions about whether to convert to SQL before, but the actual performance tests were almost non-existent. After the interface is established, try another branch that is implemented with SQL. After there is performance data, this problem will be easier to reach a conclusion in the discussion.

Rayer Tung, [21.01.21 15:35]
I just think that creating a sql interface may be quite difficult, and what's more worrying is whether the performance of each method will be sacrificed because of FS read and write. But indeed, you have to do this to know, it's not very meaningful to guess without anything to benchmark, I think there is no problem in this direction. Leading this year-old accumulated stuff is actually quite complicated, come on.

Rayer Tung, [21.01.21 15:36]
Since it's just for style unification, I think there will be a benchmarkable version soon

Evan Lin, [21.01.21 16:04]
[In reply to Rayer Tung]
Maybe it depends on what the overall operational idea is, after all, ptt -> db is equivalent to rebuilding the architecture.
Regardless of legacy concerns, it may be more important for other bbs adapters.
It was really tiring to connect in the Maple era~ You have to run another program to slowly align (twbbs?)

If PTT can be used as a single source of truth, it can provide many APIs for more people to brainstorm and use.
It's great~ APIs are out~ I think more applications will be brainstormed (I'm looking forward to it)

Kevin Yang, [21.01.21 16:06]
PTT may be gone soon

Kevin Yang, [21.01.21 16:07]
Not open for registration, popularity has been declining

Kevin Yang, [21.01.21 16:07]
And all kinds of police

Rayer Tung, [21.01.21 16:07]
[In reply to Evan Lin]
Actually, making the fs based structure of PTT Restful is equivalent to making the MAPLE series of bbs Restful. I'm looking forward to that day 😆

Marcus Liu, [21.01.21 16:44]
Actually, PTT has been calling for help
They also want to solve the registration problem first

Marcus Liu, [21.01.21 16:44]
https://g0v.hackpad.tw/Ptt--ctwZwU7BxcJ

Julian Chu, [21.01.21 16:44]
Even if it's converted to sql, the parser for the existing data still has to be done, the risk of directly converting to sql is higher, providing an interface to increase flexibility, and being compatible with the existing data format first, I personally think it's a low-risk choice that can see results faster

Marcus Liu, [21.01.21 16:44]
But to be honest, I think it's very difficult

Evan Lin, [21.01.21 16:54]
[In reply to Pichu Chen]
@pichuchen and @killercat9 If you don't mind, I'll organize the content of this discussion into a blog and then repost it to the Facebook group.
It won't be buried in the torrent of time

Pichu Chen, [21.01.21 16:54]
I'm OK CC BY-SA

Rayer Tung, [21.01.21 16:54]
No problem

Rayer Tung, [21.01.21 16:55]
CC BY SA


LINE Taiwan Developer Relations: 2020 Review and 2021 Community Plans

2026-01-12 00:01:15

title: [LINE DevRel] LINE Taiwan Developer Relations 2020 Review and 2020 Developer Community Program Report
published: false
date: 2021-02-01 00:00:00 UTC
tags: 
canonical_url: http://www.evanlin.com/devrel-2020-1/
---

# Preface

Hello everyone, I am Evan Lin from the LINE Taiwan Developer Relations team. After the efforts of LINE Developer Relations in 2020, I would like to summarize what the team has done in this article.

According to the [introduction article (Introducing Developer Relations team)](https://engineering.linecorp.com/en/blog/introducing-developer-relations-team/) written by LINE Developer Relations, the main goals of this team are clearly defined as follows:

- **External Evangelism:** Encouraging developers to use LINE's platform, APIs, and SDKs to develop attractive and interesting application services. (Encouraging people to make attractive and interesting services using the APIs and the SDK by LINE)
- **Internal Evangelism:** Helping engineers grow and hone themselves through various means (Doing _whatever_ our engineers feel difficult to do themselves in making improvements at work)
- **Technical Branding and Hiring:** Letting more people know that being a LINER (LINE employee's self-proclaimed name) has many interesting and exciting things. (Letting people know how fun and exciting it is for engineers to work at LINE)

The following articles will be divided into these three parts to explain in order, and I hope that more developers can review the interesting results of the 2019 developer relations and technology promotion department with us.

#### Article list:

- [[LINE DevRel] LINE Taiwan Developer Relations 2020 Review and 2020 Developer Community Program Report (part 1: External Evangelism) (This article)](http://www.evanlin.com/devrel-2020-1/)
- [LINE DevRel] LINE Taiwan Developer Relations 2020 Review and 2020 Developer Community Program Report (part 2: Internal Evangelism)
- [LINE DevRel] LINE Taiwan Developer Relations 2020 Review and 2020 Developer Community Program Report (part 3: Technical Branding and Hiring)

## **External Evangelism:** Encouraging developers to use LINE's platform, APIs, and SDKs to develop attractive and interesting application services

First, let's introduce the platform promotion part. There are two important channels for platform promotion this year. One is the official developer community OA (@line\_tw\_dev), and the other is [LINE Developer Meetup](https://linegroup.kktix.cc/).

<script async="" data-slide="6" data-id="ad721201af124c62b35ef111a1a81374" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>
### LINE Developer Meetup
<script async="" data-slide="10" data-id="ad721201af124c62b35ef111a1a81374" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

Due to the impact of the epidemic this year, many offline activities have been affected. The first two activities of [LINE Developer Meetup](https://linegroup.kktix.cc/): [LINE Developer Meetup Series #11 (LINE Developer Official Community Online Live)](https://linegroup.kktix.cc/events/20200410) and [LINE Developer Meetup Series #12 (LINE Developer Official Community Online Event)](https://linegroup.kktix.cc/events/20200612) were also held online for the first time.

In addition to the [eleventh meetup](https://engineering.linecorp.com/zh-hant/blog/line-developer-meetup-11/), we invited Julian Shen, who developed the LINE SPOT mask map, to share how to build LINE SPOT, and also let everyone know how to quickly connect official information to create the LINE SPOT mask map in a very short time.

And in the [twelfth developer meetup](https://engineering.linecorp.com/zh-hant/blog/line-developer-meetup-12/), we invited LINE TAXI's CTO Hatden and the engineer from Yi Zhi Tong Shen to share the related development technology of LINE TAXI and the artifact under the epidemic: the development experience of Yi Zhi Tong Shen for the first time.

In September, due to the easing of the epidemic, we were able to hold [LINE Developer Meetup #13](https://linegroup.kktix.cc/events/20200918) offline at National Chiao Tung University. We also met with the development engineers of many services and the students:

- 

[How to handle geographic information on the "LINE Hotspot" service (Serving Location-based data)](https://engineering.linecorp.com/zh-hant/blog/serving-location-based-data/)

- 

[LINE Shopping App with Flutter: Using Flutter to build LINE Shopping's mobile dual-platform application](https://engineering.linecorp.com/zh-hant/blog/line-shopping-app-with-flutter/)

- 

["How ML Powers LINE Services" How machine learning enables LINE services to be closer to users](https://engineering.linecorp.com/zh-hant/blog/how-ml-powers-line-services/)

#### Related links:

- [LINE Developer Meetup #12 Developer Meetup Event Sharing](https://engineering.linecorp.com/zh-hant/blog/line-developer-meetup-12/)
- [LINE Developer Meetup #11 Developer Meetup Event Sharing](https://engineering.linecorp.com/zh-hant/blog/line-developer-meetup-11/)
- [LINE Developer Meetup Event Registration Website](https://linegroup.kktix.cc/)
- [Promotion and Introduction of LINE Things](https://linegroup.kktix.cc/events/20190531-linethings)

### Continuous support for Chatbot Meetup

![](https://engineering.linecorp.com/wp-content/uploads/2021/01/0-1024x768.jpg)

Chatbot Taiwan Meetup is a very dynamic community and is also a local open source technology community that LINE hopes to continue to support. Whether it's monthly sharing or inviting LINE API Experts to assist. LINE hopes that the chatbot community can gradually expand, and hopes that more developers can join the ranks of developing chatbots. This year, after the addition of [new Tech Evangelist - Nijia Lin](https://engineering.linecorp.com/zh-hant/blog/author/nijialin/), more people can hear the first-hand platform updates.

#### Related links:

- 

[LINE Developer Community Program: 202010 Chatbot Community Sharing](https://engineering.linecorp.com/zh-hant/blog/line-api-platform-update-202010/)

- 

[LINE Developer Community Program: September 2020 LINE Platform Update Summary and LIFF ShareTargetPicker Case Sharing](https://engineering.linecorp.com/zh-hant/blog/line-api-platform-update-202009/)

- 

[LINE Developer Community Program: Chatbot Taiwan 22nd Community Event Record Sharing](https://engineering.linecorp.com/zh-hant/blog/line-api-platform-update-202008/)

- 

[LINE Developer Community Program: Chatbot Taichung Meetup 08 – LINE platform workshop record](https://engineering.linecorp.com/zh-hant/blog/chatbot-taichung-08-line-workshop/)

- 

[2020 June LINE Platform Update Summary and Demonstration of LINE Group/Room Chatbot](https://engineering.linecorp.com/zh-hant/blog/2020-june-update/)

- 

[LINE Developer Community Program: 2020/05/27 Chatbots 19 @online and 2020 May LINE Platform Update Summary Report](https://engineering.linecorp.com/zh-hant/blog/2020-05-27-chatbots19/)

- 

[LINE Developer Community Program: 2020/04/21 Chatbots#18 online](https://engineering.linecorp.com/zh-hant/blog/2020-04-21-chatbots18/)

- 

[LINE Developer Community Program: 2020/03/17 Chatbots#17 at Dcard](https://engineering.linecorp.com/zh-hant/blog/2020-03-17-chatbots-17/)

- 

[LINE Developer Community Program: 2020/01/15 Chatbots#16 at Dcard](https://engineering.linecorp.com/zh-hant/blog/2020-01-15-chatbots-16/)

- 

[Chatbot Taiwan Meetup Event Registration Page](https://chatbots.kktix.cc/)

- 

[Chatbot Facebook Group](https://www.facebook.com/groups/chatbot.tw/)

### LINE FRESH 2020 Campus Competition

![](https://lineofficial.blogimg.jp/tw/imgs/c/3/c339656a-s.jpg)

LINE FRESH represents the deep connection between LINE Taiwan and students, and the "LINE FRESH Internship Program" has been held for 6 consecutive years. It not only discovers outstanding talents in various fields on campus, but also many young students start their careers from this.

The LINE Taiwan team decided that at this special moment this year, we will hold the first campus competition, hoping to invite outstanding players on campus to use their creativity through the competition, use LINE's diverse services or open platform technology to create more business possibilities for the Taiwanese industry and provide Taiwanese users with a more comprehensive convenient life experience.

#### Related articles

- [LINE FRESH 2020 Campus Competition Hackathon Group Event Record](https://engineering.linecorp.com/zh-hant/blog/line-fresh-2020-hackathon-final/)

### 2020 Meizhu Hackathon

![](https://engineering.linecorp.com/wp-content/uploads/2020/11/1024_0.jpg)

LINE attaches great importance to the autonomous innovation and teamwork of employees, so LINE Internal Hackathon will be held in various places. And [we also held the second internal hackathon competition in LINE Taiwan](https://engineering.linecorp.com/zh-hant/blog/line-taiwan-internal-hackathon-2020/), and this time we are very happy to support the students' innovative Hacking spirit with the Hsinchu City Government and the Meizhu Hackathon organizers, and jointly held the [“Hsinchu x Meizhu Hackathon”](https://www.facebook.com/HackMeiChu) LINE competition group.

<script async="" data-slide="6" data-id="29f68cae8f9d4a80adde4ebf5a5fca5e" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

A week before the finals, LINE's development engineers were also invited to attend the enterprise workshop to teach the students LIFF and LIFF Share Target Picker so that every participating student could understand. (For details, please see: [Meizhu Hackathon Pre-Competition Enterprise Workshop – LIFF shareTargetPicker](https://engineering.linecorp.com/zh-hant/blog/meichu-liff-share-target-picker-workshop/))

#### Reference articles

- 

[LINE Developer Community Program: 2020/10/24 Hsinchu x Meizhu Hackathon Finals – LINE Competition Group Event Record](https://engineering.linecorp.com/zh-hant/blog/meichu-2020-liff/)

- 

[Meizhu Hackathon Pre-Competition Enterprise Workshop – LIFF shareTargetPicker](https://engineering.linecorp.com/zh-hant/blog/meichu-liff-share-target-picker-workshop/)

### COSCUP and MOPCon Support

![](https://engineering.linecorp.com/wp-content/uploads/2020/09/11-1024x768.jpg)

LINE is also actively supporting the seminars of technology and open source communities. And in 2020, we also shared platform technology at COSCUP and MOPCon. Everyone is welcome to refer to the related articles to understand how to develop a [LINE Notifty](https://notify-bot.line.me/en/) SDK.

#### Reference articles

- 

[COSCUP 2020 Annual Meeting – LINE Engineering Team's Agenda Sharing](https://engineering.linecorp.com/zh-hant/blog/line-coscup-2020/)

- 

[LINE Developer Community Program: 2020 The largest seminar south of the Zhuoshui River – MOPCON Event Record](https://engineering.linecorp.com/zh-hant/blog/2020-mopcon-lotify-sharing/)

### Online promotion of platform technology
<script async="" data-slide="8" data-id="ad721201af124c62b35ef111a1a81374" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

Regarding the online promotion of platform technology, we are honored to participate in some online activities and online course sharing. First of all, at the Asian Data Innovation Application Competition, we participated in an online discussion with LINE AI Company's CEO - Isago-san. And we are also honored to be invited by Taipei University of Commerce to provide LIFF-related teaching courses for the 2020 LINE Chatbot Design Competition.

#### Reference materials

- Asian Data Innovation Application Competition https://www.youtube.com/watch?v=9sY5XF8Gf0E
- The Second Dialogue Robot Design Competition - Introduction and Related Applications of LIFF https://www.facebook.com/watch/?v=728455674401659

## Summary

This article only records the relevant results for **“External Evangelism”**. The next two articles will explain the related results of internal developer relations and technical branding and recruitment. Everyone is welcome to continue to pay attention.

Join the "LINE Developer Official Community" official account immediately, and you can receive the first-hand Meetup activities, or the latest news push notifications related to the developer program. ▼

"LINE Developer Official Community" Official Account ID: @line\_tw\_dev

## About "LINE Developer Community Program"

Join the "LINE Developer Official Community" official account immediately, and you can receive the first-hand Meetup activities, or the latest news push notifications related to the developer program. ▼

"LINE Developer Official Community" Official Account ID: [@line\_tw\_dev](https://lin.ee/s5RsZHo)

![](http://www.evanlin.com/images/2020/line-tw-dev-qr.png)

## About "LINE Developer Community Program"

LINE launched the "LINE Developer Community Program" in Taiwan at the beginning of this year, and will long-term invest manpower and resources in Taiwan to hold developer community gatherings, recruitment days, developer conferences, etc., both internally and externally, online and offline, and is expected to hold more than 30 events throughout the year. Readers are welcome to continue to check back for the latest updates. For details, please see:

- [LINE Taiwan Developer Relations 2019 Review and 2019 Developer Community Program Report](https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019/)
- [2019 LINE Developer Community Program Event Schedule](https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019-plan/)
- [2020 LINE Developer Community Program Event Schedule](https://engineering.linecorp.com/zh-hant/blog/2020-line-tw-devrel/)
- [2021 LINE Developer Community Program Event Schedule (continuously updated)](https://engineering.linecorp.com/zh-hant/blog/2021-line-tw-devrel/)

LINE Taiwan Developer Relations 2020 Review and 2021 Developer Community Plan Report (Part 2: Internal Evangelism)

2026-01-12 00:00:54

title: [LINE DevRel] LINE Taiwan Developer Relations 2020 Review and 2020 Developer Community Plan Report (part 2: Internal Evangelism)
published: false
date: 2021-02-02 00:00:00 UTC
tags: 
canonical_url: http://www.evanlin.com/devrel-2020-2/
---

# Preface

Hello everyone, I am Evan Lin from the LINE Taiwan Developer Relations team. After more than a year of effort by LINE Developer Relations, I would like to summarize what the team has done in this article, and I also hope to make an annual report for the "[LINE Developer Community Plan](https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019-plan/)".

According to the original [introduction article (Introducing Developer Relations team)](https://engineering.linecorp.com/en/blog/introducing-developer-relations-team/) written by LINE Developer Relations, the main goals of this team are clearly defined as follows:

- **External Evangelism:** Encouraging people to make attractive and interesting services using the APIs and the SDK by LINE.
- **Internal Evangelism:** Doing _whatever_ our engineers feel difficult to do themselves in making improvements at work
- **Technical Branding and Hiring:** Letting people know how fun and exciting it is for engineers to work at LINE

The previous article has clearly defined **External Evangelism**, and next, we will further explain **Internal Evangelism** and **Technical Branding and Hiring**.

#### Article List:

- [[LINE DevRel] LINE Taiwan Developer Relations 2020 Review and 2020 Developer Community Plan Report (part 1: External Evangelism)](https://dev.to/evanlin/line-devrel-line-taiwan-developer-relations-2020-2020-4oll-temp-slug-9106385)
- [[LINE DevRel] LINE Taiwan Developer Relations 2020 Review and 2020 Developer Community Plan Report (part 2: Internal Evangelism) (This article)](http://www.evanlin.com/devrel-2020-2/)
- [LINE DevRel] LINE Taiwan Developer Relations 2020 Review and 2020 Developer Community Plan Report (part 3: Technical Branding and Hiring)

## **Internal Evangelism:** Helping engineers grow and hone themselves through various methods

<script async="" data-id="5e0fd8e4633d4fb892dd2ee930057642" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

First of all, this part is mostly internal sharing and some opportunities for **LINER** (inside LINE, internal employees are all called **LINER**) to have more self-growth, and through many sharing sessions, they can understand each other better, and cooperation can also be smoother.

### New Employee Training (Internal OJT)
<script async="" data-slide="22" data-id="ad721201af124c62b35ef111a1a81374" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

Due to the impact of the pandemic this year, the opportunity for new employees to train at the Japanese headquarters was affected. Therefore, LINE Developer Relations considered everyone and directly held an internal employee training (On Job Training) in Taiwan! This time, many [technical stars (LINE TECH FRESH) students](https://engineering.linecorp.com/zh-hant/blog/tech-fresh-2020/) participated together. The training content included organizational structure, functional division, some problems that are easy to encounter at work, and also allowed everyone to get to know other colleagues better through group discussions, so that the work atmosphere could be more harmonious. Finally, a foosball competition was arranged to let everyone feel the importance of teamwork.

#### Reference Articles

- [【LINE】Behind the Scenes of New Employee Internal Training](https://engineering.linecorp.com/zh-hant/blog/2020-new-employee-traning/)

### LINE Taiwan Internal Hackathon 2020
<script async="" data-slide="23" data-id="ad721201af124c62b35ef111a1a81374" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

LINE values the autonomous innovation and teamwork of its employees, so LINE Internal Hackathons are held in various locations. This is the second internal hackathon competition in LINE Taiwan, and we also look forward to seeing the creativity generated by different teams after their brainstorming.

The first internal event received a lot of feedback. Many non-engineering teams also hoped to participate, so this year, the participation method was specifically modified. The theme of the second LINE internal hackathon competition was "Team up for A+", aiming to encourage colleagues to work together to optimize and innovate more amazing (WOW) products and services.

#### Reference Articles:

- [LINE Taiwan Internal Hackathon 2020 Event Record](https://engineering.linecorp.com/zh-hant/blog/line-taiwan-internal-hackathon-2020/)

## Conclusion

This article will record the related results for internal developers. The next article will explain the related results of technical branding and recruitment. Everyone is welcome to continue to pay attention.

## About the "LINE Developer Community Plan"

Join the official account of the "LINE Developer Official Community" immediately, and you can receive the first-hand Meetup events, or push notifications of the latest news related to the developer plan. ▼

"LINE Developer Official Community" Official Account ID: [@line\_tw\_dev](https://lin.ee/s5RsZHo)

![](http://www.evanlin.com/images/2020/line-tw-dev-qr.png)

## About the "LINE Developer Community Plan"

LINE launched the "LINE Developer Community Plan" in Taiwan at the beginning of this year, and will invest manpower and resources in Taiwan for a long time to hold internal and external, online and offline developer community gatherings, recruitment days, developer conferences, etc., and is expected to hold more than 30 events throughout the year. Readers are welcome to come back to check the latest status. For details, please see:

- [LINE Taiwan Developer Relations 2019 Review and 2019 Developer Community Plan Report](https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019/)
- [2019 LINE Developer Community Plan Event Schedule](https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019-plan/)
- [2020 LINE Developer Community Plan Event Schedule](https://engineering.linecorp.com/zh-hant/blog/2020-line-tw-devrel/)
- [2021 LINE Developer Community Plan Event Schedule (continuously updated)](https://engineering.linecorp.com/zh-hant/blog/2021-line-tw-devrel/)