Inspired by this Lobsters thread, and some of the great comments within it, I would like to ask if anybody is doing some hobby programming this weekend?

  • I got interested in constraint programming, and I had NO idea how it worked. It seemed like magic.

    I have started on following the slides and code of MiniCP, and have started implementing the first steps in Rust. I find it very challenging but it is a great learning experience. I got such a thrill from solving the N-Queens problem in milliseconds from a program that I had written myself.

    I am continuing to develop the implementation for a few hours this weekend. Because writing a constraint system is hard, I am also learning some new parts of Rust that I have not touched before.

  • rozodru ( rozodru@piefed.world ) 
    link
    fedilink
    English
    arrow-up
    14
    ·
    2 months ago

    I’m trying to build my own Wayland WM. why when there are so many out there? because I don’t feel like any of them do them well. either they all focus on fancy animations (hyprland) or slam you with features without focusing on specific things (mangowm) or primarily have issues with mouse/keyboard focus on games in window mode or just games in general when you toggle away from them and back (all of them) and that annoys me.

    There’s one specific game I play in window mode with multiple clients of the game running, it’s EVE Online. ALL the Wayland WM’s have issues with this. you move away from the window and back it doesn’t grab the mouse back the first time or the keyboard won’t work the first time going back. X11 WMs have ZERO issues with this. but like with Niri you have to switch workspaces and back just for it to grab the mouse/keyboard again. Hyprland you have to switch windows and back. Sway is the same type of deal.

    So I’m trying to build a Wayland WM with a focus on gaming and vim style navigation as that’s what I do on my machines. game and code. I just want to take a suckless type approach and do one thing and one thing well. I’m also tired of the idiotic configs and resource hogs of many of these. there’s an x11 WM called SXWM written by a 13 year old whose config file is the most simple and clean one I’ve ever seen. many x11 WMs are like this (CTWM is another example of a clean and simple config) I want to adapt that to Wayland as hyprlands switch to lua and thus turning it into a mess also annoyed me.

    it’s a big project but one that I feel needs to be done. so I’m just building something that tiles, is solid with the mouse and keyboard, and has a very simple config and low resources. that’s it.

    • provectus ( provectus@lemmy.ml ) 
      link
      fedilink
      English
      arrow-up
      2
      ·
      2 months ago

      Good luck with it. You will learn a lot. Also there is no such thing as a Wayland wm, but rather a Wayland compositor, and that is a distinct difference between X11 and Wayland.

  • trem ( trem@lemmy.blahaj.zone ) 
    link
    fedilink
    arrow-up
    7
    ·
    2 months ago

    A few weeks ago, I threw down a CLI for getting web-links for a local repo, so you could e.g. run forge path docs/index.md and it would give you a permalink for your GitHub/Codeberg/etc. repo to that index.md file.
    Now I’ve used it for a few weeks and I’m realizing all the dumb assumptions I’ve made about how Git repos work.

    For example, there’s also a subcommand forge issue 123, which gives you a link to issue #123, but of course, it’s not necessarily true that you actually have your issues where your code lives. You might have a separate JIRA, or you might be working on a fork from which you’ll post a PR later.

    Now I’m trying to figure out how to make it work at the very least for my own use-cases, ideally without requiring configs for every repo.

    But yeah, it’s great fun. Some excellent puzzles and also very humbling, because I’m pretty much supposed to be an expert in Git and yet:

    1. you suddenly see me googling shit like “git fetch vs. push url”, and
    2. I struggle just as much to formulate proper requirements as our customers at $DAYJOB.
  • tias ( tias@discuss.tchncs.de ) 
    link
    fedilink
    arrow-up
    7
    ·
    2 months ago

    I’m working on a classifier to keep the chaos of my inbox under control. It uses the gemini LLM API (gemini-flash-lite) to add labels to each email depending on things like:

    • does it require an action from me?
    • does it require a reply from me?
    • is there a deadline?
    • is it an invoice?
    • is the information just an event about changes to information that exists in another system (i.e. a notification that can be deleted)

    Currently upgrading from the 2.x to the 3.x model and tuning some of the prompts.

  • one_old_coder ( one_old_coder@piefed.social ) 
    link
    fedilink
    English
    arrow-up
    6
    ·
    2 months ago

    Kotlin Multiplatform because I’m unemployed, and Kotlin is a nice language and it’s been decades since I haven’t done a mobile application (the last ones were in Java for Android and Objective-C for the iPhone).

  •   ( nbsp@programming.dev ) 
    link
    fedilink
    arrow-up
    5
    ·
    2 months ago

    upgrading unloved django blog to 5.2, rebuilding vps, moving everything to uv and working out how that’s going to play with piku.

    if get that done, fix up some of the css on my blog and start a blog post to use as back country and camping check list (bc i forgot some stuff i really should have taken on last tour).

    half arsed look for new job.

    help bro cut down a tree.

    clean the car.

  • andioop ( andioop@programming.dev ) 
    link
    fedilink
    English
    arrow-up
    5
    ·
    2 months ago

    I’m lucky enough to sometimes take public transit that publicly posts its data on arrival times and the like. Have been working on a script to tell me when there’s a track change (which changes where I need to wait for the train) because I’m a lazy person who wants to just have a notification fly across my phone screen instead of actually checking on the website. Currently working on testing some functionality before dumping it on my Raspberry Pi. I usually work on this while on the transit, but hopefully I’ll do some of it this weekend.

    Also would like to get working on the bog-standard baby coder personal project habit tracker, to make sure I remember how to do front end, back end, etc. I’ve learned I am more likely to use a system I built for myself. We will see if I get to it!

  • A_norny_mousse ( A_norny_mousse@piefed.zip ) 
    link
    fedilink
    English
    arrow-up
    4
    ·
    2 months ago

    Polishing my current SailfishOS installation. Some systemd services to tweak things, some user scripts in .desktop files (i.e., menu icons). I’m not an app developer but I love how I can do all my Linux tweaking on my phone, too.

    The OS has gotten a lot better recently, and I’m on the most suitable non-dedicated device now. It should last me some years.

  • shape_warrior_t ( shape_warrior_t@programming.dev ) 
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    2 months ago

    Just finished “version 0” for a very simple programming language yesterday, and I’m looking to work on “version 1” this weekend. Rust is truly fun to program in… although writing all the tests was not a very fun experience. But doing the work for that meant I was guaranteed to have a reasonably good grasp of the semantics by the time I finished.

    Since it’s Rust, there’s no garbage collector – heck, for this particular language, there’s not even any memory allocation after startup. Instead you get a giant global array of “memory” to work with. The only data type is the 32-bit integer (and thus, using UTF-32 for strings is actually the """correct""" choice for this language). I’m using a vaguely Lisp-like syntax that revolves around {[a tree] formed from (brackets and whitespace)}… which was probably slightly easier to parse than more traditional syntax, but Rust’s current lack of pattern matching “through” Vec (for example, letting you extract e from {a b [c (d e)] f} in one step) didn’t always make it feel that way.

    Nest up: adding while loops, exponentiation and bitwise operators, and most interestingly, string and character literals. (The char literals would just evaluate to their character codes, and string literals would only be usable in a specific write-to-memory construct.) And also expanding the standard library. I’d say “version 1” would really be the more properly “complete” version of the language. I also want to do a functional programming variation (ditching the global memory in favour of reference counted cons cells), and also the whole language is kind of just a stripped down version of another much bigger language half-formed in my head, but that’s all probably for… not this weekend, at any rate.

  • insomniac_lemon ( insomniac_lemon@lemmy.cafe ) 
    link
    fedilink
    English
    arrow-up
    4
    ·
    2 months ago

    I have a couple of ideas bouncing around, but they might be too ambitious (plus harder that I use a less common language, often via bindings).

    The first is a lot of ideas for a mesh editor, but not sure where to start. Technically, I already started a while ago with a text-based* polygon format/loader for Raylib so if I had some (high-level) way to export that polygon to a 3D file (single/double-sided faces or extruded) that’d be the first step. However I never really used/continued what I made (2D) because of how windings (fan vs strip) are, not good** as you’d need to keep track of it during usage. Perhaps something else might be better, like p5js?

    The other is a frameless+floating X11 WM, and I’m similarly unsure of what I should use for drawing a title/titlebar and window buttons (and inset controls if possible). .xpm for bar/buttons is a maybe.

    * sparse (a rectangle is 4 numbers on an otherwise empty grid), not like traditional (filled) ASCII art

    ** maybe expecting winding from an unordered list of points is too much, but not sure there’s an easy way to cover windings for most situations. Color index (8-way) used as face hints, or similar (4-way?) for inside direction? Multiple origins for raycasts?

    • e0qdk ( e0qdk@reddthat.com ) 
      link
      fedilink
      arrow-up
      2
      ·
      2 months ago

      fan vs strip

      Why not just work with a collection of triangles directly? It uses more memory, yes, but it’s simpler to reason about and can also have parallelism benefits (since each triangle is independent).

      It can still be useful to track shared vertices (and reference them by index) though.

      • insomniac_lemon ( insomniac_lemon@lemmy.cafe ) 
        link
        fedilink
        English
        arrow-up
        2
        ·
        2 months ago

        That’s how it could work when it gets to 3D anyway (with face-corner vertex color which I might not always need) but that’d be a pain to define by hand and the format I have I don’t actually have a way to define the same point more than once as it’s on a text grid.

        for example, an oval

        Note: it appears round here, but it isn’t

        #values: matrix_xres matrix_yres target_size vert_num
        #vert pattern is cntrclckwse (related: replace 0 with @ for closed shape) or |/|/
        31
        15
        160.0
        9
                       1               
                                       
            2                     8    
                                       
                                       
                                       
                                       
        3              @              7
                                       
                                       
                                       
                                       
            4                     6    
                                       
                       5               
        
        

        Easier to edit in a text editor with syntax highlighting that marks spaces for a visible grid.
        My face hinting idea also doesn’t work with this shape due to orientation (would work as a more traditional octagon), it also seems to be more obvious/viable with a larger grid (looks right for a 32x32 star shape).


        • e0qdk ( e0qdk@reddthat.com ) 
          link
          fedilink
          arrow-up
          1
          ·
          2 months ago

          I’m not sure I quite get it, but if I’m following correctly, you’re using the numbers to indicate a sequence of vertices for a triangle fan here (with @ indicating the central vertex), right? If so, the vertices are used in more than one triangle; (0, 1, 2) and (0, 2, 3) are triangles that reuse vertex 0 (@) and vertex 2.

          If that’s what’s going on then it should be fairly straightforward to turn shapes defined like this into extrusions; for the simplest case you duplicate and offset the triangle fan for the other end and then generate quads/pairs of triangles for the extruded faces of the prism – and for more complicated cases you can repeat that (with planar alignment if needed) following a curve in small increments.

          I might not be following though since I don’t know what you mean by color index face hints.

          • insomniac_lemon ( insomniac_lemon@lemmy.cafe ) 
            link
            fedilink
            English
            arrow-up
            2
            ·
            edit-2
            2 months ago

            You are right about a few things, though the key is that Raylib is what’s creating the polygon (after I parse the text file into a sequence) and ideally I don’t handle face/mesh creation myself (at low-level). Maybe eventually.

            what you mean by color index face hints

            For additional context on where faces are.

            I’ve mentioned vertex color (ideal as face colors), but I probably do want to handle a 3-digit-hex color palette with object-library-wide management.

            here's what I was thinking with verts no longer numbered (instead E for external, C for corner. even-odd might work better in some cases), index numbers as hints and for color

            Each arm would be its own color

            #values: matrix_xres matrix_yres target_size vert_num
            #IDEA, fails with heart as there is only 1 corner vertex
            32
            32
            160.0
            11
                                            
                           E                
                           1                
                                            
                                            
                                            
                                            
                                            
                                            
                                            
                                            
            E2         C       C         3E 
                                            
                                            
                           1                
                          2@3               
                          4 5               
                     C           C          
                                            
                                            
                                            
                           C                
                                            
                                            
                                            
                                            
                                            
                                            
                                            
                 4                    5     
                E                      E    
                                            
            
            

            The reason I’m thinking about this is that it would be better to have one way to define verts. triangle_strip can generally do more (shapes with no central point) than triangle_fan, though I think the star here is the sort-of-thing that a single triangle_strip cannot do. That, and with numbering it only allows 62 verts (0…9, a…z, A…Z), and is a bit clunky to iterate on. Numbering, especially with a strip, is also a lot more complex as you get more verts. If I got to the point of making my own editor*, I might abstract this away so the user only works with points.

            Use-in-code-wise I may have already solved fan-vs-strip with a function that just compares the values of the first few points to choose draw type, though I wasn’t confident in that as it’d require a lot more testing. Might be better to store that in an enum as well.

            * I wasn’t quite sure of using what I already made for anything more than a simple arcade-like game, so that sort of kills motivation, needing to do even more technical work just to get visible results.

            • e0qdk ( e0qdk@reddthat.com ) 
              link
              fedilink
              arrow-up
              1
              ·
              edit-2
              2 months ago

              OK. I think I see what you’re getting at. If you can figure out how to get it to the point of an outline, there are triangulation libraries that can fill in the mesh for you (I think I’ve mentioned one to you before a long time ago) if you want flat end caps on the extrusion. I’m not sure off the top of my head how you’d get to an outline from that star example though – a few ideas come to mind, but they’re very much half-baked ideas… :p

              Best of luck!

              Edit: the triangulation library I was thinking of: https://github.com/mapbox/earcut

  • echo ( echo@lemmy.ml ) 
    link
    fedilink
    arrow-up
    3
    ·
    2 months ago

    I’ll probably continue working on my Swift GTK/libadwaita wrapper and the demo project that makes use of the library. Doing it this way has been very pleasant, it allows me to put it through real world tests and helps me identify stopgaps in the toolkit I wouldn’t otherwise notice through unit tests alone.