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

36 comments

  1. hamstergeddon
    Link
    I've been playing around with arduino lately. I bought a big bag of random components off of aliexpress to play around with. For my first real-use project (as in, not just messing around for fun),...

    I've been playing around with arduino lately. I bought a big bag of random components off of aliexpress to play around with. For my first real-use project (as in, not just messing around for fun), I decided to create a little notification gadget that would blink and play a tune when I received a notification on my computer. I've got the arduino side done-ish so if you send it a "p" over serial, it'll trigger the notification code. I'm mostly interested in notifications for Slack and Gmail, but I haven't done much research into how to have those notifications trigger the device's.

    In typical ADHD-me fashion, I got distracted by some rabbit trail in the middle of the project. The tutorial I was using to understand how to interface with the speaker included some code for a tune player. You fed it an array of notes and durations and it would play the tune back accordingly. So then of course I just had to find some familiar songs, which ultimately led to this repo of Linux beep commands for a few songs. Manually converting the /beep commands to the Note objects I'd created was slow, so I wrote a JS script to use regex to extract the command arguments and dump them out in the console as an array of Note objects. Then I'd just copy/paste those into my C++ code and I was good to go aside from some minor tweaks to the playback speed.

    Forgive the code, because even this simple bit of code is the most complex C++ I've ever written. The jump from single-file to multi-file was a HUGE leap for me. I'm JS and PHP guy...I like my languages high level. So even getting to this point was a huge effort on my part. On the upside, all this typed code is going to make my transition to Typescript in the next few months a little easier to wrap my head around.

    https://github.com/jd13313/nano-notifier/tree/master/src

    I'm open to feedback on the code though. C++ is completely new to me, so even the most basic of suggestions would be extremely helpful.

    7 votes
  2. [4]
    apolz
    Link
    I've been enjoying messing around with an Inkplate 10. It's an ESP32 programmable e-ink screen that can be used as a photo gallery, weather station or anything you can code up in Micropython or...

    I've been enjoying messing around with an Inkplate 10. It's an ESP32 programmable e-ink screen that can be used as a photo gallery, weather station or anything you can code up in Micropython or Arduino.

    I use it as a weather report and a slideshow of kid photos.

    4 votes
    1. zoroa
      Link Parent
      It still kills me how expensive low powered displays are. I've had a project I've wanted to build for years now that would need a decently high resolution, large format e-ink display. The panel...

      It still kills me how expensive low powered displays are.

      I've had a project I've wanted to build for years now that would need a decently high resolution, large format e-ink display. The panel alone would be a couple thousand dollars.

      2 votes
    2. [2]
      slambast
      Link Parent
      I bought an ESP32+small e-ink display kit with similar goals, but I never got much further than printing bad-looking text to the screen. It looks like the Inkplate's software situation is much...

      I bought an ESP32+small e-ink display kit with similar goals, but I never got much further than printing bad-looking text to the screen. It looks like the Inkplate's software situation is much better - have you found that part easy to use?

      1 vote
      1. apolz
        Link Parent
        Yeah, the guides and small examples are great. I was lucky that I haven't had to spend very long with tedious driver issues or anything like that. The extra cost of the Inkplate was well worth it...

        Yeah, the guides and small examples are great. I was lucky that I haven't had to spend very long with tedious driver issues or anything like that. The extra cost of the Inkplate was well worth it to me.

        1 vote
  3. [3]
    slambast
    Link
    I've been working on rescaffold, which is a tool to unpack reusable parts of codebases (scaffolds) into multiple projects as needed. It's roughly similar to yo/create-react-app and the like, but...

    I've been working on rescaffold, which is a tool to unpack reusable parts of codebases (scaffolds) into multiple projects as needed. It's roughly similar to yo/create-react-app and the like, but it can update a codebase to use updated versions of the scaffolds in it!

    It's functional enough to actually be used, even though it can't git pull yet, and doesn't have sophisticated conflict management. But it can unpack a scaffold into an existing project, with template replacement for configurable things like project names, and it can also update existing files (and won't overwrite files you've changed yourself). It will also remove files that have been removed in the updated version scaffold they came from.

    For example, you can make a small scaffold that adds source for an executable to a Go project. It might just contain one file: pkgs/go/cmd/<command name>/main.go. Adding this scaffold will ask you what the project name should be. If you say "foo", it'll create pkgs/go/cmd/foo/main.go, creating any directories that don't exist yet, and leaving everything else alone. Then, if the scaffold source is updated, you can update the file with the new contents, but only if you haven't modified the file yourself. You can use many small scaffolds this way, or few huge ones, and it should just all work together!

    3 votes
    1. [2]
      lynxy
      (edited )
      Link Parent
      I love this idea! I find I'm often bouncing between projects that utilise shared code, mirroring changes I've made in the latest to catch my attention to all of the others. This tool seems to...

      I love this idea! I find I'm often bouncing between projects that utilise shared code, mirroring changes I've made in the latest to catch my attention to all of the others. This tool seems to address this use-case almost perfectly :)

      If I find some time to play around with it, I just might.

      Edited: sentence structure.

      1 vote
      1. slambast
        Link Parent
        I was having exactly the same problem! Glad it's not just me. Let me know what you do think if you try it out (and use with caution since it's a newly made tool that has the capability to delete...

        I was having exactly the same problem! Glad it's not just me. Let me know what you do think if you try it out (and use with caution since it's a newly made tool that has the capability to delete files)!

  4. [2]
    lynxy
    Link
    My current collection of projects are all similar- web themed. On top of steadily expanding upon my template git repository (which can be specialised for a number of different project types...

    My current collection of projects are all similar- web themed.

    On top of steadily expanding upon my template git repository (which can be specialised for a number of different project types through the use of a python script [py, c++ executable, c++ lib, http]), I've been working on a number of common or shared tools and code between my personal landing page, a portfolio which I'm procrastinating on populating with text (I am hopeless at the whole self-advertising thing), and a simple mongodb based image sharing site. (Deep breath).

    I've been moving away from PHP in favour of very light-weight client-sided page rendering. I'm not a fan of the idea of larger bloated JavaScript frameworks so everything is vanilla, optionally minified. All API calls are passed through an NGINX reverse proxy to a very simple low-level socket based python script I've dubbed, imaginatively, echopy. This is what interfaces with mongo.

    You'd have thought that after years of approaching development in this way I'd get a little less stubborn- a little more willing to utilise existing, and I'm sure very powerful tools. Maybe not. At least I'm not producing any of this stuff commercially, eh?

    Otherwise I've been working on expanding further on my personal Discord bot. Who doesn't have one at this point? The latest changes include a refactor which improves the behaviour of many of the modules while the bot resides in multiple guilds at once, as well as a module for calculating, given a number of entry and exit dates, the number of Shengen Zone days a non-EU citizen has left during a rolling period (thanks, Brexit).

    3 votes
    1. guissmo
      Link Parent
      I’m working on updating my personal website as well! Its current state is fugly! Funny enough, I took a copy of my CV and started translating it to a webpage. The CV is written in tex so I asked...

      I’m working on updating my personal website as well! Its current state is fugly!

      Funny enough, I took a copy of my CV and started translating it to a webpage. The CV is written in tex so I asked ChatGPT to convert the code into JS objects which I then used in loops to make a webpage version. At least for those types of things ChatGPT seems reliable!

      1 vote
  5. foenix
    Link
    I've been hacking on a few "transformers" python functions ranging from image resizing to notes transcription. It's been a good exercise in understanding scale and getting ready for a media...

    I've been hacking on a few "transformers" python functions ranging from image resizing to notes transcription. It's been a good exercise in understanding scale and getting ready for a media portfolio project I'm building out.

    2 votes
  6. [2]
    karsaroth
    Link
    So I got to the point where I felt my livestream translation project was usable enough to be open sourced. I think I'll still try to improve it, but even as it stands now it might be useful to...

    So I got to the point where I felt my livestream translation project was usable enough to be open sourced. I think I'll still try to improve it, but even as it stands now it might be useful to some people. I called it smatter

    I think @wababa said they're be interested in seeing it, so I'm tagging them here.

    I'm hoping to make it possible to host a local "restream" next, with subtitles included. Ideally this makes it possible to watch it on a mobile device or TV.

    2 votes
    1. wababa
      Link Parent
      Congrats on publishing to the public! I can tell you’re working hard on it. Would be sweet to see it running in a docker container like you mentioned in your future plans. I’ve star-ed it on...

      Congrats on publishing to the public! I can tell you’re working hard on it. Would be sweet to see it running in a docker container like you mentioned in your future plans. I’ve star-ed it on GitHub, will be watching the development!

      1 vote
  7. [4]
    ADwS
    Link
    I've been working on my website. Basically it's just one project with a thousand little sub-projects that I can jump between. Recently, I spent a bunch of time implementing a "forum" like feature...

    I've been working on my website. Basically it's just one project with a thousand little sub-projects that I can jump between.

    Recently, I spent a bunch of time implementing a "forum" like feature that will probably never be used. It has some of the basic features implemented, like sign ups, login/logout, posting, and commenting, but a lot of other basic features aren't there yet. Things like notifications, replying to comments, post tagging, or even comment/post deletion don't exist at the moment.

    I plan on implementing all of that down the line, but got busy with the recent holiday and work beginning to pick up.

    My implementation has all just been plain PHP and a MySQL database for the backend, and a bit of Bootstrap theming for the frontend. Quick, simple, and easy to implement. The only issue is that Bootstrap is a much bigger library than I really want to deal with. My goal is to make the site as light and easy to load as possible, and Bootstrap/jQuery bumps up the minimum size quite a bit. Down the road I might redesign the look to be more in line with the simplicity I am hoping for.

    1 vote
    1. [3]
      jdsalaro
      Link Parent
      What's your website? I'd love to check it out. I can sympathize with the many-sub-projects nature of the whole ordeal. For my website I use Sphinx for managing the structure and I've found it...

      What's your website? I'd love to check it out.

      I can sympathize with the many-sub-projects nature of the whole ordeal. For my website I use Sphinx for managing the structure and I've found it super enjoyable to dig into its humongous codebase and understand the inner workings. As a result of that I spent my last weekend reviewing, opening as well as tracking down and documenting and fixing a relatively simple bug that was way too hard to track down.

      1 vote
      1. [2]
        ADwS
        Link Parent
        It's a really bland and empty site at the moment haha. You can see it here, but be warned, it really is just a terrible mix of ideas with very little actual "content". Its "design language", at...

        It's a really bland and empty site at the moment haha. You can see it here, but be warned, it really is just a terrible mix of ideas with very little actual "content". Its "design language", at least for the non-forum portion, is a take on this. I think I will probably eventually setup subdomains (like portfolio.adws.io, forum.adws.io, or images.adws.io) instead of going the /dir/ route that I am currently using, but that is yet another project that I will need to setup in the future. (I am not looking forward to configuring and figuring out security settings for such a setup. Maybe I'll just configure my DNS to forward people to the correct directory based on the subdomain... I haven't decided yet.)

        I probably should use Git's issue tracker to keep track of all of this like you are doing, but at the moment, I am enjoying not having actual tasks to tackle after I get off work doing the exact same thing lol. I do have a private repo for the source code (mostly for backup purposes as it's all one branch).

        I have been viewing this site as more of a "canvas" where I can haphazardly toss stuff onto and not worry about things getting ruined because there was never anything substantial living there in the first place. That too will probably change over time, but until it does I shall continue living this reckless dev life in my free time.

  8. [3]
    grumble
    (edited )
    Link
    I do not do my job in my free time. I have far too many other interests to indulge. If you want to, more power to you. It's not a negative as I have done this before, but I don't think engineers...

    I do not do my job in my free time. I have far too many other interests to indulge.

    If you want to, more power to you. It's not a negative as I have done this before, but I don't think engineers spending all their free time engineering should not be normalized.

    Of course, my hobbies include woodworking which is basically me getting to do that parts of making stuff that I don't normally get to do.

    1 vote
    1. [2]
      g33kphr33k
      Link Parent
      Isn't woodworking just engineering with practical fun steps? I totally understand that some people do IT for a living and then don't want to do it in their spare time. I have been in the IT game...

      Isn't woodworking just engineering with practical fun steps?

      I totally understand that some people do IT for a living and then don't want to do it in their spare time. I have been in the IT game for just shy of 28 years now, and my field of work is pretty much a bit of everything due to where I sit in the food chain. However, I still love to tinker on silly things for me, and you're right that it shouldn't be normalised. For those of us that are geeks and nerds at the core though, it's just what we love.

      Of course, I still like long walks with the dogs and annoying the kids, and that should definitely be normalised.

      4 votes
      1. grumble
        Link Parent
        Yeah. I call it a precision fetish. Build, measure, and cut precisely. I just do design, and not even enough of that. Plus, if I don't pay myself my salary or account for the tools, I can make...

        Yeah. I call it a precision fetish. Build, measure, and cut precisely. I just do design, and not even enough of that.

        Plus, if I don't pay myself my salary or account for the tools, I can make real heirloom furniture for way less than the other furniture we buy. My foot is on the best coffee table I can imagine. It's full of mistakes, but it will last way longer than my console.

        1 vote
  9. BradleyNull
    Link
    I'm a data engineer that does the majority of my work with the AWS platform. I'm trying to build some projects that would look attractive to game companies in Europe. I enjoy making these kind of...

    I'm a data engineer that does the majority of my work with the AWS platform. I'm trying to build some projects that would look attractive to game companies in Europe. I enjoy making these kind of 'one-button' cloudformation builds so what I think i'm going to do is something that depolys a game server and sets up some sort of kinesis data stream and storage. I have other demos of my work, but just trying to set up something specific to gaming. I'm confident in my ability, just not exactly sure what would look good to them.

    In addition, i'm having fun fiddling with game mechanics in Unreal. I've always had this deep love of the real nitty gritty aspects of game mechanics, down to the atomic parts of how your character even walks - the choice to make them snappy or have rotation time. How they stop or ramp up basic movements. I love this sort of planning of how to give a character weight. The more i learn, the more I can see how it takes very large teams to make a game as all these little things can be investigated and ruminated upon in great depth.

    1 vote
  10. gnoop
    Link
    Currently writing a script to grab all the namespace quotas from our clusters so we know how much CPU/memory are allocated to each app. It's also an easy way to see which namespaces have no...

    Currently writing a script to grab all the namespace quotas from our clusters so we know how much CPU/memory are allocated to each app. It's also an easy way to see which namespaces have no quotas. Currently works on one cluster. I now have to update the inventory file and let it run through all the non-production clusters.

    1 vote
  11. Number1gun
    Link
    I've been learning Swift and building an RSS reader that is a Catalyst app (meaning, basically the same codebase compiles to iOS, iPadOS and MacOS). It is quite fun to work on. I've been amazed at...

    I've been learning Swift and building an RSS reader that is a Catalyst app (meaning, basically the same codebase compiles to iOS, iPadOS and MacOS). It is quite fun to work on.

    I've been amazed at how easy some things are, like animations and navigation handling. Then baffled by hard some things are like capturing if the escape key was pressed.

    Anyway, it's the first app I've built entirely by myself and I'm excited to eventually release it.

    1 vote
  12. tech10
    Link
    I've been porting postmarketOS to an old Huawei phone i had laying around, pmOS for who doesn't know is linux for phones, completely replacing android. It's actually very fun and relatively easy,...

    I've been porting postmarketOS to an old Huawei phone i had laying around, pmOS for who doesn't know is linux for phones, completely replacing android. It's actually very fun and relatively easy, i got as far to get wifi working, i haven't yet "uploaded" my work to pmOS since i couldn't get git to work properly with gitlab

    1 vote
  13. [5]
    FluffyKittens
    (edited )
    Link
    Does anyone have some good boilerplate for reading + buffering ffmpeg rawinput frames into Python? I wrote a short script to "play a video" on my RGB keyboard, by mapping the coordinates of all my...

    Does anyone have some good boilerplate for reading + buffering ffmpeg rawinput frames into Python?

    I wrote a short script to "play a video" on my RGB keyboard, by mapping the coordinates of all my keys to areas of a video frame, and sampling the average color for each key area.

    Next, I hooked my system audio up to ffmpeg, and set up a filter to have ffmpeg convert my audio into a video of the waveform, so that I can have my keyboard bumping along to whatever beats are coming from the speakers/headphones.

    It works... for about 15 second. But ffmpeg appears to crash and burn after that, feeding python the same stalled frame on repeat. I believe I've run into this problem working on more serious projects in the past, and IIRC, it's because I'm not processing frames fast enough and ffmpeg's buffers fill up.

    What I did in the past was set up a worker thread to stage frames into a short FIFO queue, and just drop frames after that queue was filled... but the rest of this script took ~2 hrs to put together and I'm not eager to dive into the quagmire that is python concurrency hell. So - anyone got some precomposed snippets or package recs to smooth over the frame processing?

    Script for reference

    1 vote
    1. [2]
      karsaroth
      Link Parent
      Hey! It turns out that yes, I have been working on something similar to you, in terms of wrangling with ffmpeg, and I've run into similar headaches. I'm sorry that I don't have time to give your...

      Hey! It turns out that yes, I have been working on something similar to you, in terms of wrangling with ffmpeg, and I've run into similar headaches. I'm sorry that I don't have time to give your script a full once over, but I did notice something:

      28. process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
      

      Here you're creating a subprocess with both stdout and stderr being piped, but I don't think you're doing anything with the stderr pipe. What I've learned is that if you don't read a pipe from subprocess, it quickly fills up and ffmpeg halts waiting for it to be read.

      So, you want to either read from stderr (in a separate thread), send stderr to subprocess.NONE, or remove the mapping and let it default to the the default stderr. That might help with the crashing.

      In my case I was piping both input and output, trying to send pipe data to various different processes, it can be a real headache, and threading or even multiprocessing can be your friend, even though it complicates things.

      2 votes
      1. FluffyKittens
        Link Parent
        Awesome catch! I tried removing the stderr kwarg, which forced ffmpeg's usual debug/status output to the python console. The stderr buffer itself didn't end up being the culprit, but the console...

        Awesome catch!

        I tried removing the stderr kwarg, which forced ffmpeg's usual debug/status output to the python console. The stderr buffer itself didn't end up being the culprit, but the console output did confirm that I wasn't keeping up with frame reads. So, I finally threw together a really basic worker thread to poll for frames and everything started working!

        Demo: https://envs.sh/d0U.mp4

        I spliced the original audio back onto the recording, but IRL, the keyboard is roughly ~1-1.5s behind live audio, which is in the good-enough window for me. The waveform video on screen is way out of sync due to buffering, so try to ignore that lol.

        Thanks for the help!

        1 vote
    2. [2]
      lux
      Link Parent
      Seems like Linux. I would have a ton of sources for Windows, as I was working on an Ambilight project and have some experience with it. FFMPEG however was always hard for me to integrate and it...

      Seems like Linux. I would have a ton of sources for Windows, as I was working on an Ambilight project and have some experience with it.
      FFMPEG however was always hard for me to integrate and it was hard for me to get a proper result with the pile of arguments. Therefore, I have implemented a custom DirectX based screen recorder which gives nice results.

      I could offer you some C code to record your screen in realtime for X11, so you are not bound to a video but to your actual desktop. (Where you could open a video).
      It might be able to also record a certain window, but not really sure.

      For audio->video visualization I would rather try something python internally, without FFMPEG.

      1. Record your audio stream -> apply FFT to your signal -> apply some smooting/interpolation -> get the typical audio bars of common media players

      or 2) Record your audio stream -> maybe apply high/low pass filter (depending on source) -> grab a certain amount of audio samples -> draw the sine wave.

      Pretty sure there is a library that can record pulseaudio streams and handle the signal. pyaudio maybe?
      https://medium.com/geekculture/real-time-audio-wave-visualization-in-python-b1c5b96e2d39
      I have no real experience with Python, sorry.

      Not sure how powerful Python for those things is. I know I had very good results with C#. I wanted to visualize audio on RGB strips.

      But I understand, that you want to have the video only on the keyboard RGB keys, so it might not be really what you want..

      1 vote
      1. FluffyKittens
        Link Parent
        GNURadio is the main tool I know of for taking the "DIY audio processing" approach; it's a GUI-based DSP workstation that generates high-performance numeric python code as its output. I can...

        GNURadio is the main tool I know of for taking the "DIY audio processing" approach; it's a GUI-based DSP workstation that generates high-performance numeric python code as its output.

        I can definitely fall back to generating waveforms that way as needed, but I expect it'll be more of a time-sink than I'm looking for. Might try a naive threaded buffer for ffmpeg over the weekend, and if that fails, I'll go with the FFT suggestion. Thanks for the advice!

  14. tomf
    Link
    A few podcasts have too many ads (e.g. Smartless, Fly on the Wall, etc) -- and they also happen to have youtube videos for their episodes. I hate ads and I like yt-dlp + sponsorblock. So I set up...

    A few podcasts have too many ads (e.g. Smartless, Fly on the Wall, etc) -- and they also happen to have youtube videos for their episodes. I hate ads and I like yt-dlp + sponsorblock.

    So I set up a cron job to pull the latest episodes from a list of playlists. It names them YYYY-MM-DD Podcast Name - Episode Title.m4a and then I have this poorly modified PHP script to generate the RSS feed that I use with PocketCasts.

    Its been pretty great, to be honest. Having all of these playlists in one feed is pretty good, too.

    I wouldn't mind fixing up the PHP, but I don't know PHP very well -- especially not enough to write it from scratch.

    1 vote
  15. goose
    Link
    I've got a fork of a docker image/container for vsftp cloned to my github that I need to finish working on. It allows for persistent user storage despite container rebuilds/updates, which was...

    I've got a fork of a docker image/container for vsftp cloned to my github that I need to finish working on. It allows for persistent user storage despite container rebuilds/updates, which was something I haven't readily found in any other vsftp image.

    I have a duplex document scanner on my LAN that I use to scan documents in to paperless-ngx via ftp. Currently I achieve that by running vsftpd on the host, but I'd prefer to move it to a container.

  16. gf0
    Link
    I have finally gotten to play around with my tiny VPS I have been paying for over a year. My motivation was mostly to circumvent the very draconian corporate firewall, which does deep packet...

    I have finally gotten to play around with my tiny VPS I have been paying for over a year. My motivation was mostly to circumvent the very draconian corporate firewall, which does deep packet inspection, and basically everything is blocked besides ports 80/443, and even most sites using those.

    So I installed Apache Guacamole on my VPS with an RDP server on the same instance, and use it to control a graphical linux interface plainly from the browser. (Funnily enough it only works with http://IP, but not with any other combination of (http, https)://(IP, domain) due to the firewall. But it does work!)

    I also bought a domain and set up https and an nginx reverse proxy, with NixOS of course. The resulting config is very elegant! Also enabled zram and normal swap, because the default 2GB RAM is very tiny for even something as lean as xfce.

    Will probably follow up with moving the server to an ARM-based instance, that way I can get a better server for the same money at my chosen cloud provider.

  17. Jdtunn
    Link
    For the last month in my freetime at work, I've been building an Excel sheet and vsb script that will create and update the locations of all my cable heads on my data center computer room. I'd...

    For the last month in my freetime at work, I've been building an Excel sheet and vsb script that will create and update the locations of all my cable heads on my data center computer room. I'd love to use literally anything other than vbs, but because I'm not a dev, I don't have access to any of the tools I'd like to use.

    My reason behind this project is that the panel schedules have not been maintained in over 20 years and tons of racks have been added and removed without things being updated. When I joined 9 months ago, I was horrified when I was handed a paper binder and told that was our panel schedules. I've already managed to transcribe what is accurate from those 100 panels, but the big task is still ahead, verifying what is where for every circuit in the room.

    I just want my visualizer working before I start tackling that problem, but it's being a major pain because vbs.

  18. Humblemonk33
    Link
    I am completely new to programming but I’ve been toying around with twine for a bit. I’ve been trying to create a branching narrative with a lot of different flags but it’s been very slow going....

    I am completely new to programming but I’ve been toying around with twine for a bit. I’ve been trying to create a branching narrative with a lot of different flags but it’s been very slow going. It seems every time I learn something new I restart the project completely with the new techniques in mind.

  19. jordanlund
    Link
    My "on again, off again" project... I got distracted by buying a house. :) I have a room full of comic books. They are 99% alphabetized and inventoried in both a flat and relational database. What...

    My "on again, off again" project... I got distracted by buying a house. :)

    I have a room full of comic books. They are 99% alphabetized and inventoried in both a flat and relational database.

    What I want to do is an Alexa style query asking for a specific thing and having a series of smart lights light up the correct box(es) Wheel of Fortune style.

    So far, using a Raspberry Pi, I got the database query to work. I can input a query with text, and output one or multiple box numbers.

    What I wasn't able to crack was the voice input or smart light output. Then I bought a house and moved and haven't been able to get back to it. :(

  20. Nixgates
    Link
    I've been writting a bot for Runescapes NXT client. The game is old as hell and bots have plauged it since its inception but it was more about the process of actually figuring out how to do it...

    I've been writting a bot for Runescapes NXT client. The game is old as hell and bots have plauged it since its inception but it was more about the process of actually figuring out how to do it than it was about botting in the game for me.

    Its written in C#, it hooks into the games loaded memory and reads out the state of the objects, NPC's, inventory items, etc, etc. Then sends WinAPI messages to the client to interact. This means the whole thing can run in the background on your desktop and theoretically support multiple clients at the same time though it doesn't at the moment.

    It was a bit of a challenge at first but once I laid down the foundations it was a pretty simple process to get working bots going. It has a fighter bot, an abyss crafting bot, a bunch of smaller bots its even able to do pathing (provide a list of world coords and it will walk them).

    My biggest problem I currently have with it is the pointer paths keep breaking with updates and its painful to keep rebuilding them. So I'm currently working on automating that whole process. My current implementation is not as fast as Chest Engines but its getting there.

    Edit: some spelling