46 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?

41 comments

  1. [3]
    brandons
    Link
    I've been iterating on this project once a year for the last 3-4 years. I've implemented it 3 times in 3 different languages (python -> scala -> rust) because it's been such a great way to learn a...

    I've been iterating on this project once a year for the last 3-4 years. I've implemented it 3 times in 3 different languages (python -> scala -> rust) because it's been such a great way to learn a new language.

    At a high-level, there are two components. The first sends me a weekly email of three randomly chosen recipes (weighted on how frequently they have been recommended in the past) from my list of recipes. The email contains a button to "Add Ingredients". If I click that button, a second component runs. That component adds all the ingredients from those recipes to a Todoist project. This iteration incorporated cooklang as the recipe parsing layer, which enabled the ingredients to be sorted by where they are in the grocery store as well as combining the same ingredient from different recipes.

    repo

    12 votes
    1. [2]
      chroma
      Link Parent
      Oh wow, TIL cooklang. How on earth did you come across this? My mind doesn't exactly think of home cooking in the same vein as like, web frameworks or something, and think "yep, there's probably a...

      Oh wow, TIL cooklang. How on earth did you come across this? My mind doesn't exactly think of home cooking in the same vein as like, web frameworks or something, and think "yep, there's probably a tool that already does this", haha.

      That being said I'm fascinated by the idea of DSLs for not necessarily technical stuff, particularly solving the problem of getting a non-technical person to use my technical thing. I add to this project for creating strength training programs every now and then to try to explore the idea.

      4 votes
      1. brandons
        Link Parent
        It was so long ago that I don't remember to be honest haha. I'm sure I saw it on HN or a programming subreddit like r/rust or r/programming. When I went to reimplement this project in Rust, I was...

        Oh wow, TIL cooklang. How on earth did you come across this?

        It was so long ago that I don't remember to be honest haha. I'm sure I saw it on HN or a programming subreddit like r/rust or r/programming. When I went to reimplement this project in Rust, I was prompted by my brain randomly remembering that a thing like this exists. "A thing like this" being a thing that parses ingredients from recipes. Even then, it took some digging.

        It's a pretty nifty idea, and the author has been really responsive and helpful.

        3 votes
  2. [3]
    Dotz0cat
    Link
    I am still working on farmd. Last week I refactored the code a ton. It made it a lot easier to maintain. Also a lot easier to get into, if someone wanted to do that. This week I have been working...

    I am still working on farmd. Last week I refactored the code a ton. It made it a lot easier to maintain. Also a lot easier to get into, if someone wanted to do that.
    This week I have been working on adding new buildings/processing. While the fields/trees have been using linked lists under the hood. I have been building the new processing buildings to use ring buffers for queuing under the hood. I think I finally got the logic for it right. Definitely since I am going with a three pointer version. So now I am working on abstracting the code some, to make maintaining and new additions a lot easier. Here it is if anyone wants to check it out. All the fun stuff is currently going on in the milling branch.

    10 votes
    1. [2]
      PuddleOfKittens
      Link Parent
      Oh wow, you really ought to clarify that farmd is a SFW farming game. I googled it and the first (and second) response was: https://store.steampowered.com/app/1814630/FarmD/ Apparently it's...

      Oh wow, you really ought to clarify that farmd is a SFW farming game. I googled it and the first (and second) response was:

      A NSFW furry game for engaging in lewd shenanigans with your dragon friend.

      https://store.steampowered.com/app/1814630/FarmD/

      Apparently it's primarily focused on VR but with a desktop backup. I haven't actually clicked the link yet, I think this is more than enough internet for the moment.

      2 votes
      1. Dotz0cat
        Link Parent
        Yes, I really should. I did forget to add my usual "half of a farm game". Maybe I should change it to "not the dragon fucking game".

        Yes, I really should. I did forget to add my usual "half of a farm game". Maybe I should change it to "not the dragon fucking game".

        4 votes
  3. l_one
    Link
    So, not coding, but I think it qualifies as technical. I've been working on assembling my electronics workbench for a while now, adding to it and improving it since around November of last year....

    So, not coding, but I think it qualifies as technical.

    I've been working on assembling my electronics workbench for a while now, adding to it and improving it since around November of last year.

    This is how it looks today - I added better lighting that shines from above and behind me when I'm at the bench, wired in all the lighting controls to a central switch on the right, added cable and probe management and various equipment additions.

    It's been a hobby project of mine, but now it's looking like I can use it to start up a side business buying industrial electronics at auction, test and/or repair them, and start up an eBay store to sell them on. It has me excited.

    10 votes
  4. Mermachett
    Link
    I'm looking to improve my coding skills, and took on a small project to practice/showcase what I'm reading and learning about. I'm building a timer for my archery club in Typescript, so the...

    I'm looking to improve my coding skills, and took on a small project to practice/showcase what I'm reading and learning about.

    I'm building a timer for my archery club in Typescript, so the webpage can be shown in a screen setup in the range so people can see the time left, without having to buy an expensive official timer. To be used only in non official tournaments and practice of course

    5 votes
  5. g33kphr33k
    Link
    Scripting, in bash. I've used Bash for years but I thought I'd write myself a useful script and try and make it more modular and functional than I usually would. The script is a bulk encoder for...

    Scripting, in bash. I've used Bash for years but I thought I'd write myself a useful script and try and make it more modular and functional than I usually would.

    The script is a bulk encoder for video files, aiming at AV1 codec and being pointed at a directory of movies and doing some codec work.

    It's fairly rudimentary still, but does everything I need it to. I'm happy to add features and functions if people want/need them.

    AV1Conversion Script as hosted on gitlab.

    5 votes
  6. dontmessyourself
    (edited )
    Link
    I’m a sysadmin and write a lot in PowerShell in work. I write lots of little scripts but the ongoing project is a ‘toolkit’ for the Service Desk. It’s a GUI that allows them do a number of actions...

    I’m a sysadmin and write a lot in PowerShell in work. I write lots of little scripts but the ongoing project is a ‘toolkit’ for the Service Desk. It’s a GUI that allows them do a number of actions like creating a new Outlook profile, refreshing Teams, a bunch of SCCM client actions, as well as password resets, reading DC logs to find the source workstation of lockouts etc. Good little time saver and it’s helped develop my skills, too

    3 votes
  7. [3]
    Comment deleted by author
    Link
    1. [2]
      bitwise
      Link Parent
      I will be needing to do something similar in the next year and I'm curious, if you wouldn't mind sharing, why Rust? I have no judgement of it, actually no knowledge of it, hence my question.

      I will be needing to do something similar in the next year and I'm curious, if you wouldn't mind sharing, why Rust? I have no judgement of it, actually no knowledge of it, hence my question.

      1. [2]
        Comment deleted by author
        Link Parent
        1. bitwise
          Link Parent
          I appreciate the thoughtful detailed response. Your first paragraph could have described me as well. I will check it out.

          I appreciate the thoughtful detailed response. Your first paragraph could have described me as well.
          I will check it out.

  8. cheeseberder
    Link
    I've been working on creating a self-hosted podcast manager, kind of like Pocket Casts but entirely self-hosted. I've made hardly any progress on it since I keep choosing a framework to try out...

    I've been working on creating a self-hosted podcast manager, kind of like Pocket Casts but entirely self-hosted. I've made hardly any progress on it since I keep choosing a framework to try out and then I end up switching to something else and re-writing everything... the last framework I tried for it was Phoenix. Overall I like it, feel a little tempted to go back to the typical REST API + React single page app, though.

    3 votes
  9. cokedragon
    Link
    Still working on my shoot-em-up zombie game, built in Java with libGDX, I started during the lockdowns in 2020 and put largely on hold until December 2022. The aim has been to get into advanced...

    Still working on my shoot-em-up zombie game, built in Java with libGDX, I started during the lockdowns in 2020 and put largely on hold until December 2022. The aim has been to get into advanced topic s, so I've strayed from using a pre-built game engine (though it has dragged out development haha).

    This week, it's been a lot of ironing out bugs. Spent the greater part of yesterday figuring out why my HP (which I just switched from a bar to hearts) wasn't rendering. Debugger showed it got to the line and everything. Turns out when I copy-pasted the old line for the bar, I used the width and height instead of x and y... This corresponded to coordinates off the screen somehow. Should've checked that first.

    Anyways, onto patching a way to heal from zombie infections. I leave for about 12 days - seeing my fiancees and my family and a vacation - in the morning, so it'll be a while till I can wrap that feature up. But you bet I'll be jotting down plans in Trello.

    3 votes
  10. devalexwhite
    Link
    Have the day off today, spending it at the library coding up a little Rust app that parses a directory and outputs 3 new directories, one for Gemini, one for HTML and another for Gopher. It will...

    Have the day off today, spending it at the library coding up a little Rust app that parses a directory and outputs 3 new directories, one for Gemini, one for HTML and another for Gopher. It will also convert Markdown files to gmi, txt or html, generates index files when needed, append navigation to outputs (ie => Back for Gemini), and push updates to aggregators (ie Antenna on Gemini).

    I'm sure there are plenty of solutions to running Gemini+Gopher+HTML out of one source, but it felt like a fun project!

    1 vote
  11. HolaSrDavid
    Link
    Not strictly a programming project, but I'm working on learning a Unreal Engine 5. I've always wanted to make a video game and I also really want to write a video game soundtrack, so I figured I'd...

    Not strictly a programming project, but I'm working on learning a Unreal Engine 5. I've always wanted to make a video game and I also really want to write a video game soundtrack, so I figured I'd just do both at the same time.

    1 vote
  12. log0ymxm
    Link
    In between job hunting, I've been working with a bioinformatics research team at a University to scale up and refine a machine learning model they're developing. Whatever the outcome, it's been...

    In between job hunting, I've been working with a bioinformatics research team at a University to scale up and refine a machine learning model they're developing. Whatever the outcome, it's been nice to keep up human collaboration and it's nice to contribute to something that will probably end up being open and public.

    1 vote
  13. [4]
    karsaroth
    Link
    I've decided to learn Python by building a livestream translation tool backed by Whisper (from OpenAI). It's currently working fairly well, it's nice to be able to watch and understand streams in...

    I've decided to learn Python by building a livestream translation tool backed by Whisper (from OpenAI). It's currently working fairly well, it's nice to be able to watch and understand streams in different languages. Hopefully it'll be an officially supported capability on more platforms soon.

    1 vote
    1. [3]
      wababa
      Link Parent
      Wow that’s really cool! What languages does it support? Do you have a demo we could see?

      Wow that’s really cool! What languages does it support? Do you have a demo we could see?

      1 vote
      1. [2]
        karsaroth
        Link Parent
        Thanks! Whisper apparently supports 98 languages officially, though it only translates to English. I've tried it with French, German, Spanish, Japanese, Korean and Indonesian. It seems capable of...

        Thanks! Whisper apparently supports 98 languages officially, though it only translates to English. I've tried it with French, German, Spanish, Japanese, Korean and Indonesian. It seems capable of getting most phrases in those languages (based on context clues and my limited understanding).

        I tried to upload a short recording from when I was testing it out on vods, but I'm not sure there's any easy site to do that on these days. My go-to used to be gfycat, which looks dead.

        I'm planning on open sourcing it. I've been hesitant because its my first Python app, and its not really complete yet, but I do want to share it for others to use and maybe iterate on. I suspect that the big stream platforms will probably offer this natively at some point soon in any case. Hopefully Youtube's auto translate will be improved at the very least?

        1. wababa
          Link Parent
          I think sharing and open sourcing it early is a great idea! Even if it isn’t finished it’ll be valuable to get people interested in the project. I for one would love to check it out

          I think sharing and open sourcing it early is a great idea! Even if it isn’t finished it’ll be valuable to get people interested in the project. I for one would love to check it out

          1 vote
  14. ZarK
    Link
    Too many live projects right now! Context switching is painful. Creating a few mobile network installation tools, reporting outages, info about the sites for field workers etc. Sensitive stuff, so...

    Too many live projects right now! Context switching is painful.

    Creating a few mobile network installation tools, reporting outages, info about the sites for field workers etc. Sensitive stuff, so the interesting challenges here are security, adding 2FA, protecting any input etc. .net backends, angular frontends. Mostly a team lead / architect for these.

    Then I’m setting up a prototype chat for customer service using openai and adding context from vector databases, basically just following the guidelines / tutorials openai has made. Using python for now, but probably have to switch to .net and put it in Azure openai. Completely new domain to me and the application of AI makes sense here, so that’s interesting.

    Lastly, upgrading and adding some features to our company website. Using next.js, sanity.io and tailwind. It’s a fantastic tech stack that I highly recommend. I guess it’s the project I like the most since I created everything myself, but it’s harder to prioritize since the other projects are for customers.

    No time for personal projects these days but I’ve been tinkering image library stuff for 10 years without ever managing to make a complete product.

    1 vote
  15. LGUG2Z
    Link
    I've been working hard to add static configuration loading into my tiling window manager, komorebi. In an effort to try and attract more contributors (people often say they don't know how to...

    I've been working hard to add static configuration loading into my tiling window manager, komorebi. In an effort to try and attract more contributors (people often say they don't know how to contribute because the codebase is in Rust), I've been posting development videos on YouTube to show my process as I add new features and talk about the codebase. Worth a watch if you're interested in either Rust or tiling window managers!

    1 vote
  16. Bauke
    Link
    After several different cycles of attempt -> get really close to the solution -> give up, I've finally figured out how I can return multiple different types based on an input parameter in...

    After several different cycles of attempt -> get really close to the solution -> give up, I've finally figured out how I can return multiple different types based on an input parameter in TypeScript, without having to use as anywhere. Inference only!

    The code (TS Playground)
    // Define some classes to use as different example types.
    class ClassA {constructor(public a: string) {}}
    class ClassB {constructor(public b: string) {}}
    
    // Create our keys as an enum.
    // This makes it easier to change the values without having to go through
    // each file, should the need ever arise.
    enum Key {
        A = "a",
        B = "b",
        C = "anything I want",
        D = "long timeout",
    }
    
    // Sidenote, if the keys are needed as an array at runtime:
    // const keys = Object.values(Key);
    
    // Define our values as an object that we don't explicitly type.
    // TypeScript will infer the shape of the object for us.
    const values = {
        // Another sidenote, you can use enum values as object keys by surrounding them with brackets, neat!
        [Key.A]: new Promise<ClassA>(resolve => resolve(new ClassA("Hey from Class A!"))),
        [Key.B]: new ClassB("Bye from class B!"),
        [Key.C]: "Hello from a regular string!~",
        [Key.D]: new Promise<string>(resolve => {
            setTimeout(() => {
                resolve("Finally, the timeout finished!");
            }, 5000);
        }),
    };
    
    // Here's the shape this ends up being:
    // const values: {
    //     a: Promise<ClassA>;
    //     b: ClassB;
    //     "anything I want": string;
    //     "long timeout": Promise<string>;
    // }
    
    // Finally, the most important bit. A single function that takes in a Key and based on
    // that key returns only *specifically* the type that that key is associated with.
    // No TypeScript inferring intersections or unions and erroring out saying they can't be assigned properly.
    async function getValue<K extends Key>(key: K): Promise<(typeof values)[K]> {
        return values[key];
    }
    
    // An important tidbit is that regardless of if the value returned is a Promise
    // or not, awaiting works without issue. The getValue function technically doesn't
    // need to be async, but for my use-case I will need it so it's nice to know
    // there doesn't have to be any special functionality to handle that.
    
    async function main() {
        // Correctly infers ClassA with Key.A.
        console.log(await getValue(Key.A));
        // Correctly infers ClassB with Key.B.
        console.log(await getValue(Key.B));
        // Correctly infers a string with Key.C.
        console.log(await getValue(Key.C));
        // Correctly infers a string with Key.D but the Promise will take 5 seconds to resolve.
        console.log(await getValue(Key.D));
        // And after it has been resolved once, any subsequent calls immediately complete!
        console.log(await getValue(Key.D));
    }
    
    // Use a main function because top-level await doesn't work in TypeScript's Playground.
    void main();
    

    I'll be using this in instances like this, where I'm going to have multiple different types and already have a key to uniquely identify them, but don't really want to have one function for each individual thing, like I have now.

    1 vote
  17. [3]
    hellojavalad
    Link
    I feel a little weird saying that this is “programming” (it isn’t what most people would view as traditional programming), but I am a Filemaker developer at my workplace. This week I began working...

    I feel a little weird saying that this is “programming” (it isn’t what most people would view as traditional programming), but I am a Filemaker developer at my workplace. This week I began working on importing some files (csv, various Excel formats) we receive from clients or generate ourselves, with the goal of exporting them as XML files for another piece of software that we use.

    The problem is Filemaker exports XML files with tags literally called <Row><Col><Data></Data></Col></Row> and I need to have very specific elements with name attributes for this piece of software to use. But I sat down and reviewed my XML knowledge and looked through some XSLT tutorials and came up with a transformation sheet that formats it all correctly.

    Probably not a big deal for most people, but the other Filemaker devs that I work with are self-taught and hadn’t had much success trying to do this in the past, so it was nice as the newest addition to be able to contribute in a major way.

    1 vote
    1. [2]
      karsaroth
      Link Parent
      XSLT is one of those things I remember fondly, back when everything talked via XML, but these days I don't get to use it at all. I wonder if I'm forgetting all the frustrating bits though. How do...

      XSLT is one of those things I remember fondly, back when everything talked via XML, but these days I don't get to use it at all. I wonder if I'm forgetting all the frustrating bits though. How do you find it?

      1 vote
      1. hellojavalad
        Link Parent
        It wasn't too hard once I got going, though it took me a bit of time. Though yesterday I was chatting with a Filemaker developer online who suggested I should have just grabbed the data and placed...

        It wasn't too hard once I got going, though it took me a bit of time. Though yesterday I was chatting with a Filemaker developer online who suggested I should have just grabbed the data and placed it in a JSON variable and write it out in a text file with an XML extension with the added tags inserted around the data as need be.

        Which...yeah, probably would have been easier.

        2 votes
  18. Leftbones
    Link
    For the past few months I've been working on a new version of an old project of mine, a falling sand simulation. This is technically my 4th (or 5th? I can't remember) attempt at this project, but...

    For the past few months I've been working on a new version of an old project of mine, a falling sand simulation. This is technically my 4th (or 5th? I can't remember) attempt at this project, but the first several attempts were in C/C++ where I was way out of my comfort zone, and my codebase kept turning into spaghetti.

    This time around I'm using .NET and I'm much more comfortable, though sacrificing some speed of course. I currently have the simulation working (a basic cellular automaton with interactions between elements, elements have properties, etc.), and I've implemented a chunk-based processing system so that chunks with no activity can be skipped over, which increased performance a lot.

    Currently, I'm working out "dirty rectangles" within these chunks, so that if only a small portion of a chunk is active, I can skip processing the rest of the chunk. I'm running into some issues, mostly because I am figuring it all out on my own since I can't really find any examples of this online, but I think I'll get there.

    Next up after dirty rectangles is multithreading, which I already have a plan for, thanks to a GDC talk from one of the developers of Noita explaining how their simulation works.

    1 vote
  19. [2]
    NoobFace
    Link
    Been working with Python/Pandas on my first ETL project. Involves dumping data from an API, mapping it to a config JSON, then reading the config JSON into a query for a different API and dumping...

    Been working with Python/Pandas on my first ETL project. Involves dumping data from an API, mapping it to a config JSON, then reading the config JSON into a query for a different API and dumping that data to year, month, day partitioned Parquet. Parquet defaults in Pandas seem a bit anemic, so I'm just using native PyArrow for my daily Parquet partitions. I'm going to need to mash these partitions together for some burndown charts. I'm hoping the Parquet partition handling defaults for reading in Pandas are a bit better than the writing, but I'll just map to dataframes through PyArrow if necessary.

    1. mydogpenny
      Link Parent
      If you run into trouble with Pandas, take a look at Polars.

      If you run into trouble with Pandas, take a look at Polars.

  20. splorg
    Link
    I've been messing with WebGL a lot over the last few years (www.tranceport.io) as an example, and I'm starting to play with the latest version of BabylonJS with WebGPU support. It's pretty...

    I've been messing with WebGL a lot over the last few years (www.tranceport.io) as an example, and I'm starting to play with the latest version of BabylonJS with WebGPU support. It's pretty exciting/crazy to think you can build a full, GPU accelerated in browser game nowadays!

  21. artvandelay
    Link
    Last time I posted about how I was working on a wrapper for Tildes for iOS. Well, I wanted something similar on my daily driver Android phone so I quickly threw together something. Screenshot...

    Last time I posted about how I was working on a wrapper for Tildes for iOS. Well, I wanted something similar on my daily driver Android phone so I quickly threw together something. Screenshot below. Always love working with Jetpack Compose and I absolutely love Material 3 theming. The theming just adds a little bit of playfulness to the whole UI.

    https://imgur.com/a/SQzGDXg

  22. bendvis
    Link
    Working on writing C++ on a Teensy 4.1 (Arduino-like board) to run ~300 RGB LEDs in a battery-powered sign. This is last year's version: https://imgur.com/a/WOFKjEL This year is getting rebuilt...

    Working on writing C++ on a Teensy 4.1 (Arduino-like board) to run ~300 RGB LEDs in a battery-powered sign. This is last year's version: https://imgur.com/a/WOFKjEL

    This year is getting rebuilt and re-written from scratch with more LEDs, better color control, a faster processor, an accelerometer, less weight, and a battery that's tucked into the sign itself.

  23. TOUnail
    Link
    Been stagnant for a while but I was brushing up on JavaScript (ES6). I really should start learning TypeScript.

    Been stagnant for a while but I was brushing up on JavaScript (ES6). I really should start learning TypeScript.

  24. 0xSim
    Link
    I spent a good part of the last 12 months working on an Obsidian plugin (Omnisearch). Even though there's still more than 40 issues in the backlog (including a few bugs), I need to put the project...

    I spent a good part of the last 12 months working on an Obsidian plugin (Omnisearch). Even though there's still more than 40 issues in the backlog (including a few bugs), I need to put the project in the backburner or I'm definitely burning out on it.

    Right now I'm writing a roguelike to use Rust, and sometimes small experiments in PICO-8.

  25. voodoo-badger
    Link
    I'm horrible at structuring my projects, so there's a path of broken and unfinished things as well as functioning things I'm no longer entirely sure why I made.. The latest at least functioning...

    I'm horrible at structuring my projects, so there's a path of broken and unfinished things as well as functioning things I'm no longer entirely sure why I made..

    The latest at least functioning (but not exactly finished) project is a set of scripts using rclone to back-up predefined config files i find myself recreating again and again.

    I spun up an ubuntu lxc in proxmox and set up a basic smb share that I use as a remote for clients and decided on using rclone because you can set up a cloud storage provider as the remote. Setting up the remote to a 3rd party provider was a lot more steps than I want to repeat, so I decided on an smb server as the central server, and to just script the (much simpler) config for smb remotes on each clients. It's really a great tool allowing for some backup redundancy at very little cost.

    Which reminds me that it all started as a sidequest because I got annoyed that my various WSL's and VM's didn't have the pentest lab files synced so I was always lacking something or forgetting to push to the repo

  26. 4_sided_snow
    Link
    Trying my hand at a few different methods of process injection on Windows. Since I graduate uni soon, I wanted to take advantage and take some courses I found interesting before I head out of...

    Trying my hand at a few different methods of process injection on Windows.

    Since I graduate uni soon, I wanted to take advantage and take some courses I found interesting before I head out of studenthood. An offensive security engineering course caught my eye, and here I am. I always felt like I had a poor understanding of Windows internals (Linux is where I have done most of my exploratory computing as a young adult), and it's neat to get this knowledge and perspective from the lens of something that aims to pull the strings from the background.

    I'm not sure if this information will be very useful to me in this light, but there is a certain satisfaction in learning via seeing what's possible.

  27. hamstergeddon
    Link
    I mentioned in the last thread that I was building a browser-based notes app for myself to use. With the idea being a corkboard of notes, images, etc. I could move around the screen at will. It'll...

    I mentioned in the last thread that I was building a browser-based notes app for myself to use. With the idea being a corkboard of notes, images, etc. I could move around the screen at will. It'll pair nicely with my newly discovered fondness for grouping tabs in Firefox. At work each ticket gets its own tab group with all of my reference material in it. The idea is that I'd create a new board for each ticket and the tab with that board opened will get thrown into the group.

    I settled on Laravel and Sanctum to create an API and backend for it. So far I've got authentication and all of the GET requests fleshed out, which means I can now focus on the frontend a little bit. Bouncing between the two halves of the project will help keep me from getting too bored with it. Frontend will be ReactJS, as I need to learn it for work. I've got familiarity with VueJS and AngularJS (as in the ancient, discontinued version).

  28. mordae
    Link
    TV-B-Gone clone with a custom board designed in KiCad to play with at the IT club I run for 14-18 yo kids at the local community center. Based on rp2040, it was a great fun. I hear the kids are...

    TV-B-Gone clone with a custom board designed in KiCad to play with at the IT club I run for 14-18 yo kids at the local community center. Based on rp2040, it was a great fun. I hear the kids are already using them to terrorize the neighborhood. :]

    From September on we going to collectively design a gameboy-like device (based on rp2040) and then write some games for it.

  29. Crimson
    Link
    Right now I'm working on getting into home lab/a home server. I've only got some basic stuff up and running (a Jellyfin server and a dashboard) but I'm hoping to expand it in the future to include...

    Right now I'm working on getting into home lab/a home server. I've only got some basic stuff up and running (a Jellyfin server and a dashboard) but I'm hoping to expand it in the future to include a Minecraft server for me and some friends, some home security things like cameras, and then some smart home type of service.

    I'd also appreciate any suggestions on things I could set up as I do enjoy the learning process.

  30. overbyte
    Link
    On and off continuing to migrate my homelab to a Kubernetes cluster the "semi hard way" when I get free time on weekends. Currently a bunch of Fedora VMs configured with kubespray. Once I can wrap...

    On and off continuing to migrate my homelab to a Kubernetes cluster the "semi hard way" when I get free time on weekends. Currently a bunch of Fedora VMs configured with kubespray. Once I can wrap my head on how ignition configs work, will switch the VMs to CoreOS.

    For CI, have a fleet of self-hosted GitHub runners going on the cluster and will setup Actions Runner Controller next, with an eventual move to a self-hosted GitLab. Or Gitea + $CI. Then maybe stand up Harbor on a separate VM so I can simulate having an "external" registry.

    For CD, testing a switch to Argo instead of Flux since I'm finding the latter's documentation somewhat sparse in regards to be able to point and test changes locally, plus I already have Argo for work so I'm more familiar with it. I've seen a setup on it, but it looks complex compared to Argo's --local flag.

    On the app side, playing with a copy of the Tildes codebase and containerizing it just for kicks. Try upgrading bits to make it run on a Python 3.11 container, in-cluster Redis, talking to Postgres outside the cluster (which is just more VMs), hook the app into the in-cluster Prometheus stack,

    Bonus is if I can get automated alembic migrations working between versions, maybe through an Argo resource hook. We use Flyway at work and it'll be pretty hard to work at another company which don't use these things.