Best of Atomic Spin — 2024
- 1
- 2
Atomic Spin·2y
How I Take Smart Daily Notes as a Developer
The author shares their journey in establishing a daily note-taking practice as a developer working remotely. Initially started for accountability, this habit grew into a comprehensive documentation system. The post discusses the evolution of tools used, from Evernote to Obsidian, and details the structure of daily notes. Key sections include tasks, logs, daily stand-up updates, pre-composed communications, and takeaways. This practice offers clarity on work progress, helps in drafting communications, and aids in meeting preparations.
- 3
Atomic Spin·2y
5 Tailwind CSS Anti-Patterns to Avoid
Tailwind CSS has been a game-changer for developers, but there are anti-patterns to avoid when working with it. Avoid relying solely on the built-in color palette, under-utilize theme customization, and use a component-based framework. Additionally, avoid using the `@apply` directive and using Tailwind in domain-level components.
- 4
Atomic Spin·2y
Reviewing Code: A New Developer's Guide
New developers often find code reviews daunting, but understanding how to write and review pull requests can significantly improve their abilities and confidence. Key steps include ensuring code quality, providing detailed testing instructions, effectively running and testing colleagues' code, and delivering constructive feedback in a considerate manner. Emphasizing a team-focused approach, this guide shares best practices for contributing meaningfully to code reviews and fostering professional growth.
- 5
Atomic Spin·2y
Is Go Programming Language Worth Using on Your Next Project?
Go, also known as Golang, offers a C-like syntax but with its unique take, such as reading declarations left to right and a garbage collector to ease memory management. Though it lacks features like exceptions (using 'panics' instead) and traditional classes, it utilizes structs and interfaces. Go supports concurrency through lightweight goroutines and channels for communication, making it highly efficient. Although not flashy, its simple syntax and efficient performance make it dependable and relatively easy to learn, especially for those familiar with other languages.
- 6
Atomic Spin·2y
4 Tips for Writing More Testable Code
Learn how to make your code more testable by choosing specific input types, avoiding object mutations, keeping complex logic out of the database, and creating new modules or services when needed. These practices not only facilitate easier testing but also improve overall code quality and maintainability.
- 7
Atomic Spin·2y
From Zero to Unraid: The Perfect Home Server OS
Unraid is a versatile home server OS that simplifies the setup and management of Docker containers, virtual machines, and storage arrays. It offers extensive options for power users and is ideal for various home server scenarios, from media streaming to gaming. Unraid is easy to start with minimal hardware requirements and supports secure remote access through solutions like Cloudflared and Tailscale.
- 8
Atomic Spin·1y
Effortlessly Create Diagrams Using ChatGPT, Mermaid, and Excalidraw
Creating diagrams in software development can be made easier and more efficient by using ChatGPT, Mermaid, and Excalidraw. ChatGPT can convert plain language descriptions into Mermaid code for diagrams, Mermaid allows text-based diagram creation, and Excalidraw offers tools for final refinement and collaboration. This workflow saves time and enhances productivity in visual communication.
- 9
Atomic Spin·2y
Optimize EF Core Database Query Performance
In a project where PDFs were migrated from a Blob Storage container to a SQL Server database, the web app's performance dropped significantly. To address this, several strategies were used to optimize EF Core query performance: using AsSplitQuery to avoid data duplication, employing projections and DTOs for read-only data to retrieve only necessary columns, and creating indexes for frequently queried non-primary key fields. These optimizations led to a reduction in response times and overall improved performance.
- 10
Atomic Spin·2y
How to Use C4 Diagrams in Systems Architecture
C4 diagrams provide a standardized approach to software architecture diagramming, focusing on different levels of abstraction: Context, Containers, Components, and Code. They enhance communication and align teams by using consistent conventions, avoiding varied interpretations often seen with generic boxes and arrows. Best practices include focusing on high-level diagrams and avoiding micromanagement with detailed Code diagrams. Tools like Mermaid and PlantUML are integrating C4 support, making them more accessible for developers.
- 11
- 12
Atomic Spin·2y
Will Server Actions and Components Replace Route Handlers in NextJS?
NextJS 13 introduces server components and server actions, enabling execution directly on the node server without API endpoints. Server components streamline data fetching for component renders, while server actions cater to data mutations. However, server actions are limited to POST requests, can't manually set response headers, and are inaccessible externally. Despite these advancements, route handlers remain essential, especially for client-side data fetching.
- 13
Atomic Spin·2y
3 Reasons I Love CSS and You Should Too
CSS often sparks mixed reactions among developers, ranging from indifference to enthusiasm. This post explores three key reasons to love CSS: its ability to beautify web pages, the quick feedback loop it offers during development, and its logical structure when properly understood. By investing time to learn CSS, developers can create visually compelling and user-friendly web designs efficiently.
- 14
- 15
Atomic Spin·2y
4 Tips for Testing with Playwright
The post provides four valuable tips for improving end-to-end testing with Playwright in a TypeScript/Svelte project. The tips include enabling retries for failing tests to handle flakiness, replacing the deprecated .type method with .fill or .pressSequentially, using waitForTimeout as a last-resort option, and organizing tests using *describe* blocks for better troubleshooting. An additional bonus tip includes how to group and run tests with specific tags.
- 16
Atomic Spin·2y
Module Augmentation is a Hidden Gem in TypeScript
Module augmentation and interface merging in TypeScript are powerful techniques that allow developers to extend and modify existing modules without altering their source code. These features enable type-safe access to feature flags in micro frontend projects, making it easier to manage and customize type definitions based on specific application needs.
- 17
Atomic Spin·2y
Next.js 15: Unveiling New Horizons in Web Development
Next.js 15 brings transformative features to enhance efficiency, flexibility, and power in web development. Updates include revamped caching mechanisms, Partial Pre-Rendering (PPR), seamless integration with React 19, new API and enhancements, and improved error handling.
- 18
- 19
Atomic Spin·2y
Tips for Using React Testing Library to Write Unit Tests
Unit testing ensures code functions as expected. Test-driven development (TDD) at Atomic Object involves writing tests based on code requirements first. This post offers tips for using React Testing Library efficiently, such as choosing the right query method (getBy, findBy, queryBy), avoiding multiple assertions in a waitFor, and using screen instead of destructuring functions from render. Also, using an ESLint plugin can help avoid common pitfalls.
- 20
Atomic Spin·2y
My Typescript to C# Cheatsheet
The post presents a cheat sheet for developers transitioning from TypeScript to C#. It provides mappings of commonly-used TypeScript methods to their C# equivalents, especially focusing on array methods from TypeScript to C#'s LINQ. Additionally, it covers async operations with JavaScript Promises and C#'s Task API, and discusses handling null and optional values in both languages. The post concludes with additional notes on C# features that are relevant to TypeScript developers.
- 21
Atomic Spin·2y
3 Things Not to Do When Trying to Land Your First Tech Job
The period between graduating and securing a first tech job can be stressful and competitive. To improve chances, keep learning new technologies, emphasize soft skills like communication and problem-solving, and avoid discouraging horror stories online. Focus on growth and self-improvement to set yourself up for success.
- 22
Atomic Spin·1y
LINQ Expressions: LINQuistics of C#
LINQ expressions in C# enhance coding efficiency by simplifying complex SQL queries and allowing powerful data manipulation. They offer a concise and readable way to retrieve and sort data, applicable both within SQL contexts and with general collections in C#. Examples include accessing specific messages from databases, sorting unique IDs from templates, and creating mock data for testing. LINQ helps in making code more efficient and easier to manage.
- 23
Atomic Spin·2y
Take Ownership: Leading When You Aren't the Leader
Learn how to exhibit leadership qualities even when you are not the designated leader. Strategies include understanding your team members' personalities and strengths, reading the room to create positive changes, and knowing when to listen rather than speak. Taking initiative can make a significant impact on your environment and team dynamics.
- 24
Atomic Spin·2y
Renew Your Energy to Avoid Burnout
Burnout is a common issue that affects many people, leading to a lack of focus, irritability, isolation, and chronic fatigue. In America, with limited PTO and a culture that glorifies overworking, managing burnout often requires more than just time off. Incorporating energy-giving activities into daily life, such as meditation, exercise, and staying in touch with friends, can help. By identifying and scheduling these activities, individuals can renew their energy, improve productivity, and enhance overall well-being.
- 25
Atomic Spin·1y
Payload CMS 3.0 – The Good, the Great, and the Challenges
Payload CMS 3.0 offers a robust content management solution, featuring seamless integration with Next.js 15 and React Server Components, granular access control, and a customizable admin UI. Despite some challenges with complex relationships and deployment workflows, the flexibility and powerful plugin ecosystem make it a compelling choice for web applications, especially in healthcare settings.