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. [3]
    Rudism
    Link
    Back in the 90s one of the local AM radio stations where I lived had a late night programming block where they played old radio shows from the 1930s to 1950s, stuff like Escape, The Whistler, The...

    Back in the 90s one of the local AM radio stations where I lived had a late night programming block where they played old radio shows from the 1930s to 1950s, stuff like Escape, The Whistler, The Shadow, Jack Benny, Our Miss Brooks, and so on. Every night for years while I was in high school and college I'd go to bed listening to that (followed by Coast to Coast AM with Art Bell).

    Several years ago I discovered that all those same shows were available on archive.org, and due to loopholes in the US copyright system may not be protected by copyright at all, so I spent way too much time downloading, tagging, and cataloging every old time radio show I could find and built an Android app that could stream them on demand. There were already a lot of other apps that offered OTR (old time radio) streaming, but I found each one lacking in some way (either their catalog was lacking, background play was buggy, or it was riddled with ads). I built my app primarily for my own use, but I also added the ability to subscribe for a few bucks a month figuring maybe it could cover its own hosting costs if a few other people were sick of the free garbage apps and were willing to pay for a more premium experience.

    It was chugging along for quite a while, earning a couple hundred bucks a month in subscriptions at its peak which did cover hosting costs plus a bit extra. The problem was that maybe once or twice a year I'd get emails from Google saying I'm using some old API for media playback or billing that was going to be deprecated soon and I needed to switch or else be delisted. Because the app was otherwise so low-maintenance, every time that happened I basically had to re-learn my entire code base and figure out how to swap in the new library and test everything to make sure it was working, which was quite a burden--especially when it came to the billing APIs which I felt were way more complicated than they needed to be. In the end, I decided to shut down the Android app as a result. I refunded all the current subscribers' most recent payments, cancelled all the subscriptions, and de-listed the app from the Play Store--though I left the server running so that anyone who still had the app downloaded could keep using it for free until it actually stopped working.

    I let it sit that way for a while, but recently (due in part to a lot of sad emails I got from people who used the old app) I've decided to spin it back up as a web application, which is now running at radiostasis.com. Professionally I've been a fully backend-only engineer for a long time, so UI/UX is definitely one of my weak points. It's been a fun challenge and interesting learning experience researching the different front-end frameworks that are out now. The last time I did any kind of front end web app work the only real option was JQuery, which I actually liked quite a bit, so seeing all the super-heavy and complex SPA frameworks that people use now is very intimidating. I settled on htmx because it appealed to me the most in its simplicity and lends itself well to server-side rendering.

    One thing the Android app had been missing that I wanted to tackle this time around was brief descriptions of each of the OTR series in my library. I had them tagged with genres, but beyond that there was no real information about the shows. To solve that, I created some scripts that did a few things:

    1. Pulled results from a Google Search API for each show name, presenting me with a list of results, and allowing me to select the most promising of those as "source" links. Mostly these came from archive.org, Wikipedia, and other Old Time Radio websites.
    2. Fetched the content of each "source" link and cleaned it up a bit to remove page boilerplate and reduce the content as much as possible down to details about the show.
    3. Sent the content to the ChatGPT API and asked for a summary of the show (I went through several prompt engineering iterations to get something clean and consistent).

    With over 270 shows, doing the research and writing summaries myself could easily have taken months or years to complete, but thanks to ChatGPT I got descriptions of all the shows in a couple days. I used the newer ChatGPT-4 model so it ended up costing me around $50 in API calls, but I'm super pleased with the results.

    Anyway, that's my primary technical side project right now. I'm much happier writing a web application (currently without any accounts or billing to make things annoying, which I do plan on adding eventually but kind of dreading it) compared to a native Android app, and installed as a PWA it works pretty well on phones too.

    9 votes
    1. FlippantGod
      Link Parent
      You might also check the-eye.eu 's collection of old radio shows, probably duplicates but you never know.

      You might also check the-eye.eu 's collection of old radio shows, probably duplicates but you never know.

      2 votes
    2. cfabbro
      Link Parent
      For someone who claims their weakness is UI/X, it doesn't show. I really like that design!

      For someone who claims their weakness is UI/X, it doesn't show. I really like that design!

      2 votes
  2. onyxleopard
    (edited )
    Link
    I've been noodling with shell-gpt and configuring different "roles". This lets you create easily re-usable, task-specific flavors of gpt-4 (or gpt-3.5 or any other gpt-* models that Open AI makes...

    I've been noodling with shell-gpt and configuring different "roles". This lets you create easily re-usable, task-specific flavors of gpt-4 (or gpt-3.5 or any other gpt-* models that Open AI makes available in their API in the future). See Open AI's explanation of this feature here for more detail.

    I put up a repo with an example of this that I've configured to make it easier to repeatedly perform a particular linguistic annotation task. This could be easily extended to create more roles for different tasks, though.

    6 votes
  3. ruspaceni
    Link
    I haven't done any meaningful programming for aaaages but lately I've been messing about with a little board game in python. It's a little chess adjecent alternative history thing that someone...

    I haven't done any meaningful programming for aaaages but lately I've been messing about with a little board game in python. It's a little chess adjecent alternative history thing that someone made for a goofy little conlang ive been learning (toki pona)

    Was gonna use godot since itts pretty cool but learning a whole new tool is way too exhausting. Spent the weekend messing about with data structures and writing all the little helper functions but now im at the point where the meat and potatoes are done and now its time to involve graphics.

    Not sure its ever going to see the light of day but its a fun way to internalize the rules of the game and derust myself a bit. I almsot forgot how fun it is to bodge things in ways that make my compsci friends hurt inside.

    4 votes
  4. DawnPaladin
    Link
    I've been wanting to build a todo app around some of the ideas behind this blog post. Traditional todo apps make your task disappear as soon as you complete it, which doesn't feel good; I want...

    I've been wanting to build a todo app around some of the ideas behind this blog post. Traditional todo apps make your task disappear as soon as you complete it, which doesn't feel good; I want something that lets you look back on your accomplishments. I also want something that helps you plan which tasks you want to work on which day, taking into account the relative size of different tasks.

    If I build this, I really want it to be easy to maintain and to not cost me money every month. I'm interested in using SvelteKit because I don't want it to ship more JavaScript than necessary. They have documentation about deploying to Vercel and Netlify, and other adapters exist.

    I'm really looking forward to writing this app but I'm dreading the maintenance apps always need. Can anyone recommend a stack and/or deployment platform that will let me build a tiny app for just one or two people that won't be a hassle to maintain?

    2 votes