Abusing C to implement JSON parsing with struct methods
Json parsing in C using function pointers attached to a struct
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 4,390 posts.
Json parsing in C using function pointers attached to a struct
I have recently released an open source tool called sotrace . It maps out the .so dependencies for a binary or library, and presents th...
I am a fond Clojure user, and love to use it for both server-side projects and small command-line tools. I love its expressivity and concision, and I like th...
I want to make this clear in the first sentence because its biggest chance that people will read it – this article is entirely based on work done by Christian Hofstede-Kuhn (Larvitz) that wro…
The wheel group is, perhaps, not widely used today, or is seen as “archaic” and irrelevant. Nothing could be further from the truth. The wheel group is a group which limits the number o…
A common myth about USB keyboards is that they can only support 6-key rollover, and not report more than 6 keys being pressed at a time. In fact, this is wholly untrue; the USB HID device class can support full N-key rollover (NKRO). While keyboards which purport to support USB NKRO are now common, some of them have…
I recently started exploring link-time optimisation (LTO), which I used to think was just a single boolean choice in the compilation and linking workflow, and perhaps it was like that a while ago… I’ve learned that these days, there are many different dimensions of LTO across compilers and linkers today and more…
When was the last time you played a computer game? I really like one of Benjamin Franklin quotes – “We do not stop playing because we grow old, we grow old because we stop playing.̶…
Introduction The case for open addressing SIMD-accelerated lookup boost::unordered_flat_map data structure Rehashing Hash post-mixing Sta...
Both GCC and Clang support the -fsanitize=undefined flag which instruments the generated code to detect places where the program wanders into parts of the C language specification which are either undefined or implementation defined. Many of these are also common programming errors. It would be great if there were…
The latest version of the Intel manual has a couple of new instructions for non-volatile storage, like SSDs . What's that about?
I wrote a couple of years ago about the troubles I had finding a good libc for embedded systems , and for the last year or so I've been using something I called 'newlib-nano', which was newlib with the stdio from avrlibc bolted on. That library has worked pretty well, and required very little work to ship.
My little corner of the web for sharing wherever my interests take me.
Programming note: I will be taking a several week break from writing paper reviews for the summer. When we come back, I will be finishing off the papers from Usenix ATC and OSDI , then moving on to the great upcoming conferences (my non-exhaustive list is here ). As always, feel free to reach out on Twitter with…
Linux capabilities can be difficult to understand so let's go through them quickly
This post guides through decompiling Hyper-V Manager to rebuild it from source, aiming to assess its value for potential open-sourcing. It explores manual and automated decompilation processes, including troubleshooting and enhancing the tool, advocating for community-led improvements to this widely-used but neglected…
Low level software usually has lots of .cc or .rs files. Even lower-level software, like your cryptography library, probably has .S containing assembly, my least favorite language for code review.
Writing Super-Fast Matrix Multiplication with HIP, RGP, and ISA
Paul Khuong's personal blog. Some Lisp, some optimisation, mathematical or computer.
This post was made possible through hard work and determination. Do not feel frustrated if this stuff does not click immediately and remember, the source of truth will always be the source code. For us, our source code is raw assembly. That said it’s important you understand these techniques in detail because when…
(New to this series? Consider starting from part 1) At the end of the last post, DbgRs could finally set breakpoints. That was the last really critical feature needed for controlling execution of a program. Now that it can stop on an arbitrary function or code location, the next step is to find more information about…
I’m writing this so you don’t slap your forehead like I almost did when I decided to run swap in production to absorb memory spikes.
Almost five years ago I wrote a brief history about .net on non-Windows platforms . I stumbled over that article now and it resurfaced traumatic memories of navigating .net development on Linux and MacOS.
This blog post is the third of a series of posts dealing with the results of the Debian systemd survey . I intend to give a presentation at DebConf 2013, too, so you could either read my posts, or watch the talk, or both :-).