Ode to James Socol

James Socol is moving on from Mozilla. It took me a week or so to digest what this means to me. Today I’m sitting here, in what would have been our weekly 1:1, writing this post because:

  • I’m not letting James leave without a proper tribute
  • I’ll miss working with him (a lot)
  • He is too humble to write a post about how badass he is
  • I couldn’t take him out drinking to dinner last week

What I’ll Miss

At the top

James Socol is a force of good. He can usually be found getting shit done and pushing forward every day. I’ve worked with James for about four years as his manager. He possesses both sound principles and a wicked work ethic. He was reliable and never said, “that’s not my job.” He’s the kind of guy you want on your side.

There are many reasons to miss James but here’s what I will most (in no particular order):

  • Sense of humor: James has a dry sense of humor and has mastered the art of sarcasm (the good kind!). He also understands all internet memes and often corrected me on these. His depth of Penny Arcade and xkcd knowledge are unparalleled. I’ll miss all the laughter we shared during work weeks and meetings.
  • Passion for people: It was great seeing James grow as a manager. James and I first started testing Rypple for managing feedback loops a few years ago here at Mozilla. Neither of us were going to accept a yearly feedback loop as enough for personal development of our teams. He volunteered to experiment with new methods for managing teams and led by example. You could tell he actually cared about people and being a manager was more than just a job to him. I’ll miss working with him on leadership and management because I learned as much from him as he learned from me.
  • Solving problems, not symptoms: Regressions are always something to worry about in software. What made James special is he isn’t happy just fixing regressions faster or reducing them to a reasonable level. He strives to eradicate them and pushed us to move forward with continuous integration and deployment. James approached every problem with soul. His work will persist in what he leaves behind but I will miss how well he matched the work of today with the principles behind tomorrow.
  • Putting his heart into it: All in. That’s what comes to mind when I think about how James approached things. He’d be upset if things weren’t working well, if someone was unhappy with him or if a launch went poorly. He lived and breathed his work for Mozilla and I will miss his passion for the mission because it inspired me and everyone around him.

A Giant Code Impact

James discusses his favorite topic

On top of everything else, James was a code beast. He has quite a few repositories but when it comes to code, here’s what stands out:

bleach
An easy, HTML5, whitelisting HTML sanitizer. A powerful and widely used libary; gives webdevs granular control over HTML inputs.
pystatsd
A Python client for the statsd daemon. James pushed for us to use statsd and Graphite. Instead of complaining that we didn’t use them he got his hands dirty and made it work and convinced everyone why it was important.
django-waffle
A feature flipper for Django. It can define the conditions for which a flag should be active, and use it in a number of ways. This helped our first continuous projects focus on shipping features instead of arbitrary versions.
jingo-minify
A CSS/JS bundler and minifier for use with Jingo; connector to use Jinja2 templates with Django. This helped us minify assets for deployment.
commonware
A collection of small but useful tools for Django. Often used internally by our developers.
playdoh
James was a key contributor to playdoh, especially in the early days before it became an official library. He wrote a lot of its middleware and built one of our first sites using Django as its foundation. Today, playdoh is a popular choice for new projects at Mozilla (if written in Python).
kitsune and kuma
Last but not least, James was the lead engineer behind Mozilla’s customer support knowledgebase and developer documentation software. If I’m not mistaken he also chose the codenames.

Mad Street Cred

Nice kicks

James leaves behind two solid teams who build and support support.mozilla.org, input.mozilla.org and developer.mozilla.org. It’s important to note that his peers will miss him as much as I will. Here are some things they were thankful for:

On management:

… totally the best manager I’ve ever had. He understood the way that developers work (being a developer himself) and he was also such an awesome person! Also I think as far as my experience goes, he’s the first manager I’ve had that I felt completely comfortable being 100% open with.

broke every stereotype I had about managers. Great to come to Mozilla and have an awesome manager.

encouraged us to think about sane remote working practices

being a very nice interviewer

James always was encouraging and offered a tremendous amount of support to new developers. James was one of my favorite people who interviewed me when I applied to Mozilla. James’ demeanor, personality and attitude put me at ease. James truly displayed the Mozilla attitude that I love about working here.

As an engineering mentor:

continuous deployment/improving webdev’s deployment processes a LOT

He put freakin’ LOLcats in a code review! He’s very serious about quality code but he reminds us not to take ourselves too seriously.

Being Webdev’s security ambassador with the Security team

Being Guardian of Code Cleanliness on all his projects

James was humble and helped webdev grow through through various scaling points.

As a person:

letting me crash on his couch twice in one summer with random people he’d never met

Starting the “Better Know A Webdev” blog series

Onward

James leaves Mozila with solid teams, solid code and better practices. He takes with him acquired wisdom and lasting friendships.

I think James will continue to build amazing things and be successful wherever he goes. If anybody out there doubts him, hopefully they can read this post.

James – I’ll miss you but this isn’t goodbye. I will still troll you on twitter and expect you to keep your libraries up to date!

See you soon. Cheers. <3

James approves!

At Peace

My uncle Craig passed away this morning. He struggled for many years, bed-ridden after a series of issues. I am sad because I will miss him — at least the version of him I knew before he got really sick.

I’ll admit it was hard to watch him suffer, and his death brings a kind of closure and peace. I’m sure some of you understand the feeling. The last time I saw him, I sat next to him and said, “Don’t be scared, Craig. You will see your dad soon and he’ll take care of you. We are all here with you.”

I don’t know if he could hear me or understand me, but I already said goodbye. This morning I was sad but mostly for my mom and grandma, who lost a brother or son. I told my Mom she was a good sister to him, and took care of Craig through the worst parts. It was hard work — years of hard work — and all because she loved him and hoped to make him a little more comfortable.

As I usually do during these times, I read Thanatopsis today. The last part explains death better than most:

So live, that when thy summons comes to join
The innumerable caravan which moves
To that mysterious realm, where each shall take
His chamber in the silent halls of death,
Thou go not, like the quarry-slave at night,
Scourged to his dungeon, but, sustained and soothed
By an unfaltering trust, approach thy grave
Like one who wraps the drapery of his couch
About him, and lies down to pleasant dreams.

I hope Craig went in peace, as if laying down to pleasant dreams. He had a good soul. Rest well, uncle.

Lucky One

I was never a fan of first dates. The nervous tension was always palpable and I never had much of an appetite. Some of them went fine, some were terribly bad. I started to lose hope that I’d find the right person. The odds seemed against me after many failed attempts.

Jaime and Michael
I met Jaime online and she sounded fine on the phone. Sane, independent, smart, sense of humor. She even grew up in Hawaii like I did and was in vet school.

This girl is different, I thought.

For a first date, we did fairly well. Her roommates spied on me picking her up and her friend jokingly said to have her home by midnight. I didn’t oblige.

We didn’t eat much and I stared at the table a little too often. We went to American Dream Pizza and had gelato at Francesco’s on the second floor. I didn’t even finish my gelato.

For a night cap she showed me all of the animals at the vet school she had told me about on the phone. I introduced her to my cats and gave her a ride home. My face hurt the next day from smiling.

She moved in a few months later. Mostly, it was driven by necessity. This way I could feed her and comfort her while she went through the hardest part of vet school: surgery rotations. Until then I had never seen someone work a 36-hour shift. She complained, but not much. She just kept working hard.

Rio and Maia sleepingGetting the cats to get along was an interesting problem. I remember Maia and the boys almost killing each other when they were introduced. It turned into a weird feline love triangle, and they became family. Things seemed to have a way of working out.

Then, we decided to get a dog. The first day we had Scout was when I knew Jaime would make a great mother. I also knew I’d marry her by that point. She was a DvM. now, which was not easy. She passed her boards on the first try and was ready to start her career. Jaime was busy, but she still had time to take Scout to training classes and teach her a ton of tricks.

Soooo tiredWe moved to Portland eventually. Jaime worked at the VA for a while and we lived in west Portland. A year later, after our lease was up, we were off to California.

Jaime agreed to move to California knowing she had no job. We found a place at the last minute in Mountain View thanks to a friend and she started looking for work. She turned down a crappy offer only to walk into a good job less than a month later. She learned quickly and became a leader on her team. I was proud, but not surprised. Not at all.

Oh yeahI asked Jaime to marry me on February 13th the next year. I was worried because it was close to being cliche, so I made sure to avoid the 14th. Her family was there and I proposed to her on the coast of the Pacific on Land’s End. “Jaime, I have a question for you,” I said. At first she thought I had to use the bathroom, but she was shocked when she realized what was happening. We cried a little, hugging each other on the side of the trail. The wedding was even better, and we were happy.

Things went well for a while. One year, in spring, my grandfather passed away. When I got home, Jaime told me, crying, that Maia was also sick. I didn’t have to ask why she was upset.

Maia DozingJaime knew what had to be done, and she took responsibility for Maia’s life. The next day, we went in to the vet and put Maia to sleep. Jaime softly said goodbye, and I watched Maia die in her arms. Jaime was so strong. My heart was tired when I went to sleep that night.

And then, we got another dog. This one was tiny, shy and relaxed as a puppy. I’m not really sure what happened, but Junebug turned into a rascally poodle with an unhealthy obsession for socks, sunbathing and Greenies. Jaime took the time to take Junebug to classes and teach her tricks as well.

Jaime and JunebugThe years flew by. We found a new home for Rio and Junior and tried to start a family. One day, we found out she was pregnant.

Jaime was overjoyed. She read all the books and scoured websites. She wanted to be prepared, eat right, and take care of herself and the baby. As always, she looked at it as an opportunity to learn.

Today, she is around two months away from being a mother. I find myself in awe of Jaime. She has remained patient, graceful and loving even with her big belly, swollen feet and sore hands. She still goes to work and does yoga. Without hesitation, she assembled a beautiful baby room. I helped, but only a little.

I think about the journey we are on. There are so many memories, but so much still to come: all the firsts, wonderful discoveries, tough times, lack of sleep and those hard nights as parents. I am oddly at ease with the whole thing. I am not scared. I know Jaime is my partner, and I know she will be strong. It gives me confidence. I am lucky.

New set of shoes for a special baby girl

I wonder: will I ever be able to adequately tell our daughter how I feel about Jaime? Will I be able to describe how much I love her, and how rare it is to know someone like her? Will I do her story justice?

I will do my best — through actions and words alike. I am excited to be a father, teacher and friend to our little girl. But what I’m most excited about, above all else, is that my daughter will have Jaime for a mom.

Because, baby girl, your mom is special.

Princess