# Marek Majkowski

Published articles for Marek Majkowski.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Orange FTTH and IPv6 - part two

DevFeed: [Orange FTTH and IPv6 - part two](<https://devfeed.tech/articles/orange-ftth-and-ipv6-part-two-38997.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2023-04-01-orange-ftth-and-ipv6---part-two>)

Author: Marek

Published: 2023-03-31T22:00:00Z

Content type: tutorial

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [Debian](<https://devfeed.tech/topics/debian.md>)

Tags: [debian](<https://devfeed.tech/tags/debian.md>), [guide](<https://devfeed.tech/tags/guide.md>), [ipv6](<https://devfeed.tech/tags/ipv6.md>), [linux](<https://devfeed.tech/tags/linux.md>), [pppoe](<https://devfeed.tech/tags/pppoe.md>), [router](<https://devfeed.tech/tags/router.md>)

### AI overview

A follow-up guide explains how to configure a custom Linux router for Orange FTTH with both IPv6 and IPv4. It describes why using two PPPoE sessions no longer works and presents the Funbox-compatible approach using an IPv6 PPPoE session and an IPIP DS-Lite tunnel.

### Source excerpt

Orange FTTH and IPv6 - part two Three years ago I published a guide on how to configure a custom Linux router to work with Orange FTTH setup: The most important part was getting IPv6 working, since it wasn't possible with the "Funbox" router supplied by the carrier. This seem to have been fixed. In past when using "Funbox", and when setting the PPPoE username suffix to "/ipv6" to enable IPv6, the suffix was automatically dropped every ~24h, and reverted to IPv4-only.

## Diagnosing VR stutter with an eGPU on a laptop

DevFeed: [Diagnosing VR stutter with an eGPU on a laptop](<https://devfeed.tech/articles/egpu-stutter-from-hell-38996.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2022-09-05-egpu-stutter-from-hell>)

Author: Marek

Published: 2022-09-04T22:00:00Z

Content type: opinion

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [GPU](<https://devfeed.tech/topics/gpu.md>), [Nvidia](<https://devfeed.tech/topics/nvidia.md>), [pcie](<https://devfeed.tech/topics/pcie.md>), [webgpu](<https://devfeed.tech/topics/webgpu.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [debug](<https://devfeed.tech/topics/debug.md>)

Tags: [debugging](<https://devfeed.tech/tags/debugging.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [laptop](<https://devfeed.tech/tags/laptop.md>), [nvidia](<https://devfeed.tech/tags/nvidia.md>), [pcie](<https://devfeed.tech/tags/pcie.md>), [performance](<https://devfeed.tech/tags/performance.md>), [thunderbolt](<https://devfeed.tech/tags/thunderbolt.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

A laptop-based eGPU setup with an Nvidia 3080 caused severe stuttering in HTC Vive VR games despite the GPU functioning correctly. The article attributes the issue, with uncertainty, to Nvidia Optimus polling the laptop's other graphics hardware and interfering with smooth eGPU rendering.

### Source excerpt

eGPU stutter from hell I was able to put my hands on an HTC Vive VR headset. Sadly, my computers don't have a strong enough GPU for VR. Since I only have laptops I decided to secure an eGPU (external GPU) - a box with PCIe bus, connected over thunderbolt, which can house a proper big graphics card. I got Razer Core X.

## Branch predictor: How many "if"s are too many? Including x86 and M1 benchmarks!

DevFeed: [Branch predictor: How many "if"s are too many? Including x86 and M1 benchmarks!](<https://devfeed.tech/articles/branch-predictor-how-many-if-s-are-too-many-including-x86-and-m1-benchmarks-38995.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2021-05-06-branch-predictor-how-many-ifs-are-too-many-including-x86-and-m1-benchmarks>)

Author: Marek

Published: 2021-05-05T22:00:00Z

Content type: article

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [x86](<https://devfeed.tech/topics/x86.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [article](<https://devfeed.tech/tags/article.md>), [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [blog](<https://devfeed.tech/tags/blog.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [discussion](<https://devfeed.tech/tags/discussion.md>), [hacker-news](<https://devfeed.tech/tags/hacker-news.md>), [travis](<https://devfeed.tech/tags/travis.md>), [x86](<https://devfeed.tech/tags/x86.md>)

### AI overview

The article examines how many conditional branches affect branch prediction, with benchmarks covering x86 and M1 systems. It also points to discussions about BTB behavior, M1 branch-predictor interactions with the iCache prefetcher, and related commentary.

### Source excerpt

Branch predictor: How many "if"s are too many? Including x86 and M1 benchmarks! I published an article on Cloudflare blog: Notable discussions mentioning this work: - Looking at BTB behavior and size: a comment on my work from Travis Downs, followed by response from Linus Torvalds. - Discussion on M1 architecture, with fascinating take on branch predictor interactions with iCache prefetcher. - Hacker News commentary

## Orange FTTH on a custom router

DevFeed: [Orange FTTH on a custom router](<https://devfeed.tech/articles/orange-ftth-on-a-custom-router-38994.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2020-08-02-orange-ftth-on-a-custom-router>)

Author: Marek

Published: 2020-08-01T22:00:00Z

Content type: tutorial

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Network Configuration](<https://devfeed.tech/topics/network-configuration.md>), [Debian](<https://devfeed.tech/topics/debian.md>), [Network](<https://devfeed.tech/topics/network.md>), [Firewall](<https://devfeed.tech/topics/firewall.md>), [DHCP](<https://devfeed.tech/topics/dhcp.md>), [huawei](<https://devfeed.tech/topics/huawei.md>)

Tags: [debian](<https://devfeed.tech/tags/debian.md>), [dhcp](<https://devfeed.tech/tags/dhcp.md>), [firewall](<https://devfeed.tech/tags/firewall.md>), [ftth](<https://devfeed.tech/tags/ftth.md>), [huawei](<https://devfeed.tech/tags/huawei.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [internet](<https://devfeed.tech/tags/internet.md>), [iptables](<https://devfeed.tech/tags/iptables.md>), [ipv4](<https://devfeed.tech/tags/ipv4.md>), [ipv6](<https://devfeed.tech/tags/ipv6.md>), [mikrotik](<https://devfeed.tech/tags/mikrotik.md>), [network](<https://devfeed.tech/tags/network.md>), [pppoe](<https://devfeed.tech/tags/pppoe.md>), [router](<https://devfeed.tech/tags/router.md>), [server](<https://devfeed.tech/tags/server.md>), [vlan](<https://devfeed.tech/tags/vlan.md>)

### AI overview

A tutorial describing how to replace Orange's FunBox 3.0 with a custom Debian router for Orange FTTH in Poland. It covers obtaining an ONT and PPPoE credentials, configuring VLAN 35 and PPP, setting up iptables, and providing DHCP for the local network.

### Source excerpt

Orange FTTH on a custom router Here in Poland, Orange has a decent FTTH offer - less than $16 for 300Mbit down, 50Mbit up. People reversed it over the years, most impressively Pierre Kim in 2016: Recently, it has been possible to replace the router the provider gives, called "FunBox 3.0", with a custom one. There are couple of reasons for that: - My understanding it's impossible to get a stable IPv6 on FunBox 3. - FunBox is proprietary and evil.

## Why is there a "V" in SIGSEGV Segmentation Fault?

DevFeed: [Why is there a "V" in SIGSEGV Segmentation Fault?](<https://devfeed.tech/articles/why-is-there-a-v-in-sigsegv-segmentation-fault-38993.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2020-06-18-why-is-there-a-v-in-sigsegv-segmentation-fault>)

Author: Marek

Published: 2020-06-17T22:00:00Z

Content type: article

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [C](<https://devfeed.tech/topics/c.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Unix](<https://devfeed.tech/topics/unix.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [cpu](<https://devfeed.tech/topics/cpu.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [bug](<https://devfeed.tech/tags/bug.md>), [c](<https://devfeed.tech/tags/c.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [linux](<https://devfeed.tech/tags/linux.md>), [unix](<https://devfeed.tech/tags/unix.md>)

### AI overview

The article explains that the V in SIGSEGV stands for "Segmentation Violation," tracing the name from early memory-segmentation faults and the SIGSEG designation to its later adoption as SIGSEGV in Unix userspace and the kernel.

### Source excerpt

Why is there a "V" in SIGSEGV Segmentation Fault? This article is also co-published on Cloudflare blog: Another long night. I was working on my perfect, bug-free program in C, when the predictable thing happened: Oh, well... Maybe I'll be more lucky taking over the world another night. But then it struck me. My program received a SIGSEGV signal and crashed with "Segmentation Fault" message. Where does the "V" come from? Did I read it wrong? Was there a "Segmentation Vault?"?

## Addressing

DevFeed: [Addressing](<https://devfeed.tech/articles/addressing-38990.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2019-12-06-addressing>)

Author: Marek

Published: 2019-12-05T23:00:00Z

Content type: tutorial

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [Unix](<https://devfeed.tech/topics/unix.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Parameter](<https://devfeed.tech/topics/parameter.md>)

Tags: [linux](<https://devfeed.tech/tags/linux.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [socket](<https://devfeed.tech/tags/socket.md>), [unix](<https://devfeed.tech/tags/unix.md>)

### AI overview

A tutorial on socket addressing on Linux, covering AF_INET, AF_INET6, and AF_UNIX address families, socket address structures, and converting IPv4 and IPv6 addresses between text and binary forms. The supplied text is truncated before the IPv6 discussion is complete.

### Source excerpt

Addressing Articles from this series: - Creating sockets on Linux. - Addressing of AF_INET, AF_INET6 and AF_UNIX sockets. A freshly created socket isn't very useful. We have to tell it to either listen for incoming data, or connect to a remote peer. To achieve anything useful we need to perform a syscall dance, which involves either or or both. Among others, and syscalls take a socket address as a parameter. Before going into these syscalls we must discuss what exactly the address is.

## Creating sockets

DevFeed: [Creating sockets](<https://devfeed.tech/articles/creating-sockets-38989.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2019-11-06-creating-sockets>)

Author: Marek

Published: 2019-11-05T23:00:00Z

Content type: tutorial

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [networking](<https://devfeed.tech/topics/networking.md>), [API](<https://devfeed.tech/topics/api.md>), [Unix](<https://devfeed.tech/topics/unix.md>), [Internet](<https://devfeed.tech/topics/internet.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [domain](<https://devfeed.tech/tags/domain.md>), [ipv4](<https://devfeed.tech/tags/ipv4.md>), [ipv6](<https://devfeed.tech/tags/ipv6.md>), [linux](<https://devfeed.tech/tags/linux.md>), [networking](<https://devfeed.tech/tags/networking.md>), [tcp](<https://devfeed.tech/tags/tcp.md>), [udp](<https://devfeed.tech/tags/udp.md>), [unix](<https://devfeed.tech/tags/unix.md>)

### AI overview

A tutorial on creating sockets on Linux. It explains the socket syscall's domain, type, and protocol arguments, then introduces IPv4, IPv6, and Unix sockets, including when AF_UNIX is appropriate for communication between processes on the same host.

### Source excerpt

Creating sockets Articles from this series: - Creating sockets on Linux. - Addressing of AF_INET, AF_INET6 and AF_UNIX sockets. Our journey into the Linux networking API starts with the common syscall: It takes three arguments: - domain specifies an address family. Most commonly used are IPv4, IPv6 and Unix sockets - AF_INET, AF_INET6 and AF_UNIX families. Linux supports more families, notably AF_PACKET, AF_NETLINK, AF_ALG and AF_VSOCK are sometimes handy.

## TCP Puzzles 1-2

DevFeed: [TCP Puzzles 1-2](<https://devfeed.tech/articles/tcp-puzzles-1-2-38988.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2019-09-30-tcp-puzzles-1-2>)

Author: Marek

Published: 2019-09-29T22:00:00Z

Content type: tutorial

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [networking](<https://devfeed.tech/topics/networking.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [implementation](<https://devfeed.tech/tags/implementation.md>), [linux](<https://devfeed.tech/tags/linux.md>), [networking](<https://devfeed.tech/tags/networking.md>), [python](<https://devfeed.tech/tags/python.md>), [tcp](<https://devfeed.tech/tags/tcp.md>)

### AI overview

This tutorial presents two TCP puzzles based on Linux networking behavior. It examines write buffering versus POLLOUT and the effects of statement ordering on TIME-WAIT socket behavior, using small Python programs to illustrate implementation details and system-dependent outcomes.

### Source excerpt

TCP Puzzles 1-2 Recently I've been spending more time looking into Linux TCP implementation, trying to better understand some corner cases. Here are two TCP puzzles. Using obvious, almost trivial, Python snippets, we can show really important design choices made deep in the networking stack. All we need is a bit of time... and courage to go into the Linux internals! 1. Write buffer vs POLLOUT Imagine a TCP server and a client connected to it. The server has plenty of data available.

## When TCP sockets refuse to die

DevFeed: [When TCP sockets refuse to die](<https://devfeed.tech/articles/when-tcp-sockets-refuse-to-die-38987.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2019-09-20-when-tcp-sockets-refuse-to-die>)

Author: Marek

Published: 2019-09-19T22:00:00Z

Content type: tutorial

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [blog](<https://devfeed.tech/tags/blog.md>), [bug](<https://devfeed.tech/tags/bug.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [commands](<https://devfeed.tech/tags/commands.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [retries](<https://devfeed.tech/tags/retries.md>), [scripts](<https://devfeed.tech/tags/scripts.md>), [tcp](<https://devfeed.tech/tags/tcp.md>), [timeout](<https://devfeed.tech/tags/timeout.md>)

### AI overview

A technical tutorial explains when Linux TCP sockets time out and how TCP keepalives and the TCP_USER_TIMEOUT socket option interact. It discusses connection establishment, SYN retries, kernel behavior, and a possible bug observed on Linux kernel 5.2.

### Source excerpt

When TCP sockets refuse to die This article was first published on Cloudflare blog: While working on our Spectrum server, we noticed something weird: the TCP sockets which we thought should have been closed were lingering around. We realized we don't really understand when TCP sockets are supposed to time out! In our code, we wanted to make sure we don't hold connections to dead hosts. In our early code we naively thought enabling TCP keepalives would be enough... but it isn't.

## A gentle introduction to Linux Kernel fuzzing

DevFeed: [A gentle introduction to Linux Kernel fuzzing](<https://devfeed.tech/articles/a-gentle-introduction-to-linux-kernel-fuzzing-38986.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2019-07-10-a-gentle-introduction-to-linux-kernel-fuzzing>)

Author: Marek

Published: 2019-07-09T22:00:00Z

Content type: tutorial

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Fuzzing/Fuzz testing](<https://devfeed.tech/topics/fuzzing.md>), [Linux Kernel](<https://devfeed.tech/topics/linux-kernel.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [networking](<https://devfeed.tech/topics/networking.md>), [virtualization](<https://devfeed.tech/topics/virtualization.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [coverage](<https://devfeed.tech/tags/coverage.md>), [fuzzing](<https://devfeed.tech/tags/fuzzing.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [kvm](<https://devfeed.tech/tags/kvm.md>), [linux](<https://devfeed.tech/tags/linux.md>), [linux-kernel](<https://devfeed.tech/tags/linux-kernel.md>), [security](<https://devfeed.tech/tags/security.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

A tutorial on coverage-guided fuzzing of the Linux Kernel's netlink machinery. It explains how to use AFL with a custom kernel and a netlink shim inside KVM virtualization to explore kernel internals and find bugs.

### Source excerpt

A gentle introduction to Linux Kernel fuzzing This article was first published on Cloudflare blog: For some time I've wanted to play with coverage-guided fuzzing. Fuzzing is a powerful testing technique where an automated program feeds semi-random inputs to a tested program. The intention is to find such inputs that trigger bugs. Fuzzing is especially useful in finding memory corruption bugs in C or C++ programs.

## Postmortem: An Incident Caused by Resolver Code

DevFeed: [Postmortem: An Incident Caused by Resolver Code](<https://devfeed.tech/articles/today-we-mitigated-the-resolver-38977.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2018-06-01-today-we-mitigated-the-resolver>)

Author: Marek

Published: 2018-05-31T22:00:00Z

Content type: article

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [incident](<https://devfeed.tech/topics/incident.md>), [Post Mortem](<https://devfeed.tech/topics/post-mortem.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [incident](<https://devfeed.tech/tags/incident.md>), [post-mortem](<https://devfeed.tech/tags/post-mortem.md>)

### AI overview

A postmortem describes an incident caused by code the author was working on and states that the resolver was mitigated.

### Source excerpt

Today we mitigated the resolver 01 June 2018 Not a thing to be proud of, but here is a post mortem from an incident caused by the code I was working on:

## Building mmproxy with Linux TPROXY and iptables to preserve client IP addresses

DevFeed: [Building mmproxy with Linux TPROXY and iptables to preserve client IP addresses](<https://devfeed.tech/articles/mmproxy-creative-linux-routing-hack-38976.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2018-04-17-mmproxy---creative-linux-routing-hack>)

Author: Marek

Published: 2018-04-16T22:00:00Z

Content type: article

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [proxy](<https://devfeed.tech/topics/proxy.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [networking](<https://devfeed.tech/topics/networking.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>)

Tags: [client](<https://devfeed.tech/tags/client.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [iptables](<https://devfeed.tech/tags/iptables.md>), [linux](<https://devfeed.tech/tags/linux.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [proxy](<https://devfeed.tech/tags/proxy.md>), [v1](<https://devfeed.tech/tags/v1.md>)

### AI overview

This article describes building mmproxy with Linux's TPROXY iptables module: a simple Proxy Protocol v1 proxy that can preserve or locally spoof client IP addresses. It notes that the proxy is useful with Cloudflare Spectrum.

### Source excerpt

mmproxy - creative linux routing hack 17 April 2018 I've published an article on how we abused TPROXY iptables module to build , a simple Proxy Protocol v1 proxy that can "preserve" (or locally spoof) client IP addreses. It's pretty useful together with Cloudflare Spectrum:

## Using TPROXY for Spectrum product

DevFeed: [Using TPROXY for Spectrum product](<https://devfeed.tech/articles/using-tproxy-for-spectrum-product-38975.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2018-04-12-using-tproxy-for-spectrum-product>)

Author: Marek

Published: 2018-04-11T22:00:00Z

Content type: article

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [build](<https://devfeed.tech/tags/build.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [iptables](<https://devfeed.tech/tags/iptables.md>), [module](<https://devfeed.tech/tags/module.md>), [product](<https://devfeed.tech/tags/product.md>), [using](<https://devfeed.tech/tags/using.md>)

### AI overview

The article describes using the TPROXY iptables module to build Cloudflare Spectrum.

### Source excerpt

Using TPROXY for Spectrum product 12 April 2018 I've published an article on how we used TPROXY iptables module to build Cloudflare Spectrum product:

## IP Spoofing at Packet Hacking Village

DevFeed: [IP Spoofing at Packet Hacking Village](<https://devfeed.tech/articles/ip-spoofing-at-packet-hacking-village-38971.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2018-01-26-ip-spoofing-at-packet-hacking-village>)

Author: Marek

Published: 2018-01-25T23:00:00Z

Content type: article

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [spoofing](<https://devfeed.tech/topics/spoofing.md>), [Hacking](<https://devfeed.tech/topics/hacking.md>)

Tags: [2017](<https://devfeed.tech/tags/2017.md>), [hacking](<https://devfeed.tech/tags/hacking.md>), [ip](<https://devfeed.tech/tags/ip.md>), [spoofing](<https://devfeed.tech/tags/spoofing.md>), [talk](<https://devfeed.tech/tags/talk.md>)

### AI overview

A brief account of giving a talk about IP spoofing at the Packet Hacking Village in July 2017.

### Source excerpt

IP Spoofing at Packet Hacking Village 26 January 2018 Back in July 2017 I went to Vegas and gave a short talk at the Packet Hacking Village. I was talking about my favorite subject - IP Spoofing.

## 5 talks in 5 weeks

DevFeed: [5 talks in 5 weeks](<https://devfeed.tech/articles/5-talks-in-5-weeks-38969.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2017-12-22-5-talks-in-5-weeks>)

Author: Marek

Published: 2017-12-21T23:00:00Z

Content type: article

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [DDoS](<https://devfeed.tech/topics/ddos.md>), [API](<https://devfeed.tech/topics/api.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [DevOps](<https://devfeed.tech/topics/devops.md>), [reactive](<https://devfeed.tech/topics/reactive.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [ddos](<https://devfeed.tech/tags/ddos.md>), [devops](<https://devfeed.tech/tags/devops.md>), [functional](<https://devfeed.tech/tags/functional.md>), [golang](<https://devfeed.tech/tags/golang.md>), [js](<https://devfeed.tech/tags/js.md>), [meetup](<https://devfeed.tech/tags/meetup.md>), [programming](<https://devfeed.tech/tags/programming.md>), [reactive](<https://devfeed.tech/tags/reactive.md>), [sponsored](<https://devfeed.tech/tags/sponsored.md>), [sysops](<https://devfeed.tech/tags/sysops.md>), [talk](<https://devfeed.tech/tags/talk.md>)

### AI overview

The author recaps five talks given at local meetups in Warsaw, covering the Service Worker API, Cloudflare's approach to large DDoS attacks, functional reactive programming, Golang, and Cloudbleed.

### Source excerpt

5 talks in 5 weeks Over last couple weeks I gave five talks on local meetups in Warsaw. Cloudflare is running a pizza program - for most of the meetups we were able to secure Cloudflare-sponsored pizza! Most of the talks went pretty well, here are the slides.

## Perfect locality and three SystemTap scripts

DevFeed: [Perfect locality and three SystemTap scripts](<https://devfeed.tech/articles/perfect-locality-and-three-systemtap-scripts-38968.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2017-11-06-perfect-locality-and-three-systemtap-scripts>)

Author: Marek

Published: 2017-11-05T23:00:00Z

Content type: article

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Linux Kernel](<https://devfeed.tech/topics/linux-kernel.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Script](<https://devfeed.tech/topics/script.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>)

Tags: [2017](<https://devfeed.tech/tags/2017.md>), [article](<https://devfeed.tech/tags/article.md>), [blog](<https://devfeed.tech/tags/blog.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [linux](<https://devfeed.tech/tags/linux.md>), [linux-kernel](<https://devfeed.tech/tags/linux-kernel.md>), [scripts](<https://devfeed.tech/tags/scripts.md>)

### AI overview

An article announcement for a Cloudflare blog post about perfect locality and three SystemTap scripts. It describes the post as a continuation exploring the REUSEPORT feature in the Linux kernel.

### Source excerpt

Perfect locality and three SystemTap scripts 06 November 2017 I've published an article on the Cloudflare blog: This is a continuation of the previous piece where I try to understand REUSEPORT Linux kernel feature.

## Sandboxing landscape

DevFeed: [Sandboxing landscape](<https://devfeed.tech/articles/sandboxing-landscape-38962.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2017-03-28-sandboxing-landscape>)

Author: Marek

Published: 2017-03-27T22:00:00Z

Content type: article

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [virtualization](<https://devfeed.tech/topics/virtualization.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Process](<https://devfeed.tech/topics/process.md>)

Tags: [isolation](<https://devfeed.tech/tags/isolation.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [lua](<https://devfeed.tech/tags/lua.md>), [multi-tenancy](<https://devfeed.tech/tags/multi-tenancy.md>), [sandboxing](<https://devfeed.tech/tags/sandboxing.md>), [shouldn-t](<https://devfeed.tech/tags/shouldn-t.md>), [virtualization](<https://devfeed.tech/tags/virtualization.md>)

### AI overview

This article surveys four approaches to isolating untrusted third-party code: programming-language runtimes, operating-system processes, software fault isolation, and virtual machines. It discusses requirements such as multi-tenancy, scheduling, memory limits, and restricting privileged operations, then examines Lua and JavaScript as examples.

### Source excerpt

Sandboxing landscape Some time ago I started wondering - would it be possible for a CDN to run customer code on the edge servers? I read and asked around, over time I got acquainted to what is and what is not technically possible. But that didn't bring me closer to an useful answer. Fortunately exploring this subject has been enormous fun. In this blog post I'll describe my findings so far.

## Epoll's file descriptor and kernel object lifetime semantics

DevFeed: [Epoll's file descriptor and kernel object lifetime semantics](<https://devfeed.tech/articles/epoll-is-fundamentally-broken-2-2-38961.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2017-03-20-epoll-is-fundamentally-broken-22>)

Author: Marek

Published: 2017-03-19T23:00:00Z

Content type: article

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [IO](<https://devfeed.tech/topics/io.md>), [Streams](<https://devfeed.tech/topics/streams.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [implementation](<https://devfeed.tech/topics/implementation.md>)

Tags: [cleanup](<https://devfeed.tech/tags/cleanup.md>), [file](<https://devfeed.tech/tags/file.md>), [issue](<https://devfeed.tech/tags/issue.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [object](<https://devfeed.tech/tags/object.md>)

### AI overview

This article examines epoll's handling of file descriptors and underlying kernel objects. It explains that epoll subscription lifetime is tied to the kernel object rather than the file descriptor, so closing a descriptor may leave subscriptions active and allow events to be reported for a closed descriptor.

### Source excerpt

Epoll is fundamentally broken 2/2 I/O multiplexing part #4 Previous articles in this series: - The history of the Select(2) syscall - Select(2) is fundamentally broken - Epoll(2) is fundamentally broken In this post we'll discuss the second argument on why the is broken. The problem is best described in an LWN comment by Foom: And epoll certainly has a HUGE misdesign in it, that anyone who actually understood what a file descriptor is should've seen coming.

## Socket API thoughts

DevFeed: [Socket API thoughts](<https://devfeed.tech/articles/socket-api-thoughts-38960.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2017-02-23-socket-api-thoughts>)

Author: Marek

Published: 2017-02-22T23:00:00Z

Content type: opinion

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Unix](<https://devfeed.tech/topics/unix.md>), [Processes](<https://devfeed.tech/topics/processes.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [IO](<https://devfeed.tech/topics/io.md>), [Streams](<https://devfeed.tech/topics/streams.md>), [Erlang](<https://devfeed.tech/topics/erlang.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [erlang](<https://devfeed.tech/tags/erlang.md>), [go](<https://devfeed.tech/tags/go.md>), [processes](<https://devfeed.tech/tags/processes.md>), [stream](<https://devfeed.tech/tags/stream.md>), [unix](<https://devfeed.tech/tags/unix.md>)

### AI overview

The article examines whether Unix processes, file descriptors, and select() were designed around CSP-style communication. It concludes that they were not, while discussing composability limits and buffering-related problems in Unix process and I/O models.

### Source excerpt

Socket API thoughts I/O multiplexing, commentary Some time ago I wrote about a history of syscall. While that piece was a necessary introduction to the followup post, it triggered interesting discussions. It took me a while but I finally realized what is the core question I asked myself. Here it is: Were Unix processes intended to be CSP-style processes? Are file descriptors a CSP-derived "channels"? Is "select()" equivalent to ALT statement? The direct answer is "no". CSP is younger than Unix.

## Epoll's design limitations in multithreaded and load-balancing scenarios

DevFeed: [Epoll's design limitations in multithreaded and load-balancing scenarios](<https://devfeed.tech/articles/epoll-is-fundamentally-broken-1-2-38959.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2017-02-20-epoll-is-fundamentally-broken-12>)

Author: Marek

Published: 2017-02-19T23:00:00Z

Content type: opinion

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [IO](<https://devfeed.tech/topics/io.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [Load Balancing](<https://devfeed.tech/topics/load-balancing.md>)

Tags: [epoll](<https://devfeed.tech/tags/epoll.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [linux](<https://devfeed.tech/tags/linux.md>), [load-balancing](<https://devfeed.tech/tags/load-balancing.md>), [threading](<https://devfeed.tech/tags/threading.md>), [thundering-herd](<https://devfeed.tech/tags/thundering-herd.md>)

### AI overview

This article examines design limitations in Linux epoll, focusing on event delivery when file descriptors are shared across worker threads and on epoll's association with underlying kernel objects rather than file descriptors. It recommends defensive programming and avoiding several sharing, forking, and load-balancing patterns.

### Source excerpt

Epoll is fundamentally broken 1/2 I/O multiplexing part #3 In previous articles we talked about: This time we'll focus on Linux's successor - the I/O multiplexing syscall. Epoll is relatively young. It was created by Davide Libenzi in 2002. For comparison: Windows did IOCP in 1994 and FreeBSD's kqueue was introduced in July 2000. Unfortunately, even though epoll is the youngest in the advanced IO multiplexing family, it's the worse in the bunch.

## Why the select I/O multiplexing model is considered broken by design

DevFeed: [Why the select I/O multiplexing model is considered broken by design](<https://devfeed.tech/articles/select-is-fundamentally-broken-38958.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2017-01-06-select-is-fundamentally-broken>)

Author: Marek

Published: 2017-01-05T23:00:00Z

Content type: opinion

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [IO](<https://devfeed.tech/topics/io.md>), [TCP/IP](<https://devfeed.tech/topics/tcp-ip.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [file](<https://devfeed.tech/topics/file.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [async](<https://devfeed.tech/tags/async.md>), [blog](<https://devfeed.tech/tags/blog.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [tcp-ip](<https://devfeed.tech/tags/tcp-ip.md>)

### AI overview

This article examines alternatives for I/O multiplexing and argues that the select model is broken by design because its semantics prevent effective kernel-side optimizations. It also discusses related technologies that inherit those semantics.

### Source excerpt

Select is fundamentally broken I/O multiplexing part #2 In a previous blog post we discussed a brief history of the syscall. The article concludes that some I/O multiplexing was necessary to do console emulation, games and non-trivial TCP/IP applications. The BSD designers chose the multiplexing model and other Unixes followed. But is the only multiplexing model? A good explanation can be found in the old revision of "The Design and Implementation of the FreeBSD Operating System" book.

## A brief history of select(2)

DevFeed: [A brief history of select(2)](<https://devfeed.tech/articles/a-brief-history-of-select-2-38956.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2016-11-01-a-brief-history-of-select2>)

Author: Marek

Published: 2016-10-31T23:00:00Z

Content type: article

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Unix](<https://devfeed.tech/topics/unix.md>), [IO](<https://devfeed.tech/topics/io.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Processes](<https://devfeed.tech/topics/processes.md>)

Tags: [block](<https://devfeed.tech/tags/block.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [file](<https://devfeed.tech/tags/file.md>), [history](<https://devfeed.tech/tags/history.md>), [linux](<https://devfeed.tech/tags/linux.md>), [process](<https://devfeed.tech/tags/process.md>), [unix](<https://devfeed.tech/tags/unix.md>)

### AI overview

This article begins a historical discussion of select(2) I/O multiplexing in Linux. It places file descriptor multiplexing in the context of Unix design, time-sharing, batch processing, process blocking, and early inter-process communication mechanisms such as pipes.

### Source excerpt

A brief history of select(2) I/O multiplexing part #1 Recently I've been thinking about the multiplexing in Linux, namely the syscall. I was curious if is better or worse than the or . I was wondering if there was a benefit in batching calls. But let's step back for a while, before we start a serious discussion we need to get some context. Most importantly - is file descriptor multiplexing an aberration or a gentle extension to the Unix design philosophy's?

## Strange Loop - IP Spoofing

DevFeed: [Strange Loop - IP Spoofing](<https://devfeed.tech/articles/strange-loop-ip-spoofing-38954.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2016-09-20-strange-loop---ip-spoofing>)

Author: Marek

Published: 2016-09-19T22:00:00Z

Content type: article

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [DDoS](<https://devfeed.tech/topics/ddos.md>), [spoofing](<https://devfeed.tech/topics/spoofing.md>), [Security](<https://devfeed.tech/topics/security.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [Internet](<https://devfeed.tech/topics/internet.md>), [proxy](<https://devfeed.tech/topics/proxy.md>), [centralization](<https://devfeed.tech/topics/centralization.md>)

Tags: [centralization](<https://devfeed.tech/tags/centralization.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [ddos](<https://devfeed.tech/tags/ddos.md>), [internet](<https://devfeed.tech/tags/internet.md>), [ip](<https://devfeed.tech/tags/ip.md>), [recording](<https://devfeed.tech/tags/recording.md>), [reverse-proxy](<https://devfeed.tech/tags/reverse-proxy.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [security](<https://devfeed.tech/tags/security.md>), [servers](<https://devfeed.tech/tags/servers.md>), [spoofing](<https://devfeed.tech/tags/spoofing.md>), [talk](<https://devfeed.tech/tags/talk.md>)

### AI overview

A transcript of a Strange Loop talk explaining large-scale DDoS attacks, how IP spoofing enables serious attacks and complicates tracing, and how mitigating them contributes to internet centralization.

### Source excerpt

Strange Loop - IP Spoofing I recently gave a talk at the Strange Loop conference in St Louis. The recording and slides are available, but for easier consumption here's a transcript. Good morning! This is the DDoS talk. It's always hard to speak about DDoS. Many people mean very different things by it. Some say "DDoS" when their Ruby app can't handle more than five concurrent users. But slow Ruby servers are not the subject of this talk.

## Web archeology - itblog

DevFeed: [Web archeology - itblog](<https://devfeed.tech/articles/web-archeology-itblog-38949.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2016-03-11-web-archeology---itblog>)

Author: Marek

Published: 2016-03-10T23:00:00Z

Content type: opinion

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Web](<https://devfeed.tech/topics/web.md>), [Website](<https://devfeed.tech/topics/website.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [blog](<https://devfeed.tech/tags/blog.md>), [posts](<https://devfeed.tech/tags/posts.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

The author revisits blog posts they published on the now-defunct Polish social network Grono.net, including posts about shortest-path search, 32-bit versus 64-bit systems, and memoization.

### Source excerpt

Web archeology - itblog 11 March 2016 Long time ago I spent some time working at now defunct Polish social network - Grono.net. I published a couple of blog posts there. Allow me to performa a bit of web archeology: - Jak działa wyszukiwanie najkrótszych scieżek - 32 czy 64 bity - Memoize cichy przyjaciel programisty which coincidentally was the last article published on that blog.

[Next page](<https://devfeed.tech/sources/marek-majkowski.md?cursor=WyIyMDE2LTAzLTEwVDIzOjAwOjAwKzAwOjAwIiwgIjYyOWE3MGYzLTNlMmItNGMzMS04YmM2LTg1ZmVmMDUyZTQ3NiJd>)