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 ~]
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.
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!
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 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.
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.
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.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.
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.
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).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! :)
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.
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. :)
That is a remarkably fun game!
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?
I've run into this problem as well. I'll have to check! Or maybe even remove Bali altogether.
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!
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?
Yeah. I should probably make that clear somehow on the next version.
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.
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.
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
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.
Air Garden: Grow plants and pop bubbles to clear air pollution
https://mellowminx.itch.io/air-garden
This is a prototype, the game is still under development :)
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.
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 :)
What a cute, and immersive game :D What technology did you use for it?
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)
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.
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.
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.
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.
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?
We make the rules, not me :) But I think it is completely fine.
Ok, thank you!
I think you should be okay to share it, a game is a project in my mind.
Thanks so much!
So is it finished or early stage? The title of the thread and the description conflict a bit.
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.
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.
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
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.
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):
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.