Blog

Who’s Gonna Ride Your Wild Horses

Cowboy coding, I wish I knew how to ⌘Q you

The sun has set on my unbridled "cowboy coding" for the last time. (Geek alert. You've been forewarned.)

Traveling 5+ weeks and not touching Charitocracy the entire time was never my plan. I thought I would have remote access to my home server, but something went wrong. (I still don't know what, but I have some suspicions.) I set up a more reliable VNC connection as an immediate countermeasure when I returned home so this particular obstacle wouldn't repeat itself.

Really, though, I needed to rethink my overdependence on an old Mac Mini (MM). I chose it as my main staging server by virtue of it being the only unutilized Mac in my house, purchased as a home theatre PC before Apple TV made it obsolete. I used dynamic DNS to direct charitocracy.org traffic to my home network, then my router port-forwarded to the MM. It just worked... except when it didn't. Namely while on my trip, and about half the times I tried logging into it from neighborhood coffee shops.

Meanwhile, I have a powerful mid-2015 MacBook Pro (MBP) at my fingertips any time I'm working. It runs circles around my circa 2009 MM. I never need to access it remotely over a questionable net connection. So why am I trying to use it as a dumb terminal into an ancient machine across the house, across town, or across the world as the case may be, with mixed success at the best of times?

Last week I declared an end to amateur hour by doing the following:

  1. I installed MAMP on my MBP.
  2. I set up a git source control repository (with origin backed by my iCloud drive) to host Charitocracy web code and database.
  3. I rebuilt the Charitocracy beta site from scratch on my MBP, submitting to git at intervals along the way, using my MM's site as a reference.
  4. I created a pre-commit hook that automatically adds a SQL database snapshot whenever I commit code changes.
  5. I installed and configured PageKite, a pay-what-you-want tunneling service which allows me to receive Charitocracy network traffic (including TLS/SSL) wherever I like, including on my MBP, even if I'm in a random waiting room or coffee shop (as I am right now).
  6. After proving the new beta site worked as well as the MM's, I pulled all the code and data back from git and proved I could easily clone the site on my MM, redirect PageKite to serve it up externally, make changes to the site on MM, and pull the changes (code and DB) back onto my MBP.

So I'm finally baking some real engineering discipline into my coding process. Nothing falls through the cracks. I can go back to previous snapshots of code and data. I can easily view and search through changes, even if they were in the DB or in code I didn't write myself, like plugins. I can travel. And all of this is quick and robust, because 99% of it is happening right on my laptop (credit card processing is one exception, but that traffic works seamlessly through PageKite, too). And if I get hit by a bus stagecoach tomorrow, you'll all be able to pick up where I left off, right?!

I still have plenty of engineering discipline yet to adopt, the sorts of things truly necessary when working in teams with fluid requirements and actual deadlines. So I reckon I'll just ⌘H the cowboy coder until the coast is clear. Yeehaw!

Callin' the VT100 a dumb terminal? You sure you wanna be doin' that, Benj?

Back in the Office

Looks like you've been missing a lot of work lately, Benj.

"I wouldn't say I've been missing it, Bob." I packed 6 months of travel into 6 weeks, but got it out of my system. Let's hope.

You'll recall before I left, the IRS totally punk'd us with a letter saying "We got your application, now sit tight for 6 months while we think about it." Then after I left town, they followed maybe two weeks later with a letter saying, "Just kidding, we love you guys, don't change a thing, you're totally in." I'm paraphrasing, the actual letter of determination is here.

If you want to know what goes into a full-fledged Form 1023 these days (not the shortened -EZ version) you can take a look at that here.

I thought I'd be taking my time getting the web site up, and that the IRS making donations to Charitocracy tax-deductible would be the long pole in the schedule. Suddenly I'm the weakest link! Charitocracy's only obstacle to going live is me. The pressure is back on, friends. Jessica be all like:

Yeah... I'm going to need you to come in on Sunday, too. Usual Time.

Nailed It!

Benj is away so the kids and I eat lots of meat, watch horrible (nay, amazing?) movies, and sleep in the big bed. I have the pleasure of taking out the trash and getting the mail. Glamorous life, I tell ya!

Bison chili? Nailed it. Watching the very 80's and mildly inappropriate for kids Adventures in Babysitting? Oh, we SO nailed that! Middle of the night visits to my bed by each kid? They each nailed it. Recycling? Well, I missed the first week's pickup but I totally nailed it this week!

Getting the mail? Yeah, I'm mostly terrible at stopping by the post office even though I drive by it multiple times a day. I mean, why bother? Christmas card season is over. It's no one's birthday. And I have enough credit cards, thank you very much.

But, OMG, YOU GUYS!!! Look what came in the mail this week!!!

Letter Of Determination

Getting approved for our 501(c)(3) tax-exempt public charity status on the first try?

Yeah. WE NAILED IT!

On the Road Again

vacation

I'll be on the road for the next five weeks. First a couple of weeks in Seattle and London visiting dear friends and family, then three weeks in Massachusetts prepping our old house for sale. My Boston to Portland flight on Tuesday was the first since... August?! I used to fly at least monthly. It was good to be back up in the friendly skies after six months on the ground!

On my way up the east coast, before dropping off my car with Dad & Maryann near Logan Airport, I spent a day in New York City snowed in with my cousin-in-law, Hillary. We had an insightful and timely conversation about the next phase of Charitocracy development: cause nomination, discussion, and voting. It's just what I needed to psych myself up for tackling this next and most critical aspect of Charitocracy functionality.

Hillary also suggested including a portal for non-profit nominees to join the discussion without being donors themselves. Brilliant. This way they can correct any well-intentioned but inaccurate information in the nomination pitch, provide more details about their mission and current activities, and respond to any criticism. Hopefully it keeps a grass roots feel without too much of a polished marketing department aftertaste. But it will certainly add an important voice to the discourse.

I'll be constantly on the move until March 1st without much opportunity to code, but I am looking forward to killing off the last few known bugs in the signup/donation process so I can start in earnest on nominations. I'm as excited as ever, but will use this self-imposed downtime to reflect on what's coming next. For now, it's Adventure Time with my buddy Kerry and his fam!

Adventure Time

Beta Tests and Mondays…

Mondays

... always get me down. Well not really, but it's not that exciting either.

Benj has been pulling all-nighters this week developing the sign-up section of the website. (In related news, I've been sleeping quite well since no one is breathing in the same room as me. Oh, did you hear that pin drop in London? Me, too!)

So, I spent a chunk of today beta testing this bit. I tried like hell to break the thing, but Benj did a fist pump when I told him that I couldn't. Don't worry, I didn't let him get away without taking my list of suggestions for improvement.

The best part, though, was creating accounts for all these "people" signing up. I might have used your face and assigned you an amazing superlative. So, if you need ideas when this thing goes live, let me know.

As for me, I shall henceforth be referred to by my Charitocracy Username. And since it's Monday, I'm totally okay with that.

Signed,

World's Okayest Wife

Puppy Monkey Baby

Let’s Encrypt!

Keymaster

This week I'm hoping to complete a critical component of the Charitocracy web site: donor signup & billing. The goal is to make it super quick and convenient for a new donor visiting the site to sign up and commence annual credit card donations of $13/year (or more if desired). Super quick, convenient, and secure!

Toward that goal, the main accomplishment I want to highlight has been adoption of secure communications (HTTPS protocol) for charitocracy.org at no cost to us. I'm running this blog on a hosted server without any extra security, but the main charitocracy domain, aka my 2009 Mac Mini sitting here on my desk, is now running HTTP over TLS with a certificate signed by Let's Encrypt.

Usually this is roughly a $100/year expenditure. You pay a 3rd-party company to check that you control the domain of interest, and they generate you a TLS (successor to SSL if you've heard of that) security certificate which you install on your server. If configured correctly, all data transmitted between your web site and your visitors will be encrypted so bad guys snooping the network traffic only see gibberish, whether it be credit card details or other private information. You'll know it's working because there will be a little padlock symbol next to the domain name at the top of your browser.

The beauty of Let's Encrypt, a relatively new non-profit organization themselves, is that they're helping make the web more secure by encouraging and empowering everyone with a website to self-prove their domain ownership and generate their own certificates all for free using a tool they've created and maintain. I secured charitocracy.org and saved Charitocracy a hundred bucks a year all while binge-watching Making a Murderer from the comfort of my living room couch. Feel free to hop over to charitocracy.org to admire our padlock. Thanks, Let's Encrypt!

Making

All Night Long

Everyone

I've officially pulled my first Charitocracy all-nighter! It's now 6:30am, so I'll keep this brief. But here are a few of the (debatably) exciting things I've done since last week:

• Applied for and was granted business checking and savings accounts at DCU, the credit union I've used since my first job at DEC in the mid-90s.

• Set up accounts at PayPal and Braintree (credit cards), the combination of which I intend to use for donation processing. Maybe I'll integrate Amazon, too, but I haven't decided yet. Braintree credit card entry will let us take credit card info without donors leaving our site, except that the text fields into which you type your numbers are actually little frames hosted at Braintree, covering most of the PCI security concerns: we won't see or store any sensitive data ourselves. I'm hoping that once Braintree is fully integrated into new parent company PayPal, they'll also offer PayPal's 0.7% nonprofit discount on transaction fees.

• Brought my 2009 Mac Mini back to life after blunt force trauma sidelined it during our most recent New England to North Carolina migration in August. I managed to get its original hard disk back up and running, and it survived zeroing the whole disk, upgrading from Snow Leopard to El Capitan, and even full disk encryption. But if it fails, I have a new 9.5mm 1TB fusion drive ready to install.

• Installed MAMP and other goodies on Mac Mini to serve as a staging... server. Interestingly, I lost a couple hours getting outgoing email (postfix) working. Well, it works now.  And I concede "interestingly" is a bit of a stretch.

• To put icing on my all-nighter cake, compiled the first draft of our privacy policy and terms and conditions, required by Braintree.  I'm... falling asleep here... just remembering the privacy policy and... terms and conditions...

ZZZZZZzzzzzzzzz

Hello

Who’s the Boss?

I am.

There are a lot of words that have been used to describe me. Some not fit for print, I'm sure. But some others include Type A, extrovert, control-freak, and most definitely bossy. And you know what? I'm okay with those things. Probably because they are all true.

There has been a crusade against the word bossy lately. And I get it. A boy asserts himself and he's a leader. A girl does it and she's bossy. As a mom to a creative and bright girl, I find myself worrying when she seems to always be towing the line between leader and dictator. But what about if you're the boss? Does the boss ever get to be bossy?

Well, I'll be the first to tell you that I don't want a boss. No one is the boss of me. Or so I thought...

Let me back this up a bit. For more than 7 years, Benj traveled for work. It started out at a week every 2 months. Then every 6 weeks, then every month. Throw in extra conferences, worldwide meetings, and events, and before I knew it, it was not uncommon for him to be gone 1-3 (or even 4!) weeks a month. For those of you keeping score at home, I was basically home alone with our kids 50% of the time. It doesn't work for everyone, but it seemed to work for us.

Little did I know that my life was about to change. Dramatically. Benj decided to take a year leave of absence from his job (commonly referred to as The Year of Benj™ around here) and be home. All the time. I will admit that I was nervous about this transition. Could we all survive being together all day, every day? I'm pleased to report that we've made it nearly 3 months and we're all still alive. Benj is happier, the kids are glad that Dad is around more, and I finally feel like I have a parenting partner and present husband.

And you think that would be enough for Benj. But no. He had to go and rope me into this little dream of his. Sure he calls me the CEO and President. But that's just for my ego. Let's get real. He's calling the shots around here and it ain't easy for me. You try going from having a half-time husband to one who's your boss! Let me tell you, there is nothing hotter than waking up to your husband boss whispering sweet nothings like, "Hey, how are those bylaws coming along?"

Thankfully, he's not as bossy as I am.

Slide over here and help proofread this IRS form

 

It’s Business Time

I don't always attend board meetings, but when I do, I wear pajamas.

I didn't read Jessica's meeting minutes, so I don't know what level of detail they contain. But in case it isn't otherwise documented for posterity, I'd like to record the fact that the first board of directors meeting of Charitocracy Corporation on January 13, 2016 was held in bed.

I've worked in my home office since we moved to North Carolina in 2010. There's a bed in there because it serves as an overflow guest room several times a year. I'll also use it myself from time to time when working past 4am, not as much to avoid disturbing Jessica so late as to avoid being disturbed myself when the house starts waking up at 6am!

But that's not where we held our meeting.

Jessica recently set up her own home office in our bedroom. Our good friend Scott built her a custom desk to fit into a strangely shaped nook by the windows. In addition to her Staples "executive" office chair, there's also a massively oversized couch-like chair facing her desk. The kids sometimes do their homework there so Jessica can help as needed while doing other work.

But we did not hold our first board of directors meeting at that stately, crimson red desk, either.

It has been cold here in the Outer Banks of North Carolina this week. Sometimes you're just more productive with laptops in bed. Jessica was very professional, setting up a Charitocracy Meeting Minutes template for future reuse before calling the meeting to order. (Wait, has she done this before?!) We appointed ourselves to various officer positions each: Jessica as President, CEO, and Secretary, and me as Vice President, CTO, and Treasurer. We adopted the bylaws on which Jessica had been iterating daily. We resolved to open bank accounts, seek liability insurance, and hand off our Form 1023 to our CPA for inspection before mailing it off to the IRS. We set a date for our next meeting. All from the comfort of our bed.

I do hope to attract additional board members as we pick up steam this year. We'll benefit greatly from broader perspectives and deeper experience, and maybe fend off some raised eyebrows as we start up a nonprofit as a wife and husband team. But in the meantime, I will enjoy meetings of the executive committee, wherever they may be.

I now call to order a meeting of Charitocracy's Board of Directors.

It’s Going To Be a Happy New Year

We managed to get one concrete thing done in 2015 before the holidays: incorporating in the state of North Carolina. We've started 2016 by tackling Form 1023, which is the IRS paperwork necessary to request tax-exempt status and classification as a 501(c)(3) public charity. It takes an average of 110 days for the form to be processed, so there's no point doing any software engineering until our Form 1023 is shipped off. I promise I'm not procrastinating!

There's an "EZ" impossibly short version of the 1023, which we were very tempted to use, but it's only good if you don't expect to exceed $50,000 per year in donations for 3 years. Assuming every Charitocracy participant gave the minimum $1 per month, that would mean a maximum of just over 4000 users, even at the end of 3 years. No way, right?! Sadly, if the 1023-EZ is a 1st grade book report, the non-EZ version is a PhD dissertation.

As part of it I need to project financials for 3 years. It's a total stab in the dark, and I don't know whether to be conservative or optimistic in my estimates. This document will become public if/when the IRS grants our tax-exempt determination. Whether I'm way over or way under, you'll all be able to laugh when looking back 3 years from now! But I intend to aim for the sky and try to get us there, unless our accountant talks me back down to Earth.

Now, assuming we get this tome off to the IRS next week, we'll commence two parallel missions for the next 4+ months: (1) build Charitocracy from the ground up, and (2) line up as many prospective participants as possible so we hit the ground running during the first month we're operational. To that end, please like us on Facebook and share with friends and family. There's a Facebook widget on this blog page for your convenience. Facebook likes will make as good a proxy as anything until we're ready to take initial signups! You Facebook holdouts can keep following along on Twitter, RSS, or email (look for "subscribe to blog via email" on this page).

Jessica expects 100 participants for the first month. I want 500, please. Let's make it a happy new year!

Make It So