Fascinating artistic response to a legal spat. It’ll be interesting seeing how it plays out, too.
“Anti-Terrorist Fantasy Dream Team on the Case”
Seeking to quell fears of terrorists somehow breaking out of America’s top-security prisons and wreaking havoc on the defenseless heartland, President Barack Obama moved quickly to announce an Anti-Terrorist Strike Force headed by veteran counterterrorism agent Jack Bauer and mutant superhero Wolverine. […]
“I believe a fictional threat is best met with decisive fictional force,” explained President Obama. “Jack Bauer and Wolverine are among the very best we have when in comes to combating fantasy foes.”
(Via Schneier on Security.)
Know Thyself: Programming Style
This is the third follow-up to my my previous entry on self-knowledge and motivation. The entire series can be found here.
I’ve finally figured out the problem that I’ve been having with motivation for working on Project X. It’s really pretty simple, and I don’t know why I didn’t realize it before.
I’ve taken some college classes in data structures and such, but I’m primarily a self-taught software developer. The way I design and write software was learned through many years of trial and error. It’s very good, but it’s not something that could be taught in a classroom.
Any good developer comes to have a software emulator in his head. It’s the natural consequence of writing and debugging code; he learns to read a function and mentally “run it” to see exactly what it would do when it’s given a particular set of inputs. The better he gets at this, the faster and easier he can debug a function, and presumably write one as well.
The better developers can look at an entire module, or an entire program, and see how each part interacts at a high level of abstraction. This is largely what makes them better developers; they write code that supports this mental model. They seldom need to write comments in their code, because their code itself explains what it’s doing: their variable names explicitly describe what they represent, their function names explain exactly what they do. Comments are generally reserved for explaining why something needs to happen, and that’s usually self-explanatory with code written by these guys.
(Although examples of this style of design are provided in most programming courses I’ve read about, and it’s often explicitly emphasized, most new developers simply don’t get it. I don’t think that’s a defect in the programming courses; it seems to be the natural consequence of the fact that it takes years of experience before a developer can really grasp the reasons behind it, and start writing code that properly supports it themselves.)
The end result is that a really good developer can design an entire program in his head before he even touches the keyboard. The design is subject to change and refinement as he develops the program, but even those changes are almost instantly designed in his mind. If you describe a bug in code that he’s written or studied to him, you’ll often see him sit back with his eyes unfocused for a few seconds, then he’ll be able to tell you exactly what the bug is and how to fix it, or at least exactly where in the code to look for it.
And that’s the problem: nothing quite like Project X has been done before. I can easily remember dozens of details about Project Badger, even about code that I designed and wrote a decade ago, because it all fits into a well-understood framework. But I find myself flailing and grasping to hold onto some simple details about Project X because I don’t have a clear mental model of the overall design yet.
As I’ve worked on it over the past couple weeks, I’ve found myself tensing up and getting anxious because I can’t see how the end result should look. After an hour or two of work, I have to get away from the computer or work on something unrelated to calm down, and it’s hard to get back to it because I still don’t have answers to the design questions that drove me away in the first place.
A clearly-identified problem usually contains the seeds of its own solution. I’m getting anxious about working blind. There are two obvious paths to counter that: don’t work blind anymore, or don’t get anxious about it.
There’s little I can do about the working blind part. The reason I don’t have a clear vision of the end result is because it doesn’t exist yet. No one knows how to do it. The only solution to that is more thought and experimentation. So is there anything I can do about getting anxious about it?
Maybe. Simply understanding why it’s happening should help counter it. Giving myself permission not to know exactly what I’m doing… easier said than done, because it goes against nearly twenty-five years of experience at designing software, but it’s worth a try.
I’ll write more on this as I get it.
A bit of a reach…
Dear [e-mail address],
Click to open
This newsletter is sent to you because you agreed to receive information from Jxezj Ayxodo. If you do not want to receive our newsletters in future, please unsubscribe now to ensure you are taken off our mailing list
Copyright c 2009 Yvakajo Tuzahyy. All rights reserved.
Unsubscribe now | Manage Acoount | Privacy policy | Contacts
If they’re going to lie to me, they could at least try to make the names look like they came from something other than a random generator. And thanks, but I don’t really want to “Manage Acoount” any time soon.
Do you ever get the impression that someone really isn’t trying anymore? 😉
“New weapon turns fire ants into headless zombies”
This article made me wonder… could there be an as-yet-undiscovered species that does something similar with human morals? There’s certainly a lot of evidence of one; its victims seem to congregate in investment banking, certain kinds of lawyers’ offices, and at the top floors of the head offices of multinational corporations.
“Obama Makes New Credit Card Rules Official”
Nice! I don’t understand how it got past the credit card companies’ lobbyists though. Unless even they can’t convince politicians to look the other way anymore…
Know Thyself: Self-Discipline
This is the second follow-up to my previous entry on self-knowledge and motivation.
In the last article I talked about habit, and how I was able to establish some useful habits that let me overcome my urge to sleep all the time. Near the end, I noted that I wasn’t able to establish a habit of working on Project X, which is the one that I wanted most.
The site where I’d found the article on how to get up early looked interesting. Since it’s devoted to personal development, I thought it might have some other insights that I could use, so I started exploring it. Bingo — there are a lot of interesting things there, but the ones that sounded most immediately useful were an entire series of articles on self-discipline. I started reading eagerly.
There are five pillars of self-discipline, according to this fellow. He’s devoted an article to each one:
-
Acceptance, or the accurate perception of reality and the conscious acknowledgement of it. No problem there, I’ve been working on that since my early twenties, and I think I’m pretty good at it already. Next!
-
Willpower. When I read that title, I thought I’d found the winner. Willpower, the ability to force myself to do things. The crux of self-discipline, or so I thought. I judged my willpower to be near zero, since I could rarely force myself to do painful, unpleasant, or distasteful things for more than a few weeks at most, regardless of how much I knew I needed to do them.
Except that, according to him, no one has that kind of willpower. It’s just not the way willpower works. You can only force yourself to do something for a short period of time. And looking back over my life, I can see that it’s true: whenever I watched anyone try to do something by willpower alone, any success they had was always short-lived. Thanks to my stubborn nature, my willpower was actually better than average already. It was quite an eye-opener. Okay, a lack of willpower isn’t my problem… what’s next?
-
Hard Work. Not as in working hard (that’s covered in the next point), but as in doing work that’s difficult, because there’s “a lot less competition and a lot more opportunity” there. I already knew that — Project Badger was the most commercially successful thing I’ve done to date, precisely because it was so difficult and time-consuming, and most people couldn’t devote the time and effort into teaching themselves what they needed to in order to write something like it. And Project X is even more difficult. Okay, next?
- Industry. The ability to put in the time that it takes to get something done; the opposite of laziness. This is the “working hard” part of the equation. Again, Project Badger shows that I’m no stranger to this — for months on end, I worked twelve- to sixteen-hour days on it, seven days a week. And I’ve been working on Project X for years already.
All through this, I’ve been getting more puzzled. Now I’m 80% of the way through the list and I still haven’t found anything that I’m missing. Nothing I’ve read so far would help me develop my self-discipline. Maybe I misjudged this guy; maybe his article on getting up early was a fluke and he really didn’t know any more than I did? But I continued on, to…
-
Persistence. I didn’t realize what he meant by that word; to me, it seemed synonymous with industry. But as he explained it at the beginning of the article:
Persistence is the ability to maintain action regardless of your feelings. You press on even when you feel like quitting.
Well, that’s pretty close to what I’d been lacking. When the going got tough, I had to have something to drive me on. Most of my programming work had been driven by a combination of curiosity, boredom, and the need for control over some part of my life. The most difficult parts of Project Badger were driven by strong emotion. But despite the progress I’d made over the last six years, Project X hadn’t gotten appreciably easier yet, and even my legendary stubbornness wasn’t sufficient to drive me forward for that long.
So how did he suggest improving persistence?
Persistence of action comes from persistence of vision. When you’re super-clear about what you want in such a way that your vision doesn’t change much, you’ll be consistent in your actions. And that consistency of action will produce consistency of results.
I can see what he means. In a lot of the things where I lack persistence, it would help to work toward a vision of what I wanted. But that didn’t help with Project X, because I had a vision for it, and a compelling one, and it still wasn’t sufficient to keep me motivated.
Maybe a lack of self-discipline wasn’t the root cause of my problem? But if that’s not it, what else could it be?
I’ll continue documenting my search in the next article.
“Patterns: It May Not Be Caffeine Keeping You Awake”
Which, of course, begs the question: just what is keeping you awake, then?
My hypothesis is that the brain and body are lazy. You ingest caffeinated beverages for a while; they get used to responding in a certain way. You start ingesting otherwise-identical decaffeinated beverages instead, and they respond in the same way because they’re too lazy to check whether there’s actually caffeine there or not.
Yeah, it’s not scientific… but there is a large body of evidence to support it. 🙂
(Via LifeHacker.)
“Are Your ‘Secret Questions’ Too Easily Answered?”
I know that everyone heard about the Sarah Palin secret-question attack. I suspect most people thought “I really ought to check my own secret questions…” and then forgot about it. Well, this is your reminder to do something about them. 🙂
“Sophos punts anti-virus for Klingons”
I never thought I’d see the day… 🙂