<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/sources/medium_js/best-of/2023/05" -->

---
title: Best Medium posts — May 2023 | daily.dev
description: The most upvoted Medium posts from May 2023, curated by the daily.dev community.
canonical: https://daily.dev/sources/medium_js/best-of/2023/05
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:url: https://daily.dev/sources/medium_js/best-of/2023/05
og:type: website
og:site_name: daily.dev
og:title: Best Medium posts — May 2023 | daily.dev
og:description: The most upvoted Medium posts from May 2023, curated by the daily.dev community.
og:image: https://media.daily.dev/image/upload/s--VAY5ToZt--/f_auto/v1724209435/public/daily.dev%20-%20open%20graph
---

# Best of Medium — May 2023

1. 1  
[](https://daily.dev/posts/doing-much-better-than-your-env-file-hu3hba0iz "Doing much better than your .env file")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Doing much better than your .env file  
Tony: I argue again for why we should reduce the practice of storing all environment variables in a.env file and move to a more sophisticated approach for managing them in local development. He says this article is intended for software development teams and not security and devops teams that already have this figured out.  
269  
34
2. 2  
[](https://daily.dev/posts/must-know-javascript-api-page-visibility-api-ybjonpmai "Must Know JavaScript API — Page Visibility API")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Must Know JavaScript API — Page Visibility API  
The Page Visibility API is a browser API that provides a way to detect if a page is visible. This article will introduce what the Page Visible API is, how it works, compatibility, and usage scenarios. In front-end development, we often need to control the use of resources and improve the performance and responsiveness of a page.  
63
3. 3  
[](https://daily.dev/posts/memoization-in-javascript-vdqnujmr1 "Memoization in JavaScript")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Memoization in JavaScript  
Memoization in JavaScript is a powerful optimization technique that speeds up the execution of functions by caching their results. It involves storing the results of expensive function calls and returning the cached result when the same inputs occur again. This article explores the concepts, benefits, and different implementation approaches of memoization in JavaScript.  
57  
2
4. 4  
[](https://daily.dev/posts/callback-refs-in-react-pas1x7rmm "Callback Refs in React")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Callback Refs in React  
Callback Refs are a way to set a ref to a function instead of directly to a DOM element. This function is called with the component instance or DOM element as its argument when the component is mounted or updated. Callback refs are particularly useful when you need to access properties or methods that are not directly available through props.  
41
5. 5  
[](https://daily.dev/posts/single-rust-binary-with-vite-svelte-wpclp2vc2 "Single Rust Binary with Vite+Svelte")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Single Rust Binary with Vite+Svelte  
Single Rust Binary with Vite+Svelte can be easily packaged in a container image using docker or podman. In production you will probably want to specify a specific origin, but for our sample this will do for now. Our Rust web server is now ready to host the static web files from the directory.  
40
6. 6  
[](https://daily.dev/posts/free-tech-programs-that-can-help-you-land-roles-bizy68dob "Free tech programs that can help you land roles")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Free tech programs that can help you land roles  
Free tech programs that can help you land roles are now providing free training and programs to encourage more people to pursue careers in cybersecurity. Grace: I want to emphasize that I am not against paid programs and materials, and I encourage individuals to take advantage of them if they can.  
37  
4
7. 7  
[](https://daily.dev/posts/es6-imports-vs-commonjs-imports-tfyg5mm0v "ES6 imports vs CommonJS imports")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
ES6 imports vs CommonJS imports  
ES6 imports vs CommonJS imports in Javascript vs. CommonJS Imports for Beginners and Intermediates Rahul Mishra on Unsplash. The structure and organization of code have undergone significant changes since the introduction of ES6\. In this blog post, we will explore several differences between the two and examine their operational principles.  
35  
1
8. 8  
[](https://daily.dev/posts/daily-leetcode-problems-problem-24-swap-nodes-in-pairs-j5lr3h1yq "Daily LeetCode Problems: Problem 24. Swap Nodes in Pairs")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Daily LeetCode Problems: Problem 24\. Swap Nodes in Pairs  
Daily LeetCode Problems: Problem 24\. Swap Nodes in Pairs: A Clever Approach to Rearrange Linked List. In this article, we’ll explore the problem statement, discuss an intuitive approach to solving it, and provide a step-by-step breakdown of the solution.  
32  
1
9. 9  
[](https://daily.dev/posts/making-a-chrome-extension-with-svelte-d5uvketzm "Making a Chrome Extension with Svelte")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Making a Chrome Extension with Svelte  
SvelteKit is a tool that generates websites from Notion databases. Svelte has been an excellent choice for building this Chrome Extension. It’s recommend to clone the project from the GitHub repo that can be tested directly in Chrome.  
30  
2
10. 10  
[](https://daily.dev/posts/create-a-telegram-bot-in-seconds-the-ultimate-step-by-step-guide-q5kyszkmq "Create a Telegram Bot in Seconds: The Ultimate Step-by-Step Guide")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Create a Telegram Bot in Seconds: The Ultimate Step-by-Step Guide  
Create a Telegram Bot in Seconds: The Ultimate Step-by-Step Guide. The full template includes a built-in database, administration system, and commands. When you run the bot using for the first time, the database will be automatically created. All commands must be exported as below.  
27
11. 11  
[](https://daily.dev/posts/new-google-bard-or-chatgpt-ultimate-comparison-dhtn4gzzf "💪 New Google Bard or ChatGPT: Ultimate Comparison")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
💪 New Google Bard or ChatGPT: Ultimate Comparison  
Google Bard and ChatGPT use different language models to power their chatbots. Google Bard is based on PaLM 2, which stands for ‘Pretrained Language Model 2’ GPT-4 is OpenAI’s most advanced system, which produces safer and more useful responses.  
27  
5
12. 12  
[](https://daily.dev/posts/must-know-javascript-api-beacon-api-hp99earwr "Must Know JavaScript API — Beacon API")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Must Know JavaScript API — Beacon API  
Beacon API is a new browser API provided by HTML5 that can be used to send data asynchronously in the background of the browser without affecting the loading and performance of the current page. With the Beacon API, developers can send data to the server when pages are unloaded or closed, thus enabling some monitoring and logging features.  
25
13. 13  
[](https://daily.dev/posts/the-future-of-web-3-0-development-thirdweb-sdk-iic8tegum "🔮 The Future of Web 3.0 Development: Thirdweb SDK")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
🔮 The Future of Web 3.0 Development: Thirdweb SDK  
Thirdweb SDK is a collection of SDKs that enable web developers to integrate web 3.0 technologies into their applications with ease. Thirdweb SDK supports JavaScript, React, React Native, Python, Go, Unity and C#. It also covers various platforms such as native, mobile, console, browser and VR2.  
25  
2
14. 14  
[](https://daily.dev/posts/html-tags-uncovered-prefetch-vs-preload-jxiznqvht "HTML Tags Uncovered: Prefetch vs. Preload")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
HTML Tags Uncovered: Prefetch vs. Preload  
Prefetch vs. Preload is a technique used to reduce the perceived load time of a web page by fetching resources in advance before they are needed. It enables browsers to download and cache external resources, such as CSS files, JavaScript files, images, or fonts, ahead of time.  
20  
1
15. 15  
[](https://daily.dev/posts/neural-networks-mathematics-from-beginner-to-pro-c2kpjwzwe "Neural Networks Mathematics: From Beginner to Pro")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Neural Networks Mathematics: From Beginner to Pro  
A blog simplifying artificial neural network math and explaining backpropagation and stochastic gradient descent in neural networks.  
19  
6
16. 16  
[](https://daily.dev/posts/build-your-own-face-recognition-system-with-python-in-minutes-flihv1cr2 "Build your own face recognition system with python in minutes")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Build your own face recognition system with python in minutes  
Build your own face recognition system with python in minutes. The concept is known as one shot learning. It is different from traditional image recognition models in a sense, that you are only required to have one picture of a person whom you want to recognize, and you don't need to ‘train the model’ to recognize.  
19
17. 17  
[](https://daily.dev/posts/generators-in-javascript-explained-gnanpepqa "Generators in JavaScript Explained")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Generators in JavaScript Explained  
A generator function is a special kind of function that can be paused and resumed during execution. This means that a generator can yield multiple values over time, rather than just returning a single value. Generators can also be used to implement lazy evaluation, where values are only computed when they are needed.  
19
18. 18  
[](https://daily.dev/posts/learn-go-programming-fast-and-easy-basics-for-beginners-o9pprswvk "Learn Go Programming: Fast and Easy Basics for Beginners")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Learn Go Programming: Fast and Easy Basics for Beginners  
Go programming is a programming language known for its simplicity, speed, and concurrency. This post provides an easy and enjoyable way to learn Go programming. It covers topics such as hello world, variables, functions, packages, control structures, arrays, slices, maps, structs, pointers, and more. If you're looking to learn Go programming, this post is a great starting point.  
19
19. 19  
[](https://daily.dev/posts/useref-vs-usestate-in-react-tb1pzohgn "useRef vs. useState in React")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
useRef vs. useState in React  
Understanding the differences between useRef and useState hooks in React and knowing when to use each hook is crucial for writing effective and optimized React components. useRef is primarily used to access and manipulate the DOM or store mutable values without triggering re-renders. useState is used for managing component state, triggering re-renders when the state updates.  
18
20. 20  
[](https://daily.dev/posts/daily-leetcode-problems-problem-934-shortest-bridge-pj9z0hqz9 "Daily LeetCode Problems: Problem 934. Shortest Bridge")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Daily LeetCode Problems: Problem 934\. Shortest Bridge  
LeetCode Problem 934 challenges us to connect two islands in a binary matrix by flipping the minimum number of 0’s. We will explore the problem statement, discuss the DFS+BFS approach, provide pseudocode, analyze the time and space complexity and present a comprehensive solution.  
17
21. 21  
[](https://daily.dev/posts/how-to-use-functional-programming-to-create-better-code-ahtgotg7h "How to Use Functional Programming to Create Better Code")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
How to Use Functional Programming to Create Better Code  
Learn how to leverage functional programming principles to create safer, more readable, and less buggy code. Discover the benefits of using pure functions, immutable data structures, recursion, and higher-order functions.  
16
22. 22  
[](https://daily.dev/posts/best-of-level-up-coding-may-2023--87uhrfunt "Best of Level Up Coding (May 2023)")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Best of Level Up Coding (May 2023)  
In this edition, we explore amazing success stories of programmers who turned a website into a $1,650,000,000 product in two years. We also discuss the most sought-after skills in AI jobs and system design concepts to help you ace your next interview.  
16  
1
23. 23  
[](https://daily.dev/posts/the-difference-between-indexof-and-findindex-in-javascript-zzp4lkh6q "The Difference Between indexOf and findIndex in JavaScript")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
The Difference Between indexOf and findIndex in JavaScript  
The Difference Between indexOf and findIndex in JavaScript provides two methods that are commonly used for searching elements in arrays or strings. In this detailed explanation, we will explore these differences and provide examples to illustrate their usage. For arrays, the method is a built-in function available for both arrays and strings in JavaScript.  
14
24. 24  
[](https://daily.dev/posts/the-2023-angular-developer-roadmap-zero-to-hero-uxalrmqkd "The 2023 Angular Developer Roadmap | Zero to Hero")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
The 2023 Angular Developer Roadmap | Zero to Hero  
The 2023 Angular Developer Roadmap is a comprehensive roadmap that outlines the essential steps and resources to help you master Angular and start building impressive applications with confidence. The key to success lies in continuous learning, practice and the application of best practices as you build real-world projects.  
14
25. 25  
[](https://daily.dev/posts/javascript-operator-part-1--wyyfjecyy "Javascript Operator(Part-1)")  
Article  
![Avatar of medium_js](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/medium)Medium · 3y  
Javascript Operator(Part-1)  
Javascript Operator(Part-1) What is an Operator? Let us take a simple expression 4 + 5 is equal to 9\. Here 4 and 5 are called operands and ‘+’ is called the operator.  
13  
1

[See all Medium archives](/sources/medium%5Fjs/best-of)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://daily.dev/sources/medium_js/best-of/2023/05#page","url":"https://daily.dev/sources/medium_js/best-of/2023/05","name":"Best Medium Posts — May 2023","description":"The most upvoted Medium posts from May 2023, curated by the daily.dev community.","isPartOf":{"@type":"WebSite","url":"https://daily.dev"}},{"@type":"ItemList","@id":"https://daily.dev/sources/medium_js/best-of/2023/05#items","numberOfItems":25,"itemListElement":[{"@type":"ListItem","position":1,"url":"https://daily.dev/posts/doing-much-better-than-your-env-file-hu3hba0iz","name":"Doing much better than your .env file"},{"@type":"ListItem","position":2,"url":"https://daily.dev/posts/must-know-javascript-api-page-visibility-api-ybjonpmai","name":"Must Know JavaScript API — Page Visibility API"},{"@type":"ListItem","position":3,"url":"https://daily.dev/posts/memoization-in-javascript-vdqnujmr1","name":"Memoization in JavaScript"},{"@type":"ListItem","position":4,"url":"https://daily.dev/posts/callback-refs-in-react-pas1x7rmm","name":"Callback Refs in React"},{"@type":"ListItem","position":5,"url":"https://daily.dev/posts/single-rust-binary-with-vite-svelte-wpclp2vc2","name":"Single Rust Binary with Vite+Svelte"},{"@type":"ListItem","position":6,"url":"https://daily.dev/posts/free-tech-programs-that-can-help-you-land-roles-bizy68dob","name":"Free tech programs that can help you land roles"},{"@type":"ListItem","position":7,"url":"https://daily.dev/posts/es6-imports-vs-commonjs-imports-tfyg5mm0v","name":"ES6 imports vs CommonJS imports"},{"@type":"ListItem","position":8,"url":"https://daily.dev/posts/daily-leetcode-problems-problem-24-swap-nodes-in-pairs-j5lr3h1yq","name":"Daily LeetCode Problems: Problem 24. Swap Nodes in Pairs"},{"@type":"ListItem","position":9,"url":"https://daily.dev/posts/making-a-chrome-extension-with-svelte-d5uvketzm","name":"Making a Chrome Extension with Svelte"},{"@type":"ListItem","position":10,"url":"https://daily.dev/posts/create-a-telegram-bot-in-seconds-the-ultimate-step-by-step-guide-q5kyszkmq","name":"Create a Telegram Bot in Seconds: The Ultimate Step-by-Step Guide"},{"@type":"ListItem","position":11,"url":"https://daily.dev/posts/new-google-bard-or-chatgpt-ultimate-comparison-dhtn4gzzf","name":"💪 New Google Bard or ChatGPT: Ultimate Comparison"},{"@type":"ListItem","position":12,"url":"https://daily.dev/posts/must-know-javascript-api-beacon-api-hp99earwr","name":"Must Know JavaScript API — Beacon API"},{"@type":"ListItem","position":13,"url":"https://daily.dev/posts/the-future-of-web-3-0-development-thirdweb-sdk-iic8tegum","name":"🔮 The Future of Web 3.0 Development: Thirdweb SDK"},{"@type":"ListItem","position":14,"url":"https://daily.dev/posts/html-tags-uncovered-prefetch-vs-preload-jxiznqvht","name":"HTML Tags Uncovered: Prefetch vs. Preload"},{"@type":"ListItem","position":15,"url":"https://daily.dev/posts/neural-networks-mathematics-from-beginner-to-pro-c2kpjwzwe","name":"Neural Networks Mathematics: From Beginner to Pro"},{"@type":"ListItem","position":16,"url":"https://daily.dev/posts/build-your-own-face-recognition-system-with-python-in-minutes-flihv1cr2","name":"Build your own face recognition system with python in minutes"},{"@type":"ListItem","position":17,"url":"https://daily.dev/posts/generators-in-javascript-explained-gnanpepqa","name":"Generators in JavaScript Explained"},{"@type":"ListItem","position":18,"url":"https://daily.dev/posts/learn-go-programming-fast-and-easy-basics-for-beginners-o9pprswvk","name":"Learn Go Programming: Fast and Easy Basics for Beginners"},{"@type":"ListItem","position":19,"url":"https://daily.dev/posts/useref-vs-usestate-in-react-tb1pzohgn","name":"useRef vs. useState in React"},{"@type":"ListItem","position":20,"url":"https://daily.dev/posts/daily-leetcode-problems-problem-934-shortest-bridge-pj9z0hqz9","name":"Daily LeetCode Problems: Problem 934. Shortest Bridge"},{"@type":"ListItem","position":21,"url":"https://daily.dev/posts/how-to-use-functional-programming-to-create-better-code-ahtgotg7h","name":"How to Use Functional Programming to Create Better Code"},{"@type":"ListItem","position":22,"url":"https://daily.dev/posts/best-of-level-up-coding-may-2023--87uhrfunt","name":"Best of Level Up Coding (May 2023)"},{"@type":"ListItem","position":23,"url":"https://daily.dev/posts/the-difference-between-indexof-and-findindex-in-javascript-zzp4lkh6q","name":"The Difference Between indexOf and findIndex in JavaScript"},{"@type":"ListItem","position":24,"url":"https://daily.dev/posts/the-2023-angular-developer-roadmap-zero-to-hero-uxalrmqkd","name":"The 2023 Angular Developer Roadmap | Zero to Hero"},{"@type":"ListItem","position":25,"url":"https://daily.dev/posts/javascript-operator-part-1--wyyfjecyy","name":"Javascript Operator(Part-1)"}]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Sources","item":"https://daily.dev/sources"},{"@type":"ListItem","position":3,"name":"Medium","item":"https://daily.dev/sources/medium_js"},{"@type":"ListItem","position":4,"name":"Best of","item":"https://daily.dev/sources/medium_js/best-of"},{"@type":"ListItem","position":5,"name":"May 2023"}]}]}
```

