<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/sources/freecodecamp/best-of/2026/06" -->

---
title: Best freeCodeCamp posts — June 2026 | daily.dev
description: The most upvoted freeCodeCamp posts from June 2026, curated by the daily.dev community.
canonical: https://daily.dev/sources/freecodecamp/best-of/2026/06
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:url: https://daily.dev/sources/freecodecamp/best-of/2026/06
og:type: website
og:site_name: daily.dev
og:title: Best freeCodeCamp posts — June 2026 | daily.dev
og:description: The most upvoted freeCodeCamp posts from June 2026, 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 freeCodeCamp — June 2026

1. 1  
[](https://daily.dev/posts/why-computers-can-t-count-money-r5ynusgo8 "Why Computers Can’t Count Money")  
Video  
![Avatar of freecodecamp](https://media.daily.dev/image/upload/t_logo,f_auto/v1628412854/logos/freecodecamp)freeCodeCamp · 13w  
Why Computers Can’t Count Money  
Floating-point arithmetic causes computers to store decimal numbers like 0.1 and 0.2 as binary approximations, meaning 0.1 + 0.2 doesn't equal exactly 0.3\. In early 2000s financial systems, these tiny rounding errors accumulated across millions of transactions, causing balance drift and even exploitation by users who triggered specific transaction sequences to generate money from nothing. The fix adopted by the industry was to store currency as integers (e.g., cents instead of dollars), eliminating decimal representation entirely and preventing rounding errors.  
137  
15
2. 2  
[](https://daily.dev/posts/database-version-control-with-liquibase-and-spring-boot-lvhv9bulp "Database Version Control with Liquibase and Spring Boot")  
Article  
![Avatar of freecodecamp](https://media.daily.dev/image/upload/t_logo,f_auto/v1628412854/logos/freecodecamp)freeCodeCamp · 14w  
Database Version Control with Liquibase and Spring Boot  
Schema drift — where database state diverges across environments — is a common pain point in team-based development. Liquibase solves this by treating database changes as versioned code that travels with the application. Integrated with Spring Boot, Liquibase intercepts startup, acquires a lock, checks a cryptographic changelog history table, and applies only new migrations before the web server accepts traffic. The tutorial walks through building an Employee Management API schema from scratch: creating tables, adding columns, foreign keys, seed data, and rollbacks using XML changeSets. Key concepts covered include the DATABASECHANGELOG and DATABASECHANGELOGLOCK tables, the immutability rule for executed changeSets, contexts and labels for environment-specific migrations, and the roll-forward strategy preferred over rollbacks in production. Common beginner mistakes (mega changeSets, manual DB tweaks, ordering errors) and a comparison with Flyway and manual SQL scripts are also included.  
55  
5
3. 3  
[](https://daily.dev/posts/docker-full-course-2026-6xjky3eds "Docker Full Course 2026")  
Video  
![Avatar of freecodecamp](https://media.daily.dev/image/upload/t_logo,f_auto/v1628412854/logos/freecodecamp)freeCodeCamp · 15w  
Docker Full Course 2026  
A comprehensive beginner-to-job-ready Docker course covering containerization fundamentals, Docker architecture, Dockerfiles, images, Docker Hub, networking, volumes, Docker Compose, and Docker Swarm. The course explains the evolution from physical servers to virtual machines to containers, highlighting Docker's advantages in reproducibility, dependency management, portability, and version control. Labs are conducted on AWS free-tier Linux VMs to simulate real-world environments. A paid full version with additional labs, capstone projects, and community access is available on dolphined.com.  
36  
1
4. 4  
[](https://daily.dev/posts/how-to-build-a-browser-based-pdf-crop-tool-using-javascript-g3xyckmya "How to Build a Browser-Based PDF Crop Tool Using JavaScript")  
Article  
![Avatar of freecodecamp](https://media.daily.dev/image/upload/t_logo,f_auto/v1628412854/logos/freecodecamp)freeCodeCamp · 13w  
How to Build a Browser-Based PDF Crop Tool Using JavaScript  
A step-by-step guide to building a browser-based PDF crop tool using JavaScript and the pdf-lib library. Covers uploading PDFs, rendering page previews, defining crop areas visually, applying crop coordinates to selected pages, generating the cropped PDF, and downloading the result — all without a backend server. Includes code snippets for reading crop coordinates, supporting predefined page ratios (e.g., A4), selecting page ranges, validating inputs, and common mistakes to avoid.  
15  
2
5. 5  
[](https://daily.dev/posts/how-to-deploy-a-spring-boot-app-with-mysql-on-amazon-eks-trl285quv "How to Deploy a Spring Boot App with MySQL on Amazon EKS")  
Article  
![Avatar of freecodecamp](https://media.daily.dev/image/upload/t_logo,f_auto/v1628412854/logos/freecodecamp)freeCodeCamp · 15w  
How to Deploy a Spring Boot App with MySQL on Amazon EKS  
A step-by-step guide to deploying a Spring Boot currency exchange app with MySQL on Amazon EKS. Covers the full workflow: creating a VPC with public/private subnets, provisioning an RDS MySQL instance, setting up SSH tunneling for local DB access, building and Dockerizing the Spring Boot app, pushing the image to ECR, creating an EKS cluster with eksctl, installing the AWS Load Balancer Controller via Helm, and deploying Kubernetes manifests using a Helm chart with secrets management. Includes troubleshooting tips and cleanup instructions.  
15  
1
6. 6  
[](https://daily.dev/posts/how-to-build-responsive-designs-and-scroll-effects-with-css-container-queries-xw53ucqmc "How to Build Responsive Designs and Scroll Effects with CSS Container Queries")  
Article  
![Avatar of freecodecamp](https://media.daily.dev/image/upload/t_logo,f_auto/v1628412854/logos/freecodecamp)freeCodeCamp · 15w  
How to Build Responsive Designs and Scroll Effects with CSS Container Queries  
Container queries offer an alternative to media queries by applying styles based on a parent element's size rather than the viewport. This guide covers how to set up container queries using \`container-type: inline-size\`, compares them to media queries, and introduces the newer \`scroll-state\` container type. Practical examples include showing a table of contents sidebar when the page is scrolled and adding a box-shadow to a sticky navbar when it becomes stuck at the top of the screen. Browser support for container queries is at 95%, though scroll-state support is around 71% and not yet available in Safari or Firefox.  
10  
1
7. 7  
[](https://daily.dev/posts/command-line-basics-for-beginners---full-course-uzvrd85oa "Command Line Basics for Beginners - Full Course")  
Video  
![Avatar of freecodecamp](https://media.daily.dev/image/upload/t_logo,f_auto/v1628412854/logos/freecodecamp)freeCodeCamp · 11w  
Command Line Basics for Beginners - Full Course  
A beginner-friendly full course on command line basics covering terminal navigation, file and directory management, and basic I/O operations. Topics include pwd, ls, cd, touch, rm, mkdir, rmdir, echo, cat, redirection operators, and the dot-dot syntax for relative paths. The course uses a fun geography game project as a hands-on learning context, with practical challenges after each concept.  
16  
1
8. 8  
[](https://daily.dev/posts/how-to-avoid-overusing-usecallback-and-usememo-in-react-sjjyd2g8d "How to Avoid Overusing useCallback and useMemo in React")  
Article  
![Avatar of freecodecamp](https://media.daily.dev/image/upload/t_logo,f_auto/v1628412854/logos/freecodecamp)freeCodeCamp · 13w  
How to Avoid Overusing useCallback and useMemo in React  
Wrapping every function in useCallback and every computed value in useMemo is a common React anti-pattern that adds memory overhead and dependency comparison costs without meaningful gains. The better approach is to move state and logic closer to the components that actually use them, reducing unnecessary re-renders structurally. A practical refactor of a Next.js search page demonstrates how to push product fetching, filter drawer state, search debouncing, and filter chip logic into their respective child components, shrinking the parent significantly. The article also covers fixing infinite re-render loops caused by unstable object references — using primitives in dependency arrays, defining objects outside components, or storing them in state — rather than reaching for useMemo as a band-aid. useCallback and useMemo are still appropriate when stabilizing references for React.memo children or passing callbacks into effects, but only after profiling confirms a real performance problem.  
11
9. 9  
[](https://daily.dev/posts/how-to-build-secure-by-default-node-js-apis-kgzyotifm "How to Build Secure-by-Default Node.js APIs")  
Article  
![Avatar of freecodecamp](https://media.daily.dev/image/upload/t_logo,f_auto/v1628412854/logos/freecodecamp)freeCodeCamp · 12w  
How to Build Secure-by-Default Node.js APIs  
A practical guide to building secure-by-default Node.js HTTP APIs without any dependencies. Covers six core guardrails: request body size limits (counting bytes as they stream), request timeouts using Node's built-in server settings and AbortController, safe JSON parsing with a reviver that blocks prototype pollution via \_\_proto\_\_/constructor/prototype keys, security response headers (CSP, HSTS, X-Content-Type-Options, etc.), timing-safe secret comparison using crypto.timingSafeEqual on SHA-256 hashes, and strict input validation with mass-assignment prevention. Also explains CORS correctly — it's a browser feature, not a server firewall — and covers structured error handling with request IDs to avoid leaking internals. The article concludes with a philosophy argument: safe defaults beat checklists because humans forget under pressure.  
10
10. 10  
[](https://daily.dev/posts/how-to-self-host-an-s3-compatible-object-store-with-minio-on-your-staging-server-and-save-hundreds--3jmwqntdc "How to Self‑Host an S3‑Compatible Object Store with MinIO on Your Staging Server (and Save Hundreds of Dollars a Month)")  
Article  
![Avatar of freecodecamp](https://media.daily.dev/image/upload/t_logo,f_auto/v1628412854/logos/freecodecamp)freeCodeCamp · 15w  
How to Self‑Host an S3‑Compatible Object Store with MinIO on Your Staging Server (and Save Hundreds of Dollars a Month)  
A step-by-step guide to running MinIO (an S3-compatible object store) on a staging VPS using Docker Compose, with Traefik handling HTTPS via Let's Encrypt. Covers DNS setup, bucket creation, least-privilege IAM users, presigned PUT/GET URLs using AWS SDK v3, CORS configuration, lifecycle rules for auto-deleting old test files, and Prometheus monitoring. The core idea is to keep production on managed storage (AWS S3, Cloudflare R2, Hetzner) while routing all staging uploads to a self-hosted MinIO instance — switching environments requires only changing four environment variables.  
10  
1

[See all freeCodeCamp archives](/sources/freecodecamp/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/freecodecamp/best-of/2026/06#page","url":"https://daily.dev/sources/freecodecamp/best-of/2026/06","name":"Best freeCodeCamp Posts — June 2026","description":"The most upvoted freeCodeCamp posts from June 2026, curated by the daily.dev community.","isPartOf":{"@type":"WebSite","url":"https://daily.dev"}},{"@type":"ItemList","@id":"https://daily.dev/sources/freecodecamp/best-of/2026/06#items","numberOfItems":10,"itemListElement":[{"@type":"ListItem","position":1,"url":"https://daily.dev/posts/why-computers-can-t-count-money-r5ynusgo8","name":"Why Computers Can’t Count Money"},{"@type":"ListItem","position":2,"url":"https://daily.dev/posts/database-version-control-with-liquibase-and-spring-boot-lvhv9bulp","name":"Database Version Control with Liquibase and Spring Boot"},{"@type":"ListItem","position":3,"url":"https://daily.dev/posts/docker-full-course-2026-6xjky3eds","name":"Docker Full Course 2026"},{"@type":"ListItem","position":4,"url":"https://daily.dev/posts/how-to-build-a-browser-based-pdf-crop-tool-using-javascript-g3xyckmya","name":"How to Build a Browser-Based PDF Crop Tool Using JavaScript"},{"@type":"ListItem","position":5,"url":"https://daily.dev/posts/how-to-deploy-a-spring-boot-app-with-mysql-on-amazon-eks-trl285quv","name":"How to Deploy a Spring Boot App with MySQL on Amazon EKS"},{"@type":"ListItem","position":6,"url":"https://daily.dev/posts/how-to-build-responsive-designs-and-scroll-effects-with-css-container-queries-xw53ucqmc","name":"How to Build Responsive Designs and Scroll Effects with CSS Container Queries"},{"@type":"ListItem","position":7,"url":"https://daily.dev/posts/command-line-basics-for-beginners---full-course-uzvrd85oa","name":"Command Line Basics for Beginners - Full Course"},{"@type":"ListItem","position":8,"url":"https://daily.dev/posts/how-to-avoid-overusing-usecallback-and-usememo-in-react-sjjyd2g8d","name":"How to Avoid Overusing useCallback and useMemo in React"},{"@type":"ListItem","position":9,"url":"https://daily.dev/posts/how-to-build-secure-by-default-node-js-apis-kgzyotifm","name":"How to Build Secure-by-Default Node.js APIs"},{"@type":"ListItem","position":10,"url":"https://daily.dev/posts/how-to-self-host-an-s3-compatible-object-store-with-minio-on-your-staging-server-and-save-hundreds--3jmwqntdc","name":"How to Self‑Host an S3‑Compatible Object Store with MinIO on Your Staging Server (and Save Hundreds of Dollars a Month)"}]},{"@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":"freeCodeCamp","item":"https://daily.dev/sources/freecodecamp"},{"@type":"ListItem","position":4,"name":"Best of","item":"https://daily.dev/sources/freecodecamp/best-of"},{"@type":"ListItem","position":5,"name":"June 2026"}]}]}
```

