#145 – Calvin Alkan on Enhancing WordPress Productivity With CommandUI

Transcript

[00:00:00] Nathan Wrigley: Welcome to the Jukebox podcast from WP Tavern. My name is Nathan Wrigley.

Jukebox is a podcast which is dedicated to all things WordPress. The people, the events, the plugins, the blocks, the themes, and in this case, enhancing WordPress productivity with a new WordPress plugin.

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast, player of choice. Or by going to wptavern.com/feed/podcast. And you can copy that URL into most podcast players.

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you, and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox, and use the form there.

So on the podcast today, we have Calvin Alkan.

Calvin has been in the WordPress space for the past four or five years, with a focus on security research. His company’s security product, called Fortress, has become a widely used tool for many hosting companies.

Recently, Calvin and his team ventured into developing a new product CommandUI, and it’s this plugin which is the topic on the discussion today.

Calvin shares his journey, starting from his experiences redesigning the Fortress website, and his frustrations with the traditional WordPress workflows. This led him to create CommandUI, aimed at providing a more efficient, keyboard driven workflow, akin to features available in his IDE, PhpStorm.

Over the past two months, Calvin has been working on the plugin, and receiving positive feedback from the developer community, indicating a strong demand for such a tool.

We talk about CommandUI’s functionalities, including its ability to help quickly navigate around the WordPress admin UI. It executes WordPress tasks using keyboard shortcuts, and Calvin explains how the tool helps manage your website efficiently, and how it supports dynamic integration with menus and can enhance accessibility.

We also touch on the product’s reception into the market, and the serendipitous strategies that drove its vitality. Calvin talks about his efforts to ensure the tool resonates with power users, and the potential for future collaborations with plugin developers to expand its core offering.

We explore why CommandUI, despite its success, may not be a fit for WordPress Core, but remains a novel solution for users looking to save time moving around the WordPress backend.

If you’re curious about how a new tool changes the way you work with WordPress, and how a new product can become popular quickly, this episode is for you.

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you’ll find all the other episodes as well.

And so without further delay, I bring you Calvin Alkan.

I am joined on the podcast by Calvin Alkan. How are you doing, Calvin?

[00:03:34] Calvin Alkan: Hi Nathan, I’m doing fine. How are you?

[00:03:35] Nathan Wrigley: Yeah, good, really good. This is unexpected. This episode probably would not have occurred just, I’m going to say, one month ago. Rewind the clock 30 days, and this episode probably would not have occurred. And you’ll find out why in a little while.

But before we do that, Calvin has been on podcasts with me in the past talking about WordPress in terms of security. This is going to be very much focused on a brand new product, and the journey, and the happenstance, and serendipity of releasing that product into the wild over the last few weeks.

But before we begin that Calvin, can I just give you a minute just to give us your bio, probably focusing on the WordPress space, maybe dropping some security bits and pieces in there as well. So just tell us who you are.

[00:04:20] Calvin Alkan: Sure. I am probably in the WordPress space since four or five years ago, I don’t know exactly. But until very recently, or maybe like two months ago, I was mainly in the security space. I did a lot of security research. Our main product of my company, Snicco is Fortress, which is like a very advanced security tool that we mostly sell to WordPress hosting companies.

That has mostly been my focus so far in WordPress, very focused on security. And we kind of stumbled into like a new product two months ago, which is CommandUI, which we’ll hopefully discuss in more depth right now.

[00:04:53] Nathan Wrigley: Yeah, indeed we will. And it may be a good idea if you are listening to this podcast, to give yourself a bit of a flavor of what the product is. Head to commandui.com. Exactly as you might expect.

Anything that we discuss today, if there’s a link for it, I will track it down and put it into the show notes. So you can find that on wptavern.com. Search for this episode, and all of the links will be in there. So that should be easy for you to get to.

So this is a new product, brand new. It’s familiar, I would imagine, to most people, in the sense that they’ve probably used something like this before. That might be in their OS, or something. Do you want to just quickly tell us what it is, and then we’ll get into the fun story surrounding it.

[00:05:35] Calvin Alkan: The really quick explanation is if you ever used something like Spotlight on Mac, or Raycast, even like commercial products for Mac. I think even Windows has something right now with this Windows search bar key, I don’t know, I’m not like a Windows power user.

We’ve built the same thing, but specifically for WordPress. So it runs in your WordPress site, and basically allows you to build and manage your WordPress sites. The speed that was never possible before.

[00:06:00] Nathan Wrigley: So when you say that, I’m imagining that a lot of people will be thinking, okay, there’s an interface, and I need to click around with a mouse. But maybe that’s what we should draw the distinction on straightaway. This is minimal mouse, I think you could describe as.

[00:06:13] Calvin Alkan: Ideally you can unplug the mouse completely. That would be like the goal, because it’s just way faster. Like working with just the keyword is a lot faster than using the mouse.

[00:06:22] Nathan Wrigley: So it invokes what you might describe as a modal front and center. So it’s a plugin, we should say that to begin with. It’s a plugin that you install in different WordPress websites. And then what do you do? How, do you invoke it? How do you interact with it? Let’s begin there.

[00:06:37] Calvin Alkan: You have two options. You can either press the shift key twice, consecutively, with like a little, half a second time in between, or you can use the very classic command, or control K, combination that is used by other tools to invoke like similar models, or like command bars. So it’s one key combination. You can customise it if you want, but the default is, on Mac OS it’s command K, and on Windows it’s control K.

[00:07:03] Nathan Wrigley: Okay. And if you do that, you then invoke, like I said, a modal, front and center in the middle. And it’s basically a text search box. And you can begin typing, and then the more input that you put in, it’s like faceted search in a way, it will then give you options for what you could do.

So I don’t know, you might type in the letters p and o, which might map to, for example, post, things like that. And then it will give you the different options that it ships with at the moment. I imagine that functionality over time will increase.

Let’s go into the kind of things that you can do with it. So would you be able to just outline a few typical things that you can do with it, that everybody will understand. Then maybe we could get into some of the more unusual edge cases. But let’s start with the really basics that it can do.

[00:07:48] Calvin Alkan: Let’s start with the really basic of, you set up a new WordPress site, and you create like a post, and you view that post in the front end. And then you realise that you didn’t set up your pretty permalinks. So it’s still like p= whatever the number is, right, you know what I mean?

So normally in WordPress, you would then need to go to like the little icon in the top left, and go to the admin dashboard. From there you need to find the, I don’t even know the exact name, but settings, I think permalinks, and then you need to change it. And all of that takes you like four clicks I think, more or less.

And each of those clicks requires a full round trip to the server. So you need to wait to get a response back, and the server needs to render your WordPress page. So it probably takes you like, whatever, five seconds, let’s say, depending on your server speed.

With CommandUI, you would just open it and type perm, for permalinks, and then it would instantly bring you up the result for settings permalinks, and then you hit enter, and you immediately jump to that page. So you just skip through all of the intermediary work to get to exactly what you want without taking all of these like unnecessary detours, if that makes sense. That would be like a very, very basic example.

[00:08:52] Nathan Wrigley: Okay, so you have got all of the default settings in there. So if I install a vanilla version of WordPress, you’ve mapped, I’m going to say, every single setting that you could possibly get to.

[00:09:03] Calvin Alkan: The default core ones, yeah.

[00:09:04] Nathan Wrigley: Yeah. right, okay. And although it might seem trivial, you know, if you’re listening to this podcast and you’ve just got one WordPress website, you may be thinking to yourself, well, it’s not that difficult, is it? I can click four times and it’s not much of a burden.

But honestly, when you’ve done that 15 times in a day. Map that over a week, and a year, this genuinely starts to add up. You only get a real understanding for it once you’ve done it. The sudden realisation that, okay, if I type three letters and hit return, that saves me from clicking this, waiting. Clicking this one now, and waiting. And then finally interacting. I know it seems like not a lot, but it is fairly profound.

[00:09:39] Calvin Alkan: It looks nice on demos, but it’s amazing when you like kind of experience it the first time. It’s like something that looks great, but you need to really try. And most people, if you use it for like five minutes, then you can immediately see it, there’s no way that I’ll ever be able to go back to not using a tool like this.

[00:09:55] Nathan Wrigley: Yeah, it’s kind of interesting because my muscle memory at the moment, navigating around a WordPress website is very much bound to the mouse. If I’m in a post, for example, and I know that I want to go to that permalink setting, I actually know exactly where it is. So I know that I would do precisely what you said.

But of course, for a bunch of people who are not really that familiar with WordPress, they may have seen a YouTube video and discovered, okay, I need to change the permalinks. Discovering where that is could be quite infuriating. So if you could just type in p e r, or whatever it might be, and you get there immediately, that kind of also helps the novice journey, if you like, inside of WordPress and managing all of that as well.

[00:10:31] Calvin Alkan: And also, for example, one that might also resonate is if you have a site and you start to rack up the plugin numbers, like 20 plugins or, I don’t know. Let’s say 20 plugins, and each of those plugins adds like three menu items to the admin menu, and the icons look all familiar. It’s not uncommon to open it, and then you go like up and down looking for what it is that you’re trying to find. And it takes a lot of time.

Basically the more plugins you add, the more valuable something like this becomes. Because, let’s say you want to find some WooCommerce subsetting. You don’t need to scan the sidebar for the exact WooCommerce icon that you need to just go into the command bar type Woo settings, or even shorter, Woo S, and then it’ll immediately find where you want to go to. Basically the nastier the site, the more valuable something like this becomes.

[00:11:16] Nathan Wrigley: Oh, interesting. Okay, so that’s curious. So let’s say that I have 20 plugins installed, and each of them got menus, within menus, within menus. Dozens and dozens of options. How does your plugin know of their existence, and how is it, I don’t know, understanding that this plugin over here has this selection of settings. And obviously if that plugin gets an update and a new setting arrives, perhaps, how does it know all of that? Basically, what’s the underlying technology? How are you building this menu that must be in there in the background?

[00:11:45] Calvin Alkan: So 99% of the product of CommandUI is like JavaScript that runs in your browser that has really nothing to do with WordPress, for it WordPress is just like a data source. And then you have like a tiny part that is like the PHP, the plugin part if you want. And that basically just informs the JavaScript of what kind of data is available.

So when you load a page in WordPress, then the PHP part can see which admin menus are registered in like the WordPress menu bar, in the sidebar. It kind of reads those, and passes that information down to the JavaScript part, which then transforms that into the UI.

So if you install a new plugin, it’ll immediately pull that in. You don’t need to need update anything, configure anything, it’s just all automatic.

If you deactivate one, it will not show it anymore, or even if you use like, there’s like popular menu editor plugins and whatever. If you use one of those to rename a plugin, then it will show that with the renamed name, for example.

So it’s all dynamic. It gathers all the data, basically, the plugin, and then passes the data down to the JavaScript libraries that we built, and that is responsible for presenting the data to you.

[00:12:53] Nathan Wrigley: So it’s not like I install a new plugin, and then I need to go around examining the settings, and CommandUI has to learn it as I’m seeing it.

[00:13:02] Calvin Alkan: It’s immediately available. And also in the front end. You can also do all of these actions from anywhere on your site. So on the front end, or even if you’re in a page builder, or inside Gutenberg, it always knows what you have available.

[00:13:13] Nathan Wrigley: Okay, so let me just parse that so I’m sure that we’ve got it correct. So the first thing is, if I was to install CommandUI on an existing site, which has, let’s say, oh gosh, let’s go nuts, 50 plugins. The settings within those plugins would be available immediately. I wouldn’t have to wait for anything to be crawled.

[00:13:30] Calvin Alkan: So navigation is really just one part of what it does. But everything you see in the sidebar, so like the top level menu items, the little sub settings, these are all immediately available. And then it also picks up on any, for example, custom post types that a plugin might create. So you can create post types from within it, you can search across post types. So it’s all dynamic. There isn’t even like a configuration page for CommandUI. And that’s like kind of how I want to be, like just install it, and then it just kind of works, right?

[00:13:57] Nathan Wrigley: Yeah, I think we’ve grasped that. And we’ll get onto those other use cases in a moment. But also you mentioned page builders. But the example that you gave was in the WP admin area, so you want to change a setting, for example. Are you saying that this can be invoked wherever you may be in your WordPress website? So you could be editing a post, you could be in a page builder. Elementor, Beaver Builder, what have you. You can do the same command K, it will come right up no matter where you are.

[00:14:22] Calvin Alkan: Correct. You could, for example, let’s say you are editing a page with Gutenberg, and then you realise that you missed your favorite block plugin that adds like custom blocks, or collections. You could install a plugin from the repository without ever leaving the Gutenberg editor. And then you would see these blocks available because you can also activate the plugin from within the post that you’re currently editing.

And Gutenberg is dynamic. So I think Gutenberg fetches new blocks dynamically once they’re available, and then you could immediately use them without first leaving, going back, then going back into Gutenberg. So it’s like everywhere, and like I said, it saves a huge amount of time.

[00:15:00] Nathan Wrigley: Fascinating. Okay, so we understand that it’s everywhere. We understand that it can get into settings, and you mentioned that you could modify the settings.

Let’s talk about some of the other slightly less normal use cases. So as an example, if I wanted to, I don’t know, create a new post of a custom post type of my design. It would allow me to do that I’m guessing as well? There’s a keyboard shortcut for add, I don’t know, custom post, or add taxonomy, or whatever it may be.

[00:15:26] Calvin Alkan: You can actually press the C key, the letter C, anywhere on your site, and then it will bring up a subsection of CommandUI where you can just choose the post type that you want to create. So let’s say if you type C, it opens up the model, and then you just type P for post, or P O to narrow it down if you have a lot. And then you hit enter, and then it immediately brings you to the page where you can create a new post type.

And that not only works for the core post types, it also works dynamically for every single plugin that you install. So if you install ACF, for example, then you can press the C key, type ACF, and then you immediately get the option to create either ACF field group, or an ACF taxonomy, or you can even create ACF post type with it.

You can’t do it inside the model because every post type, if it’s a custom plugin, might require different fields that we might not know about, but we immediately send you to the page where you can start creating the post type.

[00:16:22] Nathan Wrigley: Is it possible to, with CommandUI, is it possible to open up things in a different tab or window? So as an example, I’m in the middle of a post, I’m in the flow, but I know that I need to modify some setting briefly, quickly over in a new thing. And typically I’d have to, I don’t know, right click, open new tab, navigate blah, blah, blah. So it can do all of that?

[00:16:39] Calvin Alkan: By default, if you select an action with enter, then it opens it in the same window. If you select it with command, or control on Windows, and enter, then it opens the same action in a new tab. That is very useful. Like a lot of people have given me the feedback of like, this basically allows them to use their laptop without having 20 different chrome tabs open, because you don’t need to like save all those spots where you might want to go to later. You can just open it in a new tab, do your work, close the tab, and you’re back to where you were.

[00:17:08] Nathan Wrigley: Yeah, I mean, that’s a very typical frustration for me, is that I will halfway through something, and I don’t want to close it in case I, I don’t know, just forget where I was or something. I want to be able to open immediately the setting.

[00:17:20] Calvin Alkan: But why don’t you want to close it?

[00:17:22] Nathan Wrigley: I don’t know.

[00:17:23] Calvin Alkan: Probably because you know it would take you like a lot of time to get back to that page. That’s why you don’t want to close it.

[00:17:28] Nathan Wrigley: It’s lots of little quality of life things basically it sort of sounds like.

Okay, so we know it can do settings. We know it can interact with posts. We know that you can open things in new tabs so that you don’t have to navigate from what you’re doing.

Does it do anything kind of quirky? I’m going to use the word quirky there. Does it do things that one might not expect? Have you built into it functionality that you thought, ooh, this is curious, maybe nobody will use this, but let’s see.

[00:17:52] Calvin Alkan: Probably. You can do a lot of little things that don’t really matter in the grand scheme of things. For example, toggle the admin sidebar or, I don’t know, if you’re on the dashboard page, you can toggle, or collapse all of these widgets on the dashboard in WP admin. Or use it to log out of your site.

So there’s a lot of these little things in there that, on its own, they wouldn’t blow you away, right? But it kind of all adds up. And if you can do, eventually, everything in there, I want to have as much in there as possible.

And an important part that allows it to do this is because we built the entire search behind it from scratch. So we’ve tested this with like 100k items to be searched in the command bar. It doesn’t even break a sweat. It’s still in the sub 100 milliseconds for hundred thousands of items.

So there’s really no limit to how many things and actions you can put in there. And it doesn’t overwhelm you either because you only get shown what kind of matches your search query. I want to have as much things possible in there.

[00:18:47] Nathan Wrigley: So are you imagining a scenario where it can search, for example, the content of posts? So for example, I want to track down a post with the word Calvin in it.

[00:18:56] Calvin Alkan: Right now it can already search all your users and every single post type. So posts, pages, every custom post type you create. For example, WooCommerce products, there’s a post type, so it can search those. But it only searches right now the titles. So you kind of need to at least roughly have an idea of where you want to go, that’s the search. That’s basically how it operates.

You roughly need to have an idea what you’re looking for. Maybe a couple of letters, or an initial if you want to find the user Nathan, but you don’t know the last name maybe, or the email, you could just type N A and you’d probably find it. But it’s not really like the best UI for like exploratory searches. That’s not the best model with the search bar, and result is not the best use case for exploring what’s there if you don’t really know what you’re looking for yet.

[00:19:38] Nathan Wrigley: Yeah. What I was describing is more the kind of search that you would have on the front end, isn’t it? Where you want to, I don’t know, search for a particular episode of a podcast, for example, with the word Calvin. And you would typically do that on the front end, and that’s an entirely different enterprise.

As we’ve been talking, it suddenly occurred to me that, and I don’t know what your posture is on this, I don’t know how much work you’ve put into it, but it feels like you’ve thrown the doors open to perhaps a more accessible website because obviously we’re using the keyboard suddenly to navigate all the things. And I don’t know if the UI that you’ve built, you’ve had that in mind in the background, or coincidentally it happens to satisfy that. What’s gone on from the accessibility side to make this product usable?

[00:20:18] Calvin Alkan: A lot of work into accessibility. I’ve worked with Gen Herres, I don’t know if you’re familiar with her. She does lot of work in the accessibility space in WordPress. The website I think is Easy Accessibility Guide. I’ve worked a lot with her because she told me like about the potential this has for users with assistive technology. And we’ve worked really, really hard to improve the admin experience for users with assistive technology.

Building something like this, like that is so interactive in a way that doesn’t compromise power users, and users with assistive technology is really, really difficult. It’s not like a form where you go with the basics and then you’re good. Like this really, really needs a lot of custom work. But it turned out amazing. Every single item, every single search result is read out by the screen reader. Every single announcement, for example, if you install a plugin, then the screen reader will read out the progress information, like installing plugin, installed plugin.

Everything is keyboard accessible. Everything has the proper aria labels. We did a lot of work there basically. Even things where if you close the model, it restores the focus back to where you’ve been to before on the page. I really think it has a lot of potential in the accessibility space to help people use WordPress.

[00:21:26] Nathan Wrigley: Yeah, it just occurred to me that it was, in a sense, it was a really great interface for doing just that, because once you’re in the modal, you’re in the search bar, then you are basically using text. And if you can navigate through that with the tab key, or whatever it may be, with all the different assistive technologies out there, then that would be really useful. And it would circumvent that long journey of trying to find the menu, then finding the sub menu, then going through all the options, and toggling it on, or toggling it off.

[00:21:50] Calvin Alkan: I think Gen did a video the other day about it, where she goes through the plugin with a screen reader and basically shows you how a user with a screen reader would experience that. So maybe you can link to it in a show notes later.

[00:22:01] Nathan Wrigley: Yeah, that’s perfect. I will make sure that that goes into the show notes so that people can examine that.

The other thing I was going to ask is, do you have intuitions that in the future you’ll be working with other developers? So for example, I don’t know, you mentioned popular plugins, a couple that you just mentioned. Is there any scope for them speaking to you to expose things that your plugin at the moment might not be able to get its teeth into, so that you can open up the functionality with CommandUI for the whole host of plugins that are out there in the wild?

[00:22:31] Calvin Alkan: Definitely, one of the big projects will be having a proper extension system and developer APIs, so that either we can build first party extensions that we maintain, or that developers build their own extensions for it. For example, right now I like Bricks Builder a lot. And I use that. So we have a really good integration with Bricks Builder where, for example, if you are on the homepage, and then CommandUI recognises that you built this page with Bricks, then you can just press the B key, on the keyboard without even opening it, and it immediately brings you to edit that page in Bricks Builder.

So that is something that obviously doesn’t work out of the box. So there’s like a little integration for handling Bricks specific things. You can also, if you search for a post, or let’s say a page, you wouldn’t edit posts with the page builder. But let’s say you have a landing page, or whatever, and then you search for it, and then instead of just a normal view page and edit page, it would also show you edit page in Bricks as an option, right? I think there’s a huge potential in having as many things as possible in there.

One big thing is I want to also make it as easy as possible for also developers that maintain a site, but also plugin developers to integrate it without complicated setups, without needing to install like React and pre-compiling their JavaScript. I think it needs to be really, really simple for it to work. And that will definitely be one big project in the future.

[00:23:47] Nathan Wrigley: Fascinating what the future will hold. I mean that speaks to the next topic that I want to get into. Which is the fact that this is still really, really new. Really, this whole story has found its way into my consciousness because of, I guess maybe being on social networks. Up it popped a few weeks ago, maybe less, 10 days or something like that. And it feels like I had never heard of this until then, and then suddenly I couldn’t stop hearing about it. Let’s just get into that for a moment. First of all, why did you build this, and when did you start building it?

[00:24:21] Calvin Alkan: So let me walk you through the timeline. I don’t remember the exact date, but I’d say like maybe two months ago I started working on the redesign of our website for Fortress, or other product, because that has still like a design from like two years ago that was never updated. You know how that goes, right?

So I started working on it and we were using WordPress for it as well, and I really, really disliked the experience of working all day in WordPress. So my role is primarily a developer. I use WordPress, but I’m not like a WordPress power user in the sense that I spend all my day inside WordPress. I spend most of my time in my IDE and PhpStorm.

And there I’m really, really spoiled by this keyboard driven workflow where you can do like thousands of things inside PhpStorm with just a couple keyboard combinations. And I really missed that in WordPress.

So once I started building a site, I was getting really annoyed and I was like, I don’t know, I can quickly hack together something that works for me right now. And it took me like a couple hours to build something that allowed me to navigate between different pages. That was all I could do, navigate between the admin, homepage, and the settings. The really basic stuff. Nothing to really brag about.

But then I recorded like a really crappy YouTube video, I think it’s still up somewhere, of just me showing that. And I posted it in groups where I frequently go to, in Facebook it was. People went absolutely crazy over it. The reaction was insane. People almost, how do you say, they bit my hand off to build this.

The initial reaction definitely showed that there might be something there. Sometimes that just happens, right? And that also then the timing was the same, where all the WP drama started. And once that started, I basically knew that, okay, like my primary customer base is hosting companies, and there’s probably not a lot of enterprise sales going on in the next months in the hosting space. I immediately knew that. Understandable.

But I knew that and then I was like, well, let me just try and build this thing properly, not the four hour versions, but like maybe the six week version. So the initial reaction was like very promising. And then I kept posting like videos about it, cool new things. And the reaction was always the same. People were messaging me in private, hey, I know this is not even like a finish, but can I please already pay you so that you can give me this, what you already have?

It was like very promising all along the way, very good signals. And that’s why I ultimately ended up building it. So it took like maybe two months, right now seven weeks, two months, I don’t know, to get where we’re at right now. And it completely blew my mind, the feedback and the attention that it got. I never really expected that, to be honest. I don’t know, maybe this helps a couple of people, and it’s useful for me, and maybe it pays for a couple months of rent, that was kind like my expectation of it.

[00:26:53] Nathan Wrigley: Well, I think most people who launch a product in the WordPress space, and if, dear listener, you are one of those people, I’m sure you can identify with the struggle. It’s not an easy place to be. There are countless different versions of more or less everything. So if you’re releasing a plugin, unless you come up with something truly different, then it’s likely that you are going to spend a lot of time bashing your head against the wall with the marketing, figuring out what the website’s going to look like.

You have just had, I don’t want to call it luck, but if you forgive me for using that word, you’ve just had this perfect storm of building something, creating a video, putting it into some social networks, getting really amazing feedback which encouraged you to build it. And again, not really marketing in the traditional sense of the word, just social media, hanging out in groups and what have you, and explaining what you’re doing. And I think it’s fair to say that it’s been a barnstormer.

Since you’ve started two months ago, we don’t need to get into the numbers, that’s not important, but is it fair to say that it has gone way beyond, in terms of the people that have interacted with you, and purchased it, and played with it, and given you feedback. I’m guessing it’s fair to say that it’s gone way beyond what you imagined.

[00:28:00] Calvin Alkan: For sure. The way I launched it basically was, so once the product was ready, or maybe a week or two before it was fully ready, I threw up a landing page, and recorded like a proper demo walkthrough, my first ever edited video. It turned out okay. It turned out good with Descript, and a lot of these tools make it, I guess a videographer would cringe at that, but it’s like passable, it did its job.

I threw up a wait list and had a little gamified approach to this waitlist thing, where I didn’t even like promise some crazy deal, or discount, or whatever. I just said, look, there will be a launch offer that will be better than the public offer, and it will be limited in quantity, not a gimmick or whatever, like when the quantity is sold out, it’s sold out.

And then I think that the verbiage was something like, if you’re on the wait list, you’ll get 48 hours exclusive access before public launch to secure wait list deals. And if you’re in the first 50 spots, I think it was, then you get an additional 48 hours.

I don’t know, it’s fun but I never expected it to go that crazy, like people were sharing it all over the place, and then once the first 50 people got access, a day before the entire wait list, they started using the product, loved it, posted about it.

It was well done, I put a lot of thought into it, but it’s also, something about the timing must have been right with maybe like all the negativity that was happening in WordPress, Twitter and Facebook groups, and whatever. No, definitely there’s some part to it where people like were excited to see something positive, or some positive news coming out I think.

[00:29:30] Nathan Wrigley: Yeah, I think also you happen to have a product which, if you frequent those Facebook groups, which I know you do, they’re full of people who are jobbing WordPressers. They’re either building websites, or they’re building plugins, or they’re building client websites as part of an agency or something like that.

So they’re fully into WordPress, but they also realise the limitations. And in some cases they may have not have realised the frustration, but then when they saw something like this and thought, actually, you know what, that’ll save me a minute here, and a minute there, which all adds up to greater productivity.

I think you just had that perfect storm of the right product, and you were already connecting to the perfect audience. And honestly, if we were to revisit this topic in a year and do some sort of marketing analysis, I think every domino was kind of set up perfectly. And again, I don’t mean this to sound bad, but kind of by accident in a sense. You’d already found your audience because you were in there talking to these communities. You built the product, which perfectly aligned, to scratch your own itch. What a lovely story, basically.

[00:30:36] Calvin Alkan: I think maybe I stumbled upon the idea based on luck maybe, yeah, to some degree. I certainly didn’t expect that so many people will find it useful, or be interested in it. I do actually plan to, like once it all settles down a bit, do some sort of post mortem write up, or analysis of, this is how I launched it. This is why I did it this way, and why I didn’t do this, the decision making behind it. I also had a lot of trust, let’s say, not advisors, but like friends in the ecosystem that gave me a lot of feedback or, no, don’t do it this way, rather try this. And so I think like a proper writeup of that be cool to see, the behind the scenes.

[00:31:10] Nathan Wrigley: Yeah, it would be interesting to match the people that you were already speaking to, prior to even conceiving the product, with the product that you then built, and the way that you were able to market it in a kind of gorilla fashion. Just producing some videos, and not, I don’t know, building an email list over many years and what have you.

And I think it will be interesting because I think we all know that the WordPress space can be saturated. And just because you build it doesn’t mean that they will come. There’s so many serendipitous bits in there. It’s fabulous.

One thing that I was going to ask you, and I don’t know if you have any intuitions about this, is that one of the comments that I kept seeing was something along the lines of, why isn’t this in Core WordPress? There were variants of that. You use it for a bit and you can’t not carry on using it. It’s got that stickiness to it. You get the muscle memory over a few short minutes and then suddenly it’s, oh, put the mouse away, I don’t want that anymore.

And I did wonder if you have any thoughts about letting something like this go into Core, or working with Core on it, or whether or not you’re going to stay with the product that you’ve got. Not sure what you think about that.

[00:32:11] Calvin Alkan: Well, it is kind of in Core, a lot of people don’t know that. In Gutenberg, in the block editor, and inside the site editor there is, I wouldn’t say similar, but they have a Command Palette, but it just, it never really stuck for people, getting into the habit of using it.

Let’s say like this, a command bar is, I don’t know, maybe the best analogy is a keyboard. All keyboards, more or less, they look the same if you just glance at them from a distance. But once you start pressing like the first key, you really feel like the difference between like a $500 mechanical keyboard and a default keyboard, right? It’s hard to describe, but that’s like the best analogy I can give for it.

And if a command bar is not like really, a really, really polished product, technically zero friction, people don’t get into the habit of using it. And I think that’s maybe why previous attempts of building something like this in WordPress didn’t really stick around, or didn’t take off. It’s just my theory.

[00:33:00] Nathan Wrigley: Wasn’t it also limited just to the Gutenberg UI?

[00:33:03] Calvin Alkan: That’s also a big part of it. If you can just use it inside the block editor, then it obviously won’t stick around. It’s like the default workflow for people. But also, of course, WordPress Core is just one tiny part of it, and there’s probably not resources to dedicate a full command bar team to it basically.

In my opinion, maybe this shouldn’t be a Core thing to its fullest degree. There’s always the saying of 80 20 rule that they have, right? I don’t think 80% of WordPress users will use this. In the same way that not 80% of MacOS users use Spotlight or Raycast. There’s probably a big segment of users that will use it, but it’s nowhere near 80, probably not even near 50% of people that will use it. So I think the resources could be spent other ways. I don’t know, it’s just my theory.

[00:33:43] Nathan Wrigley: That seems like a sensible way of doing it. I think the promise of WordPress is to be, if 80% of the people use it, then it can be considered. And I think you’re right. I think for people who are really in WordPress all the time, like you, like me, like the people that you’ve pitched the product to and who have bought it, then that makes perfect sense. But perhaps for the more casual user who’s just got a brochure site that they don’t really modify all that much, then maybe not.

[00:34:05] Calvin Alkan: It’s also, I very much built this for the power user audience. And if you built with that in mind, the outcome is very different to if built like a, you can also build like a command bar that is more geared towards, let’s say beginners that need maybe more exploratory features. So if you open it, it’s more like, hey, you can do this, and from here you can go there. And ours is very much, you type a couple letters in some random order, and it more or less brings you to already where you know you want to go. So it’s I guess built for a different segment also.

[00:34:36] Nathan Wrigley: Yeah, definitely worth checking out. So I think probably we’ve reached the number of minutes, which would be suitable for this episode. So we’ll knock it on the head there. But just before we go, one last mention of the URL, it’s commandui.com, no hyphens, just all as one word, commandui.com. Go and check it out.

Where can we find you if we want to communicate about this? Obviously the website probably, but are there other places where you hang out? Sounds like you do hang out on socials quite a bit.

[00:35:02] Calvin Alkan: Yeah, I’m in like all the popular WordPress Facebook Groups, mostly agency groups I think. And also since half a year, a year or so, very active on X, I think my handle is @CalvinAlkan. So if you want to hit me up, just hit me up there.

[00:35:17] Nathan Wrigley: Okay, so that’s perfect. I will link to that in the show notes. Well, well done for, firstly, bringing a product to market in a record amount of time, but also for the barnstorming success that you’ve had. I hope that it carries on in that same way, and maybe, you never know, in a year or two, we’ll come back and see where you’re at. But Calvin Alkan, thank you so much for chatting to me today.

[00:35:35] Calvin Alkan: Thank you Nathan, thanks for having me.

On the podcast today we have Calvin Alkan.

Calvin has been in the WordPress space for the past four to five years, with a focus on security research. His company’s security product, called Fortress, has become a widely used tool for many hosting companies. Recently, Calvin and his team ventured into developing a new product, CommandUI, and it’s this plugin which is the topic under discussion today.

Calvin shares his journey, starting from his experiences redesigning the Fortress website, and his frustrations with the traditional WordPress workflows. This led him to create CommandUI, aimed at providing a more efficient, keyboard-driven workflow, akin to features available in his IDE, PhpStorm. Over the past two months, Calvin has been working on the plugin and received positive feedback from the developer community, indicating a strong demand for such a tool.

We talk about CommandUI’s functionalities, including its ability to help quickly navigate around the WordPress admin UI. It executes WordPress tasks using keyboard shortcuts, and Calvin explains how the tool helps manage your website efficiently, and how it supports dynamic integration with menus, and can enhance accessibility.

We also touch on the product’s reception into the market, and the serendipitous strategies that drove its virality. Calvin talks about his efforts to ensure the tool resonates with power users, and the potential for future collaborations with plugin developers to expand its core offering.

We explore why CommandUI, despite its success, may not be a fit for WordPress Core, but remains a novel solution for users looking to save time moving around the WordPress backend.

If you’re curious about how a new tool changes the way that you work with WordPress, and how a new product can become popular quickly, this episode is for you.

Useful links

Snicco

Fortress

CommandUI

Raycast

EasyA11yGuide website

A11Y battle: CommandUI vs WP Core vs Turbo Admin – video with Gen Herres on YouTube

Bricks Builder

PhpStorm

Descript

WordPress Command Palette

Calvin on X / Twitter