We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

The Headless CMS

00:00

Formale Metadaten

Titel
The Headless CMS
Serientitel
Anzahl der Teile
66
Autor
Lizenz
CC-Namensnennung 3.0 Deutschland:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
Identifikatoren
Herausgeber
Erscheinungsjahr
Sprache
Produktionsjahr2016

Inhaltliche Metadaten

Fachgebiet
Genre
Abstract
It's all the rage. Érico explains how to do it with Plone. In a world where mobile apps, single page applications and API-based companies are the new normal, what a content management solution needs to do to adapt. This talk will present 2 years of real world experience using Plone as the CMS component for companies that require some level of content management but integrated with their core solutions.
8
11
Vorschaubild
30:34
13
50
Vorschaubild
1:21:15
53
57
Canadian Mathematical SocietyFormation <Mathematik>StrömungsrichtungREST <Informatik>Klon <Mathematik>DatenverwaltungInternetworkingRechter WinkelMathematikComputerspielInhalt <Mathematik>GruppenoperationMereologieMomentenproblemVersionsverwaltungBitFigurierte ZahlProzess <Informatik>DistributionenraumCASE <Informatik>MultiplikationsoperatorBesprechung/InterviewComputeranimationVorlesung/Konferenz
Inverser LimesInhalt <Mathematik>MehrrechnersystemTypentheorieDigitalisierungDatenverwaltungVisualisierungFormation <Mathematik>Computeranimation
ServerBildgebendes VerfahrenCanadian Mathematical SocietyRohdatenEDV-BeratungFreewareQuaderComputerspielParametersystemBrowserDifferenteDienst <Informatik>Design by ContractFormation <Mathematik>Inverter <Schaltung>InstantiierungComputeranimation
RechenwerkDienst <Informatik>DebuggingRoutingWeb SiteMereologieQuaderCanadian Mathematical SocietySicherungskopieGamecontrollerMomentenproblemSchreib-Lese-KopfDämpfungVersionsverwaltungNormalvektorApp <Programm>Inhalt <Mathematik>InformationWeb-SeiteTemplateURLPunktFormation <Mathematik>Computeranimation
SoftwareentwicklerMagnettrommelspeicherMultiplikationsoperatorsinc-FunktionClientGraphische BenutzeroberflächeGüte der AnpassungMessage-PassingSoftwareentwicklerZentrische StreckungVersionsverwaltungInjektivitätTypentheorieElektronische PublikationREST <Informatik>PunktFramework <Informatik>MomentenproblemInhalt <Mathematik>BenutzerbeteiligungBeweistheorieFormation <Mathematik>InternetworkingComputeranimation
Graphische BenutzeroberflächeSchreiben <Datenverarbeitung>MomentenproblemComputeranimation
MathematikCachingMereologieHalbleiterspeicherGraphische BenutzeroberflächeTermWeb SiteMultiplikationsoperatorVersionsverwaltungSoftwareentwicklerPhysikalisches SystemGamecontrollerFront-End <Software>SchlüsselverwaltungGatewayIntegralFormation <Mathematik>Computeranimation
Formation <Mathematik>MultiplikationsoperatorVersionsverwaltungHeegaard-ZerlegungCanadian Mathematical SocietyInhalt <Mathematik>Graphische BenutzeroberflächeTelekommunikationSoftwareentwicklerEntscheidungstheorieProgrammierumgebungDatenverwaltungProdukt <Mathematik>BenutzeroberflächeTypentheorieMathematikFront-End <Software>Web SiteEinschließungssatzComputeranimation
Canadian Mathematical SocietyTypentheorieMultiplikationsoperatorFormation <Mathematik>Computeranimation
GammafunktionSingularität <Mathematik>RoboterW3C-StandardMenütechnikDateiformatMetadatenZusammenhängender GraphWeb-SeiteMultiplikationsoperatorInhalt <Mathematik>Mathematische LogikKlasse <Mathematik>OrtsoperatorDifferenteSchlussregelSoftwareentwicklerDatensichtgerätGleitendes MittelTypentheorieBildgebendes VerfahrenEntscheidungstheorieDefaultKonfigurationsraumWeb SiteSerielle SchnittstelleTermKeller <Informatik>Formation <Mathematik>InstantiierungRechter WinkelComputeranimation
Content ManagementOpen SourceCanadian Mathematical SocietyMultiplikationsoperatorTypentheorieDienst <Informatik>Bildgebendes VerfahrenGraphische BenutzeroberflächePerfekte GruppeServerSoftwareentwicklerClientInhalt <Mathematik>Elektronische PublikationMathematikThumbnailFilter <Stochastik>DifferenteRechenschieberEreignishorizontProgrammierumgebungGraphfärbungVersionsverwaltungOrientierung <Mathematik>BitrateZentrische StreckungVirtuelle MaschineREST <Informatik>Web SiteProdukt <Mathematik>TermBrowserAnpassung <Mathematik>Automatische Handlungsplanungp-BlockGebäude <Mathematik>Knoten <Statik>Formation <Mathematik>Interface <Schaltung>Stabilitätstheorie <Logik>URLAdressraumLeistung <Physik>Computeranimation
Rechter WinkelEinsDienst <Informatik>Canadian Mathematical SocietyInterface <Schaltung>REST <Informatik>Offene MengeCodeWeb-SeiteFormale SpracheMomentenproblemBesprechung/Interview
Computeranimation
RechenschieberInformationDateiformatMereologiePrimzahlzwillingeComputeranimationBesprechung/Interview
Transkript: Englisch(automatisch erzeugt)
So, from learning with Rob, sorry, I would love to be with you, but you know, live, last minute. So, let's give my presentation, and it's Headless CMS.
Basically, of course, why am I here? First of all, because I talked once with Tim, and he basically put me on the conference and said, oh, you need to talk about that. But in any case, I'm a former clone consultant, former clone trainer, former clone evangelist,
former clone developer, former clone member, and current clone user. So, basically, I use clone every day on my job. Now, I am one of those mythical figures that never go to conferences. You see, I'm not there.
And I can share a little bit of what happened since the last time I was there with you guys in Bristol, 2013. At the time, I was speaking the case for clone distributions. Basically, I've been playing with that since 2012 and 2013, creating clone in package versions for the Brazilian government especially.
And it seemed like, okay, the wait will for me at the moment. But life changed. There was one thing that didn't change. I was pushing along with everybody else for the idea of REST APIs.
So, since then, first I moved to sunny Berlin. Look, amazing place, sunny. That was like two months ago. Right now, it's dark and gray. It's exactly the place Nico runs away in the winter.
I was the CTO for Rocket Internet in Latin America for a few months there. And while I was there, I created three new companies. So, Lendico. It's a peer-to-peer lending solution.
That's something like Salomeister or 100. Basically, you schedule your haircuts and nails and stuff like that. And the third one was Rydlink. Rydlink is Airbnb for cars. In Rydlink and in Lendico, we use clone as the content management solution.
But now, I am happy with working briefly with amazing people. You see, there's a majority of beautiful people here. I'm part of their affirmative action for all we and all people.
And basically, this is griefing, right? No, you can't, but this is my day job. Because we take care of taking pictures all over the world for some of the most important marketplaces.
And as our fearless leader once said, we are basically a marketplace for visual content solutions, photography, video, digital reality, and so on. Oh, sorry, one last inference. To give you an idea of the scale,
all of this year, we already delivered 200,000 pictures to our customers. So, we are talking about pictures globally, in a large scale, with quality for all types of business goes from portraits like this one, from Android,
to beautiful hotel rooms in Bali, or beautiful places here in Berlin, and food, and so on. During those two years, I had a common challenge. And it was something that, working with content management solutions for so long,
I was not expecting, but the truth is, everything is API-based right now. We are moving to a world that's API-based not because, oh, that's cool and so on, but by the simple fact that you have multiple devices in the front-end world,
so the user can be assessing your solution with a computer, with an app, with a browser in a mobile device, or as this nice doodle shows with some beautiful reality glasses.
The truth is, life is getting more interesting, but for those who play with the last mile, with the delivery of content, those devices are like a living hell, because you have different fonts, different platforms, and so on.
For us, most of us in here are mostly back-end, except for Lauren. Actually, I want a free consultancy on React at some point. But the API is just like a contract you have with those devices, right?
You will have a bunch of other services or microservices, as you want, running behind the API, and honestly, CMS is one of them. It's one of the boxes we need to manage to maintain every day, and even though it's important, especially for customer acquisition and so on,
we're talking about one. For instance, here at Riffy, the image server is way more important. The image server is the one that goes and gets raw image files converted to some nice JPEG,
so that Q18 can go there and evaluate the quality of the feature, and so on, generate different size and parameters and so on and so forth. Payment, quite important in any marketplace like Homony. This is the kind of challenge you have. CMS is just another small box inside your API world.
Of course, people come with crazy ideas. One of them is like, oh, CMS is a small box, and I'm already writing code. Why not write CMS into our backup solution,
and for those of you trying to poke your eyes out, this is PHP, my friends. Actually, that was the moment I decided to work with LoL again, because, okay, I had this project, and someone started writing a CMS component, and oh, let's start with a controller and then a service and then a manager,
because it's just matching small boxes. You know, I have those blocks, and I build a page on the front end and so on and so forth. In the end, you start like that. That's a terrible solution. Everyone in this conference already tried to play, oh, let me think about creating my own solution.
Another bad idea, oh, was instead of having a Homony solution for everything, we decided, okay, this part of our site basically runs on WordPress, and everything else, all the other routes and URLs run on something else,
and all of a sudden, if you had one delivery problem, now you have two, because, oh, someone needs to create templates for WordPress. Oh, but also the information needs to be available on your app, and on your app needs to be also responsive and so on and so forth.
So, honestly, I had to deal with that a few times, and it always started, no, it's simple, and at some point you find out it's like a living hell. Is there another way? So, breaking something from scratch is a terrible idea. If you're putting some CMS already, CMS solution, that is a bad idea.
What can you do? Actually, there are some other ways of doing that. One of them is this company called PhraseMe.io, right? They are San Francisco is like Paris-based, and they've been doing that for quite a while already.
I think they were founded in 2012. It's basically a head lesson, a CMS, you go to their site, register, create your application, create the content to the web, and so on and so forth. And the interesting part is I learned about this company two days ago
when I was preparing this part of the presentation, because I was, okay, everybody knows about this other company, Contentful. These guys are probably the leader of this market in the long run. They are a burning-based company.
They have been doing that since 2012 as well. They have some really big customers and a great technical team. I have some friends there. They have one of the best tech evangelists I've known. And also, they have an amazing, incredible, fantastic marketing budget.
I've dreamed years on their tech already two or three times. But what's important, they raised already $16 million, and their solution works. Of course, when you're talking with their DevOps, their season means, you feel the pain of hope.
How are they to create a solution, a normal solution like that? But in the end, it works. They are happy. They are making money. I would say they are profitable, but let's be honest, I have no idea. Nobody does in this world. So, in common, I'm going to basically say the tech version of what they have in common is
everything is through the web. Everything is really user-friendly. Everything does not require a really skilled developer to go there and create the data entry to publish the content.
And, you know, in the common world, we have a happy world. We have no dexterity. We have given Jay that's not there today, but given Jay yelling all of the time, like, we need to do it in the lab, we need to... That's the point. This is the kind of solution people pay being able to run their business on.
Also, they have really good documentation. Okay, considering what they're playing there is a moving target because every customer is going to come out with a business solution,
they are doing really well. And Caseman, this is the type of stuff that you do for the client community, and this guy will do on a larger scale. And then they have something that we are starting to get there. I'd like to thank Eric for the effort on that long client.
Even though I've been trying to compile and build on my machines since forever, every time Angular comes up with a different game, we're like, oh, this is missing, that's missing. And by the way, Eric, the time I sent you the message was about that. I was trying to, oh, let me see if it's possible to build this.
Even more, I found out all the way, and that's it. But in any case, Contactful, they have SDKs for Ruby, PHP, Android, iOS, and they have an unofficial one for Python, they have for Java, and so on and so forth.
This is the kind of stuff that, if you have an API, you create a very good solution for users to start developing that, and I'm using Chrome for that. First of all, some reasons are really good.
The first one is avoiding more custom PHP development, especially when to create anything using a decent web framework in PHP. You need to touch a dozen files. Honestly, I miss the CML. I miss everything from going when I was like,
okay, now I need to register a manager and do the pencil injection here and there, and so on and so forth. It was the same. Also, batteries included. The one thing you learn over the years with content management? Oh, it's an easy solution. It's quite simple.
For the first few days, then, what happens? Oh, now I need something better. Now I need this kind of idea of, if I do something, I want to treat that. If I do this other thing, I want to basically talk to Prehendo.io and, hey, evaluate the version I have in there.
Also, the truth is, I'm quite still productive with Chrome. I was able to come up with the proof of concept for writing code and for writing in less than two hours without Chrome REST API at the moment. So I was like, it can be done, right?
But there's a really important reason, and the reason is, yeah, I did not look for any hosted solution at the moment. I was like, oh, fuck, we need to solve that problem, and let me do it. In the end, it's great.
It's amazing to purchase my text sign, but it doesn't hold up in the long run, especially because I was the only one knowledgeable enough to maintain the Chrome solution. So let me call, there's no one there anymore.
The solution is just hanging on for writing. Something happened, and we are changing that for another solution. Because, oh, I don't know how to fetch this long thing. It's magical and so on. Actually, it's not, but you know how things are. But I still love Chrome.
You see, I even put some hearts inside the Chrome logo because I love Chrome. Chrome saves the day, every day. So I have some good reasons. One of them is, I really like the idea of having one API endpoint. Actually, one API gateway that connects everything I have
in terms of microservices. That gives us a lot of control over performance issues, a lot of control in terms of memory and caching of everything, because we use Angular, Angular 2. So when someone publishes something, changes the content,
I go to Pregender.io and say, oh, hello Pregender, come and get a new fresh version. Go to Cloudflare, come and get an existing version. This is integrated with everything else you do. So it saves a lot of time.
And integration is the key for front-end development. I really do not want to have someone that specializes in developing the site and someone that specializes in developing everything else with Chrome. We are a startup in the long run. Being able to have one developer that goes to different parts of the system
goes a long way. And now I have four Chrome developers in the team. Come on. How many companies have four Chrome developers? I know some companies that have two or three. So I know it's not a good solution,
but at least I'm not the only one. If I'm sick, somebody can go there and fix everything. We have the guy with the glasses in the corner is JS. JS is a really, really amazing developer.
I need to give a talk in Brasília. He was the specialist at Simplis for like three or four years in working content. He was the person that understood how Transmodifier works. We have the guy with the reddish sandwich shirt that stood out.
Some of you met him in Harman. He hasn't been in Chrome, I believe, as long as I do or even longer. And the other guy with the birdie phone, he's in Ganttanella. He's our front-end helper, but he's experienced with irony and also Chrome.
We worked in the original Brasília website. So now we have people that can basically go there and change stuff and question every decision we do. And we have some results.
Early on, you saw Kat saying hello in here, and she's the one taking care of all communications for our company, and she's the one that basically deals with Chrome every day. She goes there, creates publish content. From time to time, she comes with a really hard problem that takes usually three minutes
and travel to the user interface of dexterity content types to solve. So she was amazing on the day. Like, oh, I used to do that, and you can go into the web. And we have Yael, our product manager.
She was freaking out. Oh, we need a new site, we need a new site, we need a new site. And then in a couple of days, like two days, we had the CMS put the content, the site will be there. We launched the site on time. Considering at that moment, we had one front-end developer, and that person was, you know, yours truly.
So I had to learn TypeScript in a few days. It was really interesting. And I learned to create the whole JavaScript environment. Okay, I developed everything with RC2 of Angular.
Okay, there's a new version. Let me upgrade, bad idea. I'll hold this, it goes to this, and so on and so forth. You know that? I've been following some of you, complaining about that. I think it was the other day complaining about Webpack. Thank you. You saved me a lot of time. I avoided that.
And that's how painful it is. I keep looking at you guys and saying, okay, if someone goes there and is not happy, I'm not going there as well. And I have a new, it's our UX expert, and that was this phrase when we saw the CMS for the first time.
He was like, oh, that's so much better than WordPress. Did you develop this by yourself? Yes, of course, I'm amazing. I made a solution like that in two days. No, no, no. And he was impressed. And also there's Alina, our designer, and I asked for a phrase and she was like, come on, I use only once.
Why are you asking me? Yeah, because, you know, I needed four, so that's it. Under the hood, we have some content types. All of them, everything is dexterity. We created some custom content types.
We have an image gallery. We have a team browser, so if you go to briefly.co, you're going to see this content stack. And of course, I could have used a folder and so on, but in terms of serialization, it was easier to customize if we had a small content type
than trying to come up with crazy ideas on the serialization for the usual types. And we have this one-size-fits-all solution called composite page. Basically, it's a container for rolls of blood. So a thing about content panels,
a collective cover, and all the other solutions in the mosaic, without caring about the legal display and positioning of everything. It's like, give me a list of elements, and each one of them will be typed,
and on the front end, the magic will happen, right? For instance, we have a Jumotron wall, and now I need to align everything to the left. We put a CSS class on the CMS, and it basically does the trick. Also, we created some behaviors.
One is for canonical URL, because we have some crazy logics. Everything we serve, we serve under API, API not rich, but from the side, it needs to be different. And also, we need to, from time to time,
create different rules for different components and so on. A lot, we have solutions for basically generating a lot of social metadata in a format that the content developer will be happy. And now we have one to control the menu and site configuration.
We were really considering using the default one alone, but we went. Honestly, we took some bad decisions in the content side, so it's kind of not doable. The building blocks of this are from REST API.
The first two sites I developed in this concept, they were basically adapters and browser views, but now I'm using REST API because it's amazing. Yeah, I'm saying that. We are using long app multilingual, and also amazing, even though our voyage site is not live yet,
it's going to be there in terms of landing content. It saves a lot of time. We have a policy package in there, because even though we are able to do anything to the web, one thing I like to control is a version of everything,
being able to quickly create a new site on my machine and play with it, so nothing fancy, some upgrades and so on. We use FlashArm. This pull everything around. Yeah, I imagine. Thank you, sir. This is not a product placement.
It's not paid, but come on. If you want to send me some stickers, I'm happy. No problem with that. One thing I would do a lightning talk, if I was there, it's about the way we deploy stuff. We are basically using a browser for everything. We have Kubernetes, a cluster with Kubernetes,
and we have this whole base. I highly recommend using that if you need to keep with deploy stuff, if you need to have different environments and scale things as fast as you can. It's like a time saver. Of course, we use Tambour.
Who heard of Tambour before? Anyone? Okay. Basically, Tambour, it's an image server. It's built over a tornado. It was created by this Brazilian company called bobo.com.
Basically, it's written in Python. Most of the guys that created the solution, they came to their first PyCon Brazil conference because we basically paid for them and so on and so forth. This solution is amazing. I believe for three or four years,
it has been my dream to make it work with GNOME because it solves the problem of automatically dropping an image in different styles and so on without cutting somebody's head or eventually applying some filters. In our company, Atgorefi, it's what we need to do all the time.
For the interface, for quality assurance, I need to generate a thumbnail that's going to be 150x150, but I need to keep the orientation and the exact rate of the image, a ratio of the image.
So, oh, fill the image with that color when it's a different ratio than 150x150. Go there and apply filter like applied grayscale. We have one customer that requires us to deliver to them two versions of the image. One is the original file
and one is, okay, I need a picture that's maximum four megabytes. So, we have a filter set up in Tumblr and we basically say, hello, Tumblr, give me that. Original and four megabytes and it's quite, quite easy.
Okay, I'm getting there. Just under the slides now. We do that using event subscribers. I was planning to basically override the long file,
image file, name of the file, and so on. It was too hard. It was too easy. I needed to get it done. So, every time there's a change on an object, I go there. Oh, is there an image field? Yes. Put on Amazon S3. Give me the address. Put on a notation.
What's the path to the image on Tumblr? And that's it. So, we generate different sizes for every image, not on Tumblr, but on Tumblr. Would save a lot of time if I basically save the file itself, the original file there, instead of saving on the 0 image.
Some lessons for Quora. First of all, documentation, documentation, documentation. Really, everything I did was possible because of documentation. It's getting really easy to find the right solution for everything.
Honestly, I'm getting really easy. I'm using Google more than anything else because instead of remembering what I did last time, I basically go there, check, and oh, okay, here's the solution. Also, more documentation, more documentation, more documentation.
And in here, I'd like to share something. We need to have more initiatives like Chrome Client because if we do that, we break the aversions of developers have to use Chrome. Imagine we have a package and the guys from Prismic,
they have this package to integrate with Django. Okay, I love Django. Django is cool. It's amazing. It's so 2006. Perfect. Here it is. Here's the package you use. You connect Django to the CMS and so on. And the third one is the most important.
We need a real, decent commercial offering of host of Bloom, a endless host of Bloom, because nowadays, I don't keep a CI server. I use Travis and I pay for it. I use Slack and I pay for it. I use Amazon, pay for it, Chira, MailChimp, Google, Asana, GitHub.
Every time someone does something that saves me time, I'm not going to waste time trying to create it myself. I would basically go there, pay for someone to keep that working for me, and basically focus on my daily business.
To give an idea, there's a company here in Berlin that offers the same type of service that we use. These guys are making a lot of money because, oh, you want your image to be web, anywhere available, you want them to be on a CDN,
we deliver that to you and so on. I think a company that does that, it's going to be awesome. The truth is, my plan is in one year to basically stop with the CMS deployment in here and move to our hostage,
because we have bigger fish to catch every day. And, hello, questions? And let me put my face back. So, open for questions.
Technical ones, non-technical ones, the quality of the beer is amazing, it's cheap as well.
Okay, you said that you're using Konreta, which is awesome. I was just wondering if there are any missing pieces that you would need for Konreta API. Honestly, when I started with main code and writing,
REST API was nowhere close to what I needed right now. It's solving more problems than the ones I could take off. Actually, I keep thinking like the services that are being provided on the REST API,
they show that, okay, I solved a lot of problems in the wrong way, so I need to go back and refactor my solution. One thing I'm still doing, and it's an interesting problem to solve, is I mark all the requests with a marker interface
to make sure that, okay, if someone requests that page, I keep the same address, as always, but if someone asks for this page using a certain header, I basically serve it with the REST API.
Otherwise, I go back to the normal way. But REST API, I'm happy, really. And thank you, it saved a lot of time, and it was quite a pleasant surprise when I had two days' great CMS in here in Brazil.
Next question. So, I need one more second because, come on, more slides.
And I'd like to basically say thank you for Alina Miller, that's her Instagram account. Follow her, all the doodles you saw in here, she prepared to me in the last few days, the whole look and feel for the company,
the corporate events, she was the one coming up with it. So, she's really amazing, and I suggest you guys follow her. It's going to be interesting, especially because she doesn't know I'm saying that. She's going to freak out tomorrow, and always I basically post what was her reaction.
And, of course, thank you. And there's a slide here, you know that slide? Okay, you've seen that before. But thank you, my contact information is in here. And I'd like to say that if any of you come to this part of the world, I would be happy to have drinks with you.
If you need a place to stay, like Nico, come as well. And I hope to see you in Sorento, probably.