teleren/devto huggingface dataset:
How to Integrate MongoDB Into Your Next.js App
Tags: mongodb, nextjs, vercel
Published: 2020-09-10 23:06:13

---
title: How to Integrate MongoDB Into Your Next.js App
published: true
description: Learn how to easily integrate MongoDB into your Next.js application with the official MongoDB package.
tags: [MongoDB, NextJS, Vercel]
cover_image: https://developer.mongodb.com/images/social/open-graph/og-nextjs.png
---

Are you building your next amazing application with [Next.js](https://nextjs.org/)? Do you wish you could integrate MongoDB into your Next.js app effortlessly? Do you need this done before your coffee is done brewing? If you answered yes to these three questions, I have some good news for you. We have created an official [Next.js<>MongoDB](https://github.com/vercel/next.js/tree/canary/examples/with-mongodb) integration that will have you up and running in minutes, and you can consider this tutorial your official guide on how to use it.

In this tutorial, we'll take a look at how we can use the [with-mongodb example](https://github.com/vercel/next.js/tree/canary/examples/with-mongodb) to create a new Next.js application that follows MongoDB best practices for connectivity, connection pool monitoring, and querying. We'll also take a look at how to use MongoDB in our Next.js app with things like serverSideProps and APIs. Finally, we'll take a look at how we can easily deploy and host our application on [Vercel](https://vercel.com/), the official hosting platform for Next.js applications. If you already have an existing Next.js app, not to worry, simply drop in the [MongoDB utility file](https://github.com/vercel/next.js/blob/canary/examples/with-mongodb/util/mongodb.js) into your existing project and you are good to go. We have a lot of exciting stuff to cover, so let's dive right in!

[Continue Reading on MongoDB Developer Hub](https://developer.mongodb.com/how-to/nextjs-with-mongodb)
Echo Go - Installation
Tags: go, echo, programming, webdev
Published: 2020-09-10 22:34:18

Echo is a Framework Minimalist for Web Development so powerfull and so fast.

# Installation
Prerequisites
- Install Go
- Set GOPATH

# Using go get
 - _go get -u github.com/labstack/echo/..._

# Using dep
 - _dep ensure -add github.com/labstack/echo@^3.1_

# Using glide
 - _glide get github.com/labstack/echo#~3.1_

# Using govendor
 - _govendor fetch github.com/labstack/echo@v3.1_

Finally! try at home
Shopify's performance tips, optimizing CLS, & the impact of performance on the environment
Tags: performancematters, performance, monitoring
Published: 2020-09-10 22:33:47

Hi folks, 

Welcome back to another edition on Performance Matters! This week we have a special offer for all you Heroku users. For a limited time we're offering a [free Real User Monitoring account](https://elements.heroku.com/addons/raygun-rum) via the Marketplace – just <a href="mailto:hello@performancematters.dev?subject=Free Real User Monitoring account">email us</a> for an invite. 

In this edition, we've got Shopify's top tips for improving site performance, optimizing CLS, performances impact on energy consumption, and more!

Enjoy! 

Your Curator 

------------------------------

### FEATURED ARTICLES

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ot3zgkhn42z1av3xkmcn.png)

<strong>Shopify - The relation to site performance and conversions</strong>

Shopify has come out with an article showing the immense impact on site performance and speed. Find out what their step-by-step process is for improving performance on e-commerce sites. 

[How they do it](https://www.shopify.com/enterprise/site-performance-page-speed-ecommerce#fast-ecommerce-platform-1)

------------------------------

<strong>Optimizing for CLS while loading more content asynchronously</strong>

A low Cumulative Layout Shift is a customer-centric metric for measuring user experience.

[Make it work for you ](https://medium.com/ynap-tech/how-to-optimize-for-cls-when-having-to-load-more-content-3f60f0cf561c)

------------------------------

<strong>The impact of performance on energy consumption</strong>

Did you ever realize performance has an environmental impact? Read the full paper on its true implications. 

[The real impact](https://www.researchgate.net/figure/Performance-scores-vs-energy-consumption_fig1_341123776)

------------------------------

### BUG OF THE WEEK

<strong>High severity bug in Bitcoin software revealed 2 years after fix</strong>

This previously undisclosed bug could have wreaked havoc on Bitcoin and the cryptomarket as a whole. Funds could have been stolen, settlements delayed or even split the blockchain network into conflicting versions

[Find out what happened](https://www.coindesk.com/high-severity-bug-in-bitcoin-software-revealed-2-years-after-fix)

------------------------------

### COMMUNITY

<strong>How one dev applied for a tech job using a POST request</strong> 

It's becoming harder and harder to stand out from the crowd in the busy job market, but one innovative developer has done just that. 

[Try it for yourself](https://dev.to/maggiecodes_/how-i-applied-to-a-tech-job-using-a-post-request-193d)

------------------------------

If you think Performance Matters is pretty great, why not [sign up](https://performancematters.dev/) to receive it in your inbox every week? 🙌

------------------------------

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/f3in3d0co2914exwgmkp.png)

------------------------------
Day 214: I went outside today
Tags: hiphop, code, coding, lifelongdev
Published: 2020-09-10 21:35:43

_liner notes_:
- Professional : Pretty chill day. A meeting got canceled so I took the day to finish up this blog post. Got quite a but done. Going to go over it again and submit it to be reviewed. I may need to take some screenshots and recordings to make things clearer. I'll see once I look it over again.

- Personal : Drove to the park again to do work and charge my battery. Been here the whole day and my battery went from around 25% to 64%. Probably would have been more, but it has gotten cloudy and is currently raining. I have the solar panels still out in the rain (they are supposed to be able to be left outside) and I'm getting like 10 Watts. Just enough to keep the battery level steady. It's been at 64% for a while. Can't wait to get the panels installed on the roof. I went outside today again and walked around the park. It was really nice.

![Marine Street Beach in California with five seagulls flying at sunset](https://dev-to-uploads.s3.amazonaws.com/i/v4tsrvxfv2fwdv7261jr.png)

Once the rain stops, going to pack up my solar panels. At least I don't have to wash them off ow. haha. Then I'll head to my parking spot, work on my blog for work, do more stuff on my side project, work on the radio show, maybe watch some anime, and call it a night. Oh, last night I basically recreated the old site's front end using Sapper/Svelte for the new site. Wasn't too bad.

Have a great night!

peace piece
Dwane / conshus
https://dwane.io / https://HIPHOPandCODE.com
{% youtube 9gOREuj10xU %}
Top 5 DEV Comments from the Past Week
Tags: bestofdev
Published: 2020-09-10 21:25:50

---
title: Top 5 DEV Comments from the Past Week
published: true
description: Highlighting some of the best DEV comments from the past week.
tags: bestofdev
cover_image: https://res.cloudinary.com/practicaldev/image/fetch/s--7VrAA2ln--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/qmb5wkoeywj06pd7p8ku.png
---

This is a weekly roundup of awesome DEV comments that you may have missed.  You are welcome and encouraged to boost posts and comments yourself using the **[#bestofdev](/t/bestofdev)** tag.

---

Welcome to DEV, @jubileujulia!

{% devcomment 14i60 %}

Thanks for opening up about your anxieties, @willemodendaal. We all have them and sharing them with a trusted community can really help.
{% devcomment 14fc5 %}

Great choice of early sci-fi media influence, @manasp. Dexter's Lab is a classic. 

{% devcomment 14g4o %}

Congrats, @dmahely!!

{% devcomment 14dpm %}

_Born a Crime_ is on my reading list, @galdin!

{% devcomment 14eh0 %}



See you next week for more great comments ✌
WP Meetup Stuttgart – IndieWeb und WordPress
Tags: openweb, wordpress, indieweb, meetup
Published: 2021-11-10 15:15:09

---
title: WP Meetup Stuttgart – IndieWeb und WordPress
published: true
date: 2020-09-10 21:23:56 UTC
tags: OpenWeb,WordPress,IndieWeb,Meetup
canonical_url: https://notiz.blog/2020/09/10/wp-meetup-stuttgart-indieweb-und-wordpress/
---

Ich war am [05. August](https://wpmeetupstuttgart.de/2020/indieweb-wordpress/) zu Besuch beim [WordPress Meetup in Stuttgart](https://wpmeetupstuttgart.de/) um über das IndieWeb und WordPress zu sprechen. Wer es nicht sehen konnte, kann das hier nachholen:

<iframe width="900" height="506" loading="lazy" src="https://video.wordpress.com/embed/5a8fTXE4?hd=1" frameborder="0" allowfullscreen></iframe><script loading="lazy" src="https://v0.wordpress.com/js/next/videopress-iframe.js?m=1435166243"></script>

Ein großer Teil des Vortrags war eine Live-Demo, die nicht immer ganz perfekt geklappt hat, aber es war ein Versuch. Nächstes Mal wird besser… Versprochen 😉
Flutter APK Generator Action
Tags: actionshackathon, flutter, githunt
Published: 2020-09-10 21:11:42

[Instructions]: # (To submit to the GitHub Actions x DEV Hackathon, please fill out all sections.)


### My Workflow
[Note]: # (Make sure to include the name of your GitHub Action and share where it's being used!)
I have made a GitHub Action named 'APK Generator' for flutter projects to help in generating a new apk and pushing it to the repository, whenever changes are made in master branch.

With ease:

  - Generate new release apk's whenever changes are pushed
  - distribute and test your apps quickly among all collaborators
  - keep a track of every apk release version.


### Submission Category: 
**Maintainer Must-Haves** , **DIY Deployments**
[Note]: # (Maintainer Must-Haves, DIY Deployments, Interesting IoT, Phone Friendly, or Wacky Wildcards)


### Yaml File or Link to Code

An example workflow to set up your flutter apk generator action quickly.

```yaml
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Setting up Flutter SDK
        uses: subosito/flutter-action@v1
        with:
          channel: stable

      - name: Fetch Packages
        run: flutter pub get

      - name: Build APK
        run: flutter build apk

      - name: Copy APK To Parent Directory
        run: cp ./build/app/outputs/flutter-apk/app-release.apk ./app.apk

      - name: Commit APK
        run: git add ./app.apk

      - name: Configure Github
        run: |
          git config --local user.email "you@email.com"
          git config --local user.name "yourusername"
          git commit -m "Generated APK" -a

      - name: Push changes
        uses: ad-m/github-push-action@master
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}

```

[Note]: # (Our markdown editor supports pretty embeds. Try this syntax: `{% github link_to_your_repo %}` to share a GitHub repository)

{% github https://github.com/ishandeveloper/flutter-action-example %}

### Additional Resources / Info

This action uses following two open-source actions under the hood to set up things easily.

{% github https://github.com/ad-m/github-push-action %}

{% github https://github.com/subosito/flutter-action %}


[Note]: # (Be sure to include the DEV usernames of your collaborators, if any. )

[Reminder]: # (Submissions are due on September 12th (11:59 PM PDT) and winners will be announced on September 23!)


Made with ♥ by <a href="https://github.com/ishandeveloper">ishandeveloper</a>
Bash functions to level up your aliases game! 
Tags: codenewbie, 100daysofcode, webdev, tutorial
Published: 2020-09-10 21:06:50

Do you use bash aliases to customise your commands?
Of course you do!

.... 

But, did you know you can extend aliases to use bash functions and pass arguments? 

bash functions enable you to concatenate multiple commands and add as many arguments as you can. Well, just like any function in any programming language. 

I came across this when I was looking into condensing git commands. I AM EXTREMELY LAZY and running git add + git commit + git push every time, really hurts.

So let's make a function that does just that.

STEP 1 
---
We need to make the alias persistent in bash profile.
Open a new bash terminal window and run : 


![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ls5vq9y65hhjc3aptoji.png)


STEP 2 
---
Anywhere in your bashrc file, declare the function as shown below.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ypoovjhs2fydmdofmjg1.png)

STEP 3 
---

Save and exit nano.
 
Here is what we did, we declared `pushtoremote` function, which runs git add . git commit -m `message` and git push `repository` `branch` **consecutively** 

`$1` `$2` `$3` are placeholders for the variables passed to the alias upon executing. `message` `repository` `branch`  (example follows).  

STEP 4 
---

We need to link the alias to the current session, so we can immediately start using it. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/bovrjvlx2tcgyfcepw8v.png)


STEP 5 
---
 
Here is a sample command with `pushtoremote` alias. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/7181zfhmwwo5cnp38wzq.png)



*Note* : some terminals like `fish` do not support `&&` so you will have to replace it with `and`


If you make something extra cool with bash functions, please do let me know. :)))              

I post snippets every day on twitter, join me there! 

Cheers! 

Imad
Day 56: Getting data from Spott Api
Tags: 100daysofcode, javascript
Published: 2020-09-10 20:33:51

I worked on consuming the spot api. I got one part right today getting back the data from the API. I'm still trying to filter out the responses to autoupdate the city and country. 

```javascript
const input = document.getElementById("input");
input.addEventListener('keyup', async (input)=> {
	
	const typedString = document.getElementById("input").value;

	await fetch(`https://spott.p.rapidapi.com/places/autocomplete?q=${typedString}&limit=10&skip=0&type=CITY&language=ar`, {
	"method": "GET",
	"headers": {
		"x-rapidapi-host": "spott.p.rapidapi.com",
		"x-rapidapi-key": "insertKey"
	}
})
.then(response => {
	let data = response.json();
	console.log(data);

const country = document.querySelector('country');
country.textContent = data.name

})
.catch(err => {
	console.log(err);
});
})
```
_Day 55_
Mostrar excepciones de una API en Laravel.
Tags: laravel, api, exceptions, spanish
Published: 2020-09-10 20:18:38

---
title: Mostrar excepciones de una API en Laravel.
published: true
description: Un simple snippet para mostrar excepciones mientras desarrollas una API en Laravel.
tags: Laravel, API, exceptions, spanish
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/gn6gc6mexynac0jnt174.png
---

Si estas trabajando en Laravel con una API es posible que ante algunas validaciones uses metodos como:

- abort
- abort_if
- abort_unless

Esto funciona muy bien en producción lanza el error especifico con el código Http que representa el error.

Sin embargo en desarrollo lanza todo un stacktrace del error, es posible que necesites el comportamiento de producción en desarrollo para visualizar exactamente como se ven tus errores, en este caso puedes:



Ir al archivo ".env" y cambiar el valor de la llave "APP_ENV" de "local" a "production".

Con esto podrás visualizar los errores, sin embargo es probable que quieras este comportamiento por defecto cuando la petición viene de una API, puedes hacer lo siguiente:


Ir a archivo "app/exceptions/handler.php" y en tu método render agregar el siguiente snippet:


```php
if($request->expectsJson()) {
    return response()->json([
        'error' => $exception->getMessage()
    ]);
}
```

Ahora podrás visualizar por defecto este comportamiento en desarrollo, gracias por leer el post, saludos!
Show API exceptions in Laravel.
Tags: laravel, api, exceptions
Published: 2020-09-10 20:10:48

---
title: Show API exceptions in Laravel.
published: true
description: Simple snippet to show exceptions on API development.
tags: Laravel, API, exceptions
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/h8y1tc32lprt41y3szsu.png
---

If you are working with Laravel on an API there are several times when you are validating something and maybe you add helpers like:

- abort
- abort_if
- abort_unless

This scenarios works great for production because it throws an especific error with a Http code that represents the error.

In development it would show an entire stack trace, and maybe you spect to get a preview of what exactly it throws, well you can go to ".env" file and change the value of "APP_ENV" from "local" to production.

Then you would see exactly the error you expect, this could be benefit in terms of production but maybe you want to stay this production behavior on development to get exactly the error how you expect on development you can go to "app/exceptions/handler.php" and the next snippet on your render method:


```php
if($request->expectsJson()) {
    return response()->json([
        'error' => $exception->getMessage()
    ]);
}
```

Now you can still on development and get exactly the response as you expect, thanks for reading!
Bash++ Recursion
Tags: linux, bash, devops
Published: 2020-09-10 20:10:32

In a [previous post](https://dev.to/jrbrtsn/bash-return-stack-1lnh) I introduced the *return stack* facility for **Bash**. Now I present an example of how to implement recursion using this facility:
```
#!/bin/bash
############################################################
# Example script to demonstrate recursion without the
# use of subshells
#
# John Robertson <john@rrci.com>
# Initial release: Thu Sep 10 11:58:23 EDT 2020
#

# Halt on error, no globbing, no unbound variables
set -efu

# import return stack tools
source ../bash++

# "static" array of phrases to be assembled into
# a sentence by recurse()
declare -a Phrase_arr=(\
[0]='Now is' \
[1]='the time for' \
[2]='all good' \
[3]='men to come' \
[4]='to the aide of' \
[5]='their country'\
)

# Convenient "constant"
Phrase_arr_sz=${#Phrase_arr[@]}

function recurse ()
#######################################################
# Example recursive function works without subshells
# Arguments:
#   Recursion level
# Returns:
#   contcatenated phrases
#
{
   local lvl=$1

   # Continue recursing until out of phrases
   if (( lvl + 1 < Phrase_arr_sz )); then

      # Call ourself again with incremented lvl
      recurse $(( lvl + 1 ))

      # Pop the result into R1
      RTN_pop R1

      # Push concatenated result on return stack
      RTN_push "${Phrase_arr[$lvl]} $R1"

   else

      # Push final phrase on return stack
      RTN_push "${Phrase_arr[$lvl]}"

   fi
}

###################################
### Execution starts here #########
###################################

# NOTE: We'll reserve R1 R2 R3 ... global
# variables to fetch return values from
# return stack.

# Recursively assemble sentence from Phrase_arr
recurse 0

# Retrieve sentence from return stack
RTN_pop R1

# Print result
echo "Result: '$R1'"
```
... and the result is:
```
Result: 'Now is the time for all good men to come to the aide of their country'
```
All files referenced here are available on [Github](https://github.com/jrbrtsn/bash_plus_plus)!
[DevSecOPS] #7 CI/CD自動化パイプラインの実現①構想編
Published: 2020-09-10 20:05:31

# CI/CD自動化パイプラインの実現①構想編

## 1.はじめに

前回の記事によって、アプリケーションを包括的にウォッチする環境が概ね整ったことが分かります。そこから、メモリリークやDBのスペック調整を一通り行い、クラウドサービス上で動く現行環境のチューニングや細かいセキュリティ上の問題を一度解消することができる手がかりが得られると思います。

・前回の記事（見える化を行ったら(APサーバ編)）
https://dev.to/mizuki04/devsecops-1hf

しかし、監視基盤から得られる諸問題は各サービスの状況に依存したスペシフィックな問題である為、打ち手について今回は割愛します。

今回取り上げるのは、一度上記のように環境をブラッシュアップした時にさらにもう一つ抜本的な改革を進める為にはという問いに対する一つの実行例を述べます。

一般的にサービスをリリースして安定的にユーザを獲得できている場合、最も避けたいのはダウンタイムだと思います。そこで気になるポイントとして、本番環境のデプロイに時間がかかっている、だったり手動によるデプロイの為ヒューマンエラーに繋がる等の事象が見受けられます。

できるならmasterブランチにマージを行ったら、そのあとはコーヒー☕️でも飲みながら一服をしたいと思うのは自然な発想です。

それを実現するのが、CI/CD自動化パイプラインの実現です。

```CI/CD
※CI/CDとは「Continuous Integration／Continuous Delivery」の略で、
日本語では継続的インティグレーション／継続的デリバリーといいます。
CI/CDは1つの技術を指すものでなく、ソフトウェアの変更を常にテストして
自動で本番環境にリリース可能な状態にしておく、ソフトウェア開発の手法を意味します。
CI/CDを取り入れると、バグを素早く発見したり、変更を自動でリリースしたりできるようになります。
```
パイプラインのポテンシャルを引き出して、ダウンタイムを最小にする為には、アプリケーションをDockerlizeし、コンテナベースの運用にすることがほぼ不可欠であるのでそちらも踏まえて今後記載していきます。

## 2.ソース管理の環境と選定サービス

上記を実現するにあたり、ソースを管理しているサービスによって実現の方法は異なります。概ね、Github/Gitlabどちらかになるかと思いますが、今回はGitlabのユースケースを用いてこのプロジェクトの解説を行います。

Githubの場合はGithubActionsやCircleCIなどが一般的なように思え、Gitlabの場合は、CICDのサードパーティサービスに加え、Gitlab標準のGitlabCIという機能があります。

また、AWS環境ならばCodepipelineなどのマネージドサービスが存在します。

予算や規模感に応じて取れる選択肢は変わりますが、コスト・時間的なパフォーマンス・周辺機能の充実で選ぶと間違いないかと思います。従量課金制のサービスが多い中、今回のユースケースでは、コストが無料であるGitlabCIを選択致しました。

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/6d0hrkbs9l8q6y1hbpux.png)

## 3.クラウドサービスの環境とコンテナオーケストレーションツール

AWS/GCP/Azureそれぞれの環境に合わせて、CI/CD周りの自動化を行うならばコンテナオーケストレーションツールの利用もほぼ必須だと言えるかと思います。

今回は、AWS環境のEC2インスタンスベースで運用を行なっていたサービスを移行する為
AWSフルマネージド型のコンテナオーケストレーションサービスであるECSを選定致しました。

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/dyrs8qprrx03z9b1dorz.png)

https://aws.amazon.com/jp/ecs/

他にはAWSでも、フルマネージド型の Kubernetes サービスであるEKSも登場しています。ECSを選定した理由としては、現在行っている運用作業を減らすとともに、可視化や拡張性を担保できるなど以下のメリットが考えられます。

- 可用性
  - 障害時も予約したタスク数で自動復旧できる
- 性能・拡張性
  - スケーラビリティ
    - ECSではインスタンス数/タスク数を増やすだけ
    - 台数調整・インスタンスタイプなどはCloudFormationから
- 運用 / 保守性
  - コンテナ化にあたり、ビルドやデプロイと言った作業を自動化できる
  - 監視の追加(XX_exporterなど)は公式イメージを追加するだけ
  - コンテナ追加が容易な為ツール導入でテストカバレッジ等を可視化できる
- セキュリティ
  - AWS側に保持している、コンテナをECRと組み合わせて診断できる
- 移行性
  - 別のコンテナオーケストレーションとは異なり、仕組みがシンプルで、馴染みのあるEC2をそのまま利用することができる等です。（VPC,ELB,EC2 etc...）。

パイプライン＋コンテナオーケストレーションツールによって、デプロイの自動化・GUIベースでのアプリケーションの管理が可能となります。

今回目標としていたのは、**0.5~1時間程度のデプロイに手動で掛かっていた時間を完全に自動化することです。**

次回からは具体的なhowの話を行いたいと思います。
Join Me at PyCon Asia Pacific 2020 Online
Tags: python, events, pycon, conferences
Published: 2020-09-10 19:46:21

[PyCon APAC (Asia Pacific)](https://pycon.my/) is a major Python conference held every year in a different country in Asia, this year in Malaysia as a virtual online conference.

I'll be speaking in 2 sessions:

## Special Interview: Audrey Feldroy

Chee Yim Goh, director of Women Who Code Kuala Lumpur and cofounder of IdealHub, will be interviewing me. Join us as we share stories about teaching in the Python world, talk about my Python books and projects, and more.

| Malaysian Standard Time             | Pacific Standard Time               |
|-------------------------------------|-------------------------------------|
| Saturday, Sept. 19, 2020 from 11:20am-12pm | Friday, Sept. 18, 2020 from 8:20-9pm |

![19th-1120-1200-interview-audrey](https://dev-to-uploads.s3.amazonaws.com/i/nr20x7fo7ce8rvjpgcab.png) 

## Python Patterns for the Future

This is the main panel at PyCon APAC. As the Python web framework person and as the creator of the open-source project Cookiecutter (over 500k monthly downloads), I'll be sharing my insights on where Python is headed over the next 3-5 years and beyond.

| Malaysian Standard Time             | Pacific Standard Time               |
|-------------------------------------|-------------------------------------|
| Sunday, Sept. 20, 2020 from 10-11am | Saturday, Sept. 19, 2020 from 7-8pm |

![20th-1000-1100-main-panel](https://dev-to-uploads.s3.amazonaws.com/i/rmz80ruira2x95m1uca1.png)

## How to Watch

PyCon APAC 2020 is a livestream that anyone can attend remotely. Get a [ticket](https://pycon-apac-2020-online.peatix.com/) for MYR20.00 ($4.79 US), then follow their email instructions to access the [talks on the event calendar](https://pycon.my/pycon-apac-2020-event-calendar/).