Nanogram is designed for the enthusiest who wants complete data sovereignty on their social media platform.

Spin up your own instance on termux for Android.

Demo here.

Install instructions are at the bottom of the readme.

  • hereforawhile@lemmy.mlOP
    link
    fedilink
    arrow-up
    1
    arrow-down
    2
    ·
    12 hours ago

    The script builds the home directory that’s all. It’s building many other files than just the python app. All the html files, css, tor config, ect.

    Here is the directory it builds in the virtual termux environment.

    • bobslaede@feddit.dk
      link
      fedilink
      English
      arrow-up
      5
      ·
      11 hours ago

      Why are those files just not in the repo then, so it is easy to see what is going on? Why the “clever” script to make them?

      • hereforawhile@lemmy.mlOP
        link
        fedilink
        arrow-up
        1
        arrow-down
        2
        ·
        10 hours ago

        At this point they could be separated file by file into the repo no doubt.

        I did it for development ease and to make sure everything was interacting properly together for each iteration.

        To implement one feature you need to touch many parts of the program. html, css, python app, SQLite database logic. Having it all as a giant monolithic program greatly improves a LLMs ability to see every part for context. Having a bunch of separate files is not great for the context window.

        • bobslaede@feddit.dk
          link
          fedilink
          English
          arrow-up
          5
          ·
          9 hours ago

          Ok… I guess…
          I mean, I gotta say, I’ve been a professional developer for over 20 years now, and also using LLMs as a senior dev, to help with day to day stuff, and development. Never have anything like that ever seemed like a way to make things easy to develop.
          It is most certainly not easy to understand as a human, and to figure out.

          Here’s a tip:
          Writing good code, is about writing it for the next human, not for the machine.

          • hereforawhile@lemmy.mlOP
            link
            fedilink
            arrow-up
            1
            arrow-down
            4
            ·
            9 hours ago

            I’m not saying it’s the correct or proper way to do things; it was just the eaisist way for me to keep track of everything. This entire thing was created on mobile and I found it was quicker to keep things in one copy pastable format.

            The work flow was: ponder new features, discuss ways to implement, implement and generate the monolith with the implementation, copy paste into the terminal, test to see if it’s what I wanted, tweak stuff until I’m happy, rinse and repeat. It wasn’t like this was a one liner prompt into a LLM.

            Here’s a tip:
            Writing good code, is about writing it for the next human, not for the machine.

            not to be rude but as someone who has no coding background I feel like I can read and understand what’s going on in this raw source pretty well at this point after watching each portion generating 100’s of times. Why can’t you read and understand it you are a 20y senior dev?

            • bobslaede@feddit.dk
              link
              fedilink
              English
              arrow-up
              4
              ·
              5 hours ago

              It is not structured in a way that is easily understandable, or quick to get an overview over.
              It’s one big mess of code, all piled together.

              • hereforawhile@lemmy.mlOP
                link
                fedilink
                arrow-up
                1
                arrow-down
                2
                ·
                edit-2
                4 hours ago

                Why? Because it’s long and complex? It would be the same exact thing just separated. What’s the difference honestly?

                Here is a overview.

                It starts with defining environment variables, app directory, file permissions for the directory.

                Then it assembles/installs or updates the dependencies.

                Then is concatenates the python app. The python app is big because it’s complex with all the game logic of three mini games.

                The python app grabs all it’s dependency packages it needs, creates the database, defines all the functions I wanted such as… What’s a like, what does a comment button do, what does a login button do, what’s a Scrabble game, what’s a chess game, what’s a read receipt… All these functions define when and where to interact with the memory of the database.

                Then the html templates are concatenated. This is shell of what is served to the client so they can interact with the database.

                Next the CSS file is born. This is just a skin to make it all look nice.

                Finally, it finishes with the CLI server manager. It provides the operator admin functions. Turn the server on, off, networking on and off, backups, invites to server, uninstall the whole app and more.