-
Cache-Oblivious Algorithms and Data Structures - Erik Demaine (One of the earliest papers in cache oblivious data structures and algorithms that introduces the cache oblivious model in detail and examines static and dynamic cache oblivious data structures built between 2000-2003)
-
Cache Oblivious B-Trees - Bender, Demaine, Farch-Colton (This paper presents two dynamic search trees attaining near-optimal performance on any hierarchical memory. One of the fundamental papers in the field where both search trees discussed match the optimal search bound of Θ(1+log (B+1)N) memory transfers)
-
Cache Oblivious Search Trees via Binary Trees of Small Height - Brodal, Fagerberg, Jacob (The data structure discussed in this paper works on the version of [2] but avoids the use o
package main | |
import ( | |
"expvar" | |
"fmt" | |
"log/slog" | |
"net/http" | |
"os" | |
"time" |
{ | |
description = "A very basic flake"; | |
inputs = { | |
ugit-src = { | |
url = "github:Bhupesh-V/ugit"; | |
flake = false; | |
}; | |
flake-utils = { | |
url = "github:numtide/flake-utils"; |
FROM alpine:3.18 as base | |
ENV ESSENTIAL="tar sh" | |
ENV DEPS="ugit git fzf tput nl cut bash sed awk tr env xargs" | |
RUN apk add --no-cache \ | |
bash \ | |
coreutils \ | |
git \ | |
ncurses \ | |
ncurses-terminfo \ |
Writing this post in response to the WeekendDevPuzzle of 2022-01-15. This thread has a bunch of submissions, and it's insightful to go over how we often think about debuggers. I'll be linking this post to this twitter thread, which may also contain some follow up twitter follow ups later.
Let's start with a simple piece of code. This is the program we'll be debugging. As you can see, it's a fairly simple piece of code. We will be setting a breakpoint on the crashtest
function, crashing the debugger and seeing what happens.
Let's start with running this program (we've compiled using gcc -o testdebugcrash testdebugcrash.c
). We'll be running this on Linux for now (the importance of this will be understood later).
 SELECT * FROM count_cte; | |
-- factorial | |
WITH RECURSIVE fact_cte AS ( |
from .social_media_post import SocialMediaPost | |
from .social_media_post_publisher import SocialMediaPostPublisher | |
# This is used by 'from socsocial_media_post import *' | |
# As far as there is nothing else here and in app.py | |
# we import the classes explicitely, this part can be ommited | |
__all__ = [ | |
'SocialMediaPost', | |
'SocialMediaPostPublisher' | |
] |
The user experience of Python on a minimal Debian or Ubuntu installation is bad. Core features like virtual environments, pip bootstrapping, and the ssl module are either missing or do not work like designed and documented. Some Python core developers including me are worried and consider Debian/Ubuntu's packaging harmful for Python's reputation and branding. Users don't get what they expect.
The problems can be easily reproduced with official Debian and Ubuntu containers in Docker or Podman. Debian Stable (Debian 10 Buster) comes with Python 3.7.3. Ubuntu Focal (20.04 LTS) has Python 3.8.5.