Monday, July 20, 2015

IFComp 2015 Devblog #4: Consistency and going for big stuff

We'd all like to strive for consistency--and of course we all want to Catch the big fish too. I think the first helps with the second, as long as it's not done too much. So what is too much? And when does consistency become foolish and the hobgoblin of little minds?

So a correct (but unhelpful) answer is to say "You need a bit of each," and then if someone asks how, fluff on the details with "Oh, you'll figure out out."

This is strictly correct, but often we need data or illustrations for a story. My experiences at GitHub have given me some idea. It has a wonderful tracker for progress. And when I saw it, I said, wow, that'd be neat motivation to get me doing something every day. It worked so well! I would write up an issue, and that counted, and that was good, because it showed I was planning and thinking. I'd make a small fix, and it reminded me I did something well.

The only problem was that I started putting off fixes--for the day when I might not get anything done. Part of this was in my head, but I did play these games. Or I'd wait til 12:01 AM the next day. This book-fudging isn't exactly high-level embezzling or criminal records falsification, but it did eventually get in the way of just doing stuff, which was the opposite of my intent. And I was clicking just fine--well, until that day when I made a lot of changes, had something to do in the evening, and forgot to check in my changes until 12:03 the next day. Rats! So much for my 41-day streak. But it was a nice busy weekend, and I got a lot of stuff done, writing and Real Life.

This precipitated a nice long streak of doing nothing on GitHub. Well, I did something, just not on GitHub. Until Jason Lautzenheiser mentioned that he wanted to look at various source controls and I figured heck, why not throw the Stale Tales Slate up there. So I moved over issues, etc., from Bitbucket.

I've had two days since then where I forgot to submit changes. Obviously, I can fix that sort of localized error. I want to pay attention and get credit for when I do stuff, and I want to make sure I take time to do the simple stuff. And I'm not going to beat myself up over missing it, because I got a lot of changes done. I think the big thing is to avoid "BUT I DIDN'T DO ANYTHING" and the slump that potentially follows. Perhaps this is too technical or sports related for some people--but it's helped me.

Number one is considering hitting streaks in baseball. DiMaggio's record of 56 is all-time. That's where he had several chances to get a hit, and--well, he was lucky enough to get it going. Some days, it just didn't fall, but most days, he did get a hit. With writing ideas it's a bit easier to do something every day. And I think the hitting-streak model works pretty well, as the most recent long one I remember lost its final chance on a sacrifice fly. To stretch the analogy, Luis Castillo had several chances to get a hit withhis 35-game streak before he was left in the on-deck circle...and I had much more control over what I could do to submit some work for the day before I saw it was 12:03 or, well, 11:57 with nothing really adequate to send in. But the important thing is to win, and if I write out a big idea and don't need a bug to do it, so much the better.


Number two is considering how a football team mixes up plays. The run (probably get a few yards) and the pass (take a shot downfield) are both necessary, but if you play one too much, you may get predictable and unoriginal. Even unbalanced teams go with 1:2 ratio at worse, and if it's higher, it's probably because they're down and need to catch up (like a writer too close to a deadline.) So instead of worrying about what is the best thing to write, I try and mix it up to keep it fresh.


And sometimes I just need to punt to come back later.

Another has been Monte Carlo simulations, or stuff I remember from Analysis class. Let's say I give myself x=100 1-minute intervals a day to think up a big idea, the sort I get (throwing numbers at a wall) once every y=100 one-minute sessions, totally random. My times may run together e.g. on the bus or writing at my desk. Or they may be taken during breaks working or working out.

The expected distribution is 1/e chance I get no ideas, 1/e I get 1, 1/2e I get 2, 1/6e I get 3, 1/24e I get 4, etc. Changing x and y, the probability of no ideas is 1/e^(x/y).

So I can see that I can reduce the probability I get no ideas per day by doing more--but it'll never get close to perfect! There'll be some bad day. I also have some baseline figures for, what if I have more than one idea, and no, I shouldn't be surprised.

This has helped me a lot when I sit down and can't think of anything good right away. It's a mathy way of saying "I can have patience and faith" as opposed to hearing "YOU NEED TO SIT DOWN AND HAVE PATIENCE." Now some of this patience comes about by writing stuff down and seeing where it leads. But it also helps me keep things objective when I see an idea. I can't fully know if an idea is super inspired or not. Sometimes it feels too esoteric, and sometimes it feels too simple. There's always an excuse to puff it up or shrink it down.

And this isn't to say emotional stuff is bad. It's just that, for me, the less I worry about if an idea is a big one, the more I can look into adding the good stuff to make it a big one.

Thursday, July 16, 2015

Ouch! 3 months since my last post.

I've been--sharpening my tools. I hope? I meant to be posting a lot about my IFComp game, and the ideas and humor have been flowing, and I hope everything makes it in. The thing is, I'm putting out my nets, even if I'm doing a bad job of writing new code. I've got a lot of white paper.

As for actual accomplishments? The big news is that I finally moved some projects to GitHub, and the results were immediate. BitBucket has some useful organization, but GitHub's flexibility let me nail down the issues that were important to me.

So I would like to say that, if you have any idea whether creating a source control project is a good idea, even if you only use the issue tracker--it is. And with a source tracker, if you regularly upload, it's even better.