Best of Hussein Nasser2024

  1. 1
    Article
    Avatar of hnasrHussein Nasser·2y

    What makes a good software engineer

    The post outlines the stages of becoming a good software engineer, starting from understanding a technology to appreciating its pros and cons after trying to improve upon it. It highlights the importance of recognizing both the strengths and limitations of any technology.

  2. 2
    Article
    Avatar of hnasrHussein Nasser·2y

    Backend and Frontend Timeouts

    Timeouts play a critical role in both backend and frontend programming by breaking the wait when a party relies on an operation to complete. Various types of timeouts include connection timeout, request read timeout, wait timeout, processing timeout, and response timeout. Each type ensures that resources are used efficiently and systems are protected from performance issues like slow operations or DOS attacks. Managing these timeouts is essential for effective communication between clients and servers, especially in complex scenarios involving proxies.

  3. 3
    Article
    Avatar of hnasrHussein Nasser·2y

    The Art of database systems

    Understanding database systems revolves around key principles: data must be read from the disk to memory and then to CPU cache to be useful, with each step significantly faster than the last. Disk space is limited, memory is scarce, and CPU caches are even scarcer, so it's crucial to fully utilize chunks of data at each stage. These insights stress the importance of efficient SQL queries and database configurations to maximize performance.

  4. 4
    Article
    Avatar of hnasrHussein Nasser·2y

    Your SQL is Slow

    Understanding SQL query performance and the importance of execution plans.

  5. 5
    Article
    Avatar of hnasrHussein Nasser·2y

    Fundamentals of Operating Systems

    Learn about the fundamentals of operating systems and how the OS kernel works to build efficient software.

  6. 6
    Article
    Avatar of hnasrHussein Nasser·2y

    The Internals of a Primary Index

    A primary key uniquely identifies a row and is typically indexed for fast access. Primary indexes are often clustered, meaning they store full rows. Secondary indexes only store row identifiers, requiring an additional lookup of the primary key to retrieve full rows. Postgres is an exception as it does not use a real primary clustered index; all indexes, including primary, point to the row identifier or tuple id. The tuple id in Postgres is unique and allows direct row access with minimal I/O.

  7. 7
    Article
    Avatar of hnasrHussein Nasser·1y

    When can Kernel can slow down the backend?

    Network latency in applications is often attributed to user app logic, but sometimes the kernel plays a role. For instance, TCP configurations, such as enabling TCP_NODELAY, can improve network latency. This is because the kernel buffers data to send full-size TCP segments for efficiency, which may delay small data transmissions. Adjusting settings like TCP_NODELAY can reduce these delays and enhance performance for both backend and frontend applications.