Skip to content

Instantly share code, notes, and snippets.

@lynnkwong
Last active March 28, 2023 21:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lynnkwong/66f76d9b4922abb0cc97a8d49128aab6 to your computer and use it in GitHub Desktop.
Save lynnkwong/66f76d9b4922abb0cc97a8d49128aab6 to your computer and use it in GitHub Desktop.
[
{
"_id": "313deb5a5701",
"published_at": "2022-04-12",
"url": "https://lynn-kwong.medium.com/313deb5a5701",
"tags": ["Git Hooks", "Git", "Pre-commit", "Python"],
"title": "Build a Pre-commit Workflow to Check and Fix Your Python Code Automatically",
"subtitle": "Improve your code quality and accelerate your code review process",
"reading_time": 6,
"image_url": "https://miro.medium.com/0*E5bBtt3lm9Crb6Lh",
"display_tag": "Git Hooks"
},
{
"_id": "5e4b51719427",
"published_at": "2022-04-08",
"url": "https://lynn-kwong.medium.com/5e4b51719427",
"tags": ["MongoDB", "Full-text", "Atlas Search", "Database"],
"title": "Learn Advanced Full-Text Searches With MongoDB Atlas Search",
"subtitle": "Let's search with MongoDB rather than Elasticsearch",
"reading_time": 8,
"image_url": "https://miro.medium.com/0*F-KMVOuy3gGY2sMr",
"display_tag": "MongoDB"
},
{
"_id": "db77ec7071f8",
"published_at": "2022-04-03",
"url": "https://lynn-kwong.medium.com/some-tips-to-make-your-vs-code-more-efficient-db77ec7071f8",
"tags": ["VS Code", "IDE", "Python"],
"title": "Some Tips to Make Your VS Code More Efficient",
"subtitle": "VS Code can be more friendly than you think",
"reading_time": 7,
"image_url": "https://miro.medium.com/0*Yy4Juu7zTSTv509f.jpg",
"display_tag": "VS Code"
},
{
"_id": "48b17242676",
"published_at": "2022-03-20",
"url": "https://lynn-kwong.medium.com/how-to-do-basic-full-text-searches-in-mongodb-48b17242676",
"tags": ["MongoDB", "Search", "Full-text", "Database"],
"title": "How to Do Basic Full-Text Searches in MongoDB",
"subtitle": "Search texts by the text index in MongoDB",
"reading_time": 6,
"image_url": "https://miro.medium.com/0*zO0EOf7p5S7r8efi.jpg",
"display_tag": "MongoDB"
},
{
"_id": "efead98f08",
"published_at": "2022-03-05",
"url": "https://lynn-kwong.medium.com/learn-powerful-mongodb-aggregation-pipelines-from-practical-examples-efead98f08",
"tags": ["MongoDB", "Aggregation", "Pipeline", "Database"],
"title": "Learn Powerful MongoDB Aggregation Pipelines from Practical Examples",
"subtitle": "Get insight into your data in MongoDB by aggregation",
"reading_time": 6,
"image_url": "https://miro.medium.com/0*t-5rhVZafCqhYqx-.png",
"display_tag": "MongoDB"
},
{
"_id": "caa077c9a20f",
"published_at": "2022-03-06",
"url": "https://lynn-kwong.medium.com/all-you-need-to-know-about-using-mongodb-in-python-caa077c9a20f",
"tags": ["MongoDB", "NoSQL", "Python", "Database"],
"title": "All You Need to Know About Using MongoDB in Python",
"subtitle": "Know the common use cases of MongoDB in Python",
"reading_time": 8,
"image_url": "https://miro.medium.com/1*vRT4dyelcObU_bzO-dupWg.jpeg",
"display_tag": "MongoDB"
},
{
"_id": "8380026642d5",
"published_at": "2022-02-24",
"url": "https://lynn-kwong.medium.com/learn-the-essentials-and-get-started-with-mongodb-8380026642d5",
"tags": ["MongoDB", "NoSQL", "Python", "Database"],
"title": "Learn the Basics and Get Started With MongoDB",
"subtitle": "Get into to the world of NoSQL databases",
"reading_time": 8,
"image_url": "https://miro.medium.com/0*9koUrp3sLcW73gi5.png",
"display_tag": "MongoDB"
},
{
"_id": "7db56792c1f7",
"published_at": "2022-02-18",
"url": "https://lynn-kwong.medium.com/how-to-run-scrapy-spiders-in-your-program-7db56792c1f7",
"tags": ["Scrapy", "Scraping", "Python"],
"title": "How to Run Scrapy Spiders in Your Python Program",
"subtitle": "Learn to run Scrapy spiders programmatically",
"reading_time": 6,
"image_url": "https://miro.medium.com/0*Epo8ZIhoEGihAt6v.png",
"display_tag": "Scrapy"
},
{
"_id": "46e78b6549e3",
"published_at": "2022-02-12",
"url": "https://lynn-kwong.medium.com/how-to-build-a-scraping-project-with-scrapy-and-mongodb-46e78b6549e3",
"tags": ["Scrapy", "Scraping", "MongoDB", "Database"],
"title": "How to Build a Scraping Project With Scrapy and MongoDB",
"subtitle": "Become a real \"spiderman\" in Python",
"reading_time": 8,
"image_url": "https://miro.medium.com/0*FuxltT3FGMD3KyaI.jpg",
"display_tag": "Scrapy"
},
{
"_id": "e42dd74e51e7",
"published_at": "2022-01-07",
"url": "https://betterprogramming.pub/how-to-use-the-magical-staticmethod-classmethod-and-property-decorators-in-python-e42dd74e51e7",
"tags": ["Decorator", "Python"],
"title": "How to Use the Magical @Staticmethod, @Classmethod, and @Property Decorators in Python",
"subtitle": "Learn special decorators in Python",
"reading_time": 6,
"image_url": "https://miro.medium.com/0*yPOoejcL-9OBL6sl",
"display_tag": "Decorator"
},
{
"_id": "ec432efc2c0f",
"published_at": "2022-02-27",
"url": "https://lynn-kwong.medium.com/learn-advanced-mongodb-queries-for-nested-documents-using-elemmatch-from-practical-examples-ec432efc2c0f",
"tags": ["MongoDB", "Nested", "Advanced", "Database"],
"title": "Learn Advanced MongoDB Queries for Nested Documents from Practical Examples",
"subtitle": "Learn the $elemMatch operator in MongoDB",
"reading_time": 5,
"image_url": "https://miro.medium.com/0*7wd-p1K6-jFhW17G.png",
"display_tag": "MongoDB"
},
{
"_id": "21d56731bb1f",
"published_at": "2022-02-05",
"url": "https://lynn-kwong.medium.com/how-to-scrape-javascript-webpages-using-selenium-in-python-21d56731bb1f",
"tags": ["Selenium", "JavaScript", "Scraping"],
"title": "How to Scrape Javascript Webpages Using Selenium in Python",
"subtitle": "Render JavaScript webpages by yourself",
"reading_time": 5,
"image_url": "https://miro.medium.com/1*cZ0a9N8qMSUz8gharmAQjQ.png",
"display_tag": "Selenium"
},
{
"_id": "11672e4da7e9",
"published_at": "2022-01-23",
"url": "https://lynn-kwong.medium.com/how-to-work-with-json-data-in-mysql-11672e4da7e9",
"tags": ["MySQL", "JSON", "Database"],
"title": "How to Work With JSON Data in MySQL",
"subtitle": "Learn \"NoSQL\" in MySQL?",
"reading_time": 6,
"image_url": "https://miro.medium.com/0*C4XxyqiFrpvu5N4e.jpg",
"display_tag": "MySQL"
},
{
"_id": "b24dec228c43",
"published_at": "2022-01-16",
"url": "https://lynn-kwong.medium.com/how-to-write-concurrent-python-code-with-multithreading-b24dec228c43",
"tags": ["Threading", "Concurrent", "Queue"],
"title": "How to Write Concurrent Python Code With Multithreading",
"subtitle": "Boost your application with concurrency",
"reading_time": 9,
"image_url": "https://miro.medium.com/0*Q7xQDv01WO7Ae14z.jpg",
"display_tag": "Concurrency"
},
{
"_id": "40918f3e2a8b",
"published_at": "2022-04-01",
"url": "https://lynn-kwong.medium.com/use-isort-to-sort-your-python-module-imports-automatically-40918f3e2a8b",
"tags": ["Python", "Formatting"],
"title": "Use Isort to Sort Your Python Module Imports Automatically",
"subtitle": "Let's sort the modules in a uniform way",
"reading_time": 7,
"image_url": "https://miro.medium.com/0*jg3iaInU1riDAq7E.jpg",
"display_tag": "Python"
},
{
"_id": "e3fee4fcc324",
"published_at": "2022-03-27",
"url": "https://lynn-kwong.medium.com/learn-powerful-full-text-searches-with-mongodb-atlas-search-e3fee4fcc324",
"tags": ["MongoDB", "Full-text", "Atlas Search", "Database"],
"title": "Learn Powerful Full-Text Searches With MongoDB Atlas Search",
"subtitle": "Learn the Elasticsearch counterpart in MongoDB",
"reading_time": 7,
"image_url": "https://miro.medium.com/0*mLsph6UYoJcyQSMt.jpg",
"display_tag": "MongoDB"
},
{
"_id": "ff4560dc67f5",
"published_at": "2022-03-14",
"url": "https://lynn-kwong.medium.com/how-to-use-indexes-properly-in-mongodb-ff4560dc67f5",
"tags": ["MongoDB", "Index", "Search", "Database"],
"title": "How to Use Indexes Properly in MongoDB",
"subtitle": "Boost your MongoDB queries by indexes",
"reading_time": 8,
"image_url": "https://miro.medium.com/0*p_jOoPxYm9OqdWo-.jpg",
"display_tag": "MongoDB"
},
{
"_id": "5b90c1a9213f",
"published_at": "2022-02-14",
"url": "https://lynn-kwong.medium.com/how-to-execute-shell-commands-properly-in-python-5b90c1a9213f",
"tags": ["Python", "Subprocess", "Shell"],
"title": "How to Execute Shell Commands Properly in Python",
"subtitle": "Learn different ways to run shell commands in Python",
"reading_time": 6,
"image_url": "https://miro.medium.com/0*WHCqRhEtpUE6dW19.jpg",
"display_tag": "Python"
},
{
"_id": "627a3741fdb1",
"published_at": "2022-01-22",
"url": "https://betterprogramming.pub/how-to-execute-plain-sql-queries-with-sqlalchemy-627a3741fdb1",
"tags": ["SQLAlchemy", "Python", "SQL", "Database"],
"title": "How to Execute Plain SQL Queries With SQLAlchemy in Python",
"subtitle": "Learn a standard way to run SQL queries in Python",
"reading_time": 10,
"image_url": "https://miro.medium.com/0*evKiZC18AJdbNAs0.jpg",
"display_tag": "SQLAlchemy"
},
{
"_id": "54cb18efe454",
"published_at": "2022-01-11",
"url": "https://lynn-kwong.medium.com/how-to-visualize-google-logs-in-grafana-54cb18efe454",
"tags": ["Grafana", "GCP", "Logging"],
"title": "How to Visualize Google Logs With Grafana",
"subtitle": "Monitor your Cloud data with Grafana",
"reading_time": 8,
"image_url": "https://miro.medium.com/1*NzuOrjEFB-FXIwoMYsLpnQ.png",
"display_tag": "Grafana"
},
{
"_id": "66c8624b069",
"published_at": "2022-03-21",
"url": "https://lynn-kwong.medium.com/learn-the-basics-and-get-started-with-sqlalchemy-orm-from-scratch-66c8624b069",
"tags": ["SQLAlchemy", "ORM", "MySQL", "Database"],
"title": "Learn the Basics and Get Started With SQLAlchemy ORM",
"subtitle": "Let's interact with databases in a Pythonic way",
"reading_time": 10,
"image_url": "https://miro.medium.com/0*wrvas_LBnXOoMK9g.jpg",
"display_tag": "SQLAlchemy"
},
{
"_id": "d97a6e7663c5",
"published_at": "2022-02-25",
"url": "https://lynn-kwong.medium.com/how-to-use-mongodb-atlas-to-manage-your-server-and-data-d97a6e7663c5",
"tags": ["MongoDB", "Atlas", "NoSQL", "Database"],
"title": "How to Use MongoDB Atlas to Manage Your Server and Data",
"subtitle": "Let someone professional manage your MongoDB server",
"reading_time": 8,
"image_url": "https://miro.medium.com/0*HgOI-QuJ9TN7oeXD.jpg",
"display_tag": "MongoDB"
},
{
"_id": "3b43094627dc",
"published_at": "2022-01-13",
"url": "https://lynn-kwong.medium.com/how-to-use-google-pub-sub-to-build-an-asynchronous-messaging-system-in-python-3b43094627dc",
"tags": ["Pub/Sub", "Messaging", "GCP"],
"title": "How to Use Google Pub/Sub to Build an Asynchronous Messaging System in Python",
"subtitle": "Learn a simple but powerful Cloud Pub/Sub system",
"reading_time": 9,
"image_url": "https://miro.medium.com/0*H9rG6fn_opIsehtv.jpg",
"display_tag": "Pub/Sub"
},
{
"_id": "46e7b514c60b",
"published_at": "2022-01-08",
"url": "https://lynn-kwong.medium.com/how-to-write-logs-to-google-cloud-logging-in-python-46e7b514c60b",
"tags": ["GCP", "Logging", "Python"],
"title": "How to Write Logs to Google Cloud Logging in Python",
"subtitle": "Centralize your Python logs in the Cloud",
"reading_time": 9,
"image_url": "https://miro.medium.com/0*SACzpSr22yG_4X6a.png",
"display_tag": "GCP"
},
{
"_id": "420597ede80e",
"published_at": "2022-02-26",
"url": "https://lynn-kwong.medium.com/how-to-use-mongodb-with-graphical-ides-420597ede80e",
"tags": ["MongoDB", "GUI", "IDE", "Database"],
"title": "How to Use MongoDB With Graphical IDEs",
"subtitle": "Boost your efficiency with a MongoDB IDE",
"reading_time": 7,
"image_url": "https://miro.medium.com/1*FwT4IfvYwa8NMIu2R1igBQ.png",
"display_tag": "MongoDB"
},
{
"_id": "a4de7182d996",
"published_at": "2022-02-04",
"url": "https://lynn-kwong.medium.com/how-to-scrape-javascript-webpages-using-proxycrawl-in-python-a4de7182d996",
"tags": ["JavaScript", "Scraping", "Proxycrawl"],
"title": "How to Scrape Javascript Webpages Using Proxycrawl in Python",
"subtitle": "Learn a simple way to scrape JavaScript webpages",
"reading_time": 5,
"image_url": "https://miro.medium.com/0*aNJoiOpgL-YfvGja.png",
"display_tag": "JavaScript"
},
{
"_id": "4f5903c67db2",
"published_at": "2022-02-04",
"url": "https://lynn-kwong.medium.com/simple-web-scraping-using-requests-beautiful-soup-and-lxml-in-python-4f5903c67db2",
"tags": ["Scraping", "Beautiful Soup", "lxml"],
"title": "Simple Web Scraping Using Requests, Beautiful Soup, and Lxml in Python",
"subtitle": "Get started with web scraping in Python",
"reading_time": 9,
"image_url": "https://miro.medium.com/0*wxrpt7PYyS8X7LGB.png",
"display_tag": "Scraping"
},
{
"_id": "f4cdbad2e7d",
"published_at": "2022-01-09",
"url": "https://lynn-kwong.medium.com/how-to-visualize-your-data-with-grafana-f4cdbad2e7d",
"tags": ["Grafana", "Monitoring", "MySQL", "Database"],
"title": "How to Visualize Your Data With Grafana",
"subtitle": "Learn a powerful data monitoring tool",
"reading_time": 9,
"image_url": "https://miro.medium.com/0*UdJ9Od6A273_0Eim.jpg",
"display_tag": "Grafana"
},
{
"_id": "fddb51f3d03a",
"published_at": "2021-12-31",
"url": "https://lynn-kwong.medium.com/special-python-string-formatting-in-logging-and-pint-unit-conversion-fddb51f3d03a",
"tags": ["Python", "String", "Formatting"],
"title": "Special Python String Formatting in Logging and Unit Conversion",
"subtitle": "Learn to use string formatting in different cases",
"reading_time": 7,
"image_url": "https://miro.medium.com/0*8BVBG_P2hvIOiFsI.jpg",
"display_tag": "Python"
},
{
"_id": "6beecd183345",
"published_at": "2021-11-01",
"url": "https://lynn-kwong.medium.com/understand-the-basics-of-locks-and-deadlocks-in-mysql-part-ii-6beecd183345",
"tags": ["MySQL", "Lock", "Deadlock", "Database"],
"title": "Understand the Basics of Locks and Deadlocks in MySQL (Part II)",
"subtitle": "Let's not get scared of MySQL deadlocks anymore",
"reading_time": 7,
"image_url": "https://miro.medium.com/0*xOLxbrfgO5Lrz2QD",
"display_tag": "MySQL"
},
{
"_id": "92f229db0a",
"published_at": "2021-11-01",
"url": "https://lynn-kwong.medium.com/understand-the-basics-of-locks-and-deadlocks-in-mysql-part-i-92f229db0a",
"tags": ["MySQL", "Lock", "Deadlock", "Database"],
"title": "Understand the Basics of Locks and Deadlocks in MySQL (Part I)",
"subtitle": "Let's not get scared of MySQL deadlocks anymore",
"reading_time": 12,
"image_url": "https://miro.medium.com/0*MA-vpqylY8VkBGf1",
"display_tag": "MySQL"
},
{
"_id": "2a386ab73ca2",
"published_at": "2021-09-12",
"url": "https://lynn-kwong.medium.com/learn-the-fundamentals-of-kubernetes-for-software-developers-2a386ab73ca2",
"tags": ["Kubernetes", "k8s", "Docker"],
"title": "Learn the Fundamentals of Kubernetes for Software Developers",
"subtitle": "Let's get started with the mysterious k8s",
"reading_time": 13,
"image_url": "https://miro.medium.com/0*T2V2d1B_2hZTvHDb",
"display_tag": "Kubernetes"
},
{
"_id": "e6af03dff10b",
"published_at": "2021-05-19",
"url": "https://lynn-kwong.medium.com/how-to-use-postman-to-automate-api-tests-e6af03dff10b",
"tags": ["API", "Postman", "JavaScript"],
"title": "How to Use Postman to Automate API Tests",
"subtitle": "Learn to test your APIs with a friendly GUI",
"reading_time": 16,
"image_url": "https://miro.medium.com/0*q-1nav6H_7Ymlgcq",
"display_tag": "API"
},
{
"_id": "f2ba2340f205",
"published_at": "2021-04-08",
"url": "https://lynn-kwong.medium.com/how-to-upgrade-a-python-2-code-base-to-python-3-f2ba2340f205",
"tags": ["Python"],
"title": "How to Upgrade a Python 2 Codebase to Python 3",
"subtitle": "Let's stop using Python 2 from now on",
"reading_time": 7,
"image_url": "https://miro.medium.com/1*sm8w4zwn-UFk8dInKkdSXw.png",
"display_tag": "Python"
},
{
"_id": "31814c0a8ec2",
"published_at": "2022-01-04",
"url": "https://lynn-kwong.medium.com/how-to-create-virtual-environments-with-venv-and-conda-in-python-31814c0a8ec2",
"tags": ["Python", "Conda", "venv"],
"title": "How to Create Virtual Environments With Venv and Conda in Python",
"subtitle": "Learn to build a modern Python development environment",
"reading_time": 7,
"image_url": "https://miro.medium.com/0*zuKvjdFsFwjNqBrt.png",
"display_tag": "Python"
},
{
"_id": "3851174f9fb0",
"published_at": "2022-01-06",
"url": "https://betterprogramming.pub/how-to-use-redis-for-caching-and-pub-sub-in-python-3851174f9fb0",
"tags": ["Redis", "Caching", "Pub/Sub"],
"title": "How to Use Redis for Caching and Pub/Sub in Python",
"subtitle": "Know the common use cases of Redis in Python",
"reading_time": 7,
"image_url": "https://miro.medium.com/0*HjmtCYm--Cibzy9b",
"display_tag": "Redis"
},
{
"_id": "f6f97a909ee0",
"published_at": "2021-12-23",
"url": "https://lynn-kwong.medium.com/understand-the-encoding-decoding-of-python-strings-unicode-utf-8-f6f97a909ee0",
"tags": ["Encoding", "Unicode", "UTF-8"],
"title": "Understand the Encoding/Decoding of Python Strings (Unicode/UTF-8)",
"subtitle": "Demystify Python string encoding/decoding",
"reading_time": 5,
"image_url": "https://miro.medium.com/0*x7CH-4mW2SouJEaz.jpg",
"display_tag": "Encoding"
},
{
"_id": "77d80d3ce412",
"published_at": "2021-09-19",
"url": "https://lynn-kwong.medium.com/use-pre-commit-commit-msg-and-pre-push-git-hooks-to-fix-your-python-code-asap-77d80d3ce412",
"tags": ["Git Hooks", "Pre-commit", "Git"],
"title": "Use Pre-commit, Commit-msg, and Pre-push Git Hooks to Fix Your Python Code ASAP",
"subtitle": "Let Git hooks boost your coding efficiency",
"reading_time": 6,
"image_url": "https://miro.medium.com/0*jVr9nXBLrkdlRiaq",
"display_tag": "Git Hooks"
},
{
"_id": "a2563d67e6d",
"published_at": "2021-05-03",
"url": "https://lynn-kwong.medium.com/python-typing-and-validation-with-mypy-and-pydantic-a2563d67e6d",
"tags": ["Pydantic", "Typing", "Mypy"],
"title": "Python Typing and Validation With Mypy and Pydantic",
"subtitle": "Let's make our Python code more readable with typing",
"reading_time": 7,
"image_url": "https://miro.medium.com/0*qpHuBM2eP9SfcOwA",
"display_tag": "Pydantic"
},
{
"_id": "73da5d2fdc0b",
"published_at": "2021-08-22",
"url": "https://lynn-kwong.medium.com/essentials-of-redis-all-you-need-to-know-as-a-developer-73da5d2fdc0b",
"tags": ["Redis", "Caching", "Database"],
"title": "Essentials of Redis - All You Need to Know as a Developer",
"subtitle": "Learn the most common use cases of Redis",
"reading_time": 14,
"image_url": "https://miro.medium.com/0*5X0tFNr0ijgGr1zq",
"display_tag": "Redis"
},
{
"_id": "8a6b8c56381c",
"published_at": "2021-08-15",
"url": "https://lynn-kwong.medium.com/how-to-use-pydantic-to-read-environment-variables-and-secret-files-in-python-8a6b8c56381c",
"tags": ["Pydantic", "Credential", "Environment"],
"title": "How to Use Pydantic to Read Environment Variables and Secret Files in Python",
"subtitle": "Learn to manage your environment variables in a better way",
"reading_time": 6,
"image_url": "https://miro.medium.com/0*Z_NFKEUy-Oq2zj4G",
"display_tag": "Pydantic"
},
{
"_id": "fc4f430b3b28",
"published_at": "2021-04-24",
"url": "https://lynn-kwong.medium.com/how-to-use-gsutil-and-python-to-deal-with-files-in-google-cloud-storage-fc4f430b3b28",
"tags": ["GCP", "Storage", "Python"],
"title": "How to Use Gsutil and Python to Deal With Files in Google Cloud Storage",
"subtitle": "Learn to interact with GCP Storage programmatically",
"reading_time": 6,
"image_url": "https://miro.medium.com/1*VVEYZ6m5Sv7mG8rRVPESKA.png",
"display_tag": "GCP"
},
{
"_id": "a0b825ad7d41",
"published_at": "2021-12-26",
"url": "https://lynn-kwong.medium.com/how-to-debug-python-scripts-and-api-code-in-the-console-and-in-vs-code-a0b825ad7d41",
"tags": ["Debugging", "VS Code", "API"],
"title": "How to Debug Python Scripts and API Code in the Console and in VS Code",
"subtitle": "Learn different ways to debug your Python code",
"reading_time": 12,
"image_url": "https://miro.medium.com/0*rr2H1eobO7uKVRHN.png",
"display_tag": "Debugging"
},
{
"_id": "b594512f4362",
"published_at": "2021-12-08",
"url": "https://lynn-kwong.medium.com/use-black-mypy-and-pylint-to-make-your-python-code-more-professional-b594512f4362",
"tags": ["Formatting", "Python", "VS Code"],
"title": "Use Black, Mypy, and Pylint to Make Your Python Code More Professional",
"subtitle": "Let's write Python code like a Pro",
"reading_time": 9,
"image_url": "https://miro.medium.com/0*LBUMKDDKUidw7KnN",
"display_tag": "Formatting"
},
{
"_id": "edf826196fbf",
"published_at": "2021-11-15",
"url": "https://lynn-kwong.medium.com/how-to-decorate-classes-in-python-edf826196fbf",
"tags": ["Decorator", "Class", "Python"],
"title": "How to Decorate Classes in Python",
"subtitle": "Learn a special use case of Python decorators",
"reading_time": 3,
"image_url": "https://miro.medium.com/0*ij2CTpkZlrBjEUW1",
"display_tag": "Decorator"
},
{
"_id": "1eecd77188ad",
"published_at": "2021-04-30",
"url": "https://lynn-kwong.medium.com/how-to-use-google-custom-search-engine-gcse-in-your-python-code-1eecd77188ad",
"tags": ["GCP", "GCSE", "Search"],
"title": "How to Use Google Custom Search Engine (GCSE) in Your Python Code",
"subtitle": "Learn to use Google search API in your code",
"reading_time": 4,
"image_url": "https://miro.medium.com/0*qLsMEKXTv_Ti7lV5",
"display_tag": "GCP"
},
{
"_id": "495f2f8db83e",
"published_at": "2021-04-03",
"url": "https://lynn-kwong.medium.com/learn-elasticsearch-from-practical-examples-495f2f8db83e",
"tags": ["Elasticsearch", "Kibana", "Search"],
"title": "Learn Elasticsearch from Practical Examples",
"subtitle": "You will be able to build a search engine soon",
"reading_time": 13,
"image_url": "https://miro.medium.com/1*Tl46X3lIX9mmNp4VJMT_Fg.png",
"display_tag": "Elasticsearch"
},
{
"_id": "481aa444933f",
"published_at": "2021-05-14",
"url": "https://lynn-kwong.medium.com/understand-and-master-the-decorator-in-python-481aa444933f",
"tags": ["Decorator", "Python"],
"title": "Understand and Master the Decorators in Python",
"subtitle": "Let's demystify the decorators in Python",
"reading_time": 4,
"image_url": "https://miro.medium.com/0*NN9eC6qlgQYCodYf",
"display_tag": "Decorator"
},
{
"_id": "dac40803fdf",
"published_at": "2021-10-14",
"url": "https://lynn-kwong.medium.com/how-to-configure-build-and-deploy-your-python-projects-to-pypi-dac40803fdf",
"tags": ["PyPI", "Publish", "Python"],
"title": "How to Configure, Build, and Publish Your Python Projects to PyPi",
"subtitle": "Learn to publish your Python projects in a modern way",
"reading_time": 11,
"image_url": "https://miro.medium.com/0*DVKEJVWGX0dgRS4S",
"display_tag": "PyPI"
},
{
"_id": "b88e6a1071fc",
"published_at": "2021-08-13",
"url": "https://lynn-kwong.medium.com/learn-more-than-the-basics-about-the-date-time-and-timezone-in-python-b88e6a1071fc",
"tags": ["Python", "Logging", "Timezone"],
"title": "Learn More Than the Basics About the Date, Time, and Timezone in Python",
"subtitle": "Let's become a time master in Python",
"reading_time": 5,
"image_url": "https://miro.medium.com/0*noM6VoP5wwtgFMQE",
"display_tag": "Python"
},
{
"_id": "6a50a45603ae",
"published_at": "2021-07-25",
"url": "https://lynn-kwong.medium.com/learn-how-to-use-google-cloud-functions-in-python-with-a-simple-example-6a50a45603ae",
"tags": ["Cloud Function", "GCP", "Microservice"],
"title": "Learn How to Use Handy Cloud Functions in Python With a Practical Example",
"subtitle": "Let's simplify our application with modern serverless services",
"reading_time": 8,
"image_url": "https://miro.medium.com/0*taXbJQ-r2Q2kf4NE",
"display_tag": "Cloud Function"
},
{
"_id": "9e2c2a5e1759",
"published_at": "2021-07-11",
"url": "https://lynn-kwong.medium.com/build-apis-with-falcon-in-python-all-essentials-you-need-9e2c2a5e1759",
"tags": ["API", "Python", "Falcon"],
"title": "Build APIs With Falcon in Python - All Essentials You Need",
"subtitle": "Learn a simple but efficient API framework in Python",
"reading_time": 14,
"image_url": "https://miro.medium.com/0*VXbkgtYuloC1NdM4",
"display_tag": "API"
},
{
"_id": "13811859f80f",
"published_at": "2021-05-23",
"url": "https://lynn-kwong.medium.com/how-to-use-the-assignment-expression-walrus-operator-in-python-13811859f80f",
"tags": ["Python", "Walrus", "Assignment"],
"title": "How to Use the Assignment Expression/Walrus Operator (:=) in Python",
"subtitle": "Learn a cool feature to simplify your Python code",
"reading_time": 3,
"image_url": "https://miro.medium.com/0*Pj89LdjG3-zYlS1M",
"display_tag": "Python"
},
{
"_id": "7aebc1408d6f",
"published_at": "2021-04-26",
"url": "https://lynn-kwong.medium.com/learn-advanced-crud-and-search-queries-for-nested-objects-in-elasticsearch-from-practical-examples-7aebc1408d6f",
"tags": ["Elasticsearch", "Nested", "Advanced"],
"title": "Learn Advanced CRUD and Search Queries for Nested Objects in Elasticsearch from Practical Examples",
"subtitle": "Elasticsearch can get complex but also powerful",
"reading_time": 5,
"image_url": "https://miro.medium.com/0*LtJMvBt2WDjTRMBK",
"display_tag": "Elasticsearch"
},
{
"_id": "fc894af0b68b",
"published_at": "2021-03-29",
"url": "https://lynn-kwong.medium.com/how-to-encrypt-and-decrypt-a-secret-file-in-google-cloud-platform-fc894af0b68b",
"tags": ["GCP", "Encryption", "Credential"],
"title": "How to Encrypt and Decrypt a Secret File in Google Cloud Platform",
"subtitle": "Let's save our credentials in a safe way in GCP",
"reading_time": 4,
"image_url": "https://miro.medium.com/0*VpPOnPJNsgRUfvn0.jpg",
"display_tag": "GCP"
},
{
"_id": "5f6840af2c05",
"published_at": "2021-03-30",
"url": "https://lynn-kwong.medium.com/build-a-docker-image-with-cloud-build-in-google-cloud-platform-5f6840af2c05",
"tags": ["CI/CD", "Docker", "GCP"],
"title": "Build a Docker Image With Cloud Build in Google Cloud Platform",
"subtitle": "Learn basic CI/CD with GCP",
"reading_time": 7,
"image_url": "https://miro.medium.com/0*DQyJWlf_dleqE8cw.png",
"display_tag": "CI/CD"
},
{
"_id": "efaa78763cc3",
"published_at": "2020-11-13",
"url": "https://lynn-kwong.medium.com/organize-your-commits-like-a-pro-with-git-rebase-and-git-commit-amend-efaa78763cc3",
"tags": ["Git", "GitHub", "GitLab"],
"title": "Organize Your Commits Like a Pro With git rebase and git commit --amend",
"subtitle": "Learn a professional way to manage your Git commits",
"reading_time": 6,
"image_url": "https://miro.medium.com/1*TX4srKV_W5bjK0WgUTi8EQ.png",
"display_tag": "Git"
},
{
"_id": "16494fc92f87",
"published_at": "2020-11-13",
"url": "https://lynn-kwong.medium.com/how-to-recover-a-git-commit-that-is-reset-or-discarded-16494fc92f87",
"tags": ["Git", "GitHub", "GitLab"],
"title": "How to Recover a Git Commit That Is Reset or Discarded",
"subtitle": "Calm down! You can get it back!",
"reading_time": 4,
"image_url": "https://miro.medium.com/0*H2ERIySQQTHN2tXm",
"display_tag": "Git"
},
{
"_id": "88de292daf80",
"published_at": "2020-11-16",
"url": "https://lynn-kwong.medium.com/two-caveats-of-the-python-for-loop-88de292daf80",
"tags": ["Python"],
"title": "Two Caveats of the Python for Loops",
"subtitle": "Python loops can be dangerous sometimes",
"reading_time": 2,
"image_url": "https://miro.medium.com/0*VqWmvhvo_sflRCQm.png",
"display_tag": "Python"
},
{
"_id": "2353464814bc",
"published_at": "2021-03-16",
"url": "https://lynn-kwong.medium.com/python-json-tricks-how-to-deal-with-jsondecodeerror-2353464814bc",
"tags": ["Python", "JSON"],
"title": "Python JSON Tricks: How to Deal With JSONDecodeError",
"subtitle": "A trick you may not know yet",
"reading_time": 3,
"image_url": "https://miro.medium.com/1*gtTqIG-eq6eTmiM3zgXxKA.png",
"display_tag": "Python"
},
{
"_id": "66fb0427d636",
"published_at": "2020-11-14",
"url": "https://lynn-kwong.medium.com/stop-using-print-in-your-python-code-for-logging-use-the-logging-module-like-a-pro-66fb0427d636",
"tags": ["Python", "Logging", "Debugging"],
"title": "Stop Using Print in Your Python Code for Logging, Use the Logging Module Like a Pro",
"subtitle": "Let's use logging in Python from now on",
"reading_time": 6,
"image_url": "https://miro.medium.com/0*nC5B82jhygFM2Zqt",
"display_tag": "Python"
},
{
"_id": "b9ed00e0fdf0",
"published_at": "2021-04-02",
"url": "https://lynn-kwong.medium.com/all-you-need-to-know-about-using-elasticsearch-in-python-b9ed00e0fdf0",
"tags": ["Elasticsearch", "Kibana", "Python"],
"title": "All You Need to Know About Using Elasticsearch in Python",
"subtitle": "Learn to build a search engine in Python",
"reading_time": 8,
"image_url": "https://miro.medium.com/1*SxY9gW4rIugAFaRw_4qENA.jpeg",
"display_tag": "Elasticsearch"
},
{
"_id": "e1278c35b5ba",
"published_at": "2020-11-17",
"url": "https://lynn-kwong.medium.com/stop-using-magical-numbers-in-your-python-code-try-to-use-enum-like-a-pro-e1278c35b5ba",
"tags": ["Python", "Enum"],
"title": "Stop Using Magical Numbers in Your Python Code, Try to Use Enum Like a Pro",
"subtitle": "Learn to use Enum to make your code cleaner and more readable",
"reading_time": 3,
"image_url": "https://miro.medium.com/0*2cW4CeDe7nFkPgfa.png",
"display_tag": "Python"
},
{
"_id": "5a4b95747d19",
"published_at": "2021-03-23",
"url": "https://lynn-kwong.medium.com/what-is-elasticsearch-and-why-is-it-so-fast-5a4b95747d19",
"tags": ["Elasticsearch", "MongoDB", "Database"],
"title": "What Is Elasticsearch and Why Is It So Fast",
"subtitle": "Let's start our journey with Elasticsearch",
"reading_time": 4,
"image_url": "https://miro.medium.com/1*MhBAlZx8gYYcxxXTAasoag.png",
"display_tag": "Elasticsearch"
},
{
"_id": "fc62348e81d7",
"published_at": "2020-12-20",
"url": "https://lynn-kwong.medium.com/understand-different-git-states-and-the-corresponding-file-states-fc62348e81d7",
"tags": ["Git", "GitHub", "GitLab"],
"title": "Understand Different Git States and the Corresponding File States",
"subtitle": "Let's learn a bit more about Git basics",
"reading_time": 3,
"image_url": "https://miro.medium.com/1*0Eqod1YY6zOW8G7rCB4qbg.jpeg",
"display_tag": "Git"
},
{
"_id": "6967d7c7d42a",
"display_tag": "Cloud Run",
"image_url": "https://miro.medium.com/max/700/0*bT14___rw9A1pjyq.jpg",
"published_at": "2022-04-28",
"reading_time": 8,
"subtitle": "Apply CI/CD to your web applications",
"tags": ["Cloud Run", "CICD", "Flask", "Deploy", "Python"],
"title": "How to Deploy a Web Application to Cloud Run Automatically",
"url": "https://lynn-kwong.medium.com/6967d7c7d42a"
},
{
"_id": "ae9effa8b28f",
"display_tag": "Scraping",
"image_url": "https://miro.medium.com/max/700/0*KYxgxVALWBFv4w_i.jpg",
"published_at": "2022-05-05",
"reading_time": 10,
"subtitle": "Get accurate data for your application with proxies",
"tags": ["Scraping", "Proxies", "Scrapy", "VPN", "Python", "Geolocation"],
"title": "How to Use Proxies in Geotargeting Web Scraping With Python",
"url": "https://lynn-kwong.medium.com/ae9effa8b28f"
},
{
"_id": "bbcad40fed",
"display_tag": "GCP",
"image_url": "https://miro.medium.com/max/700/0*GszvxspbSanUfOrI.jpg",
"published_at": "2022-05-09",
"reading_time": 18,
"subtitle": "Demystify the mysterious load balancer with simple examples",
"tags": ["GCP", "Google", "Load Balancer", "Load Balancing", "Flask"],
"title": "How to Set Up a Custom Domain for Different GCP Applications Using a Load Balancer",
"url": "https://lynn-kwong.medium.com/bbcad40fed"
},
{
"_id": "6bc5d9e9ebd4",
"display_tag": "Heroku",
"image_url": "https://miro.medium.com/max/700/0*hKhpjHK5fH493akp.jpg",
"published_at": "2022-05-15",
"reading_time": 10,
"subtitle": "Learn an economic way of hosting your web applications",
"tags": ["Heroku", "Flask", "Python", "Load Balancing", "Domain", "Deploy"],
"title": "How to Deploy Your Web Application to Heroku and Add Custom Domains",
"url": "https://lynn-kwong.medium.com/6bc5d9e9ebd4"
},
{
"_id": "5cae56904c42",
"display_tag": "Redis",
"image_url": "https://miro.medium.com/max/1400/0*Xo2H1FUyyCbiuYZu.jpg",
"published_at": "2022-05-19",
"reading_time": 4,
"subtitle": "Learn complex data structures in Redis from simple examples",
"tags": ["Redis", "Python", "Caching", "Cache", "Memory", "Database"],
"title": "How to Work with Redis Sets, Lists, and Hashes in Python",
"url": "https://lynn-kwong.medium.com/5cae56904c42"
},
{
"_id": "94af18d50671",
"display_tag": "Database",
"image_url": "https://miro.medium.com/max/700/0*3nV8zATi7ky7YAZP.jpg",
"published_at": "2022-05-26",
"reading_time": 7,
"subtitle": "Learn a handy tool to manage your databases conveniently",
"tags": ["Database", "DBeaver", "MySQL", "GUI", "IDE", "Database"],
"title": "Some Tips for Using DBeaver — A Universal Database Tool",
"url": "https://lynn-kwong.medium.com/94af18d50671"
},
{
"_id": "c00aecbfbd45",
"display_tag": "Selenium",
"image_url": "https://miro.medium.com/max/700/0*VYaO4N-NNLhUpkPw.jpg",
"published_at": "2022-6-06",
"reading_time": 4,
"subtitle": "Learn basic website test automation in minutes",
"tags": [
"Selenium",
"Python",
"Tests",
"Scraping",
"Automation",
"JavaScript"
],
"title": "How to Use Selenium to Simulate Manual Actions for Website Tests in Python",
"url": "https://lynn-kwong.medium.com/c00aecbfbd45"
},
{
"_id": "1e60a908e8f2",
"display_tag": "GCP",
"image_url": "https://miro.medium.com/max/700/0*v8LfuoGqw2yramdZ.png",
"published_at": "2022-6-08",
"reading_time": 5,
"subtitle": "Connect to Cloud SQL instances with private IPs in minutes",
"tags": ["GCP", "Cloud Run", "SQL", "Cloud SQL", "VPC", "Network"],
"title": "How to Connect to GCP Cloud SQL Instances in Cloud Run Servies",
"url": "https://lynn-kwong.medium.com/1e60a908e8f2"
},
{
"_id": "401fd3fff829",
"display_tag": "Elasticsearch",
"image_url": "https://miro.medium.com/max/700/0*jCHRxJbggsSaIkJ4.jpg",
"published_at": "2022-6-11",
"reading_time": 6,
"subtitle": "Start Elasticsearch and Kibana with Docker and Docker Compose in minutes",
"tags": ["Elasticsearch", "Kibana", "Docker", "ELK"],
"title": "How to Run Elasticsearch 8 on Docker for Local Development",
"url": "https://lynn-kwong.medium.com/401fd3fff829"
},
{
"_id": "4423c5938b17",
"display_tag": "Elasticsearch",
"image_url": "https://miro.medium.com/max/1400/0*qCpGYiSJqTFadtmk.jpg",
"published_at": "2022-6-12",
"reading_time": 4,
"subtitle": "Some tips to help you deal with breaking changes of Elasticsearch",
"tags": ["Elasticsearch", "Python", "Upgrade", "Kibana", "Docker", "ELK"],
"title": "Important Syntax Updates of Elasticsearch 8 in Python",
"url": "https://lynn-kwong.medium.com/4423c5938b17"
},
{
"_id": "b5bb01ed3824",
"display_tag": "Elasticsearch",
"image_url": "https://miro.medium.com/max/700/0*ck-WcY_AxmUBEA1V.jpg",
"published_at": "2022-6-13",
"reading_time": 4,
"subtitle": "Learn different ways to index documents in bulk efficiently",
"tags": ["Elasticsearch", "Python", "Upgrade", "Bulk", "helper", "ELK"],
"title": "How to Index Elasticsearch Documents with the Bulk API in Python",
"url": "https://lynn-kwong.medium.com/b5bb01ed3824"
},
{
"_id": "ca7922c8aef6",
"display_tag": "Elasticsearch",
"image_url": "https://miro.medium.com/max/700/0*-msYj2ULYl13mSkZ.jpg",
"published_at": "2022-6-17",
"reading_time": 3,
"subtitle": "Get started with query_string queries",
"tags": ["Elasticsearch", "bool", "string", "query_string", "logical"],
"title": "Write Elasticsearch Queries with Logical Conditions in a Simpler Way",
"url": "https://lynn-kwong.medium.com/ca7922c8aef6"
},
{
"_id": "deffe7b6cd98",
"display_tag": "Python",
"image_url": "https://miro.medium.com/max/700/0*oSC34yUxnL4XMtpz.jpg",
"published_at": "2022-6-20",
"reading_time": 4,
"subtitle": "Learn different ways to read and write CSV files in Python",
"tags": ["Python", "CSV", "files", "pandas", "dictionary", "list"],
"title": "How to work with CSV files in Python",
"url": "https://lynn-kwong.medium.com/deffe7b6cd98"
},
{
"_id": "4ed0a11421ef",
"display_tag": "GCP",
"image_url": "https://miro.medium.com/max/1400/0*HekmzhVB73w2rrth.jpg",
"published_at": "2022-6-28",
"reading_time": 5,
"subtitle": "Learn to deal with GCP local authentications in minutes",
"tags": ["GCP", "Environment", "Authentication", "SDK", "gcloud", "Python"],
"title": "How to Set Up Your Local Environment to Work With GCP",
"url": "https://lynn-kwong.medium.com/4ed0a11421ef"
},
{
"_id": "ebfcad03b8cf",
"display_tag": "GCP",
"image_url": "https://miro.medium.com/max/700/0*JPxvSdG5GwTm0seq.jpg",
"published_at": "2022-6-29",
"reading_time": 7,
"subtitle": "Learn a better way to manage your sensitive data",
"tags": ["GCP", "Python", "Secret", "Credential", "Secret", "Cloud Run"],
"title": "How to Work With Secrets in Google Cloud Platform (GCP)",
"url": "https://lynn-kwong.medium.com/ebfcad03b8cf"
},
{
"_id": "f21878c9897",
"display_tag": "Generator",
"image_url": "https://miro.medium.com/max/700/0*j8LBmrobZUbqBHKa.jpg",
"published_at": "2022-7-1",
"reading_time": 5,
"subtitle": "Learn an efficient way to work with large datasets",
"tags": [
"Generator",
"Iterable",
"Iterator",
"Iteration",
"Typing",
"Python",
"asyncio",
"async"
],
"title": "Demystify Iterators and Generators in Python",
"url": "https://lynn-kwong.medium.com/f21878c9897"
},
{
"_id": "66cff907ce8e",
"display_tag": "Context Manager",
"image_url": "https://miro.medium.com/max/700/0*RRAlqmRvPgAczttw.jpg",
"published_at": "2022-7-3",
"reading_time": 5,
"subtitle": "Use context managers to make your code more robust and more Pythonic",
"tags": [
"Context Manager",
"Python",
"Unit test",
"Mock",
"Patch",
"Generator"
],
"title": "Understand Context Managers in Python and Learn to Use Them in Unit Tests",
"url": "https://lynn-kwong.medium.com/66cff907ce8e"
},
{
"_id": "8cd68440ddd1",
"display_tag": "Angular",
"image_url": "https://miro.medium.com/max/700/0*F_lacS8nVQe52TBd.jpg",
"published_at": "2022-7-27",
"reading_time": 6,
"subtitle": "You don't have to be a CSS master to build nice dialog boxes.",
"tags": [
"Angular",
"JavaScript",
"TypeScript",
"Material",
"Web Development",
"Dialog"
],
"title": "How to Create a Simple Dialog Box with Angular Material",
"url": "https://lynn-kwong.medium.com/8cd68440ddd1"
},
{
"_id": "bdfaa3074ee4",
"display_tag": "JSON",
"image_url": "https://miro.medium.com/max/700/0*hPu0aUIz6hBxH8TO.jpg",
"published_at": "2022-7-29",
"reading_time": 4,
"subtitle": "Learn basic JSON operations with simple examples.",
"tags": ["JSON", "Python", "API"],
"title": "How to Perform JSON Conversion, Serialization, and Comparison in Python",
"url": "https://lynn-kwong.medium.com/bdfaa3074ee4"
},
{
"_id": "ae9d8d1db344",
"display_tag": "JSON Schema",
"image_url": "https://miro.medium.com/max/700/0*r2xLc3zVN_fBSfmO.png",
"published_at": "2022-7-31",
"reading_time": 8,
"subtitle": "Learn a standard way to ensure your data quality.",
"tags": ["JSON", "Python", "API", "Validation", "Schema"],
"title": "How to Use JSON Schema to Validate JSON Documents in Python",
"url": "https://lynn-kwong.medium.com/ae9d8d1db344"
},
{
"_id": "743561a4ab53",
"display_tag": "Pydantic",
"image_url": "https://miro.medium.com/max/700/0*X_eEQak8DFvIaWx1.jpg",
"published_at": "2022-8-5",
"reading_time": 6,
"subtitle": "Learn to validate your data in a flexible way with Pydantic.",
"tags": ["Pydantic", "Python", "API", "Validation"],
"title": "How to Validate Your Data with Custom Validators of Pydantic Models in Python",
"url": "https://lynn-kwong.medium.com/743561a4ab53"
},
{
"_id": "1170bbdff32b",
"display_tag": "ESLint",
"image_url": "https://miro.medium.com/max/700/0*1DcV62SzTQZXRhJP",
"published_at": "2022-8-12",
"reading_time": 8,
"subtitle": "Improve your JS/TS code quality using ESLint.",
"tags": ["ESLint", "JavaScript", "TypeScript"],
"title": "How Use ESLint to Write Elegant Code in JavaScript and TypeScript",
"url": "https://lynn-kwong.medium.com/1170bbdff32b"
},
{
"_id": "b04de61834bd",
"display_tag": "Pre-commit",
"image_url": "https://miro.medium.com/max/700/0*8JouceB741q1Ji45",
"published_at": "2022-8-4",
"reading_time": 6,
"subtitle": "Improve your code quality using ESLint, Prettier, lint-staged, and Husky.",
"tags": ["JavaScript", "TypeScript", "Pre-commit"],
"title": "Create a Pre-commit Git Hook to Check and Fix Your JavaScript/TypeScript Code Automatically",
"url": "https://lynn-kwong.medium.com/b04de61834bd"
},
{
"_id": "a6984de1f2c5",
"display_tag": "TSDoc",
"image_url": "https://miro.medium.com/max/700/0*d4G8qpuGHIWVf-PK.jpg",
"published_at": "2022-8-18",
"reading_time": 8,
"subtitle": "Learn a standard way to add documentation to your JavaScript/TypeScript code.",
"tags": ["JSDoc", "TSDoc", "Documentation", "JavaScript", "TypeScript"],
"title": "Compare JavaScript JSDoc with TypeScript TSDoc for Documentation",
"url": "https://lynn-kwong.medium.com/a6984de1f2c5"
},
{
"_id": "30d7ce56ffcb",
"display_tag": "P4Merge",
"image_url": "https://miro.medium.com/max/700/0*HdEC0F4atRRCHND9.jpg",
"published_at": "2022-9-2",
"reading_time": 3,
"subtitle": "Learn to check code differences with a handy graphical tool.",
"tags": ["P4Merge", "Git", "GUI", "Difference"],
"title": "Use P4Merge to Check Code Changes Conveniently With a Nice GUI for Git",
"url": "https://lynn-kwong.medium.com/30d7ce56ffcb"
},
{
"_id": "3b7fbc3d7ee9",
"display_tag": "Vim",
"image_url": "https://miro.medium.com/max/700/0*HYWmFLuiRdLUbIJC.jpg",
"published_at": "2022-9-2",
"reading_time": 7,
"subtitle": "Vim is not dying and can be very useful sometimes.",
"tags": ["Vim", "Linux", "Command", "Editor"],
"title": "Learn Handy Vim Commands and Operations That Can Increase Your Efficiency Dramatically",
"url": "https://lynn-kwong.medium.com/3b7fbc3d7ee9"
},
{
"_id": "6c27b3be1004",
"display_tag": "Firebase",
"image_url": "https://miro.medium.com/max/700/0*eR_0NqFD9hzIS2lJ.jpg",
"published_at": "2022-9-5",
"reading_time": 8,
"subtitle": "Learn the essentials of Firebase and related services with a hands-on tutorial.",
"tags": ["Firebase", "Firestore", "App"],
"title": "Learn the Basics and Get Started with Firebase — an App Development Platform Backed by Google",
"url": "https://lynn-kwong.medium.com/6c27b3be1004"
},
{
"_id": "23044656b97d",
"display_tag": "SQLAlchemy",
"image_url": "https://miro.medium.com/max/700/0*lYeRB6jx_SPvKwSh.jpg",
"published_at": "2022-9-11",
"reading_time": 8,
"subtitle": "Learn different ways to insert large numbers of records into the database efficiently in Python.",
"tags": ["SQLAlchemy", "Python", "Database", "MySQL", "Bulk"],
"title": "How to Perform Bulk Inserts With SQLAlchemy Efficiently in Python",
"url": "https://lynn-kwong.medium.com/23044656b97d"
},
{
"_id": "87308156495c",
"display_tag": "Scrapy",
"image_url": "https://miro.medium.com/max/720/0*PtkuEP1JB-7sKFbE.jpg",
"published_at": "2022-10-3",
"reading_time": 5,
"subtitle": "Learn to make better use of your scraping logs with Google Logging",
"tags": ["Python", "GCP", "Logging", "Logger", "Scrapy"],
"title": "How to Add Google Logger to Scrapy in Python",
"url": "https://lynn-kwong.medium.com/87308156495c"
},
{
"_id": "ab397eb0e67a",
"display_tag": "ESLint",
"image_url": "https://miro.medium.com/max/720/0*7cV9miYbUXFK72lr.jpg",
"published_at": "2022-10-14",
"reading_time": 7,
"subtitle": "Learn to sort the imported modules in JavaScript/TypeScript code in an elegant way",
"tags": [
"TypeScript",
"JavaScript",
"ESLint",
"Sorting",
"Import",
"Git Hooks",
"CICD"
],
"title": "Sort JavaScript/TypeScript Modules Uniformly and Automatically with Git Hooks and CI Pipelines",
"url": "https://lynn-kwong.medium.com/ab397eb0e67a"
},
{
"_id": "d9fed161d572",
"display_tag": "Angular",
"image_url": "https://miro.medium.com/max/720/0*-IOKNMt0_ovjMDa1.jpg",
"published_at": "2022-10-16",
"reading_time": 5,
"subtitle": "Add internationalization to your Angular project with ngx-translate",
"tags": ["Angular", "Internationalization", "Translation", "ngx-translate"],
"title": "How to Add Internationalization (Translations) in Angular — Basics",
"url": "https://lynn-kwong.medium.com/d9fed161d572"
},
{
"_id": "bd394262727",
"display_tag": "Angular",
"image_url": "https://miro.medium.com/max/720/0*-aLaPlaRZn_ov1Kj.jpg",
"published_at": "2022-10-17",
"reading_time": 5,
"subtitle": "Learn more advanced settings for the translation service from a hands-on tutorial",
"tags": [
"Angular",
"Internationalization",
"Translation",
"ngx-translate",
"Backend",
"Lazy-loading"
],
"title": "How to Add Internationalization (Translations) in Angular — Backend Integration and Lazy-loaded Modules",
"url": "https://lynn-kwong.medium.com/bd394262727"
},
{
"_id": "294e11811243",
"display_tag": "Images",
"image_url": "https://miro.medium.com/max/720/0*0cNtD6mh73IH143y.jpg",
"published_at": "2022-11-06",
"reading_time": 5,
"subtitle": "Learn simple image processing with Python",
"tags": [
"Images",
"Pictures",
"Python",
"Download",
"Cloud Storage",
"GCP"
],
"title": "How to Download Images From URLs, Convert the Type, and Save Them in the Cloud With Python",
"url": "https://lynn-kwong.medium.com/294e11811243"
},
{
"_id": "372f859851f7",
"display_tag": "Firestore",
"image_url": "https://miro.medium.com/max/720/0*2bg2xUX5egGjs6W3.webp",
"published_at": "2022-11-16",
"reading_time": 11,
"subtitle": "Learn to manage your Firebase app data in Python",
"tags": ["Firebase", "Firestore", "Python", "GCP"],
"title": "Essentials for Working With Firestore in Python",
"url": "https://lynn-kwong.medium.com/372f859851f7"
},
{
"_id": "9dc802a10618",
"display_tag": "Linux",
"image_url": "https://miro.medium.com/max/720/0*jamI-nfmp62PdWZh",
"published_at": "2022-12-03",
"reading_time": 6,
"subtitle": "Learn some handy and advanced Linux commands from practical examples",
"tags": ["Linux", "Ubuntu", "Commands"],
"title": "Some Linux Commands That Can Boost Your Work Efficiency Dramatically",
"url": "https://lynn-kwong.medium.com/9dc802a10618"
},
{
"_id": "abb22a3e5097",
"display_tag": "MySQL",
"image_url": "https://miro.medium.com/max/720/0*ozssbuQUlrZs6erz.webp",
"published_at": "2022-12-06",
"reading_time": 7,
"subtitle": "Learn advanced MySQL queries to calculate medians on different occasions",
"tags": ["MySQL", "Median", "Grouping", "substring_index", "group_concat"],
"title": "How to Calculate Medians with Grouping in MySQL",
"url": "https://lynn-kwong.medium.com/abb22a3e5097"
},
{
"_id": "d581fa9a58e",
"display_tag": "Git",
"image_url": "https://miro.medium.com/max/720/0*d2btHOdxciMmNMAt.webp",
"published_at": "2022-12-09",
"reading_time": 8,
"subtitle": "Learn something you may not already know about Git",
"tags": ["Git", "GitHub", "Git Hooks", "git amend", "git rebase"],
"title": "Basics and Tricks of Git for New Software Developers",
"url": "https://lynn-kwong.medium.com/d581fa9a58e"
},
{
"_id": "e0bc4d25808e",
"display_tag": "asyncio",
"image_url": "https://miro.medium.com/max/720/0*mZ-v7t912Q8Rd7_Q",
"published_at": "2022-12-25",
"reading_time": 9,
"subtitle": "Get your hands dirty with a new way of writing asynchronous code",
"tags": ["asyncio", "async", "await", "Threading", "asynchronous"],
"title": "Understand async/await with asyncio for Asynchronous Programming in Python",
"url": "https://lynn-kwong.medium.com/e0bc4d25808e"
},
{
"_id": "7bdf856a94cb",
"display_tag": "Elasticsearch",
"image_url": "https://miro.medium.com/max/720/0*m4pOVLTs_P3GuW8N.webp",
"published_at": "2023-01-07",
"reading_time": 9,
"subtitle": "Learn the simple but powerful synonyms feature to improve your search quality",
"tags": ["Elasticsearch", "synonyms"],
"title": "How to Use the Synonyms Feature Correctly in Elasticsearch",
"url": "https://lynn-kwong.medium.com/7bdf856a94cb"
},
{
"_id": "6bf9fa90c6b8",
"display_tag": "FastAPI",
"image_url": "https://miro.medium.com/max/720/0*KVod4aFyLNHqtOHX.webp",
"published_at": "2023-01-23",
"reading_time": 10,
"subtitle": "Learn a modern web framework for building APIs with Python",
"tags": ["FastAPI", "API", "Python"],
"title": "Build APIs with FastAPI in Python — All Essentials You Need to Get Started",
"url": "https://lynn-kwong.medium.com/6bf9fa90c6b8"
},
{
"_id": "988157dce554",
"display_tag": "WebSocket",
"image_url": "https://miro.medium.com/max/720/0*3qwCy9XghedX6uys.webp",
"published_at": "2023-01-30",
"reading_time": 8,
"subtitle": "Learn to build a two-way interactive communication application with the WebSocket protocol",
"tags": ["WebSocket", "FastAPI", "Angular", "Python"],
"title": "Build a WebSocket Application with FastAPI and Angular",
"url": "https://lynn-kwong.medium.com/988157dce554"
},
{
"_id": "b5478e237b27",
"display_tag": "Email",
"image_url": "https://miro.medium.com/v2/resize:fit:720/format:webp/0*wNcsoVPemo5wSr-G.png",
"published_at": "2023-02-10",
"reading_time": 11,
"subtitle": "Learn different ways to send emails in Python and trigger GCP Cloud Functions",
"tags": ["Email", "Python", "GCP", "Cloud Function", "Microservice"],
"title": "How to Send Emails in Python with GCP Cloud Function as a Microservice",
"url": "https://lynn-kwong.medium.com/b5478e237b27"
},
{
"_id": "71854433a2f7",
"display_tag": "Exception",
"image_url": "https://miro.medium.com/v2/resize:fit:720/format:webp/0*B7z2ncM-G4z6saNF.jpg",
"published_at": "2023-02-15",
"reading_time": 6,
"subtitle": "Learn to write robust Python code with proper exception handling",
"tags": ["Python", "Error", "Exception"],
"title": "How to Handle Errors and Exceptions Properly in Python",
"url": "https://lynn-kwong.medium.com/71854433a2f7"
},
{
"_id": "99bdf810c498",
"display_tag": "Cloud SQL",
"image_url": "https://miro.medium.com/v2/resize:fit:720/format:webp/0*K4eHD4TrEWfeFW9h.jpg",
"published_at": "2023-02-20",
"reading_time": 9,
"subtitle": "Learn a standard way to connect dockerized applications to GCP Cloud SQL instances",
"tags": ["Cloud SQL", "GCP", "Docker", "Proxy"],
"title": "How to Connect to GCP Cloud SQL with Cloud SQL Auth Proxy in Docker",
"url": "https://lynn-kwong.medium.com/99bdf810c498"
},
{
"_id": "e936728e00d6",
"display_tag": "argparse",
"image_url": "https://miro.medium.com/v2/resize:fit:720/format:webp/0*P0jkhTiiOa5eZ6a7.jpg",
"published_at": "2023-02-21",
"reading_time": 7,
"subtitle": "Learn to add standard command-line interfaces for your Python programs using argparse",
"tags": ["argparse", "Python", "Command line", "options", "arguments"],
"title": "How to Add Command-line Arguments for a Python Program with argparse",
"url": "https://lynn-kwong.medium.com/e936728e00d6"
},
{
"_id": "4d199cfb15ae",
"display_tag": "MySQL",
"image_url": "https://miro.medium.com/v2/resize:fit:720/format:webp/0*xgeI2AagyozkgIeN.jpg",
"published_at": "2023-02-28",
"reading_time": 8,
"subtitle": "Important MySQL DDL commands we should know for managing our tables",
"tags": ["MySQL", "SQL", "Convention", "Standards", "DDL"],
"title": "Learn Common Database Managing Commands as a Data Engineer",
"url": "https://lynn-kwong.medium.com/4d199cfb15ae"
},
{
"_id": "28169af8f7ba",
"display_tag": "MySQL",
"image_url": "https://miro.medium.com/v2/resize:fit:720/format:webp/0*Ha7HpTDywWdh-6At.jpg",
"published_at": "2023-03-10",
"reading_time": 8,
"subtitle": "Learn to use triggers efficiently in MySQL to keep track of important tables",
"tags": ["MySQL", "Trigger", "audit", "log"],
"title": "Use Triggers and Audit/Log Tables to Track Table Changes in MySQL",
"url": "https://lynn-kwong.medium.com/28169af8f7ba"
},
{
"_id": "741a8cddde8f",
"display_tag": "Elasticsearch",
"image_url": "https://miro.medium.com/v2/resize:fit:720/format:webp/0*Wjx0HcX8A8x7vON5.jpg",
"published_at": "2023-03-14",
"reading_time": 13,
"subtitle": "Learn to build a functional search engine with both backend and frontend quickly",
"tags": ["Elasticsearch", "FastAPI", "Angular", "Python", "Autocomplete"],
"title": "Build an Autocomplete Search Project Using Elasticsearch, FastAPI, and Angular (Part I — Backend)",
"url": "https://lynn-kwong.medium.com/741a8cddde8f"
},
{
"_id": "7d389ab340d",
"display_tag": "Debugging",
"image_url": "https://miro.medium.com/v2/resize:fit:720/format:webp/0*83cuAEHqrBAX6JYL.png",
"published_at": "2023-03-18",
"reading_time": 9,
"subtitle": "Learn different ways to debug your Dockerized API code",
"tags": ["API", "FastAPI", "Debugging", "Python", "PDB"],
"title": "How to Debug Your Microservice Python Code Running Remotely in Docker",
"url": "https://lynn-kwong.medium.com/7d389ab340d"
},
{
"_id": "a502e731fd8c",
"display_tag": "Pydantic",
"image_url": "https://miro.medium.com/v2/resize:fit:720/format:webp/0*xSihe3CMjttNYDAZ.png",
"published_at": "2023-03-22",
"reading_time": 6,
"subtitle": "Learn handy tools in Python to manage your data in various ways",
"tags": ["Named Tuple", "defaultdict", "Data Class", "Python", "Pydantic"],
"title": "Compare Dictionary, Named Tuple, Data Class, and Pydantic Model in Python",
"url": "https://lynn-kwong.medium.com/a502e731fd8c"
},
{
"_id": "4a2fdc48ef74",
"display_tag": "FastAPI",
"image_url": "https://miro.medium.com/v2/resize:fit:720/0*GCjG7jIaWihmCNW3",
"published_at": "2023-03-27",
"reading_time": 5,
"subtitle": "Learn to use Annotated typing correctly with APIRouter in FastAPI",
"tags": ["FastAPI", "Typing", "Annotated", "bug", "Debugging", "APIRouter"],
"title": "How to Use the Cool New Annotated Typing Feature of FastAPI",
"url": "https://lynn-kwong.medium.com/4a2fdc48ef74"
}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment