20
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?
This past weekend I was joking with some friends about onemillioncheckboxes.com and I realized onecheckbox.com wasn't registered. I couldn't get this dumb idea out of my head, so that's a thing now.
I also redid the toolhead wiring in one of my 3D printers again, after deciding that cable chains are bad actually.
edit: some of y'all are really into checkboxes
Ok this onecheckbox thing is hilarious and I think this is much better than the one million version.
It’s only a matter of time until we get a wabbit season / duck season version.
….. what am I spending my time on?!? Down with checkmarks!
I feel like I could stick this app on a phone in my chicken coop and let the hens go ham with it.
This website has unexpectedly sparked introspection. I am inexplicably naturally aligned to the side that wants the box "checked". It's almost a compulsion. When I visit and the box is unchecked, I must make it checked before moving on. I assume there are those that feel the same way about unchecking. Fascinating.
I would read the heck out of a What Your Checkbox Preference Says About You parody pop psychology article.
Hey everyone, I'm getting close to releasing my Chrome browser extension for tabs and bookmarks management and I would like to share things about it on Tildes. Do you guys think that I should hijack one of these recurring threads or create a dedicated thread? Should I talk about my project in generic terms or can I get specific? Can I name it? Can I link to it? Can I ask for your feedback?
I'm asking because even though it started as a personal project, it has since turned into a commercial "venture" where the goal would be to make a living off of it, so I'm not sure what the proper etiquette would be in that case. How would y'all prefer me to handle this? I think it'd be more fun to share the details, but I figured I should ask.
Thanks!
Can't speak for everyone obviously but I at least wouldn't mind if you shared in a dedicated thread here! I don't really view it as "spam" if a community member shares their project, unless they only drop in to promote that in a spammy way and then dip. Just my two cents.
Thanks for sharing your view! The general vibe seems to be that it would be fine to create a thread and link to the extension. I think I'll do that soon :)
Thanks again everybody!
I’m guessing you will need a few trusted testers to start? I don’t see any reason you can’t ask for that in a separate topic; it will be easier to find, bookmark, or ignore.
If your extension gets real users, I think Github issues and discussions are more appropriate. (Or maybe a competitor like GitLab.) It’s easy to set up and it’s what many people will look for and expect. It’s convenient to have the most detailed discussions about your extension in a dedicated forum, rather than scattered topics in a general-purpose forum.
Hey skybrian! Thanks for offering to help with the testing, much appreciated :) I would love to have you on board, I should be ready soon.
That's actually a really good point, I'm sold.
Absolutely, I was thinking of using Featurebase for collecting feedback etc. Do you think that I should have a Github page as well?
I didn’t mean to volunteer, actually, but okay, I can give some feedback.
I’ve never used FeatureBase, but if it works for you then maybe you don’t need two systems?
Oh okay 😂 Sorry for the misunderstanding!
Otherwise I think Featurebase should do fine.
There’s this theorem called the elliptic curve primality proving algorithm where you can prove that a ridiculously huge number (think 100+ digits) is prime. Because of this, showing someone a specific set of data (which includes an elliptic curve, hence the name) is enough to prove a number is prime. Such data is called a primality certificate.
I am making one a database where you can “name a prime”… which is sorta a light jab on those “own a star” or “own a planet” websites. It will give you a certificate.
I have a working page already but this is going to be revamped. For now this is just a glorified PDF generator: https://primecert.guissmo.com
The database isn’t there yet which I think would make it more fun and social.
Just gave it a go. That's some fancy font in the PDF :). I named the PI PRIME: 3141592653589793238462643383279502884197169399375105821357
Trying to submit the same one again gives me an error
I'd probably expect it to tell me it is taken and named "XYZ" or whatever. Would be nice to browse other primes people have already named.
Nice concept for a name of a prime!
Maybe some random (possibly invisible) characters just happened to make their way into the input box? I haven't really had bug testers for this!
You're in luck! The version I'm working on (which isn't online yet) should make that possible...
Thanks for trying it out. That gives some positive reinforcement to get on with finishing the new version! :)
Just tried it again from mobile and it let me submit it again... Must have had some extra white space at the front or back earlier. Would be good to trim those if possible for the number input in case there is a copy paste error.
Looking forward to the next version!
I managed to create the e-prime in the same spirit using 2718281828459045235360287471352662497757247093699959574966967627724076630353547594571
I need to dust off some of my old prime testing functions to try to generate some other cool primes.
Wikipedia has a list of famous prime numbers, some of which look large enough to be in the range you're using. Maybe add some "famous" primes to your list?
https://en.wikipedia.org/wiki/List_of_prime_numbers
This is weirdly amusing. I love it.
I tried to name a prime Jeff but got a certificate about "The Jeff Prime".
I've been working on an offline-first note-taking application named Cryptaa.
Its features:
I dogfood it daily and think that it's good for:
The technical stack is:
I created the application as I was not satisfy with Notion/Evernote/other note-taking applications on their speed and security and not having a web version. Originally, I planned on making it more fully-fledged, but then seriously trying Obsidian changed my mind: it's nearly impossible to make my application as feature-ful. It's the best if I let it be good at its niches: encrypted notes.
I've been using the free tiers at Fly.io, Oracle ARM based VPS and Google's free VPS to host my own nitter and redlib. They're alternative front ends for Twitter and Reddit respectively. I've also set it up so that my phone will automatically redirect to those front ends using my own root certificate without using an extension to redirect say x.com to my-own-private-nitter.com.
I made a C roulette game to emulate some latest ideas my father had to beat the system from YouTube. The ideas failed but then I got some new ideas from him and those failed. Finally he tried testing the theory in practice which also failed. Now he stopped talking about it. Worth it.
What were his ideas?
Wait x rolls before doing some set of 6 column bets with a 1/500ish chance of it not happening on roll x+1.
Do red black if this or that while waiting to bet if they want to kick you off the table. Bad math.
My randomness wasn’t great but decent for 10k rolls. I didn’t figure out the best way to implement true enough randomness with a cryptographically secure pseudorandom number generator but it was interesting to try.
I’m still working on my “repeatTest” property-testing package for JavaScript. I got bogged down in refactoring, but did manage to implement a new feature: if an Arbitrary is known to only contain a small number of examples, repeatTest will iterate over them instead of choosing randomly. (This can be done with a depth-first search, like what Prolog does by default.)
This is more efficient in some situations: If you only have a hundred examples, it makes little sense to run it a thousand times randomly. It removes non-determinism when you don’t need it. For simple cases, repeatTest scales down to being a glorified for loop.
The next step is to finally get to shrinking the test data from failed tests. I’m tempted to implement an iterative deepening search, though, to explore the search tree a little and detect more small Arbitraries.
We've been transitioning from AngularJS (as in the really old version) to Typescript and React at work for the past year or so and I'm slowly finding myself writing more TS/React than JS/Angular.
I'm embarrassed to say it's a little overwhelming at time. I've been doing web development for 15 years now (albeit largely backend work) and while I'm no stranger to the constantly changing landscape, this is just...something else. Typescript is its own learning curve and then React is another....and it's just really bumpy.
I certainly see the value in Typescript and it's already saved my bacon a few times, but my god are its errors cryptic and largely unhelpful. Maybe it's a VSCode thing, but the red squiggly lines for errors seem to surface in the least helpful place, rather than right where the issue is. And I really shouldn't need an extension just to break up the default errors into manageable chunks. React, at least, is a joy to work with compared to AngularJS. But the learning curve there... I mean I can do most things in React, but I dread putting in PRs because I know I probably did it wrong or not quite as efficiently. And prop drilling avoidance is going to be the death of me!
Anyway, I just need to whine a bit. I know that if I keep at it, things will start becoming easier and easier for me. And I'm trying to remind myself that while I've been doing web development for 15 years, I've only been using TS/React for about a year on-and-off. So I need to be patient and forgiving with myself.
I think what I struggle with the most is that we've got Juniors that got their start in web development with React running circles around me and I, the aging veteran, am struggling a bit to catch up. I'm only 36...I wasn't planning to have to deal with that until my late 40s....
My main use for ChatGPT is to ask questions about TypeScript, like how to define a type, what a type does, or what a type error means. (It does make things up, so you have to try it out too.)
It's pretty neat once you get into it, but the type system goes pretty deep, and the standard documentation is more of a user guide than a complete reference.
I've been using CoPilot heavily while learning. It's very nice being able to give it an object and have it spit out a type. Unfortunately it's a little stupid at times and makes really bad suggestions. I'm going to give ChatGPT a try though and see if that yields better results.
Yeah, autocomplete has to be fast so it's not all that smart.
I've been using GPT-4o for asking TypeScript questions and I've been happy with it, for beginner questions anyway. But it requires a paid subscription. For more obscure questions, it will make up answers.
More recently, I switched to a paid subscription for Cody instead of GitHub CoPilot, to give the underdogs a chance. Autocomplete seems roughly similar, and you can also use the chat interface to ask questions. With a subscription, the chat interface gives you a choice of LLM's, including GPT-4o and Claude 3.5 Sonnet. They seem roughly similar; haven't decided which I like better yet.
So, possibly a subscription to Cody is all you need, if you just work in VS Code? I'm still using the ChatGPT UI in a browser out of habit, though.
Last week I wrote - paraphrasing - "Vulkan tutorials are so confusing! Why do they recommend this convoluted approach? It's so much simpler to do this!" and described a simpler way that I was attempting in a toy rendering engine I'm writing to learn more about Vulkan.
You ever hear of Chesterton's Fence?
This week, I learned why things are usually set up in that convoluted way. The only reason I had not discovered it last week is that Vulkan has
threefoursix ways of handling vsync and I misunderstood which one I was using. I thought I had vsync-equivalent off, but I actually had it on, and turning it off revealed all the errors in my approach.Present modes
When using mailbox or fifo present modes (more-or-less vsync on), you can't seem to get an out-of-date image. I assume this is because window resize events (on X11) can only occur after a vblank, so if you lock your framerate to vblanks and rebuild the swapchain after every window size change, you'll never get an out-of-date.
However, using immediate or fifo_relaxed present modes (more-or-less vsync off) makes
vkAcquireNextImageKHR
andvkQueuePresentKHR
out-of-date more often than not while the window is resizing which means you either drop frames or deadlock.I do think the tutorials complicate things a bit more than they need to, there's probably a more straightforward way to explain things. But I'm now confident none of what they were doing is unnecessary. As one should expect. Chesterton's fence and all that.
What I'm doing now is to put image acquire and queue present in a particular nested loop that should maintain the synchronization primitives and prevent deadlock. It definitely feels simpler than the ad-hoc approaches the tutorials seem to use. I'll keep playing with it and see if that's true, but, having learned my lesson on wanton oversimplification, I'm a bit suspicious.
So I fixed that bug, and fiddled around a bunch with graphics pipelines and synchronization.
Synchronization is still a little scary, but I think I'm building a decent mental model of things. I struggled through intentionally trying to safely do things the wrong way: let multiple frames in flight safely read from a vertex buffer which is updated each frame on CPU. You aren't really supposed to do this; each frame in flight should get exclusive access to its own region of memory so there are no memory access violations. But doing it anyway and figuring out how to properly set up synchronization for this was illuminating.
Behold, my new greatest achievement: a wiggly box.
The graphics pipeline really seems to be where Vulkan shines compared to OpenGL. I'm still a bit out of my element, but I'm learning enough to tell that I like it.
Next step is to set up some simple 3d geometry. I want to experiment with render-to-texture and set up some shadow maps.
I have been continuing to work on my "Jackbox games-esque" game platform (https://gametje.com/). Here's a link to my original "Show Tildes" post: https://tildes.net/~comp/1dss/show_tildes_gametje
I recently got the first draft of my 4th game playable but it is only available for alpha testers. Should be available for everyone soon. I migrated from create-react-app (CRA) to vite recently and have been very happy with the speed. CRA hasn't been updated in multiple years and the vulnerabilities and overrides were starting to stack up. Ejecting a CRA is a bit of a mess and having a more modern replacement has been good. The speed is also noticeably better with vite. I also added some e2e tests for all 4 games to test out the frontend/backend together to make sure I don't introduce bugs.
Been diving into the Amazon Fire stick docs for packaging the website as an app to make it more accessible for users on that platform. Currently you can play via the Silk browser and login with QR code from your phone but it would be nice to have a more native experience there. The docs about creating/publishing a webapp in Amazon's store are pretty poor. I think I have a few leads, but there are surprisingly few examples and people talking about developing Amazon Fire TV apps. Perhaps I should just bite the bullet and create a wrapper in Android studio. Then I can publish to both Google Play and the Amazon store. I wish the Amazon sticks had something like casting to the TV (like a chromecast) as that was quite easy to implement.
Overall satisfied with my progress and hope to share the site more publicly soon. If anyone is interested in giving me some feedback, I would really appreciate it!
This is a really cool project! The games look very nice but I think your website could use a little bit of design to make it look less businessy and more fun.
Thanks for the feedback! You are 100% correct. I struggle with the UI design so I should probably recruit someone to help me in that area. I appreciate you taking a look.
UI design is insanely hard. I think that a simple color scheme change would help you out a lot. Maybe just start with something like this https://coolors.co/? Your website looks good, I think it just gives off the wrong vibes, you know what I mean?
All things considered, this is an awesome personal project and it is very professional looking. Are you hoping to add more games to it?
Thanks for the feedback! I have a 4th game that is almost done. It just needs a bit more polishing and sound/UI tweaks before I make it public. It is available for Alpha testers at the moment (mostly just friends/family at this point in time).
I have some other ideas for games that just need some time to make. I've been trying to focus on getting the payment system and user profile in place so that delayed the "fun part" a bit. In terms of creating a new game, I have the whole framework setup for similar gameplay loops so usually I can get the basic functionality of the game done in ~2-3 weeks. I'm working on it ~2 days a week along side my "paid" job so it's mostly just a matter how much time I get in a given week. As I said in my other comment, it seems like we have quite a bit in common, would be fun to connect and talk about our projects.
I've just started noodling around with Hono using the JSX Middleware for HTML templating and I am super impressed. I started a little blog application with it and I think I am going to move one of my SlimPHP projects over to it soon. I've been using Bun to run Hono as well and I am super happy with it. I still feel like because of the venture backing there will be a rug pull on Bun.
I’m still working on trying to make a linux desktop client for Apple Music in Rust using Apple’s MusicKit.js library. A couple tildes commenters suggested using Tauri and Dioxus for the UI & JS compatibility, but I want to see how far I can go with as little js as possible.
Since then I came across a blog post from Deno about making a custom javascript runtime in Rust using deno_core. It’s pretty barebones and outdated so I had to do some tinkering to get it working but that just makes it more enjoyable. The real blocker I’m having now is that MusicKit.js uses browser APIs unavailable in the deno runtime, like document and window objects. I’m trying to include a virtual dom library like jsdom, linkedom, or deno-dom but they’re returning a new class of reference errors I don’t understand yet. I think I can hack something together if I keep chipping at it but it’s going to take some time. I don’t know what I’m doing and it feels great to try and figure it out.
A web app to track the movies and TV shows you watch so over time you can see trends about what you watched and more.
I recently added some vfx to my mon tamer game.
https://www.youtube.com/watch?v=uQ5PXiWV6Xk
I've also been doing a lot of work on the UI and refactoring the code for the turn based combat. My code is looking much cleaner now. Next steps are to continue improving the combat. I plan to add logic for different move types (buffs, debuffs, heals, multi hits, etc) and then actually start designing the combat. This is an intimidating part of the project because combat design is hard, but it should be fun! Using godot is always such a joy.
Looks fun, what languages are you using to create the game? How far along are you?
Found your steam page (I think). Interesting concept for a game, combining virtual pet + rpg mechanics.
Thanks for checking it out!
I use godot and its language GDscript. I think you could actually use godot to create some of the games for your website if you wanted since it exports to HTML.
The concept for my game is totally inspired by an old ps1 game: https://en.wikipedia.org/wiki/Digimon_World.
In terms of how far along I am, I have no idea. I have been working on the game for about 8 months. I just want to make the best experience that I can and I think I will know when it feels right. I am getting to the point where the game is starting to take real shape in terms of its mechanics. Some of my goals are:
The gameplay loop will hopefully look something like this:
There is a lot more that I want to do but I wont bore you with too many details. Thanks again for asking!
Are you working on it full time or a side passion project?
The generational concept sounds awesome. Would be neat if one generation could teach another one (like a attack/defensive move or something). So that knowledge could "passed" down.
I definitely looked at Godot a bit when I first started my project but wanted to take advantage of knowledge I already had with React/Typescript. I may dive a bit into Godot for the next game or two to see what benefits I can get out of it. I read C# may be a better route for me since I an experience programmer (mostly in Java). Any reason you picked GDscript rather than C3?
Seems we have quite a bit in common, I would love to exchange ideas on our projects some time if you are open to it.
I wish I could work on games full time but as I am sure you know, there is not a lot of money in indie game dev.
I chose GDScript over C# because I prefer a pythonic style programming language and because the tutorial I originally followed used it. I have yet to experience any major issues using gdscript since you can still do typing and such but in the future, I may switch to C#.