Servo only going one direction till it reach limit
!flip doesn't really do anything and will probably be optimized out by the compiler. You need to save the result: flip = !flip;

You can simplify the code a bit:

void loop() {
    if(flip) {
        servo.write(60);
    }
    else {
        servo.write(100);
    }
    flip = !flip;
    delay(650);
}


Or, get rid of the delay altogether:

uint32_t last_millis = 0;    
void loop() {
    if (millis() - last_millis &gt;= 650) {
        servo.write(flip ? 60 : 100);
        flip = !flip; 
        last_millis = millis();
    }
}