8 votes

What programming/technical projects have you been working on?

This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?

7 comments

  1. [2]
    wirelyre
    Link
    For the past 11 months my hobby project has basically been developing tools to play Tetris™ really fast. I should probably measure how fast, but it's really fast. There's a web interface as a...

    For the past 11 months my hobby project has basically been developing tools to play Tetris™ really fast. I should probably measure how fast, but it's really fast.

    There's a web interface as a little toy that uses the library.

    This has been such a cool project — it's got colors, it's got Coding and Algorithms, I learned a lot about multicore programming and vectorization and Rust's type system, I rented a machine with 96 cores, I expanded the state of the art for this problem domain a little bit, and I wrote my own concurrent hash map. And best of all, it's all in service of an actual specific question I have, so I'll know when I'm done!

    I intend to write a series of technical blog posts about this, because I think it's really interesting, but I'm holding out until I've actually done some research work. The tools are pretty much done, now I need to use them.

    7 votes
    1. PetitPrince
      (edited )
      Link Parent
      Not my kind of Tetris, but colour me interested nonetheless. There's several Tetris discord(*) (I know at least 2 that are SRS centric), I hope you'll find what you're looking for. (*) I'm sad...

      Not my kind of Tetris, but colour me interested nonetheless. There's several Tetris discord(*) (I know at least 2 that are SRS centric), I hope you'll find what you're looking for.

      (*) I'm sad that there so much useful info buried into difficult to parse discord chats

      1 vote
  2. onyxleopard
    (edited )
    Link
    I've been hacking on a method for measuring the similarity of phonemic transcriptions using simhashing (a variety of locality sensitive hash or LSH). The idea is to compare the bitwise-similarity...

    I've been hacking on a method for measuring the similarity of phonemic transcriptions using simhashing (a variety of locality sensitive hash or LSH). The idea is to compare the bitwise-similarity of the simhashes of pairs of 2D matrices formed by stacking phonemic feature vectors from the PHOIBLE project's phonological inventories. I have a Jupyter notebook here that shows the progress (you can see the ranked pairs by similarity in the last output cell at the bottom). LSH is nice for this kind of pairwise comparison because there are tricks you can use to avoid running comparisons on the exhaustive set of pairwise combinations by sorting the LHS integer values and bitwise rotating them through every bit position and then only comparing adjacent pairs in those sorted lists.

    There's also a CLI to play with the parameters on a small toy dataset:

    $ ./simphon.py -n 3 -b 128 -w 10 | tabulate -1s $'\t' -F '0.3f'      
    ranking pairs by bitwise similarity: 100%|█████████████████████████████████████████████████| 703/703 [00:00<00:00, 1446098.93pair/s]
         a                                    b                                      simhash difference (in bits)    similarity score
    ---  -----------------------------------  -----------------------------------  ------------------------------  ------------------
      0  (eng) Zach /z æ k/                   (eng) Zak /z æ k/                                                 0               1.000
      1  (eng) Catherine /k æ θ ə ɹ ə n/      (eng) Catherine /k æ θ ə ɹ ɪ n/                                  61               0.762
      2  (eng) Brad /b ɹ æ d/                 (eng) Brett /b ɹ ɛ t/                                            74               0.711
      3  (eng) Jenny /d̠ʒ ɛ n i/               (eng) Johnny /d̠ʒ ɑ n i/                                          78               0.695
      4  (eng) Catherine /k æ θ ə ɹ ɪ n/      (eng) Zachary /z æ k ə ɹ i/                                      79               0.691
      5  (eng) Matt /m æ t/                   (eng) Nate /n eɪ t/                                              84               0.672
      6  (eng) Alexander /æ l ə k z æ n d ɚ/  (eng) Alexis /ə l ɛ k s ɪ s/                                     85               0.668
      7  (eng) Alex /æ l ə k s/               (eng) Alexander /æ l ə k z æ n d ɚ/                              89               0.652
      8  (eng) Catherine /k æ θ ə ɹ ə n/      (eng) Jonathan /d̠ʒ ɑ n ə θ ə n/                                  89               0.652
      9  (eng) Alexi /ə l ɛ k s i/            (eng) Alexis /ə l ɛ k s ɪ s/                                     90               0.648
     10  (eng) Brad /b ɹ æ d/                 (eng) Bradley /b ɹ æ d l i/                                      90               0.648
    

    There are some false positives, but it's neat to see this data-driven, linguistically grounded, information-theoretic approach somewhat work.

    2 votes
  3. helloworld
    Link
    I'm getting comfortable writing Emacs-lisp. So I decided to start using it for whatever purposes I used to write shell scripts. Turns out Emacs-lisp is great as scripting language. All the...

    I'm getting comfortable writing Emacs-lisp. So I decided to start using it for whatever purposes I used to write shell scripts. Turns out Emacs-lisp is great as scripting language. All the text-munging comes built it, is (subjectively) nicer to write than Python (no significant whitespace!) and due to usage pattern, pulling external dependencies is much more straightforward. Compared to shell it is just more ergonomic.

    I am also getting close to MVP on my static site generator using org-mode+org-publish and might just make it public soon (TM).

    2 votes
  4. Liru
    Link
    Writing a bunch of Elixir NIFs (Native Integrated Functions) at work in Rust, and getting severely annoyed with Rustler's quirks and documentation.

    Writing a bunch of Elixir NIFs (Native Integrated Functions) at work in Rust, and getting severely annoyed with Rustler's quirks and documentation.

    2 votes
  5. edoceo
    Link
    Working on an ActivityPub client that I hope makes it trivial for folks to run their own. Tumbler meets Geocities like thing. Mostly it's just to let me play with libsodium

    Working on an ActivityPub client that I hope makes it trivial for folks to run their own. Tumbler meets Geocities like thing. Mostly it's just to let me play with libsodium

    1 vote
  6. DMBuce
    Link
    I wrote a rofi datepicker. It's a tool that seems kind of obvious, and it's something I've been wanting for a while, but after some searching I hadn't quite found what I'm looking for, so I wrote...

    I wrote a rofi datepicker. It's a tool that seems kind of obvious, and it's something I've been wanting for a while, but after some searching I hadn't quite found what I'm looking for, so I wrote it myself.

    There are other rofi calendars, but AFAICT from their documentation they are mostly meant to just view the months in a calendar and don't have datepicking functionality.

    There is one rofi project called naivecalendar I'm aware of that has date-picking functionality, but it's a full-blown scheduling application with some kind of extra styling system built on top of rofi's themes, which is more complexity than I want in a datepicker.

    There is also the dialog --calendar widget which I've been using up until now, but as a TUI it looks kinda ugly and out of place alongside i3/rofi/blezz.

    Writing this was a good excuse to learn rofi's script mode, which is something I had been wanting to do anyway. So it's been a fun couple of days refining this tool.

    1 vote