Working on a firmware without the hardware is a bit difficult so today, after thinking about the part list, I worked again on Minecraft modding!
I have made a mod to add controller support to the game and other quality of life control improvements, I already have added something I call "front block placing" which allows you to put blocks in front of you to make like bridges without having to be backwards and in sneak and that is available in the Bedrock Edition of the game.
But what about vertical block placing? Down the block your standing on? So today I worked on vertical reacharound!
I had to change a lot of the previous implementation of "front block placing" that I have to allow vertical reacharound, as I make a special "Block Hit Result" which is raytraced from the player's eye position towards where the player look with a range.
Now that I have a common class for front block placing and vertical reacharound so they share the same cached variables, I had to make the actual algorithm, how to detect that I want to put a block with vertical reacharound?
Well, given the methods available it's actually simple! First I check for the pitch orientation, which has to be bigger than 80.0f (max being 90.0f), then I had to determine if I can vertical reacharound and where.
To do that I use the ray tracing function with as range the player's max reach and a start position slightly modified, the goal being to ray trace to the block the player is standing on. So I take the player's position and add 0.75 on the Y-coordinate and checks if I hit a block.
If I hit a block, then I check if the block down is air or replaceable and if it is I can return a modified "Block Hit Result" with as the hit side the Down side and the block position below the block which the player is standing on. Then I cache it each tick so I don't have to call this function each render, etc.
The method for the actual block placement (which is the item use) was already implemented so I didn't had a lot of work to do beside adding a little animation around the crosshair to indicate that you can place the block below.
And tada, here's the result in-game!
Hopefully my explanation is understandable, ahah! ^^
Just finished the last couple 3d printed brackets for a 3dof robot arm ( 5dof once end effector is manufactured ). Handing off to another club member to wire it up and figure out IK, while I work on the hand tracking VR app to remotely control it over the network.
Did some more research into post-processing the depth map from Pydnet. What a shame to see people not fully documenting their methods! 😭
On the bright side, it looks like I can run Pydnet without an ML accelerator albeit at a much lower FPS which should be fine for an MVP 🎉 .
Session 2 of my journey of learning how to improve on piano (I don't expect these to sound good — they're like the "before" part of a "before + after"). During my 1st session last week I kept in mind nothing except to generally stay in the same key. Since then I've reviewed chords a bit + watched some relevant videos, but it's all been pretty passive + I haven't practiced the concepts yet. Today I added some left-hand chords + continued exploring melodies in various keys, but being so out of practice made it hard for my hands to coordinate. I think I'll see rapid improvement once I review my chords more actively + practice playing different progressions 🎹
I had a blast today, took a break from doing nothing to have fun with friends.
Also did some timing verification by hand (I still need to learn how to use TimingAnalyzer fluently) to make sure everything is in spec. Finally caved in and added extra protection circuitry; a buffer at the end of the input bus (ditched fancy level shifter circuits as it also doubles as a 5v to 3.3v shifter too!). List should be finalized tomorrow :D
Spent all day today fixing a ton of Scrappy bugs! Here's everything I did today:
• The streak resetter is called by a Zap that runs every hour, but it kept turning off every time it ran because I wasn't sending a response back. Now it's fixed and running every hour! 🕐
• We added text formatting (emojis, channels, and users) a while back, but posts made before that still appeared unformatted. So I wrote a script that formatted every scrapbook update since the beginning ⭐
• Scrappy now publicly links to the scrapbook profile of anyone who shares a CSS style so that anyone can see what the style looks like 🖌️
• If you had a custom scrapbook domain set and you ran /scrappy setdomain again to set a new one, it wouldn't remove your previous domain from Vercel. Now, it does! :vercel:
• For a while, when you edited a message or shared an unfurled link in a thread, Scrappy would react with a beachball. Now, it doesn't do that anymore :beachball:
• If you to set your status to a streak number that doesn't match your streak, Scrappy sets your status to a clown emoji. A few days ago I accidentally broke this feature, but I fixed it today! 🤡
• Yesterday, @saharsh submitted a pull request that automatically updates your scrapbook profile when you edit relevant profile information in your Slack profile. Today, I got that PR working, made a few changes, and merged it. Now when your profile picture, website, GitHub profile, and timezone change, it'll instantly be reflected on your scrapbook profile 🙌
• Today, I was made aware that Scrappy occasionally doesn't update people's status, either when they post an update or when their streak is reset. I believe I fixed the issue—I couldn't test it because I couldn't easily reproduce it, but if you notice your streak status not being properly updated, let me know so that I can investigate further! :som-7+:
• In case you didn't know, all full slack members can run /som-promote to promote a multi-channel guest to a full user in Slack. Now, when you do that, it notifies #welcome-committee that they've been promoted so that they can help them get acquainted with the rest of the community! :heart:
• And finally: previously when you uploaded large video files (>300MB), Scrappy would falsely tell you your video was successfully uploaded, only to silently fail and display an unsatisfying black screen on your profile. It was failing because 1) Slack wasn't serving the video near-instantly like it normally does with most files, so Scrappy was fetching an error page, and 2) even if Scrappy managed to fetch the large video, it crashed the Heroku dyno because it didn't have enough RAM to download the whole file. My largest project for today was getting large video files to work. Now, if you upload a file that's too big for Scrappy to download, it will wait for Slack to serve the file, upload it directly to Mux (the platform we use to serve video on the website), and notify you when it's processed. So go ahead and upload multi-minute videos now! :yay: 📹
If you find any other bugs in Scrappy, please let me know or open an issue in the GitHub repo (github.com/hackclub/scrappy) and I'll fix it. And of course, if you notice any of the bugs I supposedly fixed today persisting, please let me know so that I can look further into them and fix them for good.
Here's a picture of me giving a very good dog a belly rub
Update - I tried Pop OS 19.04 and that didnt partition my USB when I etched it, also used Rufus for etching and not balena. And finally got it working! Wohoo i'm excited!!
Thanks to @Krishna Prasad Bhat for all the debug help and motivation :partyparrot:
I’ve tried several times over several years to get somewhere into iOS development, & it’s just never worked out very well for me. Over the last few days, I’ve been digging into SwiftUI more seriously, & made good progress on downloading/parsing JSON (so much harder than on the web!) & using views/layouts (so much simpler than CSS/JS!) to build a little native Scrapbook client. Building an async image gallery today & figuring out date formatting, with the assistance of a multi-hour Zoom with an experienced dev friend, pushed my limits of Swift knowledge super far. Hoping to add a few more features & get it up on TestFlight—so cool to be learning something wholly new.
Today is a very exciting day. I was reunited with my beloved arduino and my crazy spontaneous idea of shoving wires into vga ports actually works!! You know what this means? My homebrew cpu might be able to output to VGA!! Waow!!
Back in Vermont with @msw. Moved into our new home for the next week. Had 2 convos on video call tonight with teammates: (1) how do we make sure ops for Bank will be in a good spot this week and (2) what could something look like that would get more actually good student nonprofits running?