193 karma · joined June 20, 2017
Does everything still go "through" tmux (so parsing etc. is still done twice), or does iTerm handle most of the rendering and just delegate scrollback storage/session persistence to tmux? The latter seems like the best of both worlds.
1. Go FFI is slow
2. Per-proto generated code specialization is slow, because of icache pressure
I know there's more to the optimization story here, but I guess these are the primary motivations for the VM over just better code generation or implementing a parser in non-Go?
Btw, I believe this entire video is animated with custom C++: https://github.com/2swap/swaptube
I just arrived at this thread after my entire system stalling completely at yet another low memory situation.
Let's just say I'm extrememly grateful to discover some of these userspace early OOM solutions in this thread.
Also, I recently added a comment with a photo album if you are interested!
Some of you wanted a photo album of the journey; I quickly collected one here [0]. Apologies for duplicates, no descriptions, and Google.
The full album shows a lot more of the process, but I also linked some quick highlights / milestones at the end of this comment.
Also, to those who were wondering, I am still in the market for a Summer 2019 internship.
I really ought to have a blog post detailing more of this, but here's a little backstory anyway. My best friend from high school and I wanted to experiment with creating our own modular drones, and although we bought a bunch of parts, we ended up leaving for college before we could do anything. A couple years later I had some time on my hands, and I decided that I wanted to see whether or not I could actually build and program a drone myself. For the project, I tried to focus on writing high quality software while still managing to build something flyable with my nearly-nonexistent mechanical skills. Even though much of this project was physical (and electrical), I still largely consider this a software project, actually.
Physically, my prototypes are something you might laugh at. Zip ties, styrofoam, and Gorilla tape were my go-to materials for the most part. I originally started by mounting (read: zip-tying and taping) components to PVC tubes and metal sheets; combined with the pretty large LiPo battery I bought, it should have been no wonder that four motors were no match for the weight of the thing. I later decided to screw together 6 strips of carbon fiber sheet (a "frame") and add two motors to help assure my drone can actually lift greater than two inches off the ground at a time. Reworking the flight controller to work with six motors instead of just two was a fun challenge; I decided to make the flight controller support an unlimited number of motors in a circle while I was at it.
Figuring out the optimal wireless technology for the drone was a bit of a process as well. It was frustrating when I thought I had everything ready for a test flight, but then slowly realized that, perhaps, I wasn't going to be able to get away with using Bluetooth LE over non-trivial distances. Eventually I found a radio module with superb distance and transmission rate; and after some struggle, I got them working. You can see in the video that I could control the drone from quite far away!
It took quite a few days of test "flights" to get the drone to fly as well as it did in the video (if you consider the oscillating nightmare in the video "flying well"). Even getting the drone to launch two feet in the air, instantly lose control and backflip, and crash back down on the ground felt like an AMAZING feat from my perspective; it demonstrated all my systems were at least online and functional. I slowly increased the hover time of each attempt by a couple seconds or so, adjusting my controller tuning and implementation as I went. The flight in the video was nowhere near as primitive as some of my early experiments, even.
I'm sure I skimped on many details, don't hesitate to ask for more information on anything.
[0]: Full album: https://photos.app.goo.gl/QhSZEyd4DA1r9S9G6
First physical prototype: https://photos.app.goo.gl/k6km6Hyrkq4FuxkH9
Second physical prototype: https://photos.app.goo.gl/sL1LjnAgeXrmGvgEA
Third physical prototype: https://photos.app.goo.gl/bY33peH7RZbXPxyx9
LED strip code testing: https://photos.app.goo.gl/wZJJJ4NrFENjpUkHA
Custom remote control assembled: https://photos.app.goo.gl/z577cVbH59vjW3g56
Final "boxy" physical prototype: https://photos.app.goo.gl/8ESsQidi5Tgsb1mm6
I got a pair that claims to block a very large amount of blue light (at the expense of a distinct orange tint), and just wear them after it gets dark.
It makes sense that they work; your brain uses blue light to time the release of melatonin and such, and our ancestors were only exposed to non-blue light from sitting besides the campfire socializing after the sun went down.
Wearing these allows me to experience much less of a consequence for using a computer at night which I simply cannot get myself to avoid.
The political barrier suddenly becomes much less intimidating if an extremely efficient way to such CO2 out of the atmosphere manually was found tomorrow.