18
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 have discovered Home Assistant a few months ago and I'm still digging deeper in it. I don't have that much devices and/or automation running, but I got RGB LED bulb in the kids room for them to play with, all around the house thermometers and I have hooked up RPi with LCD in living room to it (to show temperatures and have some control over a few remote control mains sockets) and RPi in technical room to handle heating the waer and running the boiler.
Some things are automated, like running pool pump through solar heaters when the sun is out in the summer (based on Openweathermap info) or heating the water using boiler in the winter.
I have also hooked up my robot vacuum running Valetudo (software that cuts the robot from its original servers making it internet-free for your private use) to Home Assistant and I control it only through Home Assistant including power, cleaning of specific rooms and I could easily automate it if I want.
I'm looking into hooking my 3D printer to Home Assistant too, but only for monitoring purposes and just "because you can".
I'm also thinking about using my Home Assistant for my ringbell, but I don't have the audio part solved, not even in theory.
I am relatively new to Homeassistant too and what I found most surprising is all the non-smart home integrations that can be useful. The first months, I had not a single smart light bulb in my house, but was happily automating stuff.
For instance:
Yeah, I was considering adding calendar to it so that all the family can see the schedule. But we are old-fashioned amd use paper one not even writing anything into any shared electronic calendar.
I run HA in Docker container on my DIY NAS, I can connect to it via OpenVPN that I run server for from another location where I have public IP. A bit complicated but also fun.
I got into HA by just being curious - bought just a button, a mains socket and SkyConnect (adapter/gate) and three months later I'm all in :-)
It serves as kinda information hub for me with a few useful functions/controls. I don't really plan turning my home head-over-heels (is it how it's said in Emglish?) on HA and automation and Zigbee, but I will likely add a thing here and there as time goes by.
Nice! I want to re-integrate home assistant into my house too.
At a previous home, I put z-wave switches in nearly every gang box, including fan ones for the fans with the variable speed options. I loved it and was sad when I had to move lol.
Now I'm doing the WiFi switches because I've had issues with z-wave here - maybe the walls are thicker? But I do have z-wave door locks, so I'll get those set up one day too.
I'm going Zigbee route with switches and sensors. There are some that are hooked up to my previous homemade Raspberry Pi based system but I have just made their output JSON compatible and reused them in my current Home Assistant setup. I will probably reduce the number of sensors and buy zigbee ones in the future.
We love HA and run ~60 lighting devices on Zigbee. It's chatty enough we need two radio bands, two radios, and zigbee2mqtt to avoid broadcast storms. We can run circadian lighting for the whole house now, which is an amazing experience winding down in the evenings.
Migrating the VM to newer hardware was a huge performance boost as we started adding more devices. If you start running into state synchronization problems consider jumping off Pi to something beefier.
My HA runs in Docker on i5-4670, there won't be issues :-) RPi acts as sensor source and another one as switching relay, they don't run HA. Even the one with LCD is just RPi with LCD running browser in kiosk mode to show HA webpage/interface.
I would have to change quite a lot to enable all house lighting with HA which is costly and also I would have to make my wife want it, which is something no money can buy :-)
But I love how custmizable it is and what you can do with it! As I said, still digging deeper.
I have been experimenting with Home Assistant for the past week or so, using the Zigbee2MQTT bridge and Mosquitto as the broker for a number of IKEA smart home devices- mostly bulbs. In my experience so far, the bridge has been the most reliable component of this set-up, and the Home Assistant ecosystem and apps themselves are messy and unreliable.
The primary impression I get of Home Assistant is that a lot of effort has been made to extend configurability of the whole system via the YAML or GUI, without actually considering the most common uses of such a system. The very basics- binding remotes to devices- can be achieved outside of the Home Assistant sandbox, and more reliably at that (direct Zigbee bindings and groups are both quicker and better-synced than in Home Assistant). Cleverly automating a particular action across a selection of remotes / sensors and bulbs becomes a convoluted pain unless you wish to run yet another integration to achieve the same result (the big one is changing of bulb colours / temperatures depending on time-of-day).
At this point I'd feel more comfortable writing an MQTT capable Python script which performs this task directly through Zigee2MQTT bridge than through the Home Assistant configurator- but I do understand that not everybody is willing to learn how to write Python to run a smart home.
I don't know; obviously it's all personal preference and use-case, but I'm not sure it's the solution for me.
It definitely isn't the best or one and only solution. As I wrote, I don't have almost any automation running, just a few helpers and switches and temperature related stuff.
IKEA remotes and bulbs seems to be very messy, actually. I have only one of each and it's far from walk in a park. But from my limited understanding it seems one person/enthusiast made them to function at least as they do now. Without it they won't likely work at all. Considering this I think it is quite some work and whole far from perfect, I'm glad it works.
I don't have another Zigbee light to compare to, but I have button that just works as a button - you press it, it registers a press, you hold it, it registers a hold. I can see such button being used with light in different way than IKEA remote is using.
But my knowledge is very limited in this regard.
About Python scripts... HA is the solution for my Python scripts. I was fed up with writing everything myself and not even being able to have some GUI and access it over VPN. HA is much easier even for family members to use. But as I said in the beginning - it definitely isn't the only or the best solution. And as such, it certainly won't suit everyone. Who knows, maybe it won't suit me either if I run in some big issues in the future.
My same70 (Duet3D 6HC) speedup got merged into Klipper! Additionally a new package and module for prometheus-klipper-exporter got merged into nixpkgs/NixOS!
My project for the last few days has been getting the LIS3DH accelerometer on my printer working over I2C. The Duet3D Toolboard 1LC has one onboard, and it makes sense to have an implementation. Here is that work, will need some minor refactoring once another set of commits goes into Klipper to get merged. It has been a moderately successful couple of weeks for my 3D printing hobby.
I've updated my remote shell client/service xs to build and install more cleanly in Win10/11 MSYS2 and CYGWIN; MSYS2 changed its default runtime to UCRT64 recently, so things needed some re-working (I only recently gave in and ran a Win11 system so I had no idea MSYS2 and CYGWIN runtimes had changed so much over the last few years...)
A few new crypto modes and 'Borg countermeasures' (crypto/hash algo rotation during a network session) have been added recently as well.
xs is an experimental alternative to openssh, written from scratch in Go using post-quantum KEM and its own protocol.
The Windows builds had previously relied on a hacky shell wrapper to set terminal attributes properly but I finally worked out how to do it properly within the program itself.
Standard disclaimer -- don't use it for anything security-critical, it's all super-experimental, blah blah blah.
After another week doing internal refactoring on repeatTest, I think I’ll be able to do a release soon. The code to split the picks into groups doesn’t always improve performance, but I have it working and there is a flag to turn it on, and it did improve performance when shrinking an array of strings. Next, I’ll be creating more benchmarks and doing some profiling.
Ive been maintaining a factorio server for a freindgroup. Its really, really easy to setup a docker container in nixos.
I have a bone to pick with modern MMO's, especially since all the game data gets datamined before patches come out and everyone starts min/maxing optimal gear and such.
So I wanted to design a system which makes loot unpredictable and even more sinister, loot info just partially being obsured. You would need to play around with said item to figure out what it does to gain an understanding of what it is. Instead of picking up an item new to you and just immediately recognize it as LEGENDARY STAFF WITH +120 INTELLECT OMG! How would your character even know that!?
The code is primitive at best but it's a way for me to fight against the gripes I have with MMOs these days.
thats really cool! ive had simlar thoughts but its a surprisngly hard thing to design around. the closest i came also involved obscuring information so you could have two identical ingots and make two identical blades, but they might have different durabilities and weights bc they were actually from different ores.
or my personal favourite rabbithole to go down was trying to make a potionmaking system that was coupled with a 'simulated' plant ecosystem. eventually people might realise a certain plant from a certain area has the best buff to side-effect ratio, but thatd cause it to get over-harvested and show up less in the next season tick (i wanted to have migrating populations kinda like conways game of life too but never got that far)
but its actually quite hard to keep the entire problem in your head while ur considering design elements, and balancing what feels cool from a nerdy 'oh this would be a cool system' perspective and what is actually good/fun game design lmao
I'd be curious to hear more about your system and how youve approached it
I like your first idea! Keep the obscurity through mats even! super cool.
Similarly, why don't current expansion potion recipes not contain earlier expansion materials?! (refering to WoW mostly).
So for my Improved Loot Drop System or ILDS for short I wanted to have randomized loot being controlled by weights. My choice was to divide loot quality from 0 (junk essentially) to 255 (best there ever will be). Killing an enemy slightly above your level would have a bias towards a higher chance of dropping higher quality whereas lower level enemies have a worse bias.
From this, it will distribute its stats from that number so for example an item dropped of quality 120, then the stats to be distributed would be 120 divided by how many stats you have. In my example that would be Strenght, Agility, Intellect, Spirit and Stamina. That distribution would be random so you could have a solid quality but shit stats. The color of the item would be a gradient between all the qualities we've accustomed to so, grey, white, green, blue, purple, gold.
And what the item is and what it is named is also coming from a randomized table. So for example the item is Elven Blade, and it's quality is green (say, around 40) then it's quality prefix could be pulled from the 40-50 table and could be 'Fine Elven Blade'.
My system has all these contained in one big string of hexadecimal chunks, so for example;
Hex String: 3BD56F452A, Decoded Values: ['Wearable', 'Legendary', 'Off-Hand']
This makes it easier for storing those values in a database for characters's bag slots.
To add to this I have a system in mind for never having to deal with number squeezes ever again each expansion. Every expansion would have the same stats, the same amount of damage, just effective gear lvl being reduced past it's intended level of use.
Still working on tilegroxy. I made a 0.8.0 release for stuff I added over the past month. Might go ahead and just do 0.8, 0.9, 1.0 since timing seems to work out.
Also made a second demo that does a runtime conversion of elevation data into a map of the (weather effects aside) boiling point of water. But since my server is so underpowered I have to restrict zoom level to precached tiles to avoid performance looking bad. Meh. Undecided whether to finish it (need to redo how the tooltip works, probably add a legend, and add attribution) or toss it
I have more of a question. I work for a smallish company and we have three main developers, including myself. One of the problems we have is that communication is poor throughout the company, including the dev team (which has one full time remote worker, and two are in office 3-5 days a week). We have VERY little oversight (no one in the company is familiar with any kind of project management, we receive zero input from management outside of getting asked to work on specific tasks, with basically no follow up until it's complete). Is there any suggestions for project management? I am not team lead material but I'm trying to get kind get us more on the same page.
I'm thinking of kind of doing an AGILE methodology and using Jira's Kanban board. Any suggestions or materials to read/watch? I'm not looking to implement an immediate large change - I am the most junior member of the team with two years experience vs the other two having 20+ at this company. But something to install and slowly get everyone involved in.
Some details: all the devs are self-taught, though I have some college experience. We don't do what you would consider 'traditional' programming, like using a language like C++, Java, Python, etc. We use a program called FileMaker, a 'low-code', GUI oriented, database. If you aren't familiar, think MS Access with way better GUI tools and a custom scripting language where everything - code, editor, tables, GUI, lives in a single application.
It seems like there are different parts to this: communication among developers, communication between developers and management, and also communication between developers and the people who will actually use the software, if they’re different.
Tools and dashboards can be good things, but maybe just figuring out what sort of things you want to know more about and asking more questions one-on-one would be a good start? If you don’t have good opportunities to ask questions then that itself might be an issue. And then writing up what you think you learned and sharing that somehow.
Sharing mock-ups or demoing new features can be a good way of getting conversations going, assuming people are interested because they’re really going to use the new features.
I am definitely trying to increase communication. We have a weekly meeting with management, but I've been slowly trying to add regular short meetings with just the dev team. The goal is to help clear anything blocking progress, request help from the other devs, pitch new ideas, etc. The other developers are okay with this, but their 20 years of experience is mostly working on their own projects - maybe troubleshooting bugs reported from the end user - but otherwise not touching each other's work. So its remarkably different for them to collaborate - which is necessary with the goals management has.