 All right, good morning everybody first. Thank you for hanging out and coming to this session as you can see It is called a case for building web applications with WordPress And I'm going to completely dive into this more in just a moment But first I always like to start off with an introduction the least one of the The least of the least of reasons is that why would you want to come to a talk? To listen to someone who isn't invested interested or has experience with the topic but I've been building web applications on WordPress for a few years now and It is something that I see you know with WordPress being 15 years old older than that The next iteration the next level of development that we're going to be able to see on WordPress I believe is going to be Building software on top of it and when I refer to on top of it versus beside it versus other other ways of Centering WordPress as the centerpiece We're going to dive into that But before we get started. I want to tell each of you a little bit about myself But professionally personally things like that. So first off professionally. I am a senior back-end developer for web dev studios I also moonlight or freelance or whatever you want to call it as For pressware LLC, which is my own business where I build custom applications and plugins for small businesses and individuals for eight years I ran pressware and then this year I started at web dev studios so it was it's been a really really interesting experience really great experience and With press where I wouldn't focus primarily on small businesses and individuals like a like them with web dev I am working at the enterprise level with WordPress Now I also blog regularly Used to it was daily Then it moved to occasionally during throughout the week. So I try to blog about three times a week also This year started doing a little bit of podcasting It is focused It's more of an extension of my blog where people can submit questions anonymously or not and then I will Answer them and then I also fulfill also provide some other information Around the questions and I try to keep it short like 20 minutes because so many podcasts like right now podcasting I know is all the rage, but and that's I think that it that's a good thing But with podcasting 20 minutes sometimes you're just gonna be running to the store You're gonna be out for a walk You don't need a 60 minute podcast, but maybe 20 minutes now The too long didn't read of how I got the TLDR of how I got into WordPress back in 2005 I started blogging when I was in school here in Atlanta at Georgia Tech. I was running I don't even remember which version of WordPress that it was. I know Kubrick was the default theme I think it was the default theme for several iterations of WordPress and Then as I got into the After college and started working in the software development field I was blogging about my experiences sharing what I was learning things like that. That's something that I still do to this day But when it comes to WordPress development, I was getting my first time ever actually modifying anything related to WordPress core was messing around with a template file changing some PHP within one of the files fast-forward a decade and The the amount of work I was doing on WordPress was Had just ballooned I had gone from .net and Ruby on rails then from Ruby on wet rails and to WordPress and then exclusively into WordPress and then lastly I have been speaking at word camps and Various meet-ups word camps across the country for a few years. I took last year off of all speaking but yeah, I've spoke I've spoken to a number of different word camps and Different meet-ups now one thing if you happen to hear me speak before you know that one of the things I like to do during my talks is to make it more conversational Like I like to have people ask questions in the middle of the presentations and things like that But this one's gonna be a little bit different. I'd like to get through all of the information And then have time ample time at the end for questions comments, etc So if you have a question and there is gonna be a good bit of information at the tail And if you have a question jot it down happy to answer it But I want to make sure I get through everything before stopping in and answering questions and things like that Personally, I married in my high school sweetheart. We celebrated our 11 years of marriage last month We have three kids two of which are Well one is seven one is five and one is she'll be born in September So we're really looking forward to that. I have two dogs that we've had since we were married for three months There are Siblings are awesome, and then we have two cats which that was not my choice. I was outvoted by the women in my house So in the dogs they deal with them and you know, they're good cats, but I'm not I tell people I'm not a cat person. I am I am That these cats person, but that's it As far as interest I am into music in fact for a while thought I was gonna do music as a career Then you realize man, that's that's a hard career and and probably not gonna make a stable living doing that And if you want to get married to your high school sweetheart, that's also probably not a field in which you should go in So anyway, I didn't do music, but I still I have played guitar since I was in seventh grade dabbled with various instruments things like that I also very much into fitness And by fitness I am not someone that you're likely to see at a gym lifting weights or or Anything like that, but I love running high-intensity interval workouts things like that parkour. I'm kidding I don't jump off buildings. I and then like the rest of you. I enjoy reading I like movies if I had to pick a genre Horror science fiction fantasy. I can't pick one genre But there you go and and more I don't know. I don't know what other things constitute interests, but That's me and a nutshell so about this talk Unlike many of the talks that I've given before no code is going to be shown during this talk. It's all going to be Discussed at a high level and We are going to be talking about software development So if you have experience with any kind of development be it software be it web development being writing any kind of code that's helpful but not necessary and Then as I mentioned earlier, please hold the questions and comments till the end unless it's like an absolute emergency and then I'll answer you Okay, so building web applications with WordPress What does that statement mean and the idea is that I want us as WordPress developers and those involved in the WordPress economy To start thinking about using WordPress as a foundation for WordPress or for web applications But I'm very particular about the word foundation So before I explain why I want to make sure that I'm clear as to why this is a case Because sometimes when I talk to people about this, they're like so you should completely Just forget about Leraville or Rails or dot net and just exclusively use WordPress and that is not what I'm saying at all I am saying that when it comes to building web applications Don't dismiss what you already have or what you're already familiar with Because some of the things that can be built with Leraville and with Ruby on Rails and with other symphony with other frameworks Can be done with WordPress. There are differences and we'll get into that. However, I Think it's important to when you sit down for a project or you have an idea Don't just throw everything away say Can I do this with WordPress? And that's one of the things I want to make an argument for today Secondly as developers, it's incredibly easy to get distracted with new utilities frameworks libraries technologies Whatever it is that comes out but one of the things that I've learned in over a decade of doing this is that sometimes the new shiny thing today is going to be just completely scrapped in six months and so people like Look at for example jQuery. How many of you in here familiar with jQuery? You don't even have to use okay, awesome, so I Am a fan of a lot of the new Constructs that are coming in new versions of the latest version of JavaScript But that doesn't mean I completely dismissed jQuery jQuery is a decade old It has been hammered on it is used on a wide variety of sites applications Etc. If there is going to be a bug found in jQuery It's going to be a pretty weird bug because so many developers have used it that the chance that this bug Has not been solved is either You're actually doing something wrong or that the bug is not a bug at all It's something that or yeah, it's something you're doing something wrong or if it is a bug then You can report it and it'll be fixed but the longer software exists the more hammered people are on it Or the more they hammer on it Then the more Tried and true and stable it becomes And the same thing can be said of wordpress so with that why not look at wordpress? And that is the whole idea behind a case for using wordpress for web application development It's not the case for using it. It's a case for using it. So first like I said, it is a foundation It's not a framework now And here's why I am very particular about this phrase Frameworks out of the box don't offer any functionality You don't sit down and install Laravel on your machine and Say, okay. I'm ready to go. I have a user authentication system set up I can fire it up in the browser and get ready to run I don't have session management You may have all of the libraries and the functionality that's needed But you don't have a fully functional application You have the scaffolding that you need the same can be set up with ruby on rails You have um all of the to use uh yesterday Carl Alexander had a really good talk about object-oriented programming in wordpress and he talked about how He drew an analogy with lego's in the lego group and lego blocks and things like that Well frameworks provide the blocks whereas you're the lego group And the thing with wordpress is out of the box you have a fully fledged application You don't have to write any code you install it And then you can start using it to write a blog You can start using it to build a website You can start using it to do any number of things but The thing about wordpress is that it offers apis that allow us to extend the application And when you think of well when I think of extension I think of like a parent child relationship where I'm going to extend wordpress down here to do other things But that's not necessarily the case and I'm going to be talking about that a little bit more But this is why wordpress is a foundation It's a piece of software that already works out of the box frameworks don't do that You have to assemble things in order for it to have functionality But before we dive in a little bit to that I want to do an entire history of web development I'm kidding. I want to do an abbreviated history of it. So websites and web apps What are the difference? If you get on the web And you browse a number of different or you just start browsing around you're going to end up on landing pages You're going to end up on what we often call brochure sites You're going to end up on real estate site You will end up on something like facebook or twitter or social networks and things like that But there's a difference between say a landing page And twitter A landing page is a website Twitter is a web application I'm going to talk about the differentiation between the two But what we've done is we've taken the the colloquial term of website and mixed it with the technical term of web app So everything is a website. Hey go to the go. Have you been to this new website the facebook? Have you been to you know back when it was called? Oh 2003. Have you been to go to the go to go to the go to twitter's website? well Technically twitter is a web app, but nobody walks around saying um You mean web app. It's not a website. Nobody does that you just say website and then you go and you go to the website So we've mixed those but for the purposes of this talk. I want to separate the two We're gonna there's there's websites and there's web apps So first what are sites? A website in as far as i'm concerned is the presentation of information It is described with markup that being html or it might even just be styled with markup if it's a really boring website It may also be styled with custom style sheets or css And I don't even want to talk about the direction that css has gone with less and sass and things like that That's that's attentional to this but it's markup It is data described with markup and it's also you may see some behavior on the page managed with javascript And i'll give an example of this a little bit later in the talk, but it's completely static So if we were to distill this down into a single statement A website is the presentation of fixed information and if you Are used to like highly technical terms with respect to software development all of you in this room are smart people so You could also say it's presentation of static information Now this content this this there's a there's a second question Involved in this and that is what is a web application or what is a web app? This is where you have A something that runs in your browser it responds to user input it It processes user input perhaps it deals with session information as a person's moving throughout the site and viewing the different screens of your application or viewing Parts of a screen of an application. You have to deal with security That's something that facebook doesn't do very well Um, I don't know. I'm waiting to get facebook, but anyway. Yeah, you have to deal with security You have to deal with valid data validation. You have to deal with cross site scripting There are so many different things that you have to take into account when dealing with Data on a website or in a web application That it is so much deeper than the presentation of fixed information But if that's what a website is a presentation of fixed information, how can we distill a web application? How about it's a solution that we apply to a problem you know application derivative of apply and That is exactly what or exactly how I want to position a web app in this for the rest of this talk So how can we easily define the difference? Anything that presents data and that's all that it does is a website Anything that transmits information saves it and retrieves it is an application Yes, you could make a little bit of nuanced arguments in each of these, but that's the general case Anything that presents data is a site Anything that transmits information saves it and retrieves it as an application and data encapsulates a lot of information So let's talk about architecture How a web application is built on wordpress So when it comes to building applications We often when it comes to building web applications with frameworks we think of scaffolding much like we do with with buildings That's you know where the idea comes from. It's just more conceptual or digital versus analog But before we talk about software architecture or web application architecture I want to talk again about sites And here is how normally the architecture of a site works something like this At a high level or at a basic level You have a site that's made up of multiple pages the pages are made up of data The data is described by markup and then the pages are linked together through anchors or You know your a tags in your in your in your markup. That's how sites put together Now applications first part they're written in more than than html and or css and or javascript They deal with they some sites can be built with functional programming. There's procedural programming There's object in here object oriented programming the latter two Are the ones that you are most likely to see in wordpress. In fact, I would say that most of Those most of us who are involved in wordpress are most likely to see a procedural programming in wordpress I'm a fan of object oriented programming and uh, I this is something that I write a lot about It's not easy in wordpress, but um, or it's not as easy as it is another in other frameworks, but A digress So the latter two are the most common in wordpress and just keep that in the back of your mind as we're talking about this Again, there's no code in this presentation. There's nothing to to jot down no semicolons or braces or or parentheses But furthermore applications can be divided even uh, even more. There's the front end And that is in general what the user sees. There's the back end. That's where the data is stored There is an application layer that sits in between the front end and the back end And that's where data when a user sends information to from the front end to the back end something in the middle has to handle That information now how it handles it It's not i'm not going to talk about that right now, but then it also has to retrieve information Let's say a user requests information In a web application you want to go get on a site and see someone's profile information You're going to have to you're you're going to send a request to the server. Hey, tell me about this person So it goes out grabs the information sends it back to you And presents it to you application layer is responsible for doing that So the architecture between applications and sites are significantly different But it always helps in my opinion to have practical or tangible examples And another way of thinking about this or another way that I was trying to describe this or come up with a short way to describe It is you know, it's easy to talk about this. But what if I was to demonstrate it? so one of the things When I was doing some research preparing for this talk The thing about web applications is that the idea of application sounds really big And I know that almost sounds counter-intuitive because we're so used to apps On our phones these days apps are It's an icon that you press and then stuff comes up and once the stuff comes up You're in the app and you kind of stop thinking about all of the things that make it up because you're immersed in what the Application is doing the problem that it's solving or how it's helping you do whatever it is you need to do but a application Seems to carry the implication That it's a huge piece of software. That's not always the case though But when I was reading about, you know, how people define described and talk about applications on the web I kept coming across the idea that it was this like this large Thing and that's not always the case. You can have really simple small applications So also keep that in mind. You can build very small very focused web applications Like I said, it's it's not always the case and then over the next the remainder of this talk I'm going to give an example as to how this is true So first I want to talk about In the context of wordpress A simple plug-in and how it's not necessarily an application even though it solves a problem But then I want to talk about The idea of a Larger plug-in and then I want to talk about a distributed plug-in. Now. I also have a A bullet point up here of an extension of a plug-in And this is something where if you're familiar with software like easy digital downloads Or are you familiar with that or gravity forms or any of those types of plugins? You can purchase extensions or add-ons It's like plugins for plugins basically, but um, I'm not going to be talking about that But that is another example of a piece of software. You have software interfacing with another piece of software That's interfacing with wordpress which in and of itself is software But plugins so first practical examples of plugins the first one very simple and Normally I wouldn't do this because it sounds self promotional, but the the plug-in that I'm going to show it's one of mine But it's completely free Not a lot of people use it and it's so simple that I don't mind sharing it because I have nothing to gain from doing this except for helping to make this point Or to help make this case So I have a small plugin called easier x serves and the idea behind that I wrote it back This was before Gutenberg was out. Um, the plugin is Gutenberg compatible. However For those of you who write a blog, are you familiar with the excerpt field that's below the editor? Awesome. Okay, so easier excerpts Is depending on your theme or depending how you have your site set up when someone is subscribed to your site they will see the excerpts show up in their rss feed or in Whatever way they consume your information And the thing about the excerpt field is if you want to have a longer excerpt and I consider this to be a long excerpt The excerpt field is great for two lines But if you want to have like a paragraph or two, it's not so great So you have to do a lot of scrolling and when I say a lot, it's obviously related to the size of the excerpt field So what easier excerpt field is does is this it responds to user input You paste data in it dynamically changes the text field size or the text area size You remove text and it knocks the excerpt field back and you don't have to do anything But the idea is that hey, I can see my entire excerpt Or I see however much is off put in that's it. But that's a small plugin. There's no transmission of information It doesn't save data to the it in it itself does not save data to the wordpress database It doesn't retrieve information. It just responds to user input And it does so via javascript. So that's a plugin. That's not necessarily an application But I would like to talk about a larger plugin Excuse me, okay The four things about what I'm going to break down. So I can't Go because of the nature of the project. I can't give specific Vendor names, however, that will not stop me from Breaking it down and explaining how it's all put together So this plugin First it has to it had to communicate with a third party api It had to then read all of the data that was provided by the api and parse it And by parsing I just mean you'd have to read it ahead to make sure it was well formatted anything that was not well formatted It would discard that was one of the requirements. I don't necessarily advocate discarding information that can't be processed Maybe you should let your api provider know that something's going wrong third it would create custom post types taxonomies And templates and by templates I legitimately mean wordpress templates that it would present the information that it would be pulling from the api But there was also another component that was batch processing and I'll I'll get into that That terminology in just a moment But this is what a larger plugin can do and this in and of itself It's built on top of wordpress, but it's doing a lot of work. That's not related to it. It's communicating with a third party api it's reading information it's parsing information and Then the for these for the especially the third point It is connected to wordpress, but if you were to pull that part out You're still doing application based functionality So first this largest this larger plugin The api client had to have an api key, which if you've ever interfaced with another third party api Maybe something like stripe you have to have a consumer key and a consumer secret or something like that You would need to be able to interface or connect to that api and you would have to do so by having a key or Password or whatever term they provided or they provided to you to connect to the api Then they give you a list of all the different things you can do you can request information from it, etc And sometimes you can even write information to it In this case, I'm simply pulling information. So then in wordpress I would have in the plugin a class responsible for Going out and then wrapping all of the api methods that you could then invoke within wordpress. Hey, I want to pull this information I want to pull that information I want to pull this information I want to pull that information and then save it to the database And that's where the reading of the data comes in now This is where I've numbered these and I've tried to do them in the most logical sense possible I might hop around a little bit. So this you know, bear with me if you have questions. I'm happy to answer them at the end Once you've read a significant amount of data from a third party data source You have to do something with it, but you're faced with a problem on your web server It will time out if you run a process for too long And you may have run into this with another plugin. You may have run into this in your own code I don't know and to make that even more challenging different servers have different thresholds Sometimes they time out after 60 seconds. Sometimes it's 120 seconds. Sometimes it's five minutes It can be really hard. So what you want to do is have a reasonable time And even if possible, you want to be able to control the full environment in which it's running that way, you know Hey, I have two minutes to run this process That's where batch processing comes in. So let's imagine you have in the in a database or maybe um If if you don't think in terms of databases think of like a spreadsheet You just have all this all these lines and all these lines of data have to be processed And in each line there's more data that has to be inserted moved around in the WordPress database Let's say that you have thousands of lines Well, the thing about that is you can't process all of that information without the server timing out So you have to batch the work or in a more uh Less formal less turn you have to chunk the work. So you take 10 records at a time and you say, okay For the next 120 seconds, I'm going to grab 10 records process them Send them into the wordpress database and then move on to the next one But then you that raises another question How do I know Once I'm done with one job to start the next job or once I'm done with one chunk How do I start the next chunk? And that is where A job scheduler comes into place So you have to have another piece of software another piece of the software that's responsible of knowing where you are in the batch processor Or where you are in the batch processing So the job says, okay, I'm grabbing 10 and now I am working Don't bother me. I will notify you when I am done It processes the information it completes it it checks to make sure that everything is done And then it will send a notification And that's where I put notification system down here at the bottom because there's It's used in a variety of different ways. I'm going to talk a little bit more about it in a moment. However Whenever you are someone who's administering a site or or running a piece of software You've got to know that you have to provide some type of feedback to the user regardless of if they are a Administrator or just a basic end user of your software So when a job is done You have to notify and say, okay, I'm ready to start with the next Job I'm ready to process the next set of records or hey, I'm completely done processing it There's nothing to do or maybe even you have to go out to the server and say is there new data that I need to get Via the api or not and then you have to raise notification about it Now how you implement the notification, you know in wordpress We think about the the bars that show up at that the admin notices that show up at the top of the dashboard I'm not saying that's how you have to do it. Um, I'm not It could be something in a log file, you know, if you're the main person working on this just pay attention to the logs Maybe you can do enough. Maybe you can do a progress bar, you know, if it's not that much information It's not too hard to take the total number divided by Where you are and then show a progress bar But on top of that you have to have something that's polling to say, hey, where are we in the process? How many records have we processed and wordpress has the heartbeat api and you can read about it in the codex Or in the developer resources or you can write your own polling mechanism But it will check to see hey, where am I Do I need to send a notification if yes do so otherwise keep going And then you just repeat this process until the job is done And then you have this notification system as I mentioned and it can be it can do a number of things the notification system is Here in this context is very general It can say hey, I'm starting the next job. I'm starting the third out of 150 jobs You can say hey, I'm completely done. You can say hey, I have uh more I've recognized that there's something on the third party api. I've made a request. There's information. We don't have let's go grab it There's information on our server that we have that's out of date We need to update it the notification system can be as advanced or as simplistic as you need to solve the problem And then finally there's the import process and this is the wordpress specific component that I was talking about earlier And that's this is where you have to decide once I've got the data in the database How does it need to be presented to the user? Does it need to be a custom post type? Does it need to be a taxonomy? Does it need to be a custom post type stamped or tagged or categorized using a custom taxonomy? Can I use pre-existing taxonomies? There's all of these little nuances that you have to think about And I'm not here to be prescriptive and say that oh, you know every time that you import some new let's say paint color from a vendor that you need to have a custom post type of paint And then the color is a taxonomy. I'm not here to make a case for which is the best way to Categorize your information But you do need to think about it in terms of how wordpress represents data because ultimately that is where it is going to reside So that's a that's a large plugin. I consider that a web application that's built on wordpress And the reason that it's built on wordpress is because you could remove wordpress from the foundation And replace it with another system of that provides templating data storage and things like that Now this is something that's becoming more and more interesting in the wordpress economy. How many of you in here Have just heard of the rest api Awesome, uh, are you familiar with the terminology of headless wordpress? That's another thing that's getting more. Okay, cool So if you're familiar with the rest api, then you have all you need to know about what is from what what headless wordpress is all about So I have this title an ios application and here's why I am currently in the process of working with two other people one of them is a cardiologist one of them is an ios developer and then there's me who who builds software on wordpress and The cardiologist has an idea for an application that he wants to run on ios And so there's going to be software obviously that has to run on the phone but then there's going to be something for another party that is That is going to need to work in a web browser and i'm going to break down each part of this to you So first This is by far the most uh In my career the most advanced Wordpress application that I have built and by that I mean it's it's advanced in that it's distributed among multiple operating systems Multiple languages and there's a lot of different little nuances. We're having to take into account. It's a lot of fun it's a little bit challenging but for The sake of this talk The cardiologist wants to have the patients with the app on their phone Now the data that is for the patients is unique to them. They cannot have access to other people's information If you're familiar with HIPAA you know That Well that by your response you're very well aware of the regulations around that But so you have other patients with the data that is going to be on their phone And then you have things to WordPress the rest api and then the physicians will have a web application and physicians have multiple patients But a patient just has himself or herself Now the rest api is what will allow us to take the patients ios application and Communicate with the physician's web application. So first The ios application this is going to sound almost boilerplate because this is how so many applications are built There has to be user account management. They have to be able to log in So they're going to need a username. This can be something like Their email address or it can be something else that they want to choose and then there's got to be a strong password because that matters There needs to be session management because as they're moving around in the application We're going to need to know Not only are we going to need to know What information they're entering and when but we're going to need to know If something happens to break we want to log it so that we can keep tabs on Oh, we need to fix this bug or or things like that You don't want to throw up an exception message about something to the user then Especially for people who are having heart problems. They see something. They don't understand that might I don't know what that would do to their heart So anyway, you also want to have data serialization and by that on the phone you want to take the information And save it into a format that you can easily send across the proverbial wire to the web application And that's what the ios app has to do Yes, it's at a high level, but it's relatively boilerplate for a lot of applications Except it's specialized to a very specific industry, but what what applications aren't So then you have the wordpress api Now this even though it's powered by wordpress is kind of the interstitial part of the application It allows the user to create the account and here's one way to think about this This is why it's not just a matter of hey, I have an email address and here's my password and I want to set up my account Let me do it. It's not that easy because you have to then say Okay A person on their phone is signing up then we have to make a hop and say They're they they hit an endpoint and then that endpoint then has to fire some logic and say, okay New request coming in here's an email address is this email address of a valid format If yes does a user with this email address already exists in the system? from there and if you're dealing with with hip with Security let alone hippo regulations. You got to wonder why is somebody trying to sign up with this email address when it's already in the system Is it just user error or is someone trying to gain access to their data? So that's another thing Then you have to send a response back to the ios application to say Uh, this user account already exists and you have to handle that appropriately or you can create the account and say hey Congratulations, you're signed. I don't always say congratulations. It's not like you've achieved some big task But that's what all the notifications do right? It's like congratulations. You've signed up for your app. Good job Here's your medal But anyway, you you create your application or you create your account Then you're given the app the ios app will read the status code and says, okay, you're ready to go So then you sign in with your email address and the password And if you don't want to send passwords via email and I don't think you should send passwords via email Instead you can do one of the popular things right now are magic links slack does this a good bit You can also give the user the ability to go on to They can hop somewhere in the page and set up their own password confirm that it's strong all of that And but the api can still the api that you design can still give you the information necessary To say hey, this is successful or it's not and then respond appropriately But then you get into the area of saving data and retrieving data So let's say that you are using this app as a patient And you want to save your information To the Physicians application the physicians application is the one that resides in wordpress So first you want to serialize information that is Uh Safe to have on your phone should you know god forbid your phone ever get lost You want to save it into a format like json that's easy to send across the wire to the server But the longer the user Uses the app either the greater The data is going to be Or the size of the data is going to be Or you're going to have to think of a creative way to say okay The last time we saved the data was this date and time so we're just going to send the most recent And then it also needs to be able to retrieve data If you want a historical account of all the information that you've ever entered into an application You've got to be able to retrieve that from the web application And once again, we're back to notification systems And the reason I mentioned this is because giving users feedback is so important and you don't want to do it in developer jargon You don't want to throw up the result of an exception message. You want to give something that lets them know hey Something happened or yes, this was successful or the data has been saved or Another another move that we're often seeing now is that when data is saved. It's just saved silently in the background There's not even a save button And I think that's elegant, but I think it also Can confuse some people if you've used Like microsoft word for 20 years you're used to command save command save command save command save and all of a sudden now The app is saving your work for you Automatically, how do I know it? How do I trust that? When is the last time that it saved it? You know, there's a lot of little things around that to consider But then you have the physicians web application now remember we talked about a patient has one physician But a physician has many patients So the physicians web application is actually going to be a it's going to be built on wordpress And it's going to be designed to run in a web browser either on an ipad or on a computer And from there they can see all of their patient information They can see all of their patients and then for each patient they can drill down and see charts records etc and they're There's there's notifications built into this part too because if you're a cardiologist and one of your patient saves information and they have a arbitrary threshold of where a number should be or shouldn't be Then the physician needs to be notified. Hey patient patient zero For those of you who are fans of uh zombie comics or zombie movies patient zero is always the one who's the one that causes the outbreak but anyway Whenever patient zero Is value goes higher than what it should be or lower than what it should be you need to notify the physician But then you got to decide hey does it notify them just during working hours? Does it need to be on call? You need to have a text messaging system built in etc But let's just say it's in wordpress and so they're in wordpress. They're reading through reports Let's say that you opt to use the heartbeat api. So every 15 seconds it's polling and it says oh patient zero There's a the threshold has just been said the they've just saved their data the threshold They're above threshold and then they need to take whatever action is necessary And then finally you want to generate reports now a reporting it can be charts It can be just an excel spreadsheet. It can be a csv It really depends on how they want to see the data represented now The purpose again of this talk was to be was to was to was to kind of sit at a high level It wasn't this is why there was no code It's to be at a high level to say here are a few different ways that you can build software on wordpress and The reason that I wanted to make sure that it was presented in this way Is because it's just a case for why wordpress is an option Not it's that it's the option and so in the talk and this is I want to um Touch on these points because I know that we're holding questions to the end is we went through the product We went through web development. Well an abbreviated history of web development We talked about the difference in sites and applications even though we've kind of mixed those terms together We've talked about simple plugins. We've talked about small plugins We talked about add-ons or extensions of plugins. We talked about large plugins Then we've talked about full-scale applications that are distributed between ios devices The wordpress resty api and wordpress and then how this encapsulates an entire web application But remember like I was saying this is still a case For building web applications on wordpress. It's not a framework wordpress is not a framework You'll see it oftentimes mentioned online wordpress is a great framework for building Web applications wordpress is a great framework for this set of it. It's not a framework. It's a foundation if it was a framework It was not it will it would not offer it would not be a fully fledged application out of the box and it is There but the nice thing about wordpress is there are existing powerful apis that we can already use to take advantage Of some of the functionality that wordpress offers user authentication session management And couple it with some of the newest features in php. You can write things in an object-oriented manner You can do a lot of filtering validation retrieval of information things like that. You can connect to a variety of different data sources That's nice But then you can also take for those of you who work in other fields. I was talking with a gentleman yesterday who is a Dot net software engineer If you are familiar with building software in another Way be it dot net be it rails be it php be it any other Of the variety of languages that are out there for building software You can still apply those same techniques to wordpress if you are going to be responsible for building a for building a Object relational map you can do that using wordpress as long as you understand the database schema or Create your own tables and insert that into the wordpress database. You can do all of that You just have to do it within the context of wordpress And when I and I and I say that phrase a lot the context of wordpress And I say that to drive home the fact that all of this does wordpress is the foundation But it's extremely extensible and so ultimately Whenever you have an idea For building a web application and you think oh man, I would love to build this But I can't do this on wordpress. I got to go learn another framework And I got to go attend these workshops and I've got to go read these books and now I don't want to do anything I don't want to build anything because now I got to do more work before I even get to work But pump the brakes on that thought and ask yourself Why not wordpress? What is it that it doesn't have? That I what does it not have? That would allow me to build this So with that, thank you so much for coming. I know it's nine o'clock out on the day of the after party so if you're you know Hungover or if you are drinking some kind of special coffee or I don't know what's in your white cups Thank you so much for coming. I really do appreciate it. I hope that this talk helped to expand the Ideas or to expand your proverbial horizon as to what you can do with wordpress But at this point I am completely open to questions comments and conversations around this It's something that I really enjoy And so with them open the floor for for questions So the question is how do you learn to do this in wordpress if you've not done it before Or if you have experience in other fields industries or segments of the industry, how do you learn to begin bringing this into wordpress? Is that a fair summary? Okay, so The first thing I would recommend Carl I'm going to ask you to This is not a plant Can you please plug can you please plug your book with the discount? Yes Okay, in addition to that so his site's at carl Alexander dot ca Okay I like to outsource as much information to you We're gonna have questions and y'all are gonna answer them No, but um, it's a really good resource like and so that's why I wanted to mention that the second thing is there, um and this is uh, I guess unapologetically I'll blog about object oriented programming in wordpress. Did you say you know I do? Oh, okay. Well, thank you. So, um, I write about things in very small segments But if you here's the best advice I can give I think, you know, you to me in online courses and things like that you're gonna find It's gonna be a mixed bag. I'll be honest with you. You're gonna find like That wasn't so helpful But or you're gonna say like wow that was really good Exactly Okay, so are you familiar with um being a self-learner is such a great skill to have. Are you familiar with zack gordon? Okay, he's on twitter at z gordon He has courses on a variety of different things and I wish I could give you like one Place to go to learn how to do this but what I would recommend is spend time In the wordpress in the wordpress codex and understanding the or learning the wordpress apis There's a and just you know, look it up on duck.go or google and say, you know wordpress codex or wordpress apis in codex And then match that with php That's going to give you a lot of in the right because then you know, then you have marked you have your html Five you have your css and things like that but that can also be built by a front end designer but if you're if you've been working with databases then I would venture to say that you're very Server minded back in minded things like that And so when you start thinking about building applications, you can probably I would and I'm making a leap here But you would be able to say you would be able to put something together and then display it on the screen It may not look pretty, but you can always bring someone in to help it look pretty Then I would say um in the in the wordpress developer resources look up the available apis and see what it does offer um It's okay to ask questions on stack exchange the wordpress.stackexchange.com, but be careful like you Don't just assume every answer you get is is the best answer, but that's with any site, right? Go ahead. I'll go for it. David. That's a long drive. It's really hard. Yeah That's an all day Right Channels and stuff like that The last thing I want to mention before I'm doing other questions is go to wpsessions.com You're gonna find a variety of different topics there, but some I'm sorry word sesh Yeah, but wpsessions first first wpsessions is just a library of people who work exclusively with wordpress They've built sites for the wire cutter, which is owned by the new york times They've built or web apps that do that and then down into other smaller niches, but then later this month word sesh, which is um word sesh, which is uh an online conference power or uh I don't want to say powered by the same person. It sounds like he's on a hamster wheel Um, he's the same guy who runs wp sessions brian richards He's gonna be doing it. It's an online conference So I hope I hope that helps and don't hesitate to email me. I'm always happy to answer further questions about that too Yes I don't want you to worry with what's going on on the wordpress arena at this point Okay, so the question is if I'm building a web application on wordpress Is it possible to turn off or to say hey, I want to do essentially a feature freeze I don't want to upgrade wordpress because where it is right now Is acceptable for this application Is that okay? So first I would the first thing I want to I want to make clear is when you turn off the ability to upgrade You do run the risk of disabling security updates But if you have control over the environment in which it's in like if it's on an intranet or something like that then That responsibility is on you to handle that but you can turn off update notifications You can turn off auto updates you can turn off a Anything that deals with automatically upgrading wordpress. You can disable that off the top of my head I can't remember all the all of the things the proverbial knobs you have to us to do that But if you will look up it's in it's all documented in the developer resources and the codex of disabling auto updates It depends because with an upgrade so the question was do I recommend doing that and the and um The I'll have to this will be my last answer So I don't run into the next session, but This is one of those answers I hate to give but it depends and it depends because you do run the risk of losing security updates however If you also miss out on updates you could gain access to new apis But you may also lose apis that you're already using and in that in that scenario You're either tasked with okay. I'm going to run the risk of just leaving things as they are or I'm going to write Um in object oriented programming. There's a design pattern called the adapter pattern And the adapter will take an old api and you basically build Just like when you connect a power let's say an american power Power cable to something in europe It's an adapter that sits in between it and then processes the information So it says okay the information is coming in an old way. I'm going to reformat it and then save it in a different way So I hope that helps That's it's a really good question, but it's not an easy answer All right. Thanks everyone for for coming