CINXE.COM
Nien Cheng | Author | LibraryThing
<!DOCTYPE html> <html class="lt2 no-js" data-product="lt2" data-available_styles="verdant_14 verdant_12 verdant_tight_12 system_14 system_15 georgia_14 system_large atkinson_16" lang639="en" ><head> <!-- ROOT --> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset-utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Nien Cheng | Author | LibraryThing</title> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="msapplication-config" content="none"/> <script type="text/javascript"> ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; window.NREUM||(NREUM={}),__nr_require=function(t,e,n){function r(n){if(!e[n]){var o=e[n]={exports:{}};t[n][0].call(o.exports,function(e){var o=t[n][1][e];return r(o||e)},o,o.exports)}return e[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(t,e,n){function r(t){try{s.console&&console.log(t)}catch(e){}}var o,i=t("ee"),a=t(32),s={};try{o=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(s.console=!0,o.indexOf("dev")!==-1&&(s.dev=!0),o.indexOf("nr_dev")!==-1&&(s.nrDev=!0))}catch(c){}s.nrDev&&i.on("internal-error",function(t){r(t.stack)}),s.dev&&i.on("fn-err",function(t,e,n){r(n.stack)}),s.dev&&(r("NR AGENT IN DEVELOPMENT MODE"),r("flags: "+a(s,function(t,e){return t}).join(", ")))},{}],2:[function(t,e,n){function r(t,e,n,r,s){try{l?l-=1:o(s||new UncaughtException(t,e,n),!0)}catch(f){try{i("ierr",[f,c.now(),!0])}catch(d){}}return"function"==typeof u&&u.apply(this,a(arguments))}function UncaughtException(t,e,n){this.message=t||"Uncaught error with no additional information",this.sourceURL=e,this.line=n}function o(t,e){var n=e?null:c.now();i("err",[t,n])}var i=t("handle"),a=t(33),s=t("ee"),c=t("loader"),f=t("gos"),u=window.onerror,d=!1,p="nr@seenError";if(!c.disabled){var l=0;c.features.err=!0,t(1),window.onerror=r;try{throw new Error}catch(h){"stack"in h&&(t(14),t(13),"addEventListener"in window&&t(7),c.xhrWrappable&&t(15),d=!0)}s.on("fn-start",function(t,e,n){d&&(l+=1)}),s.on("fn-err",function(t,e,n){d&&!n[p]&&(f(n,p,function(){return!0}),this.thrown=!0,o(n))}),s.on("fn-end",function(){d&&!this.thrown&&l>0&&(l-=1)}),s.on("internal-error",function(t){i("ierr",[t,c.now(),!0])})}},{}],3:[function(t,e,n){var r=t("loader");r.disabled||(r.features.ins=!0)},{}],4:[function(t,e,n){function r(){U++,L=g.hash,this[u]=y.now()}function o(){U--,g.hash!==L&&i(0,!0);var t=y.now();this[h]=~~this[h]+t-this[u],this[d]=t}function i(t,e){E.emit("newURL",[""+g,e])}function a(t,e){t.on(e,function(){this[e]=y.now()})}var s="-start",c="-end",f="-body",u="fn"+s,d="fn"+c,p="cb"+s,l="cb"+c,h="jsTime",m="fetch",v="addEventListener",w=window,g=w.location,y=t("loader");if(w[v]&&y.xhrWrappable&&!y.disabled){var x=t(11),b=t(12),E=t(9),R=t(7),O=t(14),T=t(8),S=t(15),P=t(10),M=t("ee"),C=M.get("tracer"),N=t(23);t(17),y.features.spa=!0;var L,U=0;M.on(u,r),b.on(p,r),P.on(p,r),M.on(d,o),b.on(l,o),P.on(l,o),M.buffer([u,d,"xhr-resolved"]),R.buffer([u]),O.buffer(["setTimeout"+c,"clearTimeout"+s,u]),S.buffer([u,"new-xhr","send-xhr"+s]),T.buffer([m+s,m+"-done",m+f+s,m+f+c]),E.buffer(["newURL"]),x.buffer([u]),b.buffer(["propagate",p,l,"executor-err","resolve"+s]),C.buffer([u,"no-"+u]),P.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"]),a(T,m+s),a(T,m+"-done"),a(P,"new-jsonp"),a(P,"jsonp-end"),a(P,"cb-start"),E.on("pushState-end",i),E.on("replaceState-end",i),w[v]("hashchange",i,N(!0)),w[v]("load",i,N(!0)),w[v]("popstate",function(){i(0,U>1)},N(!0))}},{}],5:[function(t,e,n){function r(){var t=new PerformanceObserver(function(t,e){var n=t.getEntries();s(v,[n])});try{t.observe({entryTypes:["resource"]})}catch(e){}}function o(t){if(s(v,[window.performance.getEntriesByType(w)]),window.performance["c"+p])try{window.performance[h](m,o,!1)}catch(t){}else try{window.performance[h]("webkit"+m,o,!1)}catch(t){}}function i(t){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var a=t("ee"),s=t("handle"),c=t(14),f=t(13),u=t(6),d=t(23),p="learResourceTimings",l="addEventListener",h="removeEventListener",m="resourcetimingbufferfull",v="bstResource",w="resource",g="-start",y="-end",x="fn"+g,b="fn"+y,E="bstTimer",R="pushState",O=t("loader");if(!O.disabled){O.features.stn=!0,t(9),"addEventListener"in window&&t(7);var T=NREUM.o.EV;a.on(x,function(t,e){var n=t[0];n instanceof T&&(this.bstStart=O.now())}),a.on(b,function(t,e){var n=t[0];n instanceof T&&s("bst",[n,e,this.bstStart,O.now()])}),c.on(x,function(t,e,n){this.bstStart=O.now(),this.bstType=n}),c.on(b,function(t,e){s(E,[e,this.bstStart,O.now(),this.bstType])}),f.on(x,function(){this.bstStart=O.now()}),f.on(b,function(t,e){s(E,[e,this.bstStart,O.now(),"requestAnimationFrame"])}),a.on(R+g,function(t){this.time=O.now(),this.startPath=location.pathname+location.hash}),a.on(R+y,function(t){s("bstHist",[location.pathname+location.hash,this.startPath,this.time])}),u()?(s(v,[window.performance.getEntriesByType("resource")]),r()):l in window.performance&&(window.performance["c"+p]?window.performance[l](m,o,d(!1)):window.performance[l]("webkit"+m,o,d(!1))),document[l]("scroll",i,d(!1)),document[l]("keypress",i,d(!1)),document[l]("click",i,d(!1))}}},{}],6:[function(t,e,n){e.exports=function(){return"PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver}},{}],7:[function(t,e,n){function r(t){for(var e=t;e&&!e.hasOwnProperty(u);)e=Object.getPrototypeOf(e);e&&o(e)}function o(t){s.inPlace(t,[u,d],"-",i)}function i(t,e){return t[1]}var a=t("ee").get("events"),s=t("wrap-function")(a,!0),c=t("gos"),f=XMLHttpRequest,u="addEventListener",d="removeEventListener";e.exports=a,"getPrototypeOf"in Object?(r(document),r(window),r(f.prototype)):f.prototype.hasOwnProperty(u)&&(o(window),o(f.prototype)),a.on(u+"-start",function(t,e){var n=t[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var r=c(n,"nr@wrapped",function(){function t(){if("function"==typeof n.handleEvent)return n.handleEvent.apply(n,arguments)}var e={object:t,"function":n}[typeof n];return e?s(e,"fn-",null,e.name||"anonymous"):n});this.wrapped=t[1]=r}}),a.on(d+"-start",function(t){t[1]=this.wrapped||t[1]})},{}],8:[function(t,e,n){function r(t,e,n){var r=t[e];"function"==typeof r&&(t[e]=function(){var t=i(arguments),e={};o.emit(n+"before-start",[t],e);var a;e[m]&&e[m].dt&&(a=e[m].dt);var s=r.apply(this,t);return o.emit(n+"start",[t,a],s),s.then(function(t){return o.emit(n+"end",[null,t],s),t},function(t){throw o.emit(n+"end",[t],s),t})})}var o=t("ee").get("fetch"),i=t(33),a=t(32);e.exports=o;var s=window,c="fetch-",f=c+"body-",u=["arrayBuffer","blob","json","text","formData"],d=s.Request,p=s.Response,l=s.fetch,h="prototype",m="nr@context";d&&p&&l&&(a(u,function(t,e){r(d[h],e,f),r(p[h],e,f)}),r(s,"fetch",c),o.on(c+"end",function(t,e){var n=this;if(e){var r=e.headers.get("content-length");null!==r&&(n.rxSize=r),o.emit(c+"done",[null,e],n)}else o.emit(c+"done",[t],n)}))},{}],9:[function(t,e,n){var r=t("ee").get("history"),o=t("wrap-function")(r);e.exports=r;var i=window.history&&window.history.constructor&&window.history.constructor.prototype,a=window.history;i&&i.pushState&&i.replaceState&&(a=i),o.inPlace(a,["pushState","replaceState"],"-")},{}],10:[function(t,e,n){function r(t){function e(){f.emit("jsonp-end",[],l),t.removeEventListener("load",e,c(!1)),t.removeEventListener("error",n,c(!1))}function n(){f.emit("jsonp-error",[],l),f.emit("jsonp-end",[],l),t.removeEventListener("load",e,c(!1)),t.removeEventListener("error",n,c(!1))}var r=t&&"string"==typeof t.nodeName&&"script"===t.nodeName.toLowerCase();if(r){var o="function"==typeof t.addEventListener;if(o){var a=i(t.src);if(a){var d=s(a),p="function"==typeof d.parent[d.key];if(p){var l={};u.inPlace(d.parent,[d.key],"cb-",l),t.addEventListener("load",e,c(!1)),t.addEventListener("error",n,c(!1)),f.emit("new-jsonp",[t.src],l)}}}}}function o(){return"addEventListener"in window}function i(t){var e=t.match(d);return e?e[1]:null}function a(t,e){var n=t.match(l),r=n[1],o=n[3];return o?a(o,e[r]):e[r]}function s(t){var e=t.match(p);return e&&e.length>=3?{key:e[2],parent:a(e[1],window)}:{key:t,parent:window}}var c=t(23),f=t("ee").get("jsonp"),u=t("wrap-function")(f);if(e.exports=f,o()){var d=/[?&](?:callback|cb)=([^&#]+)/,p=/(.*)\.([^.]+)/,l=/^(\w+)(\.|$)(.*)$/,h=["appendChild","insertBefore","replaceChild"];Node&&Node.prototype&&Node.prototype.appendChild?u.inPlace(Node.prototype,h,"dom-"):(u.inPlace(HTMLElement.prototype,h,"dom-"),u.inPlace(HTMLHeadElement.prototype,h,"dom-"),u.inPlace(HTMLBodyElement.prototype,h,"dom-")),f.on("dom-start",function(t){r(t[0])})}},{}],11:[function(t,e,n){var r=t("ee").get("mutation"),o=t("wrap-function")(r),i=NREUM.o.MO;e.exports=r,i&&(window.MutationObserver=function(t){return this instanceof i?new i(o(t,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype)},{}],12:[function(t,e,n){function r(t){var e=i.context(),n=s(t,"executor-",e,null,!1),r=new f(n);return i.context(r).getCtx=function(){return e},r}var o=t("wrap-function"),i=t("ee").get("promise"),a=t("ee").getOrSetContext,s=o(i),c=t(32),f=NREUM.o.PR;e.exports=i,f&&(window.Promise=r,["all","race"].forEach(function(t){var e=f[t];f[t]=function(n){function r(t){return function(){i.emit("propagate",[null,!o],a,!1,!1),o=o||!t}}var o=!1;c(n,function(e,n){Promise.resolve(n).then(r("all"===t),r(!1))});var a=e.apply(f,arguments),s=f.resolve(a);return s}}),["resolve","reject"].forEach(function(t){var e=f[t];f[t]=function(t){var n=e.apply(f,arguments);return t!==n&&i.emit("propagate",[t,!0],n,!1,!1),n}}),f.prototype["catch"]=function(t){return this.then(null,t)},f.prototype=Object.create(f.prototype,{constructor:{value:r}}),c(Object.getOwnPropertyNames(f),function(t,e){try{r[e]=f[e]}catch(n){}}),o.wrapInPlace(f.prototype,"then",function(t){return function(){var e=this,n=o.argsToArray.apply(this,arguments),r=a(e);r.promise=e,n[0]=s(n[0],"cb-",r,null,!1),n[1]=s(n[1],"cb-",r,null,!1);var c=t.apply(this,n);return r.nextPromise=c,i.emit("propagate",[e,!0],c,!1,!1),c}}),i.on("executor-start",function(t){t[0]=s(t[0],"resolve-",this,null,!1),t[1]=s(t[1],"resolve-",this,null,!1)}),i.on("executor-err",function(t,e,n){t[1](n)}),i.on("cb-end",function(t,e,n){i.emit("propagate",[n,!0],this.nextPromise,!1,!1)}),i.on("propagate",function(t,e,n){this.getCtx&&!e||(this.getCtx=function(){if(t instanceof Promise)var e=i.context(t);return e&&e.getCtx?e.getCtx():this})}),r.toString=function(){return""+f})},{}],13:[function(t,e,n){var r=t("ee").get("raf"),o=t("wrap-function")(r),i="equestAnimationFrame";e.exports=r,o.inPlace(window,["r"+i,"mozR"+i,"webkitR"+i,"msR"+i],"raf-"),r.on("raf-start",function(t){t[0]=o(t[0],"fn-")})},{}],14:[function(t,e,n){function r(t,e,n){t[0]=a(t[0],"fn-",null,n)}function o(t,e,n){this.method=n,this.timerDuration=isNaN(t[1])?0:+t[1],t[0]=a(t[0],"fn-",this,n)}var i=t("ee").get("timer"),a=t("wrap-function")(i),s="setTimeout",c="setInterval",f="clearTimeout",u="-start",d="-";e.exports=i,a.inPlace(window,[s,"setImmediate"],s+d),a.inPlace(window,[c],c+d),a.inPlace(window,[f,"clearImmediate"],f+d),i.on(c+u,r),i.on(s+u,o)},{}],15:[function(t,e,n){function r(t,e){d.inPlace(e,["onreadystatechange"],"fn-",s)}function o(){var t=this,e=u.context(t);t.readyState>3&&!e.resolved&&(e.resolved=!0,u.emit("xhr-resolved",[],t)),d.inPlace(t,y,"fn-",s)}function i(t){x.push(t),m&&(E?E.then(a):w?w(a):(R=-R,O.data=R))}function a(){for(var t=0;t<x.length;t++)r([],x[t]);x.length&&(x=[])}function s(t,e){return e}function c(t,e){for(var n in t)e[n]=t[n];return e}t(7);var f=t("ee"),u=f.get("xhr"),d=t("wrap-function")(u),p=t(23),l=NREUM.o,h=l.XHR,m=l.MO,v=l.PR,w=l.SI,g="readystatechange",y=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],x=[];e.exports=u;var b=window.XMLHttpRequest=function(t){var e=new h(t);try{u.emit("new-xhr",[e],e),e.addEventListener(g,o,p(!1))}catch(n){try{u.emit("internal-error",[n])}catch(r){}}return e};if(c(h,b),b.prototype=h.prototype,d.inPlace(b.prototype,["open","send"],"-xhr-",s),u.on("send-xhr-start",function(t,e){r(t,e),i(e)}),u.on("open-xhr-start",r),m){var E=v&&v.resolve();if(!w&&!v){var R=1,O=document.createTextNode(R);new m(a).observe(O,{characterData:!0})}}else f.on("fn-end",function(t){t[0]&&t[0].type===g||a()})},{}],16:[function(t,e,n){function r(t){if(!s(t))return null;var e=window.NREUM;if(!e.loader_config)return null;var n=(e.loader_config.accountID||"").toString()||null,r=(e.loader_config.agentID||"").toString()||null,f=(e.loader_config.trustKey||"").toString()||null;if(!n||!r)return null;var h=l.generateSpanId(),m=l.generateTraceId(),v=Date.now(),w={spanId:h,traceId:m,timestamp:v};return(t.sameOrigin||c(t)&&p())&&(w.traceContextParentHeader=o(h,m),w.traceContextStateHeader=i(h,v,n,r,f)),(t.sameOrigin&&!u()||!t.sameOrigin&&c(t)&&d())&&(w.newrelicHeader=a(h,m,v,n,r,f)),w}function o(t,e){return"00-"+e+"-"+t+"-01"}function i(t,e,n,r,o){var i=0,a="",s=1,c="",f="";return o+"@nr="+i+"-"+s+"-"+n+"-"+r+"-"+t+"-"+a+"-"+c+"-"+f+"-"+e}function a(t,e,n,r,o,i){var a="btoa"in window&&"function"==typeof window.btoa;if(!a)return null;var s={v:[0,1],d:{ty:"Browser",ac:r,ap:o,id:t,tr:e,ti:n}};return i&&r!==i&&(s.d.tk=i),btoa(JSON.stringify(s))}function s(t){return f()&&c(t)}function c(t){var e=!1,n={};if("init"in NREUM&&"distributed_tracing"in NREUM.init&&(n=NREUM.init.distributed_tracing),t.sameOrigin)e=!0;else if(n.allowed_origins instanceof Array)for(var r=0;r<n.allowed_origins.length;r++){var o=h(n.allowed_origins[r]);if(t.hostname===o.hostname&&t.protocol===o.protocol&&t.port===o.port){e=!0;break}}return e}function f(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.enabled}function u(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.exclude_newrelic_header}function d(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&NREUM.init.distributed_tracing.cors_use_newrelic_header!==!1}function p(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.cors_use_tracecontext_headers}var l=t(29),h=t(18);e.exports={generateTracePayload:r,shouldGenerateTrace:s}},{}],17:[function(t,e,n){function r(t){var e=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var r=0;r<p;r++)t.removeEventListener(d[r],this.listener,!1);return e.protocol&&"data"===e.protocol?void g("Ajax/DataUrl/Excluded"):void(e.aborted||(n.duration=a.now()-this.startTime,this.loadCaptureCalled||4!==t.readyState?null==e.status&&(e.status=0):i(this,t),n.cbTime=this.cbTime,s("xhr",[e,n,this.startTime,this.endTime,"xhr"],this)))}}function o(t,e){var n=c(e),r=t.params;r.hostname=n.hostname,r.port=n.port,r.protocol=n.protocol,r.host=n.hostname+":"+n.port,r.pathname=n.pathname,t.parsedOrigin=n,t.sameOrigin=n.sameOrigin}function i(t,e){t.params.status=e.status;var n=v(e,t.lastSize);if(n&&(t.metrics.rxSize=n),t.sameOrigin){var r=e.getResponseHeader("X-NewRelic-App-Data");r&&(t.params.cat=r.split(", ").pop())}t.loadCaptureCalled=!0}var a=t("loader");if(a.xhrWrappable&&!a.disabled){var s=t("handle"),c=t(18),f=t(16).generateTracePayload,u=t("ee"),d=["load","error","abort","timeout"],p=d.length,l=t("id"),h=t(24),m=t(22),v=t(19),w=t(23),g=t(25).recordSupportability,y=NREUM.o.REQ,x=window.XMLHttpRequest;a.features.xhr=!0,t(15),t(8),u.on("new-xhr",function(t){var e=this;e.totalCbs=0,e.called=0,e.cbTime=0,e.end=r,e.ended=!1,e.xhrGuids={},e.lastSize=null,e.loadCaptureCalled=!1,e.params=this.params||{},e.metrics=this.metrics||{},t.addEventListener("load",function(n){i(e,t)},w(!1)),h&&(h>34||h<10)||t.addEventListener("progress",function(t){e.lastSize=t.loaded},w(!1))}),u.on("open-xhr-start",function(t){this.params={method:t[0]},o(this,t[1]),this.metrics={}}),u.on("open-xhr-end",function(t,e){"loader_config"in NREUM&&"xpid"in NREUM.loader_config&&this.sameOrigin&&e.setRequestHeader("X-NewRelic-ID",NREUM.loader_config.xpid);var n=f(this.parsedOrigin);if(n){var r=!1;n.newrelicHeader&&(e.setRequestHeader("newrelic",n.newrelicHeader),r=!0),n.traceContextParentHeader&&(e.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&e.setRequestHeader("tracestate",n.traceContextStateHeader),r=!0),r&&(this.dt=n)}}),u.on("send-xhr-start",function(t,e){var n=this.metrics,r=t[0],o=this;if(n&&r){var i=m(r);i&&(n.txSize=i)}this.startTime=a.now(),this.listener=function(t){try{"abort"!==t.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==t.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof e.onload))&&o.end(e)}catch(n){try{u.emit("internal-error",[n])}catch(r){}}};for(var s=0;s<p;s++)e.addEventListener(d[s],this.listener,w(!1))}),u.on("xhr-cb-time",function(t,e,n){this.cbTime+=t,e?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof n.onload||this.end(n)}),u.on("xhr-load-added",function(t,e){var n=""+l(t)+!!e;this.xhrGuids&&!this.xhrGuids[n]&&(this.xhrGuids[n]=!0,this.totalCbs+=1)}),u.on("xhr-load-removed",function(t,e){var n=""+l(t)+!!e;this.xhrGuids&&this.xhrGuids[n]&&(delete this.xhrGuids[n],this.totalCbs-=1)}),u.on("xhr-resolved",function(){this.endTime=a.now()}),u.on("addEventListener-end",function(t,e){e instanceof x&&"load"===t[0]&&u.emit("xhr-load-added",[t[1],t[2]],e)}),u.on("removeEventListener-end",function(t,e){e instanceof x&&"load"===t[0]&&u.emit("xhr-load-removed",[t[1],t[2]],e)}),u.on("fn-start",function(t,e,n){e instanceof x&&("onload"===n&&(this.onload=!0),("load"===(t[0]&&t[0].type)||this.onload)&&(this.xhrCbStart=a.now()))}),u.on("fn-end",function(t,e){this.xhrCbStart&&u.emit("xhr-cb-time",[a.now()-this.xhrCbStart,this.onload,e],e)}),u.on("fetch-before-start",function(t){function e(t,e){var n=!1;return e.newrelicHeader&&(t.set("newrelic",e.newrelicHeader),n=!0),e.traceContextParentHeader&&(t.set("traceparent",e.traceContextParentHeader),e.traceContextStateHeader&&t.set("tracestate",e.traceContextStateHeader),n=!0),n}var n,r=t[1]||{};"string"==typeof t[0]?n=t[0]:t[0]&&t[0].url?n=t[0].url:window.URL&&t[0]&&t[0]instanceof URL&&(n=t[0].href),n&&(this.parsedOrigin=c(n),this.sameOrigin=this.parsedOrigin.sameOrigin);var o=f(this.parsedOrigin);if(o&&(o.newrelicHeader||o.traceContextParentHeader))if("string"==typeof t[0]||window.URL&&t[0]&&t[0]instanceof URL){var i={};for(var a in r)i[a]=r[a];i.headers=new Headers(r.headers||{}),e(i.headers,o)&&(this.dt=o),t.length>1?t[1]=i:t.push(i)}else t[0]&&t[0].headers&&e(t[0].headers,o)&&(this.dt=o)}),u.on("fetch-start",function(t,e){this.params={},this.metrics={},this.startTime=a.now(),this.dt=e,t.length>=1&&(this.target=t[0]),t.length>=2&&(this.opts=t[1]);var n,r=this.opts||{},i=this.target;if("string"==typeof i?n=i:"object"==typeof i&&i instanceof y?n=i.url:window.URL&&"object"==typeof i&&i instanceof URL&&(n=i.href),o(this,n),"data"!==this.params.protocol){var s=(""+(i&&i instanceof y&&i.method||r.method||"GET")).toUpperCase();this.params.method=s,this.txSize=m(r.body)||0}}),u.on("fetch-done",function(t,e){if(this.endTime=a.now(),this.params||(this.params={}),"data"===this.params.protocol)return void g("Ajax/DataUrl/Excluded");this.params.status=e?e.status:0;var n;"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var r={txSize:this.txSize,rxSize:n,duration:a.now()-this.startTime};s("xhr",[this.params,r,this.startTime,this.endTime,"fetch"],this)})}},{}],18:[function(t,e,n){var r={};e.exports=function(t){if(t in r)return r[t];if(0===(t||"").indexOf("data:"))return{protocol:"data"};var e=document.createElement("a"),n=window.location,o={};e.href=t,o.port=e.port;var i=e.href.split("://");!o.port&&i[1]&&(o.port=i[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===i[0]?"443":"80"),o.hostname=e.hostname||n.hostname,o.pathname=e.pathname,o.protocol=i[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var a=!e.protocol||":"===e.protocol||e.protocol===n.protocol,s=e.hostname===document.domain&&e.port===n.port;return o.sameOrigin=a&&(!e.hostname||s),"/"===o.pathname&&(r[t]=o),o}},{}],19:[function(t,e,n){function r(t,e){var n=t.responseType;return"json"===n&&null!==e?e:"arraybuffer"===n||"blob"===n||"json"===n?o(t.response):"text"===n||""===n||void 0===n?o(t.responseText):void 0}var o=t(22);e.exports=r},{}],20:[function(t,e,n){function r(){}function o(t,e,n,r){return function(){return u.recordSupportability("API/"+e+"/called"),i(t+e,[f.now()].concat(s(arguments)),n?null:this,r),n?void 0:this}}var i=t("handle"),a=t(32),s=t(33),c=t("ee").get("tracer"),f=t("loader"),u=t(25),d=NREUM;"undefined"==typeof window.newrelic&&(newrelic=d);var p=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],l="api-",h=l+"ixn-";a(p,function(t,e){d[e]=o(l,e,!0,"api")}),d.addPageAction=o(l,"addPageAction",!0),d.setCurrentRouteName=o(l,"routeName",!0),e.exports=newrelic,d.interaction=function(){return(new r).get()};var m=r.prototype={createTracer:function(t,e){var n={},r=this,o="function"==typeof e;return i(h+"tracer",[f.now(),t,n],r),function(){if(c.emit((o?"":"no-")+"fn-start",[f.now(),r,o],n),o)try{return e.apply(this,arguments)}catch(t){throw c.emit("fn-err",[arguments,this,t],n),t}finally{c.emit("fn-end",[f.now()],n)}}}};a("actionText,setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(t,e){m[e]=o(h,e)}),newrelic.noticeError=function(t,e){"string"==typeof t&&(t=new Error(t)),u.recordSupportability("API/noticeError/called"),i("err",[t,f.now(),!1,e])}},{}],21:[function(t,e,n){function r(t){if(NREUM.init){for(var e=NREUM.init,n=t.split("."),r=0;r<n.length-1;r++)if(e=e[n[r]],"object"!=typeof e)return;return e=e[n[n.length-1]]}}e.exports={getConfiguration:r}},{}],22:[function(t,e,n){e.exports=function(t){if("string"==typeof t&&t.length)return t.length;if("object"==typeof t){if("undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if("undefined"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if(!("undefined"!=typeof FormData&&t instanceof FormData))try{return JSON.stringify(t).length}catch(e){return}}}},{}],23:[function(t,e,n){var r=!1;try{var o=Object.defineProperty({},"passive",{get:function(){r=!0}});window.addEventListener("testPassive",null,o),window.removeEventListener("testPassive",null,o)}catch(i){}e.exports=function(t){return r?{passive:!0,capture:!!t}:!!t}},{}],24:[function(t,e,n){var r=0,o=navigator.userAgent.match(/Firefox[\/\s](\d+\.\d+)/);o&&(r=+o[1]),e.exports=r},{}],25:[function(t,e,n){function r(t,e){var n=[a,t,{name:t},e];return i("storeMetric",n,null,"api"),n}function o(t,e){var n=[s,t,{name:t},e];return i("storeEventMetrics",n,null,"api"),n}var i=t("handle"),a="sm",s="cm";e.exports={constants:{SUPPORTABILITY_METRIC:a,CUSTOM_METRIC:s},recordSupportability:r,recordCustom:o}},{}],26:[function(t,e,n){function r(){return s.exists&&performance.now?Math.round(performance.now()):(i=Math.max((new Date).getTime(),i))-a}function o(){return i}var i=(new Date).getTime(),a=i,s=t(34);e.exports=r,e.exports.offset=a,e.exports.getLastTimestamp=o},{}],27:[function(t,e,n){function r(t){return!(!t||!t.protocol||"file:"===t.protocol)}e.exports=r},{}],28:[function(t,e,n){function r(t,e){var n=t.getEntries();n.forEach(function(t){"first-paint"===t.name?l("timing",["fp",Math.floor(t.startTime)]):"first-contentful-paint"===t.name&&l("timing",["fcp",Math.floor(t.startTime)])})}function o(t,e){var n=t.getEntries();if(n.length>0){var r=n[n.length-1];if(f&&f<r.startTime)return;var o=[r],i=a({});i&&o.push(i),l("lcp",o)}}function i(t){t.getEntries().forEach(function(t){t.hadRecentInput||l("cls",[t])})}function a(t){var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;if(e)return e.type&&(t["net-type"]=e.type),e.effectiveType&&(t["net-etype"]=e.effectiveType),e.rtt&&(t["net-rtt"]=e.rtt),e.downlink&&(t["net-dlink"]=e.downlink),t}function s(t){if(t instanceof w&&!y){var e=Math.round(t.timeStamp),n={type:t.type};a(n),e<=h.now()?n.fid=h.now()-e:e>h.offset&&e<=Date.now()?(e-=h.offset,n.fid=h.now()-e):e=h.now(),y=!0,l("timing",["fi",e,n])}}function c(t){"hidden"===t&&(f=h.now(),l("pageHide",[f]))}if(!("init"in NREUM&&"page_view_timing"in NREUM.init&&"enabled"in NREUM.init.page_view_timing&&NREUM.init.page_view_timing.enabled===!1)){var f,u,d,p,l=t("handle"),h=t("loader"),m=t(31),v=t(23),w=NREUM.o.EV;if("PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver){u=new PerformanceObserver(r);try{u.observe({entryTypes:["paint"]})}catch(g){}d=new PerformanceObserver(o);try{d.observe({entryTypes:["largest-contentful-paint"]})}catch(g){}p=new PerformanceObserver(i);try{p.observe({type:"layout-shift",buffered:!0})}catch(g){}}if("addEventListener"in document){var y=!1,x=["click","keydown","mousedown","pointerdown","touchstart"];x.forEach(function(t){document.addEventListener(t,s,v(!1))})}m(c)}},{}],29:[function(t,e,n){function r(){function t(){return e?15&e[n++]:16*Math.random()|0}var e=null,n=0,r=window.crypto||window.msCrypto;r&&r.getRandomValues&&(e=r.getRandomValues(new Uint8Array(31)));for(var o,i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",a="",s=0;s<i.length;s++)o=i[s],"x"===o?a+=t().toString(16):"y"===o?(o=3&t()|8,a+=o.toString(16)):a+=o;return a}function o(){return a(16)}function i(){return a(32)}function a(t){function e(){return n?15&n[r++]:16*Math.random()|0}var n=null,r=0,o=window.crypto||window.msCrypto;o&&o.getRandomValues&&Uint8Array&&(n=o.getRandomValues(new Uint8Array(31)));for(var i=[],a=0;a<t;a++)i.push(e().toString(16));return i.join("")}e.exports={generateUuid:r,generateSpanId:o,generateTraceId:i}},{}],30:[function(t,e,n){function r(t,e){if(!o)return!1;if(t!==o)return!1;if(!e)return!0;if(!i)return!1;for(var n=i.split("."),r=e.split("."),a=0;a<r.length;a++)if(r[a]!==n[a])return!1;return!0}var o=null,i=null,a=/Version\/(\S+)\s+Safari/;if(navigator.userAgent){var s=navigator.userAgent,c=s.match(a);c&&s.indexOf("Chrome")===-1&&s.indexOf("Chromium")===-1&&(o="Safari",i=c[1])}e.exports={agent:o,version:i,match:r}},{}],31:[function(t,e,n){function r(t){function e(){t(s&&document[s]?document[s]:document[i]?"hidden":"visible")}"addEventListener"in document&&a&&document.addEventListener(a,e,o(!1))}var o=t(23);e.exports=r;var i,a,s;"undefined"!=typeof document.hidden?(i="hidden",a="visibilitychange",s="visibilityState"):"undefined"!=typeof document.msHidden?(i="msHidden",a="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(i="webkitHidden",a="webkitvisibilitychange",s="webkitVisibilityState")},{}],32:[function(t,e,n){function r(t,e){var n=[],r="",i=0;for(r in t)o.call(t,r)&&(n[i]=e(r,t[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],33:[function(t,e,n){function r(t,e,n){e||(e=0),"undefined"==typeof n&&(n=t?t.length:0);for(var r=-1,o=n-e||0,i=Array(o<0?0:o);++r<o;)i[r]=t[e+r];return i}e.exports=r},{}],34:[function(t,e,n){e.exports={exists:"undefined"!=typeof window.performance&&window.performance.timing&&"undefined"!=typeof window.performance.timing.navigationStart}},{}],ee:[function(t,e,n){function r(){}function o(t){function e(t){return t&&t instanceof r?t:t?f(t,c,a):a()}function n(n,r,o,i,a){if(a!==!1&&(a=!0),!l.aborted||i){t&&a&&t(n,r,o);for(var s=e(o),c=m(n),f=c.length,u=0;u<f;u++)c[u].apply(s,r);var p=d[y[n]];return p&&p.push([x,n,r,s]),s}}function i(t,e){g[t]=m(t).concat(e)}function h(t,e){var n=g[t];if(n)for(var r=0;r<n.length;r++)n[r]===e&&n.splice(r,1)}function m(t){return g[t]||[]}function v(t){return p[t]=p[t]||o(n)}function w(t,e){l.aborted||u(t,function(t,n){e=e||"feature",y[n]=e,e in d||(d[e]=[])})}var g={},y={},x={on:i,addEventListener:i,removeEventListener:h,emit:n,get:v,listeners:m,context:e,buffer:w,abort:s,aborted:!1};return x}function i(t){return f(t,c,a)}function a(){return new r}function s(){(d.api||d.feature)&&(l.aborted=!0,d=l.backlog={})}var c="nr@context",f=t("gos"),u=t(32),d={},p={},l=e.exports=o();e.exports.getOrSetContext=i,l.backlog=d},{}],gos:[function(t,e,n){function r(t,e,n){if(o.call(t,e))return t[e];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return t[e]=r,r}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],handle:[function(t,e,n){function r(t,e,n,r){o.buffer([t],r),o.emit(t,e,n)}var o=t("ee").get("handle");e.exports=r,r.ee=o},{}],id:[function(t,e,n){function r(t){var e=typeof t;return!t||"object"!==e&&"function"!==e?-1:t===window?0:a(t,i,function(){return o++})}var o=1,i="nr@id",a=t("gos");e.exports=r},{}],loader:[function(t,e,n){function r(){if(!S++){var t=T.info=NREUM.info,e=v.getElementsByTagName("script")[0];if(setTimeout(f.abort,3e4),!(t&&t.licenseKey&&t.applicationID&&e))return f.abort();c(R,function(e,n){t[e]||(t[e]=n)});var n=a();s("mark",["onload",n+T.offset],null,"api"),s("timing",["load",n]);var r=v.createElement("script");0===t.agent.indexOf("http://")||0===t.agent.indexOf("https://")?r.src=t.agent:r.src=h+"://"+t.agent,e.parentNode.insertBefore(r,e)}}function o(){"complete"===v.readyState&&i()}function i(){s("mark",["domContent",a()+T.offset],null,"api")}var a=t(26),s=t("handle"),c=t(32),f=t("ee"),u=t(30),d=t(27),p=t(21),l=t(23),h=p.getConfiguration("ssl")===!1?"http":"https",m=window,v=m.document,w="addEventListener",g="attachEvent",y=m.XMLHttpRequest,x=y&&y.prototype,b=!d(m.location);NREUM.o={ST:setTimeout,SI:m.setImmediate,CT:clearTimeout,XHR:y,REQ:m.Request,EV:m.Event,PR:m.Promise,MO:m.MutationObserver};var E=""+location,R={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-spa-1215.min.js"},O=y&&x&&x[w]&&!/CriOS/.test(navigator.userAgent),T=e.exports={offset:a.getLastTimestamp(),now:a,origin:E,features:{},xhrWrappable:O,userAgent:u,disabled:b};if(!b){t(20),t(28),v[w]?(v[w]("DOMContentLoaded",i,l(!1)),m[w]("load",r,l(!1))):(v[g]("onreadystatechange",o),m[g]("onload",r)),s("mark",["firstbyte",a.getLastTimestamp()],null,"api");var S=0}},{}],"wrap-function":[function(t,e,n){function r(t,e){function n(e,n,r,c,f){function nrWrapper(){var i,a,u,p;try{a=this,i=d(arguments),u="function"==typeof r?r(i,a):r||{}}catch(l){o([l,"",[i,a,c],u],t)}s(n+"start",[i,a,c],u,f);try{return p=e.apply(a,i)}catch(h){throw s(n+"err",[i,a,h],u,f),h}finally{s(n+"end",[i,a,p],u,f)}}return a(e)?e:(n||(n=""),nrWrapper[p]=e,i(e,nrWrapper,t),nrWrapper)}function r(t,e,r,o,i){r||(r="");var s,c,f,u="-"===r.charAt(0);for(f=0;f<e.length;f++)c=e[f],s=t[c],a(s)||(t[c]=n(s,u?c+r:r,o,c,i))}function s(n,r,i,a){if(!h||e){var s=h;h=!0;try{t.emit(n,r,i,e,a)}catch(c){o([c,n,r,i],t)}h=s}}return t||(t=u),n.inPlace=r,n.flag=p,n}function o(t,e){e||(e=u);try{e.emit("internal-error",t)}catch(n){}}function i(t,e,n){if(Object.defineProperty&&Object.keys)try{var r=Object.keys(t);return r.forEach(function(n){Object.defineProperty(e,n,{get:function(){return t[n]},set:function(e){return t[n]=e,e}})}),e}catch(i){o([i],n)}for(var a in t)l.call(t,a)&&(e[a]=t[a]);return e}function a(t){return!(t&&t instanceof Function&&t.apply&&!t[p])}function s(t,e){var n=e(t);return n[p]=t,i(t,n,u),n}function c(t,e,n){var r=t[e];t[e]=s(r,n)}function f(){for(var t=arguments.length,e=new Array(t),n=0;n<t;++n)e[n]=arguments[n];return e}var u=t("ee"),d=t(33),p="nr@original",l=Object.prototype.hasOwnProperty,h=!1;e.exports=r,e.exports.wrapFunction=s,e.exports.wrapInPlace=c,e.exports.argsToArray=f},{}]},{},["loader",2,17,5,3,4]); ;NREUM.loader_config={accountID:"2883957",trustKey:"2883957",agentID:"520756539",licenseKey:"NRJS-012b8030e06bfdc9233",applicationID:"520756539"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"NRJS-012b8030e06bfdc9233",applicationID:"520756539",sa:1} </script> <meta name="librarything_env" content="beta" /> <meta name="librarything_lang" content="" /> <meta name="librarything_product" content="lt2" /> <meta id="viewport" name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=5.0, user-scalable=1, viewport-fit=cover"> <!-- DNS Preconnect --> <link rel="preconnect" href="//image.librarything.com"/> <link rel="preconnect" href="//image.librarything.com" crossorigin/> <link rel="preconnect" href="//pics.cdn.librarything.com"/> <link rel="preconnect" href="//pics.cdn.librarything.com" crossorigin/> <link rel="preconnect" href="//images-na.ssl-images-amazon.com"/> <link rel="preconnect" href="//images-na.ssl-images-amazon.com" crossorigin/> <!-- DNS Prefetch --> <link rel="dns-prefetch" href="//ajax.googleapis.com"/> <link rel="dns-prefetch" href="//ssl.google-analytics.com"/> <link rel="dns-prefetch" href="//books.google.com"/> <link rel="icon" href="/favicon_lt_32.ico" sizes="any" /><link rel="icon" href="/favicon_lt.svg" type="image/svg+xml"><link rel="apple-touch-icon" href="/apple-touch-icon.png"> <!-- Base --> <meta name="description" content="Nien Cheng, author of Life and Death in Shanghai, on LibraryThing"/> <meta name="keywords" content="librarything, library, thing, catalog your books, catalogue your books, book cataloging, library, free book catalog, catalogue"/> <meta name="language" content="en"/> <meta name="apple-itunes-app" content="app-id=948824489"/> <meta name="google-play-app" content="app-id=com.librarything.librarything"/> <meta name="small_image" content="https://pics.cdn.librarything.com//picsizes/c9/15/c9154e49d345e02654133356c414330414c5141_v5.jpg"/> <!-- Facebook/Open Graph --> <meta property="fb:app_id" content="79305890602"/> <meta property="og:site_name" content="LibraryThing.com"/> <meta property="og:url" content="https://www.librarything.com/author/chengnien"/> <meta property="og:title" content="Nien Cheng | Author | LibraryThing"/> <meta property="og:type" content="website"/> <meta property="og:description" content="Nien Cheng, author of Life and Death in Shanghai, on LibraryThing"/> <!-- Twitter --> <meta name="twitter:card" content="summary"/> <meta name="twitter:site" content="@LibraryThing"/> <meta name="twitter:title" content="Nien Cheng | Author | LibraryThing"/> <meta name="twitter:description" content="Nien Cheng, author of Life and Death in Shanghai, on LibraryThing"/> <!-- end of meta - print_sharedataA --> <link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/bootstrap-3.3.4.min.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_vars.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_main.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/lt2_tabs.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_forms.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt1.5_nav_bridge.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_main_grid.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_content.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_lt1_overrides.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_verdant_14.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_verdant_12.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_verdant_tight_12.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_system_14.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_system_15.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_georgia_14.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_system_large.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker_atkinson_16.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/notifier_control.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/fontawesome6.4.2/css/all.min.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/lticon_fonts.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/jqueryui_autocomplete_lt2.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://image.librarything.com/css/toastify.css?v=3" type="text/css" /><link loadpriority="high" data-bundle="lt2_core" rel="stylesheet" href="https://www.librarything.com//css/lt2_toastify.css?v=5297" type="text/css"> <link loadpriority="high" data-bundle="lt2_deferred" rel="stylesheet" href="https://www.librarything.com//css/lt2_popup.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_deferred" rel="stylesheet" href="https://www.librarything.com//css/lt2_stylepicker.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_deferred" rel="stylesheet" href="https://www.librarything.com//css/lt_lightbox2020.css?v=5297" type="text/css"><link loadpriority="high" data-bundle="lt2_deferred" rel="stylesheet" href="https://www.librarything.com//css/addbooks_express.css?v=5297" type="text/css"> <link data-bundle="author_default" rel="stylesheet" href="https://www.librarything.com//css/author_lt2.css?v=5297" type="text/css"><link data-bundle="author_default" rel="stylesheet" href="https://www.librarything.com//css/work_and_author.css?v=5297" type="text/css"><link data-bundle="author_default" rel="stylesheet" href="https://www.librarything.com//css/newshelf.css?v=5297" type="text/css"><link data-bundle="author_default" rel="stylesheet" href="https://www.librarything.com//commonknowledge/fwiki.css?v=5297" type="text/css"><link data-bundle="author_default" rel="stylesheet" href="https://www.librarything.com//css/newlinks.css?v=5297" type="text/css"><link data-bundle="author_default" rel="stylesheet" href="https://www.librarything.com//css/gallery.css?v=5297" type="text/css"> <style data-bundle="translated_css" type="text/css" ver="5297"> spoiler:before { content:"Spoiler (click to see)" !important; } spoiler.spoiled:before { content: "Spoiler" !important; } </style><script fetchpriority="high" src="https://image.librarything.com/js/jquery-3.7.1.min.js?v=2"></script><link rel="stylesheet" href="https://image.librarything.com/js/jquery-ui/jquery-ui-1.13.2/jquery-ui.min.css?v=2" /><script fetchpriority="high" src="https://image.librarything.com/js/jquery-ui/jquery-ui-1.13.2/jquery-ui.min.js?v=2"></script><script fetchpriority="high" src="https://image.librarything.com/js2/jquery.ui.touch-punch.min.js?v=2"></script><script defer data-bundle="IE11_cssvars_polyfill">window.MSInputMethodContext && document.documentMode && document.write('<script src="https://cdn.jsdelivr.net/gh/nuxodin/ie11CustomProperties@4.1.0/ie11CustomProperties.min.js"><\x2fscript>');</script><script defer data-bundle="iOSSafari_100vh_pollyfill"> try { var lt = lt || {}; } catch(err){} iOSSafari_100vh_pollyfill_setVh = () => { const vh = parseFloat((window.innerHeight * 0.01).toFixed(2)); document.documentElement.style.setProperty('--vh', `${vh}px`); document.documentElement.style.setProperty('--vh100', `${window.innerHeight}px`); return vh; }; window.addEventListener('load', iOSSafari_100vh_pollyfill_setVh); </script><script defer data-bundle="translated_js" type="text/javascript" fetchpriority="high" version="5297"> try { var LibraryThing = LibraryThing || {}; } catch(er){} LibraryThing.translated_vars_key = ""; LibraryThing._isLT2 = 1; LibraryThing.lt2_popup_style = "lt2"; LibraryThing.is_signed_in = 0; LibraryThing.isDevBox = 0; LibraryThing.loaded_translated_vars = 1; LibraryThing.servers = LibraryThing.servers || {}; LibraryThing.servers.image = "https://image.librarything.com"; LibraryThing.servers.pics = "https://pics.cdn.librarything.com/"; LibraryThing.ltstrings = LibraryThing.ltstrings || {}; LibraryThing.ltstrings.yes = "Yes"; LibraryThing.ltstrings.no = "No"; LibraryThing.ltstrings.save = "Save"; LibraryThing.ltstrings.cancel = "Cancel"; LibraryThing.ltstrings.savereview = "Save Review"; LibraryThing.ltstrings.saving = "saving"; LibraryThing.ltstrings.loading = "Loading..."; LibraryThing.ltstrings.confirm = "Confirm?"; LibraryThing.ltstrings.rejectAndDeleteAuthor = "Reject and delete this author?"; LibraryThing.ltstrings.referrer = ""; LibraryThing.ltstrings.areyousure = "Are you sure?"; LibraryThing.ltstrings.areyousure_immediate = "This item will be deleted immediately. Are you sure you want to delete this item?"; LibraryThing.ltstrings.getting_help = "Getting help..."; LibraryThing.ltstrings.alt_cover_image = "Cover Image"; LibraryThing.ltstrings.close = "Close"; LibraryThing.ltstrings.show_more_elipses = "Show more..."; LibraryThing.ltstrings.show_more = "Show More"; LibraryThing.ltstrings.show_less = "Show Less"; LibraryThing.ltstrings.show_all = "Show All"; LibraryThing.ltstrings.see_more_elipses = "See more..."; LibraryThing.ltstrings.see_more = "See More"; LibraryThing.ltstrings.see_less = "See Less"; LibraryThing.ltstrings.see_all = "See All"; LibraryThing.ltstrings.attempting_size_calc = "Attempting to calculate size"; LibraryThing.ltstrings.approximately = "approximately"; LibraryThing.ltstrings.deleteinventory = "Clear all inventory information for this collection?"; LibraryThing.ltstrings.abx_addbook = "Add Book"; LibraryThing.ltstrings.genre_flag_confirmation = "Flag this genre as egregiously wrong?"; LibraryThing.ltstrings.loader_messagesA = [ "Still Loading...", "A lot of thinking happening...", "It seems we may be here a while...", "Maybe you should start a book...", "In fact, maybe you should start writing a book...", "We have hit a writers block but we are still working on it..." ]; LibraryThing.ltstrings.datatables = { "emptyTable": "No data available in table", "info": "Showing _START_ to _END_ of _TOTAL_ entries", "infoEmpty": "Showing 0 to 0 of 0 entries", "infoFiltered": "(filtered from _MAX_ total entries)", "lengthMenu": "Show _MENU_ entries", "loadingRecords": "Loading...", "processing": "Processing...", "search": "Search:", "zeroRecords": "No matching records found", "paginate": { "first": "First", "last": "Last", "next": "Next", "previous": "Previous" }, "aria": { "sortAscending": ": activate to sort column ascending", "sortDescending": ": activate to sort column descending" } }; LibraryThing.ltstrings.recs = { "filter": { "tagRemove": "Are you sure you want to enter tag remove mode?", "tagReset": "Are you sure you want to reset your default tags?", } }; </script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js2/lt2_jsinit.js" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js2/mmlog.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js/modernizr_lt.3.6.0010.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js/jquery.visible.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://www.librarything.com//js2/lt2_basics.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://www.librarything.com//js2/lt2_main.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://www.librarything.com//js2/autocomplete.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_core" src="https://image.librarything.com/js2/toastify.js?v=2" type="text/javascript" language="Javascript"></script> </head><body data-gv="5297" data-product="lt2" data-lt2="1" data-observe-resizes data-fa_v="6" data-fa class="lt2 serifed_headers option2 lt1nav author readalikes ie6or7 ie7or8 ie ie7 " ><div id="skiptocontent"><a tabindex="0" href="#lt2_content">Skip to main content</a></div> <nav id="lt1_nav" role="navigation" aria-label="Main Navigation"><a class="anchor" name="top"></a><a class="anchor" name="t"></a><div id="masthead" class="ie6or7 ie7or8 ie ie7 "> <a title="Home" href="/" target="_top"> <img id="masthead_logo_wordmark2" src="https://image.librarything.com/pics/lt1wordmark_150w.png" srcset="https://image.librarything.com/pics/lt1wordmark_300w.png 2x, https://image.librarything.com/pics/lt1wordmark_450w.png 3x" alt="LibraryThing Home" /> <img id="masthead_lt_logo2" src="https://image.librarything.com/pics/ltlogo_square_fff_trans.png" srcset="https://image.librarything.com/pics/ltlogo_square_fff_trans@2x.png 2x, https://image.librarything.com/pics/ltlogo_square_fff_trans@3x.png 3x" alt="LibraryThing Home" /> </a> <nav id="tabs" role="region" aria-label="Main Navigation Choices"> <a class="sitenav_item g1" data-icon="" id="masttab_home" href="/" target="_top">Home</a><a class="sitenav_item g3" id="masttab_groups" href="/ngroups" target="_top">Groups</a><a class="sitenav_item g3 spacer_after" id="masttab_talk" href="/talk" target="_top">Talk</a><a class="sitenav_item g4" id="masttab_more" href="/more" target="_top">More</a><a class="sitenav_item g4" id="masttab_z" href="/zeitgeist" target="_top">Zeitgeist</a> <div class="sitenav_item g6" id="mobile_topmenu"> <i class="fas fa-bars"></i> <div class="navicon" id="lt2_navnotifications"> </div> </div> </nav> <div id="mobile_topmenu_content"> <a class="sitenav_item g1" data-icon="" id="masttab_home" href="/" target="_top">Home</a> <a class="sitenav_item g3" id="masttab_groups" href="/ngroups" target="_top">Groups</a> <a class="sitenav_item g3 spacer_after" id="masttab_talk" href="/talk" target="_top">Talk</a> <a class="sitenav_item g4" id="masttab_more" href="/more" target="_top">More</a> <a class="sitenav_item g4" id="masttab_z" href="/zeitgeist" target="_top">Zeitgeist</a><div class="separator"></div><a id="mastheadSigninLink" href="/" target="_top">Sign in / Join</a><a href="#" onclick="languagelist(0,0,0); return false;"><i class="fa-solid fa-globe"></i> English</a><a href="https://wiki.librarything.com/index.php/HelpThing:Author_controller" target="_top">Help</a> </div> <div id="mast_alt"> <div id="mastsearch"> <form action="/search.php" method="GET" target="_top" role="search" id="sbarform" name="sbarform"> <div id="mastsearch_container"> <input type="hidden" name="searchtype" value="newwork_titles"/> <input type="text" id="mastsearch_query" value="" placeholder="Search LibraryThing" name="term"> <img id="mastsearch_glass" tabindex=0 title="Search Site" alt="Search Site" src="https://image.librarything.com/pics/sbar_4.png" srcset="https://image.librarything.com/pics/sbar_4@2x.png 2x, https://image.librarything.com/pics/sbar_4@3x.png 3x" height="13px" width="12px" onclick="document.sbarform.submit();"/> </div> </form> </div> <div id="mastuser"> <ul> <li class="mastuseritem" data-id="userpad_signin"><a id="mastheadSigninLink" href="/" target="_top">Sign in / Join</a></li><li class="mastuseritem" data-id="userpad_langs"><a href="#" onclick="languagelist(0,0,0); return false;"><i class="fa-solid fa-globe"></i> English</a></li><li class="mastuseritem" data-id="userpad_help"><a href="https://wiki.librarything.com/index.php/HelpThing:Author_controller" target="_top">Help</a></li> </ul> </div> </div> <div id="mast_rule"></div> <ul id="languagechoice" style="display:none;" onmouseover="languagemenu=true;" onmouseout="languagemenu=false;setTimeout(function(){if (!languagemenu) {document.getElementById('languagechoice').style.display='none';}},1000);"></ul></div></nav><div id="lt2_maincontent" class="flex col3" data-content-product="lt2" ><div id="lt2_sitemessage" class="sitemessage_show downmessage_num_61 sitemessage_warning"><div id="lt2_sitemessage_content_container"><div id="lt2_sitemessage_content"><i class="fas fa-gift santathing-msg-icon" style="color: indianred;"></i> <a href="/santathing.php" class="alwaysblue">Come participate in SantaThing, our yearly gift-giving tradition!</a></div><div id="lt2_sitemessage_controls"><a class="dismiss dismiss btn btn-default btn-sm" onclick="lt.dismiss_sitemessage(61);" id="sitemessage_close">Dismiss</a></div></div></div><a class="anchor" name="top"></a><a class="anchor" name="t"></a><nav id="lt_mainsidebar" class="lt2_sidebar lt_mainsidebar" ><div id="mobile_pagemenu"><div id="sidebar_control_name"><span id="sidebar_dropdownmenu_currentpage_name">Similar Authors</span><span class="sidebar_control_iconstack fa-stack fa-1x"> <i class="fas fa-copy fa-stack-1x"></i> <i class="sidebar_control_iconstack_caret fas fa-caret-down fa-stack-1x"></i> </span></div></div><div class="dyn_nav_menu" data-observe-resizes ><div class="sidebar_group default_group"><div class="sidenav_subgroup lt2_nogrouptitle " id="sidenav_action_subgroup_itemA"><a id="lt2_sidebar_main" href="/author/chengnien" class="sidebar_menu_item" ><span class="lt2_sidebar_accordion_title">Author Page</span></a></div></div><div class="sidebar_group authordetails"><div class="sidenav_subgroup lt2_nogrouptitle " id="sidenav_action_subgroup_itemA"><a id="lt2_sidebar_workexplorer" href="/author/chengnien/workexplorer" class="sidebar_menu_item" ><span class="lt2_sidebar_accordion_title">Work Explorer</span></a><a id="lt2_sidebar_reviews" href="/author/chengnien/reviews" class="sidebar_menu_item" ><span class="lt2_sidebar_accordion_title">Reviews</span></a><a id="lt2_sidebar_readalikes" href="/author/chengnien/readalikes" class="sidebar_menu_item selected" ><span class="lt2_sidebar_accordion_title">Similar Authors</span></a><a id="lt2_sidebar_charts" href="/author/chengnien/charts" class="sidebar_menu_item" ><span class="lt2_sidebar_accordion_title">Charts & Graphs</span></a></div></div></div></nav> <main data-observe-resizes id="lt2_content" class="with_sidebar" role="main"><div class="lt2_loading_indicator"></div> <div id="lt2_content_interior"> <a class="anchor" name="top"></a><a class="anchor" name="t"></a> <section class="first lt2_pagecard_section subpage"><div id="lt2_mainimage_containerbox"><div id="lt2_mainimage_container"><a href="/gallery/author/chengnien"><img class="cover" alt="Picture of author." src="https://pics.cdn.librarything.com//picsizes/c9/15/c9154e49d345e02654133356c414330414c5141_v5.jpg" srcset="https://pics.cdn.librarything.com//picsizes/aa/3d/aa3d3c74435008c654133356c41426f41576742_v5.jpg 2x, https://pics.cdn.librarything.com//picsizes/82/f2/82f2a577aef390e654133356c41416341687743_v5.jpg 3x" /></a></div></div><div class="topcard_headbox headbox"><div class="topcard_header_collection"><h1><a href="/author/chengnien">Nien Cheng</a><i class="fas fa-chevron-right breadcrumb_separator"></i>Similar Authors</h1><h2 class="author_subtitle">Author of <a href="/work/13521" data-workid="13521" data-title="Life-and-Death-in-Shanghai" target="_top" class="" >Life and Death in Shanghai</a></h2></div><div class="pagecard_messages"><div class="lt_scoreboard "><span class="scoreboard_item"><i class="fa-solid fa-book" aria-hidden="true" data-a11y="true"></i> 1+ Work</span><span class="scoreboard_item"><i class="fa-solid fa-user" aria-hidden="true" data-a11y="true"></i> 1,516 Members</span><span class="scoreboard_item"><i class="fa-solid fa-feather-alt" aria-hidden="true" data-a11y="true"></i> 19 Reviews</span><span class="scoreboard_item"><i class="fa-solid fa-star" aria-hidden="true" data-a11y="true"></i> 1 Favorited</span></div></div></div></section><section class="w_a_section" id="section_readalikes" ><a name="readalikes"></a><div id="u_d3d00f5e" class="quickedit light"><div class="nav"><span class="navInfoTitle" style="margin-left: .75em;"><h2 class="first">If you like Nien Cheng you may like...</h2></span></div></div><p>Help LibraryThing improve these recommendations by voting their validity below. As members rate, recommendations move up and down, on and off the list. Be sure to rate the validity of the recommendation, not the quality of author recommended.</p><ol class="readalikes"><li><h3><a href="/author/changjung">Jung Chang</a></h3><div>Author of <a href="/work/3451" data-workid="3451" data-title="Wild-Swans-Three-Daughters-of-China" target="_top" class="" >Wild Swans: Three Daughters of China</a>, <a href="/work/14618" data-workid="14618" data-title="Mao-The-Unknown-Story" target="_top" class="" >Mao: The Unknown Story</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/spencejonathand">Jonathan D. Spence</a></h3><div>Author of <a href="/work/22398" data-workid="22398" data-title="The-Search-for-Modern-China" target="_top" class="" >The Search for Modern China</a>, <a href="/work/65202" data-workid="65202" data-title="Gods-Chinese-Son-The-Taiping-Heavenly-Kingdom-of-Hong-Xiuquan" target="_top" class="" >God's Chinese Son: The Taiping Heavenly Kingdom of Hong Xiuquan</a>, <a href="/work/449449" data-workid="449449" data-title="The-Gate-of-Heavenly-Peace-The-Chinese-and-Their-Revolution" target="_top" class="" >The Gate of Heavenly Peace: The Chinese and Their Revolution</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/hesslerpeter">Peter Hessler</a></h3><div>Author of <a href="/work/27955" data-workid="27955" data-title="River-Town-Two-Years-on-the-Yangtze" target="_top" class="" >River Town: Two Years on the Yangtze</a>, <a href="/work/843763" data-workid="843763" data-title="Oracle-Bones-A-Journey-Through-Time-in-China" target="_top" class="" >Oracle Bones: A Journey Through Time in China</a>, <a href="/work/9104585" data-workid="9104585" data-title="Country-Driving-A-Chinese-Road-Trip" target="_top" class="" >Country Driving: A Chinese Road Trip</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/minanchee">Anchee Min</a></h3><div>Author of <a href="/work/41847" data-workid="41847" data-title="Red-Azalea" target="_top" class="" >Red Azalea</a>, <a href="/work/17784" data-workid="17784" data-title="Becoming-Madame-Mao" target="_top" class="" >Becoming Madame Mao</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/chenda">Da Chen</a></h3><div>Author of <a href="/work/17837" data-workid="17837" data-title="Colors-of-the-Mountain" target="_top" class="" >Colors of the Mountain</a>, <a href="/work/805743" data-workid="805743" data-title="Sounds-of-the-River-A-Young-Mans-University-Days-in-Beijing" target="_top" class="" >Sounds of the River: A Young Man's University Days in Beijing</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/wongjan">Jan Wong</a></h3><div>Author of <a href="/work/56945" data-workid="56945" data-title="Red-China-Blues-My-Long-March-From-Mao-to-Now" target="_top" class="" >Red China Blues: My Long March From Mao to Now</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/lordbettebao">Bette Bao Lord</a></h3><div>Author of <a href="/work/17998" data-workid="17998" data-title="Legacies-A-Chinese-Mosaic" target="_top" class="" >Legacies: A Chinese Mosaic</a>, <a href="/work/18156" data-workid="18156" data-title="Spring-Moon" target="_top" class="" >Spring Moon</a>, <a href="/work/322713" data-workid="322713" data-title="The-Middle-Heart" target="_top" class="" >The Middle Heart</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/seagravesterling">Sterling Seagrave</a></h3><div>Author of <a href="/work/652757" data-workid="652757" data-title="The-Soong-Dynasty" target="_top" class="" >The Soong Dynasty</a>, <a href="/work/240295" data-workid="240295" data-title="Dragon-Lady-The-Life-and-Legend-of-the-Last-Empress-of-China" target="_top" class="" >Dragon Lady: The Life and Legend of the Last Empress of China</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/lizhisui">Zhisui Li</a></h3><div>Author of <a href="/work/441385" data-workid="441385" data-title="The-private-life-of-chairman-Mao" target="_top" class="" >The private life of chairman Mao</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/xinran">Xinran</a></h3><div>Author of <a href="/work/139490" data-workid="139490" data-title="The-Good-Women-of-China-Hidden-Voices" target="_top" class="" >The Good Women of China: Hidden Voices</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/hengliang">Liang Heng</a></h3><div>Author of <a href="/work/193439" data-workid="193439" data-title="Son-of-the-Revolution" target="_top" class="" >Son of the Revolution</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/changpangmei">Pang-Mei Natasha Chang</a></h3><div>Author of <a href="/work/302305" data-workid="302305" data-title="Bound-Feet-Western-Dress-A-Memoir" target="_top" class="" >Bound Feet & Western Dress: A Memoir</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/tuchmanbarbaraw">Barbara W. Tuchman</a></h3><div>Author of <a href="/work/13712" data-workid="13712" data-title="Stilwell-and-the-American-Experience-in-China-1911-45" target="_top" class="" >Stilwell and the American Experience in China, 1911-45</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/fairbankjohnking">John King Fairbank</a></h3><div>Author of <a href="/work/180396" data-workid="180396" data-title="China-A-New-History" target="_top" class="" >China: A New History</a>, <a href="/work/169498" data-workid="169498" data-title="The-Great-Chinese-Revolution-1800-1985" target="_top" class="" >The Great Chinese Revolution 1800-1985</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/pomfretjohn-1">John Pomfret</a></h3><div>Author of <a href="/work/1193141" data-workid="1193141" data-title="Chinese-Lessons-Five-Classmates-and-the-Story-of-the-New-China" target="_top" class="" >Chinese Lessons: Five Classmates and the Story of the New China</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/xumeihong">Meihong Xu</a></h3><div>Author of <a href="/work/666252" data-workid="666252" data-title="Daughter-of-China-A-True-Story-of-Love-and-Betrayal" target="_top" class="" >Daughter of China: A True Story of Love and Betrayal</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/kingstonmaxinehong">Maxine Hong Kingston</a></h3><div>Author of <a href="/work/93319" data-workid="93319" data-title="China-Men" target="_top" class="" >China Men</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/jinha">Ha Jin</a></h3><div>Author of <a href="/work/3120" data-workid="3120" data-title="Waiting" target="_top" class="" >Waiting</a>, <a href="/work/54978" data-workid="54978" data-title="The-Crazed" target="_top" class="" >The Crazed</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/butterfieldfox">Fox Butterfield</a></h3><div>Author of <a href="/work/176322" data-workid="176322" data-title="China-Alive-in-the-Bitter-Sea" target="_top" class="" >China: Alive in the Bitter Sea</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/ningkunwu">Ningkun Wu</a></h3><div>Author of <a href="/work/830871" data-workid="830871" data-title="A-Single-Tear-A-Familys-Persecution-Love-and-Endurance-in-Communist-China" target="_top" class="" >A Single Tear: A Family's Persecution, Love, and Endurance in Communist China</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/sijiedai">Dai Sijie</a></h3><div>Author of <a href="/work/29759332" data-workid="29759332" data-title="Balzac-and-the-Little-Chinese-Seamstress" target="_top" class="" >Balzac and the Little Chinese Seamstress</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/chingfrancisdk">Francis D. K. Ching</a></h3><div>Author of <a href="/work/646043" data-workid="646043" data-title="Ancestors-900-Years-in-the-Life-of-a-Chinese-Family" target="_top" class="" >Ancestors: 900 Years in the Life of a Chinese Family</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/snowedgar">Edgar Snow</a></h3><div>Author of <a href="/work/255006" data-workid="255006" data-title="Red-Star-Over-China-The-Classic-Account-of-the-Birth-of-Chinese-Communism" target="_top" class="" >Red Star Over China: The Classic Account of the Birth of Chinese Communism</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/gaoanhua">Anhua Gao</a></h3><div>Author of <a href="/work/231575" data-workid="231575" data-title="To-the-Edge-of-the-Sky" target="_top" class="" >To the Edge of the Sky</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/salisburyharrisoneva">Harrison Salisbury</a></h3><div>Author of <a href="/work/393500" data-workid="393500" data-title="New-Emperors-China" target="_top" class="" >New Emperors: China...</a>, <a href="/work/600379" data-workid="600379" data-title="The-Long-March" target="_top" class="" >The Long March</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/changiris">Iris Chang</a></h3><div>Author of <a href="/work/37504" data-workid="37504" data-title="The-Rape-of-Nanking" target="_top" class="" >The Rape of Nanking</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/salzmanmark">Mark Salzman</a></h3><div>Author of <a href="/work/101284" data-workid="101284" data-title="Iron-and-Silk" target="_top" class="" >Iron and Silk</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/seelisa">Lisa See</a></h3><div>Author of <a href="/work/2352610" data-workid="2352610" data-title="On-Gold-Mountain-The-One-Hundred-Year-Odyssey-of-My-Chinese-American-Family" target="_top" class="" >On Gold Mountain: The One-Hundred-Year Odyssey of My Chinese-American Family</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/beckerjasper">Jasper Becker</a></h3><div>Author of <a href="/work/169463" data-workid="169463" data-title="Hungry-Ghosts" target="_top" class="" >Hungry Ghosts</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/chinannping">Ann-Ping Chin</a></h3><div>Author of <a href="/work/220682" data-workid="220682" data-title="Four-Sisters-of-Hofei-A-History" target="_top" class="" >Four Sisters of Hofei: A History</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/hintonwilliam">William Hinton</a></h3><div>Author of <a href="/work/254630" data-workid="254630" data-title="Fanshen-A-Documentary-of-Revolution-in-a-Chinese-Village" target="_top" class="" >Fanshen: A Documentary of Revolution in a Chinese Village</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/wuharry">Harry Wu</a></h3><div>Author of <a href="/work/751865" data-workid="751865" data-title="Bitter-Winds-A-Memoir-of-My-Years-in-Chinas-Gulag" target="_top" class="" >Bitter Winds: A Memoir of My Years in China's Gulag</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/yinghong">Hong Ying</a></h3><div>Author of <a href="/work/380169" data-workid="380169" data-title="Daughter-of-the-River-An-Autobiography" target="_top" class="" >Daughter of the River: An Autobiography</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/hahnemily-1">Emily Hahn</a></h3><div>Author of <a href="/work/144031" data-workid="144031" data-title="China-to-Me-A-Partial-Autobiography" target="_top" class="" >China to Me: A Partial Autobiography</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/jianma">Ma Jian</a></h3><div>Author of <a href="/work/37004" data-workid="37004" data-title="Red-Dust-A-Path-Through-China" target="_top" class="" >Red Dust: A Path Through China</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/changlesliet">Leslie T. Chang</a></h3><div>Author of <a href="/work/6146268" data-workid="6146268" data-title="Factory-Girls-From-Village-to-City-in-a-Changing-China" target="_top" class="" >Factory Girls: From Village to City in a Changing China</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/kristofnicholasd">Nicholas D. Kristof</a></h3><div>Author of <a href="/work/17825" data-workid="17825" data-title="China-Wakes-The-Struggle-for-the-Soul-of-a-Rising-Power" target="_top" class="" >China Wakes: The Struggle for the Soul of a Rising Power</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/leyssimon">Simon Leys</a></h3><div>Author of <a href="/work/91591" data-workid="91591" data-title="Chinese-Shadows" target="_top" class="" >Chinese Shadows</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/shuyunsun">Sun Shuyun</a></h3><div>Author of <a href="/work/2742874" data-workid="2742874" data-title="The-Long-March-The-True-History-of-Communist-Chinas-Founding-Myth" target="_top" class="" >The Long March: The True History of Communist China's Founding Myth</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/macfarquharroderick">Roderick MacFarquhar</a></h3><div>Author of <a href="/work/1613388" data-workid="1613388" data-title="Maos-Last-Revolution" target="_top" class="" >Mao's Last Revolution</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/mahadelineyen">Adeline Yen Mah</a></h3><div>Author of <a href="/work/53037" data-workid="53037" data-title="Falling-Leaves-The-Memoir-of-an-Unwanted-Chinese-Daughter" target="_top" class="" >Falling Leaves: The Memoir of an Unwanted Chinese Daughter</a>, <a href="/work/38793" data-workid="38793" data-title="Chinese-Cinderella-The-True-Story-of-an-Unwanted-Daughter" target="_top" class="" >Chinese Cinderella: The True Story of an Unwanted Daughter</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/cunxinli">Cunxin Li</a></h3><div>Author of <a href="/work/71622" data-workid="71622" data-title="Maos-Last-Dancer" target="_top" class="" >Mao's Last Dancer</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/huayu">Yu Hua</a></h3><div>Author of <a href="/work/10500034" data-workid="10500034" data-title="China-in-Ten-Words" target="_top" class="" >China in Ten Words</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/therouxpaul">Paul Theroux</a></h3><div>Author of <a href="/work/14820" data-workid="14820" data-title="Riding-the-Iron-Rooster-By-Train-Through-China" target="_top" class="" >Riding the Iron Rooster: By Train Through China</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/haysliplely">Le Ly Hayslip</a></h3><div>Author of <a href="/work/50149" data-workid="50149" data-title="When-Heaven-and-Earth-Changed-Places-A-Vietnamese-Womans-Journey-from-War-to-Peace" target="_top" class="" >When Heaven and Earth Changed Places: A Vietnamese Woman's Journey from War to Peace</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/boothmartin-1">Martin Booth</a></h3><div>Author of <a href="/work/2732441" data-workid="2732441" data-title="Gweilo-Memories-of-a-Hong-Kong-Childhood" target="_top" class="" >Gweilo: Memories of a Hong Kong Childhood</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/maozedong">Zedong Mao</a></h3><div>Author of <a href="/work/52558" data-workid="52558" data-title="Quotations-from-Chairman-Mao-Tse-Tung" target="_top" class="" >Quotations from Chairman Mao Tse-Tung</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/zhangxinxin">Xinxin Zhang</a></h3><div>Author of <a href="/work/1539051" data-workid="1539051" data-title="Chinese-Lives-An-Oral-History-of-Contemporary-China" target="_top" class="" >Chinese Lives: An Oral History of Contemporary China</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/yiwuliao">Liao Yiwu</a></h3><div>Author of <a href="/work/4958392" data-workid="4958392" data-title="The-Corpse-Walker-Real-Life-Stories-China-From-the-Bottom-Up" target="_top" class="" >The Corpse Walker: Real Life Stories: China From the Bottom Up</a></div><div class="ratingdiv">How valid?</b> — </div></li><li><h3><a href="/author/rabejohn">John Rabe</a></h3><div>Author of <a href="/work/99959" data-workid="99959" data-title="The-Good-Man-of-Nanking-The-Diaries-of-John-Rabe" target="_top" class="" >The Good Man of Nanking: The Diaries of John Rabe</a></div><div class="ratingdiv">How valid?</b> — </div></li></ol></section><a name="bottom"></a></div></main><div id="lt_altsidebar" class="lt2_sidebar lt_altsidebar" ><div class="dyn_nav_menu" data-observe-resizes ><div class="sidebar_group action_area"><div class="sidenav_subgroup lt2_nogrouptitle " id="sidenav_action_subgroup_default_subgroup"><button onclick="lt.newauthor.toggleFav('chengnien'); return false;" id="favorite_author_button" class="btn-block xbtn-mashleft btn btn-block xbtn-mashleft btn-primary" ><i class="fas fa-heart" aria-hidden="true"></i> Add to Favorites</button class="" ></div></div><div class="sidebar_group rightcontent"><div class="sidebar_content lt2_nogrouptitle "><div class="w_a_section greenbox" id="section_pics" ><a name="pics"></a><div class="lt2_mini_gallery"><h2 class="first">Pictures</h2><div class="gallery_thumbs" style="--gallery-template-item-width:50px; --gallery-template-row-count-user: 3;"></div><div class="gallery_footer_actions"><div><div class="ui_jump_link ui_jump_link" ><a id="u_4f68" class="bluelink" href="/gallery/author/chengnien" >Author Gallery <i class="fa-regular fa-chevron-right"></i></a></div></div></div></div></div><a name="newlinks"></a><div class="greenbox" data-codepoint="ajax_ckcategory_links"><h2>Links</h2><div id="newlinks"><div><div class="newlinks_listitem" id="newlinks_listitem_202728"><a href="https://en.wikipedia.org/wiki/Nien Cheng" class="">Wikipedia</a></div></div></div></div><div class="w_a_section greenbox" id="section_improve" ><h2>Helper Hub</h2><a name="improve"></a><p>LibraryThing members improve authors by combining author names and works, separating out homonymous authors into separate identities, and more.</p><div class="ui_jump_link ui_jump_link" ><a id="u_f92f" class="bluelink" href="/author/chengnien/helperhub" >Helper Hub <i class="fa-regular fa-chevron-right"></i></a></div></div></div></div></div></div><div id="helpdrawer" data-helpurl="https%3A%2F%2Fwiki.librarything.com%2Fapi.php%3Fformat%3Djson%26action%3Dparse%26origin%3D%2A%26servedby%3D1%26page%3DHelpThing%3AAuthor_controller" data-baseurl="https%3A%2F%2Fwiki.librarything.com%2Fapi.php%3Fformat%3Djson%26action%3Dparse%26origin%3D%2A%26servedby%3D1%26page%3D" ><a id="hdclose" href="#" onclick="lt.helpdrawer_close();return false;" class="greylink" title="Close Help"><i class="fa-solid fa-circle-xmark"></i></a><div id="hdc"></div></div><footer class="lt2_footer bluelink"><div class="lt2_footer_links controlitems"><a href="#" id="stylepicker_switch" onclick="lt.stylepick_switch();return false;"><i class="fas fa-text-size"></i> Change Style</a><a class="footer_displaymode" data-dmode="0" title="Toggle Desktop Version" href="#" onclick="return lt.desktopversion();"><span id="footer_desktop"><i class="fas fa-desktop"></i>Desktop View</span><span id="footer_mobile"><i class="far fa-mobile-alt"></i>Mobile View</span></a></div><div class="lt2_footer_links"><a href="/" target="_top">Home</a><a href="/about" target="_top">About</a><a href="/contact" target="_top">Contact</a><a href="/privacy" target="_top">Privacy</a><a href="https://wiki.librarything.com/index.php/HelpThing:Author_controller" target="_top">Help</a></div><div class="lt2_footer_links small"><a href="https://blog.librarything.com" target="_blank">Blog</a><a href="https://wiki.librarything.com">WikiThing</a><a href="/commonknowledge/">Common Knowledge</a><a href="/ner">Early Reviewers</a><a href="/legacylibraries">Legacy Libraries</a><a href="/local">Local</a><a href="/developer">APIs</a><a href="https://www.librarycat.org/">TinyCat <i class="lti lti-tinycat"></i></a></div></footer><div id="lt2_stylepicker"><div id="lt2_stylepicker_close" onclick="lt.stylepick_switch();"><i aria-label="Close" class="fas fa-times"></i></div><a href="#" title="verdant_14" data-style="verdant_14" onclick="lt.stylepick('verdant_14');return false;" class="stylepicker_item alwaysblue selected ">Verdana Standard</a><a href="#" title="verdant_12" data-style="verdant_12" onclick="lt.stylepick('verdant_12');return false;" class="stylepicker_item alwaysblue ">Verdana Small</a><a href="#" title="verdant_tight_12" data-style="verdant_tight_12" onclick="lt.stylepick('verdant_tight_12');return false;" class="stylepicker_item alwaysblue ">The Lorax</a><a href="#" title="system_14" data-style="system_14" onclick="lt.stylepick('system_14');return false;" class="stylepicker_item alwaysblue ">System Standard</a><a href="#" title="system_15" data-style="system_15" onclick="lt.stylepick('system_15');return false;" class="stylepicker_item alwaysblue ">System Large</a><a href="#" title="georgia_14" data-style="georgia_14" onclick="lt.stylepick('georgia_14');return false;" class="stylepicker_item alwaysblue ">Georgia</a><a href="#" title="system_large" data-style="system_large" onclick="lt.stylepick('system_large');return false;" class="stylepicker_item alwaysblue ">Large Text</a><a href="#" title="atkinson_16" data-style="atkinson_16" onclick="lt.stylepick('atkinson_16');return false;" class="stylepicker_item alwaysblue ">Atkinson</a></div><div id="gdpr_notice" class=""><button class="btn" id="gdpr_closebutton" onclick="gdpr_notice_clicked();return false;">I Agree</button><div id="gdpr_content">This site uses cookies to deliver our services, improve performance, for analytics, and (if not signed in) for advertising. By using LibraryThing you acknowledge that you have read and understand our <a href="/privacy" class="alwaysblue">Terms of Service and Privacy Policy</a>. Your use of the site and services is subject to these policies and terms.</div></div></div><div id="lt2_page_overlay"></div><div id="bottomscripts"><script loadpriority="high" data-bundle="lt2_deferred" src="https://image.librarything.com/js2/lt2_tabs.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://image.librarything.com/js/jquery.truncator.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js/lt_utility.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://image.librarything.com/js/jquery.easing.1.3.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/lt2_popup.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://image.librarything.com/js2/imagesloaded.pkgd.js?v=2" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/lt_lightbox2020.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/lt_maxbox.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/addbooks_express.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/collections.js?v=5297" type="text/javascript" language="Javascript"></script><script loadpriority="high" data-bundle="lt2_deferred" src="https://www.librarything.com//js2/ratings.js?v=5297" type="text/javascript" language="Javascript"></script> <script data-bundle="author_default" src="https://www.librarything.com//js2/author_lt2.js?v=5297" type="text/javascript" language="Javascript"></script><script data-bundle="author_default" src="https://www.librarything.com//commonknowledge/fwiki.js?v=5297" type="text/javascript" language="Javascript"></script><script data-bundle="author_default" src="https://www.librarything.com//js2/newlinks.js?v=5297" type="text/javascript" language="Javascript"></script><script data-bundle="author_default" src="https://www.librarything.com//js/arbitrarypics2.js?v=5297" type="text/javascript" language="Javascript"></script> <script data-bundle="lt2_bottomscripts_scriptLinesA" type="text/javascript" language="javascript"> $J(function() { lt.newauthor.getMembers('chengnien'); }); </script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-3FXSBC8C5V"></script> <script> window.lt2_prod = 'lt2'; window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} if (window.lt2_prod === 'talpa') { gtag('consent', 'default', { 'ad_storage': 'granted', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'granted' }); } else { let consent_settingsA = {"ad_storage":"denied","analytics_storage":"denied"}; var consent_setting = 'denied'; gtag('consent', 'default', { 'ad_storage': consent_settingsA.ad_storage, 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': consent_settingsA.analytics_storage }); } gtag('js', new Date()); gtag('config', 'G-3FXSBC8C5V'); //gtag('config', 'LTNonMember'); // global_domain = </script> </div><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8e7ea4fda9dcd47b',t:'MTczMjUwNjMxMi4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>