UpdatePanel: in 2008 you could make ajax websites when ajax was the buzzword, even without knowing what a request is. Just a drag and drop away, using the control from visual studio.
Problems appeared when your app was not trivial, and MBs of viewstate travelled in each request/response, or for some reason something did not update and you had to end up calling __doPostback() among other nasty hacks.
What a wrong abstraction