Menu Close

Blog

QUIC vs. TCP+TLS – and why QUIC is not the next big thing

QUIC focus on handshake optimization (very important!) but fails to truly revisit transport protocols at their essence (the transport!). Why is this important? Because traditional transport techniques have been defined in a wired-users world. That world is long gone, with unreliable and unpredictable wireless links dominating user experience. Are there other options? Yes: erasure coding, instead of ARQ.

CDNs: From the caching revolution to the new wireless challenges

Content Delivery Networks (CDNs) first appeared in the 90s, deploying the infrastructure that enabled caching. They are the ones responsible for placing the replicas of the most frequently accessed content near the end-users (at the “edge” of the network), through a network of edge servers. We could think that it solved all our problems, but there are still a few issues that cannot be solved by caching-based solutions.

Should an early-stage tech startup worry about Software QA?

Software Quality Assurance (SQA) is often seen as a way of preventing bugs or defects in manufactured products. It is basically the process of verifying whether a product meets the required specifications and customer expectations. When it comes to software, it is important to underline that Quality Assurance (QA) is not only about functional testing. Quality is more than that.

SOLID Networking: The Open / Closed Principle

Think about a client that uses some plugin or API that is not your latest version to communicate with your servers. Any feature changes that you introduced in your latest version should not break backward compatibility, so the client can still communicate with the server. The Open / Closed principle (OCP) is all about this, how you should develop modules for which you can easily extend logic.

Programming: Make merge time a happy time

Many times, we don’t know if the project is going to be successful, if it will generate a new product or simply if it will be a new feature in one of our existing solutions. So it seems rather heavy to enforce this new-born child to inherit a large portion of our code infrastructure (not to mention it could skew the actual development of the project). Our game plan, when we start something fresh, is to have minimal dependencies from our codebase.