16
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?
I was part of one team at this weekend's hackathon at my city. I got asked to be a part just on monday woth hackathon starting friday!
The team, from which I knew only one person, needed someone knowledgeable in electronics and soldering. They were making knee part of exoskeleton (just the knee) aiming for it to be a help when seniors come up stairs. They already had the hardware part - the thing that goes on your leg and all the gearing inside and motor mount. The weekend was about electronics and programming and making it work.
The aim of the project was to make it affordable, plastic parts were 3D printed, metal bars were just simple bar that was shaped to correct shape, in the ways of powering it there was motor from battery powered drill with correspodning battery (can be bought for like 20-30€), electronics were just potentiometer for knee angle accompanied by two accelerometers (one on thigh, the other on lower part), heart of the electronics was ESP32.
My job was to design circuit on protoboard and make the electronics work. I used connectors for everything, aligned inputs in one way and outputs rotated 90 degrees, made/crimped all the cables, made MOSFET motor driver and fixed everything twice as we found bugs (bad solder joint, burned potentiometer, bad contact in connector, ripped wires...).
At around halway through the hackathon we were finished with all the hardware work and mounted the hardware to team member's leg and then software guys took over. They went up the stairs with our "cyborg" and gathered data. Then they run neural network on top of data to train it and recognize when the person is actually going up the stairs. Then they made this run offline on ESP32.
After midnight on sunday, with only 8 hours to spare, we made it work! The ESP32 recognized the movement of the leg and engaged the motor to help with walking up the stairs!
I was never part of such team and I was never on a hackathon. It was great weekend and I enjoyed much more than I ever imagined. What a great way to spend time with enthusiastic people. And lose many hours of sleep at the same time! :-D
Still working on my personal link sharing website, off and on. I added a way to pin tags to the sidebar on the front page. (They are just buttons on mobile unless you switch to landscape mode.)
https://skybrian-links.exe.xyz/
Now this was quite a read: Just use a VPS
I recently got my first VPS for some one-off webapps i vibed for myself, and this was very much the experience. Thanks for the laugh!
I have been picking up my old lisp interpeter I started back in 2016 (I think). It already had support for proper tail call optimization and was fairly lean and easy to grasp (for me). I got stuck on two major features back then. One; hygienic macro support. Two; a tool for wrapping arbitrary golang code to make it callable from the lisp code.
So being a modern developer I pointed Claude to the repo and pointed it to the racket documentation about hygienic macros and instructed it to work in a TDD like manner. It is amazing what it can spit out, but it tends to be like most developers and omitt edge cases so I keep insisting it to check the code coverage to make sure the test coverage doesn't degrade (it sits well over 90%). Apart from the new macro support (almost finished, just need to add support for
syntax-case) and the tool for wrapping golang libraries it has also helped me add a require/module system. Lots of fun, and a bit addictive.Next step, once the macro support is finished, will probably be to rewrite the parser. It currently yacc based, but I'd like to create one using the new SIMD capabilities that is experimental at the moment.
(never sure if this is better suited for "technical" or for the "creative" projects thread/topic)
Continuing FreeCAD experimenting. Often something that feels like it's going to be overwhelmingly annoying to do actually ends up being simple, it's just a matter of knowing which workbench to use and which tool to use, and those things are not always very intuitive, so I spend more time looking for what I need than I do actually using the tool once I've found it. I can see how someone can get efficient with this once they've wrapped their head around where to go based on what they need to accomplish.
Working on making some kind of cover that clips on my EDC flashlight to cover the magnet so it doesn't stick to my keys on the same keychain. Have made a prototype but it falls off so I need to rethink how it attaches.
Also printed by biggest print so far (~8h), which is not designed by me, but is a replacement front bezel / top chassis piece for a Lenovo Tiny. Printed the fully-vented variant (available under the STL/CAD file area- you can see others' prints of the fully-vented version in the comments on that page).
I did it with PLA which is a bit rigid so I've run into minor fitment issues, but having a fully-vented chassis has made a WILD difference on operating temperatures. Disabling turbo helped with temps too, but I measured before/after with the original vs. vented chassis, BOTH with turbo disabled, and the chassis change alone still made an incredible difference. I think Lenovo's original design just starves for air and traps hot pockets of air too so temps just constantly build up and the air has no easy way to get out, so the components keep soaking in heat.
Now that the system can breathe the temps spike less overall, build more slowly, quickly cool once usage decreases, etc.
So I have finally got my testing frameworks configured for the backend of the website I am using to learn React. To test my API I am using JEST and Supertest. I have written tests for the full CRUD functionality of one of my models. When I was in school doing a group project I remember a pain point of our testing was that for testing someone would have to add another data entry into our fixtures, which would cause a cascade of broken tests. So, I am trying to have all my fixtures as JSON objects, which then allows for me to dynamically reference the fixtures in my tests. Hopefully this will prevent me from breaking tests if I need a larger dataset later. Now I will have to spend the next little while writing more tests, as I wrote a fair amount of models without testing. I know AI could probably quickly write these tests for me, but since the project is mainly for me to learn, I want to avoid using AI.
Ping @jmpavlec
Followup to my previous post, the ML-based bracket I made for march madness is 44th out of 51 in my office league and faring poorly overall. Basically, the only live lines are the one seeds, which are the least interesting from an ML insight point of view.
I realized that the model that I built was just validating features against wins and losses, not validating the model for its strength of picking a bracket. So that would probably be my first improvement. There's a ton of individual player data, so i think it would be interesting to do a richer model that factored in player performance across a season, and perhaps used player strengths to predict game outcomes. I could even imagine mining news stories to train on injury data to see the impact it has over time. But I probably won't, just because in the end I'll have spent all this time on something that I barely ever pay attention to.
Ahh that's too bad, but I'm also a little bit amused it had trouble with the "Madness". Thanks for the update!