Programming Leftovers
-
Trail of Bits ☛ “Unstripping” binaries: Restoring debugging information in GDB with Pwndbg
By Jason An GDB loses significant functionality when debugging binaries that lack debugging symbols (also known as “stripped binaries”). Function and variable names become meaningless addresses; setting breakpoints requires tracking down relevant function addresses from an external source; and printing out structured values involves staring at a memory dump trying to manually discern field boundaries.
-
Andy Wingo: on taking advantage of ragged stops
Many years ago I read one of those Cliff Click “here’s what I learned” articles in which he was giving advice about garbage collector design, and one of the recommendations was that at a GC pause, running mutator threads should cooperate with the collector by identifying roots from their own stacks. You can read a similar assertion in their VEE2005 paper, The Pauseless GC Algorithm,
-
Qt ☛ Qt Contributors Summit 2024 - A Closer Look at QDoc and the Documentation Infrastructure Team
At the Qt Contributors Summit 2024, in a session together with Nicholas Bennett, I had the opportunity to present the latest developments in QDoc and give an overview of the Documentation Infrastructure team's work. Our team, though small, plays a vital role in maintaining and improving the tools and infrastructure behind Qt's comprehensive documentation. In this post, I’ll walk you through some key points from my part of the presentation, focusing on our recent developments and future plans for QDoc.
-
Python
-
Otávio C ☛ SwiftLint
As the name suggests, SwiftLint is a tool used by the Swift community to enforce certain rules, styles, and conventions. And although I use SwiftLint in my own projects, its real value shows when used in a shared codebase. Code reviews, for instance, are expensive, requiring a lot of back-and-forth between the engineer who submitted the code for review and the reviewers. Quite frequently, the suggestions from reviewers are related to coding style and conventions, wasting everyone's time.
-
[Repeat] Rlang ☛ Why I’m Switching to Polars
I recently decided to switch from Pandas to Polars for my Python projects that use dataframes. I came to this decision while taking a workshop on Polars last week: I found its syntax to be so intuitive that I couldn’t justify continuing to try to get “better” at Pandas, despite Pandas being the more established library. The fact that Polars is faster (it’s main selling point) was, surprisingly, not a factor in my decision.
A similar transformation recently happened in R. For most of the history of R there was only one way to interact with dataframes: Base R. Then the Tidyverse came along, and offered both performance improvements and easier syntax. Eventually the Tidyverse became the primary way that many people interact with dataframes. I believe that the Tidyverse’s easier syntax is what led to its widespread adoption, and I think that something similar is likely to happen with Polars.
-
Paweł Grzybek ☛ Lesson learned — dataset keys are camel-cased
This quick post tells the story of how I learned that dataset keys are camel-cased. Unfortunately, it is a little rant about implementations that want to provide convenience by extending the standard but make things more confusing.
-
Stephen Kell ☛ Rambles around computer science
Just for fun, here is the briefest way I've found to make a one-file C program self-rebuilding. Note that it only works given an env that implements the -S option. That includes the env in GNU Coreutils 8.30 or above, and (so I'm told) FreeBSD's. So regard it as a total hack not for serious use! Of course for a more portable version you can use #!/bin/sh and the self-extracting shell script trick, at a cost of embedding more lines of shell script.
-
Tim Bray ☛ 0 dependencies!
Zero, you say? · In recent months I keep seeing these eruptions of geek angst about the fulminating masses of dependencies squirming under the surface of just about any software anyone uses for anything. The most recent, and what precipitated this, was Mike Perham’s Kill Your Dependencies.
It’s not just that dependencies are a fertile field for CVEs (*cough* xz *cough*) and tech debt, they’re also an enemy of predictable performance.
Also, they’re unavoidable. When you take a dependency, often you’re standing on the shoulders of giants. (Unfortunately, sometimes you’re standing in the shoes of clowns.) Software is accretive and it’s a good thing that that’s OK because it’s also inevitable.
-
Naman Goel ☛ Swift is a more convenient Rust
You’re probably feeling like you just read the same paragraphs twice. This is no accident. Swift is extremely similar to Rust and has most of the same feature-set. But there is a very big difference is perspective. If you consider the default memory model, this will start to make a lot of sense.
-
-
Shell/Bash/Zsh/Ksh
-
Étienne Pflieger ☛ Parse zsh history file in ruby
As I was trying to build a customized history browser for zsh, I quickly felt on a weird issue when trying to parse it in ruby.
-
-
Java
-
Konstantin Tutsch ☛ How To Compile a Java Program with Multiple Source Files | Konstantin Tutsch
This blog post is just another note to my future self. This time, it is about compiling (and running) a Java application (with multiple source files) from only the command line.
-
-
Education
-
Rlang ☛ R-Ladies Bariloche in Argentina: Fostering a Different Approach to Leadership
Lina Moreno, founder and organizer of the R-Ladies Bariloche chapter in Argentina, recently shared her journey with the R Consortium. A biologist focusing on evolutionary ecology, she discussed her experience building a local R community, the challenges of maintaining engagement post-pandemic, and her efforts to foster discussions on leadership and gender equity within academia. Through her work, she aims to create an inclusive space for women in data science and strengthen the R community in Bariloche.
-