I was happy to have Raymond Camden, Developer Advocate at Adobe come by for another conversation. Raymond was on Breaking Changes back in the day, and I've been a follower of his work for well over a decade. He provided his obligatory plug for Adobe APIs he is an advocate for, but what is really motivating him was his new work at the intersection of API and AI. I don't have the time and budget to go to deep on AI, so I enjoy learning from someone who is as curious and pragmatic as I am about new technologies, a conversation that left me with some ideas of how I am going to use not just ChatGPT, but also Google Gemini for some of the API profiling work I am doing.
API Evangelist Conversation with Raymond Camden, Developer Advocate at Adobe
Transcript
Hello, Kin Lane here, API Evangelist. It’s time for another one of my API Evangelist conversations where I bring on folks who are doing interesting things with APIs. So let’s not waste any time, let’s dive right in and see who we’ve got here today. Hello, who are you?
Hi, I am Raymond Camden.
Welcome, Ray. What do you do for a living, Ray?
I am a senior developer evangelist for Adobe.
Yes. And we’ve talked before, I had you on Breaking Changes and we talked about a wide variety of things, but I saw you on LinkedIn, as I do, I follow, I’ve followed you, I don’t know about, I would say LinkedIn, I think Twitter too, but for well over 15 years, and you were working on some interesting things. I figured I would check in. What are you working on these days?
Too many different things. So my main like nine-to-five, I was hired by the Acrobat Services team, which is a group of APIs related to document management. And I like to be honest when I talk about it and say it’s not cool, it’s not awesome, but it’s super practical. It’s all kind of stuff like, you know, we’re getting millions of documents in Word, etc., and we want to consolidate on PDF, so we allow you to go from Office to PDF at scale. Again, not fun, like super practical. You need to, you have millions of documents and you want to offer samples online because you sell ebooks, we can do things like splitting PDFs so you can shove out the first 10 pages, whatever. Everything that you could do in Acrobat to kind of slice and dice PDFs and stuff, we have APIs for, and very easy to use, very simple, very practical. There are some kind of cool ones where you could do things like use Word as a kind of a template language and create dynamic PDFs and stuff like that. But that’s like my main thing, the main area where I work as an evangelist.
I also am involved with our Firefly APIs as well. These are the more fun ones, to be honest, where you can do a lot of things with images, so, you know, from basic text to image, to doing things at scale such that I need to create banner ads and advertising in multiple formats, multiple languages, with multiple different styles. Our Firefly or Photoshop APIs or Lightroom APIs, they allow you to automate a lot of that, which I think is really, really neat, and one of the more practical uses for gen AI.
Thirdly, my kind of third area, API-wise anyway, I’ve been doing a lot of gen AI research on the Gemini platform from Google, mainly because they were free. Like honestly, that’s the only reason. I know ChatGPT, they’re number one, but you have to pay 20 bucks, which is, I spend more than that on beer. But I didn’t want to buy it, like I just didn’t want to spend money to honestly evangelize their product for them. And when Google announced their APIs and I could play with it for free, like that was it, I just went crazy into there. I’ll call out Cloudflare also has a good free tier for AI stuff as well.
Wait, what can you do AI-wise with Cloudflare?
I’m not, they have integration with a couple different models, so I last looked at it a year ago, I didn’t realize it was that long. Their serverless, their Workers product just, it’s great in general, again, like a stupid free tier, and they added native support to do AI stuff. And again, like a year ago I did a quick test, sent a prompt, got a response, it just plain worked. And again, very, very generous free tier over there.
Yeah, the interest factor but the cost factor, you keep emphasizing the cost, and that’s, I would say, been the part for me that’s really hard to overcome as a small business owner now, because I’m back, as the last couple months, just doing API Evangelist, so I’ve got to mind my bill, and I just can’t afford, you know, when I fire up a GPU or anything or a new service, I’ve got to be mindful of it and really think through it. So what have you been doing with Gemini that’s cool? Are you using your Adobe APIs in work? What are you building?
Everything. It’s funny, like when I first started, for some reason I really wanted to be practical, which if you’ve been following me for a while, that’s not at all me. If I find some new API, I will build something impractical with it, I’ll have fun, but I kind of figure I blog about it, I show you how easy to use, my use case is stupid but hopefully you, dear reader, can have a practical use case based on what I showed you. And when I was playing with gen AI, this is back early, a lot of the examples were frivolous, it was chatting and people would share fun examples, I would as well, and along with A, not wanting to pay money for it, B, I felt like I should do something practical with it. So my initial experiments were just kind of very basic, here’s some data, can you send me back. And then of course I went silly with it, but I started with basic prompts and just gradually learned a bit more. Especially like, I got into it with Gemini right when their API came out, so as they added more stuff to it, I used that as a, used to learn. So multimodal stuff for example, when they added APIs for that, that’s when I learned multimodal calls in gen AI.
And so being able to use the API versus a UI is kind of where, I mean, you just doing that because that’s what you do for a living, or is there clear advantages, do you think, to using the API over UI?
So I think there’s a couple answers to that. So Gemini has a great UI, they have an AI Studio, and I do a lot of prototyping there, but it’s mostly a sanity check. Like I want to try this particular prompt, so without writing code, even though maybe five, ten minutes, you know, real short, I’ll go to AI Studio, I’ll do the prompt, you know, kind of hardcoded static example, and if I see, okay, I’m getting something logical out of this, this may work, then I look at writing code. One thing you find out with gen AI pretty quickly is that the code is not hard at all. It’s trivial. Like I remember that my first call to Gemini, within like 30 minutes of looking at the doc, the code, less than that, I had it working, I could pass a prompt and get something back. That’s when you learn that the prompt is incredibly important, the code is like just stupid POST-type calls.
I’m showing my age here, I started in, back in the day, with ColdFusion, and one of the things that ColdFusion did was make it really easy to talk to a database, and it was, you know, you set it up, you can write SQL in your code and get stuff back, it was really, really simple. Then you learn writing good SQL, writing performant SQL, having your database set up, that was a, like, years and years of update that you had to learn. So gen AI, the code part for the most part has been next to nothing, thinking about how to craft that has been a lot more work. And that’s, I think, kind of unique in the API space, because typically you don’t think that much about arguments. Like if I’m doing image resizing, like, okay, I care about the size, but for gen AI you spend way more time thinking about your prompt, thinking about the system instructions and all that. I find it to be way, way more important than kind of what I’m used to typically when working with APIs.
Yeah, interesting, because I’m back with you, I’m in the practical use cases, so I’m trying to, I use a little OpenAI and ChatGPT for, I’m doing a lot of profiling of APIs right now. So I go find a new API in any sector, you know, a video API, YouTube, and I want a complete OpenAPI of that API for a variety of purposes, so I’ll have ChatGPT write descriptions and summaries and things. YouTube is a bad example, I would say some of the other APIs don’t put as much work into their documentation, and I want more rich because I’m building a search interface for APIs. And so I can use ChatGPT to do that, but I can’t have it create the overall structure, you know, hey, tell me, create an OpenAPI for this, I can have it create the parts and pieces. And so I’m looking for other ways that I can semantically start crafting out more clever questions I guess, to have it do work for me, whether it’s writing code snippets, whether it’s writing different sets of parameters or descriptions. I’m just trying to think beyond just request and response of an API, like what else can I do, and it sounds like I have to work on the words and the semantics, how I ask for what I need is where it’s going to come from.
Yeah, so Gemini has done some good work in that respect in terms of being able to send JSON Schema, so you can get kind of very precise. Like one of the first things I found out with gen AI, it would just give you a blob of text back, and it was cool text, but if you wanted particular aspects of that, if you wanted to treat it like data and not just like human speaking, initially it was really hard to do that. Like you could ask for JSON and sometimes it would just do random stuff. With Gemini, being able to do JSON Schema, you could say I want an array of objects that has this key and this key, and you fill it in exactly like that. The blog post I did two hours ago shows an example of that, where in the first iteration I was asking for insights and I got a great paragraph of text back, perfect, but then I went, in each insight by itself, and I used a JSON Schema to say you will give me an array of strings, and that gave me exactly that. The next iteration was, I want an array of insights but for each insight I want you to tell me if it’s positive, negative or neutral, and again using JSON Schema I was able to define, like, these are the exact strings that you will use when you return data. So that’s been great for me for those types of demos.
Yeah, interesting. And I think for me, like, I’m trying to harvest these APIs. So I have the holy grail, everyone keeps telling me, like, why are you harvesting API documentation and doing all of this work, why don’t you just have AI do it, you know, that’s the usual response. And I’m like, well, there’s many different types of API docs out there, and ideally they’re created with Swagger or OpenAPI or something like that, but for the most part people have their wiki, their CMS, and it’s structured in very different ways, but there’s a lot of common patterns. So you have a table of parameters that’ll have parameter type and description, and it sounds like I could start moving into that direction as far as giving it like a blob and then saying, hey, give that back to me as a set of OpenAPI parameters, or as JSON Schema or something like that.
Yeah, interesting. So how much time do you, I mean, I’m going back to the practical land, so PDF, that actually sounds very interesting to me in my old age especially. I mean, I was anti-PDF for a lot of years, but now I’m like, oh, I’ve got some info that I just want for a particular audience here, in a portable format. And then the image stuff with Firefly to be able to craft advertising in different iterations and stuff like that. I mean, how much time are you spending between PDF, images and just general AI fun?
It changes every day. So part of the evangelist role is working with engineering, providing feedback, giving advice about how we should release stuff, and I do that for the Acrobat folks, I do that kind of unofficially on the Firefly side as well, and the gen AI stuff is just general research, like it’s obviously becoming very, very important. So I kind of hit separate things each week in terms of what I’m researching. So the blog post from like two hours ago was an example of that, where it was just, I had a web app for a stream I did, just showed, named JavaScript charting, and I’d built some sample, some sample sales data for the chart, and I saw a great blog post by, and give me a second, I want to make sure I say her name correctly, by Elizabeth Siegle, where she actually used Cloudflare’s Worker AI stuff to build a dashboard and added insights via AI into the dashboard. I thought that was an amazing idea, so I took my one simple chart, took that exact same data, and passed it to Gemini and said, you know, give me insights, and so now I have this web page that has a nice chart on top, but if you’re like a CTO and just like, I don’t want to look at a chart, that’s too much work, it has stuff like, you know, doughnut sales are going up, banana sales are going down, apples are going up until the fall, whatever, stuff like that. Again, a big huge thank you to her, because it’s awesome, I think, to kind of mix those different ways of showing data on one web page. And that, I think, that community and remix and reuse is what’s going to, is the important aspect of all this, all of us building on each other’s work.
One last quick question for you. Got an estimate how many blog posts have you written in your career?
I don’t have to estimate, because I built stats.
You actually track this?
Oh my god, yeah. No one else hits it, if you go to blog and do /stats you can see it, 6,556. Yeah, been blogging since 2003.
So nice. Yeah, I remember back in the ColdFusion days, date myself as well. You definitely got me cooking and kind of inspiration for all this, so I appreciate all that storytelling. It pays off exponentially, as it, in that inspiration, like how you decided, her, working back and forth, so good stuff. Well, I appreciate coming by today, Ray, having a conversation with me. If anything interesting pops up that you think is worthy of talking about, please come by again.
Sure, absolutely, thank you for having me.
All righty, I appreciate it. All right, very cool. Always love chatting with Raymond, he’s just that endless curiosity, the house is always an inspiration, and I appreciate everyone joining us today, we’ll see you next time.
