I also remember such a post somewhere, but cannot find it at the moment. Meanwhile, you can try corexy kinematics, here is my theory on how to set up homing:
I _think_ that I have come up with a workaround:
1) arrange home switches so that one is tripped, when carriage reaches the desired end and the other is tripped, when gantry reaches its desired end;
2) in INI file set home_search and home_latch velocities to be the same value, but one positive, the other negative for both motors, depends on config.
3) after starting homing:
a) both motors turn the same direction (both are doing home_search) - carriage reaches its desired position and trips home switch;
b) one motor starts home_latch, the other continues home_search, motors turn in opposite directions, the gantry is now moving towards its home switch;
c) when gantry trips the second homeswitch, both motors will do home_latch, so carriage starts moving off its switch,
d) first motor stops and is homed as soon as first homeswitch is untripped
e) only second motor is still moving, causing the gantry to back off its switch
f) second motor is homed as soon as second switch turns off.
There is one little drawback: in point E, where second motor is moving the gantry off the switch, it moves the carriage by the same amount.
The trick to repeatable home position is not to change home_search and home_latch velocities (it changes the distance, required to stop the movement) and have good, precise switches with good repeatability (the lower the velocity, the lower is the distance variation due to error of switch)
Home_search velocity can have opposite signs for each motor (and home_latch as well), which would cause gantry to hit its switch at first and only then the carriage, but it does not change the principle as whole.