Weaponizing PostScript
In a recent pentesting assignment, there was a service which converted uploaded files to PDF/A format, to make them safer for handling. Afte...
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 14,544 posts.
In a recent pentesting assignment, there was a service which converted uploaded files to PDF/A format, to make them safer for handling. Afte...
I was recently encouraged to watch A Practical Guide to Applying Data Oriented Design (DoD) by Andrew Kelley, the creator of Zig1. Just 10 minutes into the talk, I was confronted with a skill I had never formally learned… the arithmetic behind memory layout of types. Zig is a modern, C-like programming language which…
Update: This is a re-post of an older blog post of mine. Originally it was posted on my personal blog where it has >30 comments and >20’000 views over the last years. I’m deprecating my personal blog in favor of this 200OK blog.
The tokens #t and #f are the True and False literals, respectively. The single quote mark serves to quote the following expression. The syntax ' exp is completely equivalent to (quote exp ) . The backquote character ` is called quasiquote in Scheme; it is similar to ' except that within a quasiquoted expression, the…
Mercurial 3.5 was released today (following Mercurial's time-based schedule of releasing a new version every 3 months).
I often want to program something just for fun without any expectations. But why? Well, a recent scientific paper investigated this idea of programming as play.
23114, 584, 46931, these three numbers were used to create the entire universe for Elite .
Raft is a consensus protocol for managing a replicated log across a cluster of nodes. Its key goals are: (1) maintain a consistent replicated log of state transitions, (2) tolerate node failures, and (3) ensure a single leader coordinates all changes while multiple followers replicate. Raft is designed to be…
(UPDATED: updated to the PR are now reflected in the post) Something exciting is coming. Everyone is talking about WebSockets and their older cousin EventSource / Server Sent Events (SSE). Faye and…
One of the most surprising aspects of the Nix language is that it is lazy, especially if you have never used a lazy language before. This laziness is what makes much of Nixpkgs possible, and its complexity.
It seems these days like programming with dependent types in Haskell (and its advantages) is moving slowly but steadily to the mainstream of Haskell programming. In the current state of Haskell education, dependent types are often considered topics for “advanced” Haskell users. However, I can foresee a day where the…
A while ago, I built a system-tray application in Rust to notify me of new e-mail called buzz. It was working fine, but every now and again, it would fail to connect to the mail server on boot if it started before my network connection was up. Sounds easy enough to fix, so I just added a loop around my connect (even…
I performed a brute-force attack on the password of an encrypted PDF and a brute-force attack on the key of (another) encrypted PDF, both PDFs are part of a challenge published by John August. The …
Random code snippets, projects and musings about software from Eric Kidd, a developer and occasional entrepreneur.
A blog about game engines, graphics, C++, and more.
Ethical Hacking and Cybersecurity Blog
Z80 Explorer is a Z80 netlist-level simulator capable of running Z80 machine code and also an educational tool with features that help reverse engineer and understand this chip better.
My last article had tips for for arena allocation . This next article demonstrates a technique for building bespoke hash maps that compose nicely with arena allocation. In addition, they’re fast, simple, and automatically scale to any problem that could reasonably be solved with an in-memory hash map. To avoid…
Let's dissect a PHP spam script and find out how spammers send spam messages and how they have tried to obfuscate the actual code they use.
Only dead fish go with the flow. As I promised in the last article, today we’re finally going to do a deep dive into the topic of scopes. This is what we’re going to learn today: We’re going to learn about scopes, why they are useful, and …
In part four of this series we looked at some key trade-offs involved with a distributed log implementation and discussed a few lessons learned while building NATS Streaming. In this fifth and final installment, we’ll conclude by outlining the design for a new log-based system that draws from the previous entries in…
My Rustic Ramblings
The Personal blog and musings of Chris Penner, a designer, developer and future opsimath.
In expressive languages, developers generally need to use fewer temporary variables.This means that in a typical piece of code there are fewer names defined,...
The web is amazing and amazingly complex
programming, language design, and human factors