A Page From A Medieval Greek Bible Is Now Mine – Huzzah!

See those two images up there? Those are scans of my latest acquisition, and I’m so excited about it. It’s a page from a Greek Bible that was printed in 1526. If you don’t want to do the math, that’s 484 years ago. According to the seller,

This is a leaf from a Biblia Graeca, Old Testament (Septuagint), printed in Strassburg by W. Kopfel in 1526. Originally from volume 2 of a 4 volume set and is the third edition of the complete Greek Bible by Johannes Lonicerus (Lonitzer). The octavo paper measures 162 x 99 mm. in totality and contains 30 lines of Ancient Greek script printed single column. The verso contains the same amount of lines and type.

I found this on eBay about two weeks ago, and I just had to have it. It’s nothing really special, as old documents go, but it’s the oldest thing that I have ever owned, and it fits in nicely with my Greek hobby. It contains bits of two chapters of the book of Esther. It starts partially through chapter 6, verse 1, on the front and goes through about half of chapter 7, verse 8, on the back. I can read some of it, but since it’s in Ancient Greek, and I am a student of Koine, it will take some extra effort to actually translate it.

One thing that is very interesting about it is the typography. There are symbols that I’ve never seen before, and weird ligatures that make it quite hard to read in places. I don’t know if this is typical of printing in the 1500’s or not.

What I really like about this piece is thinking about what the world was like when it was printed. Think about it: it was printed in 1526. That was only 34 years after Columbus set sail in 1492. The first British colonies in what would eventually become the United States would not be founded for another 81 years. It was printed 9 years after Martin Luther nailed his 95 theses to the door of All Saints’ Church in Wittenberg, Germany, and only 5 years after he was excommunicated from the Catholic Church. It was the same year that William Tyndale first published a version of the bible in English.

This thing was printed a long time ago. And now it’s mine.

Slides From My Presentation on Operator Overloading In Scala

Last night I spoke at the Atlanta Scala Enthusiats meeting about operator overloading and a little on implicit conversions. I think the talk went well as I got lots of really good questions from the audience, and they laughed at my jokes. This presentation grew out of a blog post I wrote a few months ago entitled Scala Gets Operator Overloading Right; I beefed it up and made some slides and more code samples. Incidentally, if you Google for “scala operator overloading” that blog post is the first result.

For those of you who weren’t there, here are my slides and the code samples that go with them. I wrote these samples against Scala 2.7.7.final. They should work with the latest Scala 2.8, but I haven’t verified this.

And here’s the source code: oopres.zip

What the Heck Is a Tuple, Anyway?

Yesterday I was talking with a friend about Scala and the subject of tuples came up. We both had a bit of a laugh that neither of us was sure how to pronounce it, though we both leaned toward TUH-ple instead of TOO-ple. Anyway, the utility of tuples in Scala was not immediately apparent to him, so I thought I’d take a whack at explaining it here.

A Tuple in Scala is an immutable container used for storing two or more objects, possibly of different types. While a List or Array can only store objects that all have the same type, Tuples can store objects of any type. The most common use of tuples is when you have a method that needs to return more than one value, but creating a class for that return value is more trouble than it’s worth. It’s true that for same-type objects you could return a List, and for different-type objects you could return a List[Any], but both of these have downsides, which we’ll discuss.

Let’s look at a very contrived example. Let’s say you created a function that takes a string and returns the starting index of the first numbers if finds and the numbers themselves. That code might look like this

def reFind(str: String) = {
	val re = """(d+)""".r

	val m = re findFirstMatchIn str

	m match {
		case Some(m) => (m.start, str.substring(m.start, m.end))
		case None => (0, "")
	}
}

(I’ve removed any error checking for brevity.) You can see here that we’re creating a regular expression that looks for one or more numbers grouped together. We then match that against the passed-in string. The matching method returns a Some[Match], so we pattern match against that to see if we actually got a match. If we did, we create a tuple with the starting index of the match, and the match itself, and return it. If not, we return a tuple with 0 for the starting index and an empty string.

Calling this function looks like this

scala> val t = reFind("foo 123 bar")
t: (Int, java.lang.String) = (4,123)

You can see that what was returned is something with type (Int, java.lang.String); that’s actually an instance of Scala’s Tuple2 class. (There’s a synonym for Tuple2, called Pair.)

Now that we have this tuple, what do we do with it? If you want to access the values it contains, you do it in a way that might seem a bit strange at first. To get at the elements, you could do this

scala> val i = t._1
i: Int = 4

scala> val m = t._2
m: java.lang.String = 123

There are two things to point out here. First, unlike Lists and Arrays, you don’t use the () notation. You use a method consisting of an underscore and the index of the part you want. Second, unlike Lists and Arrays, tuples are 1-based instead of 0-based. (According to Programming In Scala, this is a nod to Haskell and ML.) Also notice the types of the vals you are assigning. That’s one of the benefits of using a Tuple instead of something like List[Any]; you still get compile-time type safety. Had you instead written the function like this

def reFind(str: String) = {
	val re = """(d+)""".r

	val m = re findFirstMatchIn str

	m match {
		case Some(m) => List[Any](m.start, str.substring(m.start, m.end))
		case None => List[Any](0, "")
	}
}

and called it, look what happens when you try to store the Int index in a local variable

scala> val l = reFind("foo 123 bar")
l: List[Any] = List(4, 123)

scala> val i: Int = l(0)
<console>:10: error: type mismatch;
 found   : Any
 required: Int
       val i: Int = l(0)
                    ^

You would get a similar error trying to assign the String element to a local String val. That’s the major downside to using a List[Any]. (In the first example I used Scala’s type inference to set the types of the local variables; this time I wanted to be explicit to show the failure.)

As I mentioned earlier, you could define a class just to handle the return values of this function. There is nothing wrong with that solution, and some will find it superior to using a tuple, because you can assign meaningful names to the elements. You could define it like this

class ReResult(val index: Int, val part: String)

def reFind(str: String) = {
	val re = """(d+)""".r

	val m = re findFirstMatchIn str

	m match {
		case Some(m) => new ReResult(m.start, str.substring(m.start, m.end))
		case None => new ReResult(0, "")
	}
}

and call it like this

scala> val l = reFind("foo 123 bar")
l: ReResult = ReResult@57c52e72

scala> val i: Int = l.index
i: Int = 4

scala> val m: String = l.part
m: String = 123

If you think this is more maintainable, then by all means, use it. If you just want to easily return more than one value from a function, then consider using a tuple.

Another point on tuples is that you can assign all the elements of a tuple to local variables in a single step, rather than using multiple calls. So this is equivalent to all the assignments from the earlier examples

scala> val (i: Int, m: String) = l
i: Int = 4
m: String = 123

Depending on what you’re doing, this could be a useful way to get at the elements.

And one more thing. There are tuple classes that range from two elements all the way up to twenty-two. The classes are named Tuple2, Tuple3 … Tuple22. The () notation for creating tuples applies all the way up to twenty-two arguments, so you rarely need to actually use the class names. For example,

scala> val t = (23, "foo", 18.0)
t: (Int, java.lang.String, Double) = (23,foo,18.0)

scala> t.getClass
res31: java.lang.Class[_] = class scala.Tuple3

scala> val t1 = ('a', "quick", 23, "year-old", """foxy""".r, List(1, 2, 3))
t1: (Char, java.lang.String, Int, java.lang.String, scala.util.matching.Regex, List[Int]) = (a,quick,23,year-old,foxy,List(1, 2, 3))

scala> t1.getClass
res32: java.lang.Class[_] = class scala.Tuple6

I’m not going to provide an example of creating a Tuple22; that is left as an exercise. 🙂 I would argue that if you need more than three elements, you really should define a class to hold them. I think that beyond three elements it gets difficult to keep them straight. Tuples are great for holding two or three pieces of information, but don’t go crazy with them.

Real Southern Cooking. Oh, Yes.

Friday we made one of our few yearly adventures into that most fearsome of places, the city of Atlanta. We live about 30 miles outside the city, but we only venture in a few times a year. This time, it was to visit the Georgia Aquarium and the World of Coca-Cola.

As we were planning the trip, we decided to have dinner at Mary Mac’s Tea Room. This place has been an Atlanta institution since 1945. I’ve known about it all my life, but strangely enough, I’ve never eaten there. Tammy had just seen a piece about it on some food show on TV, so I suggested we go there, since we were going to pass it on the way to the Aquarium. She agreed, and we did.

After dining there, I really wish we had not waited so long to go. This was, quite possibly, the best not-cooked-at-home Southern food I’ve ever had. The first thing they bring you is a basket of bread. Hot homemade yeast rolls, delicious cornbread and sweet & sticky cinnamon rolls, with real butter to slather on them. Oh my. Since it was New Year’s Day, they were giving everyone a little dish of black-eyed peas, because eating those on NYD is supposed to bring good luck. I love black-eyed peas, and these were delicious.

For my meal, I had the country fried steak, fries and spiced apples. I was expecting a piece of cubed steak, with a heavy, fried chicken-like crust, and a white gravy. What I got was like what my mother-in-law makes; three pieces of cubed steak, lightly dredged in flour and fried, smothered in a heavenly brown gravy. It was so amazingly good. I was a bit disappointed in the fries; I was expecting either steak fries or hand-cut fries, but what I got was straight from a bag. The apples were OK, but needed more sugar. These deficiencies were more than made up for by the deliciousness of the steak.

Tammy had chicken & dumplings, macaroni & cheese and collards. I don’t normally like chicken & dumplings, but I had several bites of hers. I would order those again, that’s how good they were. The mac & cheese, again, tasted like homemade; a thick, rich cheese smothering the macaroni, with just a hint of hot pepper sauce. Nothing like the Kraft “cheese and macaroni.” I also tried the collards. I don’t like collards, but these were the best I’ve ever tasted.

Thomas got a burger. It was a huge, hand-made burger that was one of the best I’ve ever tasted. I had the leftovers the next day. 🙂

Then came desert. Thomas had a scoop of chocolate ice cream and Tammy and I both had the banana pudding. Oh yes, the banana pudding. Its deliciousness is almost beyond words. This was not vanilla Jell-O pudding with banana slices and vanilla wafers. This was real banana pudding, with loads of banana slices in it, a heavy bread base and a light meringue  on top. Yeah, it was awesome.

The place is a little pricey, so it can’t be a regular dining experience for us. But I hope to go there at least a few more times this year. 🙂 It will at least become a once-a-year thing for us.

My Translation of Luke 2:1-20

Last year before Christmas I translated the nativity story from Luke 2:1-20 from Greek into English because I thought I was up to it. My family and I read it together on Christmas Eve, which was kind of neat, but I never showed it to anyone else. I decided to publish it here in time for this Christmas, so here it is. This is not exactly what I did last year; as I was reading through it I noticed a few places where I wasn’t as correct or as fluid as I would have liked, so I revised it here and there. It’s much better now than it was, IMO.

You will notice that Luke 2:14 does not end with the familar, “… and on earth, peace, good will toward men,” that the KJV renders. To truly understand why, you’ll need to do some reading about textual criticism and different manuscript traditions. The short answer is that the KJV translators used the Textus Receptus, which had the word εὐδοκία (in the nominative, or subject, case) and most other translators used older, more reliable, manuscripts which have the word εὐδοκίας (in the genitive case). That may not make sense, but the addition of one letter makes an enormous difference in how it is translated.

I would also like to point out that in verse 16, the word ἀνεῦραν, the aorist form of the verb ἀνευρίσκω, means “to find by diligent search.” I could not think of a good way to really express this, yet still sound good to the ear. I wrote before about this word and how simply translating it as “found” seems to lose the nuance of the original. To find something could simply mean that one saw it or stumbled upon it. But to “find by diligent search” implies a certain amount of effort. In the end, I came down on the side of sonority, and joined most other translators in simply using “found.”

So, with that said, here it is. As before, I’ll show it twice. First, split into verses with the Greek and then the English. And finally, just the English, in nice paragraph form. If your browser is not showing you the proper Greek letters, you can download a PDF of the whole thing by clicking here.

Κατα Λουκαν 2:1 – 20 — Luke 2: 1 – 20

1Ἐγένετο δὲ ἐν ταῖς ἡμέραις ἐκείναις ἐξῆλθεν δόγμα παρὰ Καίσαρος Αὐγούστου ἀπογράφεσθαι πᾶσαν τὴν οἰκουμένην.
And it came to pass in those days that a decree went out from Caesar Augustus for all the world to be registered.
2αὕτη ἀπογραφὴ πρώτη ἐγένετο ἡγεμονεύοντος τῆς Συρίας Κυρηνίου.
This first registration came about while Quirinius was governor of Syria.
3καὶ ἐπορεύοντο πάντες ἀπογράφεσθαι, ἕκαστος εἰς τὴν ἑαυτοῦ πόλιν.
And everyone went to be registered, each into his own city.
4Ἀνέβη δὲ καὶ Ἰωσὴφ ἀπὸ τῆς Γαλιλαίας ἐκ πόλεως Ναζαρὲθ εἰς τὴν Ἰουδαίαν εἰς πόλιν Δαυὶδ ἥτις καλεῖται Βηθλέεμ, διὰ τὸ εἶναι αὐτὸν ἐξ οἴκου καὶ πατριᾶς Δαυίδ,
And Joseph also went up from Galilee from the city of Nazareth into Judea into the city of David which is called Bethlehem, because he was of the house and lineage of David,
5ἀπογράψασθαι σὺν Μαριὰμ τῇ ἐμνηστευμένῃ αὐτῷ, οὔσῃ ἐγκύῳ.
to be registered with Mary, his betrothed, and she being with child.
6ἐγένετο δὲ ἐν τῷ εἶναι αὐτοὺς ἐκεῖ ἐπλήσθησαν αἱ ἡμέραι τοῦ τεκεῖν αὐτήν,
And while they were there, the time came for her to give birth,
7καὶ ἔτεκεν τὸν υἱὸν αὐτῆς τὸν πρωτότοκον, καὶ ἐσπαργάνωσεν αὐτὸν καὶ ἀνέκλινεν αὐτὸν ἐν φάτνῃ, διότι οὐκ ἦν αὐτοῖς τόπος ἐν τῷ καταλύματι.
And she gave birth to her firstborn son, and wrapped him in swaddling clothes and laid him in a manger, because there was no place for them in the inn.
8Καὶ ποιμένες ἦσαν ἐν τῇ χώρᾳ τῇ αὐτῇ ἀγραυλοῦντες καὶ φυλάσσοντες φυλακὰς τῆς νυκτὸς ἐπὶ τὴν ποίμνην αὐτῶν.
And there were shepherds in the same region, staying out in the field and keeping watch over their flock by night.
9καὶ ἄγγελος κυρίου ἐπέστη αὐτοῖς καὶ δόξα κυρίου περιέλαμψεν αὐτούς, καὶ ἐφοβήθησαν φόβον μέγαν.
And an angel of the Lord came to them suddenly and the glory of the Lord shone around them, and they were terribly afraid.
10καὶ εἶπεν αὐτοῖς ὁ ἄγγελος, Μὴ φοβεῖσθε, ἰδοὺ γὰρ εὐαγγελίζομαι ὑμῖν χαρὰν μεγάλην ἥτις ἔσται παντὶ τῷ λαῷ,
And the angel said to them, “Fear not, for behold I bring you good news of great joy which is to be for all the people,
11ὅτι ἐτέχθη ὑμῖν σήμερον σωτὴρ ὅς ἐστιν Χριστὸς κύριος ἐν πόλει Δαυίδ.
For born to you this very day, in the city of David, is a savior, who is Christ the Lord.
12καὶ τοῦτο ὑμῖν τὸ σημεῖον, εὑρήσετε βρέφος ἐσπαργανωμένον καὶ κείμενον ἐν φάτνῃ.
And this is a sign to you: you will find a baby wrapped in swaddling clothes and lying in a manger.”
13καὶ ἐξαίφνης ἐγένετο σὺν τῷ ἀγγέλῳ πλῆθος στρατιᾶς οὐρανίου αἰνούντων τὸν θεὸν καὶ λεγόντων,
And suddenly there appeared with the angel a multitude of the heavenly host, praising God and saying,
14Δόξα ἐν ὑψίστοις θεῷ καὶ ἐπὶ γῆς εἰρήνη ἐν ἀνθρώποις εὐδοκίας.
“Glory to God in the highest, and on earth, peace among men of his favor.”
15Καὶ ἐγένετο ὡς ἀπῆλθον ἀπ᾽ αὐτῶν εἰς τὸν οὐρανὸν οἱ ἄγγελοι, οἱ ποιμένες ἐλάλουν πρὸς ἀλλήλους, Διέλθωμεν δὴ ἕως Βηθλέεμ καὶ ἴδωμεν τὸ ῥῆμα τοῦτο τὸ γεγονὸς ὅ ὁ κὐριος ἐγνώρισεν ἡμῖν.
And it happened as the angels went away from them into heaven, the shepherds were saying to one another, “Now let us proceed unto Bethlehem and see this thing that has come to be, which the Lord has made known to us.”
16καὶ ἦλθαν σπεύσαντες καὶ ἀνεῦραν τήν τε Μαριὰμ καὶ τὸν Ἰωσὴφ καὶ τὀ φρέφος κείμενον ἐν τῇ φατνῃ,
And they went quickly and found both Mary and Joseph, and the baby, lying in a manger,
17ἰδόντες δὲ ἐγνώρισαν περὶ τοῦ ῥήματος τοῦ λαληθέντος αὐτοῖς περὶ τοῦ παιδίου τούτου.
and after seeing this they made known to them the saying which was spoken to them concerning this child.
18καὶ πάντες οἱ ἀκούσαντες ἐθαύμασαν περὶ τῶν λαληθέντων ὑπὸ τῶν ποιμένων πρὸς αὐτοὐς·
And all who heard wondered at what was said to them by the shepherds;
19ἡ δὲ Μαριὰμ πάντα συνετήρει τὰ ῥήματα ταῦτα συμβάλλουσα ἐν τῇ καρδίᾳ αὐτῆς.
But Mary closely kept all these sayings, pondering upon them in her heart.
20καὶ ὑπέστρεψαν οἱ ποιμένες δοξάζοντες καὶ αἰνοῦντες τὸν θεὸν ἐπὶ πᾶσιν οἷς ἤκουσαν καὶ εἶδον χαθὼς ἐλαλήθη πρὸς αὐτούς.
And the shepherds returned, glorifying and praising God for all that they had heard and seen, at is had been told to them.

Luke 2: 1 – 20

1And it came to pass in those days that a decree went out from Caesar Augustus for all the world to be registered. 2This first registration came about while Quirinius was governor of Syria. 3And everyone went to be registered, each into his own city. 4And Joseph also went up from Galilee from the city of Nazareth into Judea into the city of David which is called Bethlehem, because he was of the house and lineage of David, 5to be registered with Mary, his betrothed, and she being with child. 6And while they were there, the time came for her to give birth, 7And she gave birth to her firstborn son, and wrapped him in swaddling clothes and laid him in a manger, because there was no place for them in the inn. 8And there were shepherds in the same region, staying out in the field and keeping watch over their flock by night. 9And an angel of the Lord came to them suddenly and the glory of the Lord shone around them, and they were terribly afraid. 10And the angel said to them, “Fear not, for behold I bring you good news of great joy which is to be for all the people, 11For born to you this very day, in the city of David, is a savior, who is Christ the Lord. 12And this is a sign to you: you will find a baby wrapped in swaddling clothes and lying in a manger.” 13And suddenly there appeared with the angel a multitude of the heavenly host, praising God and saying,
14“Glory to God in the highest, and on earth, peace among men of his favor.” 15And it happened as the angels went away from them into heaven, the shepherds were saying to one another, “Now let us proceed unto Bethlehem and see this thing that has come to be, which the Lord has made known to us.” 16And they went quickly and found both Mary and Joseph, and the baby, lying in a manger, 17and after seeing this they made known to them the saying which was spoken to them concerning this child. 18And all who heard wondered at what was said to them by the shepherds; 19But Mary closely kept all these sayings, pondering upon them in her heart. 20And the shepherds returned, glorifying and praising God for all that they had heard and seen, at is had been told to them.

A Very Efficient Greek Word

On Saturday evening I was reading my Sunday School lesson when I noticed something interesting. (Well, interesting to me, anyway.) I always read whatever the scripture is in my ESV, and then I also read it in my Greek NT. This interesting bit came from the Greek.

First, some vocabulary. The greek word ἔρχομαι (erchomai, with a Scottish ‘ch’) means “to come” or “to go.” There is a preposition ἐις (pronounced “ace”), which means “into” or “in” or “among.” When you combine those two together, you get ἐισέρχομαι (pronounced ace-erchomai), which means “to come in(to)” or “to go in(to)” or “to enter.” Now, there is another preposition σύν (pronounced soon), which means “with.” If you combine all three together, you get συνἐισερχομαι (pronounced sun-ace-erchomai) which means, as you might have guessed by now, “to enter with” someone.

I bring this up because in the text of John 18 – 19, specifically John 18:15, we find this

Ἠκολούθει δὲ τῷ Ἰησοῦ Σίμων Πέτρος καὶ ἄλλος μαθητής. ὁ δὲ μαθητὴς ἐκεῖνος ἦν γνωστὸς τῷ ἀρχιερεῖ, καὶ συνεισῆλθεν τῷ Ἰησοῦ εἰς τὴν αὐλὴν τοῦ ἀρχιερέως,

Notice the highlighted word. That’s a third person singular aorist (past tense) indicative of συνεισἐρχομαι, which means “he/she/it went in with” or “he/she/it entered with” Jesus. As soon as I saw that word, which I had not seen before, I could tell instantly what it meant, just from looking at its parts. I like that. In some ways, Greek is a bit long-winded, and in others, like this word, it’s extremely efficient.

The full translation (mine) of that verse is

Simon Peter followed Jesus, as did another disciple. And that disciple was known to the high priest, and he went in with Jesus to the court of the high priest,

I don’t have any big theological point to make about this. I just thought it was neat that this one word, formed from three other words, retained each word’s individual meaning and encapsulated an entire thought in a single word.

Lunch Time Translation

Today during lunch I translated 1 John 1:5 – 2:5 from Greek into English. It was presented as an exercise in Dr. Mounce‘s workbook, which is why it sort of just ends at a strange place. I’m going to include the text twice; first broken down by verse, with the Greek on top and the English below it, and then just as one big block of English text, like you’d expect to see it.

If, by some chance, your browser isn’t displaying the Greek properly, you can download a PDF.

If you want to critique my translation, feel free. Just be kind, OK? I thought I did pretty well with it.

1 John 1:5 – 2:5

5Καὶ ἔστιν αὕτη ἡ ἀγγελία ἥν ἀκηκόαμεν ἀπ᾽ αὐτοῦ καὶ ἀναγγέλλομεν ὑμῖν, ὅτι ὁ θεὸς φῶς ἐστιν καὶ σκοτία ἐν αὐτῷ οὐκ ἔστιν οὐδεμία.
And this is the message which we have heard from him and we proclaim to you, that God is light and there is no darkness in him whatsoever.
6Ἐὰν εἴπωμεν ὅτι κοινωνίαν ἔχομεν μετ᾽ αὐτοῦ καὶ ἐν τῷ σκότει περιπατῶμεν, ψευδόμεθα καὶ οὐ ποιοῦμεν τὴν ἀλήθειαν·
If we say that we have fellowship with him, and we walk in the darkness, we lie and do not do the truth;
7ἐὰν δὲ ἐν τῷ φωτὶ περιπατῶμεν ὡς αὐτός ἐστιν ἐν τῷ φωτί, κοινωνίαν ἔχομεν μετ᾽ ἀλλήλων καὶ τὸ αἷμα Ἰησοῦ τοῦ υἱοῦ αὐτοῦ καθαρίζει ἡμᾶς ἀπὸ πάσης ἁμαρτίας.
But if we walk in the light as he is in the light, we have fellowship with one another and the blood of Jesus, his son, cleanses us from every sin.
8ἐὰν εἴπωμεν ὅτι ἁμαρτίαν οὐκ ἔχομεν, ἑαυτοὺς πλανῶμεν καὶ ἡ ἀλήθεια οὐκ ἔστιν ἐν ἡμῖν.
If we say that we have no sin, we deceive ourselves and the truth is not in us.
9ἐὰν ὁμολογῶμεν τὰς ἁμαρτίας ἡμῶν, πιστός ἐστιν καὶ δίκαιος, ἵνα ἀφῇ ἡμῖν τὰς ἁμαρτίας καὶ καθαρίσῃ ἡμᾶς ἀπὸ πάσησ ἀδικίας.
If we confess our sins, He is faithful and righteous, that he might forgive us our sins and he will cleanse us from every unrighteousness.
10ἐὰν εἴπωμεν ὅτι οὐχ ἡμαρτήκαμεν, ψεύστην ποιοῦμεν αὐτὸν καὶ ὁ λόγος αὐτοῦ οὐκ ἔστιν ἐν ἡμῖν.
If we say that we have not sinned, we make him a liar and his word is not in us.
1Τεκνία μου, ταῦτα γράφω ὑμῖν ἵνα μὴ ἁμάρτητε. καὶ ἐὰν τις ἁμάρτῃ, παράκλητον ἔχομεν πρὸς τὸν πατέρα Ἰησοῦν Χριστὸν δίκαιον·
My dear children, I write these things to you in order that you might not sin. But if anyone does sin, we have an advocate with the father, namely Jesus Christ, the righteous;
2καὶ αὐτὸς ἱλασμός ἐστιν περὶ τῶν ἁμαρτιῶν ἡμῶν, οὐ περὶ τῶν ἡμετέρων δὲ μόνον ἀλλὰ καὶ περὶ ὅλου τοῦ κόσμου.
And He is an atoning sacrifice for our sins, not only for ours but also for the whole world.
3καὶ ἐν τούτῳ γινώσκομεν ὅτι ἐγνώκαμεν αὐτὸν, ἐὰν τὰς ἐντολὰς ἀυτοῦ τηρῶμεν.
And in this we know that we have known him, if we keep his commandments.
4ὁ λέγων ὅτι ἔγνωκα αὐτὸν καὶ τὰς ἐντολὰς αὺτοῦ μὴ τηρῶν, ψεύστης ἐστὶν καὶ ἐν τοῦτῳ ἡ ἀλήθεια οὐκ ἔστιν·
The one who says “I have known him” and is not keeping his commandments, he is a liar and the truth is not in him;
5ὅς δ᾽ ἄν τηρῇ αὐτοῦ τὸν λόγον, ἀληθῶς ἐν τούτῳ ἡ ἀγάπη τοῦ θεοῦ τετελείωται, ἐν τοῦτῳ γινώσκομεν ὅτι ἐν αὐτῷ ἐσμεν.
But whoever keeps his word, truly in this one the love of God has been perfected. In this we know that we are in him.

OK. So that’s the verse-by-verse translation. Here it is in a more readable format.

1 John 1:5 – 2:5

5And this is the message which we have heard from him and we proclaim to you, that God is light and there is no darkness in him whatsoever. 6If we say that we have fellowship with him, and we walk in the darkness, we lie and do not do the truth; 7But if we walk in the light as he is in the light, we have fellowship with one another and the blood of Jesus, his son, cleanses us from every sin. 8If we say that we have no sin, we deceive ourselves and the truth is not in us. 9If we confess our sins, He is faithful and righteous, that he might forgive us our sins and he will cleanse us from every unrighteousness. 10If we say that we have not sinned, we make him a liar and his word is not in us.

1My dear children, I write these things to you in order that you might not sin. But if anyone does sin, we have an advocate with the father, namely Jesus Christ, the righteous; 2And He is an atoning sacrifice for our sins, not only for ours but also for the whole world. 3And in this we know that we have known him, if we keep his commandments. 4The one who says “I have known him” and is not keeping his commandments, he is a liar and the truth is not in him; 5But whoever keeps his word, truly in this one the love of God has been perfected. In this we know that we are in him.

MiddleClickClose: New Home!

For those of you who have been pining for a working 64-bit version of MiddleClickClose, your patience is about to be rewarded. A fellow called Tom has taken the MCC code, gotten it working with 64-bit Safari and has moved it to its new home. I am no longer maintaining the code, since I don’t use Safari, so from now on, here’s where you should go for MCC:

github.com/Kabal/MiddleClickClose

There you will find all the source code so you can see how it works, or make changes yourself. If you are only interested in using it, you can get a binary bundle here. I haven’t tried it, but Tom assures me that it works. 🙂

Thanks Tom-of-no-last-name for taking over the code.

Prog Rock Yodel Solo‽

I saw this video linked from this Cracked article about lame “progressive rock,” and I just had to share it. The article is funny as heck, even though I love Rush, who are considered a progrock band. Anyway they linked to this video, which is pretty silly. Actually, musically, it’s quite good; It’s just the yodel solo and flute solo and the wild eyes of the yodeler/flautist that make it goofy.