Atom & RSS Feed -- return to the site root
July 9, 2022
So 2½ years ago I made a 3D-printed aquarium hood. I think it's time to throw it away, so I thought I'd show what it looks like now and talk about what I would do differently if I cared to make another one.
You might want to check out what it looked like when it was new but then come back and continue reading this article to see what it looks like now and learn what I would do differently if you want to make your own.
May 28, 2022
I haven't done much lately, so I haven't had anything to blog about, but I found this image I made back in January which I think is kind of interesting, so I'll share it.
I never learned to type "properly" since I learned to type as a 12 year old writing BASIC programs on an Apple II at the public library. It wasn't until a few years later that I would have a typing class in school. However, the way they wanted me to type felt unnatural, so I ignored it and did my own thing. So I've always just typed rather randomly, and didn't really think there were rules about which fingers go to what until I decided to pay some attention and map it out.
People talk about being slow typists because they type with two fingers, and here I am almost typing with just four, but it works fine for me.
I was surprised to see that my left middle finger is almost my E finger, as the only other use it gets is to sometimes press S. If I type "as" then it will move down and type the S after the middle finger types the A, but that's all. If I type "tropical," it won't move over and type the R after the index finger types the T. Instead the index finger types both letters.
My left hand mostly stays in the same place, which enables that E finger to be a thing, but my right had moves around more, typing almost everything with two fingers, with the ring finger getting involved only when other letters in the word move my right hand so far to the left that he middle finger can't reach the key. An example of this is "above" which, contrary to what the image above shows, causes my ring finger to hit the O since the index finger just typed the B and so the middle finger can't easily reach the O.
February 23, 2022
While copying this article from Discord, I was amused at how much nicer it looks on the blog vs. in Discord.
It's even nicer than this. This was after I decided to be "fair" and narrow the browser width so that it was rendering with the same horizontal space. At maximum size the image is even larger, but in addition to just being larger, there's so much compression in the image preview on Discord that it just looks ugly. ...and then there's the color scheme.
I'm so happy to have nice blog software now.
February 21, 2022
A few years ago I stopped blogging on the internet and started blogging in Discord, but I was never happy about that decision, so I've written new blog software to address my reasons for that. In this post, I'll explain those reasons and talk about the new blog software.
So expect to see much more content in the future vs. the no content whatsoever of the last few years.
November 3, 2021
So I added stereo sound, by using a small delay and volume change to make each of the two pulse wave channels sound like they're coming from opposite sides. I left the triangle wave in the center (there's only one and it's usually bass notes) and I also made the noise channel stereo. I mostly can't notice a difference unless I'm wearing headphones, so listen with headphones.
I tried to make a Windows version of the emulator, but the documentation on how to use GLFW with MinGW isn't really there, and so even though I've done it before with MME, I didn't get far. I might try again later but it's not looking too hopeful. In particular MinGW was giving me a bunch of errors in its own header files and I can't fix that.
October 31, 2021
I made some more tool-assisted videos. In this one I triggered a bug I heard about in a YouTube video, where if a thrown enemy contacts another thrown enemy, they both just float upwards.
October 31, 2021
So after working on the sound for days, I'm still not done, but I can say that what works so far sounds damn good. Here's a video of my emulator:
October 27, 2021
So I added sound. Here's a video that mostly just shows off that it can play the sound even when running the emulator in slow motion.
There's more normal-speed play at the end of the video if you just want to see/hear that.
October 25, 2021
Yay, I finally got my stack trace.
Line 157 is the one with the cursor. The if (j >= array_size) break; is supposed to prevent the invalid access, but it should be i in that statement, not j .
This is way better than my previous method of finding segfaults, which was prefixing every line with a macro that prints out the file and line number so that I could see what the last line executed was.
I suspect this may not be the same bug though, because it's a read access and so it wouldn't have corrupted the stack, making the other stack trace fail.
October 25, 2021
I added the ability to record videos to this thing, and also the ability to specify when buttons should be pressed on a timeline, with a timeline preview, so as to specify what buttons should be pressed for each frame of the game and see what effect it will have. Here's some not-that-impressive Mario gameplay I made using that feature.
I also used that ability to see into the future to make this video where every shot hits an enemy.
The videos have a weird aspect ratio. Hopefully they play correctly. If not then you might try downloading them to your computer and playing them with something other than your web browser.
October 25, 2021
So after this thing crashed after using it for like 30 minutes, I was wishing I knew where it crashed, but I hate gdb. So while looking into how to enable core files and get backtraces from them, I discovered a library called 'libbacktrace' which lets you put backtraces into your program. So now when it crashes, it'll display something like this:
October 19, 2021
It's getting better. It does sprites now.
October 17, 2021
I worked on it for another day and have this nonsense now:
It's a little hard to tell since the image is half noise, but it's a video. You can play it.
October 14, 2021
So I've been working on an NES emulator for the last two days. It doesn't do graphics yet, but here's the title screen of The Legend of Zelda rendered in text.
...at 5x speed.
September 16, 2021
I finally decided to address my aquarium problem a bit. I should have taken a 'before' picture of the smaller aquarium that the fish are in now. It was almost entirely full of plant stuff (though the tiny fish could still get around) and it turns out that two of the plant species actually grow quite well outside of water as, once they managed to break through the surface, they grow faster and better. Anyway, I removed a lot of the plants to put in my 10 gallon tank, and a lot are just in a bucket, and here's what's left in the 5 gallon that the fish are in now:
I didn't add the filter until two days ago when wondering how much of the green sludge it might prevent from growing on the top.
September 2, 2021
So this oscilloscope has an "auto" button on the front panel, and deep in it's menus it also has an option to lock the auto button, but once locked, you cannot unlock it without using the remote programming interface to do it. Why would anyone design something like this?
...but, whatever, it's literally just a button that you accidentally push now and then and it fucks up all of the scope's settings. So even if I weren't able to unlock it remotely, I'd still go ahead and lock it.
At the top-left of the image, I made my screenshot program replace the scope's brand name with "P.O.S." so that I'm not advertising its brand every time I post a screenshot. This thing isn't that great so I don't want to give the impression that I'm recommending it to anyone when post a screenshots.
August 22, 2021
Imagine you have a terminal disease, but science is able to develop a cure that merely requires that someone jump from a two-story building onto concrete and, for totally scientific reasons that completely make sense, it can't be anyone who knows you and thus would naturally want to do it. It has to be a stranger.
It's a height, but it's not so high that, if done correctly, the person doing it won't survive. Maybe they'll break a leg or an arm, but even that isn't a given with some training and practice. They just have to make sure that their head doesn't hit the concrete and that they don't break their neck. Anything else that might go wrong can probably be fixed by the hospital. So someone can totally save your life, and they'll probably be just fine after doing so. Probably.
What if no one volunteers to do this for you? Would you be in favor of the government stepping in and mandating that someone do it?
July 30, 2021
I took the plane for another flight a few days ago to test fixes to the previous problems. It can now go over 1997 ft. and realize it, but despite a new motor mount and a new motor, there's still some gyroscope problems, and I notice the plane wobbles back and forth while gliding more than I would like it to, as I'd like to have smooth steady video. (Which may be asking for too much, but IDK.)
From 4:16 to 8:24 is particularly nice, since the motor shuts off and it just glides.
July 23, 2021
Not the good camera, and the vibration from the propeller really ruined the first two, but I still find these interesting.
July 22, 2021
Wind was 2-3 MPH today so I decided to go fly again and record video so that it would be more fun. It is significantly more fun with video.
(This video becomes less wobbly 12 seconds in when the motor turns off, I just wanted to show some of the horizontal flight too.)
July 18, 2021
So I took the plane for a flight again today. I think I'm getting bored with it. It's kind of like "Well, it's flying. I hope it doesn't hit a tree." I didn't hit a tree, only a fence at the end when I was trying to land it and misjudged its distance, but still, I kind of feel like the amusement is gone. Also it was kind of windy which was making me nervous. The flight controller I built seemed to deal with the wind well enough. Hopefully the SD card actually recorded data that I can look at later. Overall though I'm kind of left wondering why I'm bothering as I'm not finding it all that interesting anymore.
June 29, 2021
So I called the building inspector to see what if anything they're doing. Apparently the guy came by yesterday and no one noticed. Anyway, he's under the impression that he has no authority to do anything. Apparently, while you're supposed to get a building permit, there's not much in the way of consequences if you do not. I called the local office to ask their thoughts on that, and they too think that, if they don't catch someone in the act of building, then there's nothing they can do.
June 27, 2021
I just noticed today how they fixed this bolt that was hanging out. (This is one of the bolts that secure the deck to the house.)
They just cut it off and covered the hole with one of their new 2x4 joists.
I don't know that that bolt was really doing anything to attach the deck to the house given that it was hanging half-way out, but to whatever extent that it was doing something, it's not anymore.
June 25, 2021
So here's the railing:
It all had these orange stickers on it as they were installing it. They removed all of the stickers except for this one.
WARNING: Post and railing intended for ornamental use only. NOT intended as a safety barrier for above ground installations.
June 24, 2021
So one of the guys working on the deck brought his dog to work. It was at the side of the yard on a rope at first, but when I left it was just chilling out under my mother's swing, without a rope. Who thinks it's acceptable to not only bring your dog to work with you, but also to let it roam free?
Anyway, my mother doesn't want me to say anything to the landlord about it so whatever I guess. Hopefully it doesn't maim my mother's cats.
June 19, 2021
I got a closer look at that today since they removed the bottom of the siding above the deck. It looks like the ledger board is against the brick, but it's the same rounded broken surface as the rest of the bricks which offsets it from the ledger.
Anyway, it looks like they decided to replace the joists. I've heard that some of this composite deck surfacing requires joists that are closer together, so perhaps that's why.
The new joists are only 2x4s.
June 14, 2021
So a letter was left on my mother's house today, from that guy, as he's apparently going to be doing the work. One of the things mentioned in the letter is that he will be installing a beam to provide extra support. I'm really wondering if it's going to end up being a beam with just one support post. The letter said that the work will only take a few days so we should know by the end of the week.
June 12, 2021
Here's version 2.
My old SJ4000 actually got broken because the USB cable was sticking out the side to plug it in and I guess it got yanked on one day and broke the USB port. Not wanting that to happen here, I extended the side of this thing so that I can have a hole that the USB cable fits through. Because of this, it's not possible to yank it sideways; it can only be yanked straight out. This gave me space to add a slider that holds in the actual camera, though it also fits in more security because I added something inside which slips into the only indentation in the side of the camera.
June 11, 2021
So the other day I was complaining about this guy's video that attempts to debunk the debunking of the UFO videos. Well, as if YouTube is really pushing an agenda, another of his videos was the first video in my recommended today.
Meanwhile it never told me about the video that Mick West published that debunks his video.
June 11, 2021
So I want to be able to use my Runcam 5 Orange, which I bought for RC plane videos, as a drivecam too. (It actually has a drivecam mode, where it'll delete old files automatically, so it can record forever.) So I designed these two plastic pieces to attach it to a suction cup mount that I already have for my SJ4000.
I made two pieces that slide together because otherwise printing the thing on top as an overhanging piece (the other part prints lens-side-down) seemed like something that might be difficult, so I decided I'd just make them slide together and then I can glue them.
June 8, 2021
I forgot that tank ever had so much plant life in it. It's basically all dead now.
I do have this other tank though that I put plants in and they're thriving, I guess because I don't regularly put fish food in it or even do anything to it.
June 7, 2021
I may be giving the guy too much credit by assuming he was talking about temporarily jacking up the deck and just said "post" instead of "jack."
One thing that has me thinking this is that, if you do this kind of thing for a living, you probably have more than one jack, right? So why would you even debate if you can do a 25 foot span with one jack. You'd just bring at least two of your jacks, right? It's not like there's some expense to using them. You get them back when the job is done.
Also, I spent today making a PDF to highlight the issues with the current deck for my landlord. In looking up some reference material, I found people talking specifically about dealing with poor connection to a building by installing a beam near the house in order to take some of the load off, which is what I thought they were talking about doing.
IDK, but whatever. Here's the PDF I made if anyone wants to read it.
I don't have much hope that the landlord is actually going to hire an expert to deal with the deck. So I was kind of hoping that if he at least shows the PDF to people he might hire, it'll scare away the worst of them.
June 5, 2021
About 2 months ago I sent a text to my mother's landlord to ask him to do something about the deck on the front of her house, since it always makes me worried it might collapse someday, especially in the summer when the wood dries out and it becomes extra wobbly. In particular it's attached to the house with only 5 seemingly-too-small bolts, even though there are holes for 7 or 8. He said he'd get someone to do it.
Today that someone and two others were outside looking at the deck, so I came outside to make sure they were aware of the issues I had with it. The guy was kind of psychotic.
June 5, 2021
I use DuckDuckGo for search but never thought about looking at it's video search. ...but it is way the hell better:
The #2 result is a video of some guy somewhat unintelligibly asking if it's been debunked, which is kind of useless, but he links to the video that I was looking for in his description, so that's a win. The #5 result, I didn't watch all of it, but the first few minutes are some guy with a night-vision scope standing in a field next to a highway and filming all of the triangle-shaped UFOs traveling down the highway, so that's a win too.
June 4, 2021
So the next day or something I was thinking "If I could just block all of the verified check mark channels from my search, I might be able to find what I'm looking for." I couldn't find a plugin that does that, but I did find one that lets me ban random channels, putting an "X" next to every channel name that I can click. So I repeated the search and banned a bunch of news accounts, but there's so many that I still didn't find what I wanted.
Something prompted me to look again today, and after 30 minutes of blocking more channels, I finally came across a video that had a couple of clips from the video I wanted to find, which made it apparent that the video I was looking for referred to it as a "pyramid UFO" rather than "triangle UFO."
June 1, 2021
I re-cleaned it, then painted it, then put it back together...
June 1, 2021
So I bolted these new metal pieces to the engine, positioned it in place, and then tack welded the pieces into place so that I could remove the engine.
May 30, 2021
For more practice, I cut some areas out of a piece of sheet steel, and tried welding in both a washer and a piece of bar stock with a hole in it, as those are the two ideas I have for restoring the bolt holes in the mower. This is how they looked when I was done with them.
May 30, 2021
So my mother told me that her lawnmower is broken, and I look at it, and these are the holes that the bolts go through to mount the motor.
It seems that at some point she hit something and bent the blade, which put it out of balance and so it vibrated itself to death.
A few weeks ago when I was thinking about wheels, I thought about how people who build cool shit on the internet have a welder. So I looked up how much it would cost to get one, and it would only be about $300, safety gear and all. However, I didn't get one, because I couldn't come up with any idea how it would actually solve any problem I had, nor could I think of more than a couple of times in my life when it would have been useful to have one.
However, I was now looking at a broken lawnmower which could either be replaced for $300 or repaired for $300. Well, assuming I can figure out how to weld anyway.
May 25, 2021
I made this thing to power my digital photo camera. I don't use batteries in it because it doesn't like rechargeable batteries.
I already had something like this, which just had the coax jack, the voltage regulator (which is hidden behind the capacitors in this photo), and the plug that goes into the camera, but it was failing to power my cameras. So I tried adding some capacitors, but that didn't fix it, and so I plugged it into a wall wart rather than the 8-cell battery packs I usually use, and that worked.
I'd been thinking about making a new one so that I could plug in the rechargeable lipo batteries I have for RC stuff, so this seemed like the time to finally do it. So I designed a PCB for it since I can do that now. (The old one was made on perforated prototype board.)
May 25, 2021
Something else I think everyone should know about, though I won't @everyone this time, is fish antibiotics.
Now you might be thinking "I don't have fish, so why do I need fish antibiotics." Well, maybe you don't need them, but let me show you these fish antibiotics I bought online:
They are 500 mg capsules of amoxicillin, the same dosage that a human should take. If you do a search for the "GG 849" printed on the capsules, you find this page:
It says that they're made by Sandoz Pharmaceuticals, and prescription-only. However, amoxicillin is prescription-only only for humans. For animals, no prescription is required. It's the same amoxicillin, it's just "not for humans."
So why might you want antibiotics without a prescription?
May 25, 2021
I'm in love with goodrx.com enough that I need to piss off @everyone by tagging @everyone to tell them about it. (I hear people hate @everyone tags, so sorry I guess, but goodrx.com has saved me and my mother a lot of money and I think everyone should save money.)
You put your prescriptions into it and it tells you what they will cost at every pharmacy. The differences can be extreme. I've seen medication that is $100 at one pharmacy be $10 at another. I've seen cheaper medications that are $10 at one pharmacy be free at another.
May 20, 2021
I really can't get over how much YouTube's search sucks. I wanted to find out what people think that new "spherical UFO that goes into the ocean" might actually be, but as usual, YouTube just wants me to watch videos from its approved sources, none of which are questioning it.
A note from the future: I sure wish I had spelled "spherical" correctly in this screenshot, but it's not the only search result I have a screenshot of, so click "read more" to see more.
May 12, 2021
A new idea, which was actually first idea, but I skipped it because I didn't think it would work:
It seems to slip at around 7 kg·cm. Since the motor can only provide 9 kg·cm of torque, I can probably get the rest by roughing up the motor shaft so that it's not smooth. I'll have to think about how best to do that.
The advantage to this is that once those sliding pieces are bolted into the middle, I have a solid 10 mm thick piece of plastic from the outside to the motor shaft, unlike with the last design where it has to be thin in order to leave room to attach the clamp. So it should make a more durable wheel.
May 10, 2021
So I kind of got an idea...
The idea here is to just squeeze the 3D printed part around the motor shaft. I don't have any tiny hose clamps so I tightly wrapped electrical tape around it instead. It slips at about 1.5 to 1.8 kg·cm whereas the motor itself is able to create 9 kg·cm. I guess I could just put a pin in it as well for the times when it needs full torque, but let this friction fit keep the backlash at a minimum when it doesn't.
The tricky thing about this is that the motor shaft is only 10 mm long, and I kind of need all of that to wrap something around it to clamp onto it. That means that the wheel either has to be 1 mm thick like this thing, or the wheel is attached beyond the end of the motor shaft, which seems like it could cause problems.
May 6, 2021
I spent the last couple of days trying to make the self-balancing land-based paddle boat work better.
I did come up with a couple of mistakes in my understanding of what it should be doing to balance itself, and after correcting them, it's a lot more stable. Before, even as it was falling over, it didn't act like it was all that concerned and would just kind of casually try to keep itself upright as it fell over. Now, when it is about to fall over, it goes from casually leaning back and forth to full motor speed and thus it can actually recover from being knocked significantly off-balance.
It still kind of sucks as far as being an RC vehicle that can be driven around goes. There's probably still more I could do software-wise, but without encoders on the wheels, I don't know how good it can get when the final step is "guess how much motor voltage will result in the desired wheel movement."
May 4, 2021
So I decided to try making it stand upright...
It kind of works. Keeping it upright requires keeping it's speed low because if it's going faster than it can spin its wheels then it falls over. It also shakes a fair bit which I think is because of backlash both in where the wheels attach to the motors, and within the gears in the motors themselves. I also feel like there's something wrong with my balancing algorithm but it's kind of hard to tell with the loose wheels and relatively slow motors.
April 30, 2021
Ever since I saw videos on the rctestflight YouTube channel where he made some boats, I wanted to make one. The best way I could think to do it would be to put paddle wheels on the side of a piece of foam. However, I first needed to make a motor controller since RC controllers for DC motors don't exist on eBay. So I programmed an ATmega328 to control an L298N H-bridge which is connected to two 24-volt motors, and now I have this:
April 27, 2021
I found another reason it may have flown into the trees, and I feel like this one is a lot more plausible than the others. Here's a picture to aid the description, which shows the plane's flight path in the simulator.
The purple lines are the result of flying the plane in the simulator, and indicate what it is supposed to do. Starting at the labeled start position on the ground, the plane is switched into auto-landing mode. The plane takes off to the east, flying towards the center of the "1100" circle, which isn't exactly an intended feature, but rather I couldn't think of a good way to make it enter a circle from any random location, so it just flies until it reaches the center of the circle, then it begins following the circle. It follows the circle counter-clockwise until it is facing south, at which point it exits the circle to fly to the "1000" circle to the south.
The blue lines, also the result of flying in the simulator, show the same starting position, but with a feature enabled that tells the plane to avoid aileron turns if the altitude is too low, since rolling the plane can make the altitude even lower. Since the plane starts at the ground, it definitely thinks it's too low, so it makes rudder-only turns which aren't as effective, and so it isn't able to follow the circle. So it ends up flying away from the circle until, until at the north end of that gentle curve, it suddenly decides it has reached a high-enough altitude and enables aileron turns. At this point it immediately turns back towards the circle and eventually drops the circle from consideration and begins flying south.
So imagine if my real-life plane, which was also switched into auto-landing mode soon after take-off, were just a bit slower at climbing in altitude: It would have flown straight over to exactly where it landed in the trees.
Between this predicting the crash site rather well, and requiring the start conditions that the plane actually had (being switched into automatic mode immediately after launch), I think it's much more likely that this was the problem vs. my other theories.
April 22, 2021
So I had another look at that card, this time trying to make the data logger itself read it. It turns out the card is completely dead. It's just that, if there's no card inserted, then the data logger blinks a different LED to indicate an error, but if there is a card inserted, even if the card doesn't work, it'll happily blink the same LED as if the card were working.
So that's just wonderful.
April 19, 2021
So it turns out that the SD card that was in the data logger wasn't the one that I usually use, and is one that, even though the data logger seems to be able to write to it, nothing else I own is able to read it. Two card readers, three digital cameras with a mass storage USB mode, and I tried the two card readers in another computer, but I can't get it to acknowledge that there's a card there. However, if I put it back into the data logger, the LEDs flash exactly like they do with the SD card that I can read. So maybe the data is on the card, but I can't read it.
April 17, 2021
I took my plane to the RC field for the sort-of first tests of my flight controller. I had tested it before, but only in auto-leveling and altitude-maintaining modes. This time I tested the fully-automatic modes, and I recorded video.
April 13, 2021
I got a new floor.
It was only $30. I had some foam mats like this already, but not enough to cover the whole floor, and last week while I was doing some cleaning, it was just so much more comfortable to stand on the foam than on the hard floor, so I decided to buy some more. Unfortunately it's totally incompatible with the old foam panels despite looking quite similar, so the old stuff will probably go in my kitchen once I clear the floor in there.
April 13, 2021
Tim Pool makes an interesting point:
Not only is there the problem that he points out in this clip, but also, YouTube seems to actively try to suppress information about the riots or peaceful protests or whatever you want to call them. You'd think you could go to YouTube and find videos recorded by the people involved in the riots or peaceful protests and thus see exactly what is happening. In reality, sometimes you can find currently-live streams from the riots, but if no streams are currently live, then the results are 100% legacy media videos, no matter how far you scroll. Videos recorded by ordinary people in the riots and/or protests are perhaps the most useful tool that people could have to see the truth of what is actually happening, but Google has broken their search to the point that you can't find videos recorded by ordinary people on a web site created to host videos created by ordinary people. All that you can find on YouTube is what the Google and the legacy media want you to see.
April 10, 2021
So I'm listening to an episode of Timcast IRL with some libertarian moron on it, who is saying that anyone complaining that they can't find a job is just whining that they can't find one that pays as much as they would like, and so they should either take a job that is available or move somewhere that has better-paying jobs. Tim's friend Ian points out that there's a minimum wage that anyone can accept because they have to pay rent. The guest then says that the people who founded this country showed up on the shore with nothing and built a whole country, yet people today think that they have to have a house, and actually suggests that people who can't afford a house should just build a mud hut.
It drives me nuts how libertarians don't realize that all of the land in the world is owned by someone, and thus poor people today have less than those people who showed up on the shores of America and had land to build on, trees to build with, animals to hunt, and forests to search for naturally-growing food.
April 7, 2021
So I finally got smaller drill bits so that I can do traces between pins.
They're 0.6 mm holes, which are big enough for IC pins, just barely big enough to fit resistor and capacitor leads, and too small for LEDs and everything else I could think of to try to put through them. Maybe I should get 0.8 mm too just to have another option.
April 6, 2021
Old board on the left, new board on the right.
That little capacitor is intentionally on the back, as I couldn't be bothered to separate things another 0.2 inches just to fit it on the front.
April 3, 2021
I modified my software that makes gcode to carve my PCBs so that, if there's room to do so, it carves around traces several times to widen the gap between traces.
I really like how this looks when it's finished, but I don't so much like that it took what seemed like four or five times longer to machine and then required about half an hour of carefully removing tiny strips of copper from between parallel traces, as they would totally just fall off one day and short something out for sure. Also, the algorithm still needs some work as the gcode that it produces does some dumb stuff.
The old algorithm was kind of a nightmare in that there's so little space between traces that I can't really see if they're bridged or not, but I had improved the algorithm to the point that it automatically cut the points that would bridge, and so it just required some sandpaper and then generally seemed to be fine. So I'm kind of on the fence about whether I like this new process, but it unquestionably looks better when it is done.
March 31, 2021
If anyone hasn't seen the full bodycam footage of the George Floyd incident:
I think it's clear that he died of a drug overdose, but I don't think that leaves the police without any responsibility. We have to ask whether the police contributed to his death. I think they may have.
March 23, 2021
So I took my plane to the RC field to test out my flight controller, and I kind of broke it.
This is only the front end. The rest is still in fairly good shape, but I'll have to remake this piece, and wash the dirt out of that motor.
March 13, 2021
Since the blog software was kicking my ass, I started working on the flight planner for my RC plane autopilot. I spent the last few days figuring out how to make it round off the corners of each turn automatically, so that the plane doesn't try to make sudden sharp turns.
Sudden sharp turns don't cause any problems, at least not in the simulator, outside of it obviously failing to turn as suddenly as it had wanted to. It just seems kind of dumb because as it flies past the end of the segment, it makes this intense turn because it suddenly wants to be going a different direction, and then it gradually eases out of that intense turn as it gets closer to the correct heading. By adding curves, the whole of the turn will be more self-consistent and less ridiculous.
Also, I'm always trying to think of how this will fail when I try it on the RC plane in real life and I'm a bit concerned about those sudden turns causing an unexpected drop in altitude or oscillation problems that I'm not seeing in the simulator. It would be better if the plane wasn't trying to do something that it can't actually do.
March 2, 2021
I played with the CSS and made it look nice, but otherwise this blog software project is kicking my ass.
I haven't felt great over the last week and everything about this just seems to lead to more design questions I haven't considered. So I have to stop and think "how will this work" and then "so what data gets saved in which files" and "what format will that data be in" and "what will happen if I need to change the data format in the future" and just in general every answer leads to more questions. Meanwhile the main.c is up to 1000 lines and I should probably be thinking about splitting it into more functions if not also more files but it's anything but obvious where to do that.
February 23, 2021
I decided I need new blog software so that I can go back to posting my content on the worldwide web.
It's not much yet, but it's starting to resemble a blog at least. It uses the "Accept" header to determine whether to return an HTML index of the blog entries, or an RSS version of them.
February 18, 2021
I found some pictures of Z80 computers I build in the past the other day. I'll post them all.
This might be the first one that I ever built, I'm not entirely sure.
February 10, 2021
A long time ago I bought the cheapest GoPro available, and was testing it out, when this particular image kind of shocked my brain, which until this point had only ever seen straight utility poles:
This prompted me to wonder what I could do to straighten it out.
December 7, 2020
I was kind of just "it's a thing" about this until I went and labeled this picture. Now I'm kind of impressed with it.
December 4, 2020
Nothing soldered here yet, but I'm still making progress...
After drawing the first PCB, I wasn't liking the complexity of four ATmega328, so I reduced it to three. Now the chip which receives data from the RC transmitter's receiver simply ignores every other data packet and, when it should be receiving it, it generates the servo control pulses instead. This works fine because that receiver sends 129 data packets per second and I only need like 50, since I can send servo control pulses only 50 times a second anyway, so ignoring every other one is no big deal. This means I'm sending the servo control pulses about 64 times a second, but the servos seem to be OK with that.
November 20, 2020
Listening to news about the election, it's like no one can figure out how to use machines to count votes in a secure way. The most insane thing I've heard so far is votes being transported on memory cards. Why? There's so many ways that can go wrong. ...and it apparently did in the form of some of the cards simply being misplaced and no one realizing that any were missing.
I always imagined that people at local polling places simply call someone up and report the counts for the ballots at their location, and then those local people (of whom there is presumably at least one to represent each candidate) can check the results reported to the public and verify that the counts reported for their local polling place are correct. That way there's no need for memory cards or official paperwork or locked ballot boxes or anything that can be tampered with. However, apparently I was assuming too much about people's ability to figure out a secure process.
It's not that hard to figure out how to use machines in a transparent way. Here's what I would do:
November 18, 2020
This is where I'm at with this so far...
Basically I'm following the plan I outlined here, just kind of slowly because I've not had a lot of energy so I've just been kind of doing a little bit at a time. Of the four ATmega328 chips, three have the code written for them. I wrote the code for the PWM output chip in C as well, as it's so convenient. I just disabled interrupts while it creates the PWM output.
October 23, 2020
I tested the new GPS yesterday. It seems to be incredibly accurate and doesn't drop satellites as soon as the plane is in motion. I'm really impressed with it.
I spent the last week playing with algorithms to fly the plane, testing them with the RC flight simulator. Flying a plane with code is kind of stupidly easy. I employed the simplest algorithms I could think of and they worked fine. It seems to just be a matter of not having any bugs in the code.
October 20, 2020
I got a new GPS and so I went to test it out today. I also put a new spare motor I got on the plane, and unfortunately that motor only lasted about 10 seconds before smoke came out of it.
October 15, 2020
So I wrote this program to test my algorithms with the test data recorded by the data recorder I wrote about the other day. The first clip shows some normal flying with two turns in one direction and one turn in the other direction. The second clip shows a few loops.
October 10, 2020
So I made this thing...
The idea here is to record GPS and Gyroscope data while the plane is flying, and video too, so that I can bring it home, write some code to take the gyroscope and GPS data and calculate where the plane is and how it is oriented, and then compare the output of that code to the video of the flight to see if they agree, and thus test how the code performs in-flight without actually putting the code on a plane. I've already flown it so tomorrow (I'm about to go to sleep now) I'll begin working on processing the data.
October 8, 2020
I got a new camera which records much clearer video than my old camera. Today was a bright sunny day so I attached it to my plane and flew it as high as I thought I could go without losing it. Here are the best frames from the video.
October 8, 2020
October 6, 2020
This article is a conversation that occurred in my Discord server when I was trying to figure out how to process 3-Axis gyroscope data properly. Being a conversation between two people, it's not exactly a blog article, but the information was hard to find, so I want to try to put it on the internet anyway and the conversation surrounding it might be good Google bait for similar questions.
In the future, I'd like to do a better write-up of the code I ended up with, but for now, this is better than nothing for someone who is looking for this information.
September 23, 2020
I flew again today to make up for the disappointment of no video from yesterday. The plane never did anything crazy so no fun stories of getting it out of a tree this time. Since I can't post full-resolution video of more than like 7 seconds (Discord has an 8 MB limit), I'll just post a few full-resolution frames from when the plane was up high, and then video clips of the landings, which for some reason interest me more than actually flying the plane.
September 22, 2020
I flew it again today. I attached the camera to the side and pointed down a bit, so as to get better video. I also flew it higher for a while. Then, after bringing it lower, I was making a turn and it did some totally random and crazy shit and ended up in a tree.
It took like 30 or 40 minutes to get it out of the tree, which was really more like a giant bush whose many small thin limbs formed a net that it was kind of caught in. It was only about 15 feet from the ground, but it was still hard to get because the bush was too flimsy to climb. I got it out with a combination of tying a rope to a ball and throwing it at the plane to then pull on it, which helped to pull the plane a little lower, and then I was able to reach it with a stick I found and knock it out of the bush.
September 20, 2020
I went to the flying park today. Twice. The first time there were a bunch of people there, so we went grocery shopping instead and came back later when the sun was annoying low and I figured that would have driven everyone away, and indeed it had.
The first flight was interesting. I had no idea the plane would be so hard to control in mere 7 MPH winds. I guess it is just a big piece of foam. I was able to keep it under control but it was a bit stressful to fly because it was constantly doing something new that I had to correct for.
September 19, 2020
A note from the future: I posted all of this at once in my Discord server, because the start was just "I found this cool YouTube video" which isn't something I usually blog about, and so it wasn't until two months later that I realized I had something I should be blogging about and I needed to fill everyone in on the back-story. So this starts out like I'm just talking about some YouTube videos I watched, but it gets more interesting as it goes on, particularly in the posts that will be following this one.
So click "read more" and enjoy this blog finally starting to become interesting.
August 4, 2020
I've wanted a PCB for the button box for a long time, so I started trying to make one last week. However, I can't make silicone button contacts, and can't really find any cheap way to get buttons with LEDs inside them other than what I'm doing, so I kind of have to stick to the same button design: 3D printed plastic with aluminum tape on the back which makes contact with wires on a board.
August 1, 2020
I built this stabilization thing for the CNC machine. It's the piece of plywood that has some green 3D printed plastic bolted onto it, and then in the middle it attaches to the X axis carriage with some other bolts that clamp onto it when tightened.
This came about because I noticed that the spindle could be deflected left and right quite a bit, and traced this back to the linear slide bearings on this thing being rather loose. I'm not surprised, as the ones on my 3D printer are kind of loose too, and I question how the things even work on the inside since normally bearings roll but in a linear bearing there's nowhere for them to roll to. So what's holding them in place and why don't they wear into it?
July 23, 2020
Since making PCBs it not that hard now, I went ahead and made another. This one is an odometer for an indoor bicycle. It just counts pulses from a hall effect sensor and increments the displayed count.
This time I tried tinning the board with solder, but it looks worse than when I didn't. I saw a YouTube video where someone used a proper tinning solution. It looked nice so I'll have to look into getting some of that.
July 22, 2020
I re-carved it with the bit that cuts better. I can't drill holes yet because I have to carve the other side first.
July 21, 2020
Indeed, my code to adjust the Z height to match the height of the copper had a bug, causing it to work incorrectly if the XY zero point of the PCB I was making wasn't the same as where the machine was when it was turned on. So I fixed that.
I then wondered if I wasn't using the broken carving bit. So I pulled it out and compared it to another, and really couldn't tell the difference. So I put in a different one, made some test cuts, and it looked about the same. So I put in yet another carving bit and tried again, at which point I got this insanely accurate result:
July 21, 2020
Excessively low resolution but here's a 60x timelapse of what I'm doing:
I start by lining the cutting bit up with some target holes drilled from the other side, to align it with what's carved into the other side. Then it runs around measuring the height of the copper. Then it starts carving and it's apparently almost immediately that it's cutting too wide and too deep but there's nothing I can do about it at that point so I just let it finish for the video. Then I drilled the holes so I could check their alignment with the other side.
July 20, 2020
I decided to work on automatically converting the more conventional PCB designs that my PCB software produces into ones suitable for a CNC router.
What I want to do is not produce any unconnected copper on the board, which happens with the conventional approach of simply outlining all of the traces.
July 19, 2020
Part of a failed attempt at making my first PCB with this thing.
The interesting thing about this picture is that the holes you see were drilled from the opposite side, where it wasn't possible to see the boxes that the holes were supposed to be drilled through.
July 16, 2020
I put in a new unbroken bit and tried to make some surface-mount-sized traces.
The three vertical lines are spaced 0.05 inches, which is half the spacing for normal full-size IC pins. On the right I tried 0.025 and something else, but neither of those would work.
July 16, 2020
Here's what I finally managed to carve into the PCB material:
Unfortunately I carved away the copper at the zero coordinate, and thus I couldn't measure the drill bit, so I just drilled the holes with the carving bit to see what it looks like.
I'm still using the broken bit BTW, so IDK, but an unbroken one might cut better.
July 15, 2020
I woke up today with a good idea for how I wanted to add curves to my PCB program, so now I can make a better fuck.
July 14, 2020
I added some code to my PCB editor to make it output a file of gcode commands to drill a hole wherever there is a hole in the PCB. With that, I was able to drill the word "FUCK" into this piece of cardboard.
July 12, 2020
Well, I bought one.
It arrived today. Took a couple of hours to put together, which was made a little more complicated by the instructions assuming it came with t-nuts that could be inserted into the side of the rails rather than having to be slid in from the ends, so they kept telling me to put shit together which I then had to take apart to put the t-nuts in.
July 6, 2020
I was pointing a laser pointer at a light bulb and the laser light looks like static when you look at it. I was thinking about this and realized that the static I'm seeing might be because the coherent laser light is getting scattered around and either adding together or canceling out in different places. However, the spots were rather big compared to the relatively tiny wavelength of light, which made me think that maybe the effect isn't occurring in the bulb itself, but rather in my eyes, and the static I'm seeing is of the resolution of the "pixels" in my eyes.
So I took a picture of the bulb to test this theory, expecting to see the static in the resolution of the camera's sensor if that's the case. It was a bit of a challenge to get the camera to focus on the bulb correctly but here's what I got:
June 18, 2020
As "pro-freedom" as republicans supposedly are, you'd think they'd realize that it's not their place to tell someone else what content they have to be willing to host. Yet they want to turn section 230 into a tool they can use against these companies by saying "if you don't allow everything, then we'll allow you to be sued for anything."
I read an article a couple of weeks ago which basically said that the whole reason section 230 came about was because a company had been removing bad comments from its site, but then a court decided that because it had removed some bad comments, it was liable for the ones it hadn't removed. So section 230 was meant to say "you're allowed to do what you can to police your comment section and doing so won't make you liable for what you fail to remove."
So what the republicans are trying to do is effectively repeal section 230 to bring us back to the days when no one could have a comment section because it would open them up to liability. Does that sound like a good plan for protecting free speech on the internet? The conspiracy theorist in me thinks it sounds like a great plan for removing freedom of speech while giving the appearance that you're doing the opposite.
June 15, 2020
I kind of want to get one of these: (unclickable link follows)
A note from the future: This listing no longer exists, but if you search "3018 CNC" you will find many similar listings on eBay and Amazon.
May 28, 2020
After getting my new motor with gearbox, I mounted it through a hole in a piece of wood and spent some time trying to use it, and ultimately ended up with this process:
Overall this takes about 30 minutes to make a set of buttons vs. the 90 minutes it took before. I was hoping to get it down to 10 minutes but saving an hour is still good and the process is a lot less stressful since it's so much easier to make the circular cuts now.
May 19, 2020
I've been trying to think of how to make button boxes more easily.
The simplest idea I've had is to make putting the foil on the back of the buttons easier. Each button gets a piece of foil tape which I then have to carefully trim with a razor blade to make the foil fit the button. Not only does it take about 90 minutes to make a full set, but it's also very frustrating work as it's 90 minutes of trying to carefully keep a razor blade within a range of about 0.1 mm while rotating this little thing and so it requires a lot of focus.
It occurred to me that it could be a lot easier if the buttons were to spin on their own. Then it would just be a matter of holding the razor blade in the correct place for a second or two. Assuming I could trim each button in about 10 seconds, it would only take 5 minutes to do a full set.
April 25, 2020
A few days ago I noticed some odd noise coming from my Kitchen, but wasn't able to catch it happening. So I wasn't sure if it was noise from outside (maybe then neighbors) or if an animal was in the house.
Today I was able to figure out that it was coming from the floor vent. Something was down there not only pushing around this flexible tube that runs to all of the vents, but seemingly actively trying to dig into it, given how much it sounded like it was being pulled on only to pop back when it slipped out of the animal's grasp.
...and it was rather determined. At first it seemed afraid of noise, but within a couple of hours that thing didn't care how hard I beat on the floor. It also had quite a smell to it.
February 13, 2020
A note from the future: This was originally six different posts, but several of them were quite short, and so I don't want to post them individually. So here's the whole story from beginning to end.
Well, fuck... A year and a half ago a tooth started hurting, but due to not having any dental insurance and not having so much energy that I felt like dealing with the problem of trying to find dentists that can tell me what it would cost to fix it so that I can figure out who will fix it for a reasonable price, I've basically ignored it for a year and a half. ...and now part of that tooth has cracked off. So I guess I have no choice now but to look for a dentist now.
February 9, 2020
I was surprised at how easy it is to take screenshots and create fake inputs in X11. X11 was probably one of the first C libraries I ever looked at and I immediately went looking for something else. So I wonder if I just don't have this impression of it being over-complicated because I had no experience with anything when I first tried to use it.
February 4, 2020
I heard about an achievement in Minecraft that you get for flying through a one-block hole. In trying to get this achievement, I found it to be ridiculously difficult. So, I wrote a program to do it.
The program screen captures Minecraft to read the coordinates from the screen and then create fake mouse movements to fly through the hole. Here it is in action.
I made it so that enabling the F3 menu to show the coordinates enables the program, so it only has control after the coordinates appear on the screen. I still have to fly it to a suitable starting location at the beginning and then make it land at the end.
Older articles are in The Archive