38 votes

Show ~/project: A thread to share your finished projects

Many of you are probably familiar with Show HNs from HackerNews. Perhaps we are not yet big enough to share those as regular top-level posts, and it is also hard to distinguish between plain self-promotions — it might thus suit us better to have these in a more controlled way.

If you are interested in sharing your project, please send a top-level comment as a reply. Probably sticking to HN’s relevant ruling will be a good starting point, paraphrasing the especially important parts:

[Show ~] is for something you've made that other people can play with. [Tildes] users can try it out, give you feedback, and ask questions in the thread. The project must be something you've worked on personally and which you're around to discuss.

A [Show ~] needn't be complicated or look slick. The community is comfortable with work that's at an early stage.

Please make it easy for users to try your thing out, ideally without barriers such as signups or emails. You'll get more feedback that way.

If your work isn't ready for users to try out, please don't do a [Show ~]

37 comments

  1. [4]
    DaveJarvis
    Link
    My free, open-source, cross-platform, desktop Markdown editor known as KeenWrite is usable. I've been dogfooding it to write a sci-fi novel. Along the way I added a few themes that can be applied,...

    My free, open-source, cross-platform, desktop Markdown editor known as KeenWrite is usable. I've been dogfooding it to write a sci-fi novel. Along the way I added a few themes that can be applied, because I made sure that the content is kept separate from presentation. There are numerous video tutorials showing its usage.

    Mainly, I wrote it because no other plain text editor allows me to quickly and easily use variables while editing. Users define variables in an external YAML file that can be edited using a hierarchical tree-like node editor. Variables can be interpolated, embedded in diagrams, used in R statements, and placed inside of plain TeX math expressions. Changing the variable value automatically updates the prose and diagrams.

    The release pages provide a history of features.

    18 votes
    1. [3]
      gf0
      Link Parent
      Wow, it is very very impressive! I honestly didn't expect such a feature-complete project! Plus point in my book for using JavaFX! Could you share a bit about your experience/opinion of it? I have...

      Wow, it is very very impressive! I honestly didn't expect such a feature-complete project!

      Plus point in my book for using JavaFX! Could you share a bit about your experience/opinion of it? I have dabbled a bit with it (but very far from your level) and like it overall (except for not having native Wayland support), but it definitely doesn't get as much love as it would deserve, even though many people are constantly looking for a cross-platform GUI.

      Also, what do you use for creating the .bin file? I see that it is a statically linked ELF-file, though unfortunately it doesn't run as is on my (exotic) linux distro (NixOS does go against many assumptions about default file locations), but I get no error whatsoever. Nonetheless, I managed to make it run by running it in a more traditional FHS-environment and it is very snappy. I will definitely be digging through the codebase, there is a lot I can learn from it!

      1. [2]
        DaveJarvis
        (edited )
        Link Parent
        That's quite kind of you. There's a lot going for it: great data binding model, extensive libraries for basic app functionality (TiwulFX Dock, PreferencesFX, and RichTextFX), and many more...

        Wow, it is very very impressive!

        That's quite kind of you.

        Could you share a bit about your experience/opinion of it?

        There's a lot going for it: great data binding model, extensive libraries for basic app functionality (TiwulFX Dock, PreferencesFX, and RichTextFX), and many more libraries. When I started the project, JavaFX was bundled with the JDK.

        There are many drawbacks that, had I a crystal ball, would have sent me down a different road: WebView (JavaFX) bundles JavaScript and has no API to access the scrollbar, which means no synchronized scrolling, leading me to integrate FlyingSaucer (Swing) as a SwingNode instead---that wasn't fun because JavaFX and Swing need to execute on separate threads. Oracle ripped JavaFX out of the JDK and added modular apps around the same time, which took countless hours to resolve. JavaFX uses GTK2/3 under the hood and had/has app switching problems when using Alt+Tab on Windows, especially with respect to accelerator hot-keys; plus, the library writes a useless warning to standard error for no good reason, meaning I have to close stderr to prevent users from seeing it. Not all FX libraries honour CSS skinning. I wouldn't choose JavaFX again for such a project for these reasons and others.

        even though many people are constantly looking for a cross-platform GUI.

        There isn't a lot of choice. Maybe dear imgui would have been a better developer experience. Rust may have some cross-platform GUIs that could be suitable.

        Also, what do you use for creating the .bin file

        A fork of warp-packer, which can overwrite a previous version. The parent repo has a crippling bug on Windows where users first have to delete the old directory before running a new version.

        The binary is a self-extracting executable that runs a shell script (or batch file) post-extraction to launch the application. In theory it can also pack a .dmg file, but I don't have any way to test the build.

        To create a new release, I push a new tag, run ./release.sh, then upload the resulting .bin, .jar, and .exe files to the repo. The .exe is signed and has an associated icon, but doing so requires running a Windows app under Wine, which isn't the greatest.

        NixOS does go against many assumptions about default file locations

        If you'd care to open an issue in the issue tracker, I may be able to fix that.

        The biggest feature KeenWrite could use is cross-references and citations. See issue 145 and the CommonMark thread. This would make it possible to create references for tables, figures, and citations when exporting to PDF. If you'd like to lend a hand, I'd be happy to guide you through what I think needs to be done to flexmark-java to make cross-references work.

        4 votes
        1. gf0
          Link Parent
          Perhaps, though it would pain me (and every battery-powered device) to replace retention-mode GUIs with immediate-mode ones. Qt is a decent option, but it definitely needs a proper...

          Maybe dear imgui would have been a better developer experience.

          Perhaps, though it would pain me (and every battery-powered device) to replace retention-mode GUIs with immediate-mode ones. Qt is a decent option, but it definitely needs a proper language-binding -- not everything is C++, Python. Hopefully with the recent advancements on Java's Panama a better binding could be created.

          If you'd care to open an issue in the issue tracker, I may be able to fix that.

          I have pinpointed the problem to basically the .local/share/warp/packages/keenwrite.bin/static/java folder warp extracts being a normal executable. Unfortunately NixOS is very picky about those, almost every dynamically-linked binary has to be patched to link to hard-coded paths over general ones. So I believe this bug is well outside the scope of your project -- but if you wish I can submit an issue (though probably opening an issue on warp would be more apt, something as trivial as outputting an error would be welcome).

          2 votes
  2. [11]
    guissmo
    Link
    Here’s an app that I made while unemployed and trying to learn React. 🔥 HOT or NOT 👎 https://hotornot.guissmo.com The idea came to mind because most of the tutorials I found used the same old «...

    Here’s an app that I made while unemployed and trying to learn React.

    🔥 HOT or NOT 👎
    https://hotornot.guissmo.com

    The idea came to mind because most of the tutorials I found used the same old « weather dashboard » to demonstrate how to use an API.

    I thought that was boring and made it into a (hopefully) less boring game.

    Let me know how you do! :)

    13 votes
    1. [2]
      jmpavlec
      (edited )
      Link Parent
      Really cool game, very slick interface for someone just learning React. I'm also learning it at the moment. One suggestion, you may need to add to the tutorial/explanation that it is current...

      Really cool game, very slick interface for someone just learning React. I'm also learning it at the moment.

      One suggestion, you may need to add to the tutorial/explanation that it is current temperatures? (At that exact moment?) Not average or a particular season. That way the player understands to take day/night and hemispheres into account etc.

      Also the "tap both cards" wasn't really a "start" I was used to. Not everyone will read the tutorial and realize they need to tap both of them. Maybe add a begin button or something to make them look more "tappable". That or like 1/2 cards tapped, tap the other to begin. The call to action to start wasn't the most obvious.

      5 votes
      1. guissmo
        Link Parent
        Thank you very much, especially for the detailed suggestions! I'll keep them in mind when I decide to come back and modify the code. :)

        Thank you very much, especially for the detailed suggestions!

        I'll keep them in mind when I decide to come back and modify the code. :)

        2 votes
    2. bratling
      Link Parent
      That is a remarkably fun game!

      That is a remarkably fun game!

      2 votes
    3. [3]
      buzziebee
      Link Parent
      Looks really slick, it's saying Bali is only 13 degrees though. The lowest ever recorded temperature in Bali was 18 degrees. Maybe something got mixed up?

      Looks really slick, it's saying Bali is only 13 degrees though. The lowest ever recorded temperature in Bali was 18 degrees. Maybe something got mixed up?

      2 votes
      1. [2]
        guissmo
        Link Parent
        I've run into this problem as well. I'll have to check! Or maybe even remove Bali altogether.

        I've run into this problem as well. I'll have to check! Or maybe even remove Bali altogether.

        1. buzziebee
          Link Parent
          Something funky with the data set for sure. Played another few rounds and got a high score of 22 which I was pretty pleased with. Fun little game, and really well styled and animated. Good job!

          Something funky with the data set for sure. Played another few rounds and got a high score of 22 which I was pretty pleased with. Fun little game, and really well styled and animated. Good job!

          1 vote
    4. [2]
      Sodliddesu
      Link Parent
      One thing that got me, US cities with Celsius. The other thing that got me, Celsius in general, much smaller margins for error. I got to about six frequently - but I'm guessing it's pulling...

      One thing that got me, US cities with Celsius.

      The other thing that got me, Celsius in general, much smaller margins for error.

      I got to about six frequently - but I'm guessing it's pulling current temps? So they're daytime temps for Asia and nighttime ones got the US?

      1 vote
      1. guissmo
        Link Parent
        Yeah. I should probably make that clear somehow on the next version.

        Yeah. I should probably make that clear somehow on the next version.

    5. [2]
      UL3A9UkL8m
      Link Parent
      Amazing game! Got 19 score. Apart from the suggestions you've already been given, I'd like to add that the locations are probably random, but I got a lot of USA cities. Maybe look into that.

      Amazing game! Got 19 score.

      Apart from the suggestions you've already been given, I'd like to add that the locations are probably random, but I got a lot of USA cities. Maybe look into that.

      1. guissmo
        Link Parent
        Yeah, the list of cities was limited by Teleport API because I wanted there to be pictures. There were a lot of USA cities in that list, as well as European ones. I guess I could think about not...

        Yeah, the list of cities was limited by Teleport API because I wanted there to be pictures. There were a lot of USA cities in that list, as well as European ones. I guess I could think about not having several US cities in a row.

        1 vote
  3. Dotz0cat
    Link
    I made walld, a wallpaper daemon. It changes your wallpaper. If you have 1000 wallpapers, point walld to them, it will shuffle them and display them. By default it changes the wallpaper every 30...

    I made walld, a wallpaper daemon. It changes your wallpaper. If you have 1000 wallpapers, point walld to them, it will shuffle them and display them. By default it changes the wallpaper every 30 minutes. It can even generate colors that can be included in your .Xresources.
    Repo: https://github.com/Dotz0cat/walld

    10 votes
  4. tesseractcat
    Link
    I haven't been working on much recently, but with all the new users maybe some people would be interested in stuff I've posted before :T https://tesseractcat.itch.io/itmas: This is a 3D modelling...

    I haven't been working on much recently, but with all the new users maybe some people would be interested in stuff I've posted before :T

    https://tesseractcat.itch.io/itmas: This is a 3D modelling prototype where you draw in 2D from the side, the top, and the front and it combines it into a voxel 3D model.

    https://tesseractcat.itch.io/birdgame: A multiplayer board-game engine. I was working on a plugin system but it's pretty bare-bones for now. Honestly I thought it would be way easier to make :| but at this point it's a bit of sunk-cost fallacy haha.

    8 votes
  5. [5]
    feanne
    Link
    Air Garden: Grow plants and pop bubbles to clear air pollution https://mellowminx.itch.io/air-garden Tiny cozy game, 30 mins gameplay Free, no ads or microtransactions Play on browser on...

    Air Garden: Grow plants and pop bubbles to clear air pollution
    https://mellowminx.itch.io/air-garden

    • Tiny cozy game, 30 mins gameplay
    • Free, no ads or microtransactions
    • Play on browser on phone/tablet/desktop, no download required
    • Click to play, no keyboard required

    This is a prototype, the game is still under development :)

    6 votes
    1. [2]
      brogeroni
      Link Parent
      I just finished it :) Really like how the 100 toxic air put a soft limit on play time, so I don't end up wasting an entire day on it like cookie clicker.

      I just finished it :)

      Really like how the 100 toxic air put a soft limit on play time, so I don't end up wasting an entire day on it like cookie clicker.

      5 votes
      1. feanne
        Link Parent
        Thank you! Grateful to my playtesters who gave me feedback about their completion time for the game, so I can inform potential players about the expected playtime length. I do plan to expand it,...

        Thank you! Grateful to my playtesters who gave me feedback about their completion time for the game, so I can inform potential players about the expected playtime length. I do plan to expand it, probably with additional levels and mechanics :)

        3 votes
    2. [2]
      gf0
      Link Parent
      What a cute, and immersive game :D What technology did you use for it?

      What a cute, and immersive game :D What technology did you use for it?

      2 votes
      1. feanne
        Link Parent
        Thank you! I made it using Godot, a free and open source game engine. I used Godot's own programming language, GDscript (it's kinda like Python). And used Adobe Illustrator to create the art, and...

        Thank you! I made it using Godot, a free and open source game engine. I used Godot's own programming language, GDscript (it's kinda like Python). And used Adobe Illustrator to create the art, and Audacity to edit the audio (CC0 audio from freesound.org)

        2 votes
  6. honzabe
    Link
    I hope that [Show ~] will become a regular thing here. I like some of the projects in this thread. Also, maybe it would motivate me to finally finish at least one of my pet projects.

    I hope that [Show ~] will become a regular thing here. I like some of the projects in this thread. Also, maybe it would motivate me to finally finish at least one of my pet projects.

    6 votes
  7. MaoZedongers
    Link
    For applications I guess I've got this: Transfer it's technically finished because I don't plan to add anything to it, but it's pretty basic and there are most certainly better options. It's a...

    For applications I guess I've got this: Transfer it's technically finished because I don't plan to add anything to it, but it's pretty basic and there are most certainly better options.

    It's a local network file sharing web app.

    You put files in the files directory and then run the program and it'll broadcast it over your local network under your local IP address, and then anyone on the network can type in your ip and download the files from it.

    I just made it so I could quickly and hassle-free send people stuff in close proximity without having to run back and forth.

    There are no releases so you'd have to download the nim compiler and run nimble build to build the executable.


    If libraries also fit the topic, I have sljex, a (maybeTM) thread-safe and (probablyTM) C99 compliant C exceptions library.

    5 votes
  8. [9]
    gf0
    Link
    As this is the first such post, any criticism of the idea is also on-topic, but please do it under this comment, and let other top comments be entries. I am especially interested in your take on...

    As this is the first such post, any criticism of the idea is also on-topic, but please do it under this comment, and let other top comments be entries.

    I am especially interested in your take on whether you find it sufficiently different from the regular “What are you working on” posts, or should we just stick with that.

    Also, criticism of the name is also welcome here.

    4 votes
    1. skybrian
      Link Parent
      Seems like finished is kind of a high bar. What projects are ever finished? :-) Ready for users to try out is something I can do.

      Seems like finished is kind of a high bar. What projects are ever finished? :-) Ready for users to try out is something I can do.

      7 votes
    2. [5]
      feanne
      Link Parent
      Thanks for this thread! I was wondering if it's ok to share a game I made here, or is it off-topic? Is this specifically for projects that are apps and not games?

      Thanks for this thread!

      I was wondering if it's ok to share a game I made here, or is it off-topic? Is this specifically for projects that are apps and not games?

      3 votes
      1. [2]
        gf0
        Link Parent
        We make the rules, not me :) But I think it is completely fine.

        We make the rules, not me :) But I think it is completely fine.

        4 votes
      2. [2]
        Zorind
        Link Parent
        I think you should be okay to share it, a game is a project in my mind.

        I think you should be okay to share it, a game is a project in my mind.

        2 votes
    3. [2]
      jmpavlec
      Link Parent
      So is it finished or early stage? The title of the thread and the description conflict a bit.

      A [Show ~] needn't be complicated or look slick. The community is comfortable with work that's at an early stage.

      So is it finished or early stage? The title of the thread and the description conflict a bit.

      1 vote
      1. gf0
        Link Parent
        Replying here to both you and @skybrian : Sorry, I forgot about that word in the title after a few rewrites of the post’s body and can no longer edit it. And sure, no project is ever finished, so...

        Replying here to both you and @skybrian :

        Sorry, I forgot about that word in the title after a few rewrites of the post’s body and can no longer edit it. And sure, no project is ever finished, so maybe a better way to put it is share releases? Some version you have been working on for a time and is ready to be showcased. I think it is also fine to post the same project’s next bigger release/landmark on the next Show ~, just make sure that it has changed in a meaningful way.

        2 votes
  9. annieversary
    Link
    I made albumoftheday a while ago. People can submit albums to a pool, and once a day a random album is picked from the pool and displayed on the front page. Everyone gets the same daily album,...

    I made albumoftheday a while ago. People can submit albums to a pool, and once a day a random album is picked from the pool and displayed on the front page. Everyone gets the same daily album, it's not personalized or anything.

    The main goal was to get "small, unknown, not algorithm friendly" album recommendations sourced from my friends/fedi followers, but it's grown quite a bit and that spirit hasn't quite kept as well as I expected (today's album is a Carly Rae Jepsen one, which I wouldn't call small or unknown).

    You can go to /history to see the whole past history of albums that have been selected. It's been running for over half a year so there's a fair bit of albums there.

    4 votes
  10. lonk
    Link
    I'm building https://linklonk.com - a personalized news aggregator. You submit and rate links and get content from other users who liked the same links as you + from RSS feeds that posted content...

    I'm building https://linklonk.com - a personalized news aggregator. You submit and rate links and get content from other users who liked the same links as you + from RSS feeds that posted content you liked.

    I did the a Show Tildes back in 2020: https://tildes.net/~tech/u7f/linklonk_a_link_aggregator_with_a_trust_system
    and a Show HN in 2021: https://news.ycombinator.com/item?id=29445764

    Most recently I added loading links shared on Mastodon and Bluesky: https://linklonk.com/social

    3 votes
  11. borntyping
    Link
    I made a calcuator for working out how many days a series of daily quests in FFXIV would take to complete, and a site collecting links to lots of other people's tools and resources I've found for...

    I made a calcuator for working out how many days a series of daily quests in FFXIV would take to complete, and a site collecting links to lots of other people's tools and resources I've found for the game.

    These mostly existed as I've been working on a React application for my job, and wanted to look at similar frameworks and compare them. The calculator was built with Alpine.js, and the resource list was built with Vue. Alpine.js was quite a nice expirence, and while I liked bits of Vue I don't particually want to use it or React again.

    1 vote
  12. calla
    Link
    I don't know that I feel right calling these "finished" because I definitely want to work on them more in the future, but they're stable and usable. lucky - an input daemon for Xorg configured in...

    I don't know that I feel right calling these "finished" because I definitely want to work on them more in the future, but they're stable and usable.

    lucky - an input daemon for Xorg configured in lua. I'd say there are two main benefits to using this over the alternatives (e.g. sxhkd):

    1. Better support for mouse bindings, with support for binding a callback for motion events (and how often those motion events fire so you don't overwhelm your system with a bunch of shell commands or whatever) and window enter/exit events for a mouse binding.
    2. Contextual bindings. Any binding can include a filter callback, which returns true when a binding should be active, otherwise if it returns false the input will be passed through to other applications as if it weren't bound, and you can bind the same input multiple times with different filters. There are also API functions to get various bits of information about windows so you can for example have a keybinding only active when you have a certain window focused. With enough effort this could allow you to do things like create different input modes or set up a chording system.

    mpv-youtube-chat - an mpv lua script I made that uses yt-dlp to download and overlay chat replays from Youtube livestreams and premiers inside mpv. You can load the files directly from disk as well so it can be used offline.

    1 vote