Quick Python/Developer tips for OSX Lion

July 30th, 2011 § 18 comments § permalink

Lion king 5067

Yes; of course I upgraded to OSX Lion on day one. To quote myself from twitter:

I am happy in the warm cozi­ness and stark white­ness of Steve Jobs’ monoculture.

Regard­less of that though, I had very few hic­cups with Lion itself — but a few things you need to deal with going in:

  • Be on a high band­width con­nec­tion. The down­loads you have to make are huge.
  • XCode 4.x is now free in the App Store — you need this — the first thing you need to install after Lion is the lat­est ver­sion of XCode from the App Store, if you do this, all your vir­tualenvs, your home­brew envi­ron­ment (at least mine) just Keep Work­ing. Save your­self some pain.
    • Side note: @kennethreitz, gen­tle­man scholar, has actu­ally done a cus­tom osx-gcc-installer — this con­tains a sys­tem install of GCC and all the good­ness you need (such as install_name_tool) for Python hack­ing. So you might be able to skip the mas­sive XCode install.
    • When installing XCode, for some unknown unholy rea­son, if you have not quit itunes, and itunes helper (see activ­ity mon­i­tor) prior to start­ing the XCode installer, the install will hang. Do your­self a favor and kill it with fire.
    • Remem­ber; the binary direc­tory for the dev tools is in /Developer/usr/bin/ — this includes gcc-4.2
    • Do your­self a favor, drop “export ARCHFLAGS=”-arch x86_64”” into your .bash_profile.
  • If you’re run­ning home­brew; after the upgrade, I rec­om­mend a brew update && brew upgrade
  • If you use mer­cu­r­ial — you need to install the updated ver­sion found here.
  • Just for good mea­sure, do a global (sudo) rein­stall of vir­tualenv, vir­tualen­vwrap­per and pip. Make sure they’re pointed at the right default Python (in my case the sys­tem one).
  • If you are using VMWare Fusion: You really need to be run­ning the lat­est ver­sion of 3.x.
  • If you are using Boot­camp, and plan on turn­ing on full disk encryp­tion, see this note from Hacker News (this is why I con­fine win­dows to VMware images)

Other than the above; my dev envi­ron­ment pretty much just kept rock­ing — Lion’s default Python install is a healthy Python 2.7.1 — dou­ble nice++ — MacVim, edi­tor of choice just kept plug­ging away, although I have not tried the “offi­cial unre­leased” ver­sion they have for Lion. I have a slight aver­sion to run­ning beta builds of my editor.

Some of you are going to run into some annoy­ances; I can’t help you with all of them, but I can help you with the two inter­face changes I could not deal with (I actu­ally like all the other ones).

  • First; go into sys­tem pref­er­ences > mis­sion con­trol and uncheck “Auto­mat­i­cally rearrange spaces based on most recent use” — trust me, you’ll thank me.
  • Sec­ond, there’s this … annoy­ing ani­ma­tion when you make new appli­ca­tion win­dows (See the Ars Lion Review | kin­dle ver­sion). The ani­ma­tion offends me on a cel­lu­lar level. You dis­able it by run­ning this on the com­mand line:
    defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool NO ; killall Dock
  • Show hid­den files in finder:
    defaults write com.apple.finder AppleShowAllFiles -bool YES
  • Show full paths in finder:
    defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES
  • Note: Don’t like muck­ing around with the com­mand line, or want to have some­thing with a birds eye view that can con­trol just about any­thing, check out “Secrets” from black­tree. I’m fine with magic PLIST hacks, but this does put a nice UI on all the hacks.
  • Also, if you’re a power user, or want tiling behav­ior for win­dows — see SizeUp or Divvy (I use Sizeup) both of which are excel­lent addi­tions to win­dow man­age­ment, even in Lion. I tend to be anal about win­dow coor­di­na­tion on the screen even with mis­sion control/expose.

Other than that; I’m a happy camper. The new scroll behav­ior on the track­pads is amaz­ing, if not jar­ring when using a mouse. Every­thing just pretty much kept work­ing for me. But then again, I’m pretty easy to please.

See also — “Four Lion Ter­mi­nal Hacks” from Mac­world and “Top 10 Secret Fea­tures in OSX Lion” from Life­hacker — if you really, really hate the UI changes, see “How to de-IOSify” from Life­hacker. More cool tips and tricks: “Mis­cel­la­neous Lion Tips and Tricks” and also “Mis­cel­la­neous Lion Tips and Tricks part two”.

p.s. I orig­i­nally for­got to men­tion this — but the full disk encryp­tion in Lion is imple­mented damn well — it’s easy for users to “get” — seam­less, and trans­par­ent. In my hon­est opin­ion, this is worth the price of upgrad­ing alone if you have a lap­top. It’s so well done, and it sim­ply shows how crappy fil­e­vault was — it also goes to show that if you make crypto easy and trans­par­ent for users, they might actu­ally use it. See the Ars Review for a deeper dive. See also “PGP WDE vs. Lion Disk Encryp­tion

p.p.s. See this ArsTech­nica arti­cle about how to cre­ate a bootable copy of the Lion install disk you can use to do offline installs for other machines. I’d rec­om­mend doing the same for XCode if you have more than one mac to upgrade (or you lack FiOS).

 

Thank you — The impossibility of “It’s going to be ok”.

July 28th, 2011 § 15 comments § permalink

Let me start off by say­ing that while this post is largely not Python related although it is slightly related in the fact that I talk about the Python com­mu­nity later on. Largely this post is about my fam­ily and some of the trou­bles that we’ve been going through, and how it has affected me.

If you’re look­ing for a tech­ni­cal Python arti­cle then you should prob­a­bly move on. I real­ize that it has been awhile since I’ve been able to do a deep post on a pure Python topic; for that I apol­o­gize. This post talks a lot about com­mu­nity towards the end; so it may remain of interest.

I’ve been writ­ing, and re-writing this post in my head over and over again — some of it due to the fact that the prob­lems we’ve been deal­ing with are just not some­thing I’ve ever dealt with before, but also I didn’t quite know how to put things into words. Throw in a healthy dose of “1 month old induced sleep depri­va­tion” and you have a com­bi­na­tion for scram­bled brains and scat­tered thoughts.

Mostly, it is the emo­tional aspect — more impor­tantly I’ve been sit­ting here rewrit­ing this post over and over and over again because it is never easy for par­ents and it is espe­cially not easy for me, just because of who I am, to sit down and put to words the expe­ri­ences of the past month. My wife, Dusty has has orga­nized and posted her views on what’s hap­pened over on her blog — I encour­age you to go read those:

She’s done an excel­lent job putting her thoughts down elo­quently — far bet­ter than I’ve man­aged. I don’t think I’ve stopped “work­ing” in any sense of the word — you get busy just liv­ing, you get busier with one child — with a sec­ond child (espe­cially an infant) — no one gets free time. Throw in a busy job at a startup, chair­ing PyCon, and a hand­ful of other things and I’m pretty happy to be sit­ting here cor­rect­ing a hor­ri­bly dic­tated blog post.

So, back­ing up — on June 2nd, we wel­comed Addi­son Joy to the world — she’s the sec­ond of our beau­ti­ful chil­dren. As many of you might know — or — you’ve read my wife’s posts — the pre­gancy was pretty hard on every­one involved, but espe­cially my wife. It was touch and go and that is stress­ful enough.

But, so, AJ was born — and at first, every­thing seemed to be fine. 10 fin­gers, 10 toes and poop­ing — that’s sort of what you hope for in a new­born. We took her home, she saw her pedi­a­tri­cian, and that was that.

Well, no. Around the time Addi­son was three weeks old (shortly before my first child’s birth­day) my wife Dusty started notic­ing that Addi­son was behav­ing erratically/oddly — and if you have any expe­ri­ence with infants, you’d know how hard it is to actu­ally deter­mine “odd” behav­ior. Almost every­thing they do is odd, down to tim­ing exactly the worst moment when to spit up on you (point of fact — it is after you’ve show­ered, and are walk­ing out the door).

In this case, the odd behav­ior my wife noticed was actu­ally a pat­tern — and that’s when you need to worry. You want con­sis­tency in cer­tain areas, you want to see con­tin­ual improve­ment, you want them to con­sis­tently eat, poop and sleep. How­ever, a pat­tern of odd move­ments tipped my wife (who is a fan­tas­tic ana­lyst) off that some­thing was not quite right.

What my wife found was that Addi­son for peri­ods of time any­where from 1–2 min­utes her eyes would slit and roll back and she would freeze up. The best way to describe it is it was almost as if she would just “check out” — as if some­one hit a power switch.

Her eyes rolled back and her body would go stiff — her breath­ing would go robotic. My wife didn’t want to scare any­one come off as the the crazy over­pro­tec­tive par­ent but it was hap­pen­ing more more fre­quently and it was hap­pen­ing in clus­ters. Basi­cally, Addi­son would have these spells in groups of 3 to 4 and she was hav­ing them more fre­quently than you’d care to imag­ine through the day and night.

As this pat­tern began to emerge and my lov­ing wife, the ana­lyst, started to see the trends — she started to dig around search and ended up find­ing a video on YouTube of exactly what we were see­ing. Unfor­tu­nately, the video matched what was hap­pen­ing — what we were both now see­ing that the pat­tern had become clear — and the video was of a small infant hav­ing seizures. Pat­terns, espe­cially hid­den ones (like the arrow in the Fedex logo) are very hard to un-see once you’ve seen them, and this was no dif­fer­ent. We knew some­thing was up.

She passed that video, and all of our sus­pi­cions to our pri­mary pedi­a­tri­cian — some­one from the old-school of pedi­atrics. Within an hour, he had already set us up with a rush appoint­ment at one of the best pedi­atric hos­pi­tals in the United States — Tufts Float­ing Hos­pi­tal for Chil­dren. Luck­ily, it is about an hour away from where we live.

Within a few days, we were sit­ting and talk­ing to some of the best child/infant neu­rol­o­gists in the area. No one was fool­ing around — the turn­around time to us iden­ti­fy­ing some­thing and us sit­ting in a room with at least two top notch neu­rol­o­gists was amazing.

The staff has been amaz­ing: from our first visit they have been kind, cour­te­ous, they have helped us man­age our four year old Abby who had to come along for the ride. They answered all of our ques­tions, encour­aged us to get sec­ond opin­ions, etc. The first meet­ing we had with them, they looked us flat in the eyes and said “you’re not leav­ing here with­out a plan”. God help me, I could have hugged them at that point.

They watched some of the videos of the episodes my wife had cap­tured on her iPhone — we’d been instructed to record as much as pos­si­ble. We dis­cussed the episodes and their “pre­sen­ta­tion” (what they look like, how Addi­son moves dur­ing them, which way do the eyes roll back, etc) and so on.

Then, in a flash, it was off to the EEG — this is where you, as a par­ent, feel largely like a use­less appendage. They take your 4 week old daugh­ter and stick lit­tle elec­trodes to her head and watch the elec­tri­cal impulses in her brain fire. Shortly after the EEG my wife indi­cated to me that she knew they had seen some­thing but they were being rel­a­tively tightlipped — they imme­di­ately sent us off to another depart­ment to get a sono­gram of Addi­son head. A sono­gram is essen­tially an ultra­sound — they were look­ing for phys­i­cal abnor­mal­i­ties, cal­cium deposits, water on the brain and tumors. Luck­ily, the sono­gram came up clean.

Shortly after the sono­gram the team of doc­tors that we been work­ing with came in and told us flat-out that the EEG had been abnor­mal. What this means is that they noticed dis­tinct abnor­mal elec­tri­cal behav­ior in both sides of Addison’s frontal lobe. Based on this, they would imme­di­ately assume she was hav­ing seizure activ­ity and that epilepsy was a very real pos­si­bil­ity. There­fore in order to get the sit­u­a­tion under con­trol we would imme­di­ately put Addi­son on to a drug to help con­trol seizures — start­ing with a small dose, and work­ing our way up until the seizures stopped.

Now when deal­ing with epilepsy in infants there are only two real drugs that doc­tors are will­ing to rec­om­mend the first is phe­no­bar­bi­tal, which has some pretty awful side effects (and a tran­quil­iz­ing affect on the infant), such as caus­ing some seri­ous liver prob­lems, etc. The good news is that phe­no­bar­bi­tal has about 150 years of use behind it — doc­tors know it pretty well, and it has known to help with epilepsy quite well. The prob­lem is the side effects — well, Dusty and I agreed the side effects were too much.

The sec­ond drug is Kep­pra — this one is not as old as phe­no­bar­bi­tal — but is also known to work on infants with seizures. The side effects on this one are less, but not entirely non-existent — one of the nas­tier ones is crank­i­ness from the infant. Addi­son is a pretty chilled out baby and so giv­ing her some­thing that would make her angry all the time wasn’t some­thing we were look­ing for­ward to, but we went down that road.

So the plan was this: in about two weeks, bring Addi­son back for a 24 hour EEG so they could cap­ture more data and record her on video for that time, so they would have as much data as they could com­pile. The fol­low­ing week would be an MRI so they could look deeply into things to ver­ify every­thing was struc­turally sound

From the time we left the hos­pi­tal, through­out the week­end, etc — the staff and doc­tors were email­ing us, call­ing us and check­ing in on us. They were atten­tive, kind and mak­ing sure every­thing was going ok with Addi­son as we steadily increased her dosage of the drug — .2 mL, .4 mL — to even­tu­ally .6 mL.

As the hours passed — you could actu­ally see the episodes chang­ing — they were get­ting longer, but less “twitchy” — the clus­ters were shorter/different. It crazy — you could actu­ally see her body’s reac­tion in real-time. Unfor­tu­nately, we could also expe­ri­ence her atti­tude chang­ing in real-time as well.

So here we are, two par­ents — two kids. I’ve got a full time job (and full time vol­un­teer work on the side) and my wife had just been set­tling down to being the best damned stay at home mom you’ve ever seen. We’re run­ning on lit­tle to no sleep and bam. A bus slams into us. Epilepsy. Our beau­ti­ful new­born baby girl prob­a­bly has a form of epilepsy.

What did we do? Did we cause this? Your fears, doubts and every lit­tle thing comes rush­ing into this men­tal void left by the explo­sion of this new reality.

And so there we are — drug­ging a new­born in hopes to kind of get these things under con­trol and hop­ing for the best. As a dad, the typ­i­cal thing you want to do — your typ­i­cal guy response — is to fix the prob­lem. You have to have an answer — any answer.

You want to fix your help­less daugh­ter sit­ting there look­ing off into space.

That’s not how it works though. You have to sit there and watch, and wait. You have to keep your poker face on when the doc­tors tell you your kid could have an incur­able dis­ease — or some­thing she could grow out of in a few months — no one knows, and it is impos­si­ble to tell in chil­dren this young.

It is not the prob­lem that kills you inside — it is the uncer­tainty — it is the not know­ing and the feel­ing help­less to do any­thing. Through­out all of this, my wife — Dusty — has been my hero. She’s pushed through, asked all the right ques­tions, pushed the doc­tors — and me — to do bet­ter, answer more, to step up and beyond.

The fol­low­ing week, the MRI was shown to be clean — another exhale of breath — that means no surgery (but also, no “easy answer”) — go home, keep her on the Kep­pra, the 24 hour EEG is com­ing up. Watch and wait.

Then, the Wednes­day I finally decide to scrape my body out of bed at 5:30 in the morn­ing (this is really hard with new­born) and go to Yoga, things go side­ways. While I’m in yoga — my cell­phone is shut off (it doesn’t work well in the heat), and it is quiet. Lit­tle did I know, that while I was there, my wife was in the process of dial­ing 9–1-1 — Addi­son had fallen into a grand mal seizure, and she could not pull Addi­son from it/snap her out of it. The seizure went on for over 8 min­utes. Warn­ing signs.

By the time I was out of class I had a mail­box of mes­sages and a lot of guilt — an hour had passed since my two daugh­ters and wife had been taken via ambu­lance to a local hos­pi­tal in their paja­mas. The plan was to trans­fer Addi­son to Tufts in Boston ASAP. I had some catch­ing up to do, and some apolo­gies to make. I still don’t feel right think­ing about it — I let my fam­ily down, while I was off work­ing out.

In the ambu­lance, the para­medics were able to snap Addi­son out of it, which was good news. Fast for­ward through Addi­son being trans­ferred to tufts all by her­self (fam­ily can­not travel in the trans­ports if they have chil­dren — and I had yet to show up to the hos­pi­tal) and me dri­ving pretty ille­gally to come and get my wife and Abby and shoot down­town to see if we could beat Addi­son get­ting here.

Before this rush to the hos­pi­tal visit — the diag­no­sis had been “gen­eral non-specific seizures” — doctor-speak for “she’s too small for us to pin­point it, but some­thing ain’t right”. Then, here we are — rushed in, a video cam­era pointed at my 5 week old daughter’s head, elec­trodes cemeted onto her head, rolling off the bed in a bun­dle to the EEG machine, an IV plugged into her foot.

Before we could say boo; they immeditely dou­bled the dose of the Kep­pra she had been on (from .6 mL to 1.2 mL) in hopes to bring the episodes under con­trol. That started the clock — the first day there, my wife and I and Abby were there most of the day. I sent them home to get food, and a change of clothes for me — I’d be pulling the overnight shift — and so it went for the next 48 hours.

Sleep­ing two nights in a hos­pi­tal cot with your new­born hooked up to crazy things next to you is pretty much a weird experience.

And herein lies the rub; they checked the first 24 hours of the EEG pretty quickly, and it came back up clean. They had video of Addi­son hav­ing the episodes, but they were not appear­ing on the EEG. Every­one pretty much assumed that the Kep­pra was keep­ing things under con­trol — so for the sec­ond 24 hours — they took her off the Kep­pra, but kept record­ing. The prob­lem of course, is that Kep­pra takes days to flush from your system.

So, another set of clean EEGs — this has all of us flum­moxed — every­one there had video and had seen Addi­son slip­ping into these episodes. But with­out the EEG data to back it, there was noth­ing solid to poke at. It gets more frus­trat­ing when what­ever small, painful answer you had is clouded over because they can’t prove it (or even dis­prove it).

And so, they sent us home — off the Kep­pra, with Addi­son hooked up to all the elec­trodes cemented to her head, and a portable EEG machine record­ing the entire time, like a lit­tle black box. They removed that last Mon­day. Then last thurs­day, she was back in for another EEG that came up clean. The catch? They have video of her hav­ing the episodes right on cam­era while the EEG shows she’s not asleep/out to lunch, just “frozen”.

And now, here we are — diag­nosed with a “seizure dis­or­der” — we’re no closer to an answer than we were before. it is hard — with chil­dren this young, it is actu­ally really dif­fi­cult to get reli­able tests from them, and some of the other tests they can do — such as spinal taps — could cause more harm to her than good. We’re in “wait and test more mode”. Babies’ brains and ner­vous sys­tem mature/change on a weekly basis  - so what might be true this week, may not be true the next. It makes it very, very hard to diag­nose prob­lems unless they’re glar­ingly obvious.

Last week we involved early inter­ven­tion which is actu­ally a gov­ern­ment pro­gram that will come and help out your child and help you with cop­ing and iden­ti­fy­ing issues and mak­ing sure you know she’s hit­ting all of her devel­op­men­tal milestones.

They did their ini­tial eval­u­a­tion — which, again, given Addison’s early age means there’s a lot of fudge in the num­bers however, early inter­ven­tion found that Addi­son is 30% behind the aver­age on three of the key mile­stones (devel­op­ment stages). All of the mile­stones she is behind on hap­pen to be ones con­trolled largely by the frontal lobe — where we have seen abnor­mal activ­ity. Her phys­i­cal mile­stones are on tar­get — the oth­ers, well — 30% behind.

Now — that could be noth­ing. Babies develop at dif­fer­ent rates all the time, Addi­son could just be slower devel­op­ing in those three areas; how­ever this cou­pled with the episodes she’s been hav­ing could indi­cate a prob­lem in her frontal lobe which may not fully present itself until she’s older.

This also means a lot of work — we have to be a lot more focused on these milestones/stages than most par­ents. Talk, play music — things you already do as a par­ent with infants, but now we have to watch her reac­tions (with the help of doc­tors and nurses) like a hawk. We have to make sure she does not halt devel­op­ing, and does not in fact go back­wards in any way.

We are in for reg­u­lar vis­its from nurses, reg­u­lar vis­its (EEGs) with the Neu­rol­o­gists so that they can make sure she hasn’t dras­ti­cally changed. Right now, they can’t put her back on the anti-seizure med­ica­tion, with­out proof on the EEG, even with video and hands on proof of the episodes, hav­ing her on the med­ica­tion with­out the EEG data to solidly back an epilepsy diag­noses could harm her more than help her — even if we know it does help the episodes she is hav­ing now.

So here we sit — every­one know­ing — from her pedi­a­tri­cian, to the neu­rol­o­gists, to the nurses, that some­thing is wrong. We can’t ask Addi­son what’s wrong, what she’s feel­ing, or any­thing else. All we get to work on are facial expres­sions and cry­ing. There’s noth­ing you can do as a par­ent — we have to sit and watch her light switch shut off and her tiny hands shake, there’s no drugs, there’s noth­ing but test­ing, and wait­ing, and watching.

It brings us to an unpleas­ant place — a long road of doc­tor vis­its, not know­ing, wait­ing and hop­ing. Hour long trips into the city to the hos­pi­tal through Boston’s lovely traf­fic. No answers, just neg­a­tive ones — “it is not x, or y — right now”. There’s noth­ing proac­tive to be done — only reac­tionary. Watch and wait and react. If things get bet­ter — we rejoice, if things get worse, we react. Doc­tor visit after doc­tor visit, EEG after EEG.

So the rea­son I’m writ­ing this post kind of a part cathar­sis and part update to a lot of friends I, and my fam­ily have out there. We’re lucky — I have a great job I love, we have great med­ical insur­ance and the best hos­pi­tals in the coun­try nearby. We have a lot of things going for us.

Despite that, it is still try­ing. Men­tally, phys­i­cally — time and atten­tion — finan­cially. It is not easy — but many peo­ple have it worse.

Now, if you’ve been fol­low­ing me on twit­ter, or google+ — much of this comes as no sur­prise to you. Many of you — well, most of you — are mem­bers of the Python com­mu­nity, the Python Soft­ware Foun­da­tion, you help with PyCon — some­how, I, or my fam­ily know you.

And we’ve been touched by you.

Some­thing I didn’t count on, bar­ing my soul on twit­ter, or google+, or Face­book was the over­whelm­ing and hum­bling sup­port my fam­ily and I would receive from all of you. The well wishes, the emails — cards from all over the world wish­ing us well and offer­ing us your hopes and prayers.

Some of you may have met me — almost none of you have met my wife and fam­ily — and yet the out­pour­ing of sup­port from the Python com­mu­nity has hum­bled me and brought me to my knees in thanks. It brings tears to my eyes just think­ing about the gen­eros­ity that has been bestowed on us by peo­ple inside of this com­mu­nity. Some­thing as small as a card — a box of crayons and a col­or­ing book for my old­est daugh­ter — it has helped my fam­ily and I and touched us in a way I don’t think we’ve ever been touched.

It is amaz­ing to me that I can admit to hurt­ing or going through some­thing like this and peo­ple all over the world will imme­di­ately start send­ing the resources on where to look for infor­ma­tion or who to talk to or spe­cial­ists that they know, con­tact infor­ma­tion for fam­ily mem­bers that they know who have expe­ri­ence with epilepsy or seizures.

It has been amaz­ing to me the amount of sup­port that I’ve got­ten from a com­mu­nity that’s based on a pro­gram­ming lan­guage; we are all engi­neers and it is not some­thing that you’d nec­es­sar­ily expect.

Except for the fact that at the end of they we are all humans and as God as my wit­ness I have to say that all of you Python hack­ers, and friends — both inter­net and in per­son are the best, most touch­ing human peo­ple I’ve ever had the lux­ury of deal­ing with in my entire life.

I’ve had the honor of stand­ing up on stage at PyCon address­ing 1300 Python hack­ers and that was stun­ning and hum­bling in and of itself — but to have peo­ple who you mainly talk to on the Inter­net and pri­mar­ily through mail­ing lists and code, twit­ter and google — who in one moment might be argu­ing with you vio­lently about some­thing about pack­ag­ing, test syn­tax or con­cur­rency — to have those same peo­ple turn around and lift your fam­ily up in your time of need — it is beyond words. This Python com­mu­nity — our com­mu­nity — is some­thing to be cherished.

There have been sev­eral occa­sions where out of sight of my fam­ily and the rest the world I’ve cried because of what the com­mu­nity has done for us in how much it has sup­ported us. Our friends, this com­mu­nity, our fam­ily — I can’t describe it.

Some­thing as small as get­ting a pack­age in the mail that has a cou­ple of stuffed ani­mals for my old­est daugh­ters — that just bright­ens thier day, a card wish­ing us well or an email or tweet to my wife — it makes the day brighter. In the past month those bright days have been rough and very hard to make as a father and it has been hard to get up in the morn­ing in the face of “ship this code, ship this con­fer­ence, fig­ure out what’s wrong with your daugh­ter, keep the boat afloat”. All of the sup­port we have got­ten has helped prop me, and my fam­ily, up. It has helped us make what could have been crush­ing days not so dark.

We don’t have fam­ily in the area (at least none remotely close) and it has been amaz­ing hav­ing peo­ple reach out to you from com­pletely dif­fer­ent coun­tries when your next door neigh­bor doesn’t even know some­thing is going on.

It is amaz­ing, it is hum­bling — and I just want to say thank you from the deep­est part of my heart. There might be more tough times com­ing up ahead — I don’t know — but it is my job as a father to get up every­day put on that game face and ship that code, fix those bugs, and ship a con­fer­ence, make money and be a dad — it is my job as a father to do the impos­si­ble every­day because that is what I do.

Its my wife’s job to get up, put on a game face and do the impos­si­ble every­day, she is my hero, she doesn’t “get” to go to work, a small vaca­tion I get every day. She is in the fray all day, every day, doing the impossible.

The impos­si­ble is already hard enough — rais­ing chil­dren, hold­ing down a full time job and jug­gling a hun­dred other things — things par­ents do every day is hard enough but it is our job as par­ents and our duty to stand up straight and do every­thing that we can for our chil­dren.
In the case of our child — it is our job to do the best damn job that we pos­si­bly can, give her the best care, the most love, and to hope and pray that every­thing will come out all right.

And that’s the odd thing through­out all of this deep down inside — if you ask my wife — I’m a starry eyes opti­mist, for exam­ple I believe that every­one no mat­ter who they are or their atti­tude or back­ground can be a con­trib­u­tor to not just Python — but its com­mu­nity and vibrancy as well. I believe that human beings are intrin­si­cally good crea­tures — I believe that we as peo­ple and as humans are capa­ble of doing the impos­si­ble and the incred­i­bly dif­fi­cult every sin­gle day.

Being an opti­mist I have to look at the sit­u­a­tion with my daugh­ter Addi­son and tell myself that it will be okay. I have to keep telling myself this time and time again because I have to rein­force it in my head that that every­thing is going to be okay — you know she’s still a fan­tas­tic baby, she still sleep­ing large chunks of the night, she’s eat­ing, she inter­acts with us.

She’s a great baby and daugh­ter — both my daugh­ters are great and amaz­ing — just every so often she checks out. It is a very real pos­si­bil­ity that in three months Addi­son could grow out of this and all this fright and energy was “for noth­ing” — it is also a very real pos­si­bil­ity that in three months things could get fan­tas­ti­cally worse.

It is pos­si­ble it is just due to the hard preg­nancy that my wife had with the hos­pi­tal stays and every­thing else and that Addi­son is just catch­ing up devel­op­men­tally to things that she should’ve had when she was born and now chalk it up to “weird baby things”

I have to keep telling myself that she is going to grow out of it, that she is just going to be fine, and you know some part of me when sit­ting in a dark room might whis­per to me that I’m lying to myself that it is not going to be okay and things are only going to get worse but I know that’s not the case.

Par­ents go through things every day that are much, much worse than what my wife and I have gone through. No one wants to go through that we’ve gone through but other par­ents go through much worse and they adapt and they raise some of the best chil­dren that you’ve ever seen. Some of my heroes have raised chil­dren with prob­lems such as epilepsy or autism and their chil­dren are amaz­ing, much more amaz­ing than me. So despite what Addi­son may or may not have, despite not know­ing and just hav­ing to sit back and watch as some­thing hap­pens that I have no power over — despite all that, I know things will be okay.

Because I know as a par­ent and as a human, it is my job to get up every day and do the impos­si­ble. It is my job as a par­ent to raise the best chil­dren — not per­fect chil­dren — the best chil­dren that I can and do right by them. It is my job to teach them, to love them and do every­thing in my power to either heal them or help them cope with what­ever may be wrong. It is hard, but it is not impos­si­ble — but the impos­si­ble is our job.

Reach out to those you know are hurt­ing, or are scared — or heck, peo­ple with one month olds that keep them up all night — wish them well, send them a card, or an email. Even if you only know them through twit­ter, python or some­thing else — maybe they’re a ker­nel hacker, maybe they’re some­one work­ing on the next big deploy­ment tool — it doesn’t mat­ter who they are or what they’re doing Engi­neers are Humans (as Ned so aptly put it) — and all of those peo­ple try­ing to achieve, and fight the impos­si­ble are even more than that.

So while some part of me is scared, is fright­ened, is angry — that’s not the part that I can lis­ten to at all — that’s the part that’s been pushed into the darker cor­ner of my brain not only because of my opti­mism that’s baked into my brain but also thanks to the sup­port of our friends both inside of, and out­side of the Python Com­mu­nity and our family.

Because of the sup­port, because of the well wishes, because of the kind words because of every­thing that’s been done for us, on behalf of us, and because we can do the impossible.

Because of all this I know everything’s going to be okay.

Thank you. From my fam­ily, and the bot­tom of my heart.

 

p.s. There are many fam­i­lies out there — prob­a­bly peo­ple you know — who have chil­dren with issues, or who are strug­gling with issues such as these who are much, much worse off than my wife and I. My fam­ily, while going through this, is very lucky. We’ve been blessed with won­der­ful friends, this com­mu­nity and our fam­ily. I encour­age you again to look around and see those peo­ple who are much more deserv­ing than per­haps I, or my fam­ily is, and to help them. Even if it’s just a card; every­thing helps.

 

 

Announcing the new speed.python.org machine!

June 29th, 2011 § 2 comments § permalink

I hinted at this on twit­ter ear­lier — but now that I’ve had a chance to ssh into the box finally, and, well — run some bench­marks and trans­late PyPy — I am very happy to announce that the PSF has acquired quite the beefy machine for the planned speed.python.org site dis­cussed at the Python VM sum­mit at PyCon 2011.

The goal of “speed.python.org” is to port the PyPy Speed Cen­ter from “just” a PyPy bench­mark tool/suite/site and into one for PyPy, CPython, etc — essen­tially, a mas­sive source of bench­mark infor­ma­tion for a range of full Python inter­preters. These bench­marks are real world micro and macro bench­marks — some­thing we have Unladen Swal­low to thank for — quot­ing Reid:

I’m also proud of our macro-benchmark suite of real world Python appli­ca­tions which lives on and PyPy uses it for speed.pypy.org. In all the per­for­mance work I’ve done before and after Unladen, I have to say that our macro bench­mark suite was the most use­ful. Every per­for­mance change was easy to check with a before and after text snippet.

I’ll also note, some of the bench­mark suite lives in the Python HG repo — PyPy has done a lot of cus­tomiza­tions and tweaks — most of all, they’ve turned it into an awe­some site and resource, and hav­ing this data, com­par­ing say — Python 2.6/2.7/PyPy/Python3/Jython/etc with his­tor­i­cal / per build data (so we could find per­for­mance regres­sions for all of these inter­preters will be amaz­ing.

There’s already work occur­ring on the PyPy side on code­speed (the tool) to make it more generic and usable out­side of just PyPy. There’s also two Google Sum­mer Of Code projects which should help — “Turn Code­speed into a multi-project, sta­tis­ti­cally savvy appli­ca­tion” and “Devel­op­ing a bench­mark suite (for Python 3.x)”.

My part to play in all of this was to act, as the mag­i­cal PSF fairy and sprin­kle resource dust into the idea. Fun­da­men­tally, I view Python.org not as “CPython.org” — I view it as Python-the-Community.org. I view it as a resource where all inter­preters share equal foot­ing, where all of our resources should live and grow (I have a side project for that too…). This sin­gle, shared machine is step one in real­iz­ing that vision (although I’d be remiss in not not­ing that plenty of non-cpython things also share our HG repos­i­tory, and use the mail­man infra­struc­ture we have today).

That all said — I finally get to “fin­ish” play­ing the mag­i­cal PSF fairy for this, and announce, that due to an amaz­ing dona­tion to the PSF from the HP Open Source Pro­gram Office (Thanks Bob!) of a huge machine, and the gen­er­ous, free rack­ing, stack­ing host­ing and mon­i­tor­ing from the kick-ass team at OSU/OSL we now have this mega machine.

Orig­i­nally, the PSF was going to fund the pur­chase of this machine from it’s own pock­ets — but Van Lind­berg con­nected me to Bob at the HP Open Source Pro­gram Office, and bam — magic hap­pened. HP’s gen­eros­ity got us the fol­low­ing machine:

  • DL380 HP DL380G7 X5670 LFF (2U)
  • Dual HP NC382i Dual Port Mul­ti­func­tion Giga­bit Server Adapters
  • HP Smart Array P410i/1GB FBWC Controller
  • 4x 4GB (1x4GB) Dual Rank x4 PC3-10600 (DDR3-1333) Reg­is­tered CAS-9 Mem­ory Kit
  • 2x HP 750W Com­mon Slot Gold Hot Plug Power Sup­ply Kit
  • HP iLO Advanced includ­ing 1yr 24x7 Tech­ni­cal Sup­port and Updates Elec­tronic  License
  • 4x HP 300GB 6G SAS 15K rpm LFF (3.5-inch) Dual Port Enter­prise 3yr War­ranty Hard Drive
  • 2   HP DL380 G7 Intel® Xeon® X5680 (3.33GHz/6-core/130W/12MB) FIO Proces­sor Kit

Yes. HP donated a box with 12 cores (24 with hyper­thread­ing enabled) and 16GB of ram, and a high speed RAID to us for this project. And man, does it fly:

Hardware:Processor: 2 x Intel Xeon X5680 @ 3.33GHz (24 Cores), Moth­er­board: HP Pro­Liant DL380 G7, Chipset: Intel 5520 I/O + ICH10, Mem­ory: 4 x 4096 MB, Disk: 1200GB LOGICAL VOLUME, Graph­ics: ATI ES1000
Software:OS: Ubuntu 11.04, Ker­nel: 2.6.38–8-server (x86_64)

OSU/OSL is going to be our host — they assem­bled the machine, racked, stacked and they’re going to be our hosts. The entire team — Lance and Peter espe­cially, have been patient, under­stand­ing and incred­i­bly help­ful. They got this machine up for us today, and helped me work through some auth issues — return­ing emails within min­utes. I’m really look­ing for­ward to con­tin­u­ing to work with them — the open source lab at ore­gon state is an astound­ing resource for open source. Astounding.

Over the next few weeks, I will be iden­ti­fy­ing the peo­ple who will be tak­ing this from my largely inca­pable hands and turn­ing it into the resource it will become — in addi­tion to run­ning bench­marks, it’s prob­a­bly going to help Brett Can­non gen­er­ate in depth code cov­er­age reports for the stan­dard library — some­thing we intend on break­ing out and shar­ing amongst the inter­preters as a com­mon code base.

This is great news — and I’m look­ing for­ward to the next few months as the hard part of the project takes off — get­ting the speed site up and run­ning and work­ing for the com­mu­nity. For the record, I had to test the speed of this beast some­how — so I picked the most resources inten­sive thing I could think of — trans­lat­ing PyPy using CPython 2.7:

[Timer] Timings:
[Timer] annotate                       ---  732.2 s
[Timer] rtype_lltype                   ---  482.5 s
[Timer] pyjitpl_lltype                 ---  533.4 s
[Timer] backendopt_lltype              ---  146.4 s
[Timer] stackcheckinsertion_lltype     ---   38.9 s
[Timer] database_c                     ---  184.9 s
[Timer] source_c                       ---  344.7 s
[Timer] compile_c                      ---  137.5 s
[Timer] ===========================================
[Timer] Total:                         --- 2600.4 s

As a point of com­par­i­son — check­ing the lat­est build bot result from PyPy:

[Timer] Timings:
[Timer] annotate                       --- 1452.8 s
[Timer] rtype_lltype                   ---  748.6 s
[Timer] pyjitpl_lltype                 --- 1206.6 s
[Timer] backendopt_lltype              ---  560.5 s
[Timer] stackcheckinsertion_lltype     ---  109.9 s
[Timer] database_c                     ---  712.8 s
[Timer] source_c                       --- 1295.1 s
[Timer] compile_c                      ---  472.6 s
[Timer] ===========================================
[Timer] Total:                         --- 6558.8 s

So, yeah — not apples to apples, but there’s a slight speedup.

We now have the foun­da­tion for an amaz­ing, real world bench mark and test­ing site for Python/Python’s inter­preters. This is going to be awe­some, and it could not have been done with­out the work and dis­cus­sion by the peo­ple at the PyCon lan­guage sum­mit, the PyPy folks for putting together an awe­some site, and with­out the sup­port of the PSF — but most of all, the gen­er­ous sup­port from HP and OSU/OSL. My thanks goes out to every­one involved, and I’m hon­ored to be able to help get this project off the ground finally. Let’s show every­one what Python — as a com­mu­nity, work­ing on con­cert with one another is capa­ble of doing.

PS: Here’s a run of the basic tests from the cpython repo bench­mark tool

HPR D B RGB 150 SMOsl logo

Welcome to Addison Joy

June 5th, 2011 § 2 comments § permalink

IMG 2514

Addi­son Joy Noller;  Born 11:50pm June 2nd — 19 3/4 inches, 7.8lbs

Yup, as I men­tioned in On Fam­ily, Crank­ing and Chang­ing — we’ve been in the home stretch of com­plet­ing fork­ing our sec­ond child process — Addi­son Joy Noller. Every­one who is crazy enough to be fol­low­ing me on twit­ter saw me “live tweet­ing” the events on the sec­ond. Inter­est­ingly, shar­ing it with all my friends and acquain­tances made the dif­fi­culty and frus­tra­tion and other crud that much more bear­able for me, so another huge thank you to all of you who reached out to me there, and in pri­vate to give my wife Dusty and I well wishes. It meant/means a lot to our entire family.

Despite all of the prob­lems, com­pli­ca­tions, hos­pi­tal stays pain and risk, my wife and Addi­son are doing amaz­ingly well, and we’re already at home. There was a lot of very try­ing things lead­ing up to this, and up until the moment when Addi­son finally joined us, there was a lot of fear and anx­i­ety sur­round­ing this. Birth can not just be risky for the infant, but also for the mother, and we has risk out the waz­zoo. I think all of my Java pro­gram­ming knowl­edge was replaced with intri­cate knowl­edge of var­i­ous preg­nancy related com­pli­ca­tions and meth­ods of man­ag­ing a strong-willed child.

IMG 2557

Big Sis­ter giv­ing the thumbs up of approval.

That’s all behind us; new chal­lenges await — fig­ur­ing out feeding/sleep­ing sched­ules, teach­ing our beau­ti­ful four year old who is incred­i­bly excited to be a big sis­ter how to be a big sis­ter, fig­ur­ing out the lit­tle 7lbs enigma sit­ting next me in the crib. Hope­fully she’ll like me read­ing K&R out loud to her as much as her big sis­ter did. The entire process of birth, despite thou­sands of years of human evo­lu­tion still remains a mix­ture of sci­ence, the unknown and a lot of guess­work. I know the term “it’s a mir­a­cle” is beaten like my four year old’s drum, but it really is a mir­a­cle — the amount we don’t know and the amount of guess­ing that goes into the “process” is astound­ing and humbling.

Time to break out the Bop­pys, san­i­tize the bot­tles and explain to my pug what the heck this beau­ti­ful lit­tle crea­ture is here in the bassinet. Maybe later she’ll let me fin­ish my blog post on vim and mow the lawn. Or we might just sit here on the couch and chill out. It’s amaz­ing how far we’ve all come since this post for my first daugh­ter in 2007.

Oblig­a­tory Flickr set here.

Python Debugging; Embarrassment, Contracts and Nothing is private

May 31st, 2011 § 1 comment § permalink

Random links

(photo cour­tesy of Sean MacEn­tee via flickr)

Some inter­est­ing bits and pieces (left­overs) from the week­end — I have a ten­dency to queue up a pile of “read later” stuff or email­ing myself a pile of things to talk about/link to/etc. Some­times, I actu­ally get to go through it all. Today — I get to share it to!

First up — Michael Foord (fuzzy­man) did two excel­lent posts — the first is on pri­vacy in Python — not big-P pri­vacy, but rather the programming/object pri­vacy. It’s a good read because it reen­forces the point that even if you think you’re being clever and hid­ing some­thing in a clo­sure to make it pri­vate, you can still get access to it. Remem­ber too — dun­ders (__foo) are just name-mangling. In Python, noth­ing is pri­vate (insert bad tast­ing joke about Python being face­book here).

Michael’s sec­ond post is on the Named­Tu­ple ker­fluffle that was stirred up Krist­jan Valur’s post on the use of exec() and named­tu­ple (short ver­sion: named­tu­ple cre­ates a string defin­ing the class and then calls exec to cre­ate the object. I think Michael is spot on — I think exec() gets a bad rap frankly, sure — it’s some­thing of a hand-grenade, if you use it wrong, you’re going to get hurt, but in this case I have to agree with Ray­mond in his com­ment on bug 3974 — the cur­rent imple­men­ta­tion is clear and main­tain­able. I don’t like the stern­ness of the reply — but he is right. Kristjan’s use-case is an inter­est­ing one, but I don’t think it’s one that war­rants the removal of the exist­ing imple­men­ta­tion. I’m won­der­ing if a “fall­back if exec doesn’t exist” is worth inclusion.

Then again, I’ve spo­ken to peo­ple who refuse to use named­tu­ples because they now know how the sausage is made. I still think the sausage is deli­cious.

Next is a pretty inter­est­ing dis­cus­sion on a pre­sen­ta­tion that came out of Pixar on get­ting over embar­rass­ment in order to get things done — I don’t have much to add above the com­ments on hacker news, except to say I think the same men­tal blocks they talk about for ani­ma­tors apply to pro­gram­mers, writ­ers, etc. We hide from code reviews, we hide our writ­ing until we think it’s “Pitch Per­fect” — when in real­ity, we shouldn’t. We should be shar­ing, dis­cussing and col­lab­o­rat­ing ear­lier, more fre­quently and more often.

Share and Ship early and often — see also “Don’t Go Dark”.

Finally, I was happy to see the “Quick and Easy Debug­ging in Python” post from Jeet Suku­maran — it’s always nice to evolve past sprin­kling print fairy dust all over your code for debug­ging — even if we all still do it despite know­ing or using PDB. Just to add to his post, if you want to increase your PDB-Fu, I rec­om­mend this “Debug­ging in Python” post by Steve Ferg, and the offi­cial doc­u­men­ta­tion for PDB. We should really add a HOWTO for this.

p.s. For addi­tional good-reading, check out “Pri­or­i­ties Don’t Exist in a Vac­uum” and “First Care”- while not ger­mane to what’s I’ve already writ­ten about, they’re a good essays on pri­or­i­ties. Thanks to the lat­est “Back to Work” pod­cast.

PyCon: Everybody Pays

May 25th, 2011 § 11 comments § permalink

Pre­am­ble

There’s been some recent dis­cus­sion about DjangoCon(.eu | .us) and whether or not speak­ers should have to pay for admis­sion as well — see Chris Wanstrath’s (of Github) tweets (here and here) and this Con­vore thread for exam­ples. Obvi­ously, as PyCon is the “big dog” so to speak for Python con­fer­ences, every­one looks to “us” for a model to work from, or how we man­age things. I’ve seen a lot of poop slung towards the Djan­go­Con orga­niz­ers, mainly due to a lack of know­ing “why” cer­tain poli­cies (such as “Every­one Pays”) exist for Djan­go­Con, PyCon, and other conferences.

As co-chair and pro­gram com­mit­tee chair last year, and pro­gram com­mit­tee chair the year before, and now chair for the next two years — I fig­ured it might be good to take a moment to explain the ratio­nale behind PyCon’s approach — as well as some sta­tis­tics about the bud­get. I’m not going to state that this pol­icy is per­fect; nor that it won’t be changed; I also will not release the bud­get pub­licly — I don’t think giv­ing every­one a spread­sheet with­out the con­text of the hun­dreds of man hours of work that go into it is use­ful, at all.

Impor­tant Note: PyCon is orga­nized and man­aged by the Python Soft­ware Foun­da­tion — this means that, as part of being a 501c3 char­ity, some of the finan­cials from past PyCon is avail­able as part of pub­licly acces­si­ble finan­cial doc­u­ments of the foun­da­tion. You can find those on the PSF’s site.

The same rea­son­ing may not apply to a con­fer­ence that is orga­nized by a com­mer­cial entity or is done for profit. OSCON is a com­mer­cial con­fer­ence, so hav­ing speak­ers get in free is gen­er­ally expected. DjangoCon.us is in the mid­dle — it is orga­nized for profit by a com­mer­cial entity, but it also con­tributes heav­ily back to the Django Soft­ware Foun­da­tion. DjangoCon.eu is man­aged dif­fer­ently as well.

» Read the rest of this entry «

Free Idea: Code equivalent to Morning Pages/750 Words

May 22nd, 2011 § 4 comments § permalink

I had a bit of an idea that almost turned into another crank based on yesterday’s blog post “On Fam­ily, Crank­ing and Chang­ing” — the “code equiv­a­lent” for the idea stem­ming from the Artists Way’s con­cept of “Morn­ing Pages”/750Words and the Writ­ing Down the Bones con­cept of “Keep­ing the Hands Moving”.

I made the mis­take how­ever, of ask­ing on twit­ter — never, ever ask a bunch of pro­gram­mers quote “What do you think the char count or line num­ber of a rea­son­ably sized Python mod­ule is?” — never. Just don’t. I’m not even ask­ing that here. Instead, I’m giv­ing you a sim­ple idea for a web appli­ca­tion. Take the imple­men­ta­tion of github’s gist’s/paste­bin, mash it up with a built in code edi­tor (such as Ace), and kick out a programmer’s ver­sion of 750 Words. The goal is not to force peo­ple to share code pub­licly — if they want, let them flip that bit (or just post/link to github’s gist sys­tem). The goal is to encour­age programmers/hackers to explore/write some new:

  • code
  • tests
  • docs

And I mean new — not some­thing bogged down by their every day projects. It could just be a clever one liner ala Raymond’s python tips. It could be a few-hundred-line piece of code that just tracks how many times they’ve watched their favorite show using some cool mod­ule. Just keep the hand mov­ing; just take 3, 10 or 30 min­utes a day and keep a pri­vate code jour­nal of new ideas, con­cepts, etc. Write some morn­ing pages.

Project Euler is algo­rithm prob­lem solv­ing, so it doesn’t ful­fill the goal. Code Kata’s come damn close (see also Cod­ing Horror’s take) — but again, those are focused on pro­vid­ing a prob­lem, and then hav­ing some­one come up with a solu­tion. I’d like some­thing that just sets forth the ideas exposed for writ­ers above, and sets it in a pro­gram­ming context.

If you want, allow users to seed it with sug­gested ideas. So that when a user logs in, they might have set a “pre­ferred pro­gram­ming language(s)” and get a a lit­tle javascript popup with a prob­lem sourced from another user, like say “use python threads” or “write an appli­ca­tion that forks”. This lat­ter part ties into an idea I had stem­ming from Zed’s orig­i­nal “Learn Python The Hard Way” post­ing — too many of these prac­tice sites focus on algo­rithms and math­e­mat­i­cal things that prob­a­bly won’t help you in the next 8 hours. Some­thing that had prob­lems like “send a receive UDP mes­sages from a socket” and the like — focus­ing on com­mon, prac­ti­cal things.

Any­ways so what are the require­ments for “XXXcode” or “xxxlinesaday”/etc:

  • Allow signup/signin
  • Allow pub­lic shar­ing of journals/non public
  • Allow sub­mit­ted “ideas”
  • Out­line the idea stem­ming from the Artists Way/Writing Down the Bones.
  • Make it look decent (I’m tired of ugly pro­gram­mer sites. Go get some­thing from the­me­for­est if you need it)

There ya go. Take it and run with it if you want. Just stop both­er­ing me about lines of code in a mod­ule. Man you guys can be pedantic.

 

Images

On Family, Cranking and Changing.

May 21st, 2011 § 6 comments § permalink

Intro­duc­tion

Some­time on May 6th — over two weeks ago now — I shot out a innocu­ous tweet ask­ing what might be a good blog topic. I think I said some­thing like “python, fam­ily, .…” — the over­whelm­ing major­ity of them responded with “write some­thing on fam­ily”, iron­i­cally, as I was read­ing those responses sit­ting at a stop light (yeah, I know — don’t yell at me) I got a phone call from my wife ask­ing me to come home imme­di­ately. You see, my wife is very, very preg­nant with our sec­ond child, and it’s not been an easy preg­nancy for her. We’ve had a lot of scares, and we’ve spent a fair amount of time in and out of our local hos­pi­tal — so when she said “come home right now” — you can expect that every­thing else pretty much evac­u­ated my brain except that.

I guess the twit­ter responses acted as sort of a cos­mic hint as to what was com­ing — the abbre­vi­ated ver­sion being that my wife, bless her soul, was deemed “high risk” and admit­ted to the hos­pi­tal on the 6th — with the expec­ta­tion that she would not leave until she gave birth. Fast for­ward two weeks in the hos­pi­tal, a myr­iad of tests, blow­ing out bud­gets on gas (what the hell) and being a “Sin­gle Dad” for most of that that time, and I can hap­pily report that mommy and baby are sta­ble, but still hang­ing out inside my wife.

These past two weeks taught me a lot about myself, about my fam­ily — some things that I thought I knew were brought to task and tested — heck, some of the things I was going to write about were put to the ulti­mate test. You may not really care about any of this — I’d go some­place else at this point if that’s the case. I do hope to out­line my thoughts on bal­anc­ing things (though I remain ter­ri­ble at it) and find­ing the time. You’re not going to find a cure all, or a hack that will “just make things work” — that doesn’t exist.

» Read the rest of this entry «

On Contribution

May 5th, 2011 § 16 comments § permalink

Pre­am­ble

A recent post on Hacker News enti­tled “Why I still don’t con­tribute to open source” raised a series of thoughts in my head — but then, before I could even take the time to gen­er­ate the small­est of replies, Brian Curtin swooped in and made prob­a­bly one of the sin­gle best com­ments in reply, and on the sub­ject of con­tri­bu­tion that I’ve ever read. The orig­i­nal post; and Brian’s excel­lent reply were enough to get me obsess­ing about this sub­ject again — eager to share my thoughts and feel­ings on it.

A while ago (almost exactly a year, oddly enough) I posted a ques­tion here to my blog — “Why aren’t You Con­tribut­ing (to Python)” — the replies to that post, both in the orig­i­nal com­ments, Hacker News, Red­dit and other thought­ful responses by Tim GoldenYaniv Aknin and Brian Curtin made me sit back and think for a long time what we — as a “python core” team could do to help reduce the fric­tion and over­all bar­rier to con­tribut­ing to core itself. It also made me take a step back and ask myself why I con­tribute to Python — not just via core, but also to PyCon and the PSF.

» Read the rest of this entry «

Getting to do what you love, with people that are awesome.

May 1st, 2011 § 3 comments § permalink

On Fri­day of last week, a new post I wrote for my employer (Nasuni) went up — “Encryp­tion Keys, User Data and Sub­poe­nas”. In that post, I got to out­line, in clear “non slip­pery” lan­guage how my employer man­ages encryp­tion keys, what data they have access to, etc. One of my favorite quotes:

If a cus­tomer has pro­vided their own encryp­tion key(s) — Nasuni, or the cloud provider, do not have those keys, and can not pro­vide them as part of a sub­poena or other legal process. We can not decrypt or access your data. We can not sup­ply a key which we do not have. This is not pol­icy or trust level pro­tec­tion: It’s impossible.

We offer auto-generated and escrowed keys as a con­ve­nience to the user — the ben­e­fits of hav­ing this fea­ture out­weigh the cost. A user or com­pany who knows noth­ing about encryp­tion keys and key escrow can still have strong data secu­rity and instan­ta­neous dis­as­ter recov­ery, they can install a Filer in min­utes and imme­di­ately be up and running.

» Read the rest of this entry «