Ramphastos toco

A year ago, I wrote Proprioception, where I argued that other people observe you based on your external effects, but you need to measure yourself by your internal compass. Anything else is just giving up your sense of self to forces beyond your control, which is unreliable and dangerous. I've been thinking recently about the link between internal and external perception, so I'd like to take a shot at an important way in which this is reversed.
I don't know if I could commit to never lying, because despite my ideas about truth it seems obvious that there are situations where lying could lead to the best outcome. However, mostly when we talk about lying we assume that same division between internal and external perception. In your mind, you believe the truth. Outside it, people believe the untruth. This division is so fundamental you can use it to test for a developed theory of mind.
"Be yourself" is advice I've dumped on (twice), and justifiably so. But if it's such bad advice, why does it get repeated? Is there any kernel of usefulness hidden in there? I think so, and it's for the simple reason that the internal–external division is not as airtight as it seems. In reality, we imply both ways, and the way we act externally influences how we feel internally. The advice "be yourself", generously interpreted as "act like you're comfortable with yourself", is not so bad. Over time it might come to be true.
In general, I think we must be very careful not to pretend that we act in an external vacuum separate from our internal sense of self. The version of ourselves we project to others is the version of ourselves we see reflected back. The things we say end up being the things we believe. And, while lying to others might sometimes be justified, it so easily leads to the unjustifiable: lying to ourselves.
I think I got a bit burned out over the last little while. I'd been putting a particular effort into getting my prototypes and small projects in order, which was going fairly well. Unfortunately, my writing fell behind for various reasons and it was difficult to muster the extra effort necessary to fix that while keeping everything else on track. By the time I realised what was going on I think it was too late for my normal failure system to really help and I just fell behind.
Based on my previous thoughts about two-phase burnout, I gave it a little while of not pushing too hard before trying to get back on the horse. I think that was the right thing to do under the circumstances, but I've unfortunately ended up a week behind. Normally I'd think about changing my posting system to mitigate the effects, but I'm not really sure that anything can deal with an outright loss of motivation. Instead, I spent some time reflecting on what I could do differently to avoid burning out in the first place. Some thoughts on that are coming in future posts.
Meanwhile, I'm hoping to learn from my earlier extended lapse last time and avoid making any grandiose gestures to atone for the posts I missed. Again, though, I can't help but feel like the unbroken line of posts stretching back is a powerful motivator to keep going, even if that line is, uh, decidedly non-euclidean at times. I'd hate to get in the habit of missing big chunks of posts and having this line lose its meaning. So a balance must be struck.
What I've decided is that a steady cadence of one regular post and one birdpost per day is achievable. Depending on how I'm going I might forego the pictures I'd normally put up on the regular posts. I'm confident that this will put me back up to date on a predictable timeline without risking the burst-and-bust cycle that I ran into before. Wish me luck!
I've been thinking about a neat idea for a couple days that I think I'm going to implement. I've previously written about how important it is to have lots of different things aligned with your goals, both high-level and low-level. Well, this is an idea of the decidedly low-level cheap trick variety. I've always been disgusted and fascinated by how easy it is to motivate yourself with a simple numeric score. That's part of the motivation behind the monotonic stats idea, but I think I can do even better.
What I want to do is make a system where you can give yourself arbitrary points. You have a big number associated with you. It only ever goes up, and it goes up by prescribed amounts that you define. So you can say "taking out the garbage" is 10 points, and every time you take out the garbage you click that button and your score goes up by 10. I'm also toying with the idea of having levels at certain point milestones. The idea is that, while the points are arbitrary, they don't have to be meaningless, and it should be as easy as possible to define meaning on top of them.
I find something really fascinating about these kinds of systems that, in some sense, have very little to say. They're not designed to take a strong stance about how you use them or what you use them for, but they are designed to express a particular set of ideas or tools that might be useful, and encourage you to use them. I'm hopeful that these set of tools will turn out to be useful for motivation or, at least, fun.
Last week I made 7 prototypes, and this week I made 3. I've noticed that once I miss one day in a week it's very easy to miss subsequent days as I fall out of the habit. Another thing I'm beginning to realise is how important it is to have a lot of available ideas to work on; it's easiest when I don't have to think of and work on the prototype at the same time.
I noticed a broken link in one of my posts a little while back, and I figured that, if there's one, there are probably more that I haven't noticed. So I decided I'd write a spider in Go to find out. This first prototype was just getting used to Go and how to use its HTTP library, so I made a simple program that queries jsonip.com to get your IP.
In part 2, I wrote the link spider itself. This was surprisingly easy, and I was impressed by how nice Go was to use. I wrote it synchronously, so it took longer than I would like, but it worked great. One minor quibble was that I didn't want to structure my code according to their ridiculous GOPATH structure, but thanks to glide I could just vendor my dependencies and it was fine. Until...
Disaster! I figured I would make it work concurrently so I could learn how to use Goroutines. This was going okay, I realised I needed a concurrency-safe set to hold the URLs I'd visited and so on, but when I installed it I realised Go was actually ignoring my vendored packages. Why? Because my prototypes directory wasn't inside my GOPATH. Never mind that I didn't need anything inside GOPATH, just the directory I was in. Anyway, I spent so long screwing around with that madness that I didn't finish it properly. It does work concurrently, but it tries to simultaneously request every URL and immediately runs out of filehandles. Oops!