• Why?

    My wife accuses me, rightly so, of asking this question too often. It is one thing, of many, that I do that annoys her. She asks me a question, for example, “can you please get me that bag of flour from the pantry?” My typical retort is “why?” And when I do, and her exasperation bubbles up into tangible, but transitory, angst between us, I silently blame my over twenty years of Product Management experience.

    A constant search for the “why” of everything.

    I have posed this question to myself that much more frequently lately. With my joining of WordPress platform leader, WP Engine, I have found myself in a vast world of ultimate creativity and daily reminders of the incredibly liberating power of an open-source software (OSS) project. Yes, WordPress started out as a blogging technology and yes, this site today, that you have stumbled upon, is a blog. But WordPress is much more than blogging and now living in its world, I have become inspired to perform some of the fundamental jobs-to-be-done of this world-changing software: sharing, building, communicating.

    My “why?” is quite simple. I write because I want to. Pushed further, by the persistence of a grizzled, elder Product Manager, I would expound with: I write because I want to record, for myself, the thoughts, ideas, feelings, questions, experiences of the present such that I may reflect upon them, far into the future. Beyond selfishness, I write also because this allows my wife and my children to know me in ways quite unexpected and potentially more deep. I write because I would have liked to have known my father likewise.

    Why? Why not, I say!

  • To My Son, at 13

    I wish that I had started writing to you earlier. And this wish is not to eliminate a general plaintive cry over lost time. Why the wish? I could have written earlier to form a different, possibly more enduring connection to you. I did not. But I start now.

    Please know that I now write without complete knowledge and confidence. I intend these words to convey both my endless love for you and possibly similar emotions, thoughts, dreams, and fears, many of which were present earlier in my life and some of which still find a home in my own self today. Take what you will but, at least, take my love and hope that you will find a path through life that affords you that which you desire and need.

    I wish that I could be me at thirteen years of age, with the full measure of all that comes with such a challenging point in one’s life. With such, I could perhaps be of more use to you. Now, I have only memories that I can grasp, never fully knowing if they reveal the truth or simply faded or concocted recollections.

    So how can I help, beyond being there for you, for the hugs, the cries, the fights and life’s time spent together?

    In many ways, I see so much of myself in you. For anything good about me, you amplify it in such glorious ways. For anything that is dark, full of doubt and despair, of negativity, you have seemingly absorbed and made your own. I do not know if it is worse. To claim such accomplishment is not desired, for either of us.

    Your Goodness

    Your good is not solely defined by me. Yes, we all take in so much from those who come before, but I see your uniqueness: a kindness and openness in your soul that, combined, enable you to form authentic, respectful, and truly kind connections with others. The world needs more of what you have and offer up. There are times when I see you interact with others and I am at a loss for words, in awe of such deep human love you have inside of you, and that you are willing to share with others. May you never lose this part of yourself. Always remember that this truly is a superpower of yours.

    Connected is your willingness to share. I am closed to the world, mostly. To share what is inside of me is always a seemingly insurmountable struggle. For you, it flows, mostly. In this, you live a very much different experience than mine. The boundless, sometimes uncontrolled emotions roil you, but now, at thirteen years of age, they never consume you. Almost effortlessly, you maturely process – and yes, often, in the beginning, with a torment of anger, frustration, or sadness – and, just as important, communicate. In my relationships, I fail at communication in so many horrible ways: silence, opaqueness, brevity, and incompleteness. Effective communication with one’s self and with others unlocks power, happiness, love, support, and deep connection. Your emotional strength and maturity are what form a strong, resilient foundation for your life. This is also another superpower. May you use it well, and may you foster it, grow it, and never let it diminish into nothing but a shadow.

    My Own Challenges

    Darkness

    I do not know when I turned so dark inside. I cannot remember the inception and the journey in all facets and dimensions. But I have lived with darkness for much of my adult life. I do not say that I am distinguished by this: we each live our lives almost completely alone, and to say that one is unique is to make an impossibly proven assertion. I do say that, with more years, more life, and a family who I love and who loves me, the darkness more readily subsides to the fringes of my existence, only brought forth to black clarity

    What is the point of it all? What is the point and purpose of my life? Why do when there is not an answer? How can others do when there is no real answer? Why should I do when others can do better?

    There are more questions. Acknowledge them. But carefully pick the ones you will seek to answer. Oh, the time wasted! A mind endlessly twisting notions of fear and doubt into answers that could only still ever be incorrect. I do not seek to invalidate you. But why not ask another question: can we not build ourselves better if we can also destroy ourselves as well?

    The road of life does not always have to be so dark.

    Inertia

    I pride myself on my work ethic, but I work at what comes relatively easy for me. There, I said it. It is easier for me to write code than it is easier for me to write the requirements for said code. It is easier for me to do the pitch off the cuff than it is to form a polished presentation. It is easier for me to lead with empathy than it is for me to lead with purpose and direction. I do not intend to diminish all that I have accomplished in my life, and I do not proclaim with certainty that I would have accomplished more given a different approach.

    But it is in the hard things that we find our growth and, I believe, often, but not always, our true purpose, love, and our happiness.

    Yes, you are thirteen. I do not seek non-stop work for you. Nor a particular focus on your goals such that you become blind to what else life has in its coffers for us all. You do have talents that could be pursued to fruitful ends and that, as far as I can tell, deliver joy to you. But talent alone is not enough. Remember: hard work and dedication to purpose are almost always required.

    Distraction

    I do not blame solely the world of today. There is too much temptation and opportunities for distraction. You do what I do: I cannot focus, for example, on this writing for too much time without skipping over to a browser for some mindless, purposeless perusing of the Internet. I just did it! And yet, this is one thing that I constantly bemoan about you. Yes, sometimes a distraction of the mind is necessary and helpful. But when we are distracted so much that our hard work is never done, our goals never met, and progress towards growth never realized, then we run the risk of the negative feelings that come from stagnation and, worse, the recognition that we indeed have wasted precious moments.

    Why I write now is as much about forming a new, more bountiful path together, but, through this motion, showing that one can still do, make progress, and fail all along that way, even so. Why I write now is because “why not?” This is a conversation with myself, at least, and hopefully, with you as well; both equally important. Beyond that, I do not care.

    Silence

    As stated before, this is not a challenge of yours. It is of mine. Silence can be useful and important. But too much of it leads to confusion, frustration, and detachment. And if the silence is born from staying in one’s self, one can expect to be alone. Again, there are times when this is fine. But I write this as a possible guardrail for your life: be true to those moments when silence is needed or required, but strive for connection through action, a voice, and a sharing of your thoughts, desires, fears, and hopes. A connected life is a stronger life.

    Wisdom

    I wish that I could provide some. Perhaps I will all along this journey together. Concocted and espoused quite easily, wisdom is easy to share but hard to absorb and use. I believe wisdom’s lessons, derived from the past, and often difficult to prescribe to the present and future, especially as each of us truly lives inside our minds as much as anything else. But if there is wisdom to be found and used, let us embrace it, and share it.

    I love you, my son. I am here for you, and I know that you are likewise here for me.

  • Save Your Pizza Money, Use AI To Build SDKs

    Recently, I spent $15 to build Python, TypeScript and PHP SDKs for the WP Engine REST API, using Anthropic‘s Claude AI coupled with the Cline extension running in VS Code. I made a tweet about that too:

    Though when I posted, I had yet to publish the SDKs. I had a couple of weeks pass without work on the SDKs and just recently, finalized decent first releases for all three. Total spend was $20; that’s less than the price of a typical pizza these days!

    Let me share how this journey began…

    I’m relatively new to AI, and just now scratching the surface of possibilities. I started with ChatGPT and not long ago switched to Claude AI. I found Claude to be superior to ChatGPT but was slowed down by the constant “copy & paste” back and forth, from browser to IDE. Fortunately, a co-worker at WP Engine recommended that I check out Cline. Needless to say, I am sure glad that I did.

    Cline’s integration of various AI services, e.g. OpenAI, Claude, into VS Code is smoothly done. Not only is it simple to setup but incredible power is unleashed when using Claude 3.5 Sonnet, with the ability to control my computer, including doing the “copy & paste” job for me.

    Magic.

    With Cline+VS Code+Claude, I provided user requirements for a new web application and got back a functional application within tens of minutes, if that. With this powerful combination, I formed and ran sophisticated queries. And took an idea to fruition, by generating three separate language SDKs, for the WP Engine REST API, simply by providing an OpenAPI specification.

    Like any good Product Manager, I started with the requirements. Easy, as I had an OpenAPI spec, and a decade of experience as a PM and developer of APIs.

    Pretty simple and straightforward. Although I admit that I would normally need more details when spec’ing out a product, API or not. But Claude was up to the challenge.

    First step taken by Claude was good, and cheap. I think.

    With a plan in its mind, the AI took off!

    All the way to completion, with some more exchanges of requirements and on-the-fly tweaks to capability needs. For just under 2 AI bucks!

    Struggling with distribution

    Things weren’t perfect though. I avoided the constant the back-and-forth but hit obstacles when getting the code ready for distribution via npm.

    But resolution was relatively straightforwad, and soon I was ready to deploy!

    Leveraging progress to build two more SDKs!

    Having completed the TypeScript SDK, I turned my – I mean, the AI’s – attention to the other languages I was looking to support: PHP and Python.

    Two other languages for $3.23!

    I spent more, tweaking, expanding some of the requirements, and fixing bugs generated mostly because of poor communication between myself and Claude. And then spent considerable time remembering, with Claude’s help, how to deploy to registries like npm, PyPi, and Packagist.

    You can access the SDKs – only useful if you’re a WP Engine customer! – at:

    All in, I spent just a tad over 20 AI bucks on these SDKs.

    Pretty cool.

    Some existential questions emerge

    As I was working through this process, I thought much about whether API SDKs are even useful in an AI world. Given an API specification, e.g. OpenAPI, can’t I just have the AI custom craft the integration as needed into whatever application I am trying to build? Should my focus be on creating the best API spec and documentation and supporting examples as possible? Rather than the language specific SDKs? Or perhaps the SDKs become the exemplar for how to use the API in whatever language is desired? Interesting questions that I continue to ruminate over and whose answers I hope will guide future work.

    But for all of the existential questions, I still could achieve so much in such little time and at such small cost. More to learn and think about, as I , and others, navigate the world of AI.

    Now to get that pizza!

  • A Community

    I did not want community this past weekend. I have been exhausted from drama of the world and across my life.

    I did not want community but community is what I got.

    This past weekend, my family and I attended a retreat for families with children who have Type 1 Diabetes. If one desired a pure manifestation of what community is and what we should all strive for, this would be that.

    Yes, its members benefit from a shared burden: sometimes living with the disease, sometimes caring for those with the disease and sometimes both. And sometimes those who are drawn in via work or simply a spirit of volunteerism.

    But they are together. They know each other.

    This weekend I saw, experienced and contributed to some of the critical ingredients to community:

    Communion: This is a strong word and often a religious one at that. Not all communities deeply connect in such powerful ways. But as I sat amongst fellow parents, each of us crying inside and outside as we shared out experiences, I could think of no better word. A deep connection. I know it sounds strange and funny. People that I just met for first time, I would help no matter what. And I knew – I know – that it was reciprocal. And not just to help, but to share viscerally.

    Vulnerability:  I have cried too deeply, too many times since my daughter’s diagnosis. At a moment’s notice, I can tap into the same feelings that brought me to body-shaking, uncontrollable tears that first night in the hospital. I cried openly at the retreat. I knew that everyone else was feeling the same. Not every community has to be replete with tears but to enter into new experiences with such openness can lead to fundamental and strong connections.

    Love: There was a moment during the weekend that captured it all. That summed up everything I was thinking and feeling. A retreat leader, a young woman who has lived with Type 1 for much of her life and a young person one who is clearly strong, resilient and full of optimism and hope, was guiding a group of parents on the social challenges of Type 1 Diabetics. After listening to us all break down, crying about how our young children were struggling, she broke down herself, as she talked about how she was struggling with the idea, and the possibility, of having children. She cried as she talked about her military father did nothing but hug and hold, to support her. In that moment, I saw my daughter. In that moment, I hoped that I would do the same. And in that moment, I realized that loving support was a critical component of having us all survive this disease.

    None of this solely defines a community. But with that word so heavy on the mind as of late, I wish that more could experience community thusly.

    I was glad to have gone.

  • 525,600

    Five years since diagnosis, a moment in time replete with dark, challenging, stressful feelings but a time to see first hand just how much stronger kids can be. Me? I was a hot mess, mixed in with much needed healthy doses of stoic practicality. We needed to do the insulin injections as she cried with fear and pain. We needed to wake up, several times during the night, to confirm her blood sugar readings, and to take action if too low or too high. We needed to help our daughter all the while my wife and I learning how to be a pancreas. Because that’s the thing that stops working when you get Type 1 Diabetes (T1D)! The pancreas, that is.

    I still cried. A ton. And I admit that the trauma is almost ever present, just beneath the surface, easily called up.

    Five years into our journey and still waiting for a cure; just five years more! That’s an inside jokes for all of the T1D folks out there. But in those five years we have been able to adopt the rapid advancements in supporting technology: better continuous glucose monitors (CGMs), do-it-yourself (DIY) looping and now, a true life saver, the Omnipod 5. Five years have been spent learning, struggling, succeeding and failing. Multiple times in and out of therapy for my wife and I. Lots of moments of utter confusion, angst, frustration and shrugs of surprise. Through these moments, though, we – my wife, son, daughter and I – have grown, and grown closer together.

    Five years of lessons, given to us by T1D (and Celiac as well; much more challenging, by the way). My daughter has absorbed all of this much more effectively than I. My progress has been much slower. My resilience and strength often absent as we face an unexpected failure of technology, when the high blood sugars seemingly want to stay quite high and when the loud beeps of the alarms signal action required to treat a low.

    Five years and yes, we are smarter about the disease. But f*ck. It throws a curve ball almost each and every day. We just get better at accepting that often we’re simply not going to hit that pitch.

    To continue the baseball metaphor, we continue to get the at-bats. We get to take those pitches and get the hits, strikes, walks and plenty of hit by pitches. Some folks out there aren’t able to do that anymore.

    As I write this, roughly five years post our diagnosis and those painful early days helping manage the disease for our daughter, I think about someone who isn’t around to get up for another at-bat at the plate. I didn’t know Katie DiSimone (https://www.gofundme.com/f/support-katie-disimone-and-her-family and https://www.tidepool.org/katie-disimone). She recently passed away from stage 4 glioblastoma. Katie, along with many others, was a living force beyond one of the most important Type 1 Diabetes efforts out there: Loop. We’re not using this system any longer but without a doubt, Loop – created by everyday folks outside of the industry! and a system that automated insulin delivery based on blood sugar numbers from a CGM – was a critical step forward in our lives: it enabled us to get better control over my daughter’s diabetes and, while not perfect – far from it – Loop gave us some incredible results (I write about some of this here and here).

    When I did the first install and build of Loop, and got it up and running for my daughter, I posted a picture of my daughter in the Facebook group for the community.

    Katie was kind enough to comment on this post.

    Facebook itself didn’t do justice to the emotions coursing through me as I posted that back in 2019. And these words today don’t do justice to the gratitude that I have for the community of people that is the Type 1 Diabetes family.

    I didn’t know Katie DiSimone but I am grateful to her. I wish that she had another 525,600 five minute cycles of waiting for blood sugar numbers to pop up from her own daughter’s CGM.

    I hope the same for myself.

  • My Aha! Moments When Using Local

    I’m a sucker for local development environments. Sure, the cloud is awesome. But for me, part time hacker and developer-wanna-be, playing around in a place where the only damage I can do is to my own self, I’m always drawn to getting code running locally.

    And now getting more immersed in the world of WordPress, as VP of Product for WP Engine‘s Builder Experience products, I get the pleasure of working closely with the team that builds out the best local development tool for WordPress: Local.

    I think the product is awesome. And so do many others. Most of those folks are much more knowledgeable in the world of WordPress than I. So take their word for it!

    But while the user experience is incredible, making it so easy to spin up and develop WordPress sites, there are some aha! moments that I have stumbled across recently that others were not even aware of; and they were long time, active users!

    So instead of letting this blog post sit in my draft queue for much longer. Here are some features of the product that might help you, as much as they have me.

    Organize your favorite sites

    My day job is a Product Manager. I don’t have a steady stream of site building tasks in front of me. Even then, I’ve found a way to populate my Local environment with many sites. But I’m not actively working on all of them. And it does get quite messy, navigation wise. Well, how about some love for this problem?

    Did you know that you could star sites, designating them as your favorites? And then have them presented in a “Starred” sites section? When I first saw this, somewhat randomly, I was blown away. I know the team is hard at work on some improvements in this area but even this simple feature is a huge step up in day-to-day developer productivity.

    Start and stop sites from the sites list view

    Sitting in a sprint review with the team, as they were previewing some incredible new feature – not too far off from release! hint hint…more flexible site organization coming your way! – I had to stop them to clarify that one of the things that I had just seen was part of the new feature.

    “Wait. What just happened? Did you just start a site without opening up the detailed view?”

    “Yes” was the answer.

    Aha!

    Multiple start and stop sites from the sites list view

    In the same sprint review – what a sprint review it was! – the team went further by inadvertently showing off another pre-existing capability: starting and stopping many sites from the list view in the application. Same concept as the one above, but with the ability to multi-select.

    And having spent countless hours of my life, over the years, mucking around with nginx configuration, resolving port conflicts, etc., in order to get multiple sites and applications up and running locally, I greatly appreciate that Local takes care of all of that mess for me!

    There are plenty of other great tips out there. Some of them from me (well, tips; I’ll defer to the reader on how great they are).

    And some from our teams as well, including the recently released capability of drag-and-drop of exports from WP Migrate into Local. You can read more of that here.

    How about you? What are your favorite tips and tricks when using Local?