9 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?

14 comments

  1. DaveJarvis
    Link
    KeenWrite is on the cusp of having a command-line interface to enable converting Markdown files to other formats, such as HTML and PDF: ./keenwrite.bin -i filename.md -o filename.pdf -v...

    KeenWrite is on the cusp of having a command-line interface to enable converting Markdown files to other formats, such as HTML and PDF:

    ./keenwrite.bin -i filename.md -o filename.pdf -v variables.yaml
    

    I started developing KeenWrite because there are no integrated text editors that permit embedding interpolated variables into documents using variables defined externally. A while ago I added inline diagrams rendered as SVG using kroki.io, which means diagrams can use variables, too (see screenshots).

    A command-line interface basically replaces the shell scripts described in my Typesetting Markdown series. The shell scripts wrap pandoc, knitr, and my home-grown yaml processor (yamlp). KeenWrite supports R statements and pandoc's annotations (e.g., ::: poem), so the hacky shell scripts can be eliminated.

    7 votes
  2. mtset
    Link
    It's my last week at my current job, so I'm spending pretty much all my time documenting and doing knowledge transfer. It's definitely made me think a lot about documentation best practices, and...

    It's my last week at my current job, so I'm spending pretty much all my time documenting and doing knowledge transfer. It's definitely made me think a lot about documentation best practices, and made me incredibly grateful for Rustdoc!

    6 votes
  3. [2]
    Apos
    (edited )
    Link
    I decided to do a quick infinite canvas drawing project I called Mitten. It's based on Milton. I'm using the various game libraries I've created over the years. I managed to code a first proof of...

    I decided to do a quick infinite canvas drawing project I called MoltenDraw. The name will most likely change. Mitten. It's based on Milton. I'm using the various game libraries I've created over the years. I managed to code a first proof of concept within 1 hour.

    It looks like lines, drawing, circles.

    5 votes
    1. Apos
      (edited )
      Link Parent
      I released it here: https://apos.itch.io/mitten. Added undo redo and auto save. The only main feature this project needs now would be colored lines.

      I released it here: https://apos.itch.io/mitten. Added undo redo and auto save.

      The only main feature this project needs now would be colored lines.

      4 votes
  4. [3]
    tomf
    Link
    I don't code or anything, but for Advent of Code I'm using Google Sheets. All of the cool kids have modules to pull the input down, so I decided to slap together a function to do just that...

    I don't code or anything, but for Advent of Code I'm using Google Sheets. All of the cool kids have modules to pull the input down, so I decided to slap together a function to do just that

    function aoc(day) {
      var cookie = "your-session-cookie"
    	const url = "https://adventofcode.com/2021/day/" + day + "/input";
    	const response = UrlFetchApp.fetch(url, {
    		"method": "GET",
    		"headers": {
    			"cookie": "session="+cookie,
    		},
    		"muteHttpExceptions": true,
    		"validateHttpsCertificates": true,
    	});
    return response.getContentText().split("\n");
    }
    

    You can use =AOC(10) or =AOC(DAY(TODAY())) and it should pull it down.

    5 votes
    1. [2]
      krg
      Link Parent
      I’d say you do code. :)

      I don't code or anything …

      … so I decided to slap together a function …

      I’d say you do code. :)

      3 votes
      1. tomf
        Link Parent
        well, I'm better at modifying existing code than writing it from scratch. :)

        well, I'm better at modifying existing code than writing it from scratch. :)

        1 vote
  5. dblohm7
    Link
    I've been working on adding support for calling the Windows DnsQueryEx API asynchronously in Go. That API uses a Win32 concept called an Asynchronous Procedure Call (APC) to deliver its completion...

    I've been working on adding support for calling the Windows DnsQueryEx API asynchronously in Go. That API uses a Win32 concept called an Asynchronous Procedure Call (APC) to deliver its completion notification events, so I've had to do a bunch of work to make APCs work with channels and goroutines.

    4 votes
  6. [3]
    m15o
    (edited )
    Link
    I just finished a side-project: https://status.cafe. It's a place where we can share our current status. It's heavily inspired by imood and SpaceHey. There aren't many features, but there are...

    I just finished a side-project: https://status.cafe. It's a place where we can share our current status. It's heavily inspired by imood and SpaceHey.

    There aren't many features, but there are some:

    • Your profile page can be completely customized with HTML and CSS, a little like this one from dream
    • There's a bookmarklet that lets you update your status from anywhere
    • There's a widget that lets you show your latest status on your homepage, like what I added at the top of mine.
    • You can subscribe to any person you'd like with Atom

    And that's it! It's still very new and I'm sure I'll be tweaking quite a lot in the coming weeks, but from a feature standpoint, I think it's complete. I want it to stay simple and last for years ahead, and nothing beats simplicity for that.

    Here is the source code if anyone is interested: https://git.sr.ht/~m15o/status

    3 votes
    1. [2]
      tomf
      Link Parent
      your repo is locked down :) Your site looks awesome!

      your repo is locked down :) Your site looks awesome!

      2 votes
      1. m15o
        Link Parent
        Thanks for letting me know! It should be better now :)

        Thanks for letting me know! It should be better now :)

        2 votes
  7. crdpa
    (edited )
    Link
    I'm making a simple website to register the books i've read. Like a goodreads lite. The only important things are book name and author. Edition, publisher and everything else does not matter....

    I'm making a simple website to register the books i've read. Like a goodreads lite.

    The only important things are book name and author. Edition, publisher and everything else does not matter. There shouldn't be two books with the same name with both authors having the same name too, right?

    Maybe put release year too just to be safe?

    Another question: how do i deal with different languages?

    I'm using sqlite for the database.

    I am reading O Chefão, because i'm from Brazil, but the original title is The Godfather. Is there a way to make the name field have multiple values? What is the better approach? An "Alternative titles" field?

    2 votes
  8. ras
    Link
    There’s a project at work that’s in Unreal Blueprint that I’ve worked on some in the past. This week the sole developer and 3D expert quit, so now I’m going to be taking it over. Lord have mercy,...

    There’s a project at work that’s in Unreal Blueprint that I’ve worked on some in the past. This week the sole developer and 3D expert quit, so now I’m going to be taking it over. Lord have mercy, the mess of spaghetti Blueprint I’ve just been handed…

    1 vote
  9. DMBuce
    Link
    I just put together a small script to replace MobaXTerm, which I've been using to run several ssh sessions and input the same keystrokes into them all at the same time. My script just launches a...

    I just put together a small script to replace MobaXTerm, which I've been using to run several ssh sessions and input the same keystrokes into them all at the same time. My script just launches a tmux session with synchronized panes and a command in each window, so e.g. shplit ssh web{01..06} would ssh into web01 through web06.

    Here's how it looks with a trivial example, shplit echo one two three four:

    echo one                               │echo two
    ^_^ dmbuce@football:~$ echo one        │^_^ dmbuce@football:~$ echo two
    one                                    │two
    ^_^ dmbuce@football:~$                 │^_^ dmbuce@football:~$ 
                                           │
                                           │
                                           │
                                           │
                                           │
                                           │
                                           │
    ───────────────────────────────────────┼────────────────────────────────────────
    echo three                             │echo four
    ^_^ dmbuce@football:~$ echo three      │^_^ dmbuce@football:~$ echo four
    three                                  │four
    ^_^ dmbuce@football:~$                 │^_^ dmbuce@football:~$ 
                                           │
                                           │
                                           │
                                           │
                                           │
                                           │
                                           │
    [shplit] 0:bash*                                      "football" 16:09 13-Dec-21
    
    1 vote