32
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'm working on a ecosystem simulation in Godot. I want to have plants, herbivores and carnivores forming a food chain. I don't have much at the moment (just rabbits eating grass) but I'm getting there slowly. I'm stuck on animating rabbits now. Here's current state: https://i.imgur.com/yq3fmvN.png
Edit: I forgot to mention, this is a personal project. I think it's quite evident. ;)
Sounds like a cool concept!! Is it inspired by any older games in particular? I like simulation games in general, especially nature-themed ones. (Also, fellow Godot user, yay!)
Yes! I still can't get over SimLife, where you could edit your animals and plants genome or let them evolve. It was fantastic simulation and to date I can't find a game which would be even half as complex. My project doesn't have such complexity in mind though, I don't think I would be able to pull it off. I can't even finish what I have now! ;)
Oh wow, I just looked that up and it kinda sounds similar to this 90s game I loved, Evolution
https://en.wikipedia.org/wiki/Evolution:_The_Game_of_Intelligent_Life
Evolution simulation is so fascinating! Also animal breeding simulation-- there's a gamedev I follow on youtube who's working on something that looks really cool:
https://www.youtube.com/watch?v=ohYIUxmxI-I
Are you following any particular Godot tutorials for making this kind of game? I'm a Godot beginner so if you have any tips for me feel free to share :)
I don't follow one tutorial per se, I just google whatever task I'm working on at the moment and trying to find some videos on it. Like right now I'm importing an asset I bought from Blender to Godot and trying to work out how to do it properly so it doesn't give me trouble down the line. So this guy is helpful: https://www.youtube.com/watch?v=grPbk-bfMO4&list=PLIJhijrKLAOSCDjllXGFvzPLhpIfjbKH9
That makes sense! Thank you for sharing.
If you can get this up and running, I'd love to get a copy of this for my science classes.
I knocked together a very simple version of an ecosystem simulator for use in my classes using Unity but it's REALLY simplistic - just 2 plants and 3 animals using free assets. The animals move around but there are no animations. It sounds like your version would be way more advanced so if you can ever get it to work, please do share the link to it.
I seem to be good at creating products nobody needs, so currently I'm prototyping some sort of software dealing with generating animated videos based on a sound input (most basic example, generate a Monstercat-like visualiser video from an MP3 file; more complicated example, tie specific instruments from a track to a specifi
element on-screen and control it based on volume/frequency/whatever, similar to BVSSIC' Data Module East).
After Effects can do pretty much everything my project will be able to do, but that costs money, is proprietary, and I think you need multiple external plugins to do everything (and those might also be paid and proprietary).
The aim is to be fully free and open-source (MIT license), and ideally as extensible and customizable as possible. And of course, cater to musicians and audio nerds.
I've been learning a lot of digital signal processing along the way, and also I've tried to force myself to do a combination of test-driven and behavior-driven development by nesting tasks in Jira, splitting any kind of work in its smallest components and organizing into epics, user stories and tasks (and each task should ideally have a test scenario that is a separate task).
It's wild, it'll never reach 1.0, but I'm having fun.
Well this project just sounds awesome.
This is me all over! I must have 15-20 projects on the go, all 0.1-0.9 release versions and never a full release. The one I did manage (published to AppStore) I never managed to continue due to to various api changes and iOS updates.
Always a great journey learning and working on getting a solution working though.
Luckily I have only one public project for now, and when I lost steam developing it, it was in a nice enough shape that it easily deserved the 1.0 tag. So I packaged it up nicely and threw it onto Google Play besides the PWA website.
I eventually made a 1.1 too, but that is most likely the end.
Can you talk a bit more about it/share some links if there's something up? I'm very interested in this since I started working on a very similar concept a while ago. My idea was to make a program where you can write shaders that get passed both the FFT, the waveform, and a bunch of other stuff, but I ended up scrapping it cause it wasn't particularly nice or easy to use.
It's still very early on. I currently just have the code to take the audio file, split it into 60 frames per second, and run the window+FFT on each frame so I can get the amplitude/frequency data I need to generate the video frames.
I got stuck on architecture and design because I don't want to just hardcode a bar visualiser into it. I want to be able to define different visual effects in a modular and customizable way that would allow other people to make their own visualisers as well, but I can't figure out an API for it. It doesn't help that I have countless ideas for effects I want to make and use for my own music projects.
I think I should just go ahead with the bar visualiser and at least get a minimum viable product (get audio data, FFT it, render a bar visualiser and export to MP4) out the door, and then I can figure out how to make it modular and customizable later.
Also I've started a new software project at work, so all my programming energies are going there at the moment. I've chosen Python for both, and switching from one to the other doesn't feel like switching from work mode to personal life mode, so I'd rather mentally disconnect entirely after 5pm.
My wife wants calorie tracking web app with some new ideas and features she can't seem to find elsewhere. I've never made a real web app before and because I struggle with analysis paralysis I've put it off since I could never figure out the "right stack" for make the site with. I recently decided to learn Go for no other reason than I wanted to, and since Go has web capabilities I decided to do a React & Go based web app with no experience in either. I'm shooting for the stars on this without considering "what's best" because I always get in my own way. If I completely muck it up I'll at least have learned something. Presently I have a go server with a few template pages and I plan on complicating things with a postgres database, which I've also never used before. I simply don't care anymore if I'm doing things wrong or inefficiently because at least I'm doing things.
Cheers to this! I too struggle with analysis paralysis, and the only way I've found to make progress is diving in. It helps to remind myself there is no one right way, and you can always improve inefficiencies as you go.
That’s the idea ! I love the energy :) Good luck with it
Instead of using a PostgreSQL database, can't you start with a simpler database like SQLite? I'm not good at making web sites, but PostgreSQL requires installation and administration which may slow you down when developing your web app.
For your first go, PostgreSQL is an install and forget. And has development features that make it easier than SQLite.
Thank you for your suggestion! I'm not sure what the real differences are so I'll commit to trying both and seeing which one I like more. My main goal is to reach completion and to learn a lot along the way, whether it's easy or not.
Cool. Do you use any API to retrieve the data about various foods? If yes, what API it is and how do you like working with it?
For now I’m just accepting input for ingredients then letting her build a meal with the ingredients. I hadn’t looked for any food APIs so I’m not sure what’s available. I was considering doing some sort of recipe builder with cooklang as a stretch goal but I don’t want to increase the scope just yet.
I am building a bat (as in Chiroptera, flying mammals) recorder/detector using MEMS ultrasonic microphone, RP2040, I²S pre-amplifier, audio power amplifier, LiPol battery charger, MicroSD port and a TFT display.
It's going to take some hefty filtering to compensate for 20 dB peaking at 55 kHz and some light one to only allow frequencies above 20 kHz, but from there it should be fairly straightforward. Button press will start/pause recording to SD card and FFT plotting. Another button will start/pause playback at 8 times lower speed. Last two buttons will provide seeking.
Hopefully it should be able to record bats up to about 10 meters far in their path.
This sounds like a really cool project! Are you designing a custom PCB?
Yes. I find JLCPCB to be cheap enough (with their component library) for casual experiments like this. Merely getting the components elsewhere would exceed the price of fully assembled board and shipping.
I use KiCad with great success. Designing boards for signals below 100MHz is pretty simple and I would encourage everyone who's into programming to give it a try. Both RP2040 and ESP32 are pretty good starting points with high quality SDKs.
It's sort of a meta-project, but I'm running into an issue with personal projects where I have a stack I love—Go, protobuf/Twirp, ts-proto, sqlc, postgres, Svelte, and esbuild—but a project skeleton (complete with mage commands and dockerized/version-pinned tools) is heavy.
There are plenty of tools, especially in the Node space, that can generate a project template for you. However, I haven't found one that can update your project template after you've started adding code to it. So, what I'm in the early stages of is a tool that can do the basic template gen stuff, but also update it (gently, without clobbering your code). Sort of an in-place migration tool for stack templates. I'm thinking a lot of this could be managed by dotfiles that can be tracked by git and used to store information about which files are template-generated along with checksums, so that those can be replaced when updated, and the tool can more or less guarantee that code you yourself have added won't be removed.
I'm really curious if anyone would be interested in this, or if there are existing tools I'm unaware of, since I've barely started this project!
Do you want to develop a project structure which this tool would implement, or replicate existing project structures?
Have you considered a tool like Debian's
update-alternatives
? I think it basically manages a farm of symlinks through known locations to different implementations. There might something of value for you in there.Edit: mistaken command name...
Thanks, I'll check it out! I was thinking that anyone could make their own templates to use with it, and mix and match those templates in projects as needed. For example, I often wind up in a situation where I have three protobuf service implementations with dockerized tools for things like
protoc
, but all three have slight differences in the edge cases they handle, versioning, etc. I would like to make a template for "protobuf service" where I can maintain that template instead, and then automatically patch the projects that are using the same template. Repeat for postgresql with local test database and connection methods, sqlc builder, etc, and those gains could really stack.Oh, this has been a pain for me for a while and I've been wanting to build something to address it. There are templating tools for entire projects but there are no portable templating tools that manage the creation of child resources. There are tools built into frameworks like Phoenix and there are snippet engines in IDEs but nothing that helps manage generic projects.
Good to know, thanks! I started by writing the readme as if it existed, to get a feel for how I want it to work, so that's below if you want to check it out and see if it would work for you.
README of lies and false promises (none of this exists)
rescaffold
Rescaffold is a project scaffolding generator and migration tool. Unlike other tools which can only create a template once, rescaffold can update scaffolding in-place without mangling any of your code.
Usage
From the root directory of a new or existing project, run
rescaffold <git-template-url>
This will clone the git repository and interactively run first template setup. Rescaffold will perform any template generation tasks (e.g. name directories according to your project name), and unpack new files into your project. If there are any conflicting files, rescaffold will gracefully back out and return your project to its original state.
Rescaffold automatically tracks the template source and version information of the scaffold(s) you use, so if you want to use the newest version of a scaffold, you can run:
rescaffold -upgrade
or
rescaffold -upgrade <git-template-url>
to upgrade a specific scaffold.You can add as many scaffolds as you want, simply by repeating the initial command. If you want to remove a scaffold (which only removes files created by rescaffold and are since untouched), you can run:
rescaffold -remove <git-template-url>
Commands can specify a full URL to operate on a specific scaffold, but scaffolds can also be specified by the project slug. I.e.
git@github.com:user-name/my-scaffold.git
can be specified, or you can simply write "my-scaffold". If there are multiple scaffolds named "my-scaffold", rescaffold will notify you with an error.Scaffolds can be:
This means you can develop scaffolds without going through a git remote, and also that you can clone a repo yourself if your setup requires more than an unauthenticated
git clone
..rescaffold.toml
.rescaffold.toml
is a file that rescaffold will place in the working directory when you first run it. This toml file tracks which scaffolds are in place in your project, their versions, their sources, and the list of files that they have placed, along with their checksums. This file is used by rescaffold to avoid overwriting any files or directories that were not created by rescaffold, so it should be committed along with the rest of your code.If
.rescaffold.toml
gets deleted, rescaffold will need to be run interactively to resolve any conflicts that arise, and any files that need to be updated will have to be checked manually.Creating Scaffolds
Scaffolds are directories with a
.rescaffold-manifest.toml
file at the root. They can be stored in a VCS, like git, or live as a directory on your local filesystem. The manifest file looks like:Directory names, file names, and file contents can all use values from
vars
as needed. For example, your directory structure could be:And
_project_name_.go
might containIf your project name was "foobar", this would be generated as the file
foobar.go
, containingDelimiters
Rescaffold uses delimiters for template replacement by searching for instances of
open_delim + var_name + close_delim
, for all variable names, and replacing those substrings with the actual value the var is set to. Also, occurrences ofopen_delim + "\" + var_name + close_delim
will be replaced by the same string with the backslash removed, to allow predictable escaping.You can edit the delimiters used for template replacement to whatever makes life easier for your scaffold. For example, if a scaffold contains a lot of HTML, using
<>
delimiters for replacement might cause problems. In that case, you might prefer delimiters of${
and}
instead. Also, you can always follow opening delimiters with a backslash to escape replacement, e.g.<\title>
will be replaced by the literal string<title>
.Delimiters, both opening and closing, are also optional. For example, you could set an opening delimiter of
MY_SCAFFOLD_
, and an empty closing delimiter. This means that template replacement would replace all instances ofMY_SCAFFOLD_title
with the string value of thetitle
var. Delimiters won't be exposed to users of your scaffold—they will only interact with the end result.Modifiers
Replacement substrings can also contain modifiers, such as
_name|titleCase_
. These modifiers can change the var value before performing replacement. The modifiers that are available are:titleCase
: "some string" -> "Some String"lowerCase
: "Foo" -> "foo"upperCase
: "Foo" -> "FOO"camelCase
: "foo_bar" -> "fooBar"pascalCase
: "foo_bar" -> "FooBar"snakeCase
: "fooBar" -> "foo_bar"This is amazing! This is what I wanted to make! Repository when?
Now! https://github.com/olafal0/rescaffold
TL:DR: I binary-patched some firmware for an obscure chinese "industrial display board" and I'm really happy it worked.
I've been working for a Point-of-Sale company for the last half year; Fixing cash registers and so forth. Surprisingly, this job offers me a lot of opportunities to fix really unique problems in creative ways.
Lately I've been dealing with some android-tablet-type-industrial-display boards attached to touchscreen monitors. We're trying to develop an alternative to the ipads that are so prevalent in our industry. Since a lot of the programs we sell are based around a web browser, there oughtn't be a need for all Windows has to offer running in the background. We just need a kiosk-type system that boots directly into a browser.
My company ordered some chinese raspberry-pi-type devices running debian 10, built into touchscreen monitors, and I was tasked with making them replace ipads and android tablets. I managed to get the software side of things running smoothly, but at some point I'd like to make an image of my work to deploy to new terminals. This was a problem.
The device uses a RockChip SOC, which are actually really well documented and supported, but newer devices have some sort of "read protect" enabled to prevent you from dumping the ROM. Reading forums for hours, everyone was saying this is a new protection built into the new RockChip chips, and dumping would never be supported on current tools. This is a big problem for me since I need to be able to make an image I can flash to new terminals.
Luckily, the Pine64 PineNote uses the same SOC, and I found Github user DorianRudolph has a repository where they discuss the limitation, how they overcame it, and how to do it yourself.
So, I downloaded ghidra for the first time, unpacked and disassembled it, found the offending instruction, patched it, rebuilt the .img file, and reflashed it.
It's moments like these that give meaning to my job. It means I do all sorts of cool shit that no one notices or acknowledges, and I don't get paid anything extra. Yet, I do get paid an entry level wage to spend as much time as I like figuring out how to do cool stuff like this that I'd normally do in my free time just to learn.
Cousin thread on xda forums: https://forum.xda-developers.com/t/tool-rkdumper-utility-for-backup-firmware-of-rockchips-devices.2915363/post-88697849
Usually I am working on farmd, half of a farm game,
I also do a good chunk of Facebook moderation. So I have been toying around with the idea of making a website/ resource containing examples of spam. This would include screenshots of actual spam, names, how it works, etc. So far all I have done is take a few screenshots. For the site it self I think I will be leaning toward 90’s style. (Think small like tildes, all but the images will load fast on a 56k)
not the- the what now
Last time this was posted, the comment was just "I'm working on farmd", so I googled farmd and the first/second hit was:
https://store.steampowered.com/app/1814630/FarmD/
As a result, dots has decided to preemptively clarify in future comments.
Yeah that exists. Just an unfortunate sharing of names. Now I have to the distinction between them.
O.o
Uh, your suggested games list must be wild on Steam..
Well it is filled with trash, but not that kind. The projects share a name, that's all. My project started in August, the other in December. If I knew that I was going to share a name with that kind of game, I would have chose a different one.
Just call yours "DragonSex" and move on ;)
Nothing as hardcore as other posts here but I've finally reinstalled linux again to play with Jellyfin and some other apps which will lead me into learning Docker (again). I always enjoyed fantasizing over the things I saw at self-hosted and poked a little here and a little there but now I'm finding myself motivated to get elbow deep into it. Eventually I'd like to self-host jellyfin, something for personal backups for my teenagers and try to cobble together a self hosted DAKBoard clone along with a few other things.
I threw Mint on a Xeon IBM ThinkSystem I had laying around until my daughter's upgrades come in and I switch to her hand me downs. I installed Jellyfin from a flatpack and I can get clients to talk to the jellyfin server. However I'm getting all sorts of errors on playback. There are tons of posts from 2018 and on about this error and I've ran through all the ways of updating the server from their website but the terminal always returns that apt can't find the jelllyfin package. I have a few ideas but ran out of time last night.
I have a few more things to try before I table it until this weekend when I build her new computer and format her old one and try this project on that system.
This is how I spend my weekends if I'm doing something technical. Not writing code but tinkering with my homelab. I set up Jellyfin last weekend and started using it in my house. Next I want to start hosting some Elixir applications I wrote on the homelab as well. Oh, and I want to start blogging so I need to get that hosted as well.
Writing some Fortran for multiphysics modeling of nuclear reactors (grad school work). While nothing novel at the moment, writing all the foundational stuff from scratch has been a great exercise and should leave me in better position once it's time to code the new stuff. No real issues outside of deciding what approximations I want to use and how much I want to put into the code.
Why Fortran?
It's a good language to use in scientific computing and has established roots in the nuclear industry. It's also the one my advisor is most familiar with which definitely influenced my decision.
On the side, I'm basically writing the same code in C++ since that's a big scientific computing language and also in Julia since I liked what I saw when looking into it.
Kudos for doing reimplementations in other languages. I did some Octave/Matlab -> Haskell, and some Java school work in Scheme, concurrently. Super fun and educational.
It really is good practice, especially at this point in my life. Knowing multiple languages is a must since there isn't one language that rules them all; there is no Lord of the Codes. While Fortran is common enough in scientific computing, C++ is kind of the standard for HPC and is something I should know. Plus, it's what my future employer primarily uses.
I've never used it, but how did you feel about Haskell? Clearly a different style of programming than what I'm used too, but I'm curious about your thoughts on it, depending on how often you've used it.
I used Haskell in production for several years and it was fantastic. It performed well, the type system was a truly useful protection against a whole class of bugs (the marketing story around it is more than just a story), and I miss it, these days. I loved it so much that I'm now of the opinion that there is no point to the middle ground between the fully static, expressive types like those in Haskell, or go fully dynamic.
What you’re doing sounds like something I used to do back in the day. A tech polyglot. Someone who can write good “essays” and knows which language is the best to express the nuances of what they want to say.
Having said that, I’m curious if it translates into any value today in the industry. Do people want such skills anymore? I’m older and less hands-on now but I feel like the “generalist technologist hobbyist” is a lost breed.
I wouldn't really say generalist here, though I am trying to weave my way through 3 languages (really 2, Fortran and C++ are the most important) and I like the sound of teach polyglot haha. HPC in my field is really dominated by C++ and Fortran and those 2 languages will take me pretty far.
I'm fortunate to know where I'll be working once my PhD is done which gives me some confidence knowing that those two languages along with some basic experience in a few other languages will be good enough.
Speaking generally, I think there will always be a use for a "jack of all trades, master of none", and I'm always surprised at the amount of languages the people I meet dabble in. I do feel there almost is this expectation to know multiple languages now while still being able to act as a SME in certain areas.
I've been kicking around ideas for low/no-code tools (I know, I know). I want to define some basic models and their relationships and then just generate a basic CRUD app - thinking a TUI and sqlite to start. Currently I'm in research mode, learning COBOL of all things (it has a nice DSL for describing forms) as well as XForms (which, even though it's XML [barf], has some really interesting ideas to learn from).
Are you looking to create a low/no-code platform, or just utilize one? It's becoming a crowded space, and there's already two free(ish) options that are pretty decent - Budibase and nocodb.
I have more experience than I ever wanted to, in utilizing a different enterprise no-code platform to support a variety of large customers and their business processes. If you're looking to build your own, I'd be happy to throw some ideas your way on what I see as major pain points of existing solutions.
But what you stated as a use case is truly what these platforms do best - throw it a database table and have it generate CRUD operation forms, then tweak them a bit to make the data entry and display process a bit smoother.
Most of my time is spent on my language Coil
In a nutshell coil is object oriented programming for people with a background in FP - not like haskell+java=scala, more like clojure+smalltalk = coil.
Anyways, its a bit of a hot bed for experimentation.
Few ideas
full stack framework, client first with even more than rails level convention over configuration <- early days
object oriented ui component system
lexer/parser/emitter framework for building transpilers with very low code
editor system + module system that allows you to create snippets of different languages (css, coil, javascript, html, …) in an extensible way. <- early days
more
The language itself is quite usable but im looking to ship a programming environment not just a language so itll take time before its ready for proper demos
Now there’s a name i haven’t heard in a long time. I’m curious, are people using it for anything neat these days ?
always fun 👍
Do you have a language spec published anywhere?
No spec, just have all my work on github - https://github.com/coil-language/coil-lang
I'm not an experienced programmer by any means, but I have two projects I'm currently working on:
A sample ticketing and logging system so my boss can keep track of everything that comes into our department,
And a comparator that can take blank runs of slide materials and tell the user things like "of these 25 clean discs, these are the 10 cleanest and these 5 need to be rewashed"
Both of these are tools that really should have been built already, but here we are doing other people's jobs.
I've got two main projects at the moment, both of which are stuck with about the same problem lol
First is a Pokemon-type game engine in Godot. I've got a decent framework for the battlesystem but am stuck on how to implement the data (Pokemon stats, move stats, etc) so that it isn't easily modified during runtime. I originally had everything stuffed into a const dictionary but it turns out that in Godot, calling a dictionary const is really just a suggestion. Now each mon has its own .gd file with the various variables declared as const, but that's a bit cumbersome.
The other one is a webpage that plays embedded Youtube videos on a semi-random schedule. It's like a fake TV channel, playing different topics each hour, even with fake commercial breaks/bumpers. The problem is in storing and fetching video info. I'd love to have an SQL-like setup where it takes a database or a table for that hour's topic, pulls out all the IDs where mood matches this, length is between this and this, etc... Problem is, the page is necessarily in javascript, and javascript apparently doesn't play well with databases and SQL.
Additionally I've been using node.js to get video info for batches of youtube IDs and am having a very fun time because I don't actually know how node works. how do i wait to do an action until i'm done running an async function on the entries in an array lmao
I have been, for almost two months, have been working on just a fun, in-depth website about birds. I'm trying to learn more about React and I'm trying to branch out with database services so I'm trying my hand at Supabase. I'm really loving every tool I'm working with so far and feel like I've learned a decent bit. Once I finish it, if I like it enough, I may turn it into an app just to add to my portfolio.
This sounds lovely! Is it about local bird species in particular? Or just birds in general?
It's birds in general. I have no real intentions with the website, but I've made it possible for users to upload their own bird information. After some design I plan to publish version 1.0.
Not a project per se, but I've been studying Azure in prepration for taking the AZ-104 exam. I'm hoping this will open up some new job opportunities as prior to this I've just been an on prem windows admin with no degree and no certs. I've been on the job hunt and feeling really limited in my qualifications based on the jobs I've been seeing.
Sporadically, I've been trying to finish up a v1.0 of what I'd call a "versioned, arbitrary dependency manager". The idea is you write some declarative indication of git repos, remote files, etc., along with their applicable versions, and the tool fetches them for you. Then they're just files -- you can gitignore them or not, use them to populate your working directories on a new machine, etc. etc.
The motivation (specifically) was that I was tired of hacking around fetching protobuf dependencies every time I needed some, and the newish
buf
framework for them isn't something I enjoy using, and is too limited. And I LOATHE working with git submodules for code sources.Hoping to find time to pick it up again soon, because I would use it myself all the time!
I have not started yet, but I am finally going to dabble into some DSP with C++. Specifically, I want to get into VST development and write some simple plugins and get my feet wet with that. I have been primarily a web, print, and automation developer so DSP is a whole new world for me.
So a while ago someone brought up that they wanted to learn Swift, and last week I thought I'd pick it up and figure out what people like about it. I had the rare idea to make a rather niche application, and I figured it might be nice to get it running as an iPhone app.
I had thought that swift was a python-like or maybe even javascript-like language and that it would be easy to pick up. Boy, I couldn't have been more wrong. In some ways it reminds me of a much less verbose and OO version of Java. I started off looking up how to do a REST API call, and found code examples that seemed to make sense when reading them, but the odd use of exclaimation points and question marks really threw me off. So now I'm skimming through Apple's documentation from start to end just to make sure I'm not missing anything.
After getting used to the alien-ness and the frustration that comes from it, I actually really like a lot of the decisions they made in the design for the language. Features like parameter labels could have been really annoying, but Xcode's autocompletion features take away the annoyance and make the code more easily understandable. I particularly like the
codable
interface which provides a standard way to decode and encode data in different formatsThe sad thing is that because I'm taking the slow route and I don't have much free time, I'm not likely to get anywhere with it anytime soon. But at least I'm enjoying the process.
Been working on a personal app that tracks performance in a game I play.
A friend of mine who knows Rust has been teaching it to me. I come from a background in TS/Java/C# and Go.
It's been a fun endeavor. Rust is hard for me to grasp as I'm so far removed from the "theoreticals" and comp sci concepts at this point that it's honestly a nice refresher of the core stuff I learned so long ago in college. Especially things I don't make use of often.
This sounds cool! How is performance defined in your project, and how/what metrics do you collect from your play sessions?
Really just basic metrics you'd imagine isn't specific to any game.
K/D ratio. Objectives completed. All sorts of things like that.
There are some more "intriguing" aspects of the project since the game itself doesn't supply an API anywhere to get this data so we have to do some roundabout things to get it.
Also some other more intriguing features that I'd rather keep private because we plan to eventually release this thing! 😅
I've been learning Python and applying it to work. I'm in revenue operations - manage CRM databases and automation platforms for marketing and sales. We get a lot of dirty data coming in and we try not to create duplicates if we don't have to. I use Power Query to fuzzy match but it's clunky. I'm learning to use RapidFuzz and Pandas. I can max out my CPU by manually splitting the list in two and running two separate processes using process.extractOne. I can quickly max out my RAM by using the process.cdist version but it results in a memory allocation error. I'm fiddling with it now to figure out if I can automatically split the list into three parts and run the two CPU-heavy scripts and the RAM-heavy script all at once. I also need to figure out matching on multiple columns and matching a list against itself while taking matches out of the reference list when they match an item on the query list.
Apologies if I'm misunderstanding something here, but hearing about loading lists and maxing out RAM is making me think you are loading the data into memory and then operating on it.
You almost never want to do it like that with File I/O.
Instead look into ways to Stream the data and interact with the file stream.
For example see: https://stackoverflow.com/questions/6475328/how-can-i-read-large-text-files-line-by-line-without-loading-them-into-memory
Hey thank you! I'll check that out. I am not sure why the cdist version of the function runs on RAM, but I do know it's a whole lot faster than the processor heavy version until it crashes.
I've been making a lab power supply with two galvanically isolated channels. Originally it was supposed to be a single channel with symmetric positive and negative output voltages, but since the transformer I'm using has two secondaries (instead of a single one with a center tap) I decided to make it two channels which can be switched to a single symmetric channel if needed. I might add a possibility to switch them to parallel internally for more current capability. The only thing missing is the case which I have yet to design and print (If anyone can recommend a free CAD that works on Linux, stores all data locally and isn't FreeCAD, please let me know). The output will be 1.2-15V / 2A per channel regulated with slightly modified LM2596 modules to keep it simple.
I can't recommend anything personally, but I suggest to check out alternativeto.net if you don't know it yet. It's my go to resource when trying to find software alternatives.
https://alternativeto.net/software/freecad/?license=free&platform=linux
I am playing a game called BitBurner (free to play, no IAPs yet). It's an incremental game, but it has pseudo-hacking elements, but it also requires you to write scripts in "netscript" which is mostly javascript. https://bitburner.readthedocs.io/en/latest/netscript/netscriptlearntoprogram.html#for-experienced-programmers
It's fun, but learning javascript is not so much fun.
For me, the trouble with JS was understanding the async architecture. Do you have to deal with the same thing in netscript?
Yes, you do, I think.
I think this is some people discussing some of the consequences. https://www.reddit.com/r/Bitburner/comments/t1vph9/some_help_regarding_hackgrowweaken_ratio/
Still making small amounts of progress on the Livestream translation app, built in python. I plan to open source it soon, just need to fill out a readme and set up the dependencies properly, since I think it's already usable enough for someone with technical knowledge.
I want to keep improving it of course, but another part of me would like to work on something different for a while, now that I've dipped my toes into python.
I'm experimenting with aggregating links people post on Mastodon and on Bluesky. The first version is here: https://linklonk.com/social
I'm using Mastodon API to access public federated timelines of a few servers to get all new posts and extract links from the posts. The API gives access to the same content you would see on https://mastodon.social/public. Interestingly, some servers give access to the streaming API where you get updates in real-time, but most servers only give access to polling timeline API where you fetch 20 most recent posts.
Unfortunately, the server timeline only includes original posts but not boosts (like a retweet). Having boosts would have dramatically increased the volume of data to help find most popular content shared on Mastodon.
For Bluesky I used this sample code to get all updates through the streaming API: https://github.com/CharlesDardaman/blueskyfirehose
I haven't figured out how to link "likes" on Bluesky to the posts they are liking. When I do figure it out then a like of a post with link A could be treated as if the user that liked posted that link themselves.
I know that the Mastodon community has been very sensitive to the ways the Mastodon data is used. See https://fedsearch.io/:
The concern is that if you make Mastodon data more easily accessible then you open up harassment attack vectors. That's why I'm not linking back from https://linklonk.com/social to the source posts and to the author profiles. I'm not sure if this resolves all issues that the community might have. I posted about it asking for feedback at https://mastodon.cloud/@lonk/110619081493442451
I've been on an alternative frontend to Calibre. I use Calibre extensively to manage my library and it's an amazing piece of software, but I'm just not too happy with its UI. I tried a bunch of alternatives like calibre-web, Kavita etc. but they didn't have specific features I wanted so decided to just roll with my own. It's currently built with Go and htmx, and really personalized for me.
While working on that, I found that Calibre doesn't really have a good language-agnostic API. There's calibre-server which is really more for serving books, and there's calibredb which is a command line tool. There's no good way to POST an epub file with curl to Calibre over the network. I tried searching for any projects or Calibre plugins but no luck.
So, in my current instance of yak shaving, I'm working on a REST API for Calibre that is really just a wrapper around calibredb. It's really barebones and full of bugs, which I hope to get into this weekend. It does not support searching, pagination, authentication or TLS yet, but it's getting there... And maybe one day it'll reach feature parity with calibredb.
Really cool reading about everyone's projects.
I've been learning testing via Jest. I'm using react-testing-library alongside it in my Next.js project.
I've also been learning GitHub Workflows and GH pages. We always used automated processes from Netlify / Vercel. It's super fun making the workflows leave PR comments with my test results.
Also set up Loki for Storybook. I added reg-cli for a nice visual regression report that I have deploying to GH pages and then added as a comment on a PR.
Really satisfying to put a whole CI/CD pipeline together :) (I set up CapRover on Hetzner last month and been loving it)
I'm working on a service that lets you create and share historical information. I don't want to spoil too much, because I think my idea is rather cool, but that's the gist of it. I just love history and find many of the online sources either dry or sensationalistic. Anyway, I'm building it with Go (echo), Postgres, and Svelte. I've never worked with Svelte before so that's going to be the fun part (I hope). Let's see if I finish it. I usually finish 80% of my projects and then lose interest in them.
I started thinking about writing a web app for the first time in years. I’m figuring out what tech stack I want to use. Along those lines, I made an example app where you press a button and the number goes up.
This is to try out Deno Deploy and Neon for the Postgres database. I like the tech stack overall but I’m not wild about the latency between the edge server and the database. (I chose US-east for the database even though I’m in California. Putting too close to me would be cheating.)
Maybe some app-level caching and a stored procedure would make it feel snappier? Or maybe I shouldn’t use an edge server and the put a single Deno server near the database. Or maybe I should switch to CockroachDB, which is multi-region and supposed to be somewhat compatible with Postgres? There are lots of options when you’re overthinking things.
Here’s a blog post I read about latency issues: Noticing when an app is only hosted in US-EAST-1.
Not quite as advanced as most of the project here, but I've had a Kasm Workspace instance set up for a while and recently realized how crippled the default desktops were for my particular use cases. I started building out a custom Debian base image that has tailscale installed by default and connects automatically via an ephemeral key, so I have access to the network resource I'd normally need. Also set up persistent profiles, a JetBrains IDE, VSCode for more language-agnostic stuff, and am currently contemplating setting up Termius for SSH host and key syncing (versus pulling down an ssh config from git when the container is booted).
Overall, not too difficult. Just have to work out the finer details of programmatically installing certain pieces of software through CLI since it's all based on Dockerfiles and Docker images made from those files.
While it's a rather obscure need for your average person, I have started developing a Windows Active Directory password filter titled sediment (hence the username). The goal of a password filter is to provide a custom need beyond the standard AD settings for password requirements, allowing an installed DLL to accept or deny a given password. I have reached an "operational" state in that it works by design, and I am currently in the process of cleaning up the existing code, implementing some best practices, and then creating the MSI installer which will be used.
Side note: I have loved the use of a binary fuse filter for maximum performance given a large dataset of known-compromised passwords, such as the haveibeenpwned set. After some modification to the crate I was using, I managed to drop my benchmarks from 8ms per password, to ~80µs.
What additional password requirements are you enforcing?
I also initially read this as "sentiment" and thought you were making sure similar words couldn't be used in passwords ("jump" being similar to "bounce" as an example). That would be a little mean. :)
That will actually be user discretion through AD GPOs. I intend on having optional "features" such as normalizing the password before checking if it's compromised (to prevent
p@ssword
ifpassword
is compromised, for example), checking for the existence of banned words or user attributes (such as their display name), and possibly others. It is open source after all!Currently working on a collection of python data engineering scripts that pull from the Steam API.
I'm having a hard time trying to package it however. One of the aspects of python I haven't fully grasped yet. The tools and functionality have been nice for doing some data science analysis projects on game recommendation systems though.
Building a custom SCIM interface to Azure AD for an large corporate system that doesn’t have such capabilities. Basically if you add users/groups on the AD side it automatically updates the system so you don’t have to do it manually.
Optimizing language learning using a combination of Netflix subtitles and Anki flash cards using LanguageReactor. I've been dissatisfied with LanguageReactor's Anki export functionality, so I'm building my own interface to automatically fetch their JSON export and load it into a Django project that can build my own cards, but with better editing capabilities (since LanguageReactor has no editing capabilities), and interfacing with Google's voice transcription / machine translation, as well as automating the furigana annotations.
Currently building a web app to help with finding the optimal move in the board game Can't Stop. I'm trying to program everything in React and Python, but I keep finding myself in the weeds fiddling with CSS when I should be working on adding more functionality. So far, I've set up the functions to check and display the valid dice rolls given sums chosen, and express what percentage of the overall number of rolls that is. Next I want to add the ability to add a third sum given the first two, tell the player which third sum is the best to choose, and finally roll them all together and give optimal strategies based on your initial dice roll.