Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

Wednesday, February 13, 2008

The Word

One aspect of Creation that has been made more poignant to me over my years of computer programming is the fact that it was done by the Word.

"In the beginning was the Word, and the Word was with God, and the Word was God. The same was in the beginning with God. All things were made by him; and without him was not any thing made that was made." [John 1:1-3]

Aside from the theological concerns of the passage, I have found it interesting to consider why the Lord has been revealed to us as "The Word" in creation (and not, say, the King, or the Lamb, or any of the many other titles and names given to Him in the scripture).

Of course, if we go back to the Genesis 1 account, we find "And God said...", so there's an immediate answer there. "God said" yields "God's Word" in action.

Beyond that, however, consider what the spoken (or written) word means to us. It is the avenue by which we exchange ideas, communicate needs and wants, and record history. In the imperative form, it is how we express things in order to get them done.

Not to belittle the act of creation in the slightest, nor to exalt mankind beyond his station, but from one point of view, one can see a similarity in issuing commands to a computer, and God the Word directing creation by the power of His command.

We, of course, lack the power to do the thing expressed merely by the virtue of us expressing it. I cannot say "remote, come here." and expect that remote on the top shelf to fly across the room into my hand. Unless we perform the action ourselves, we rely on the power of others to whom we express a command. Therefore, "Hey, son, please bring that remote to me" has more likelihood of becoming reality.

When expressing a desire to another acting agent (i.e. person), we typically rely on a certain amount of understanding and intellect in the other to carry out the expression. The amount of detail which we need to put into the expression is inversely proportional to the degree of trust in which we can place in the agent carrying out the command. That is to say, the less you trust an agent to carry out your wishes without help, the more detail you need to provide.

If I ask my son to retrieve a remote control for me, it requires very little detail (usually). If, however, I were to program even a moderately complex robot to do the same, the amount of detail that I would need to provide in the instructions would be enormous in comparison ("the shelf is 4 feet high; the remote is black and 2.5 inches wide, and is sitting one foot from the left end; etc.")

Part of computer programming is learning that you must rely on the computer, but you cannot trust the computer. Not to say that it's plotting your eventual demise, but rather, it only "knows" what you or someone else has told it. Nothing should be assumed, and every detail will need to be thought out eventually. This leads to another post topic, that of planning and preparation. But for this topic, in order to tell the computer what to do and when, we require some form of language.

True, we can use the language of the computer itself, but that also requires the most detail in communicating what to do. Most modern programming languages have come about in order to interject a lot of assumptions into the programming language, so that more there is more in there to "trust" and less detail to have to handle on our own. Nowadays, a language is more than the syntax and commands put together for making a program, it is also the body of the APIs that are available to the developer for use. These APIs are the bulk of the "trust" that we put into the computer based on what we can assume the computer will "understand" when we issue a command or provide some data.

To bring this home, it's good to remember that, in the Babel world of computer languages and programming, choosing the best language or environment to write a piece of software should involve some considered thought on what level of detail you will need to provide to get done what you need to get done, and what assumptions can be made based on what is provided for you in the language and APIs.

By the way, in creation, the One issuing the commands was also the agent in executing the commands. Full trust, the least amount of details provided. "And God said, Let there be light: and there was light." [Genesis 1:3]

- ckb

Tuesday, February 12, 2008

Prayer

"Pray without ceasing." [I Thessalonians 5:17]

One aspect of Software Development you are not likely to see in many courses is prayer. While prayer is never mentioned in the Bible regarding computer programming, we are taught that prayer should accompany every aspect of our lives.

For many, this means going to God in prayer when we or loved ones are extremely sick, or we lose a job, or some other form of life circumstance that is hard to deal with. For some, it also means giving up prayers of thanksgiving for the joys and blessings of life.

Most, I daresay, especially those who work in technical fields like IT, sequester off their professional life in their minds, to the point that prayer hardly seems relevant to a world of servers and Internet browsers.

Consider, however, Matthew 21:22

"And all things, whatsoever ye shall ask in prayer, believing, ye shall receive."

In teaching His disciples about faith, Jesus makes the bold, but true, statement that there are no aspects of life forbidden from the realm of prayer. We know that unrighteous or sinful desires are inherently excepted, both by the "believing" criteria, and by the expounding of Peter (3:12) and James (1:5, 4:3). But all things are to be considered, meaning that there's not anything we can think up, in belief and a righteous heart, that is disqualified.

What does this mean? Pray for your IT work.

Are you about to start a new software project? Sincerely pray that it goes well, before during and after implementation.

Are you tasked with a seemingly impossible programming task? Pray for wisdom to see it through.

If we believe that God held the rain for Elijah for three years and six months based on his prayer, we ought also to believe that God can accomplish similar work today. It's not too hard for Him to grant you wisdom to decipher any API, or figure out the root of a backup error. If you're not accustomed to it, it may seem "silly" at first. But don't let that put you off. There's nothing too big for God, and there's nothing too "mundane" for Him to concern Himself with it.

"Humble yourselves therefore under the mighty hand of God, that he may exalt you in due time: casting all your care upon him; for he careth for you. " [I Peter 5:6-7]

And, when the Lord answers your prayer, don't forget to render a prayer of thanksgiving for it.

"Continue in prayer, and watch in the same with thanksgiving;" [Colossians 4:2]

- ckb

Thursday, February 7, 2008

Inaugural Post

Several factors have come together to compel me to create this blog.

You see, in my "professional life", I am a computer software developer. In my "personal life", I am a Bible-believing Christian, Primitive Baptist preacher. I'll try to explain more fully another time. Something that has become more apparent to me in living these two lives concurrently (especially in the last decade) is the difficulty in practicing a godly life in the Internet age. I do not think I am alone.

This blog will provide an outlet on issues concerning Christian discipleship in the Internet age. Some questions I hope to delve into:
  • What issues confront those who seek to serve God, while trying to labor in the computer industry?
  • How can we use modern technology in a God-honoring way?
  • Do Biblical principles make for better software? (Strange question, perhaps, but the answer is: "Yes, they do.")
There will also be free software and code samples for download, and hopefully useful instructions.

I hope you find it informative, useful, and enjoyable. And most of all, I pray that it will honor Him, who died for me.

- ckb