This is the public group instrumental rationality diary for September 16-30.

It's a place to record and chat about it if you have done, or are actively doing, things like:

  • Established a useful new habit
  • Obtained new evidence that made you change your mind about some belief
  • Decided to behave in a different way in some set of situations
  • Optimized some part of a common routine or cached behavior
  • Consciously changed your emotions or affect with respect to something
  • Consciously pursued new valuable information about something that could make a big difference in your life
  • Learned something new about your beliefs, behavior, or life that surprised you
  • Tried doing any of the above and failed

Or anything else interesting which you want to share, so that other people can think about it, and perhaps be inspired to take action themselves.  Try to include enough details so that everyone can use each other's experiences to learn about what tends to work out, and what doesn't tend to work out.

Thanks to cata for starting the Group Rationality Diary posts, and to commenters for participating!

Immediate past diary:  September 1-15

Rationality Diaries archive

New Comment
27 comments, sorted by Click to highlight new comments since: Today at 4:10 PM

I realized that I was approaching my future career by doing the sort of things that I think I am supposed to do prepare for said career rather than actually figuring out how to go about preparing for it.

Are there any details on this that you would like to share that you think might be useful to others?

I suppose I could be more specific in case someone else finds it helpful.

I am currently pursuing a BS in Comp Sci at an obscure online university. I decided to supplement this with classes from Udacity. However, I found myself becoming addicted to the little 'correct' sign when you get an answer right. I found myself going mindlessly through the courses as if merely having taken it would make me better. I've since slowed down, making sure to internalize the information, and I've allocated much more time into building my portfolio so I can show future employers something more substantive than an easily-fakeable certificate.

I also changed a strategy from googling "How do I get into [x]" with doing actual research about what x involves and how best to get there from where I am now. In my experience, the former approach provides little useful information.

Just to make sure, by "building portfolio" you mean making computer programs, or what? What kind of programs?

My current plan is to focus on simplistic games such as Pong and Caterpillar, as well as programs designed to play said games

I think this is a very good plan. It is good to make simple games (or merely demos of the concept) first, because the distance between no game and a simple game is probably greater than between a simple game and a complex game. So if you make a simple game, you solve the problems on simple instances, and then you are ready to deal with them in more complex situations, because the core ideas are now clear.

For example, even very simple games usually contain a lot of the following: loading bitmaps from files, displaying bitmaps, loading music from files, playing music, reading user input, calculating coordinates, calculating movement, calculating collisions, timing and animations, keeping values in variables, switching between introductory screen and game screen and victory/defeat screen. -- Which is a lot of things, especially if you are doing it for the first time. And each of those things can become a separate problem, with subproblems, such as: "what to display on the screen while the bitmaps are loading, and what to do if the loading fails". Also, the language and libraries may create additional problems, for example to make animations in Java you have to understand the thread model and synchonization, otherwise mysterious bugs can happen. And I am still speaking about a Pong-like game.

Then a complex game contains more of the previous things, plus: reading configuration files, saving and loading a game, AI opponents, perhaps an installation program. (And nicer graphics and music, but that is outside of the programming scope.)

So doing the simple game properly -- not just on the "it works (most of the time)" level, but having a clear design and understanding how and why the parts cooperate -- is a very good start for making a complex game.

(Here is a trick you may find useful: After making the algorithm, you can hugely improve the impression of the game by adding nice graphics, even when some parts of graphics are completely irrelevant to the algorithm. For examples if different levels have different background images; or if the level contains pictures that don't interact with anything; or if the same thing is represented by different bitmaps in different levels, like trees with different shapes and colors, a level with things covered by snow, etc. A textbook example is the game Knytt. Also, nice screenshots create a good halo effect.)

Huh. After reading that, I'm thinking it might be more impressive to switch to something less ridiculously simple than Python.

More importantly though, you made a great point about the halo effect. I had completely forgotten to take that into account. On further reflection, I realized that I consistently forget to account for the halo effect, and that it may be in part because I wish to believe it does not exist. This could use some work.

it might be more impressive to switch to something less ridiculously simple than Python.

Why? Do you get extra points for doing things the hard way? As opposed to: choosing the right tool for the job.

(I am not familiar enough with Python, so this is not a comment endorsing Python, just a reaction to the "less ridiculously simple" part. If two programs do the same thing, what's wrong with the simpler one?)

I consistently forget to account for the halo effect, and that it may be in part because I wish to believe it does not exist.

Yeah. We programmers are proud of our ability to write complex code, so we wish complex code was the most admired thing about computer programs. Unfortunately, most people are impressed by nice screenshots. (At the first moment. When they use the program for some time, they start caring also about things like working properly, not crashing, etc. But to get them there, you need a nice screenshot first.)

"Why? Do you get extra points for doing things the hard way? As opposed to: choosing the right tool for the job."

I don't know what potential employers are looking for (and now I realize that I haven't even tried to find out), but I would expect them to be more impressed with a thing if I were to do it in a more 'difficult' language than if I did the same thing in a language that needed only two lines of code for the job. My focus is on signaling my skill, rather than completing the program itself.

Then again, I'm thinking it would be even more impressive to learn Python's deepest secrets and exploit them to the max.

Data point, possibly completely irrelevant: When I am looking for a Java programmer job in Slovakia, pretty much the only thing employers care about is how many years did I program in Java and which frameworks did I use. -- Which in my opinion is completely stupid, because I consider the ability to write and understand algorithms much more important; and a new framework is just something you can learn in a month or two, if your algorithmic skills are solid. I guess the problem is with the fact that the employers who make the decision are not coders themselves, so speaking about algorithms is simply too abstract for them, but asking questions like "how many years?" and "are you familiar with XYZ, yes or no?" gives them a false sense of understanding.

More generally, you are a perfect employee if you did something extremely similar to what your new employers wants to do, for the last ten years. So another good question is: what kind of projects are the employers in your target group typically doing? (For Java programmer in Slovakia it is: a database application with a web interface, most likely in finance.) Then do a simple demo, using the "right" framework; which is the one most frequently mentioned in online job searches.

Note: In my case, programming games would be almost completely irrelevant to a real job experience. Although there would be some transferrable skills, such as commenting the code, maintaining a large program, understanding threads, etc. But I would completely miss communicating with the database and creating HTML pages, and knowing hundred specific details (and dozen bugs) of the relevant frameworks, which make most of my daily work.

But the problem is that there will be dozen frameworks doing pretty much the same thing, and new ones are still invented, and the old ones are redesigned. You just won't have time to keep up with all of them. So the framework-based knowledge is prone to obsolescence, which drives some programmers into despair. You need to be more meta, and instead of "knowledge of framework X" focus on "ability to understand new frameworks". (But you also need a deeper experience with one or two of them, just to learn what the painful parts are.)

More generally, you are a perfect employee if you did something extremely similar to what your new employers wants to do, for the last ten years.

Thank you, especially for this. I've been contemplating "looking good to potential future employers" type things, and it hadn't occurred to me until just now to frame it as "consider exactly what it is said employer wants, minimise the distance between that and me (as presented by resume / portfolio / etc)"

I made a policy that aimless dicking around on the internet is not allowed between the time I leave my flat and finishing work. Finding answers to questions, adding Anki cards, finding worksheets to print off are fine, reading HN, LW, or news sites is not. I now spend a lot of time on Anki, email and Kindle. It works because it's very easy and clear what's allowed and when.

I'm coming around on the stronger version of the Efficient Market Hypothesis that says, "you can't buy and sell equities in a way that beats the market in the long run. Just invest in an index fund, pay low fees, and don't try to pick stocks." I'm not sure I believe this any more, for a few reasons.

One is that I lived with a guy who traded professionally and we had a series of conversations where he explained about stocks to me, specifically why information-efficient prices don't automatically imply an unbeatable market.

Another is that the outside-view strong-EMH argument has some vague structural similarities to arguments I hear about poker being unbeatable, with the following facts that seem VERY reminiscent of trading:

  • The long run is so long and the variance so high that day-to-day performance is basically all noise, and so
  • Lots of players with losing strategies appear to beat the games, and
  • Lots of players with winning strategies lose money, even over "long" periods of time, and THEREFORE
  • Just because someone has won in the past doesn't mean you can do what they do and make money.

But I know that poker is in fact beatable, I know why it's beatable, and I know it because of specific facts about the reality of the games & the players. Similarly I suspect that certain facts about real markets and market actors may make them beatable by retail investors.

Still researching this.

"don't bet against the house, bet against other players"

Of some related interest: Parrondo's Paradox

Notwithstanding having made a very specific list of things to do today, I almost immediately digressed into related tasks that were not on the list.

This failure mode requires further attention, as does (possibly) what is a suitable to-do list entry.

Further breakdown: The task turned out to have hidden problems, and so I started solving the problems in order to complete the task, which is fine, but not what i intended. I also didn't think before writing down the task 'might this task involve problems?'

Related failure: I do not feel productive, because the work I ended up doing was not the work I planned to do*. So I need to either get better at sticking to my list, or update on what merits feeling productive.

I wonder if I'd feel productive if I hadn't had a list at all?

* Edited to add: Maybe the reason I don't feel productive is because I have done a bunch of work but not reduced the observable pile of work that needs done.

I've found it useful to add time-estimates to my to-do list, and I stop adding things once I have eight hours of work down for the day. For me, the "I've acheived everything I set out to today" feeling comes partially from getting lots done and partially from setting realistic expectations.

I usually make a schedule on my gcal, but I don't put much effort into being accurate with time estimations -- a couple of quick tasks can share half an hour; larger tasks usually can't be completed in a day so they get whatever chunk of time I feel like allotting them, often 1.5-2 hours. Then I feel like I have accomplished things if I actually get done all my little tasks, and if I actually do my big tasks for at least most of their allotted time.

I've had the same "aha" moment about realistic expectations, and scheduling has helped, but ... it seems like maybe the novelty has worn off or something?

What happens if, when you encounter unexpected work, you put it on your list before doing it?

Then I feel fine about it! But I didn't realize I was doing off-list tasks this time.

My experiment in massively curtailing my use of Twitter and Facebook is going well. Objectively, I'm completing more items on my to-do list on a daily basis; subjectively, it appears that my ability to focus has improved, which I'm willing to chalk up to not feeling compelled to check new-message notifications and therefore just not having that distraction, though I would like to be able to measure this in some way.

I was expecting to feel rather cut off from the world, but fortunately this has not been the case. I've been more responsive to more personal methods of contact (email, IM, in-person interaction) that I had previously felt spread too thin to deal with, and this has been hedonically rewarding (e.g., answering email from person asking for some software design advice -> nice thank-you email -> warm fuzzies).

I also started the Tiny Habits course that I saw mentioned in the Useful Habits Repository.

Are you using any tools to keep yourself cut off, or do you merely choose not to visit those sites?

In the past I've manually edited my hosts file to point time-wasting sites to, which is a small obstacle at most -- I can easily edit it back -- but is enough of a speedbump to remind me "oh, right, I'm trying to avoid that right now." This time I haven't needed to; I managed to become so frustrated with the fact that my queue was saturated with short-term rewards that weren't netting me anything in the long run that choosing not to visit the sites doesn't seem to require much willpower.

This leads me to wonder whether I could eliminate other influences I want to avoid by making myself sufficiently frustrated with them, but that seems like it would be an unpleasant skill to pick up.

  • I uninstalled TagTime from my phone, after using it for about a month to track my emotional states. Uninstalled because I don't have my phone on me 24/7 and filling in a bunch of tags a few times a day felt too much like a chore and too granular to really provide me with useful information. That said, I got a lot of useful information out of using it during the first couple of weeks, so if anyone wants to try mood tracking, I think TagTime is useful in short bursts.

  • HabitRPG continues to be my most awesome productivity tool. I've now been using it for around 6 months and the devs recently fixed the site so that it loads much faster and almost never crashes. If anyone tried it and gave up because of the bugginess, I highly recommend trying it again now

  • In the process of trying to change the way I interact with my housemates. I've been able to change my expectations of their actions, but I'm still getting a lot of emotional crud that indicates that I alieve something different to those expectations.

I've been using something called "Emotion Sense" on my phone. (I'm not sure if it's android only, or iOS as well.) I haven't learned much of anything from it yet, but I haven't been using it that seriously. It's a pretty simple interface, though. I might look into using TagTime.

oooh, that's much closer to what I was originally looking for. Thanks!

New to LessWrong?