Haikel.dev
Practical software engineering tutorials and guides.
JavaScript, Java, Linux, DevOps, React, Node.js, security, and modern web development.
Recent Guides
ICMP Explained: Ping, Traceroute, Message Types, and Security
Learn how ICMP supports ping, traceroute, errors, and network diagnostics; understand common message types, Linux commands, and safe firewall handling.
iptables dport vs sport: Which One to Use? (Fix Unknown Option)
Understand when to use --dport vs --sport in iptables, fix the "unknown option --dport" error with -p tcp/udp, and inspect port range rules with diagrams.
Network Security Components: Firewall, IDS, IPS, SIEM, and VPN
Understand the core components of network security, including firewalls, IDS, IPS, SIEM, VPNs, encryption, NAC, endpoint controls, and physical security.
JavaScript AsyncIterator and for await...of: Examples
Learn JavaScript AsyncIterator, async generators, next(), and for await...of with practical examples for paginated APIs, delayed data, and streaming values.
Copy Text to Clipboard in JavaScript: Modern API & Fallback
Copy text to clipboard with navigator.clipboard.writeText, add an accessible copy button with visual feedback, and provide fallback for HTTP and older browsers.
JavaScript Closure Inside Loops
Learn how JavaScript closures behave inside loops, why var causes repeated values, and how let, helper functions, and iteration methods solve the problem.
Browse by Topic
All Guides
147 totalEngineering
- →ICMP Explained: Ping, Traceroute, Message Types, and Security
- →iptables dport vs sport: Which One to Use? (Fix Unknown Option)
- →Network Security Components: Firewall, IDS, IPS, SIEM, and VPN
- →AES-GCM vs AES-CBC vs AES-CTR: Differences and Which to Use
- →How to Configure NGINX and Next.js
- →HTTP 1.x vs HTTP 2.x vs HTTP 3 vs gRPC: A Comparison
- →How to Save iptables Rules Permanently After Reboot
- →Top Network Protocols You Need to Know with Python Examples
- →NGINX Rate Limiting: limit_req_zone, Burst & Nodelay Explained
- →SipHash and Other Lightweight Hashing Algorithms: A Comparison
- →TEA: A Lightweight Encryption Option
- →Top 20 Git Commands with Examples
- →Podman vs Docker: Which Container Engine Should You Choose?
- →FFmpeg Tutorial: 10 Essential Commands with Code Examples
- →Nmap for Network Security Audits
- →How to Edit, Replace, or Move an iptables Rule
- →iptables Port Redirection: Forward One Port to Another
- →Send HTTP Requests in Node.js Without Using an External Library
- →Node.js REST API Implementation
- →Node.js HTTP Server Implementation from Scratch
- →HTTP 1.1 vs HTTP 2 vs HTTP 3: Key Differences & Comparison Table
- →Handling Preflight Requests in Deno
- →Web Crypto API implement ECIES like in Javascript
- →Top Asymmetric Encryption Algorithms Compared: RSA, ECC, Diffie-Hellman & NTRU
- →Implementing AES-GCM Encryption in JavaScript
- →Understanding and Implementing ECDSA in Javascript Cryptography
- →JavaScript Cryptography using RSA-OAEP
- →Advanced Iptables Firewall rules
- →Basic Iptables Firewall rules
- →What is Protocol TCP? A Comprehensive Overview
- →10 Must-Know Bash Scripting Tips and Tricks for Beginners
- →30 Bash Script Examples to Elevate Your Scripting Skills
- →Top 35 Linux Tips and Tricks
JavaScript
- →JavaScript AsyncIterator and for await...of: Examples
- →Copy Text to Clipboard in JavaScript: Modern API & Fallback
- →JavaScript ReadableStream: A Friendly Beginner
- →Exponential Backoff with Jitter for the Fetch API
- →Fetch API Abort Controller in JavaScript
- →Get URL parameters in JavaScript
- →The ways to correctly clone a JavaScript object
- →Promise.allSettled, Promise.all, and Promise.race with Fetch API
- →JavaScript Singleton Pattern: Guide with Examples
- →Sort an array of objects by property in JavaScript
- →Axios GET and POST in JavaScript: The Ultimate Guide for Developers
- →How to Convert Blob to Base64 (and Base64 to Blob) in JavaScript
- →JavaScript call() vs apply() – What’s the Difference?
- →How to Use Async Await in Array.forEach (And Why It Fails)
- →JavaScript Decorator Design Pattern: Guide with Examples
- →How to Create a GUID / UUID in JavaScript
- →How to Effectively Check if an Object is an Array in JavaScript
- →Mastering JavaScript Array Searches
- →Mastering JavaScript Bitwise Operators: A Comprehensive Guide
- →Find and Replace All Occurrences of a String in JavaScript
- →Check if a key exists in a JavaScript object
- →Methods to Insert Item into an Array at Specific Index JavaScript
- →Check if an array includes a value in JavaScript
- →Remove a Specific Element from a JavaScript Array
- →Mastering JavaScript's Binary Data Types
Snippets
- →JavaScript Closure Inside Loops
- →File Uploads in JavaScript: Guide to the Fetch API
- →JavaScript Typed Arrays: Uint8Array, Uint16Array, and Uint32Array
- →Convert a String to Boolean in JavaScript
- →How to Generate a UUID / GUID in JavaScript & Node.js (Native)
- →String to Uint8Array & Uint8Array to String in JavaScript (Fast)
Linux
- →How to Remove Environment Variables in Linux (Session & Permanent)
- →Linux User and Permission Management: Commands and Examples
- →FFmpeg Webcam Capture on Linux: Images and Video
- →Linux: schedule and automate tasks
- →Configure and Secure a Linux Server
- →Linux: Mount and Manage Storage Devices
- →How to Set Up SSH Keys for Remote Access & GitHub (Step-by-Step)
- →Linux: Add & Set Environment Variables
- →Linux: Finding files that contain specific text strings
- →Linux: String Searching with Grep, Sed, and Awk
Bash
- →All Types of Loops in Bash: A Comprehensive Guide
- →Bash Arrays by Examples: A Beginner's Guide
- →Bash For Loop Made Easy: A Step-by-Step Guide with Examples
- →Bash Functions: A Deeper Dive
- →Bash if-else Statement by Examples: A Beginner's Guide
- →Reading a file line by line in Bash
- →How to Send HTTP Requests with Bash Scripting: A Comprehensive Guide
- →Building a Bash Web Server from Scratch
Node.js
- →Node.js Child Process: spawn, exec, and fork Examples
- →Node.js Stream Error Handling: Prevent Unhandled Exceptions
- →Understanding Process in Node.js
- →Understanding Buffer in Node.js
- →Understanding Cluster in Node.js
- →Understanding Streams in Node.js
- →Node.js Event Loop Questions: Your Ultimate Guide to Asynchronous Mastery
- →Fix "Cannot Set Headers After They Are Sent" in Node.js & Express
- →Node.js Readline for Interactive Command-Line Interfaces
React
- →React 19 Hooks Guide: Examples for Every Built-in Hook
- →React Profiler Component: Find Performance Bottlenecks
- →React useMemo vs memo: Differences and Examples
- →React useReducer Hook: State Management Examples
- →React useDeferredValue Hook: Practical Examples
- →React Router v7: The Modern Navigation Framework
- →New React 19 Features
- →React useCallback Hook: Easy Guide
- →React useEffect Hook Easy Guide
- →React useRef Hook
- →Redux Toolkit: configureStore, createSlice, createAsyncThunk
- →React useActionState Hook
- →React Activity Component
- →useWindowSize Hook in React
- →useDebounce Hook in React
- →React XState Hooks: A Comprehensive Guide
- →XState React: State Machines and Statecharts
- →React Zustand State Management
- →React Jotai Tutorial: Minimalist Atomic State Management (with Examples)
- →Essential React Design Patterns for Scalable Apps
- →React useMemo Hook: A Deep Dive with Real-World Example
- →React useTransition Hook: A Deep Dive with Real-World Example
- →useSyncExternalStore Hook in React: A Comprehensive Guide
Java
- →Javalin Tutorial: Build Fast Java REST APIs (Lightweight & Modern)
- →Javalin File Upload: Simple Examples for Beginners
- →Javalin Servlets and Filters
- →What is the Difference Between `==` and `equals()` in Java?
- →HashMap vs Hashtable in Java
- →How to Avoid Checking for Nulls in Java
- →Create, Detect, and Handle Memory Leaks in Java
- →Java NullPointerException, and How Do I Fix It?
DevOps
- →How to Rename a Git Branch Locally and on Remote (3-Step Guide)
- →Essential Podman Commands: Containers, Images, and Pods
- →Top 10 Docker Commands: A Beginner's Guide
- →Git Branch: Core Concepts and Practical Code Guide
- →Configuring User Information in Git: A Developer's Guide
- →Delete a Git Branch Locally and Remotely
- →Git Fetch vs Git Pull: Key Differences & When to Use Each
- →Git Reset vs. Git Revert: A Comprehensive Guide for DevOps
- →How to Undo the Last Git Commit: Keep Changes or Discard (Safe Guide)