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.
Video: The Unexpected Blessing
I don’t know which country this commercial aired in, but it’s pretty good. And there’s a twist.
Didn’t see that coming, did you?
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.
Blue Laws Trampling My Freedom
Yesterday (Sunday) my family and I were at our local shopping wonderland, Cost Plus World Market. I love this place, because they sell products I can’t find anywhere else. My favorite is Bundaberg Ginger Beer (non-alcoholic), which is, without a doubt, the best ginger beer I’ve ever tasted. They also sell lots of interesting foods from around the world, including jasmine rice with the “Super Lucky Elephant” brand on it, which made both Thomas and me laugh.
While we were there, Tammy found a bottle of wine that she wanted. It was tall and curving, with beautiful lines, but most of all it was made of lovely blue glass. She has a thing for blue glass, and so she wanted the bottle. Just the bottle. She didn’t care about the wine in it, because she doesn’t drink at all. I don’t drink wine, though I do cook with it; I also have an occasional beer or mixed drink. And by “occasional” I mean I have one drink every two months or so. That makes me pretty much a non-drinker.
Anyway, I get up to the counter to pay for our items when it hits me: Dang. It’s Sunday. I can’t buy this bottle of wine because Jesus might blush! That’s right; I was a victim of Georgia’s absurd, antiquated Blue Laws. In Georgia, as in several other states, it is illegal to buy or sell alcohol in most cases on Sundays. Some counties/cities allow restaurants to sell alcohol on Sundays (after noon, of course; you can’t serve it while you should be in church!), but it’s always a fight with certain obstinate residents when it comes up. The city council of the city next to mine has been trying to legalize Sunday alcohol sales for years, because no new restaurant will open in the city without a liquor license, and the few restaurants that are there are leaving for friendlier areas. Yet there those few stubborn residents are, pining for “the town I used to know” and suchlike. Recently the city county finally passed Sunday drink sales and began issuing permits to several restaurants before eight residents filed a lawsuit to stop it. They found a judge who issued an injunction against further permits until a hearing could be convened. That hearing is coming up soon, but for now, no more permits are being issued. The few restaurants who obtained permits before the residents’ anti-alcohol jihad are happily selling on Sunday, though if the suit is successful, they will be stripped of their permits.
Now, I have no problem with people who don’t like alcohol. I may think they are a little backward, but I bear them no ill will. Don’t like alcohol? Fine. Don’t drink it. Don’t patronize establishments that sell it. Vote with your pocketbooks. But when you try to use the power of the state to keep me from getting a drink, that’s when I have a problem. And no matter how much some of these people try to disguise their motives, it all comes down to one thing: religion. They want to “protect” Sunday, because that day is special to their religion. I’m a Christian, so Sunday is special to me, too, but having a drink on Sunday is not a sin.
Alcohol is a legal product. Not allowing sales of it on Sunday is nothing more than favoring Christianity over the rights of citizens to buy the products of their choice on the day of their choice. The really amusing thing in all of this, if there is one, is that according to John, Jesus’ very first miracle was the conversion of water into wine at the wedding at Cana. And not just wine, but good wine. It was so good, in fact, that the steward asked the host why he had saved the best for last, when everyone was already drunk. I’ve actually brought this up with teetotalers and have been met with cries of “Oh, fie! It wasn’t really wine; it was merely grape juice.” Yeah. OK. Whatever.
(As an aside, the Greek in this case says τὸν καλὸν οἶνον. καλόν comes from καλός, which has these as possible translations “beautiful, handsome, excellent, eminent, choice, surpassing, precious, useful, suitable, commendable, admirable”. That was some good wine.)
So what do I want? I want overzealous religious folk (of any stripe) to mind their own business and stop trying to force their religion down my throat. These people would also do well to think about how they will feel if, at some point in the future, a different religion than theirs has the reins. How will they feel then, as followers of that religion start enacting laws forcing residents to respect their customs? Something tells me they would feel quite a bit different.
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.
2 Solutions To Project Euler Problem #1
In an effort to not go a whole month without blogging, and in the interest of posting some code samples, I give you two solutions to Project Euler: Problem #1. If you’ve never heard of it, Project Euler (pronounced “oiler” after the Swiss mathematician Leonhard Paul Euler) is a set of increasingly difficult programming challenges. Participants can write their programs in any language and the only goal is to solve the problems and learn something. There are no prizes and you don’t have to show your work.
I had looked at this project years ago, and I swear I thought I had already solved some of them, but maybe I only thought about doing it. Anyway, I have two solutions to the first problem; one in Groovy and the other in Scala. Here, then, is how Project Euler describes the problem
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
So, the goal is to take a series of numbers from 0 to 1000, exclusive, find all the numbers divisible by 3 or 5 and add them together. Here’s the Groovy solution.
def subList = (0..<1000).findAll {it % 3 == 0 || it % 5 == 0}
def sum = subList.inject(0) {i, sum -> sum + i}
println "Sum = ${sum}"
This is a very simple program, and I could have written it as a one-line program. I broke it up into a few lines for clarity. As you can see, the first line creates an exclusive range from 0 to 1000. It then calls the findAll method on that range, passing in a closure that will return true if the passed-in digit from the range, called “it” here, is evenly divisible by 3 or 5. The result of findAll is another collection, containing only those values that passed the divisibility test. We then take that list, passing 0 into the inject method, which will neatly sum the values up and return that value. Easy peasy.
Now here’s the Scala version. You’ll notice it is very similar to the Groovy solution.
val subList = for {
i <- List.range(0, 1000)
if i % 3 == 0 || i % 5 == 0
} yield i
val sum = subList.foldLeft(0) {(i, j) => i + j}
println("Sum = " + sum)
I used a sequence comprehension to generate the sublist here. The bit beginning with “for” generates an exclusive range from 0 to 1000, which is then iterated over, assigning each value to “i”. Then, if it is divisible by 3 or 5, it is yielded up by the comprehension. The result is a collection of just those numbers that we want, assigned to the val called subList. We then call foldLeft on that sublist, doing exactly what we did in the Groovy solution. Again, pretty simple.
Now, I could have solved this one in an almost identical fashion to the Groovy solution by using the filter method of lists, but I wanted to solve it first using a list comprehension. Here is the second solution
val subList = List.range(0, 1000) filter {i => i % 3 == 0 || i % 5 == 0}
val sum = subList.foldLeft(0) {(i, j) => i + j}
println("Sum = " + sum)
I timed the solutions and all three finished in just over a second. The second Scala solution seemed ever-so-slightly faster than the other two.
As I get time, I will work on additional problems from the site and post the answers here. I don’t know that I’ll always do solutions in two languages, but I might.
My Varied Musical Tastes
I use the last.fm application on my Mac to “scrobble” what songs I’m listening to. This allows me to keep a record of what’s been playing, but it mostly allows me to be a complete exhibitionist and show “the world” what sort of music I like. When I indicate that I “love” a song, that even shows up on my Friendfeed page, for added coverage.
This morning, I happened to be on my last.fm page and I noticed the graph below, showing my top 15 artists by the number of songs I’ve played by them.
Pretty interesting, eh? I’ve always had diverse musical tastes, but Frank is still the man. If you go to my page, the little arrow icon indicates that you can listen to some of that artist’s work. Shame on them for not having anything by Eilen Jewell!
Windows 7 Party Kit Unboxing
My Windows 7 Party Kit arrived this afternoon via UPS, and I decided to be like the cool kids and film myself taking the bits out of the box and discussing them. I should have gotten Thomas to hold the camera for me, but he was doing something else at the time (I think). Anyway, I held the camera myself, so it’s a bit Blair Witch in terms of cinematography.
I’m Hosting A Windows 7 Launch Party
No, don’t start checking your thermometers to see if Hell has frozen over. Believe it or not, I’m actually hosting a Windows 7 Launch Party. I know, I know. I’ve become quite a Mac Bigot™ over the years, and have not had anything good to say about Windows for a very long time. But things are different now.
I’ve been using Windows 7 on my netbook for a couple of months now, and it works wonderfully well. My company gave us Windows 7 the day it went RTM, and my work laptop has been rock solid since I 86′d Vista and upgraded to Win7. And last Saturday night, my son’s 2006 vintage AMD machine stopped booting. After trying to repair whatever might have been wrong with the XP that was on it, I decided to see if Win7 would run on it. I installed it and it runs better now than it did before. And Thomas loves the way Win7 looks.
I like the fact that it doesn’t BSOD every 2 hours, like Vista on my work laptop did.
So, why am I doing this party thing? Well, when I first heard about it on TWiT, I laughed. A lot of people laughed. But then I thought about it a bit. For doing just a little bit of work, such as inviting friends who probably won’t come ;-), I get some neat collectible Win7 stuff, and a free copy of Windows 7 Ultimate “Signature Edition” which, apparently, means Steve Ballmer signed the box, or something like that. That seemed like a fair trade to me.
I have invited several people to the party, but most have not yet RSVP’d. So, I’m extending this invitation to people who know me in the real world, live somewhere near Atlanta, and are willing to drive out East to where I live. The “know me in the real world” bit is very important, as I won’t give my home address to some crazed maniac I only know through the aether. Crazed maniacs I know IRL are fine.
The party is Saturday, October 24 at 8:04 PM. I will have my netbook out if people want to look at it with Win7, and you can feel free to “ooh” and “ah” over it. If you’re interested in coming, email me.
Here’s the text of the invitation that I wrote for houseparty.com to send out in the invitations:
Hey Friend of Joey,
You’re receiving this because I’m throwing a Windows 7 Launch Party. Yes, you read that right: the Mac Bigot is hosting a Windows party. Why? Because I actually like Win7, and I thought it might be fun. (And I get a free copy of Windows 7 Ultimate…) If you come, we can stand around my ASUS Netbook or my Dell laptop, both of which have Win7 loaded, and ogle them and their awesomeness, for which there is no charge. There will be a modicum of food and libation, which means Cheetohs and Coke, most likely. ;-) As part of the “party pack” we get Windows7 plates and napkins and such, which will only enhance the joy!
All kidding aside, I hope you can come.
So, if that doesn’t make you want to come, I don’t know what will. :-)
So A Guy Comes To My Door, Wanting To Sell Me Some Meat…
As the title suggests, about 30 minutes ago a guy comes to the door, wanting to sell me some meat. That sounds like the setup for a bad joke, but it isn’t. My wife told him to wait outside, and then she came and got me. I went out on the porch and he proceeded to tell me that he was from “The Cattle Exchange” and that he had some great deals on “steaks, pork, chicken and seafood.” I walked up to his truck, and he proceeded to show me a box of nice-looking, vacuum-packaged steaks. After showing me all the meat, he whipped out a price list. Here’s a recap of the ensuing discussion
Him: Now, if you were to order this online, it would cost you $451. But when I’m out here, doing what I do, I’m supposed to get $299…
Me: Wow. That’s still a lot of money.
Him: … and if you buy the case, I’ll throw in a case of chicken for $20.
Me: That’s still an awful lot of money for meat.
Him: Well, what if I cut another $100 off that price?
Me: You know, I’m gonna pass. We just don’t eat that much steak. Plus, that’s still a lot of money, to a company I’ve never heard of, and a guy who showed up at my door wanting to sell me some meat. No offense. (That last was said in my best Paulie Walnuts voice, with the appropriate hand gestures.) I’ll look your company up online and maybe think about it.
He then packed up his wares and left.
The whole thing just felt wrong. My first thought was that either this guy is ripping off his company, and selling it for less than he was supposed to, or his company was ripping people off on their website. I came back inside and looked up the company. It turns out my Spidey Sense™ was spot on with this outfit. Check out this headline Atlanta Cattle Exchange Complaints – Door-to-door meat sellers rip off! The comments are pretty enlightening, too. Looks like I made the right decision in not trusting him. It’s basically a scam from start to finish.
So, if a guy shows up at your door trying to sell you some meat, you should… wait for it… send him packing. Get it? Get it? Meat… packing… Thank you, thank you. I’ll be here all week. Try the veal and remember to tip your waitress.
The Live On The Internet Song
Finally, I catch on to a meme before it’s too late!
iPhone Interface For My Blog
09/28/2009 Update: Now added a link to the view from Android.
Last week I learned about WPTouch, which is a plugin for WordPress that reformats the theme for the iPhone, Android and other mobile devices. It was an easy install, and I am now happy to report that if you view my blog on a mobile device, you’ll see the new UI. Here’s what it looks like on an iPhone
If anybody has an Android phone, or some other supported mobile device, send me a screenshot so I can see what it looks like.
Thanks to Steve Ziegler, here’s what it looks like from an Android device. Thanks, Steve!
Sad Building
A sad, abandoned (?), building across the street from #wcbhm09








