• 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!

  • 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?

  • 29

    For most, the number, twenty-nine, represents a count of something: years, dollars, tweet views, whatever. I too attach a meaning to this number but it is one that I assume is rather unique in this world. Twenty-nine represents the time I almost killed my daughter.

    Only a couple of months removed from her diagnosis with Type 1 Diabetes (T1D), at a young age of three years old, my wife and I were still learning how to manage our daughter’s disease. There were lots of mistakes but nothing seemingly disastrous. That changed one night when I decided to be aggressive in treating a stubbornly increasing high blood sugar level. And I did so at the time when we were flying blind: our daughter’s continuous glucose monitor (CGM) had entered into an error mode and had stopped reporting back her blood sugar levels every five minutes, per normal function. But she was so high though that I believed that all would be OK. And I was so tired that I could not withstand a night of constant alarms about dangerously high blood sugar levels.

    Like most nights, having helped run the day with my wife, getting kids ready for school, meals prepared, showers executed and all of the other things parents do to make it through the day, I was exhausted. Dozing in and out, but with the knowledge that I was without the precious blood sugar data necessary to know what was happening with my daughter, I fought sleep for some time. I lost the battle. Several hours later, I thankfully woke. I checked the phone that would report the blood sugar numbers streaming off the CGM attached to my daughter’s belly. Still no readings. Still the error condition. For some reason, I had the thought to do a manual check. To prick my sleeping daughter’s tiny finger in order to grab a drop of blood to be read by the glucometer. I still remember the hesitation of not proceeding with a finger prick. My bed was too inviting. Sleep still seemed like it could be visited again.

    Doing a finger prick in the darkness of the night, with aging eyes and lights kept off so others can continue sleeping, is indeed a skill. One that I wish I did not have to have. But one that I have perfected nevertheless. That night was not much different: find the glucometer, prepare a test strip, swab a finger with an alcohol pad, and then use the lancing device to prick a small hole in the finger, through which blood could flow on to the test strip. The numbers come back quick enough and that night, much like many others, I waited the five seconds to see what the glucometer had determined was her current blood sugar levels.

    29. 29. 29. The number flashed on to the small screen of the glucometer, the dim light the only illumination in the dark room. It was – and still is – a number worthy of panic. I shouted to my wife, ran downstairs, returning quickly with a box juice, hoping beyond hope that she was still able to take the juice in, that she had not become unconscious and unable to draw the sugar-laden liquid up through the straw and into her mouth and ultimately down the throat and into the stomach. She was able to. And we let the sugar works its magic. We did more finger sticks and her numbers began rising. Disaster averted.

    As I climbed back into bed, enveloped in the blackness of the night, I lay next to my wife. We were both silent. But I was not silent for long.

    Thunderous waves of emotion rolled through me. The crying was as deep and profound as when I was in a similarly darkened room during our first night in the hospital, post diagnosis. Fundamental, relentless emotions took control and I could not stop the convulsions, the sobs and the tears. I tried to speak, to let my wife know that I had checked my daughter’s blood sugar levels mostly on a whim. I tried to tell her that it was luck. But no words could be formed and she held me tight.

    Twenty-nine is just a number. For me though, it is a reminder that, while managing T1D is indeed much easier than ever before, thanks to so many incredible technological innovations, mistakes can happen and those mistakes have life and death consequences.