There are lots of ways to achieve a stable mash temperature.....but my philosophy is strictly K.I.S.S., so I go with preheat.
First thing, I heat 3 gal. of water on the stove to 170F.
Next, I pour it into my MLT (a Home Depot / Rubbermaid 10 gal. "Big Orange" cooler), and let it sit for at least an hour. (This is very early, and usually I make my daily trip into town while this is going on). The cooler will usually be @ 154F after preheating.
I then preheat my 5 gal. strike water. The temperature depends on the amount of grist I'm mashing. Last time it was 15 lbs, and I heated the strike water to 162F. I poured out the preheat water, put in the braid, dumped in the grist, and poured the strike water on top. After about two minutes of steady mixing with a paddle, I hit my mash temp (152F) right on the money.
This is the way I like it to go. It did take me a while to realize that the simple and easy way to do this was to just figure out the numbers for MY system, and not try to use brewing software or any of that jazz.
I cover the MLT with a furniture pad while mashing. I also was having a temperature loss of a few degrees at the beginning, then realized that the cooler lid, unlike the body, was not insulated. So I drilled a couple of holes and shot the lid full of that "Great Stuff" brand spray foam insulation. Worked like a charm.