Skip Navigation
Posts
10
Comments
7
Joined
1 yr. ago
PostgreSQL @programming.dev
Serpent7776 @programming.dev

pg_snowflake - extension for creating customisable snowflake ID types

Example usage:

 undefined
    
-- Register with default settings (41 timestamp bits, 10 type bits, 12 counter bits)
CALL snowflake.register('user_id');

-- Generate a user ID
SELECT snowflake.generate_user_id(now(), 1, 1);

-- Register with custom bit allocation
CALL snowflake.register('order_id', 42, 8, 13);

-- Generate an order ID with specific type and counter
SELECT snowflake.generate_order_id('2023-12-01 10:30:00 UTC', 5, 1000);

  
  • AFAIK you can't do this with BPF as it doesn't have any kind of sleep functionality. I'm also not sure how would you achive this using cgroup, which are about quotas AFAIK.

  • commandline @programming.dev
    Serpent7776 @programming.dev

    crawlio: Tool that slows down I/O operations

    Crawlio is a simple C tool that slows down I/O operations by adding a specified amount of time to each I/O call. It uses LD_PRELOAD.

    • Test application behaviour under slow I/O conditions
    • Bring back the dial-up nostalgia
    • Learn how to use LD_PRELOAD
    Assembly @programming.dev
    Serpent7776 @programming.dev

    My first x86 avx program: fizzbuzz using AVX512

    PostgreSQL @programming.dev
    Serpent7776 @programming.dev

    pg_worker_pool: extension creating a pool of background workers

    I'm doing an extension that creates a pool of named background workers. Happy to hear any feedback on this.

     undefined
        
    CREATE EXTENSION pg_worker_pool;
    CALL worker_pool.submit('foo', 'create index myindex_1 on my_big_table (id)');
    CALL worker_pool.submit('foo', 'create index myindex_1 on my_big_table (name)');
    CALL worker_pool.submit('bar', 'create index otherindex_2 on other_big_table (author)');
    CALL worker_pool.submit('bar', 'create index otherindex_2 on other_big_table (title)');
    
      

    This will start two background workers, foo and bar. foo will create an indices on table my_big_table and bar on table other_big_table. foo and bar will run independently of each other, but all indices submitted to the same worker will be created in order.

    C++ @programming.dev
    Serpent7776 @programming.dev

    I wrote a blog post comparing several range libraries for a case that is doing filter with non-trivial lambda and then reverse.

  • I added bun and deno. Updated results are on the github page. Deno is similar to node, bun takes much less time.

    https://github.com/serpent7776/startup-shutdown-bench

  • commandline @programming.dev
    Serpent7776 @programming.dev

    I used hyperfine CLI tool to measure startup and shutdown times of several code interpreters

    A blog post shows an example usage of hyperfine CLI tool to measure and plot time of startup and shutdown of several code interpreters.

    Programming Languages @programming.dev
    Serpent7776 @programming.dev

    Programming Language Awareness Centre

    A Programming Language Learner's Resource. Contains descriptions of many ineresting programming languages, like APL, ABC, FP, Factor with examples and further links.

  • It should be easy to edit the existing code to add support for i18n, but there's probably no way to make in generic (except for macros).

  • There's no purpose really. It was more of "wonder if I can" and also nice way to learn custom literals.

  • C++ @programming.dev
    Serpent7776 @programming.dev

    Index arrays with ordinals instead of integers with custom literals

    I did a code that uses custom literals to allow indexing arrays with ordinals (1st, 2nd, 3rd), all at compile time. Additionally _st works only with 1, _nd only with 2, _rd only with 3. Zero and negative numbers are also not supported and fail compilation.

    https://github.com/serpent7776/bits/blob/master/th.cpp/th.cpp

    PostgreSQL @programming.dev
    Serpent7776 @programming.dev
    commandline @programming.dev
    Serpent7776 @programming.dev

    histat - a simple history stats

    I created a very simple script that shows the history usage of your shell. Should work with bash and fish shells.

    This basically goes through the history and counts the command names. So all of git push, git pull, etc will count as just git.

    Example output:

     undefined
        
        847 pacman
        296 cd
        206 git
        203 time
        180 vim
        172 awk
        166 aur
        142 strace
        141 cat
        125 ls
    Total commands:  7008
    Unique commands: 753
    
    
      

    ifn't

  • I can actually define this in TCL:

     tcl
        
    % proc ifn't {cond cmds} {if {!$cond} {uplevel $cmds}}
    % ifn't false {puts 12}
    12
    % ifn't true {puts 12}
    %