Sorry if I haven't explained it correctly. push scales your game to a target window resolution and corrects the ratio by leaving empty spaces (black bars) on the sides when needed.
Something that also confuses me is what apply(1) and apply(2) do, your github page seems to indicate 1 and 2 are magic constants meaning "start" and "end", but why not just have two functions, or apply("start") and apply("end")?
apply(1) and apply(2) simply applies the scaling and translating operations. It's like push and pop, you have to call them before and after your drawing logic.
And you're right, these numbers may seem confusing. I'll change that.
As for the coordinates, you just have to use your fixed game resolution as normally. So, for instance, if you'd like to make a pixel art game, you set your game width and height to 320x200 (or anything) and make your game as if it was targeted for 320x200 screens. push will then scale the game to the screen resolution, center it and add black bars around it.
viewport coordinates (0 to 1 to represent screen dimensions)
I didn't get this, could you explain a bit ? That might be interesting to implement
![Smile :)](./images/smilies/ms-smile.png)