Programming Leftovers
-
Fuzzing ping(8) … and finding a 24 year old bug.
Read the rest of the article here. It is quite a story, with lessons to be considered by anyone working on code that's been around a few years or decades.
-
Fuzzing ping(8) … and finding a 24 year old bug
ping(8) is ancient:
* Author -
* Mike Muuss
* U. S. Army Ballistic Research Laboratory
* December, 1983What we know today as ping(8) started to become recognizable in 1986, for example see this csrg commit.
FreeBSD identified a stack overflow in the pr_pack() function and I expected a lot of similarity between the BSDs. This stuff did not change a lot since the csrg days.
-
A Regex Primer
Regular expressions are one of the most useful tool to extract information from raw data. Developers, sysadmins, data scientists and even editors can benefit from learning this powerful language. In this guide we will try to learn regex through practical examples.
-
Hanukkah of Data
Hanukkah of Data is a set of short data challenges released over 8 days of Hanukkah in 2022. The same fictional dataset is used for all puzzles. Explore this dataset with the tools of your choice to figure out the answers light the hannukah candles.
-
Building an Asynchronous, Internet-Optional Instant Messaging System | The Changelog
I loaded up this title with buzzwords. The basic idea is that IM systems shouldn’t have to only use the Internet. Why not let them be carried across LoRa radios, USB sticks, local Wifi networks, and yes, the Internet? I’ll first discuss how, and then why.
-
A 10-minute guide to the Linux applications binary interface
ABI stands for Applications Binary Interface. One way to understand the concept of an ABI is to consider what it is not. Applications Programming Interfaces (APIs) are more familiar to many developers. Generally, the headers and documentation of libraries are considered to be their API, as are standards documents like those for HTML5, for example. Programs that call into libraries or exchange string-formatted data must comply with the conventions described in the API or expect unwanted results.
-
A debugging manifesto
When you run into a bug, the natural instinct is to try to fix it as fast as possible. And of course, sometimes that’s what you have to do – if the bug is causing a huge production incident, you have to mitigate it quickly before diving into figuring out the root cause.
But in my day to day debugging, I find that it’s generally more effective (and faster!) to leave the bug in place, figure out exactly what’s gone wrong, and then fix it after I’ve understood what happened.
Trying to fix it or add workarounds without fully understanding what happened usually ends up just leaving me more confused.
-
Day 9: Something old, something borrowed, something new, something stashed - Raku Advent Calendar
Santa, having a little time off earlier this year, was looking at all of the modules that the Raku elves had made over the years, now over 2000 of them! But then he noticed something: not all of the modules appear to come from the same ecosystem? So what’s going on here, he asked one of the Raku core elves, Lizzybel. “It’s complicated”, she said. And continued:
-
Resolving Long Standing Issues with Vulkan Windowing System Integration (WSI)
The recently released VK_EXT_surface_maintenance1 and VK_EXT_swapchain_maintenance1 extensions resolve a number of longstanding issues with Vulkan's WSI extensions. These extensions will be ratified as KHR.
Most importantly, it is now possible for applications to know when resources associated with a present operation can be destroyed, e.g. the semaphores provided in VkPresentInfoKHR::pWaitSemaphores. This is done by providing a fence in VkSwapchainPresentFenceInfoEXT that is chained to VkPresentInfoKHR. Once the fence is signaled, the application can destroy said semaphores. Additionally, with the outstanding present operations processed according to these fences, the application is able to safely destroy swapchains (retired or otherwise).