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

17 comments

  1. [3]
    daychilde
    Link
    It's not self-promotion if I don't link to my sites, right? But let me know if I should take this down, no worries. After being let go in December, I've started my own business. I'm back into web...

    It's not self-promotion if I don't link to my sites, right? But let me know if I should take this down, no worries.

    After being let go in December, I've started my own business. I'm back into web design and hosting. But I'm working on concentrating on the hosting side of things. And what I've settled on is WordPress hosting - but not just WordPress hosting, but a turn-key web designer hosting business.

    Basically what I'm trying to do is be able to have someone who wants to do web design - who may be just starting out, or an expert, whatever - who wants to use WordPress - and take care of the back end - the technical stuff for them.

    I personally use Divi as well as Bootstrap with WP to design my sites - depends on mood and needs. I found out that I can offer Divi to my clients for as long as I host them. So while it would technically lock them into my service if they used my Divi, it would give them a chance to USE Divi at no extra cost. And they could get their own license if they moved away.

    But anyway. On the more technical side of things. I've been working on scripts to do things like deploy a new WordPress site with Divi installed - as well as certain common plugins (installed and activated) in a semi-automated way. I don't want to have clients be able to sign up for accounts, but I do want to - once I have a client - log into SSH and use the bash script I've written to set up the site.

    So far, I have a script that runs as root that allows me to set up a new site. Then I have a script I can switch to run as the user that allows me to install certain plugins from a directory readable to the clients (but writable by me). I can deploy the Divi theme or the Bootstrap-enabled theme. I even have an all-in-one option to deploy Divi plus a select number of plugins and remove Hello Dolly, Akismet, and the default WP themes.

    I'm working on expanding it - I use Virtualmin on my servers. So I want to be able to deploy a new site, request a new SSL certificate, switch to the user and deploy one of a couple of WordPress scenarios.

    Next up will be seeing if I can clone a site from terminal. If I can..... then I can do some basic setup and whitelabeling on sites I deploy. :)

    I will say though that if there's a project you've always wanted to do that runs in WordPress, talk to me. I'd like to give back to the community and give some webhosting permanently for no cost. It gives me a chance to make sure my idea works, and I've always enjoyed hosting for free where I could - I've hosted the Simurtans community for over 20 years now. :)

    6 votes
    1. [2]
      jmpavlec
      (edited )
      Link Parent
      I may be incorrect... but I think it's fine if you include some links. Tildes seems pretty friendly toward regular users posting things they are working on here. The technical posts are a perfect...

      I may be incorrect... but I think it's fine if you include some links. Tildes seems pretty friendly toward regular users posting things they are working on here. The technical posts are a perfect place for it, I certainly have been linking my own side project here. If I'm wrong, please let me know and I can retro-actively remove my links.

      On to my questions... What kind of servers are you hosting with? I guess you'd charge your customers a certain amount of money each month for the hosting costs and any consultation/feature enhancements? Or maybe WordPress/your package offers enough that they won't need you much after the initial implementation? Do you also offer domains or are your customers required to acquire those and point them at the right place?

      How do you handle scaling/caching if a site gets a ton of traffic? I use Cloudflare for my services so I don't need to worry about that too much, at least for the frontend.

      4 votes
      1. daychilde
        Link Parent
        I'm being slow to get my website updated because ① it's always harder to work on your own stuff than someone else's, ② it's not really how I want to attract cutomers, i.e. random unwashed masses...

        I'm being slow to get my website updated because ① it's always harder to work on your own stuff than someone else's, ② it's not really how I want to attract cutomers, i.e. random unwashed masses that include bots and spammers that want to abuse your service using stolen credit cards, and even ③ I'm strill working on details.

        That said, https://NullusAnxietas.com/ is a me. One of several domains, but that's the primary. I really do need to sit down and work on all of my sites and make myself look a little more professional. heh.

        On servers - I get barebones self-managed from a datacenter in the US. They have proved to be very stable, and the prices are really good. For server management software, I use Virtualmin. I used cPanel for well over two decades, but they kept bumping the price up and up and up and I got tired of it. I last played with Virtualmin around 2-3 years ago and I don't think it was there yet. Now, I prefer it to cPanel. Most of the annoying limitations of cPanel are gone, although I did appreciate the extra security of things like CloudLinux. But I think for me, Virtualmin is so much friendlier and capable, and I can really get in there and do some things I couldn't do with cPanel.

        I'm still working on exact pricing, although I have a basic idea. Mainly I'm trying to figure out how deep to discount for web designers. I'm leaning toward a sliding pricing scale where the first site costs retail, and additional sites get discounts so that by the time you get up to around 10 hosted sites, you've gotten down to a wholesale rate. I want to make it fair, but also make sure it's profitable and worth my time.

        I'm definitely not competing with bulk/cheap hosting. I cannot and I do not wish to try. What I bring to the table is my expertise and willingness to help with problems that most hosting providers wouldn't. And even if they do want to help - you call up and get a different person each time, whereas I'm the only one working with you, so I learn your sites. I'm also intending to be hands-on with the hosting - I'll keep WordPress up-to-date and secure so my clients don't have to worry about that. It does mean needing an admin account - but I mean, as the web host, technically I have access to the database anyway...... so if any webhost wanted to be a dick, they could. But I'm here to help.

        I don't directly offer domains. It's something I might look at at some point. But registering domains these days is easy, and unlike the old days, it's pretty easy to retain a domain. With something like Namecheap, make sure you have a card or paypal on file, have your domains set to auto-renew, and it's harder to screw that up. But for anyone who doesn't want to deal with it, I'll register the domain. Because taking payments costs me a little bit (it costs anyone to take a card), I round up the price of the domain to the next whole dollar and add two dollars to the cost. That doesn't cover my time, just makes sure that the cost is fully covered. I suppose it's sort of a convenience fee. It's not a moneymaker, but it's enough for me to do it for my clients. I'll gladly push their domain into their Namecheap account upon request.

        ...which is a big deal to me. I will never hold a site hostage. If someone wants to go somewhere else, I'll absolutely be glad to package up a server backup for them, give them a WordPress backup that they can install on fresh hosting, push their domain, whatever.

        Sorry to babble while answering your questions, just a lot I'd already wanted to say and hadn't. lol.

        On servers regarding scaling: I take a simple approach that I expect would be largely alright except in rare cases. For one, I do not overload my servers. I haven't decided on the hard limit of accounts per server, but these are dedicated servers with pretty decent specs for hosting and I'm limiting each one to I think 20 sites, although might be 25. Most of the sites I host will not see huge amounts of visitors. And one of the parts of my hosting is assistance with caching plugins and things to make the hosting work faster.

        I will admit I haven't played much with Cloudflare. It's on my to-do list. It's not a huge priority, though, frankly. Unless a client gets opinions. But I'll get there. heh.

        I'm hoping I have a good balance of speed, ease of use, support, etc. I think I do, but as I gain clients, I'll learn what they want from me.

        So my main offering is for folks who want to do web design, or designers who already use visual design tools - like various page building sites, or even themes in WordPress. People who hand-code don't need what I offer, probably.

        For those who are into design but really haven't picked up the back-end skills - that's where I offer more support than your random host. I can assist with things like:

        • Deploying WordPress
        • Finding/installing plugins (yes not hard, but knowing about what's out there is a thing)
        • Keeping things secure - up to date
        • Keeping things fast
        • Domain registration (manual, but I'll help with it)
        • Managing dev sites; deploying to live
        • Setting up / keeping SSL up to date
        • Can create email accounts, logins for client's vendors
        • Assisting with things like Gmail or Office365 setup/admin
        • Assistance with some WordPress problems

        I'm still trying to think of more of the things that I can do. lol. Because there are more things.

        And I am also open to doing web design projects. One of the lucky things is an old friend who has several projects for me to work on. I'm giving her a great rate, and she's spreading my name. In the process of hopefully picking up a couple more websites to work on.

        The thing that will be hard for me is finding the people who want to do web design who could use the assistance I have to offer. :)

        And I have some experience with this. Last decade, I did hosting for a bit - I wasn't able to make it profitable enough to live, alas. For one, my prices were too low. So I've realized that I should charge more, especially given the level of service I will be providing. heh. And it's in line with what design companies charge their clients for hosting. So it's workable. I just have to find the connections. :)

        2 votes
  2. Eji1700
    Link
    Diving into https://graphviz.org/ finally. Been meaning to for awhile because I have a LOT that i'll eventually need to diagram and would like it to dynamically update. That website is classic...

    Diving into https://graphviz.org/ finally. Been meaning to for awhile because I have a LOT that i'll eventually need to diagram and would like it to dynamically update.

    That website is classic RTFM design, which I don't love, and thankfully there's tons of great examples on the site, https://graphviz.org/gallery/ or elsewhere, https://graphs.grevian.org/example

    I've got a LOT of moving parts I oversee and this might finally help me breakdown to my bosses "I know you don't think a lot is going on, but here's where all the time was spent".

    Edit-
    Forgot there's also a lot of quick ways to edit/interact with them.
    A few VS Code extensions i'm still messing with, but also:
    https://magjac.com/graphviz-visual-editor/
    https://dreampuf.github.io/GraphvizOnline
    https://viz-js.com/

    4 votes
  3. [3]
    IsildursBane
    Link
    Haven't done much work on my audio player since I am waiting for parts to arrive. However, the audio player project has gotten me coding again after finishing school, so I have started a new...

    Haven't done much work on my audio player since I am waiting for parts to arrive. However, the audio player project has gotten me coding again after finishing school, so I have started a new project.

    I am currently in the early stages of doing a web app using React as the frontend, and Express for the backend. The app will be a recipe website that I can deploy to my old desktop running proxmox, so that my wife and I can reference recipes on our phones or computers. Having it use a database for ingredients means that we will be able to filter recipes by certain ingredients. There are other features as well that I hope to implement. I am using SQLite3 for my database, and Sequelize for my ORM. I currently have two tables setup, with a one-to-many relationship. I chose the backend frameworks because I am quite familiar with those, so I can put my attention on learning React as I have never used React before.

    3 votes
    1. [2]
      jmpavlec
      Link Parent
      How will you handle actually accessing the web app securely? VPN into your private network? Some authentication layer? Sounds like a fun side project. How are you enjoying Sequelize? It's been a...

      How will you handle actually accessing the web app securely? VPN into your private network? Some authentication layer?

      Sounds like a fun side project. How are you enjoying Sequelize? It's been a while since I used that library.

      What resources are you using to learn React? Are you using any additional frameworks?

      2 votes
      1. IsildursBane
        Link Parent
        I will just have it not accessible outside of my private network. There seems to be little point in having it be available outside of my home. I like Sequelize. It helps that a year ago I did a...

        I will just have it not accessible outside of my private network. There seems to be little point in having it be available outside of my home.

        I like Sequelize. It helps that a year ago I did a large group project in school, in a class that ran 8months where we built a web app using Sequelize. Since my goal right now is to learn React, I just chose the backend frameworks that I know quite well so that I do not get bogged down in the backend code. I am referencing the backend of that project as I forgot the initial configuration steps of Sequelize. Now that I am going, it is pretty quick for me to add new tables.

        The resources I am using to learn React is official docs, Google search for specific things I need, and referencing a project I made in Vue.js when I was taught Vue in school (our prof did not like React's documentation even though React is the popular framework, I think he made a bad decision here in teaching us Vue instead of React).

        1 vote
  4. Sunbutt23
    Link
    I’m trying to “learn” AWS, terraform, and workflows/pipelines. So I decided to try to automate the deployment of a pihole in aws (free tier). I also want Tailscale so I can block ads on the go AND...

    I’m trying to “learn” AWS, terraform, and workflows/pipelines.

    So I decided to try to automate the deployment of a pihole in aws (free tier). I also want Tailscale so I can block ads on the go AND lock down all ingress traffic.

    I’m technical enough to understand what I want, but inexperienced enough to not know how to program it all. So I’m using GitHub copilot to basically “write my code”.

    I’ve got the basic post deploy script to configure my pihole and Tailscale. Just gotta figure out the terraform (never used) then the GitHub actions (never used). And I wanna hide all the sensitive info in secrets and whatnot.

    P.s. - I’m open to suggestions for improvements or alternatives! I’m gonna try with GCP and Azure afterwards.

    2 votes
  5. jmpavlec
    (edited )
    Link
    I recently found some old code I wrote in 2017 which were the original implementations of some games I had before creating gametje.com. I wrote a blog post about revisiting them and getting them...

    I recently found some old code I wrote in 2017 which were the original implementations of some games I had before creating gametje.com. I wrote a blog post about revisiting them and getting them working again. It was fun to revisit the old code and be both simultaneously impressed and disgusted with some of the things I did. 2017 me was blissfully unaware of SQL Injection attacks 😅.

    2 votes
  6. 1338
    Link
    Maybe a less interesting project, but certainly a project nonetheless. I've been working on getting certifications recently. Just got an AWS cert and aiming for yet another Kubernetes one by end...

    Maybe a less interesting project, but certainly a project nonetheless. I've been working on getting certifications recently. Just got an AWS cert and aiming for yet another Kubernetes one by end of the month. By end of the year I'm aiming to have a full set of kubernetes certs as well as a few misc cloud certs. Then stop next year and have the whole year before I have to start deciding which ones to renew.

    2 votes
  7. [4]
    json
    Link
    Still playing around writing some interpreter for an esolang using zsh. https://github.com/master5o1/dick-sh It's so stupid but quite fun way to learn stuff bout zsh and shell scripts. zsh because...

    Still playing around writing some interpreter for an esolang using zsh.

    https://github.com/master5o1/dick-sh

    It's so stupid but quite fun way to learn stuff bout zsh and shell scripts.
    zsh because I use macOS.

    It's basically feature complete according to the esolang it's based on.
    Made a --strict mode validator to opt into adhering to restricted variable names condition.

    Next I'm gonna look at how LSP works and see if I can get vscode to understand this thing.

    1 vote
    1. [3]
      tauon
      Link Parent
      Now make it POSIX sh (Bourne shell) compliant >:)

      dick-sh

      zsh

      Now make it POSIX sh (Bourne shell) compliant >:)

      1 vote
      1. json
        Link Parent
        Changed stuff so it's not zsh specific and works with bash. Will work on what dash fails on next.

        Changed stuff so it's not zsh specific and works with bash. Will work on what dash fails on next.

        1 vote
  8. [3]
    tauon
    (edited )
    Link
    After deciding that I won’t need a Pi-Hole for at least the next few months (nor won’t set one up)[1], I took my old Raspberry Pi Zero 2 W and tried to set it up as a little USB gadget. It’s a...

    After deciding that I won’t need a Pi-Hole for at least the next few months (nor won’t set one up)[1], I took my old Raspberry Pi Zero 2 W and tried to set it up as a little USB gadget. It’s a nice little low-stakes project – the idea is to have something I could "locally ssh" into from any machine and have my workplace with me, provided the "any machine" has a port for me to plug into and ideally a screen/keyboard. Basically, the (usually) laptop device would transform into a dumb terminal/endpoint.

    Yes, it doesn’t really have a use case I can think of yet, but it seemed like a fun thing to do.

    After struggling for a short bit with an attempt to get Alpine Linux installed headlessly, I caved in and used the official Raspberry Pi Imager to flash a lightly pre-configured Raspberry Pi OS (Debian Bookworm port) onto my SD card. Haven’t had much time to do so yet, but once I sit down and figure out how it’s done, I’ll probably post a write-up with (hopefully) up-to-date, accurate steps to reproduce for Alpine. :P

    Perhaps interesting side note: It’s quite incredible how little demand there must be for "end user" (think my beloved Helix text editor, CLI quality-of-life apps, etc.) software on older hardware, given even I noticed how unsupported/uncommonly provided recent pre-built binaries are provided for 32-bit targets. (which by the way sounds painful, given the Zero’s CPU and memory limitations. I’ll have to see how much development work can actually be done on this thing in the future, at least for quickly iterating in compiled languages.)
    Had my device been an otherwise fairly similar first-gen Raspi Zero, I would have had to self-compile just about everything. At one point I read GitHub doesn’t even offer CI for 32-bit architectures on its free tier. I guess this means the move to 64-bit processors has been successful?

    [1] Won’t have/don’t use a smart TV, and all other devices have sufficient adblocking configured.

    1. [2]
      jmpavlec
      Link Parent
      Why not get a more powerful machine for such a use case? Can't imagine the compile times when using such a device for development. Was it just a "I already have the device" so let's see what I can...

      Why not get a more powerful machine for such a use case? Can't imagine the compile times when using such a device for development.

      Was it just a "I already have the device" so let's see what I can do with it type of a situation?

      1 vote
      1. tauon
        Link Parent
        Yeah, essentially – very much had it already lying around, haha. The “idea” (which remains an unrealistic scenario that was more of an initial excuse to make this setup) is I could do light work...

        Yeah, essentially – very much had it already lying around, haha. The “idea” (which remains an unrealistic scenario that was more of an initial excuse to make this setup) is I could do light work like writing documentation, scripts or just non-technical prose and notes with just this device in a way I’m used to (modal editor, syntax highlighting, etc.) and that’s not a phone keyboard. Or remote into somewhere using my own, already-trusted keys and alias-set-upped ssh config.

        Since posting the initial comment, I’ve come up with a somewhat feasible situation to use this in: From another project, I have a small (4-5 inch?) currently unused LCD screen; as well as a spare thin external keyboard+mouse combo, so if I pester my friend with the 3d printer enough for an enclosure project one of these weekends, this mini PC could be something to toss in the backpack (where my power bank already lives) “just in case” I wanted to do typing-heavy work outside on a nice day, but left the house for something else initially.

        You may ask “well why not just toss in the laptop just in case”, and yeah… I don’t really have an answer to that, ha. This is just a slightly less unrealistic use case.

        2 votes