I'm here to present the Ronan Katao and he's making a presentation on browser bugs. Good morning. I'm Ronan Katao. I work at the Wikimedia Foundation where my team works on trying to push the limits of the kinds of applications that you can build on the web and run inside of a browser, not just pages. I have put the slides for this talk online already. They are on the URL on the screen.  There's a bunch of code samples, so people might want to read those at the leisure or follow them. I'm sure that the conference organizers will also publish slides at some point in time, but I decided to come prepared. So, web development. It used to be very difficult. The 90s were a really dark time where you had to write horrible code that looked like this.  The answer is it does the same as this line. We have things like jQuery now, which make web development easy and nice. And, by the way, there is also a bug in this code above because if you write things the obvious way in DOM APIs, they don't work because the APIs aren't helpful.  Nowadays, we have consoles where you can dump entire objects and DOM nodes, which you can then highlight with your mouse, and the browser will show you where they are. And you have the buggers where you can put in breakpoints, where you can deminify the code and have call stacks and do all the kind of lovely things. You have a DOM inspector where you can find nodes in the page, and it will highlight where they are for you and tell you what the padding boxes and border boxes are and all that kind of stuff. And where if you wanted to do a cool thing before in, say, the 90s and you wanted to exploit a bug and I think it was Netscape 1 or something or Netscape 2, then you would have to do something like this. This does exactly what you think. It animates the title to be welcome, one character at a time because Netscape is stupid, and immediately you put the title on the title bar as soon as it's part of the tag. And so you could trick it into doing your things, and nowadays you just have animation things that you can just call and it's obvious what they do. And you can build buttons with like rounded corners and you can transition the roundedness of the corners and the color of the corners all with CSS. So the modern web is easy. We have jQuery, HTML5, we have CSS3 and it all works nicely and browsers used to be pieces of garbage because if you go to, this is a very American centric example, but if you go to healthcare.gov and IE6, it looked like this. We just clearly not what they intended because in Chrome it looks like this. So, you know, modern browsers, the web just works, right? Well, that's not really true. If you're trying to build your standard garden variety, like web page, then yes, now is better than ever. You don't have to build with three times or three browsers anymore. You don't have to worry about comparability issues and interoperability issues as much anymore because for sort of the, if you're staying on the sort of the beaten path, then things just work and it's all fine. But the reality is browsers are still just as bad and they only kind of work and only in the cases where you're staying on the beaten path because there is so many areas off the beaten path that people don't use as often and when you're building an application instead of just a static page and a web browser, you run into these kinds of things. If you try to do interesting things, then you're going to run into this fact that browsers are incredibly complex because there's so many standards now and you can do so many useful things. I mean, think about the rounded colors transition example.  They have to be able to transition the color of your like rounded border. That's a lot of code. And consequently, there's a lot of bugs. So I'm going to talk about some things that I was really wanting to do and browsers that are difficult to do, but to keep it light, I'm also going to make fun of browsers a little bit. So first of all, let's make fun of Chrome a little bit. Chrome used to have these lovely non-featured interactive box shadows. So if you built a scrollable container with a box shadow around it, then it would consider the box shadow part of the area of the container, but also not. The correct answer, by the way, is not. And so if you put your mouse like in the screenshot, if you put your mouse outside of the container, you can still interact with things that are below your mouse pointer. And you can click them. You can use a scrollable to scroll the container when you're not even in it. And you can hover things. You can click on them and the interaction will work. And this is very amusing. Unfortunately, for entertainment value, they fixed it. So I'm not going to be able to demo these to you. This kind of thing also happens in Chrome. Chrome is so high-performance that it doesn't even work properly, because half of its time it tries to cash things for rendering, but then it cashed the wrong thing or doesn't evaluate it at the right time. And so very common problems with Chrome revolve around. This is what the page looked like a second ago. It doesn't look like that anymore, but not all parts of Chrome know, only some parts, which is exemplified in this bug where the font rendering engine doesn't always know whether to use a serif font or a sans serif font. The layout engine knows which font it's supposed to be using, and you can tell by the lengths of the underlines that it has a different font in mind. But sometimes the font just disappears in memory, and it uses another font. This is especially common on macOS, because the fallback font rendering in macOS is not very good, or was weak, as they claim to have fixed it in Chrome 33, which is a little bit difficult to confirm, because it was kind of an intermittent bug. But before it was fixed, someone submitted this lovely video to the bug report, where you can just see the font changing all the time, because sometimes the normal font renderer fails, and it falls back to the fallback font renderer, which is fine, except the macOS people were like, well, it's just a fallback font renderer, so it doesn't have to actually work. It's never going to get used. And that turned out to be very slightly wrong. And of course, you can see sort of relatively Chrome in a schizophrenia, where the layout engine still knows how wide the text will speak, because the column widths and the text didn't reflow. The column was in change, and with the links, the underline lengths didn't change. And if you ask the browser how wide is this line, it will give you the correct answer. It's just that the font rendering engine kind of goes out and does its own thing. Another thing that's very difficult is the CSS3 selection colors. So there is a CSS feature that you can use to overwrite what the selection color is.  But if you do this, then you can see what the native selection color actually is. It's blue. So just in case you were thinking that you were actually going to use this feature, it's not that useful, because it doesn't actually work correctly, and you end up with ugly stuff like this. Selection in general is just difficult, because if you have some text that you inject using column before, then it shouldn't really be selectable. But if you do this, then that happens. This is, I don't think this is a classic symptom of Chrome, but it's fun anyway. What's really fun, and this is a case where it's not really obvious what should be happening. But on these lines, all the a's are normal a's, and all the b's are absolutely positioned to be next to the a's. And so if you try to select things, it just does very weird things, where some of the b's are still visible and some of them are not. And you can see that it's actually, you may not be able to see them as projected very well, but some lines are actually double blue. They're made blue twice or thrice by the, it looked even prettier when the selection color in my operating system was still orange. It looked something like this. And you can see a whole patchwork of there a's that are where the text color is orange instead of the background color. And some of the b's are white, and some of them are black, and some of them are invisible. Yeah, there must be some kind of compositing going on. Another really fun one that we encountered is if you have a thing with some things in it, then you can give this a lower height than it really wants to be, and you can give it overflow y auto, and then it will become scrollable. And you can do this and scroll a thing. And I have a scroll bar. But if you then try to make it full height, it again, using the obvious way, then you end up with this, where now these things aren't full width anymore, because the scroll bar, even though it's not there anymore, it's still there. The workaround, of course, is to first change the height back, and then make it not scrollable, instead of the other way around, and also forcing a reflow in between. Because then it knows what you, sort of, all the stars align, and every part of Chrome realize what the other part is doing. But if you don't do that, then the little boxes apparently don't get the message that they're supposed to relay out themselves, because there's now more horizontal space available. Needless to say, this doesn't happen in other browsers. And this led to some very confusing interaction between me and my QA people, because they always think it's my fault. There is also a lovely feature in browsers called an un-before-unload dialogue. This is another sort of thing. This is in our case why browsers are so complex, because you've all these ridiculous features that you have to support. Number four, unload dialogue is what you get when a web page indicates you can't just leave me, because the user has unsaved data, and they need to confirm that they want to leave. And so if you close the page, and you set the thing like that, it goes like, are you sure you want to leave this page? This happens if you close the tab. This is pretty standard garden variety thing. But what if I'm trying to reload the page? That's also going to obliterate my data, but that's not technically leaving. So they have a different dialogue for that, which has reload this page and don't reload as opposed to stay in this page and leave this page, which is fine. I think that's a good decision in Chrome to make the distinction. But now you can do, you can reload the page, and then while it's still reloading, you can close the tab. Now what is it going to do? Clearly nobody ever thought of this, because I get the same dialogue. It asks me whether I want to reload the page, even though that's not what I was doing. I was closing a tab. Now what's really fun is what happens when you click these buttons. If you click Reload This Page, it's going to close the tab. Who wants to guess what's going to happen when I click Don't Reload? Yes, it reloads the page, or rather it continues reloading the page, which it was already doing. OK, so these are just fun little things and minor bugs, and I'm sure they can all be fixed. But sometimes there is a more fundamental thing where you just want to do something in a browser and it fights you. So in our case, what we wanted to do is we wanted to maintain a large data model in a browser, in an array, in a JavaScript array. So we messed around with some techniques, and we found that the most efficient way to insert items into the middle of an already very large array was to use Splice, where you have an array. You tell it, after the second item, I want to remove zero items and I want to insert x and y. And then it goes off and does that. Which is fine. That's an API for inserting items. That's great. What if my items are in an array? Well, then there's another API that I can use to call a function, because the things that I'm inserting over here are not actually, I don't actually pass an array of things to insert. I pass it like variadic arguments to insert. So if I have an array of things to insert, I can use apply, which is like a variadic calling helper function, and I can construct the array of arguments, rather, and then pass it Splice. Yes? Could you put it in slow? Sure. So this works. I mean it's a bit awkward, but it works fine. And you can even do this with a lot of items, like, say 500. That also works fine. So how far can you take this? Like what's going to happen if I pass, because I'm not passing an array, I'm passing this set of arguments. So what's going to happen if I pass too many? And how many is too many? So we look for these kinds of questions. We look to the atmospheric spec, because they are the people that are supposed to answer profound questions. And as you can see, they have. So the way that you actually find out is for experimentation. It turns out in Chrome, you can go up to 2 to the 17. And it gives you a somewhat confusing array, which I'm sure is true technically, but doesn't help me understand what's going on very much. In Firefox, it's 2 to the 19. And that actually gives me a reasonable error message. Opera 12 and below is 2 to the 21. Gives me a reasonable error message. Safari is like Chrome except with a lower limit, 2 to the 16. IE will give me an even more technical error message and it's 2 to the 18. And IE 9 and below, excuse me, there doesn't appear to be a limit, it's just unless you actually run out of memory. Like that is actually what happens if the process runs out of memory. As you can see, except in the case of IE 9 and below, these limits are actually powers of 2. And the error message that you get are reasonable most of the time. So it does seem to kind of work. It's just that everybody chose a different power of 2. So we decided to keep this, you know, stay in the safe side and use 2 to the 10, which is way lower than any limit that we encountered and batch it up, which is fine. But in our testing, we noticed something, which is that we had assumed that if the splice called in crash, then it would perform correctly. Because you would think that an elementary operation like inserting data into an array would not be performed incorrectly by any browser engine. And you would be wrong. So we had this particular case where you can create a sparse array, which is where you create an empty array and then just decide to declare that a sub 6 is now x.   And in a sparse array, you can also splice, even between the holes and after things. And in this case, I say after the seven thing, which is all the way at the end, remove nothing and insert y. So you can also do this in opera, opera 12 and below. And it represents things slightly differently in the console, but it gives you the same results. Now I'm going to do the exact same thing, but I'm going to add 250. So now I'm going to declare the 256th item and then insert something after it. And that performs correctly in Chrome. And in opera, the 256th item just disappears into nowhere. And we have anecdotally observed situations where like the entire first 255 elements of the array just get scrambled and reordered randomly. Especially if you have way more than 256 items in this array, if there's like thousands, then things just get screwed up completely as soon as you try to insert things past 256. And so we ended up writing a function like this, where we set the 256 thing, try to insert after it, and then check if the thing that we set was still there. And if that returns false, then we need to use your own homebrew implementation of splice because the browsers are reliable. The function isn't actually called this in my code base because function names need to be unique, which in this presentation they are not. All right, so lighter matters. Let's make some fun of Firefox. This is a lovely bug that I also can't demonstrate because they listened to me and fixed it. If you have superscripted text inside of a link and you hover over it and your link has some special properties, then sometimes the underlying will be displayed above rather than below the link, at least for superscripted parts. This, again, makes QA departments upset and they look at you and you can't do anything about it. This is fixed in Firefox 33, which came out in June or something. There's also another fun thing. We work with the technological content editable, which allows you to have HTML elements that you can just type in and modify. But you also have links. And when you click on links, they aren't followed because they need to be able to drop my cursor here and type. But if I try and select across a link and I mouse down on it, it changes color because it becomes colon active, which is the CSS styling gets applied for links that are being clicked and about to be navigated to, even though they're not because I can't click them. But that doesn't stop the coloring from happening and there's no way you can write CSS to prevent this from happening because the browser doesn't distinguish. So that looks like this. Firefox also has a bit of trouble determining when things are visible or not. So if you have an image like here and you're cursoring over it in the content editable, then you expect this kind of behavior where if I'm here and then I press the left arrow, then it jumps over the image and lets me continue. If your image has no source attributes but it has alt text, then Firefox renders the alt text, which is correct. But it also believes the image is invisible because it is having the source attributes. And so it shouldn't be skipped over. And so you get lovely behavior where if I'm here and I press right arrow, I end up there. And if I'm here and I press left arrow, I end up there. If you were trying to write something where users expect arrow keys to work, which is most of the time, then this is kind of a nightmare. The solution turns out to be, don't do this. It's kind of like, doctor it first if I do this, then stop doing it. But at the same time, this was a kind of legitimate use case that we didn't really, I guess you can set the source to something before or before or something. It will have the same result and it will work.  You have to do that. Apparently something that we don't need in the world according to Firefox is bottom padding. Because if you, was it sorry? Bottom padding. So this red box here, this red box here has a gratuitous amount of padding where there is white space within the red box around the contents on all four sides. I've just declared it to be the same all four sides. But if the box is scrollable, then Firefox's side at the bottom, there's not going to be any. And you can see that in this case it's particularly ugly because the red border starts the next pixel over from the input box, which at least paragraphs have margins in browsers by default. But this just rides up right against there. And again, my QA people were upset because in, whoops, now I screw this up. And that's going so well. Here we go. My QA people were upset because in Firefox, it does introduce white space at both the top and the bottom. Or second chroma does. And in Firefox, it doesn't. So I reported this to the Firefox people. And their response was, yeah, this is not a bug. Because if you read the spec and interpret it the way that they do, then bottom padding isn't part of something that necessitates something to be scrollable. And so it also shouldn't be accessible through scrolling. And they argue that that's what the spec says. Most people almost agree that that is what the spec says because the spec isn't very clear on it. But no other browser does it that way. And Firefox says, well, first of all, this is what the spec says. And second of all, we can't change it because it will break the internet. It's like, no, it won't break the internet because everyone else is already doing this. And you're violating a principle, but at least surprised. But they seem to not be. This is something that I have to actually gather the energy to take up with the W3C to what WG people because that's where specs are made. Something to do acknowledges a bug is that if you use text areas of padding, they definitely padding because on the right is what it's supposed to look like. Note that Internet Explorer is doing it correctly this time. And on the left is what Firefox used to do. This is just if you make a text area have some padding and a border and stuff. They fixed this in Firefox 30, which came out in June. The reason I mention it is because of when it was filed, which was in July of 2002. So that's like Firefox, I don't know, I was 11 in July 2002. That was like in Firefox 1 or something, or one point? I don't know. But apparently it turns out that if you know somebody who knows somebody who knows the bug ranger from Mozilla, then you can pull some strings and eventually get this fixed, which was nice that it worked. So another thing that I like being able to do in browsers or that I would like to be able to do in browsers is parsing HTML, which is not something that you're going to run into in your standard garden variety application or a standard garden variety web page. But if you're building an application that's manipulating HTML, which as from the things with content editable earlier, you might have guessed that I am, you want to be able to parse HTML. And this should not be hard because browsers implement an HTML parser. That is almost implied by the definition of a browser. They have to parse the HTML page to show it to you. So if I input an HTML string and I want a DOM tree, this should be easy. This should be what browsers do all the time. And it turns out for fragments it is easy, which is to say if you just have a little bit of HTML, then their APIs, I mean there's even a jQuery wrapper for them, where you can give it a string of little bits of HTML, it will parse them for you and it will come out with DOM elements and DOM trees and all those nice things. But if you have a full document, that is to say you have a doc type, and an HTML tag, and a head tag, and everything, as opposed to just like, oh, here's a paragraph in Spendings, then it's harder. The most reliable way to do this across browser, across old browsers, is something called the iframe hack, which gives you an idea of its reliability and quality. The idea is that if you create within the document, then the iframe will have its own document because there's a whole other document in there. And then you can somehow write your HTML string into the document, and then you can return a document, and then you have sort of fulfill your contract of what you would expect when you create a document function that takes an HTML string. So it turns out you have to put the iframe actually in the document, otherwise it doesn't get its own document because browsers, it also can't display none or hidden in any way, because then Firefox doesn't load the iframe. This is the source of it. It can't be 0, but 0 pixels. Either it has to be 1 by 1, and it has to be kind of visible, but you can still try and make it not visible. It also turns out that the API that you have to use to put the HTML in is very 90s-tastic, and you have to use DocumentWrite, which we've been telling will not use for a very long time. But in this case, it's OK. We promise. And then maybe you would like to clean up the iframe afterwards, like you don't need it anymore. You can throw it away. Turns out this isn't quite work, because in an X4-8, you have to use content. We know the document instead of content document, because of reasons. And if you remove the iframe, the whole thing explodes in I8, but only after some time. So you have to keep the iframe around. So with the caveats on the screen, this is actually a nice way to do it. But it's not nice for programmers. So the W3C came up with something better, and they introduced a very promising looking thing called create HTML document, which lo and behold, just gives you an HTML document. Now, apart from the thing where an opera sometimes gives you a document and sometimes gives you an object that looks like a document that doesn't behave like one. It also isn't always very helpful, because the way that you do this is you create an HTML document, and then it has an HTML tag in it already, and then you write to the contents of that, which means that you can't provide your own doc type or your own HTML tag, and so you have to regex them out of the way, which is not what you want to do, but this kind of works. And to be fair, in most browsers, if you don't do this, then the browser will do it for you anyway, because it understands that nesting an HTML tag instead of an HTML tag is not going to go very well. But there's a string parameter here to create HTML document. Why am I not just passing the HTML? Why am I not using this? Why am I passing it to string? Well, the W3C in its infinite wisdom made the API such that the string parameter is the title of the HTML document, because clearly people are too lazy to create a title tag and populate it with a string. They have to be provided like a super fast affordance for sending a title, whereas if they want to provide a whole HTML string, then who cares? Who wants to do that anyway? So of course, browser vendors say this is a quote heard around our office, which we're not doing anything. We're doing exactly what W3C says. The problem is that that is not always a very wise thing to do. Eventually, the W3C realized that it extended an existing API called DomParser, which has been around since the Firefox one days. And it used to be you could give it a string and it would parse XML. And then they added SOG at some point. And then recently, they were like, well, this is an nice API for parsing things. Let's add HTML to it. And so now the world is good now. You can actually do this. You can write this function. It's like what, four lines? And you can give it an HTML string, and the document will come out with your doc type, and with your HTML tag, and with your head, and everything. This is great. So who supports it? Well, Firefox was early. They started supporting this in April 2012. I imagine this might have been a case of Firefox implemented and then it became a standard. At some point, Internet Explorer 10 implemented this. Keep in mind, this is a chronological order. And Internet Explorer was the second browser to implement this, which should worry you a little bit. Chrome implemented it a full year after IE did. Opera never implemented it. Instead, they switched to being a skin version of Chrome, and so they have an Opera 17, but that's cheating because Opera 17 is just Chrome 30. And Safari has it now. The last time I gave this talk, Safari didn't even have it yet. They have it like four months ago or something. So I guess it might be in iOS 8 now. But if you're writing something for mobile and your audience basically are not people in San Francisco who make more than $150,000 a year, they don't have an iOS 8 device and you're screwed. Also, the spec for this thing is lovely. This is what the spec looked like at the time that I last looked into this. It's currently unclear what the URL of the document should be, and it ends with, it's like, this is what some browsers do, and it ends with, name of random news is just using this. Thanks, W3C, for specifying your thing so clearly. Nowadays, they actually have a spec that actually says what you need to do. And this is a couple months old now. Of course, nobody implements it. Firefox behaves according to spec, but that's just because they decided the spec was going to be if Firefox already did. And Chrome doesn't behave correctly, Internet Explorer doesn't behave correctly. So let's talk about Internet Explorer. Because if there's any browser that we can make fun of, it's Internet Explorer, right? So people like, there are lots of traditional problems with Internet Explorer that people like to make fun of. I have discovered some that have been really interesting and I've been in touch with people at Microsoft that have actually been working on fixing these things, which is exciting because Microsoft is now listening to open source people because they care about their browser working with Wikipedia. And they're like, well, maybe we should listen to you and fix your bugs. So it turns out, for instance, if you try to give text a background and it happens to your right to left text, your text isn't rendered, it just isn't there. So how do you work around this? Don't use color backgrounds in combination with RTL text. Don't do this, Doctor. This is not a very good solution. I think this is fixed in the IE 12 developer preview. But for real, a browser is still a problem. If you have superscripted and subscripted text and you try to measure the position, like the location on the page of those things so that you can render maybe blue highlights on top of them, it doesn't work that well because it lies to you. And the dimensions are all correct, but it pretends that the boxes are at the baseline instead of being raised or lowered for super and subscripting. You can work around this because you make them inline block instead of inline, then it does work because there is an internal implementation detail in IE where things that are not inlined or in charge of their own positioning instead of being slaves to their parents. And apparently, it doesn't deal with the super uncommon case of superscripted text.  I don't think this is fixed yet, although they keep promising me that it will be fixed. This one is really annoying. If you're using a DOM as your data model, then what you expect is that you put things in and the same stuff comes back out, like at round trips, right? You have a string, you put it in the DOM, and then when you serialize the DOM back to the string, you get something that's almost the same, or at least has the same meaning, whatever. The values of style actually just get completely clobbered by Internet Explorer. If you have a color with accessible limitation, it gets converted to RGB. If you have something without semicolons, the semicolons are inserted. If you don't have spaces, they are inserted. If you do something invalid, it just gets removed. You end up with an empty string. And if you put in an empty string for style attributes, it tells you there was a style tree to begin with. So this is not actually a normalization, because it isn't ad impotent. Because if you start it with invalid CSS, then after the first time, it will be an empty string. And then after a second time, it will be null. This is ridiculous, because when I take an HTML string that I get from somebody and I parse it in Internet Explorer, I can't tell what the original attribute value was, because Internet Explorer has already normalized it for me. And it's already decided that clearly they didn't intend to write FFDDFF, the person that's talking to me actually meant RGB 255, 251, 255, which is not helpful, because then when I serialize it back, I give them different data and they're like, oh my god, you changed this. These are the kinds of things that happen where I have an application and you want your browser interface to be reliable and Internet Explorer's aren't. The workaround is hideous. It involves parsing the HTML as XML, copying the attribute to different attributes, then serializing the XML back to a string, then parsing that as HTML, and then reading the other attribute instead of the style attributes, because then Internet Explorer doesn't know that it has a meaning and won't clobber it. This is also something that I've been trying to convince the Internet Explorer people is even a bug, or is even important at least, but hopefully I'm succeeding in that. So, OK. Having made fun of Internet Explorer, there is a final thing that I would like to be able to do. I've talked previously about parsing HTML and getting a DOM, and now I have my DOM. I've done things to my DOM, and I want to serialize it, which is to take the DOM and make it back into an HTML string and send that over the network to somebody. So there is actually a very well-specified way to do this, which is you take the root node of the DOM and you ask for its outer HTML property and it gives you a string, which that's fine, but of course there is a caveat. There is a weird thing in the HTML spec about parsing of pre-tags. Wipespace matters in pre-tags. And so if you would take the spec strictly, then if you wanted a pre with a poem in it or whatever, then you would have to put the first line of your poem on the same line as the opening tag, because you put a line break there, then it would be a real line break. The line break is ignored. So the people that wrote the HTML spec were like, well, that's really unhelpful towards people. So in pre-tags, the first new line is free. The first new line in a pre-tag, if it starts with a new line, it is ignored. And then if you wanted a new line there, you can use two. And so if you do, if you write something like pre, new line, new line, foo, close pre, and you ask the DOM what is the contents of the text node in there, it will say there was one new line. This is a bit confusing, but it is actually helpful to people, and it's fine as long as you understand how it works. The problem is, when you then take this DOM and serialize it, you only get one of the new lines back. The serializer is not aware of this behavior, and so it just goes like, oh, here's a pre-tag, here's a text node, and so it just emits a pre with one and a foo, because that's where it's using the DOM. Of course, if you parse this again, there is not going to be a new line. And then if you serialize it again, there's not going to be a new line. So you can actually do console sessions like this, where you just run div.interhtml equals div.interhtml over and over again, which should do nothing, but instead what it does is it eats the new lines of your pre one by one. And so we have a feature detection test in our code that goes like, if I create a pre with two new lines, then does it come back with two new lines? This is very unhelpful when you're trying to interact with another service over in the network, and they give you an HTML string, and you modify it, and you're supposed to give it to them back, because in both stages you're going to end up eating new lines. So this is actually not broken to Opera 12, which is hugely surprising, because they don't even know how arrays work, but they know this. They are the only browser to do this correctly. But then, of course, they switch to being a skin version of Chrome, and now they're broken, too. I've complained to browsers about this, and there is a chicken and egg problem where they all are afraid of being the first people to change it, because it's already worked its way, and they're afraid that that will cause problems. The workaround for this is to add new lines to them in the right places. I'm going to skip over this, because it's not very interesting, but basically it's like you walk through all the affected tags, and if the first child was a text node, and it starts a new line, then you insert another new line, and if you're very paranoid like me, you also account for both backslash R and backslash N. This is a fun code to write. You can look it up in PDF slides later. So do browsers suck? Well, not that much. Browsers are actually still pretty great, because a coworker of mine built this, where this is an HTML page. There is some CSS involved, but there is no JavaScript at all, and I can edit the title, and I can edit the CSS, and it all updates live, and you can do really cool things. And I think, and depending on the browser, you can even do this. This is Control-B here, and this is Control-I. And when he showed this to me, I thought this was pretty amazing, and he's not even using JavaScript to accomplish this. So thank you for your time. As I said, the slides, and all the code samples, and everything, because if you're trying to parse dons or something, some of this stuff might actually be useful to you as opposed to entertainment. They're often at the URL, and I think I might have five minister questions. Is that right? Sweet. So, yes. There is a mic somewhere. You can mic to the microphone. Yeah. All the way back. If it's flashing, it's working, I think. Where things disappear and so on. Have you managed to cause internal state corruption? That's an excellent question. Just in case it's not going to record it, because I don't hear his voice amplified. His question was the array example where elements disappear. Is that exploitable? I have worried about this, because if the element disappeared, then where did it go? It probably went somewhere, and it probably went somewhere not very good. I've never managed to crash a browser or get it to run code of my own or whatever. I have wondered highly about this, but I've never tried exploiting this. Also, because it's not a very easy bug to reproduce, and I wasn't really feeling like digging into C code to figure out what was going on. The answer is maybe, but it is upper, tall, and below. Those browsers are pretty ancient and pretty bad. And hopefully, nobody's using them anymore. So if you figure out an exploit, then you can own 0.01% of the internet and more power to you. Anyone else? There isn't like, I won't repeat questions, if it's like, but sure. Speaking of older browsers and stuff, do you have data on what percentage of the users of the visual editor are using older browsers, and how much do you support those older browsers and their bugs? We have some data like that. We mostly have data for the website as a whole. I do not have memorized. We do know that the browser we support are IE10 and up mostly with some degradation where necessary to work around the ridiculous problems that I showed you earlier, and modern versions of Firefox and Chrome. We have noticed that when there is a, it seems like Internet Explorer usage is not very high, but noticeable to the point where when there is a bug, where we have a bug interacting with Internet Explorer, we get complaints from people quite quickly that pages are being corrupted, but I don't have percentage for you. I get the impression that it's mostly Chrome and Firefox. Maybe Chrome a little bit more than Firefox would pretty evenly split, and a smaller but still substantial use of Internet Explorer. And this is why building Internet Explorer support has been a priority for us. And this is why the Internet Explorer-related slides have been added to this presentation after I last gave it, because I dug into this and found all these ridiculous things. How responsive are the different browser software writers, I guess, to the bug reports that you sent? Oh, that is actually, thank you for asking a question, because that is something that I meant to mention and forgot to put a slide in for. It varies by browser. So Internet Explorer has historically kind of been a black hole until someone from Microsoft, like someone on my team, like, knew a person in the Microsoft, and they knew another person in Microsoft, and they sort of they were having coffee and complaining about this, and then she decided to get the right person in contact with me. And that's how we now have a contact with the IE team, and they actually care about their next release of IE, not breaking Wikipedia. And so I have some leverage with pushing these bugs on them and going, please deal with this. The Firefox people are usually reasonably responsive. Their problem is mostly that they sometimes are kind of obtuse, and I've seen cases where the entire Internet is trying to convince the GECO people that what they're doing violates a pretentiously surprise, or there was a bug related to SVG measurement, where it took three months for a group of two or three people to convince the maintainer of the SVG subsystem of a basic fact about interaction between HTML and SVG. So that's the kind of problems that we see in Firefox. The kind of problems that we see with Chrome is, unless you know people, maybe, because I guess I don't, my bugs have never, ever been responded to with Chrome. Like my only response that I've ever gotten to a bug that I've ever filed with Chrome has been a single comment from a person with an ad-goo.com address confirming that it happens for them too in a different version of Chrome. And like there's been some triaging changes and like tagging things. And sometimes they've fixed bugs that I have filed without ever responding to the bugs, so I guess someone else must have filed it or it could fix that similarly. But like I have like Chrome's thing or is it me? Time for one more. Yeah. Is there one more question? Or is it really happy and happy to go to morning to you or no, next talk, right? Thank you for your presentation. As a token of our gratitude, here you are. Thank you.


Amen. All right. Well, thank you very much everybody for being here tonight. We are definitely excited to be here and I want to say congratulations, of course, to brother, brother Jared and Miss Heidi and the family and congratulations to the holdfast Baptist Church family and two years ago. We started this church as a church plant and it's been a wonderful ride and you know I'm always thankful that whenever we come here the church family even even this afternoon is always thinking us for starting this church and I appreciate that but I want to thank you for getting on board and for being a part of it We appreciate you working along side us of course tonight we are cutting the umbilical cord and This will no longer be Verdi Baptist Church It'll be an independent Baptist Church hold fast Baptist Church and of course tonight I'll be ordaining brother Jared as the pastor The church and he'll be Pastor Pozarnski and of course we love the Pozarnski family I feel like it's a little echo if you could help me with that. I'd appreciate it We love brother Jared and Miss Heidi and all the kids except for Garrett of course, but we love we love all the Whole family and and we're thankful for them And I do have to before I preach the sermon because I'm gonna preach the sermon and then I'm gonna ordain him So I do have to give this last Try you know brother Jared. Are you sure you don't want to come back? All right you're you can you can we can put somebody else in charge maybe put Jacob in charge and you guys can come back and Be be part my wife said I had to try at least one last time to get them to come back But we're glad they came here and we believe this is where they should be of course And we I just want to say thank you. Thank you to all of you think for the work I know that it's work to start a church. This is a fifth church that we've started and And and we're thankful for that, but thank you for for the work you do Thank you for the church family getting behind it I want to thank our Verity Baptist church or Sacramento family for being here tonight. Many of you came I know there's some looks like there's some of you from first works as well thank you for being here tonight and Tonight I'm preaching a sermon Entitled hold fast and of course this is the the name of the church going forward is going to be hold fast Baptist church and I'm preaching a sermon on the subject or on the title of the church hold fast But but really since it's brother Jared's Ordination service. I want to just let you know I'm preaching a sermon for brother Jared tonight I'm preaching to the future pastor of hold fast Baptist church and and and all of you get to listen in of course And I'm not just preaching to brother Jared, but I'm preaching To miss Heidi and the family by the way after tonight. It's not brother Jared anymore. All right. It's pastor Pazarnski But so just just make sure you know that and I want to preach to the whole fast Baptist church family tonight the name of the church is hold fast and that phrase hold fast is found Throughout the New Testament. I we started here in Revelation chapter 3 because this is probably the most famous Area where this term is is known for in the Bible if you look at Revelation chapter 3 and verse 1 the Bible says and unto the angel of the church and start is right These things say he that have the seven spirits of God and the seven stars I know that it works that thou has to name that thou livest and art dead of course This is a reference to a church that's dying They have a name they have a reputation that they were living but they're dead He says be watchful and strengthen the things which remain that are ready to die for I've not found my works perfect before God remember therefore how that has received and heard and then notice what he says he says and hold fast and Repent he says I want you to hold fast to the things that you've had If therefore thou should not watch I will come on me as a thief and I shall not know an hour I will come upon me if you look down at verse number 11 of the same chapter. He says behold I come quickly hold that fast Which thou has that no man take thy crown the word Hold fast or the the term hold fast means to grip firmly or to grasp Strongly the word hold means to grasp or to grip the word fast means firmly or fixed in a strong way And the Bible uses this term Throughout notice you're there in Revelation 3 if you flip back to Revelation chapter 2 and look at verse 24 The Bible says but unto you I say and unto the rest inside towers many as have not this doctrine Which I've not known the depths of Satan as they speak I will put upon you none of the burden verse 25 But that which he have already notice the words hold fast till I come We are told throughout the Bible to hold fast to take a strong grip to grip firmly to grasp strongly Certain things and tonight like I said is my honor To ordain brother Jared as the pastor of whole fast Baptist Church And I want to preach to brother Jared tonight on the subject of things to hold fast to in Ministry there are some things that as the pastor of the church you should hold fast to and again I'm gonna preach the brother Jared tonight But I'm really gonna speak to his entire family and I want to speak to the entire church family tonight Some things I want to give you three thoughts tonight in regards to things You ought to hold fast in Ministry now if you would go with me to the book of Job in the Old Testament if you open your Bible just right in the center You're more than likely fall in the book of Psalms and right before Psalms. You have the book of Job Job chapter 2 Let me give you three thoughts tonight Three things you ought to hold fast to in ministry if you're taking notes tonight I'd encourage you to take notes. I noticed on the back of the bulletin There's a place for you to write down some things and Maybe you can write these things down number one in ministry you must hold fast to personal integrity in Ministry and I know I would not be ordaining brother Jared tonight as the pastor of this church if I did not know and and and and I'm Trusting that he is a man of character and a man of integrity you the church family here You've gone to know brother Jared. You've heard him preach.  He's a man of integrity his family is is is the real thing They are they love the Lord and they they love each other and and that's why we We wouldn't even consider ordaining them if it wasn't for that but in ministry we must remember and I want to Challenge the Pozarski family and and pastor Pozarski to always remember that in ministry We must hold fast to personal integrity notice with Job if you remember the story of Job Job was a man who the Bible says He was upright. He was perfect He was a godly man and of course that brought about there was trials that came in his life and that God allowed in his life and I want To notice what God said about Job Job chapter 2 after he'd already lost all his Wealth and he'd lost his children In Job chapter 2 and verse 3 the Bible says this and the Lord said unto Satan has now considered my servant Job that there is None like him in the earth a perfect and an upright man one that feareth God is true with evil notice these words and Still he holdeth fast his integrity Although thou moveth me against him to destroy him without cause here the Bible tells us the God here is speaking about Job And if you remember it was God who said to Satan when Satan appeared God said has thou considered my servant Job? And that's the life that you and I should want to live the type of life that God would be willing to highlight us or to Give us as an example.  He says my righteousness I hold fast I will not let it go my heart shall not reproach me so long as I live Job said not only do I hold fast to personal integrity He says but I'll also he said I'll also defend the fact that I've lived right He says I'll defend the fact that that that I've been a righteous person He says my righteousness I hold fast go with me if you would to the books of First Timothy in the New Testament if you find the tea books together in the the tea books in the New Testament They're all clustered together first second that's the longest first second Timothy tied his first Timothy chapter 3 as Preachers and as people in ministry as men of God and as as as pastors and pastors wise and and and pastors kids We must remember that in ministry. We must hold fast to personal integrity. What does that mean? It means that we should live righteously Now now please understand this there's often this misconception in ministry that a pastor and a pastor's wife are supposed to be sinless That is incorrect Obviously, nobody's sinless other than the Lord Jesus Christ Bible says that we're all sinners Bible says There's none that do as good. No, not one and and we we create this false Idea that the pastor and the pastor's wife must be sinless Well, let me help you out with something if that's what you believe you're going to be disappointed Because we're all human beings. We all make mistakes. We all sin We all do things we we shouldn't do and say things we shouldn't say and lose or temper and all those things We understand that but so we're not asking a pastor and his family to be perfect By the way, don't ever put this standard on the pastor's family that they've got to be perfect They can't make a mistake. They can't they you know, we we often put these these Expectations and it's this ferracea equal attitude We put these expectations on others things that we would not do ourselves or expect of ourselves or expect of our own kids Don't fall into this idea that the pastor must be sinless the pastor's wife must be sinless the children must be sinless But let me say this we should live righteously first Timothy chapter 3 look at verse 1 here we have the The the qualifications of a pastor or a bishop first Timothy 3 verse 1 the Bible says this This is a true saying if a man desired the office of a bishop he desired a good work By the way, let me tell the whole fast family Pastoring a church and I understand that brother Jared is becoming the pastor now Officially, but he's been playing the role and doing the work and it is work He the Bible says if a man desired the office of a bishop he desires a good work Then the Bible says this a bishop then must be blameless notice. It doesn't say sinless But it says blameless What does that mean it means to live above board it means to live above reproach? It means that you can't be blamed or there's no major sin in your life that you could be blamed for and we as men Of God should live righteously should live blamelessly But our church families should never expect anyone to live sinlessly We should hold fast to personal integrity What does that mean that we as preachers and as men of God have to take our testimony seriously and we ought to live Righteously, but it means that our church families should not expect more Then what the Bible? Expects which is to live a blameless life not a sinless life Second Timothy if you would you're there in 1st Timothy go to 2nd Timothy chapter 3 2nd Timothy chapter 3 look at verse 10 2nd Timothy 310 the Bible says this but thou has noticed what what Paul says he's writing this letter to Timothy He says but thou has fully known my doctrine. He says you know what I believe you know where I stand You know the positions I take then he says this manner of life He says you know the type of life that I live you know my behavior my conduct He says you fully known my doctrine my manner of life purpose faith long-suffering charity patients Look, we need to hold fast to personal integrity. What does that mean? It means that we should live righteously But it also means this that we should defend our righteousness You're there in 2nd Timothy Go with me if you would to 1st Peter chapter 3 2nd Timothy Titus by Lehman Hebrews James 1st Peter and do me a favor Keep your finger there and 2nd Timothy or put a ribbon or a bookmark there because we're gonna leave it And we're gonna come back to it but go to 1st Peter chapter 3 2nd Timothy Titus by Lehman Hebrews James 1st Peter 1st Peter chapter 3 See Not only should we live righteously, but we should also defend our righteousness in ministry you say why here's why because in Ministry you're going to be falsely accused Brother Jared. I'm here to tell you I'm gonna lay my hands on you and ordain you as the pastor of this church and And I believe that great things are ahead for you. I believe God's gonna use you and God is using you God God's gonna continue to use you in a mighty way, but let me make you a promise with this ordination will come false accusations Against you against your family against your children By the way, this is why the Bible says he God understood this This is why God said against an elder receive not an accusation But before two or three witnesses, you're not even supposed to receive it You're not even supposed to hear it out. You're not even supposed to click on the video and watch it on YouTube Unless you've got the two or three witnesses And you say well the two or three witnesses. This is not two witnesses one guy tells another guy The what did you witness? See we are to defend our righteousness. Why because false accusations The darts of the devil will come our way and how do we fight that off? We fight it off by living right and doing right and eventually our lives will speak for themselves First Peter chapter 3 look at verse 16 notice what the Bible says having a good conscience having a good conscience the word conscience It's talking about someone Who who who is has a clear conscience not someone who's sinless not some someone who doesn't make mistakes But someone who is doing right in their heart having a good conscience that whereas they speak evil notice Whereas they speak evil of you as of evil doers that they may be a shame That falsely accused your good conversation in Christ Notice he says they speak evil of you as of evil doers by the way Let me say this brother Jared said this in the in the in the announcements You know just mark it down when there are people who have made it their job, too I'm gonna bring this pastor down. Let me tell you all the bad things about this pastor.  What does that mean?  Well, let me explain Sometimes you answer and sometimes you don't Notice notice this seeming contradiction in the Bible Proverbs 26 5 and Proverbs 26 4 and 5 It seems like it's a contradiction except for the fact that Solomon put the verses right next to each other So it's obviously not a contradiction Proverbs 26 4 says answered not a fool according to his folly Sometimes you don't answer the fool Why less thou also be like unto him Then in verse 5 he says answer a fool according to his folly. You say why less he be wise in his own conceit See sometimes the accusations come and you just don't answer them You just ignore them and look in ministry You need to know this and you need to understand this that if a pastor who's doing what he's supposed to be doing Decided to just confront every accusation attack every accusation. I'm gonna make everything right then you're that's all you're gonna do all day long You don't have time to do nothing else So a lot of times you don't answer answer not a fool according to his folly Let's not also be like unto him But sometimes you do answer a fool according to his folly Unless he be wise in his own conceit you say well, how do you know the difference?  You must defend your righteousness in ministry. You must hold fast the personal integrity I remember I don't know. This was maybe a year or two ago We had the these people Who made a video? exposing pastor Jimenez financial fraud pastor Jimenez Verity Baptist Church, you know big major conspiracy and What what they did was they took this this this form that as a nonprofit We fill out every year every couple of years for the state of California and it's it's a form that it's public records available to to anyone who wants it and it's just Updating that the nonprofit is still like the existence that we're still we haven't Folded it or whatever canceled or stopped and in in that it gives you a place to list different people We put our staff there and it gives you a place to list their addresses And you it had my name and other staff people's names one of the names on there was brother Stuckey And this was during the time when brother Stuckey was transitioning to the Philippines We just sent them to the Philippines To to start a church there Verity Baptist Church Manila, and he was living in a hotel He'd just gone there, and he was living in a hotel hadn't got a house yet And and we were waiting a little bit because we want to kind of figure out where the church was going to be and he Wanted to get the church building secured first and then find a place to live near that and all of that for so for that Reason we put the church address under his name now.  Therefore these people are wicked and they're just exposing us for all this Stupidity and you say well, what'd you do? Well for a while We ignored it because I just kind of laughed and shook my head and thought these people are idiots but you know Eventually this this this full this verse applied answer a fool according to his folly Let's see be wise in his own conceit and I never actually responded to it But I did write a little somebody asked me about it I wrote a little email and they got posted on Facebook somewhere and all I said was this look if you're gonna take the time to Expose a church based off a financial document You might want to take the time to actually read the financial document before you expose them because if you look at the Instructions it says that you can put the employee's personal address or the address of the church Which is what we did but here the here's all I'm saying is things like this come up all the time Where people just want to expose you and just want to show and by the way even if it was wrong And it wasn't wrong, but even if it was wrong, what does that prove? What does that show?  We must hold fast to personal integrity.  I believe go to Proverbs chapter 4 Proverbs chapter number 4 You're in Proverbs 26 go back to Proverbs 4. I Said number one you must hold fast in ministry You must hold fast to personal integrity number 2 in ministry. You must hold fast to proper instruction Proverbs 4 and verse 13 notice what the Bible says it says take fast hold hold fast fast hold same thing take fast hold of Instruction let her not go keep her for she is thy life here We're told that we must take fast hold of Instruction go to 2nd Timothy if you would 2nd Timothy chapter 1 I hopefully you get your place there in 1st and 2nd Timothy 2nd Timothy chapter 1 Notice what the Apostle Paul says here in 2nd Timothy chapter 1 and verse 13 Proverbs says Take fast hold of instruction and look in 2nd Timothy 1 13. We'll see the same thing and let me just say this the listener The one being instructed should hold fast to proper instruction. Look at the Bible is teaching You should be ready to hear and to receive 2nd Timothy 1 verse 13 hold fast The form of sound words Which thou has heard of me in faith and love which is in Christ Jesus as The listener as the church member. I'm talking to the Not the very about more the very about the church family, too But I'm talking to the whole fast about the church family as the listener your job is to hold fast the form of sound words Which thou has heard of me the apostle Paul says your job is to be like the Bereans remember the Bereans in the book of Acts The Bereans the Bible says that they receive the word with all readiness of mind They were ready to receive it. They wanted to hear it. They wanted but they also search the scriptures daily whether those things were so Let me say something to you a whole fast Baptist church something You can help your pastor with when your pastor stands up to preach be ready to hear and to receive what he has to say But don't be just constantly examining him for every little thing that he said wrong And what he shouldn't have said and you said this and it wasn't correct. Let me tell you something. He's a man He's gonna make mistakes You try getting up and preaching for an hour three times a week for ten years And let's and let's see how your track record is.  I'm gonna expose him Got the video ready to go. You said what is your job as the listener? Here's your job hold fast the forms of sound word Which thou has heard of me in faith and love which is in Christ Jesus notice verse 4 That good thing which was committed unto thee keep by the Holy Ghost which dwelleth in us Go to 1st Thessalonians chapter 5. You're there in 2nd Timothy.  You ought to Show up and be ready to receive I notice despise not prophesying Prove all things Does everything that brother judge say is everything he's gonna say correct possibly not is everything I say correct possibly not your job is to prove all things.  Well, if we were a cult we wouldn't be encouraging to go home and search the scriptures daily To see whether these things were so you got to prove all things you say, okay So I'll despise not prophesying I'll prove all things then what do I do if I find out that maybe something that was said was incorrect Here's what you do hold fast that which is good You keep the good and and if something was said was wrong incorrect, whatever you say He's just a man He's a human being If I sit up and preach for an hour a week 52 weeks a year 10 11 years, I'm sure I'd say stupid things too is the way you should think We ought to hold fast to proper answer and I'm talking about brother Jared I mean brother Jared is a smart guy obviously you listen to the man speak you can tell he's an intelligent man I'm talking about all preachers You ought never show up to church with this just attitude like let's see what he has to say this time Why don't you be ready to receive the word and maybe you'll find that God doesn't work in you So in ministry we must hold fast to personal integrity We must hold fast to proper Instruction the listener should hold fast to proper instruction But let me say this brother Jared the preacher and I know you know this But I want to remind you on the day of your nation the preachers should hold fast to proper instruction See Proper instruction means it needs to be complete Go back to 2nd Timothy if you would you're there in 1st Thessalonians go past 2nd Thessalonians into 1st Timothy 2nd Timothy chapter 4 look at verse 1 Tonight, I'm giving a charge to brother Jared I'm charging him as the pastor of whole fast Baptist Church to Hold fast to personal integrity and to hold fast to proper instruction. Well, here's what Paul said to Timothy a Preacher he says I charge thee therefore before God and the Lord Jesus Christ Who shall judge the quick and the dead at his appearing and his kingdom preach the word be instant in season Out of season the word be instant to the that term means be ready Be Prepared in season out of season. What does that mean whether it's popular or not? Whether people like it or not you preach the word be instant in season out of season then he tells us here's what that looks like Reprove that's negative Rebuke that's negative Exhaught that's positive with all long suffering and doctrine You'll find that God is often telling us that when it comes to preaching it'll be two-thirds negative one-third positive And and and I believe this should happen in a sermon, you know, I'm not saying two of the sermons should be negative What should be positive? I'm saying every sermon should have some negative aspects to it some positive aspects to it But we as preachers brother Jared need to remember that we need to hold fast to proper instruction What's proper instruction that means that it's negative. What's wrong with the false TV preachers? What's wrong with the Joe Lohsteins and the DD Jakes and the Rick Warren's what's wrong with those guys? Here's what's wrong with those guys. It's not what necessarily all of the time. It's not what they say. It's what they don't say They're these positive only preachers and We need to remember as Bible believing Baptist preachers that we must hold fast to proper instruction What does that mean sometimes it's going to be negative And by the way not only in the preaching as leaders sometimes we're gonna be negative as As leaders sometimes as the pastor of the church sometimes you're gonna have to tell people no Passive this great idea. I was thinking that we could start this Bible study and at my house and I was gonna invite all oh, you know Some 60 year old guy. I was gonna start this Bible study for single young ladies at my house. No I mean, oh, here's what I'm saying sometimes as the pastor you guys say no No, we're not doing that. No, we're not going there. No, we're not going in that direction. No, I'm sorry That's not gonna happen. By the way, not just the pastor sometimes the pastor's wife No I'm sorry. We're not gonna do that We're that that's not gonna happen here. We love you. We care for you, but no the answer is no and here's the tendency The tendency is to want to become this like positive only go to Matthew Matthew chapter 13 if you would First book of news estimate should be fairly defined Matthew 13 The tendency is to to not want to be negative sometimes because here's the thing. We're all human beings. We all want to be liked We all want to be loved We as preachers cannot we as leaders cannot we as pastors Pastors wives cannot be positive only sometimes we have to correct Sometimes we have to be negative sometimes we have to say no and here's a problem with that Is that sometimes when you correct people? They don't like it And sometimes when you correct people, they don't like you I want to explain this to brother Jared and Miss Heidi And I want to explain it to the whole fast Baptist Church family And I hope you'll understand But there is this common experience among pastors and pastors wives This realization that comes about Once you've been in ministry for a while and Jesus spoke about it Jesus explained it. Let me show it to you Matthew 13 verse 57 This is something that all pastors talk about Maybe I shouldn't say all but many pastors and the pastors that I know personally my personal friends We've talked about this and it's kind of just a in it's an interesting realization Matthew 13 57 says this and they were offended in him Jesus is in his hometown preaching to the home crowd and They were offended in him. They were offended at Jesus But Jesus hadn't to them notice a statement Brother Jared, I'm sure you've seen it. I know you've seen it, but I want you to consider it Notice what Jesus says a prophet the word prophet there is referring to a preacher a Preacher a prophet is not without honor now the word honor means respect reverence admiration appreciation Jesus said a prophet is not without honor now the way that that's worded is in the negative But when it says is not without honor it means that a prophet gets honor a Prophet a preacher Goes to preach somewhere and they are oftentimes honored reverence admired appreciated People want them to sign their Bibles people want them to take pictures with them people want them to to talk to them and Those are good things. I'm not saying there's anything wrong with that.  Remember the sinless son of God Talking about his ministry He says I'm here in my hometown talking to the people I grew up with the people that saw me grow up I mean if there's anybody who should understand that I'm the sinless son of God that I never sin that I never did anything wrong It should be these people he says but they have they're offended in me and he says here's why Jesus says here's why a Prophet is not without honor save in his own country and in his own house Here's what he what he means by that And go with me to second Corinthians if you would second Corinthians chapter 12 you there in Matthew You have Mark Luke John acts Romans 1 Corinthians second Corinthians a Prophet is not without honor saving his own country in his own house There's this common experience and I feel like I would be doing you a disservice if I did not take the time to explain this to you and your wife and And look Jesus said it and that's good enough But I can tell you I know that it's true because I've experienced it I know many of my pastor friends we talk about this and it's just this this common realization that Virtually all pastors and there's wives experience and it is this it is When not all and please understand that not all but sometimes it feels like many of your own church people seem to Love or respect or admire or reverence other pastors and other pastors wives more than their pastor and their pastors wife and This is what Jesus is talking about. He says look a prophet is not without honor. They have honor except Jesus says In his own country And in his own house Now here brother Jared. Here's why This can be bewildering at times Or it can be confusing at times Because you think to yourself My wife and I are the ones that spend time with these people My wife and I are the ones that are there in their time of need We're there in the middle of the night We're there at the hospital bed. We're there to counsel them We show up at their lowest points We're the ones that are there when they need us. We're the ones that are there We're the ones that that that preached to them every week that that that talked to them on the phone We take the call early in the morning. We take the call late at night We we we are we creep with them and we rejoice with them We're there and sometimes you just kind of wonder at the lack of loyalty And it feels like other pastors sometimes are more loved and appreciated and respected by the people that you give your life to and you just kind of think to yourself what is that and Jesus talked about it. He said a prophet is not without honor save in his own country and I want you to notice brother Jared Paul talked about it second Corinthians 12 leger is 15 He says and I notice this and I will very gladly spend and Be spent for you This is what Paul says I'll be there when you need me. I'll pick up the phone. I'll be there early in the morning late at night I'll be there at the funeral home. I'll be there at the hospital bed. I'll be there to Perform the funerals. I'll be there to perform the weddings. I'll be there to do the counseling I'll be there to do the premarital counseling the not so premarital counseling. I'll be there I'm very gladly to spend and be spent for you though the more abundantly. I love you Paul says The less I'd be loved And you think to yourself Where does this come from and You come to the place and look I'm just telling you this is a conversation sometimes pastors and pastors wives have You want to know what we talk about at these pastors meetings sometimes? We think have you noticed that? You're like, yeah, it's kind of weird. It's kind of like what Jesus said. It's kind of like what Paul said and You reserve yourself you reserve yourself to this idea that maybe that's just the way it works Maybe because you spend so much time with people you just become so familiar to them that you know the other pastor in the other state The other pastor in the other city. He's the superstar.   You know, so you reserve yourself to this idea Maybe that's just how it is, you know the pastor down the grass always green on the other side, right? Pastor down the streets always just the the better guy and then you hire staff I'm trying to help your budget Then you hire staff you'll hire stuff one day and you'll be surprised How it seems like the church family and by the way, you're thankful for this Because you love your staff and you want your staff to be loved and You'll see how the church family sometimes it seems like they're tripping all over themselves to love the staff Take care of the staff remember their birthdays remember their anniversary is just just flood them with gifts Just make sure that they're highly cared for and loved for and and and you think okay Maybe it's carnal of me to think that the pastor and the pastor's wife should be loved more than the staff But you think they should at least be loved as much as the staff and you're just kind of like Are we not friendly? Are we just what's the deal here? I was talking about this with my wife and She made she made the statement and I and I feel like I knew the statement I understood this statement But she made the statement and it kind of just brought clarity to the whole thing go to Galatians chapter 4 of you Would you there in second Corinthians go to Galatians? It brought it brought clarity to this whole idea and Brother Jared it took me 11 years to figure this out. I'm trying to help you out. I'm giving you a head start, okay? My wife brought this up to me. She said well, here's the thing The reason that those other people are so loved Is because they don't correct these people See, you know you think you listen to a sermon from the pastor in another city in another state And they're screaming and yelling and blah blah blah they're screaming at their church people or whatever their church people are getting offended He's saying that about me, but you don't feel like that But when your pastor gets up and screams and yells and whatever you're like he's preaching that about me and you're probably right See the other pastor doesn't correct my people Who corrects my people I do my wife does I Go to their church. They want to take pictures with me and find my sign their Bible and do those things But you know what I don't I don't correct them. I don't know them But their pastor does them their pastor's praise for them.  You got to take care of this.  Let me tell you that's not what we believe here See here's here's what Paul said Galatians 416 Am I therefore become your enemy? Am I therefore become your enemy? Because I tell you the truth. I I hope you love all the other pastors in the new FB.  That's because we're the leaders That's because when you say something stupid, we don't get to sit there and go We have to say no No, no, no You said what are the takeaways? Here's the takeaways for the Jared Miss Heidi you need to be clear about your job Your job is to tell the truth Your job is to keep this church straight keep this church right and if that means that you don't get that many Anniversary cards and you don't get that many birthday cards and people don't like you as much as they like the other pastor They don't follow over Your special days as they do for all the staff that doesn't matter because your job is to hold fast to proper instruction But let me just give a little hint to the whole fast family Don't be like my baby Hannah I have a we have a daughter. She's two two and a half years old. She's a baby And Hannah's the most loving thing. I mean, she loves me. She loves my wife. She's always wants to be on us She wants to be hugging us. She's whatever, but we're her parents. So we have to correct her And you know what Hannah says to us when we correct her we said no You're not my best friend You know how that's how some church members are Hey, listen sister listen brother.  I'm getting a pastor. I'm getting a pastor.  He meant as I wish you were like pastor Anderson. Just remember their church people don't like them either What Must we hold fast to in ministry we must hold fast to personal integrity What must we hold fast to in ministry we must hold fast to proper instruction What must we hold fast to in ministry Go to Hebrews chapter 10 if you would you're there in 2nd Timothy go Past Titus philemon into the book of Hebrews 2nd Timothy Titus philemon Hebrews I said number one personal integrity number two proper instruction number three in ministry We must hold fast to our professed ideology The word ideology means what we believe A set of doctrines Hebrews chapter 10 and verse 23 Notice these words Let us Hold fast The profession of our faith Here's the key words without wavering The word waver means to falter to be unsteady For he is faithful that promise In ministry sometimes the ministry gets hard and we cannot waver in what we believe We've got to hold fast the profession of our faith without wavering Now if we're wrong about something then we should fix what we're wrong about But once we've studied something out and we we we and and and we see clearly in the bible Hey, we've got to be instant in season out of season You've got to hold fast the profession of our faith without wavering Without quitting when it gets hard when it gets difficult when the sermons go viral when the news media shows up When people start questioning and saying do you really believe you've got to stand up and say yeah, I really believe it I'm going to hold fast to the profession of our faith and I'm not going to waver This isn't a game This isn't our first rodeo We've been doing this we've been in it That's just one of the things I love about the the the satellite ministry is that you get to Watch a man and his wife and his family Uh Play the role of a pastor before they are the pastor and you get to see it becomes real clear Go to james if you would you're there in hebrus go to james it becomes real clear in the satellite ministry Just after a few weeks and a few months it becomes clear they've got it They've got the pastor's heart. They've got the pastor's wife's heart brother jared calls me We we text every week and he calls me every few weeks and miss hidey calls my wife every Once in a while and you can tell by their questions and what do we do in this situation? And what do you think about this and and have you experienced this before you can tell by their questions that they They've got the pastor's heart. They love their people We have to hold fast and say this is what we believe and we're not changing Today we're cutting the umbilical cord from whole fast baptist church It will not be connected to verity baptist church But I believe and I pray and I hope that 10 years from now 20 years from now We'll be able to say this church and that man has held fast to the profession of his faith without wavering James 1 5 says if any of you like wisdom let him ask of god that give it to all men liberally and upgrade it Not it shall be given him but let him ask in faith nothing wavering Nothing to sway back and forth that thing to become Unsteady Ephesians says that we should we should not be tossed about with every wind of doctrine We should hold fast to the profession of our faith For he that waver there's like the wave of the sea driven with the wind and tossed for let not that man Think that he shall receive anything of our lord a double-binded man is unstable In all his ways This is who we are and this is what we believe I mean, I mean we we should be honest with people and say look we believe salvation is by grace to the faith Not of words. We don't believe you got to repent of your sins to be safe. We believe in eternal security We believe the king james bible is the word of god. We believe in soul winning. We believe in sanctification We believe in holiness. We believe in separation.  We're just telling you this is who we are We are a whole fast and we are a whole fast to that profession and say I believe the bible i'm a baptist And when things get difficult See when things get difficult we must we cannot waver what we believe Go to hebrus chapter 4 When the trials come the persecution comes when things get hard We can't waver What we believe And we must remember In whom we believe Hebrus 4 verse 14 Seeing then that we have a great high priest That is passed into the heavens Jesus the son of god let us hold fast our profession See our profession is connected To the fact that he Resurrected and ascended and is passed into heaven Jesus the son of god go to hebrus chapter 3 look at verse 6 But christ as a son over his own house whose house are we if we hold fast the confidence and the rejoicing of the hope firm unto the end Here's what i can tell you about ministry or that jared i'm talking to you and you know this That sometimes you get to go somewhere Sometimes you get to preach somewhere You might be invited to like a red hot preaching conference or Fundamentalist conference or fire breathing conference. You might be asked to be the guest speaker at some event or something And you go there and for about 60 minutes people tell you how great you are and how your ministry has helped them And how your preaching has helped them and they want to take pictures with you and they want you to sign their Bibles and they want you to do all those things and we appreciate all that and we were thankful for that But that will not get you Through the ministry The red hot preaching conference and all the hype will not get you Through the trials the battles the difficulties the hard work That is called the ministry You say well, what do you do? Well, you do what david did when he was a leader and he felt lonely He encouraged himself in the lord See we must remember Why we got into ministry to begin with It wasn't for the people because we got into ministry before there were any people It's not for the youtube subscribers because we got in the ministry before there were youtube subscribers It's not for the accolades. It's not for the The pats on the back although we appreciate all of that we got into it for one man the lord jesus christ Amen And when things get hard We must hold fast the confidence and the rejoicing of the hope firm unto the end And that hope is christ Go with me just real quickly to first timothy chapter four if you would you kept your place there first timothy chapter four Look at verse 14 We're about to transition into the ordination part of this service First timothy chapter four and verse 14 says neglect not the gift that is indy Which was given the by prophecy With the laying on of the hands of the presbytery The presbytery is a reference to the elders The bishops the the spiritual leaders The bible talks about this laying on of hands it is A given giving of authority It is a vote of confidence It is a commission To do the work of god as an ordained minister Acts chapter 13 if you would let me show you a couple of verses Acts chapter 13 and verse one Matthew mark luke john ax ax 13 verse one Now there were in the church that was at anti ox certain prophets and teachers As barnabas and simian That was called niger and lucius of sireen And menea which had been brought up with herit the tatrar and sol As they ministered to the lord That's what brother jared has been doing. That's what his whole family has been doing the last two years here As they ministered to the lord and fasted the holy ghost said Separate me barnabas and sol for the work Where and to i have called them and of course these men are being called into the work of evangelism But notice what it says here in verse three and when they had fasted and prayed and laid their hands on them They sent them away the laying on of hands is a commissioning It is an endorsement It is a giving of authority The bible says to lay hands suddenly on no matter This is not something that should be done quickly or swiftly It needs to be earned Needs to be a man that has met the qualifications that has shown himself faithful that has done the work of an evangelist And it is my honor tonight To lay hands on brother jared and ordain him as a pastor of whole fast baptist church for the jared I'm going to ask that you would come up here at this time Let's pray Emily father What I thank you for this man Brother jared I thank you for his personal friendship to me Thank you for his wife his children The blessing they've been to me and my family The blessing they were at at our church in sacramento And the work they've done here Lord he's shown himself faithful He's a man of character and integrity And lord I pray that you would Give him your power lord. I know he's filled with the holy spirit, but I pray that you'd anoint him with fresh oil For this work that you've called him to do to be the pastor From his hiding to be the pastor's wife of whole fast baptist church Lord through this action of laying on of hands. We ordain him tonight This is our vote of confidence This is our giving of authority That he would lead this church. We love you lord. We pray you'd use them mightily You'd bless him you give him wisdom and I ask for his family that you'd bless them you protect them in ministry I ask for this church family that they would come around their pastor and love him and support him And love his family support his family and that you would do great things here And lord I pray that this church would be true to their name that they would hold Fast to the things that have been given unto them in the matchless name of christ. We pray amen