Thanks for your post. I agree with everything you said about PHP including “the ease of the language means that it is often poorly written.” I think the ease of the language is also one reason that PHP is used so much across the web. It has a relatively low maintenance burden because unlike many other languages pretty much all shared web hosting providers have PHP pre-configured so all you have to do is upload PHP files alongside your HTML files and it will just work for the most part. This is a big difference in comparison to languages like node.js or Go where you have to start the program running and then figure out how to keep it running 24/7.
I enjoyed reading your post. I was happy to read as you wrote about Jesus’ knowledge of Judas’ betrayal. That is the prophecy I chose as the one that stuck out to me the most as well. I agree that “Jesus not only forgave his persecutors, but felt love for them.” I think we often think about Jesus’ pain on the cross but not his pain on the earth while he dealt with temptation, betrayal and more. Jesus dealt with a lot when he was on earth beyond just his final death on the cross. But thankfully, he didn’t avoid pain and discomfort and chose to love Judas and all other sinners, including us!
The logical basis is around the hypothesis test discussed in the Discussion Board Forum 2 instructions. It mentions that to reject the hypothesis that Jesus is not the Messiah would require a level of significance 0.00000000000000001 and the smallest level of significance used in mathematical equations tends to be 0.01, which means that the hypothesis that Jesus is not the Messiah can definitely be rejected, but that means you have to think about what the level of significance means in hypothesis testing. The level of significance is “the probability with which we are willing to risk a type I error”. A type I error means that we reject the null hypothesis (Jesus is not the Messiah) when it is in fact true. This means it is only 0.00000000000000001 likely that Jesus is not the Messiah, but logically and mathematically there exists a small variable of chance that we could be rejecting the null hypothesis incorrectly.
The biblical basis for the fact that there is no absolute proof that Jesus is the Messiah comes from the fact that God requires faith. Hebrews 11:6 says “Now without faith it is impossible to please God, since the one who draws near to him must believe that he exists and that he rewards those who seek him” (CSB). and Hebrews 11:1 defines faith as “the reality of what is hoped for, the proof of what is not seen” (CSB). Which means in order for these verses in Hebrews to be true, God requires faith and faith requires us to place our hope in God. If we had absolute proof of Jesus being the Messiah faith would not be required.
PHP has been the bedrock of web development for decades. It was actually the first server-side language I learned how to program, 15 years ago. It has historically been one of the most dependable server-side programming languages, but the question is does it still hold that place in today's fast changing, ever growing market of programming languages?
PHP has a lot of things going for it, historical reliance, a large base of programmers who know and program it, server support in essentially every shared hosting plan available, as well as being the foundational language in two of the most popular Content Management Systems available (Wordpress and Drupal). Ease of use for newcomers is also key to its success. Once PHP is integrated with the web server it rarely if ever has to be managed or restarted and individual PHP scripts are run automatically by the PHP server service.
There is a lot of competition in today's programming market. Many of them have better tooling, are more exciting to work in and have great features that help with reliability such as typed variables, native multi-threading and speed of processing. But are these improvements worth the cost of the reliability and dependability of PHP? For me, that depends on the use case. If the application isn't going to have anyone experienced with managing it routinely, PHP is the best route to go because of the ability to easily deploy it on shared hosting environments by just uploading the scripts, while other languages such as Node.js, Swift, Go and others require an executable to be run and to ensure it remains up in the event of a crash, there needs to be a secondary server that restarts the application. If you need modern tooling with robust features such as typed variables and multi-threading it can help to use a more modern language rather than trying to use new libraries that make PHP more modern.
Ultimately I think it comes down most of the time to personal preference. There are likely few cases where any specific server-side language is going to drastically change things unless the application is frequently under a large load or has a lot of intensive data processing tasks.
This is a great post, outlining a lot of important aspects around security and the people involved. I agree that there are essentially three roles and that those roles might be fulfilled by the same person or by two or three different people or even organizations.
Something I would add in regard to using trusted wifi connections is that there are a lot of services out now that provide VPNs (Virtual Private Networks) that provide a secure tunnel between your computer and that computer. VPNs are a great solution to using the internet from potentially insecure wifi locations like fast food, hotels and more.
Website visitor security is important and I believe the responsibility falls on a couple roles which may or may not be the same person, company or separate people or companies.
A large amount of the responsibility for website security lands on the website programmers both front-end and back-end. There are a number of various attack vectors that hackers and other malicious parties can attempt on a website and it is up to the programmers to understand common errors and to enable robust programming tactics in order to avoid valuable customer information to fall into the wrong hands.
Responsibility also falls on the web server manager. This could be the programmer or a separate person in the same company or even a separate company if web hosting is outsourced. The security of the website itself doesn’t matter if the server that is making the website available to the rest of the web is insecure. For this reason, it’s important for programmers that don’t understand the dynamics of web hosting management should outsource that task rather than trying to handle it themselves.
Encapsulation is a programming concept that refers to the ability to hide information about how a section of code works, instead requiring the person using the code to only have to know what information to provide and what results to expect. “Implementation details can be hidden within the objects themselves. This information hiding, as we’ll see, is crucial to good software engineering” (Deitel & Deitel, 2018, p. 12).
A great example of encapsulation in the Bible is Salvation. As Christians we only have to know what Jesus did: that He died on the cross for our sins, and rose to life defeating sin and death (1 Cor 15:3-4). If we believe that and put our trust in Jesus for salvation, He will save us. How does this work? We don’t understand the entirety of it. We understand some things, that death came for everyone through Adam’s sin and yet is offset as resurrection comes to everyone through Jesus’s righteous death (1 Cor 15:21-22).
The core of what we have to know is just what we have to provide and what results to expect: We have to believe in God and that Jesus, His son, came and died for our sins to restore our relationship with God. We know that happens because God has provided the explanation (or in programming terms, interface) for us through the Bible. However, the exact details of how Jesus’ death on the cross for us reverses the sins of each of us is never truly understood and explained. The Bible uses metaphors to explain to us what is happening (that we are justified, that we are adopted) but it never explains how it happens. This is the essence of encapsulation when it comes to programming.
A second form of encapsulation in the Bible is the battle at Jericho. In Joshua 6, God tells Joshua to have the Israelites circle Jericho one time a day for six days and on the seventh day to circle it seven times and to shout and blow the trumpets (Josh 1-5). This is the input: circling Jericho and blowing trumpets. The output: The city of Jericho’s walls will collapse and the Israelites will be able to take the entire city.
God doesn’t explain how the city’s walls will collapse or what circling the city has to do with it. That is all God’s business. All that the Israelites have to worry about is doing what God said, and watching as they get the results that God promised. In this sense, Jericho is a perfect example of God using encapsulation.
Patrick, like you mentioned that plants and trees could use the seed class for the purpose of reproduction. Nothing outside of a tree has to worry about the way that it reproduces, it just produces a seed that when planted and watered produces a new tree. All the details and instructions for the seed to grow into a full tree are contained inside.
In a similar way, for thousands of years we as humans didn’t know anything about the way that we reproduce except the basic concepts. We don’t will ourselves to reproduce, our bodies handle it naturally through specific acts and functions. The output is a baby. The mother’s body handles growing, caring and raising the baby until it’s birth. None of this is things that we have to outright act upon, it is all hardwired into who we are as human beings. It is a function of the public interface that results in the creation of a new human being. “The price instance variable…is hidden inside the object…and protected by an outer layer of public methods” (Deitel & Deitel, 2018, p. 256). It’s pretty amazing when you think about it. It’s also kind of like humans are packages in Java and our individual systems in our bodies are classes, allowing for private functions that aren’t even accessible to our conscious mind, while other things have package access. I, as part of the Eddie Package, have access to things and control within my body that you, as an external package don’t.
The way God created animals is done in a very polymorphic way. Some animals breathe air and other animals absorb air from water through gills. This can very through types of animals, even animals that swim! These differing abilities to breathe air or water is reminiscent of the way we use Interfaces or Abstract classes to cross Class definition boundaries.
In Genesis 1:24, it mentions “Let the earth produce living creatures according to their kinds”, which is another way the Abstract Animal class might work. An Abstract procreate function might be defined in different ways by different animals. Some produce live animals and others produce eggs. Some require two different genders (parameters) and some produce asexually (like it has no arguments).
God’s creation in Genesis 1 is actually very similar to object oriented development. The idea in object oriented development is that you want to start with the most general use case and then you want to create more definition from there.
In Genesis 1:3-5 God creates a general framework, in which creation can live. He creates light and darkness, day and night. Everything lives in day and night. Secondly, he creates sections of sky, water and land (Gen. 1:6-10) these are the general terrains and atmospheres that humans and animals will reside, but each one is vastly different than the other.
God then begins to get more specific, in Genesis 1:11-19 He begins to give attributes and behaviors to the various environments. He provides the Sun and the Moon for the sky and provides green vegetation for the land.
Finally, God created life in each of the environments (Gen. 1:20-25). He created birds to fly in the sky, all kinds of sea creatures for the water and all the creatures that walk and crawl on the land. In Genesis 1:25 it says “So God made the wildlife of the earth according to their kinds, the livestock according to their kinds, and all the creatures that crawl on the ground according to their kinds” (CSB). The phrase, according to their kinds reminds me of classes in object oriented development. It’s like God had class definitions of the different type of land creatures: wildlife, livestock and crawling creatures. Yet those aren’t even all the creatures God made, those are just the ones that inherit from the “LandAnimal” abstract class.
In Genesis 1:26-28, God decides to create man. Man in some ways inherits from the “creatures that walk on the land” class of animals, yet mankind has something special. An “added Interface” if you will, that provides particular attributes not found in other animals. “Interfaces define and standardize the ways in which things such as people and systems can interact with one another” (Deitel & Deitel, 2018, p. 386). In fact, this Interface is only found in one other definition. God. God provides parts of His character and personality into mankind even though God and humans are completely different, we share a common set of attributes. In a similar way, a programmer can have two completely different classes share similar attributes through an Interface.
References Mathis, D. (2016). Habits of grace: Enjoying jesus through the spiritual disciplines. Wheaton, IL: Crossway. Kindle Edition.