We are happy to continue bringing the word and experience of the top API experts out there to you. This time, our special guest is Owen Rubel, the creator of API Chaining & IO State, an original Amazon employee, an experienced platform architect, and a ukulele aficionado.
Over the years, you have grown into a remarkable expert with deep experience in IT matters, and a role model for many. Could you imagine you would go that far at the beginning of your career? What were your ambitions then? How did you find yourself into technology?
I was a lucky child in the fact that we had one of the earliest models of home computers giving me early access to basic programming. At our high school in the ’80s, we had a computer lab as well and I was able to learn Pascal and do additional development. Finally, when I went to college, I fell in with a rough crowd of Information Science majors who introduced me to my first UNIX account and the internet. After that, I was hooked.
I started missing all my classes and spending all night in the computer labs connecting with people across the world. We made friends online with a group from Carnegie Mellon who came to visit us in the Midwest. Keep in mind this was before the days of the web, Amazon or anything.
We all saw what the revolution was and we were all enthralled.
I had no plans. I only knew what I saw and the internet was able to connect people around the world instantly and allow a free exchange of information; this was going to change the world!
I started a student group to use it and was nearly kicked out of school for using University resources until I showed the school board how I had a teacher teaching English online via MUD’s, how we had connected with other schools and other countries, how we exchanged info and did searches for information. They were amazed and ended up putting over a million additional dollars into the program.
You can boast about having been a part of different projects such as Yana2 and Grail API Toolkit, and worked for a great deal of companies including Amazon. Are there any funny or special Amazon experience memories to share?
Amazon stories...hmmm. Well, once I was working in electronic ordering when someone from special orders comes by and says they can’t purchase Marvel Comics. They know I am into comics so they ask if I want to deal with the problem.
So I call up Marvel and they say they can’t sell to us and I ask to speak to someone else until I finally get a VP. Apparently he tells me that they recently went bankrupt and under their new terms, they are their own online retailer and no one else can sell their product online.
I explain to him that Amazon is the world’s largest book retailer online and that by limiting his market, he is limiting his sales. We talk for over an hour and he says he will try to get back to me. He calls back the next day and says there is nothing he can do for me.
I get off the phone and tell the buyers that we can’t order from Marvel anymore and to pull all their product. Eventually, The Marvel VP calls back 2 months later. The had gone bankrupt again and want to do business again and is asking if we can put their entire inventory back online.
Could you tell a bit about API Chaining & IO State?
Both of these require the use of the new API pattern; The old API pattern binds communication to business logic but the new API pattern abstracts communication away from business logic. This makes it so communication data and functionality can be shared in distributed architectures… something that the old API pattern cannot do.
Once you have abstracted communications, a whole world of functionality opens up like API monads (AKA API Chaining ™), automated batching/testing, tracing your calls and API metrics reporting/benchmarking.
It also enables you to share the IO state and functionality more easily and synchronize it with all services in your architecture. Without doing this, you create architectural cross cutting concerns when moving ‘edge functionality’ out of your app and to these services to handle early and/or late. Shared IO state enables your architecture to avoid this cross-cutting concern.
Within the range of skills you possess, one can find Groovy. You have also written a couple of pieces dedicated to it. How did you discover this programming language? How would you explain its being cool?
A friend of mine suggested it to me when I was testing out a few new Java platforms for web development. He knew I was looking for something less verbose that did rapid web application development. He described how Groovy and Grails provided convention over configuration on the Spring platform and that I should give it a shot.
After about 2 weeks I was hooked. I realized this was everything that Java was missing for web development. I started the Seattle Grails Users Group, the first API plugins for Grails (api toolkit and webhook plugins) and have spoken at SpringOne on advanced API concepts.
The great thing about Groovy for people first discovering it is that it integrates 100% with Java while allowing your Java code to be less verbose through convenience methods, convention over config (Grails/Springboot) and functional programming.
For myself, I found myself writing far less code and reducing my development time. And so I love it. Others have a hard time converting to a newer paradigm and would prefer more C-like languages. I feel embracing paradigms like convention over config and functional programming is how Java will eventually have to evolve in order to continue to grow.
When did you write your first API? What kind of experience was it? How have your APIs changed over the years?
Oddly enough I started with writing webhooks first and THEN moved into API’s. 🙂
It was exciting because as I was writing the webhook functionality, all documentation was taken offline so I knew that I had to finish this up and do it from memory because this was obviously something important.
The biggest changes in API’s are going to be over the next five years as people begin to embrace devops, distributed architectures, and microservices more. ‘Architecture as Application’ will have the biggest impact on API’s and change the way we develop and how we develop.
Do you think it is possible to write a clean-code API? Would you call such an API perfect?
Absolutely. I build so almost everything can be automated and stateless. This makes it so I can autogenerate tests, controllers, models/domains… nearly every aspect once I have my IO State defined.
My business logic is minimal and requires practically no services now as I have abstracted everything away to a separate library. All I do now is include said library, add a couple controllers and models and then set the IO state and I’m done.
APIs have become a part of virtually every industry including online retail. How would you define their role here? How are APIs yet to change the world?
API’s will eventually not merely be static, they will handle streams and/or batch data. They will be the communication layer that connects everything and the people who understand and build these backends will be building the way we connect the world.
We want to thank Owen Rubel for finding time to share his memories, opinion, and insights with our readers! 🙂