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?

6 comments

  1. kari
    Link
    I've been writing a little digital clock overlay for Wayland (it should work on any compositor that supports the wlr layer shell protocol) called beanclock. Partly to learn some more about Zig and...

    I've been writing a little digital clock overlay for Wayland (it should work on any compositor that supports the wlr layer shell protocol) called beanclock. Partly to learn some more about Zig and writing Wayland software (I had already written a wallpaper program, also using the wlr layer shell protocol), and partly because I recently stopped using a bar with river but I still want to be able to see the time.

    There are still some things I'd like to add but it's at a point where I use it and don't have any issues anymore.

    I've really enjoyed writing Zig and am definitely intereste in using it for more projects, though I wish this PR to Gentoo's main repo would get merged soon so I could use an official eclass to package Zig projects for myself.

    As far as Wayland goes, I think it's cool writing software for it but I still have a lot to learn. River, the compositor I use, is going to release a "window manager" protocol at some point in a year or so which will basically mean river is just the compositor and all window management is left to a separate program, so I hope to be able to write myself a wm when that time comes.

    4 votes
  2. sokkies
    Link
    I saw an article the other day of someone who uses a dot matrix printer to get their daily news, so Im stealing that idea. I found a (40ish year old)printer for really cheap and got it to talk to...

    I saw an article the other day of someone who uses a dot matrix printer to get their daily news, so Im stealing that idea.

    I found a (40ish year old)printer for really cheap and got it to talk to my computer.. Now I just need to source paper that costs 500% more than the printer in my area, and then Im going to try and write a program that does a few things:

    • check if I slept over at my home the night
    • if I did give me a quick weather overview
    • give me a markets overview
    • remind me of any important dates via google calendar or a separate calendar if thats too much effort
    • give me an article that I sent via a telegram bot to read with my coffee
    • format and print everything around 8am when I wake if Im at home

    Im going to try and write everything in Rust because its the higher level language im best at, I hope Ill get somewhere with this project over the next weekend or so.

    4 votes
  3. ogre
    Link
    I made it about halfway through the book Zero to Production in Rust and I’m giving up. The book is excellent- it’s Rust that I’m burnt out on. In an effort to naturalize Rust’s syntax in my brain...

    I made it about halfway through the book Zero to Production in Rust and I’m giving up. The book is excellent- it’s Rust that I’m burnt out on. In an effort to naturalize Rust’s syntax in my brain I’ve been coding it for a couple hours nearly every day for a while now. I think I’ve reached the level of understanding I was aiming for but it came at the cost of enjoying the language. Rust has its purposes but I’d rather pick another language when programming for fun.

    Since then I’ve picked up Zig and I’m almost done making a neofetch clone. It was trickier than I expected because Zig’s standard library isn’t fully baked, but it offers interfaces for syscalls and I’m able to grab most of the data from there. The hardest part was defining the first external struct to match the shape of the data written by the syscalls. Once I got that first struct working the rest were trivial. I like the speed of my fetcher compared to neofetch, I like Zig, and I don’t like the man pages very much. The only thing left to do now is make some cool ascii art to print out with my system’s info and post a screenshot of my semi-transparent terminal and unriced DE

    4 votes
  4. honzabe
    (edited )
    Link
    About a year ago I discovered the Flask Python framework, and I liked it so much that I started using it for all my pet projects. First, I rewrote an app I made for myself to help me learn...

    About a year ago I discovered the Flask Python framework, and I liked it so much that I started using it for all my pet projects.

    First, I rewrote an app I made for myself to help me learn languages - the original one was a "quick and dirty" thing that only worked locally, with no database, no user accounts, and data stored in localStorage. Now it's a decent app that I keep improving.

    Another app came about sort of by accident. It started here on Tildes, during last year's TiMaSoMo - I wanted to make an app for training data analysis. The part that handles data from .fit files turned out to be more complex than I expected... but to my surprise, I found that what was originally supposed to be just the core of the app is useful on its own - a journal with a few simple tools for data analysis. When I write my #weight = 160 lbs, the journal looks at older entries and makes a nice graph of my weight over time.

    I'm a bit of a data nerd. When I start doing pushups, I make a chart and see if the progress is steeper with two days of rest instead of one. And when I start getting recurring headaches, for example, I'll write down everything that might be related - how long I slept, how many coffees I had, whether I ate sweets or not... - and look for patterns.
    Even the simplified version of the app is still rough around the edges, but I find it useful for understanding how things in my life are related.  BTW, interesting fact - tinnitus, at least in my case, signals the onset of overtraining before anything else.

    I have other projects too, but this is already too long. And they are all written with Flask.

    3 votes
  5. skybrian
    Link
    I'm still doing heavy internal refactoring on repeat-test. There's a Script class that divides building a value into multiple steps and the shrinker understands the step-based format when mutating...

    I'm still doing heavy internal refactoring on repeat-test. There's a Script class that divides building a value into multiple steps and the shrinker understands the step-based format when mutating values. I have ideas for changing the edit format to be a bit more high-level, treating strings (for example) as atomic values in the build log, rather than breaking everything down into a sequence of picks.

    I should probably release what I have, though. The public API changed a little and in the unlikely event that anyone else starts using it, I'd rather they used the newest version.

    3 votes
  6. goose
    Link
    I'm only skilled in shell script (bash). There's a particular rock/hip-hop mash up duo I've been following for years who post their stuff to Soundcloud. The episodes are around 90 minutes long, so...

    I'm only skilled in shell script (bash). There's a particular rock/hip-hop mash up duo I've been following for years who post their stuff to Soundcloud. The episodes are around 90 minutes long, so not exactly condusive to traditional music media players which expect tracks more in the 3-5 minute range, and no need to save playback progress.

    I wrote a bash script to use yt-dlp to grab the media, and then parse it for various data and properties, which it then stores in an sqlite database alongside the media files themselves.

    Then, I spent a few hours going back and forth with ChatGPT to generate a PHP page to parse the data from the sqlite database, and generate an XML RSS feed that I can load in to my podcast client as a private podcast. As a result, cron keeps files regularly updated and downloaded, and that PHP page will dynamically update accordingly. My podcast client periodically checks for new episodes, and saves my progress along the way if I have to turn it off part way through.

    Small thing, but given that I know very little PHP, I'm pretty happy with it!

    2 votes