I’ve long felt much shakier about the OS X internals than I have about Linux or Solaris. It’s not been that clear to me where to turn to get solid OS X technical overviews without getting too distracted by fluff (OS X user sites) or by more detail than I necessarily needed at once (Apple’s OS documentation.)
Enter Ars Technica’s John Siracusa. The breadth he uses to review OS X Leopard (10.5) is amazing — he covers everything from kernel details to user-interface design decisions. The review is here, but he’s got plenty of other excellent articles covering great OS X topics like the Finder, HFS+, and the evolution of OS X file metadata.
Siracusa is one of the best technical writers I’ve read in a long time.
Popularity: 52% [?]
I have been neglecting you. That’s because I started a new job last month, at a place called Smartleaf, doing Ruby on Rails development for 20 hours a week. It is fantastic. It is a lot of fun. It’s great people, good food, easy commute, and coding. I haven’t been an employee for years, so it’s quite a change for me, and in a good way. (It turns out that you can write better code without children yelling in your ear.)
But I’ve got these kids and this life and this job and I’m kinda busy.
Also, I’m supposed to be writing a book about computer science for practicing programmers. It’s meant to be an overview and sourcebook for people who didn’t get CS degrees but are working as programmers. Which, it turns out, is most of us. And when I signed on to write it, I hadn’t actually anticipated that a great job opportunity would drop into my lap, the way this one did, so I thought I’d have four or five hours a day to work on it. But suddenly I have about three minutes a day to work on it, and I’m having a really hard time. The subject matter is not easy. It is not just something I can write in my sleep. I don’t know the stuff I plan to write about. And even though I’ve lately become a big believer in the idea that you can accomplish an awful lot in just fifteen minutes, I fear that it is turning out not to be the case that you can write a book about computer science in just fifteen minutes a day.
Actually I emailed Steve Yegge about the book (partly because he was an inspiration for my wanting to write it, and partly because I wanted to use some quotes from his blog in it and wanted his approval) and he wrote back and said something like (I’m paraphrasing here): Hah, good luck. Many have tried, all have failed to write such a book. Which was a little bit depressing and discouraging, but honestly, what do you expect from Stevey?
Still, my editor is getting restive (hi Daniel!) and with good reason. Maybe we should put the book on hold, he asked, and see if it’s actually going to happen? Ick, I said. That is a terrible idea. I am going to write the damn book. Of course I can do it.
But I don’t know how. I don’t know how to do it, internets. I need your help, hive mind. I asked my friend John if he wanted to write the book with me, and he was like “hah, no.” All he does is send me links to stuff that I should read for the book, and recommend books that would be helpful, and talk about how much he wants to read the book. I asked Max to make me work on it for an hour every morning before the kids wake up, but the kids somehow magically sense when I am awake and wake up with me. And I have never been a morning person and I just can’t think at 6:30 a.m. And I have two hours on Saturday morning to myself when the kids go out to the French library with Max, so today I managed to clean the bedroom, set the robot to vacuum, and dump all the clean laundry on the bed in an enormous mountain so that I am forced to fold it before bedtime. I also went for a short walk and stopped in at the bookstore. And finally started typing this and as I am writing the family is returning, and a baby is running down the hall crying for me. So that was my morning.
And I realize how obnoxious it is that, out of amazing good fortune, I have a book contract, an actual book contract, with people who are my programming heroes, and here I am complaining about it, and basically just screwing it up.
So this is what happens: i get some bursts of energy to work on the book — like I spent two weeks reading and learning a bunch of stuff about C, and figuring out all the different ways to get segfaults, and I wrote a few pages of notes for a chapter on C, and I found awesome documents like the ANSI C Rationale on the internet, and I also read a bunch of stuff about machine architecture and cache memory and pipelining and bitwise operations and analog computing and I took a bunch of notes, and I thought a lot, and I wrote some stuff, and I made what progress I made by basically doing nothing but that, work, and cooking dinner. I mean, I basically ignored my children. I’d be like “uh huh, that’s great, but I’m really trying to understand the semantics of arrays in C right now, sweetie pie.” Oh, and I didn’t get quite enough sleep. After a couple of weeks of that I needed to do things like make plans for our trip to Europe in May (for my oldest friend’s wedding, not just because we’re decadent francophilic wine-and-cheese freaks, although we are that too, but man, that Euro is PAINFUL now) and get the taxes ready to send off to the accountant, and fight with the insurance company about various claims they refuse to pay for various ridiculous reasons. And read to my kids, and spend ten minutes alone with my husband, and parent help at Ari’s preschool, and everything else. And honestly, our lives aren’t even that busy. Our kids are not in a ton of activities. We don’t schlep around to baby music and movement classes. Ari is in no organized sports. He goes to preschool three mornings a week. Max and I each work 20 hours a week, and we have about 18 hours of babysitting.
But somehow I just can’t manage it.
What this tells me, first of all, is that nobody out there is managing it. We have far, far more time than most other parents with two children under five, and it’s still not ‘enough’. There’s an endless pile of stuff that I think should be getting done that isn’t getting done. This tells me that my ideas about what has to actually get done are just wrong, because I’m not getting a lot of these things done but things go on just the same. So I should probably just drop that stuff off my list. Like “inventory our crap for insurance purposes.” And “clean out the basement storage room”. And “start tomato seeds.”
But honestly, I’ve already dropped all that off my list. I’ve even dropped baking bread off my list, for the time being, and I’m someone who has an actual grain mill sitting on her counter. I grind my own damn wheat to make my own damn bread, and I haven’t done it in a couple of months.
I don’t watch TV or movies. The entire season 3 of Lost is sitting on my dresser waiting to be watched, but it’s an enormous commitment and I just don’t see how I can make the time. I’ve cut my newsfeeds down. I do no recreational reading except that I sometimes give an hour to the New Yorker.
Look, internets, I really want to write this book. It’s a lot of fun, except when it’s so painful I want to die or puke or something. I’m learning a lot. I think I could help other programmers figure out how to learn the stuff about computer science that they want to learn, and help them figure out why they should care. But it turns out, unsurprisingly, to be really, really, really hard to write a book. At least this kind of book. Well, I’m sure any book, really.
But am I just a big lazy whiner? I honestly don’t know. I thought maybe the book would be a year-long project, and it looks to be more like a five-year-project, especially at the pace I’m going. Now it’s true that Don Knuth is still working on his opus, but I’m not Don Knuth. Does the world need what I have to offer, or am I torturing myself and my family for an unnecessary project?
I keep thinking, okay, well, I didn’t make much progress that way, I’ll try some other way. And so I try all the hacks I know of to motivate, and make time, and make progress. And I keep trying in different ways. And when I drop it for a few days and fall off the wagon and stop meeting my goals, I just try again. So I’m sorta impressed with myself about this, that I keep trying, even in the face of basically constant failure and what feels like a pathetic lack of progress. But boy does it take an emotional toll. Writing this book (or mostly not managing to write it, as the case may be) is incredibly emotionally and intellectually taxing. Not to mention time-consuming.
I know we don’t have a ton of blog readers out there, really. But if anyone out there wants to offer some encouragement, or has any suggestions, I’d love to hear from you.
Popularity: 72% [?]
I can’t tell you how often I see people say things like, “I’m not really qualified to do that,” or similar excuses. Oh hell, neither am I, but I wouldn’t let a little thing like that stop me! You learn as you go, you drag in the help you need, or whatever. Passion will conquer so care enough to have some. Be the driving force and the rest will take care of itself.
He fingers both fearlessness and passion as important to getting things done.
Me, I don’t much care for passion. I distrust passion. Except, as I pointed out in August, as regards cheese:
I still think passion is overrated, though. Except where cheese is concerned. I am passionate about cheese. For example, this Vermont Brie is really fantastic. If only someone would make a truly artisan domestic parm…! But I digress…
I like interest, friendship, love, playfulness, curiosity, satisfaction, absorption, and joy. Maybe that’s because passion implies a kind of singlemindedness that I’ve finally accepted that I just don’t have, and don’t want. Maybe it’s because I find that I cannot be passionate and fearless at the same time: passion makes me cautious. My best work, my best ideas, and my best productivity come when I am playing with something that is not excruciatingly important to me. It’s a spirit of fearless play, not passion, that drives what I do.
Not, note, that I am claiming to actually accomplish an awful lot. I’m just pointing out that, to the extent that I accomplish anything, it’s because I don’t take it too seriously. The second I start taking something seriously, I completely freeze up.
For example, this time last year, I’d just had a baby. I hadn’t worked for pay in about three years, and I had no plans for that to change anytime soon. Then Max had a contract end and decided he wanted to learn Ruby on Rails (this was back when he thought he really wanted to be an app developer, before he realized that his sweet spot is all the technical stuff that has to do with app development that isn’t actually about writing application code.) Anyway, so he was having a hard time motivating himself to do the AWDR tutorial. Fine, I said, I’ll do it too, maybe we can motivate each other.
Then I convinced him that we should try to start consulting together, and we started the blog. Hey, I thought, no one is reading this thing, I can write whatever I want. For example, here’s a quote from my very first blog post, in March:
Someday soon we’ll be able to say “yep, we know Ruby on Rails” and we’ll have our fantastic contributions to the open source world to prove it. “Right,” you’ll say, after reading this blog. “We’re looking for someone with five years experience with Ruby on Rails. You have three months.” And we’ll say “That’s the way it goes, suckas. You want to hire people who don’t actually exist. We, on the other hand, exist.” About Ruby. We’d originally decided that Max would pick up Ruby on Rails, and I would freshen up my Java skills with STRUTS, which was just coming out last time I did serious Java coding and which I am, by all rights, long past due for learning. This felt very serious and sensible. Also not fun.
And then, later that day, the key to it all:
How are we able to be so marvelously decisive? We just pretend that everything we’re doing is fake, and therefore of no consequence.
If we’d been really passionate about the whole thing, and utterly convinced that this was our calling in life, that our business absolutely had to succeed, that everything had to be done right, we would never have gotten anywhere. But we started out not caring. We did not know ruby on rails. We did not know any ruby on rails developers. We had no idea where we would find clients. I hadn’t done any programming whatsoever for nigh on three years, having devoted my time instead to recovering from the nervous breakdown I had when I was pregnant with Ari, learning to garden, grinding my own wheat for baking bread, writing a political blog, rediscovering my love of painting, visiting and eventually applying for and receiving visas for permanent New Zealand residency and, finally, being bedridden and anemic and puking during most of my second pregnancy. So hey, why not try something new? Who knows if we’ll like it? Who knows if we’ll be any good at it? Who knows if it’ll work out? Who cares?
Here’s me a month after we started the blog, in April:
I don’t know where this all is going, exactly. I’m not ready to work full-time right now. I’d rather Max not work full-time either. I want us to find a way to work together, and not all the time. I want everything — the perfect setup! I am not sure how we’ll get to our dream work from where we are right now. Will we find a job to share, or will we be laughed out of any company we tried to convince to hire us for one? Will we do some consulting, or will it turn out that we can’t stand all the self-promotion required to consult? Will blog.thirdbit.net end up going to that great bloggie graveyard in the sky? Will I work for pay again, or spend my days sitting in the park snickering at the bugaboo strollers? Is the final cylon really who we think it is, or was this year’s season finale a red herring?
In May, we got our first clients. In July, I saw a post on the Boston Ruby Group that someone needed a TA for a Ruby on Rails class at Harvard Extension. Hey, I thought, I’ve been a TA at extension before, maybe I could do that. I went to the interview and was like “yeah, I’ve been using RoR since, uh, March.” And John, bless his heart, was like “oh that’s cool, whatever.” He wanted a TA who already knew how very much work it was to grade all those programming projects, and how very little money Harvard thought all that work was worth.
In August I wrote a blog entry about method_missing which somehow got Reddited and then mentioned on Ruby Inside, which resulted in a huge spike in blog traffic.
And I ended up TA’ing this class. And it’s been absolutely a blast, and John hired Max to do some systems consulting work (migrating his company over to a new bug database).
And after John introduced me to Steve Yegge’s blog I started feeling I was just a completely crap developer who knew nothing about anything, and that gave me an idea for a book one night when I was up with Aya who was teething, and wrote up a proposal the next morning, and sent out the proposal, and got a book contract. So now I am writing a book, about which more soon.
And since I was TA’ing the RoR class I made sure to show up to the Boston Ruby Group meetings and eventually everyone got used to me being there and started to know who I was, and I started corresponding a bit with Greg Brown over email so when he came up to speak at the December Ruby Group meetingI was like, what the hell, and invited him to dinner, which was a lot of fun.
And Max and I each got more clients doing exactly the kind of thing we each like most to do right now. ( Obligatory self-promotion: Look here for more info if you might want to hire one or both of us!)
Anyway, it has worked out for us. Not exactly the way we imagined it might, but nothing ever does. And since we weren’t all that invested in what we’d imagined in the first place, it didn’t bother us that much to change it.
I don’t know what will happen next. But I do know that everything great that we’re getting to do, all the good stuff happens when we treat our lives like a game, and play, fearlessly.
Popularity: 46% [?]
Our next-youngest client, Ari (4), executed this project without our assistance. It worked out magnificently. Take two glossy magazine pages, a bunch of tape, and wrap pages around feet. Apply tape. Voilà: Magazine slippers / goblin shoes / “skates”.
This is one reason not to ration tape.
Popularity: 11% [?]
So we got some really nice links this week, and with the links, a bunch of click-throughs. And some wonderful comments, all of which we deeply appreciate. And now of course, I’m choking . I have about 20 posts in various states of readiness, from “just an idea” to “nearly done but I suddenly think it sucks and wasn’t a good idea for a post in the first place”, but nothing ready to go.
Oh wait, here’s something to keep you from dumping us off your feedreader (or dumping us faster, who knows?!). A snippet of a column by Cary Tennis, Salon’s advice columnist , responding to someone who can’t decide whether to give up a career opportunity for his girlfriend, whom he loves passionately:
You say one cannot calculate the value of a job or a relationship, but I do not think that is true. I think one must calculate it. Courts are called upon to do so. Moreover, intuitively we do it anyway. For instance, suppose that you and she settle down and have a good relationship and good jobs. Say that one day a supernatural being comes to the door and says that you must give up either the job or the relationship. Which would you choose? Which would you consider expendable? Which would you consider replaceable?
While in science many problems are difficult because they are complex, in life many problems are difficult because they are simple, but we are human and we want everything. While in the conduct of science we would never suspend physical laws to get the result we seek, in life we try that all the time: Can one person be in two places at the same time? Well, people say no, but maybe in this case … I don’t know … if I accumulate enough free miles maybe I could fly from Toronto to Oakland enough times that I could appear to be in two places at once …
I don’t think so.
If you’re reading this blog and wondering why Max and I have this crazy idea that we’ll somehow each work part-time, or consult together, or work out of the house, or do something weird and web-worker-daily-ish, and we don’t want to travel much for work and we don’t want long commutes and we don’t want to be these people, toiling away in the “Silicon Valley salt mines” — that’s why: We’ve got one life to live here, people, and we can’t be in two places at once.
Popularity: 14% [?]
So I woke up this morning and saw that 7 people had saved my method_missing post to delicious. How can this be? I wondered. Who even reads this blog? We checked our stats and saw a bunch of pageviews, because someone linked to us from Reddit (No, we didn’t submit ourselves. We have two small children, here, people, we don’t have time to go around flogging our blog under pseudonyms. We barely have time to flog … never mind). Anyway, then someone else commented, quite correctly :
This isn’t “10 things you should know”. It’s ten paragraphs, each assigned a number for no reason other than the fact that “X things…” lists are better reddit/digg-bait.
It’s funny, because I had a whole paragraph in the original draft about precisely that. I went back and forth about calling the post 10 things, and I went back and forth about numbering the things, and I dithered about the numbering, and the post took me three hours to write and I had other things to do, so I finally decided that the paragraph about whether to call the post “10 things…” was gratuitous meta-blogging, took it out, and left the numbers in.
I’ve never written a 10-things post before. I’m not a ‘pro-blogger’. I do sometimes read posts like ’10 tips to publicize your blog’ though, because I need money, and therefore I need work, and so one way I can try to drum up Ruby on Rails work is to try to contribute to the community in some useful way, and if you’re going to contribute it helps if people are reading you, at least a teeny bit. Etc. So what the hell, I thought, I’ve been meaning to write about method_missing for a while, I’ll see if I can do it in a 10 things format.
So I wrote out all my thoughts about method_missing, and it looked nothing like 10 things. I reorganized it to make the major points more obvious. I took out some stuff that didn’t belong. I revised. Still more of a meander than a 10 things. More revising. Better structure, but not 10 unrelated things; more like 10 points, each leading to one another. (Hmm, an essay. But the internets don’t like essays! ) Okay, I did my best, I thought, time for bed.
And then I wake up and there we are on reddit, with the harsh light of a tiny amount of publicity showing me up as an obnoxious blogging publicity-hound.
Oh well. 7 people thought the post was interesting and useful enough to save to delicious, so that’s something.
And no, I don’t really have a list of 10 things I didn’t know about Reddit. Just one: I had no idea how successful a tactic it was to call something “10 things…”. Beyond my wildest dreams. Though I don’t think I’ll be doing it again anytime soon. Go ahead, reddit readers, flame away!!
Popularity: 12% [?]
To anybody who attended RailsConf 2007: Did the deli counter sell a sandwich called a Reuben on Rails?
If not, they definitely should next year.
Popularity: 6% [?]
Amy picked up Michael Nygard’s Release It! for me, which is turning out to be a pretty good read. However, it’s also bringing back so many sour memories of operations blowouts from previous work with telecom and financial clients. In one example, a CxO is seen storming around the office asking whose head he can have on a platter for costing him his Caribbean vacation home. (His pay was based on performance, and his airline’s 3-hour overnight software outage, with cascading effects through the industry, could have diminished his year-end bonus.)
I dig how Nygard diagnosed this company’s outage — due to unhandled JDBC IOException errors — by decompiling the binaries, since everyone was terrified of being blamed and nobody dared even ask the development group to pony up the source code.
“The first clue [that this project was not going to be simple] was that nobody else could tell us what all the feeds were.” [p36]
Popularity: 8% [?]
One reason Max is not so sure that we should ever go into business ourselves is that it obviously requires sales (“You had your own corporation back in the day, sweetie,” I say to him. “Yeah, but I didn’t have to sell myself much.” says Max. Or, as another friend of ours says, you can just barnacle yourself to some other business that takes care of the sales and farms work out to you.)
People who are good at sales seem to be from some alternate universe, and the idea of having to spend a lot of time selling ourselves is just ick. We resent the idea that not only are we forced to work for a living (and do all the stuff that actually accomplishing stuff at work entails, not to mention sitting through ugly slideshows with fancy and useless ‘effects’, eating Trader Joe’s cookies that someone left by the water cooler just because they’re there, and waiting for three days for the helpdesk to finish setting up a login that you know takes exactly two minutes of effort to accomplish) — not only are we forced to work for a living, but in our free time we must work on working. See my thoughts on the meaning of “career” (is it cheating if I add a link to something later, when I’ve actually written it?) We have a bunch of other stuff we’d like to do besides sell ourselves. For example, here I am, writing this blog entry for our “professional presence” blog, which, as noted previously, everyone says we have to have these days. But we have an unprofessional blog too (no, I’m not telling you where it is, go find it yourself if you’re so damn nosy. Or just click here to read all the deep dark secrets about us that you’d discover on it. ) And maybe I’d rather be spending this time working on the other blog, or studying my French verbs, or weeding my garden, or playing with my kids. But noooo, we have to have a brand.
How will we come up with a brand when we resent and distrust the whole notion of brands?
Why should I even be writing about this? Because I’m sure we’re not the only shy marketing-averse techie people who are hung up on the whole “creating a brand” thing everyone’s always telling us to do, and are thus holding ourselves back from being able to make money in the simplest, most pleasant, most efficient way possible.
First we have to get past all these marketing types telling us we need to have a brand. Brands are fine for those people, obviously, from some other universe, but why should we have to have one? We don’t want to do marketing. We just want to interview our users to see what their ridiculous desires (uh, I mean requirements) are, draw some screen mockups and non-UML-compliant app diagrams, write some code, configure some stuff, make some useful docs, and be done. (See how sneaky I am: Reqs. Code. Docs. Done.)
Once again, Amy Hoy comes to the rescue. (She gave me my first Ruby pep-talk, on the first day I started learning Ruby, oh, a month ago. Not that she knows me or anything.) Amy Hoy tells me all about pimpin’:
Oh blech, I can hear you thinking, an article on marketing. But wait a moment. Among geeky types, the word “marketing” has an evil reputation, I know. But pimpin’ ain’t marketing.
Pimpin’ goes oh-so-much further.
The act of marketing products is often taken to mean creating desire where there isn’t any, creating dissatisfaction in the viewer/reader/whatever, manufacturing needs and generally trying to create a false image of a product that will convince a viewer he just haaaas to have that thing. Archetypes: misleading beauty ads, “lifestyle” soda ads, and Ronco.
Now, I disagree with the above definition, but that’s the reputation the word has and I’m going to just let that one lie.
The act of pimpin’ products, on the other hand, never involves any kind of questionable tactics. Pimpin’ means putting your product’s best foot forward. Accen-tuate the pos-it-ive. It means not shirking from self-promotion, and shouting your product’s position, features and benefits loud and clear. It means making the acquisition (download, purchase, whatever) process as simple as possible. It also means having a very non-murky message. Archetype: any time when you can get in, download the product/information you want, and get out in under 60 seconds.
And, unlike marketing, pimpin’ has no “g” in it. You have to know that’s a point in its favor.
Of course, we don’t have an actual product to sell. Just us. But we need to sell Us, or at least one or the other of Us. So the advice applies. We need to have a brand, and we need to pimp it. There’s no use complaining about how we don’t wanna, cuz we have to. Even if we never go into business for ourselves full-time, people don’t stay in jobs anymore like they used to (so we hear). We’re gonna have to keep finding other jobs, and keep coming up with new ways to get people to pay us.
So there it is. We must have a brand. Ideally, of course, we end up with too much business to keep up with, and we don’t spend much of our time selling ourselves. People just email us to ask if they can hire us. But if we want that to happen, they have to find us, they have to read us, they have to know us, and they have to know what’s great about us. And they won’t find us, read us, know us, and know what’s great about us unless we tell them.
As long as we’ve got bills to pay, and as long as we don’t want simply to be cogs in a corporate machine, over-working ourselves in our cubicles, we’ve got a brand to build. Or rather, some pimpin’ to do. Sorry Max, but that’s just the way it is, and it doesn’t have to be as painful as all that. We know we’re awesome, and we just have to be able to tell a good story to everyone else about why that is.
Popularity: 6% [?]
Max and I have another blog. It’s lightly anonymous, and we’re trying to maintain some semblance of separation between that online life and this one. We refuse to have only a professional online existence, because our lives are not just about work. Not that there’s any way we’ll keep all personal references out of this one. But, you know, in general, we’re gonna try not to talk about politics, sex, mental illness, cute things our kids do, etc., here on three bits.
But I can’t stand the idea of feeling like we’re ‘hiding’ something, or always worrying about covering our tracks between the blogs, or that someone will discover our other blog and feel shocked and betrayed by the information that is on it. So I’d like to take this opportunity to give you the highlights of our other blog:
We think George Bush should be impeached. We’re members of Amnesty International and the ACLU. Our kids are brilliant and beautiful, and say really funny things all the time. They are most certainly geniuses. When I was pregnant with my older kid, Ari, I got suddenly suicidally depressed and had to go on sick leave. Those darn hormones, what kidders they are! With Aya I puked the whole time and was so anemic I had to get a blood transfusion. Again, those crazy female hormones. Love ‘em. I don’t plan to get pregnant again, ever. We’re concerned about global warming and peak oil, and we worship Al Gore, and while we wish he would run for President, we’re not actually sure he should, for his own sake, not because he’d be a bad president, because he wouldn’t be, he’d be an amazing one. We’re into local, organic, small-farm foods. We insist on continuing to call Whole Foods Bread and Circus, and think it was the stupidest marketing decision ever for them to change the name. I mean, where would you rather shop? Obviously at a circus. Um, what else? Oh, we swear. We hate Hummers. We are sometimes intemperate. In our other online life, I still write more than Max. Not such a blabbermouth as his wife, he’s not. Or, as Willow once said “I too know the love of a taciturn man.” That’s a Buffy reference.
Okay then, that’s pretty much it. Hope you’re satisfied now.
Popularity: 5% [?]