May 2012 Lua Article Problems

The lua examples in the May 2012 article "Object-Oriented Programming with Lua" do not seem to work as presented in either version 5.4.1 or 5.2. In particular using:

function Point.new(self, o)
local p = o or {x=0, y=0}
return p
end

and the print method given. Then using:

p1 = Point.new({x=10, y=10})

Point.print(p1)

Gives (0,0) instead of (10,10).

The problem appears to be the "self" in the constructor makes to ctor fail to process the object {x=10, y=10}. Is something missing from the article?