My Temperature Sensor is driving me instane

So I recently received my Temperature Sensor, TC74A0.

I followed this example

After wiring it up in the picture, and then using the sample code, NOTHING printed to serial.
I had to move the "Wire.endTransmission()" to after the wire requests.

Now, after unplugging it and plugging it back in, using the exact same setup no longer has output again.
What in the world is going on? Doing my best to debug, it stops at

while(Wire.available() == 0);

After compiling it 20+ times, and just unhooking and rehooking cables, it works again. WHAT IN THE WORLD.

BUT NOW, after moving it to my larger breadboard, it all stops working again. So I hooked it up to my small one, and it no longer works. The data outputs 0 no matter what.

Here is my code:

A bad cable?

Bad breadboard?

Get your multimeter out and test continuity of everything.

You need 4k7 pullup resistors on SDA and SCL. Maybe you forgot them?

[ oh yes, style point:

while(Wire.available() == 0);
while (Wire.available() == 0)
{ // wait for available
}

Which is obvious to the eye and which is easy to mis-read?

MarkT:
You need 4k7 pullup resistors on SDA and SCL. Maybe you forgot them?

It's probably not that. The Wire library (incorrectly) enables the internal pullups.

MarkT:
[ oh yes, style point:

while(Wire.available() == 0);
while (Wire.available() == 0)

{ // wait for available
}



Which is obvious to the eye and which is easy to mis-read?

Yep.

If I could change one thing about C/C++ it would be mandatory { } after if/while/for/etc.

(OK, I can think of some other things, too...but that one's near the top of the list)

I2C bus needs ~4k7 pullups, the internal ones may not be strong enough if there is significant
loading.