Friday, June 26, 2020

Draw Boxes, etc, on Debian GNU/Linux Terminal Window With Go Lang & tcell

     A cleaner version of this document is here.
Draw Boxes, etc, on Debian GNU/Linux
Terminal Window With
Go Lang
&
tcell

Have a functioning Debian system.

Install go

# apt install go

Make sure go works:

Create a workspace directory and cd into it; something like:

$ mkdir ~/PROGRAMMING/GO/HELLOWORLD
$ cd ~/PROGRAMMING/GO/HELLOWORLD

Create a test “helloworld.go” file with the following:

package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hi")
}

Compile it:

$ go build helloworld.go

Be aware that if you copy and paste from this document into a text editor, the quote marks might paste as “smartquotes”, causing your program to generate errors during compilation. In such a case, just manually delete and retype the quote marks.

Run it, to test:

$ ./helloworld

Do a basic app to draw a character on the “graphical” screen

Create a new workspace for our box-drawing program: and cd into it:

     $ mkdir ~/PROGRAMMING/GO/BOXES
    $ cd ~/PROGRAMMING/GO/BOXES

Create a new program file, “boxes.go”, and put the following code into it:

package main
/*
 This code draws a single character (or 'rune', or 'glyph') at a single
 location on a terminal window in Debian GNU/Linux.
*/

import (
     "fmt"
"os"
"time"
     "github.com/gdamore/tcell"
) // end of import

func main() {
// Create a "canvas" (a window, frame) on which to draw
// ‘s’ is the name of the screen/canvas on which we’ll draw
// ‘e’ is some error information the NewScreen() method insists on generating
// (NewScreen() returns both values, so we have to deal with both)
s, e := tcell.NewScreen()

// Deal with the ‘e’ value by checking for some error situations; exit if need be
// (Requires "os" package in "import" section at top.)
if e != nil {
        fmt.Fprintf(os.Stderr, "%v\n", e)
        os.Exit(1)
}
if e = s.Init(); e != nil {
         fmt.Fprintf(os.Stderr, "%v\n", e)
         os.Exit(1)
     }

// Set the 's' canvas’s default bg & fg colors from tcell’s list of colors
s.SetStyle(tcell.StyleDefault.
    Foreground(tcell.ColorWhite).
    Background(tcell.ColorBlack))

// Clear the "canvas"
s.Clear()

// Create a “glyph” using the “rune” (character) we want to draw
glyph := rune('W')

// Create and set the coordinates for where we'll draw our character ('glyph', 'rune')
x := 10
y := 20

// Create and set variables for foreground and background colors
fg := tcell.ColorYellow
bg := tcell.ColorBlue

// We need to send an entire “clump” of tcell info to the 
// SetCell() command below, so we’ll create a copy of the
// default tcell “clump” named ‘st’, and then modify the
// bg & fg colors to what we set above, for just this copy,
// which will be what we draw the cell with.
st := tcell.StyleDefault
st = st.Background(bg)
st = st.Foreground(fg)

// Place the cell at the desired location, with our copy of the tcell “clump”,
// and the glyph we want to draw.  All the cells of the ‘s’ screen/canvas
// except this one will get the default settings, such as the black background.
s.SetCell(x, y, st, glyph)

// Nothing has actually been drawn on screen yet; so unveil the "canvas"
s.Show()

// Pause X seconds before resetting "graphics" screen to normal
// time.Second is the unit (a second); time.Duration is how many units
// (Requires “time” package in the “import” section at top.)
secondsToSleep := time.Duration(3) * time.Second
time.Sleep(secondsToSleep)

//Reset screen to normal
s.Fini()
} // end of main()

Compile it:

$ go build boxes.go

If you get an error like ‘cannot find package "github.com/gdamore/tcell"’,

    $ go get github.com/gdamore/tcell

Run it, to test:

$ ./boxes

You should see the terminal window turn black, and then a yellow “W” printed on a blue background at 10 characters in from the left of the terminal window and 20 lines down from the top of the terminal window.

Feel free to tinker with the settings in this program and recompile/re-run until you feel comfortable with what the program is doing.

Move the Actual Drawing Part into a function

Modify your program so it looks like the one below. Note that the bulk of the program listing has been replaced here with an ellipses (“...”), but you won’t do that in your program listing. I’m only doing so here to make this document less cumbersome. Note also that functions do not have to be below the main() function; they can be above if that’s your preference.

package main
/*
 This code draws a single character (or 'rune', or 'glyph') at a single
 location on a terminal window in Debian GNU/Linux.
*/

import (
...
) // end of import

func main() {
...
} // end of main()

func drawChar(s tcell.Screen, x, y int, fg, bg tcell.Color, glyph rune) int {
    // We need to send an entire “clump” of tcell info to the
    // SetCell() command below, so we’ll create a copy of the
    // default tcell “clump” named ‘st’, and then modify the
    // bg & fg colors to what we set above, for just this copy,
    // which will be what we draw the cell with.
    st := tcell.StyleDefault
    st = st.Background(bg)
    st = st.Foreground(fg)

// Place the cell at the desired location, with our copy of the tcell “clump”,
// and the glyph we want to draw. All the cells of the 's' screen/canvas
// except this one will get the default settings, such as the black background.
s.SetCell(x, y, st, glyph)
return 0
} // end of drawChar()

You’ll notice that the four lines (one line of code, and three lines of comment) were copied from the main() func into the drawChar() func.
Now, of those four lines in main(), leave the three comment lines for now, and replace just the one line of:

s.SetCell(x, y, st, glyph)

with the single line of:

drawChar(s tcell.Screen,, x, y, fg, bg, glyph)

Note also that a new line of “return 0” was added to the bottom of the drawChar() function. I think it’s a good practice to provide a return value from functions. The last “int” of the top line of the function specifies that the return value will be an integer; since we’re assuming everything will work without error, we’re returning a return value of zero, which is usually interpreted to mean “no errors occurred while running this function”. We’re not actually doing anything with this return value, but we could do something like:
   
retVal := drawChar(s tcell.Screen, x, y, fg, bg, glyph)
    If retVatl != 0 (print some error information to the screen or to a log file, etc)

If you compile and run this new code, you should see the same result on the screen.

It may seem like you’ve added some unneeded complexity to your program (which I’ll explain about a bit in a bit), but you’ve just made it easier to draw new characters on the screen. For example, just before the existing lines that say:

// Nothing has actually been drawn on screen yet; so unveil the "canvas"
s.Show()

add these lines:

x = 30
y = 10
fg = tcell.ColorRed
bg = tcell.ColorGreen
glyph = rune(‘?’)
drawChar(s, x, y, fg, bg, glyph)

Now compile and run your program. In addition to the “W” you saw earlier, you should now see a red “Y” on a green background 30 columns in and 10 rows down.

Now for Some Explanation

The function drawChar() expects some information from the main program (aka, the main() function). These pieces of information are sent to the function by the line that calls the function:

drawChar(s, x, y, fg, bg, glyph)

And the function’s top line defines what it expects as incoming information to the function:

func drawChar(s tcell.Screen, x, y int, fg, bg tcell.Color, glyph rune) int {

The number and types of arguments (or parameters) sent to the function must match the number and types of arguments (parameters) expected by the function.

In this case, I used the same names for the outgoing information as for the incoming information, but it’s important to know that (in this case, at least) the incoming information is only a copy of the outgoing information; the variables have the same names, and a copy of the same values, but they are completely different variables in the function than in the main program. Just as Paul Simon the musician and Paul the Apostle from the Bible have the same name “Paul”, they are completely different people, and the “fg” variable in the main program and which is being sent to the function is a completely different variable than the “fg” variable used in the function, even though ti has the same name and an identical copy of the variable’s value.

If we wanted to do so, we could have used different names in the function, like this:

func drawChar(screenOnWhichToDraw tcell.Screen, x_coordinate, y_coordinate int, foreground_color, background_color tcell.Color, charToDisplay rune) int {

The types of the arguments specify what type of information is in the variable.

For example, the ‘s’ (or ‘screenOnWhichToDraw’) variable holds a “clump” of data that is predefined in the tcell package, named “Screen” (thus, it’s referenced as “tcell.Screen”).

The ‘x’ and ‘y’ variables are integers (referenced as “int”), which means they’re just normal “counting numbers”, not fractions or weird imaginary numbers or having decimal points, etc, just -2 or 6 or 248, etc.

The ‘fg’ and ‘bg’ variable are also a pre-defined type from the tcell package, named “Color” (referenced as “tcell.Color”).

And the “glyph” variable is a type named “rune”. A “rune” is a special case of 32-bit integer used with Unicode characters. Just think of them as any character you might find on a computer keyboard, even in far-off places that use weird symbols instead of English alphabetic characters. For example, the letter “W” is a rune; so is ‘w’, and so are ‘╔’ and ‘&’, although “under the hood” the computer really sees them as 32-bit integers. If you remember your ASCII studies from your high-school Computer Literacy Class, ASCII chars are runes.

So the main program sets up a “screen” with a default white lettering on a black background, and sends a copy of that to the drawChar() function as ‘s’ (or ‘screenOnWhichToDraw’). It sends a copy of the X and Y coordinates, and a copy of the foreground and background colors to use for drawing the one cell that will change in the function, and a copy of the rune that we’ll draw in that one cell.

When the function gets all these copies, it creates a new copy of the “clump” of information containing all the style defaults provided by the tcell package, named “st”, and then modifies two of those styles, the foreground and background colors, and then sends that “clump” of information, along with the x and y coordinates and the glyph rune, to the screen’s “SetCell” function, which sets one cell on the screen according to all that information.

Now, Let’s Draw a Box

Let’s create a brand-new function. Leave the old drawChar() function in place; even if we decided to remove the calls for that function from the main program, and never use that function again, it doesn’t hurt us to have it in our program listing file just sitting there doing nothing.

After the last line of the drawChar() function, create this code:

...
} // end of drawChar()


func drawBox(s tcell.Screen, leftEdge, topEdge, width, height int, fg, bg tcell.Color) int {
    // Calculate bottom-right corner of box
    rightEdge := leftEdge + width
    bottomEdge := topEdge + height
    glyph := ' '        // Create a rune variable

    glyph = ‘╔’
    drawChar(s, leftEdge, topEdge, fg, bg, glyph)

glyph = ‘╗’
    drawChar(s, rightEdge, topEdge, fg, bg, glyph)

glyph = ‘╚’
    drawChar(s, leftEdge, bottomEdge, fg, bg, glyph)

glyph = ‘╝’
    drawChar(s, rightEdge, bottomEdge, fg, bg, glyph)

    s.Show()

    return 0
}

Depending on your operating system, there are different ways of entering in these characters. On my Debian GNU/Linux box, I enter such a rune by pressing Ctrl-Shift-U, which will create an underlined ‘u’, then typing in the Unicode number for the character I want. I find the easiest way to find these codes is to web-search for “Unicode character set box-drawing” and using the first Wikipedia hit I get.

To create ‘╚’, I press Ctrl-Shift-U, then 255a, then ENTER.

Next, create the drawbox() calling line (and it’s comment, “Draw a box”, and a blank line above that, leaving the rest of the contextual lines around it alone):

    ...
glyph = rune('?')
drawChar(s, x, y, fg, bg, glyph)

// Draw a box
drawBox(s, x, y, 20, 4, tcell.ColorWhite, tcell.ColorBlack)

// Nothing has actually been drawn on screen yet; so unveil the "canvas"
s.Show()
    ...

When you compile and run this, you should have the four corners of a box.

Note that since we left the starting x & w the same as when we drew the ‘?’, the top-left rune of the box overwrote that ‘?’.

Also notice that I used “magic numbers” in this line; six months from now, when you go to look at this code, you won’t remember what the “20” and “4” represent, or what the colors color. It’s a bad habit to use “magic numbers”, so let’s replace those with more meaningful identifiers:

    ...
glyph = rune('?')
drawChar(s, x, y, fg, bg, glyph)
boxWidth := 20
boxHeight := 4
boxForeGroundColor := tcell.ColorWhite
boxBackGroundColor := tcell.ColorBlack
drawBox(s, x, y, boxWidth, boxHeight, boxForeGroundColor, boxBackGroundColor)

// Nothing has actually been drawn on screen yet; so unveil the "canvas"
s.Show()
   

Now we need to finish drawing the perimeter lines of the box.

If we try to draw the perimeter line after we’ve drawn the corners, we’ll have to make exceptions for the corners, and that can get messy. So instead, let’s draw the entire box, then re-draw the corners with the correct runes. To start, let’s draw the first and last lines with ‘═’ (Ctrl-Shift-U, 2550, Enter), from leftEdge to rightEdge, then the left and right edges, and then finally the four corners, like so:

func drawBox(s tcell.Screen, leftEdge, topEdge, width, height int, fg, bg tcell.Color) int {
    // Calculate bottom-right corner of box
    rightEdge := leftEdge + width
    bottomEdge := topEdge + height
    glyph := ' '        // Create a rune variable

    // Draw the top and bottom lines of box
    glyph = '═'
    for x := leftEdge; x <= rightEdge; x++ {
        drawChar(s, x, topEdge, fg, bg, glyph)
        drawChar(s, x, bottomEdge, fg, bg, glyph)
    }
    
    // Draw the sides of box
    glyph = '║'
    for y := topEdge + 1; y <= bottomEdge; y++ {
        drawChar(s, leftEdge, y, fg, bg, glyph)   
        drawChar(s, rightEdge, y, fg, bg, glyph)   
    }
    
    // Draw the four corners of box
    glyph = '╔'
    drawChar(s, leftEdge, topEdge, fg, bg, glyph)
    glyph = '╗'
    drawChar(s, rightEdge, topEdge, fg, bg, glyph)
    glyph = '╚'
    drawChar(s, leftEdge, bottomEdge, fg, bg, glyph)
    glyph = '╝'
    drawChar(s, rightEdge, bottomEdge, fg, bg, glyph)

    // Display the screen
    s.Show()
    
    return 0
}

Now you can draw more boxes just by adding more drawBox() lines in main(), like so:

...
// Draw a box
boxWidth := 20
boxHeight := 4
boxForeGroundColor := tcell.ColorWhite
boxBackGroundColor := tcell.ColorBlack
drawBox(s, x, y, boxWidth, boxHeight, boxForeGroundColor, boxBackGroundColor)

// Draw box #2
x = 40
y = 8
boxWidth = 10
boxHeight = 6
boxForeGroundColor = tcell.ColorYellow
boxBackGroundColor = tcell.ColorBlack
drawBox(s, x, y, boxWidth, boxHeight, boxForeGroundColor, boxBackGroundColor)

// Draw box #3
x = 3
y = 2
boxWidth = 5
boxHeight = 14
boxForeGroundColor = tcell.ColorRed
boxBackGroundColor = tcell.ColorYellow
drawBox(s, x, y, boxWidth, boxHeight, boxForeGroundColor, boxBackGroundColor)

We can even add a fill option. Add a boolean (true/false) variable, “fill”, to the drawBox() header line, like this:

func drawBox(s tcell.Screen, leftEdge, topEdge, width, height int, fg, bg tcell.Color, fill bool) int {

and change the function itself to this:

    ...
glyph := ' '        // Create a rune variable
    
    // If fill, fill in the entire box
    if fill {
    for y := topEdge; y <= bottomEdge; y++ {
                for x := leftEdge; x <= rightEdge; x++ {
                        drawChar(s, x, y, fg, bg, glyph)
                }
            }
    }

    // Draw the top and bottom lines of box
     ...

Then add a fill variable to the calling lines, like so:

fill := true    // or ‘false’
drawBox(s, x, y, boxWidth, boxHeight, boxForeGroundColor, boxBackGroundColor, fill)

(Remember the colon only on the first, declaration, of a new variable; otherwise leave the colon off.)

Monday, June 22, 2020

Born of Water and Spirit

There are lots of interpretations about what Jesus meant by "born of water and spirit" in John 3.

Y'all do know that Jesus was a Bible expert, and used it as the basis of most of his teaching, right?

So where does his Bible talk about being born anew in water and spirit?

Below is the one born of water only:

Ezek 16: 4 As for your birth, in the day you were born your navel was not cut. You weren’t washed in water to cleanse you. You weren’t salted at all, nor wrapped in blankets at all. 5 No eye pitied you, to do any of these things to you, to have compassion on you; but you were cast out in the open field, because you were abhorred in the day that you were born.
6 “‘“When I passed by you, and saw you wallowing in your blood, I said to you, ‘Though you are in your blood, live!’ Yes, I said to you, ‘Though you are in your blood, live!’ 7 I caused you to multiply as that which grows in the field, and you increased and grew great, and you attained to excellent ornament. Your breasts were formed, and your hair grew; yet you were naked and bare.
8 “‘“Now when I passed by you, and looked at you, behold, your time was the time of love; and I spread my skirt over you, and covered your nakedness. Yes, I swore to you, and entered into a covenant with you,” says the Lord Yahweh, “and you became mine.
9 “‘“Then I washed you with water. Yes, I thoroughly washed away your blood from you, and I anointed you with oil. 10 I clothed you also with embroidered work, and put sealskin sandals on you. I dressed you with fine linen and covered you with silk. 11 I decked you with ornaments, put bracelets on your hands, and put a chain on your neck. 12 I put a ring on your nose, and earrings in your ears, and a beautiful crown on your head. 13 Thus you were decked with gold and silver. Your clothing was of fine linen, silk, and embroidered work. You ate fine flour, honey, and oil. You were exceedingly beautiful, and you prospered to royal estate. 14 Your renown went out among the nations for your beauty; for it was perfect, through my majesty which I had put on you,” says the Lord Yahweh.
15 “‘“But you trusted in your beauty, and played the prostitute because of your renown, and poured out your prostitution on everyone who passed by.

Below is the one born of water and spirit

Ezek 36: 25 I will sprinkle clean water on you, and you will be clean. I will cleanse you from all your filthiness, and from all your idols. 26 I will also give you a new heart, and I will put a new spirit within you. I will take away the stony heart out of your flesh, and I will give you a heart of flesh. 27 I will put my Spirit within you, and cause you to walk in my statutes. You will keep my ordinances and do them. 28 You will dwell in the land that I gave to your fathers. You will be my people, and I will be your God. 29 I will save you from all your uncleanness.

Saturday, June 20, 2020

Using the 'tcell' graphics-in-a-terminal Library in a GoLang Program

package main
/*
 This code draws a single character (or 'rune', or 'glyph') at a single
 location on a terminal window in Debian GNU/Linux.
*/

import (
 "fmt"
 "os"
 "time"
 "github.com/gdamore/tcell"
)

func main() {
 // Create a "canvas" (a window, frame) on which to draw
 s, e := tcell.NewScreen()

 // Check for some error situations; exit if need be
 if e != nil {
  fmt.Fprintf(os.Stderr, "%v\n", e)
  os.Exit(1)
 }
 if e = s.Init(); e != nil {
  fmt.Fprintf(os.Stderr, "%v\n", e)
  os.Exit(1)
 }

 // Set foreground and background colors of "canvas"
 s.SetStyle(tcell.StyleDefault.
  Foreground(tcell.ColorWhite).
  Background(tcell.ColorBlack))

 // Clear the "canvas"
 s.Clear()

 // Set foreground and background colors of box
 fg := tcell.ColorYellow
 bg := tcell.ColorBlue

 // Set the coordinates for where we'll draw our character ('glyph', 'rune')
 x := 10
 y := 20

 st := tcell.StyleDefault
 st = st.Background(bg)
 st = st.Foreground(fg)

 glyph := rune('W')

 s.SetCell(x, y, st, glyph)

 // Display the prepared "canvas"
 s.Show()

 // Pause X seconds before resetting "graphics" screen to normal
 // Number of time units times length of time units
 duration := time.Duration(3) * time.Second
 time.Sleep(duration)

 //Reset screen to normal
 s.Fini()
}

Sunday, May 31, 2020

Some Things I Don't Like About the Rust Language

1. The print! macro requires a flush of the output device to show any text.

This is just stupid. The newbie programmer to Rust will use print! and expect to see output. If the high priests of Rust programming want to keep their purity of not flushing output automatically, then create a new print! macro that does flush the output; name it something like printout!. (This retains backward compatibility with previous programs using print!.)

2. Functions return the last expression implicitly. Again, that will confuse the newbie Rust programmer, as well as any non-Rustacean who is just looking over the code. It's wrong, because it requires esoteric knowledge of the language. A returned value should require an explicit return ; statement.

3. The --release flag during compilation handles integer overflow differently than a normal developmental compilation, producing completely different results.

What?! Again, to avoid unexpected errors, the developer must know esoteric knowledge about Rust. Bad, bad, bad.

4. Strings are way more complicated than they should be.

====

NOTE: These viewpoints are from a non-programmer, who has no right to pontificate on how a programming language should be. Nevertheless, these viewpoints are correct.


Sunday, May 17, 2020

Ye Are Saved by Grace, Not By Making a Passing Score on the Final Exam

There are those who, perhaps unintentionally, and perhaps unknowingly, and perhaps while denying it, advocate a works-based salvation.

They say things like, "The only people going to heaven are those who 'do the right things/in the right ways'."

Yes, Jesus expects (demands) obedience. But it's an obedience from the heart that saves, not a perfect-performance obedience.

WEB Rom 6:[17 ]But thanks be to God, that, whereas you were bondservants of sin, you became obedient from the heart to that form of teaching whereunto you were delivered.

God looks at one's heart, not at one's test-scores.

The fundamental problem with the Pharisees was not that they invented commands (this was a *symptom* of the problem), or that they taught those man-made commandments as doctrine (also a symptom), but that their heart was far from God.

God accepted Abel's sacrifice as a testimony that God accepted Abel (Heb 11:4), because Abel was righteous, that is, he had the right heart. Cain, judging by his actions, his attitude, his whining, and by how his children turned out, did not have a righteous heart.

The problem, and the solution, is the heart, not the external rule-keeping.

Strive to keep "the law", yes; that's what Jesus wants you to do. But don't rely on how well you keep the law. If you seek to be justified by your keeping of the law, you have fallen from grace; you are alienated from Christ (Gal 5:4). Trust in his righteousness, given to you as a gift; don't trust in your own righteousness, as did the Israelites, and who failed to attain the righteousness of God (Rom 10:1-4). Lean not on your own understanding; you won't get it right. There is none righteous, no, not one.

If you think you're saved by your perfect following of the Bible, you better get it 100% right (Rom 10:4-5); anything less means you've broken the entire law (Jam 2:10).

Monday, March 16, 2020

Paul the Apostle was a Keeper of the Law of Moses

It is often believed that Paul the Apostle teaches against keeping the law of Moses.

This is a false rumor.

The leaders of the Jerusalem church called it a false rumor, urged Paul to prove it was a false rumor, and urged Paul to prove that he himself walked according to the law.

Paul followed their advice, and was arrested while doing so, because some from outside of Jerusalem weren't paying attention, and still believed the false rumor.

Don't be like those from outside of Jerusalem, believing a false rumor about Paul.

Note that Paul *did* teach against keeping the law of Moses as a way of being made righteous. He taught very strongly this message. But he never taught against keeping the law of Moses as a voluntary, Jewish-thing to do, including taking Nazirite vows, undergoing Temple-based purification rituals, offering animal sacrifices to end a Nazirite vow (after a seven-day waiting period), claiming his innocence in accord with his being (present-tense) a Pharisee, and worshiping God in the Jewish temple wherein worship activities included choirs and incense and robes and instrumental music.

You can get more detail from Acts 18:18, Acts 21:17, to the end of Acts.

Sunday, March 01, 2020

The question was asked, "In Colossians 2:14 what was nailed to the cross?".

Here's the verse:

WEB Col 2:[14 ]wiping out the handwriting in ordinances which was against us; and he has taken it out of the way, nailing it to the cross;

Paul often says very similar things in his different letters, repeating himself in slightly different words, like the "sing" passages in both Ephesians and Colossians.

He's likely saying the same thing in Col 2:14 that he says in Eph:

WEB Eph 2:[14 ]For he is our peace, who made both one, and broke down the middle wall of partition, [15 ]having abolished in the flesh the hostility, the law of commandments contained in ordinances, that he might create in himself one new man of the two, making peace; [16 ]and might reconcile them both in one body to God through the cross, having killed the hostility thereby.

Whatever he's talking about in Ephesians is probably what he's talking about here in Colossians.

To be specific, the Gentiles were unwelcom in the Commonwealth of Israel, unless they submitted to the law of Moses and the Jewish customs (compare Acts 15:1,5).

That requirement has now been taken out of the way, because the full keeping of the law which Jesus accomplished is applied to "believers" (as opposed to failure-prone "Law-keepers", who, at 99.9% success are still failures):

WEB Rom 10:[4 ]For Christ is the fulfillment of the law for righteousness to everyone who believes.

(That righteousness includes baptism, by the way, which Jesus underwent in order to fulfill all righteousness.)

The requirement to keep the law has been taken away; Gentiles can now be grafted into the root, to become full members of the Commonwealth of Israel, by following in the steps of the faith of Abraham, which he had while having not yet been circumcised (Rom 4:12).

Sunday, February 16, 2020

The "New Wine" in Acts 2

WEB Acts 2:13 Others, mocking, said, “They are filled with new wine." 14 But Peter, standing up with the eleven, lifted up his voice and spoke out to them, “You men of Judea, and all you who dwell at Jerusalem, let this be known to you, and listen to my words. 15 For these aren’t drunken, as you suppose, seeing it is only the third hour of the day.
The Koine Greek word behind "new wine" is gluekos.

Think "glucose sugar".

I believe a more accurate rendering for this word is "sweet wine" rather than "new wine".

I have heard arguments that this "new wine" is not alcoholic, but I believe these arguments are driven by a mistranslation of the Greek into English.

Since new wine is not alcoholic, then this word gluekos must refer to non-fermented wine, or so the argument goes.

The arguments I've heard are two:

1) The argument is made that the mockers' mocking is merely an insult that means, "These tea-totallers are drunk on grape juice."

and

2) The argument is made that in the one other place where the word is used, in the Septuagint version of Job 32:19, it is somehow to be understood as non-fermented wine.

Concerning the first argument, Peter plainly says the mockers suspected the disciples of being drunk; he does not treat their mocking as a sarcastic insult; he treats the mocking as a legitimate accusation, and his response is appropriate: Drinkers tend to drink into the night, and then sleep it off in the morning. Yes, there could be exceptions to that (as there are to most rules-of-thumb, such as with many of the Proverbs), but regardless of the accuracy of Peter's response, his response is to treat the charge as a serious charge, which he plainly denies.

Concerning the second argument, here's the text from Job:
WEB Job 32:19 Indeed my belly is like wine that has no vent; it is ready to burst like new wineskins.
“New” wine, that is, “grape juice”, does not cause a new wineskin to be ready to burst. Rather, the readiness to burst is a result of grape juice having fermented, causing gasses which blow up the wineskins, like a helium bottle filling up a balloon. New wineskins have the capacity to stretch (which is why you don’t put new wine into old wineskins – Mark 2:22); the only reason the skins would be ready to burst is because they have stretched to their limits, because of the gasses created by the fermentation process. Job’s belly is ready to burst; it’s full of gas; it’s not in the beginning stages of fermentation, but in the later stages.

If the word is translated properly, as "sweet wine" rather than as "new wine", wine that has fermented to the point of being ready to burst its container, there is no longer any need to explain away the apparent alcoholic nature of "new wine".

Thursday, February 13, 2020

Why the Record of the Early Church is Silent about the Use of Instrumental Music

The earliest Christians met in the Jewish temple daily, praising God and having favor with all the [non-converted Jewish] people.

These non-converted Jewish people used instruments in their temple. The Christians were right there, thinking they were nothing more than Jews who had found their Messiah, keeping the Mosaic law zealously (Acts 15:1,5; 21:20). There's no hint these Jewish Christians were saying a word against the musical instruments. They felt no need to move their assembly away from the Jewish musical instruments; they met regularly right there in Solomon's Porch
(Acts 5:12), right near the "band". It seems to simply have been a non-issue with them.

As the message moved away from Jerusalem and its temple, it moved into the Jewish synagogue. (James specifically refers to the Christian assembly as "your synagogue" - James 2:2 - although most English translations hide that from you.) The synagogue did not have musical instruments. But this was not a result of any command from God (there is no such command in scripture), but rather of tradition. The synagogue seems to have developed during the Babylonian Captivity (without any "authorization" from God; yet Jesus approved by his regular habit of attendance - Luke 4:16). During this captivity, the Jews, when asked to sing a song about their homeland, replied that they were too sad to sing, so they put away their instruments - Psalm 137. (Note that the Jews in this passage associated instruments with "sing", such that "singing" and "harps" were essentially synonymous - they couldn't sing, so they put away their harps. This is the way God uses the word "sing". He never uses it in such a way as to exclude instruments.)

When the church moved away from the temple and into the synagogue, the church moved away from instruments, at least in the common public gathering. Note again that this was not the result of any command from God, but simply a matter of man-made tradition. The last word God had said on the matter of public praise singing was to use instruments; there is no record afterword to not use instruments. There is no record (or evidence) that the early Christians had been told that God's last instruction about how to "sing" had been rescinded. The converts on Pentecost in Acts 2 had been praising God with instruments that morning; by evening, according to our traditional brotherhood doctrine, such praise was sin, yet there's no record or evidence of an apostolic message turning instrumental praise into sin.

When Gentiles began to be welcomed into the Christian family, they did not "learn to do church" in the musical-instrument environment of the temple, but rather in the non-musical-instrument environment of the synagogue. A mere 20 years later, the emerging twenty-year-old leaders of the Gentile churches had known nothing all their lives except non-instrumental regular assemblies. It was this *tradition* that became the norm.

Eighty, a hundred, two-hundred years later, by the time any church leaders got around to writing about instruments one way or the other, they identified their non-instrument tradition as being distinct from both the pagan and the Jewish traditions. They never give reasons of "the apostles teach this" or "Scripture says this"; they give human-logic reasons - "We want to be different from the pagans" (Ex., "lest we should appear to observe any Sabbath with the Jews" - Victorinus, 300 A.D.). These writers, thinking God now hates all things Jewish (a doctrine completely at odds with the New Testament, but bolstered by the destruction of Jerusalem and her temple), condemned all things Jewish, including the instrumental psalms. They did not do so on the basis of God's word, but on the basis of human reasoning.

It's interesting that when we look for actual writing condemning instruments, we don't find it in scripture, but in these post-NT writings. And although we refuse to cite these writers about sprinkling as baptism, or about a pre-Pope "President" of the elders, etc, we cite as gospel their condemnation of instruments.

The early reformation writers were against instruments for pretty much the same reasons: they had grown up non-instrumental (which therefore must be the "old ways"), and they reasoned that God hates Jewishness, therefore he hates instruments. Thomas Aquinas, in the mid-1200s, wrote, "But the Church does not make use of musical instruments, such as harps and psalteries, in the divine praises, for fear of seeming to imitate the Jews." (The more common rendering is, "Our church does not use musical instruments, as harps and psalteries, to praise God withal, that she may not seem to Judaize.")

Even though writers from the second-century to the present have condemned musical instruments in the praise of God, such condemnation is never based on actual words from God or the apostles, but on human logic. The actual words from God neither condemn, nor change his last word on the matter. Any such change must be derived from human reasoning.

And if human reasoning is the standard, then reason just a moment: Did Paul write:

"Teach one another using psalms, except for the ones God has given to you, recorded in scripture, given for our learning of how to be right, given to make us complete, thoroughly equipped for every good work?"
Or did Paul write:
"Teach one another using psalms"?
Which of the two versions above adds to the word of God?

If we are to teach one another with psalms, without adding any restrictions to what is meant by "psalms", then let me teach:
WEB Psalm 150:Praise him with tambourine and dancing! Praise him with stringed instruments and flute!
(it's often claimed that the Psalms are "Old Testament"; but that's a result of how our modern-day printed Bibles divide up the scriptures; the scriptures themselves make a distinction between "the old covenant" and "the psalms" and "the prophets" (Luke 24:44, words of Jesus); even Paul points out that the Abrahamic covenant in Genesis, 430 years older than the "old covenant", was not superseded by the temporary "old covenant" of Exodus-Deuteronomy.)

That's incredibly uncomfortable for many in the Church of Christ. But it's the result of human reasoning that is more consistent with scripture than the human reasoning that converts "psalms" into "psalms except...".

The lame man healed by Peter "danced" for joy in the place where the Christians assembled (Solomon's Porch - Acts 3:8-11), and there is no record of anyone telling him to sit down to be "decent and in order".

Our anti-instrument position is not supported by scripture, but rather by human reasoning and tradition. I think its a fine tradition (I prefer it), but I object when this tradition is turned into a commandment of men and then taught as doctrine.

Tuesday, February 11, 2020

A Word Against Respondus Lockdown Browser

Respondus sells a special locked-down web-browser that is used by schools to allow their students to take on-line tests without the students having the ability to web-browse to other locations than the test-site, to prevent cheating/etc.

That's all well and good. But their installer routine is primarily designed for a one-install-at-at-time setup, which is fine for the individual student installing the Lockdown Browser on that student's personal computer.

But for a lab manager who might need to install the product on 20 or 100 or 15,000 computers, a one-on-one installer ain't gonna work.

So they provide two alternative methods for a "push" installation.

You'd think that's good, right?

Except the lab manager has to jump through hoops to make it work.

I've been working four days - four! - to get a simple uninstall script to work.

The install is relatively easy (although the onus is still on the lab manager to do the programming work, instead of the company doing it).

But when a year later that version goes out of date and refuses to work, Respondus doesn't have a simple update mechanism; you have to uninstall the old version and then install the new.

And no matter what I do (and I'm a very smart guy), I've been unable to get their instructions to work to uninstall the old version.

But the core point here is this (and I'm going to yell saying it):

YOUR CUSTOMERS SHOULD NOT BE REQUIRED TO WRITE PROGRAMS OR JUMP THROUGH HOOPS TO USE YOUR PRODUCT!

Because of the pay-wall mentality of Respondus and the difficulty they make it to speak to them, they will never hear this message of mine. And since few readers read this blog, few people will ever hear it. But for those who do, I highly recommend that you do not purchase/use Respondus products until they learn that their in-house programmers should do the programming necessary for their customers to use their products.

Friday, January 24, 2020

Intro to the Book of Acts

Intro to the Book of Acts

The study of The Book of Acts is always worthwhile.

It seems to me that Acts actually begins earlier than Acts, in the book of Luke itself. And it is, indeed, a continuation of Luke. It might even be more appropriately called 2 Luke.

As you may be well-aware, the last few verses of Luke 24 closely mirror the first few of Acts 1.

But in Luke 24, and other relevant passages, there are a few details that enlighten our understanding of Acts.

The Disciples Thought That the Kingdom of God = the Kingdom of Israel

Whatever the disciples understood about the kingdom of God and the role of their Messiah, as the book of Acts opens, they still thought the kingdom was about a restoration of the political fortunes of the physical nation of Israel:

WEB Luke 24:21 But we were hoping that it was he who would redeem Israel. Yes, and besides all this, it is now the third day since these things happened.

We see this same thought from the Eleven in Acts 1:

WEB Acts 1:6 Therefore when they had come together, they asked him, "Lord, are you now restoring the kingdom to Israel?"

It's of note that Jesus did not correct their misunderstanding, but left them (and Luke's readers) believing the kingdom would be restored to physical Israel in the future.

The Resurrection Is a Physical Resurrection, not Spiritual

Some might object that “flesh and blood” cannot inherit the kingdom of heaven, but this phrase appears to be an idiom referring to corruptible flesh and blood. The same phrase, “flesh and blood”, is also used in Heb 2:14, where it seems to refer to a deathly condition which humans were not created for but were made to share in. At any rate, Jesus stressed that he was flesh and bone, a real re-animated “It’s really me” which the disciples had known before he was executed, that ate and drank with them over a period of forty days after his resurrection. And it was this physical Jesus who went into heaven, not leaving a rotting physical body behind.

WEB Luke 24:2 They found the stone rolled away from the tomb. 3 They entered in, and didn't find the Lord Jesus' body.

The angels stressed that he was living, and thus not in the tomb, explaining the absence of a body:

WEB Luke 24:5b They said to them, "Why do you seek the living among the dead? 6 He isn't here, but is risen.

Jesus stressed:

WEB Luke 24:39 “See my hands and my feet, that it is truly me. Touch me and see, for a spirit doesn't have flesh and bones, as you see that I have."

and then:

WEB Luke 24:43 He took [food], and ate in front of them.

All this was in response to the disciples supposing they were seeing a spirit (Luke 24:37).

This body was more than just physical though; it could appear in a different form (Mark 16:12), teleport from one location (Luke 24:31) to another, through locked doors (John 20:19), and fly into heaven without aid of space-craft or -suit (Acts 1:9). His body, perhaps like Adam's before he sinned, causing it to become subject to corruption, is physi-spiritual.

When Jesus ascended into heaven, he took his raised, physi-spiritual body with him. It was not left behind, and ever since he was raised from death, it was impossible for him to again die (Rom 6:9), or for his body to see corruption (Acts 2:31).

The Disciples Worshiped Jesus

The word “worship” (Greek proskenuo) is a verb that specifically refers to bowing or bending or prostrating one’s self in a submitting manner, as you may have seen Muslims do on their prayer rugs as they bow until their face is on the ground; this is the literal meaning of proskenuo. It does not refer to having a feeling (adoration), nor does it refer to any other action, such as singing or praying or giving or making a burnt-offering. Whereas those things can be a result of a worshipful spirit, they are not, in and of themselves, “worship”; they are different verbs from “bowing”, just as “running” is a different verb than “talking”.

Technically you can not “worship in song” (although you can “praise in song”); you can only “worship” in submissive bowing; that’s what the word means. Nor are you worshiping because you are singing; you may be (and should be) worshiping while you are singing, but in so doing, you are doing two different things at the same time; singing is different than worshiping; they are two different verbs. You can wrap your brain around this a little better if you’ll get in the habit of mentally substituting the Greek meaning of the word, something like “bow submissively”, whenever you come across the English rendering of “worship”. For example, “They bowed in submission to him”. This bypasses the influence and bias of the translators and gets you closer to the Greek as God originally inspired it.

It is also instructive to note that Jesus said that submissive bowing was no longer a matter of physically bowing in the location of this church-house on this mountain or in that church-house across the street, but in the location of one’s spirit, in a real, truthful manner. And when should you not be bowing submissively, in truth, to God, in your spirit? Mowing your lawn is not worship; those are two different verbs. But while mowing, your spirit should be bowing submissively to God. You can, and should, worship and mow at the same time, just as you can, and should, sing and worship at the same time. Conversely, you can not hold up a bank and worship at the same time; while these are still different verbs from one another, they are also mutually exclusive from one another.

These disciples knew that their worship was to be reserved for YHWH God and him only. They had come to understand Jesus in a new way, as had Thomas:

WEB John 20:28 Thomas answered him, "My Lord and my God!"

Accordingly,

WEB Luke 24:52 They worshiped him....

.

Jesus Teaches a Four-fold Division of the Bible, not a Two-fold One

Our modern-day Bibles are divided into two main divisions, the Old and New Testaments. But that's not how Jesus divides the scriptures. He divides them into:

  1. "My words" (the NT)
  2. The Law (or Torah)
  3. The Prophets (or Nevi'im)
  4. The Psalms (or Ketuvim, or Writings (which includes just about everything else that's not the Torah or the Prophets))

The three divisions of what our Bibles erroneously label as "Old Testament" are sometimes referred to by the initials of their Hebrew names, TNK, and pronounced as TaNahK (tah-nahk).

The old testament (or better, in more modern English, old covenant) is not all 39 books of our "Old Testament", but only that portion between about Exodus 12 and the end of Deuteronomy.

  • The promise to Abraham came 430 years before the old covenant was established (Gal 3:17).
  • The definition of marriage taught by Jesus (Matt 19:4-7) was not his fiat declaration, but an appeal to scripture that was contrasted with that old covenant (Matt 19:7-8), and which was unaffected when that old covenant became of none effect.
  • The old covenant was written and sealed in a book, to which nothing could be added, a book that was lost for years and found again later during the days of the Kings (2 Kings 22). Obviously then, the events of this losing and finding could not be part of that sealed covenant.
  • The old covenant was made when God led his people out of Israel, according to God's own definition hundreds of years later when he spoke through Jeremiah (Jer 31:31ff). Obviously then, the words of Jeremiah, coming hundreds of years later, were not part of that old covenant.
  • The psalms, while collected into book form while the old covenant was in effect, were not themselves part of that covenant, and like the creation definition of marriage before it, were unaffected when that old covenant became of no effect. In fact, the psalms are used often in the NT as authoritative teaching material, such as in Acts 1, and we are even told to use psalms in our teaching of one another (Eph 5:19; Col 3:16).

This usage of the phrase "rightly divide the word" is commonly used as I have used it here, but the reader should be aware that this usage is not what is meant in 2 Tim 2:15. But this incorrect usage serves my point, so I'm taking the liberty to use it as many of us have understood it for generations.

When we divide our Bibles into two divisions, we fail to "rightly divide the word".

The Holy Spirit, in Various "Measures"

One might remember that the Greek word for "breath", pneuma, is the same as that for "spirit". Although the passage below is not from Luke, it's interesting to read:

WEB John 20:22 When he had said this, he breathed on them, and said to them, "Receive the Holy Spirit!"

In doing this, Jesus is declaring that his air, his breath, his spirit, is the Holy Spirit, and that he is giving a portion of this Holy Spirit to the disciples. Jesus goes on to tell them that in not many days, they will be baptized in the Holy Spirit (Acts 1:5).

This baptism in the Holy Spirit was different, at least in amount, than the giving of the Holy Spirit when Jesus breathed on them. I'm not confident we can say it was different in type. The miniscule amount of radiation you'd get from standing next to a microwave oven is much smaller than what you'd get standing in the core of a nuclear power plant, but it's the same type. It's the same radiation, but different doses, with vastly different results. Likewise, the Holy Spirit you have as a Christian is the same as what the disciples had on the day of Pentecost in Acts 2, but in a different dose.

It's instructive to note that when one is baptized in water, they get thoroughly inundated, being submerged completely in the water. But they don't stay submerged, or even wet. Baptism changes their status permanently, but it changes their state only for a short while; very soon, they become dry.

Likewise, the baptism of the Holy Spirit, poured out on those disciples, changed their status permanently, but didn't necessarily change their state; by and large, their ability to speak in tongues was something that happened to them "at the beginning", as Peter relates years later (Acts 11:15).

Promise, What Promise?

Jesus tells the disciples that they will receive the promise of the Father. He says it's the promise they've already heard of from him (Acts 1:4). In John 14, 15, and 16, Jesus promises to send to them a Counselor, the Holy Spirit, after he leaves them, who will both remind them of what he had taught/said (14:26), and inform them of what is coming (16:13). Now just before he leaves them, he speaks of a promise of the Father, in essentially the same breath that he speaks of them being empowered from above (Luke 24:49) and being baptized in the Holy Spirit (Acts 1:4-5).

The disciples, however, seem to be associating this promise with the restoration of the kingdom to Israel (Acts 1:6). Paul later speaks of being on trial for holding to the hope of the promise  made by God, a hope for which "the twelve tribes" were working earnestly in order to obtain (Acts 26:6-7).

Between these two times (just before the Ascension, and years later at one of Paul's trials), in Acts 2, Peter seems to associate the promise with more than just the pouring out of the Holy Spirit and the speaking in tongues, but also with the restoration of peace and freedom and prosperity to Israel, and also with a salvation of a remnant. He quotes from Joel 2, which speaks of all these things. It seems that few Christians realize that Acts 2:39 is a continuation of that quotation from Joel 2. In his speech, Peter refers to receiving the Holy Spirit, and then to "the promise [which] is to you and to all whom God calls", followed by a reference to being saved. All these points come from Joel.

Peter had Joel in mind, and he knew his quotations would cause his listeners to think of Joel.

It would appear then that Peter understood this promise to be the whole package mentioned by Joel: the restoration of Israel, and the pouring out of the Holy Spirit on all, and salvation for all who are called by God.

Having said that, it should be stressed that the text simply isn't clear as to what this promise is.

Welcoming the Gentiles

When Jesus told the disciples that they would be his witnesses to all nations (Luke 24:47; Matt 28:19; Mark 16:15; Acts 1:8), this was revolutionary. In Jewish thinking, "the Nations", that is, everyone who was not Jewish, had no part in the coming restoration of the Israelite nation, and no part in the coming Messianic age (except as subjects), and no part in salvation. But here Jesus was telling his disciples that repentance and remission of sins in his name is for the whole creation, not just for the Jews. The disciples didn't get it yet; they didn't even start to get it until years later, in Acts 10, and some time later still Peter still needed a public scolding to remind him of this new acceptance of the Gentiles.

Even more revolutionary, Jesus said nothing about circumcising these Gentiles, these non-Jews, but only mentioned baptizing them.

Had the disciples realized at this point what Jesus was saying, about welcoming non-Jews into the kingdom, they likely would have been overwhelmed.

A New Gospel Message

Reading through the Gospel accounts we see several "Gospels" taught by Jesus.

The Gospel of the Kingdom

When Jesus began his ministry, he preached the good news ("Gospel") that the kingdom of God had arrived. Israel considered this as good news, because they likely understood this as the fulfillment of a promise from God to restore to Israel her "rightful" place as a nation free from foreign influence, and even more, as the world power. Their understanding would have made this not good news to "the Nations" (non-Israelite/Jewish nations), who would be defeated/crushed by this Kingdom of God. This good news according was only preached to Israel, not to the Gentiles:

WEB Matt 15:24 But he answered, “I wasn’t sent to anyone but the lost sheep of the house of Israel.”

and

WEB Matt 10:5 Jesus sent these twelve out and commanded them, saying, “Don’t go among the Gentiles, and don’t enter into any city of the Samaritans. 6 Rather, go to the lost sheep of the house of Israel. 7 As you go, preach, saying, ‘The Kingdom of Heaven is at hand!’"

This good news of the kingdom arriving was the first "Gospel" which Jesus preached.

The Gospel of Physical Redemption

The first public sermon by Jesus, which Luke records as the beginning of his ministry, announced good news to the poor, the broken-hearted, the captives, the blind, the crushed (Luke 4:16-21).

This good news of healing the physical ills of society was also an early "Gospel" preached by Jesus.

The Gospel of Spiritual Redemption

Even when people mistreated the Messiah, his response was not retaliation against them, but to say, "[T]he Son of Man didn't come to destroy men's lives, but to save them" (Luke 9:56).

It seems the devil also expected the promised Messiah ("the oil-anointed Appointed One") to be a political figure, as one of his temptations of Jesus was centered around such.

It would seem that early in his ministry, Jesus was hinting that the Messiah, the Son of Man, might have something to do with the non-Jewish nations, in that one of his first offensive (to the Jews) statements pointed out that Elijah ministered to non-Jews when there were plenty of Jews around needing help (Luke 4:23ff).

This affinity for the Gentiles was heightened when Jesus sailed to the eastern side of the Sea of Galilee and spent time at a Gentile city there.

Luke, in his first book, points out that Jesus associates with sinners, not "churchy" people, and is offensive to the standard Jewish "churchiness", challenging their views about the Sabbath, and blessing the poor and sad and down-trodden while woe-ing the well-to-do "in" folks.

This good newsof healing the spiritual ills of society was an early "Gospel" preached by Jesus.

The New Message of the Gospel of the Remission of Sins

Now, on the cusp of the arrival of the promised new covenant, Jesus announces a "Gospel" of a different sort, the good newsof repentance and remission of sins in his name.

WEB Luke 24:45 Then he opened their minds, that they might understand the Scriptures. 46 He said to them, "Thus it is written, and thus it was necessary for the Christ to suffer and to rise from the dead the third day, 47 and that repentance and remission of sins should be preached in his name to all the nations, beginning at Jerusalem."

This remission of sins was not truly available via the blood of bulls and goats (Heb 10:4), but only via the blood of the Lamb of God, who takes away the sin of the world (John 1:29).

The Gospel That Gentiles are Welcome

As mentioned above, just before his ascension, Jesus tells the disciples that his salvation of Israel also includes the Gentiles. Later, Paul expands on this, saying that this good news was preached to Abraham, but yet was a mystery hidden throughout the ages until the first century:/p>

WEB Gal 3:8 The Scripture, foreseeing that God would justify the Gentiles by faith, preached the Good News beforehand to Abraham, saying, “In you all the nations will be blessed.

and

WEB Eph 3:4 ...[Y]ou can perceive my understanding in the mystery of Christ, 5 which in other generations was not made known to the children of men, as it has now been revealed to his holy apostles and prophets in the Spirit, 6 that the Gentiles are fellow heirs and fellow members of the body, and fellow partakers of his promise in Christ Jesus through the Good News...".

and

WEB Col 1:26 [T]he mystery which has been hidden for ages and generations ... has been revealed to his saints ... which is Christ in you...".

and

WEB Rom 14:24 ...[M]y Good News ... which has been kept secret through long ages, 25 but now is revealed ... is made known for obedience of faith to all the nations...".

The Gospel That There is a Resurrection

This is the good news that most people think of when asked to define “the Gospel”, although they usually stop their definition after the resurrection of Jesus,without including the good news of the resurrection of the rest of us.

WEB 1 Cor 15:3 For I delivered to you first of all that which I also received: that Christ died for our sins according to the Scriptures, 4 that he was buried, that he was raised on the third day according to the Scriptures, 5 and that he appeared to Cephas, then to the twelve. 6 Then he appeared to over five hundred brothers at once, most of whom remain until now, but some have also fallen asleep. 7 Then he appeared to James, then to all the apostles, 8 and last of all, as to the child born at the wrong time, he appeared to me also. ... 20 But now Christ has been raised from the dead. He became the first fruit of those who are asleep. ... 26 The last enemy that will be abolished is death. ... 52b For the trumpet will sound and the dead will be raised incorruptible, and we will be changed. 53 For this perishable body must become imperishable, and this mortal must put on immortality. 54 But when this perishable body will have become imperishable, and this mortal will have put on immortality, then what is written will happen: “Death is swallowed up in victory.” 55 “Death, where is your sting? Hades, where is your victory?” ... 57 [T]hanks be to God, who gives us the victory through our Lord Jesus Christ.

Paul says at one of his trials that is it this very message for which he was on trial:

WEB Acts 23b "Concerning the hope and resurrection of the dead I am being judged!”

The Original Disciples Never Stopped Being Jews

This is an important point, one which many post-first-century Christians miss (or refuse to see).

For a week after Jesus ascended, and continuing on for years thereafter, the disciples were continually in the Jewish temple, praising and blessing God (Luke 24:53). The normal Temple activities, especially the feast-day activities in the first few days of the church's beginning, were going on in this temple wherein the very first church of Christ assembled and praised God, including the burning of incense, instrumental music, and animal sacrifices. These disciples felt no need to remove themselves from these activities.

Later New Testament texts affirm that these disciples still kept the law of Moses zealously, as well as all the Jewish customs, and that Paul himself, decades after his conversion, walked according to the Law, kept Nazirite vows, ended those vows with animal sacrifices, participated in temple purification rituals, and proclaimed himself to be a Pharisee (speaking in present, not past, tense), and that he was arrested while trying to prove that he was not teaching the Jews to stop keeping the law of Moses or their customs (Acts 8:18; 21:17-end of Acts).

As Jews, they considered the Seven Feasts of Israel to be significant. Those feasts bear a closer look.

Feast of Passover, the First of Seven Feasts

In first-century Judea, the Passover Feast had undergone some changes from how God had originally instituted it. Originally the lamb was to be slain by families, and eaten in homes (Ex 12:3ff). Hundreds of years later, the slaying of the lamb moved to the Temple courts, to be done by the priests (cf Ezra 6:17). Hundreds of years later, there was a mix of these two, with those who kept Passover in the homes (such as Jesus and his twelve) eating their Passover meal after dark as the Passover day was starting in the evening, and those who kept Passover at the Temple (such as the ultra-religious Pharisees and the Sadducees) eating it at the close of the Passover day about 24 hours later. This is why you see hints in the NT of Jesus eating the Passover before he was arrested (Luke 22), and his arrestors being wary of getting "dirty" and thus being unable to eat the Passover after he was arrested (John 18:28).

Over the next few years, the Holy Spirit would enable the disciples to realize that Jesus is our Passover lamb (1 Cor 5:7), having been sacrificed on the day of Passover, and that he was the fulfillment of the first of the Seven Holy Feast Days of Israel.

Feast of Unleavened Bread, the Second of Seven Feasts

The next day after Passover was the beginning of the second, unrelated feast, the Feast of Unleavened Bread. The first and last days of this seven-day week were "high" (or "special") Sabbaths (Ex 12:16), which may or may not have fallen on Saturday, the normal weekly Sabbath. It was the first of these "high Sabbaths" (John 19:31) that compelled the Jews to ask Pilate to take down the bodies from the crosses. Two days later was the regular weekly Sabbath, and Jesus then rose from the dead on the following day, the third day of burial, and the first day of the week, our Sunday.

When Jesus broke bread later that day, it was unleavened bread, being as it was the middle of the week of that feast. Over the next few years, the Holy Spirit would enable the disciples to remember that Jesus had said he was the bread of life, sinless (without "leaven"), and they would consider him to be the fulfillment of the second of the Seven Holy Feast Days of Israel.

Feast of First Fruits, the Third of Seven Feasts

That resurrection day wasn't just any Sunday; it was the "next day after the Sabbath" (Lev 23:11) during the week of Unleavened Bread, marking the Feast of First Fruits. Over the next few years, the Holy Spirit would enable the disciples to realize that Jesus was the firstfruits of resurrection (1 Cor 15:20,23), the fulfillment of the third of the Seven Holy Feast Days of Israel.

This is where the book of Luke wraps up, and where the book of Acts begins.

Feast of Pentecost, the Fourth of Seven Feasts

Just forty-seven days later would be the next, the fourth, of the Seven Holy Feast Days of Israel. Forty of these days are spent by the disciples in further training with the Messiah after his resurrection. Jesus leaves the disciples just seven days shy of the Feast of Pentecost, after telling them to wait in Jerusalem, when not many days hence they would be clothed with power from on High (Luke 24:49; Acts 1:5).

Note that on the first Pentecost, when the Law of Moses was inaugurated, the event was attended by fire and loud noises. In Korah’s rebellion, about 3000 souls were removed from God's people.

On this Pentecost in Acts 2, when the Law of Christ (a prophet like unto Moses) was inaugurated, the event was attended by tongues as of fire and the sound of a rushing wind. About 3000 souls were added to God's people.

Just For Completeness - the Last Three Feasts

Although not really very relevant to the book of Acts, it just seems wrong to mention the first four feasts without completing the list of all seven.

As mentioned above, the fourth feast was the Feast of Pentecost. Jesus fulfilled all four of these on their respective days of observance. Although no one knows the day or hour of Jesus' return, one can't help but wonder if the last three feasts will see a similarly-timely fulfillment.

The Feasts of Trumpets

Keep your ears tuned for the sound of a trumpet.

The Day of Atonement

There is coming a day of atonement, the salvation of Israel, who although currently enemies of the good news (so that we Gentiles could be brought into the family), are still God's elect, because that's the irrevocable promise God made out of love to the fathers of Israel; they're currently disobedient, but they too will be shown mercy. God's ways are inscrutable. (Rom 11)

The Feast of Tabernacles

We groan to be clothed with our new, eternal, tabernacles (1 Cor 5:1ff).

Tuesday, September 17, 2019

The Corinthian Collection for the Saints - by guest writer Lucas Necessary

A chronological timeline of giving reveals a somewhat different view of giving than what I was traditionally taught.

• A.D. 44 — The Coming Famine

Prophets from the Jerusalem church pay Antioch a visit. One of them named Agabus prophesies of a great famine that will encompass the entire Roman world. The Jerusalem church is in poverty and will be devastated by the coming famine.

Upon hearing this, the believers in Antioch begin laying up a collection of money to relieve their brethren in Jerusalem. Each person gives according to his ability, in proportion to his prosperity. The church selects Barnabas and Saul to bring the money to the elders in Jerusalem.Acts 11:27-30

• A.D. 45-48 — Judea Suffers Famine

Historically, Judea suffered famine at this time.

• A.D. 46-47 — Jerusalem Gets Relief from Antioch

Saul, Barnabas, and Titus graciously hand the collection over to the Jerusalem elders. (Titus was with them as a representative of the Antioch church.)Acts 11:30; Galatians 2:1

The three Jerusalem apostles request of Saul and Barnabas that they continue to remember the poor saints in Jerusalem Galatians 2:9-10

• A.D. 51 — A Church Planted in Corinth

Paul plants the Corinthian church. He works among them and evangelizes the city for a total of eighteen months.

• A.D. 53 Summer — Paul Departs Corinth for Ephesus

He sets sail across the Aegean Sea, taking Priscilla and Aquila with him. On their way, they stop at a little town seven miles east of Corinth called Cenchrea. Cenchrea is the seaport of Corinth. After reaching Ephesus, Paul sails to Caesarea and from there he visits the church in Jerusalem. He greets the Jerusalem church and returns to his home base in Antioch of Syria where he rests.

• A.D. 54 Spring — The Jerusalem Relief Fund Begins

While in Antioch, Syria, Paul decides to begin the Jerusalem relief fund. This is a collection campaign taken from among all the Gentile churches that Paul planted to relieve the chronic poverty of the Jerusalem Christians. Paul does this to mend the rift between the Hebrew and Gentile believers. He sends a letter to the churches in Galatia, telling about the relief fund and gives specific instructions to them on how to begin collecting for it. We do not have this letter, nor do we know exactly when Paul told the Galatians about the relief fund.1 Corinthians 16:1 (Also see Romans 15:25-27)

• A.D. 54 — Paul Writes a Letter to Corinth (from Ephesus)

This letter is lost to us. Paul explains to the Corinthians his desire to have a Jerusalem relief fund and tells them he will visit them after he leaves Ephesus. He will then visit the churches in Macedonia and return again to Corinth, after which he will take the relief fund to Jerusalem in Judea. He sends this letter with Titus. While in Corinth, Titus helps the Corinthian believers to begin collecting money for the Jerusalem relief fund. Titus leaves and returns to Ephesus.2 Corinthians 1:15-16; 8:6

• A.D. 55 Spring — Paul Writes 1 Corinthians (from Ephesus)

In chapter 16, he goes over his instructions for collecting the Jerusalem relief fund. He then gives the church his new travel plans, which had changed from before. Instead of traveling from Ephesus to Corinth, then to Macedonia, and then back to Corinth as he first planned, he will travel from Ephesus to Macedonia and then make one long visit to Corinth.

• A.D. 57 June — Paul's Trip to Macedonia

Paul is plotting his next move. He plans to leave Ephesus and visit the churches in Macedonia (Philippi, Thessalonica, and Berea) and Corinth. He then plans to bring the relief fund from these churches to Jerusalem, after which he plans to visit Rome. Paul sends Timothy and Erastus ahead of him to prepare for his arrival in Macedonia.Acts 19:21-22

Paul leaves Ephesus and heads for Troas and then to Macedonia. Once in Macedonia, he encourages the three Macedonian churches (Philippi, Thessalonica, and Berea), exhorts each of the churches to continue collecting for the Jerusalem relief fund, and boasts in the example set by the church in Corinth...for they have been zealous in laying up for their collection for the past year.2 Corinthians 9:2

Paul finds Titus in Macedonia with good news from Corinth but Titus also informs him that they have slacked off in collecting money for the relief fund.2 Corinthians 8:6-11

• A.D. 57 Between June and Winter — Paul Discredited in Corinth, Writes 2 Corinthians (from Macedonia)

The Jewish "super apostles" try to discredit Paul in the eyes of the Corinthians by telling them Paul is exploiting them by means of a supposed relief fund.Mirror-Reading 2 Corinthians

Paul writes 2 Corinthians (from Macedonia) and encourages the church to resume their collections for the Jerusalem relief fund. He urges Titus to visit the church along with another brother "whose fame in the gospel has spread to all the churches" (probably Luke) to help the Corinthians complete the collection. Titus and this brother willingly accept Paul's appeal.2 Corinthians 8-9

• A.D. 57 Winter — Paul Visits Corinth

Paul leaves Macedonia and visits the church in Corinth for the third time. He spends three winter months with the church. Paul is pleased to learn that the Corinthians have received his last letter, and they have completed their collection for the relief fund.2 Corinthians 8:6ff

Paul's eight coworkers join Paul in Corinth and bring him the collection for the Jerusalem relief fund from their respective churches. The men make plans to accompany Paul to Jerusalem to deliver the relief fund.Acts 20:1-6

Paul writes Romans (from Corinth). He intends to go to Jerusalem—before he travels to Rome and then to Spain in the west—in order to deliver the relief fund.Romans 15:22-25

• A.D. 58 Spring — Paul Arrives in Jerusalem

Paul and his company arrive in Jerusalem. The church receives them gladly. They appear before James (the Lord's half-brother) and the Jerusalem elders. Paul greets them and testifies about what God has done among the Gentiles through his ministry. He then hands the relief fund to the elders. The elders rejoice and give glory to God. Acts 24:17

Since Luke never mentions the relief fund in Acts and Paul does not mention its effect in his "Captivity Letters" (the epistles he wrote after he was imprisoned in Rome), it is possible, but not certain, that the fund did not have the kind of effect that Paul wanted it to have—namely, the uniting of Jewish and Gentile churches.