> I usually do not have another job lined up when I lose my current one, so I've been taking one mediocre job offer after another to make ends meet.
This is your problem: to make ends meet. You're a programmer by profession, your salary should be enough to have significant savings.