Learn

Build durable
engineering
understanding

Practical tutorials and deep explanations grounded in reproducible environments, exact versions, and observable results.

Start learning your way

Choose your path

Get StartedNew here? Start from the basics.By TechnologyExplore topics grouped by technology.By Skill LevelBeginner to advanced progression.By Use CaseLearn through practical engineering work.Deep DivesIn-depth explanations of complex topics.What's NewLatest tutorials and updated content.

Learn by technology

Explore engineering domains

Software Development101 guidesLinux64 guidesLinux Kernel24 guidesWordpress14 guidesAndroid9 guidesDeveloper Tools9 guides

Learning resources

Supporting knowledge

Install Chrome on Ubuntu—and Know Who Updates ItguideWho Is Really Logged In to This Linux Machine?guideMake Room in Windows Without Deleting What MattersguideLet the Linux tree Command Explain a DirectoryguideResume Large File Transfers over Unstable SSHguideLaunch a Secure Amazon EC2 Instance Step by Stepguide

Structured tutorials

Understand one concept at a time

Existing library

Continue exploring

Yocto Embedded Linux

Fix Yocto “Installed but Not Shipped” QA Errors

This Yocto QA failure is a packaging mismatch: `do_install` placed an artifact under `${D}`, but no output package claimed it. Trace the reported path, package it intentionally or remove it, then inspect the generated package rather than hiding the warning.

Read guide
Errors & Failures

Fix curl/curl.h Missing on Ubuntu C Builds

The `curl` command is not the libcurl development kit. Current Ubuntu builds normally need `libcurl4-openssl-dev`, which supplies headers and build metadata. Use pkg-config or CMake’s CURL target so transitive link flags and non-default installation paths remain correct.

Read guide
Errors & Failures

Fix openssl/ssl.h Missing on Ubuntu Builds

The OpenSSL command and runtime library are not enough to compile C/C++ code. Ubuntu puts headers, unversioned linker files, and pkg-config metadata in `libssl-dev`. Install it for the correct architecture, then let pkg-config or CMake supply paths instead of hard-coding `/usr/include`.

Read guide
Android Framework

How Android System Properties Work Across Partitions

Android system properties are a system-wide string key/value mechanism, but they are not an unrestricted global preferences store. Reads use shared property areas; writes are validated by init’s property service and SELinux policy. Modern cross-partition contracts should use generated typed Sysprop APIs.

Read guide
Security Testing

Use Splint for C Analysis—and Know When to Move On

Splint can still expose useful C mistakes through annotations and strict checking, but its last upstream release is from 2007. Use it for legacy compatibility or learning—not as the only security control—and pair it with current compilers, path-sensitive analyzers, sanitizers, tests, and human review.

Read guide
Google AdSense

Add AdSense Auto Ads to AMP and WordPress Safely

AMP pages require AMP-specific AdSense code. Load the amp-auto-ads component once in the document head and place the publisher element immediately after the opening body tag—then validate the generated AMP page, consent flow, ads.txt, and real performance rather than editing theme files blindly.

Read guide
Search Engine Optimisation ( SEO )

Canonical URLs: Choose One Version Without Hiding Content

A canonical URL is the representative address search engines select for duplicate or very similar pages. Your canonical annotation is a strong preference—not an instruction—so redirects, internal links, sitemaps, hreflang, indexability, and page content must tell the same story.

Read guide
Android Build System

Build an Android AAR Library That Is Ready to Share

Creating an Android library module is the easy click. Making its AAR safe for another app requires a deliberate API, resource and manifest hygiene, consumer shrinker rules, compatibility metadata, tests, and a distribution path that preserves dependencies.

Read guide

Engineering weekly

Useful technical knowledge, not inbox noise.

Receive verified fixes, references, labs, and tools. Confirm by email; unsubscribe any time.