Book Reviews

Soft Science by Franny Choi

Flash Review by Emma Mott

January 7, 2026

Nature poetry is not a new genre. To quote Mary Fontana - shoehorn some meadows into your poetry and “find a shortcut to the sublime.”

Franny Choi takes the exact opposite approach to her sophomore collection, Soft Science. Here, language isn’t flowy; it’s digitized. Cyborgs and Turing Tests program the pages. The opening glossary is full of imaginative leaps (of course, the antonym of mouth is mouth!) that promise an intelligent look at themes like identity, sexuality, and language in the modern world. As a sci-fi-loving poetry nerd, I was enthralled. 

And then I kept reading. 

After I finished, I spent three hours researching Turing Tests and soft sciences, trying to understand my confusion. I read the book again. Out of 34 poems, only five poems truly made sense to me. This led me to a theory: we need less intelligent poetry editors in the world, so they can ask stupider questions like ‘what the hell is happening?’ 

Soft Science’s ideas often outpace its emotional connection. Cyborgs and humans blend without clear cues. Language flashes like code - dense and disconnected. Sexuality isn’t a starting point here, it’s often the end-all: “my stupid stupid need / my country / my cunt / i hate it why won’t / it work.” In the kindest way, it doesn’t get much more developed than that. You almost wonder if by abandoning traditional, accessible imagery, Choi loses the connection to the soft bits of humanity. 

The incomputable part? Choi is a great writer. Her essay “Imitation Games” touches on similar themes as Soft Science, but adds context and warmth. It’s a great read. 

Unless you’re a huge fan of Choi, skip the book. Read “Imitation Games” instead. If I can count on one hand the amount of poems I ‘got,’ maybe the poet should - occasionally - touch grass. 

Medium length hero heading goes here

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat.

Emma Mott

Emma Mott graduated from the University of South Florida with a degree in creative writing and psychology. After working as an art teacher at the Jacksonville Public Library, Emma moved to Spain, where she now instructs Basque people on best practices for differentiating between alligators and crocodiles in the guise of delivering English lessons. She also reads for the indomitable and relentlessly wonderful force known as ONLY POEMS.

Medium length hero heading goes here

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat.

Leaked Footages by Abu Bakr Saddiq

by 

Ancci

by 

July 8, 2026

The Years of Blood by Adedayo Agarau

by 

Ancci

by 

July 6, 2026

Bakandamiya by Saddiq Dzukogi

by 

Ancci

by 

July 4, 2026

When We Only Have the Earth by Abdourahman A. Waberi

by 

Ancci

by 

July 1, 2026

A Little Feral by Maria Giesbrecht

by 

Alina Kalontarov

by 

June 27, 2026

A Body in Spice by Roseline Mgbodichima

by 

Ancci

by 

June 17, 2026

bright sorrow by Jonathan Chan

by 

Ancci

by 

June 15, 2026

Bantustan Blues by Tjizembua Tjizuku

by 

Ancci

by 

June 13, 2026

Ginsberg, sing me a jiwang song! by nor

by 

Jonathan Chan

by 

June 10, 2026

Dear Dear by Reuben Gelley Newman

by 

Ancci

by 

June 6, 2026
!function(){"use strict";if(!window.__opcCards){window.__opcCards=!0;var t=document.createElement("style");t.textContent='.opc-share{margin:40px 0 0;display:flex;align-self:flex-start;width:fit-content;align-items:center;background:none;border:0;cursor:pointer;padding:6px 0;color:#0153db;font-family:"basic-sans",system-ui,sans-serif;text-align:left} .opc-share .l{font-size:12.5px;text-transform:uppercase;letter-spacing:.22em;border-bottom:1.5px solid transparent;padding-bottom:2px;transition:border-color .18s} .opc-share:hover .l{border-color:#0153db} #opc-chip{position:absolute;z-index:99998;display:none;font-family:"basic-sans",system-ui,sans-serif;font-size:12px;text-transform:uppercase;letter-spacing:.18em;background:#0a090c;color:#fefcff;padding:8px 15px;border-radius:11px;cursor:pointer;box-shadow:0 8px 22px rgba(0,0,0,.22);white-space:nowrap;user-select:none} #opc-chip:after{content:"";position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);border:6px solid transparent;border-top-color:#0a090c;border-bottom:0} #opc-overlay{position:fixed;inset:0;z-index:99999;display:none;background:rgba(20,18,22,.55);backdrop-filter:blur(3px);align-items:center;justify-content:center;padding:22px} #opc-overlay *{box-sizing:border-box} .opc-modal{background:#fefcff;border-radius:16px;max-width:560px;width:100%;padding:20px;box-shadow:0 24px 70px rgba(0,0,0,.4);max-height:94vh;overflow:auto;font-family:"basic-sans",system-ui,sans-serif} .opc-opts{display:flex;gap:20px;flex-wrap:wrap;justify-content:center;align-items:center;margin-bottom:16px} .opc-grp{display:flex;align-items:center;gap:8px} .opc-grp>span{font-size:10.5px;text-transform:uppercase;letter-spacing:.14em;color:#6b6b70} .opc-seg{display:inline-flex;border:1px solid #e7e3ea;border-radius:11px;overflow:hidden} .opc-seg button{font-family:inherit;font-size:12.5px;border:0;background:transparent;padding:7px 14px;cursor:pointer;color:#6b6b70} .opc-seg button.on{background:#0a090c;color:#fefcff} .opc-pvwrap{display:flex;justify-content:center;margin:4px 0 12px} #opc-pv{max-width:100%;max-height:54vh;height:auto;width:auto;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.28)} #opc-nav{display:none;align-items:center;justify-content:center;gap:16px;margin:0 0 14px} #opc-nav .n{font-size:12px;letter-spacing:.1em;color:#6b6b70} .opc-pgbtn{font-family:inherit;width:34px;height:34px;border:1px solid #e7e3ea;background:#fefcff;border-radius:11px;cursor:pointer;font-size:16px;color:#0a090c} .opc-pgbtn:disabled{opacity:.35;cursor:default} .opc-acts{display:flex;gap:10px;justify-content:center;flex-wrap:wrap} .opc-btn{font-family:inherit;font-size:14px;display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border-radius:11px;cursor:pointer;border:1px solid #0a090c;background:#0a090c;color:#fefcff} .opc-btn.ghost{background:transparent;color:#0a090c} .opc-x{float:right;margin:-6px -4px 0 0;border:0;background:transparent;font-size:22px;line-height:1;cursor:pointer;color:#6b6b70}',(document.head||document.documentElement).appendChild(t);try{console.log("%c[ONLY POEMS] share-cards v10 loaded","color:#0153db;font-weight:bold")}catch(t){}var e={light:{bg:"#fefcff",ink:"#0a090c",sub:"#5b5661"},dark:{bg:"#000000",ink:"#fefcff",sub:"#b7b3bd"}},n={light:"#0153db",dark:"#ff84f9"},o=new Image;o.src="data:image/png;base64,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";var a=new Promise(function(t){o.onload=t,o.onerror=t}),r=function(){try{return Promise.all([document.fonts.load('400 1em "calluna"'),document.fonts.load('italic 400 1em "calluna"'),document.fonts.load('700 1em "cofo-raffine"'),document.fonts.load('400 1em "basic-sans"'),document.fonts.load('500 1em "basic-sans"')]).then(function(){return document.fonts.ready}).catch(function(){})}catch(t){return Promise.resolve()}}(),i=document.createElement("div");i.innerHTML='
Theme
Size
1 / 1
Share
',document.body.appendChild(i);var c=document.getElementById("opc-overlay"),l=document.getElementById("opc-pv"),s=document.getElementById("opc-chip"),p=document.createElement("canvas").getContext("2d"),d={theme:"light",fmt:"4x5",page:0},u=null;S("opc-theme","theme"),S("opc-fmt","fmt"),document.getElementById("opc-prev").onclick=function(){d.page>0&&(d.page--,w())},document.getElementById("opc-next").onclick=function(){d.page=t?navigator.canShare&&navigator.canShare({files:e})?navigator.share({files:e,title:u.title,text:"“"+u.title+"” — "+u.poet+" · ONLY POEMS"}).catch(function(){}):(L(),alert("Native share isn’t available on this browser — downloaded instead. On a phone this opens the share sheet.")):P(n).then(function(t){e.push(new File([t],T(n),{type:"image/png"})),n++,o()})}()},document.getElementById("opc-do-copy").onclick=function(){P(d.page).then(function(t){navigator.clipboard&&window.ClipboardItem?navigator.clipboard.write([new ClipboardItem({"image/png":t})]).then(function(){var t=document.getElementById("opc-do-copy"),e=t.textContent;t.textContent="Copied ✓",setTimeout(function(){t.textContent=e},1400)}).catch(function(){alert("Copy not supported here; use Download.")}):alert("Copy not supported here; use Download.")})},"loading"===document.readyState?addEventListener("DOMContentLoaded",j):j()}function f(t){return"400 "+t+'px "calluna",Georgia,serif'}function g(t){return"400 "+t+'px "calluna",Georgia,serif'}function h(t){return"italic 400 "+t+'px "calluna",Georgia,serif'}function m(t){return"500 "+t+'px "cofo-raffine",Georgia,serif'}function x(t){var e=0;return t.forEach(function(t){e+=null!=t.spacer?t.spacer:t.lh}),e}function v(t,e,n){if(!e||!e.trim())return[""];for(var o=e.split(/\s+/),a=[],r="",i=0;i1){var e=0;t.words.forEach(function(t){e+=u.measureText(t).width});var n=(t.jw-e)/(t.words.length-1),o=l.padX;t.words.forEach(function(t){u.fillText(t,o,f),o+=u.measureText(t).width+n})}else u.fillText(t.text,l.padX+(t.x||0),f);f+=.22*t.lh}else f+=t.spacer});var g=l.lineY,h=64*(o.naturalWidth/o.naturalHeight||.946);!function(t,e,n,a,r){var i=a*(o.naturalWidth/o.naturalHeight||.946),c=document.createElement("canvas");c.width=2*i,c.height=2*a;var l=c.getContext("2d");l.scale(2,2),l.drawImage(o,0,0,i,a),l.globalCompositeOperation="source-in",l.fillStyle=r,l.fillRect(0,0,i,a),t.drawImage(c,e,n,i,a)}(u,i-l.padX-h,g+22,64,p),n.pages.length>1&&(u.textAlign="left",u.font='500 19px "basic-sans",sans-serif',u.globalAlpha=.55,u.fillStyle=p,u.fillText(a+1+" / "+n.pages.length,l.padX,g+22+38.4),u.globalAlpha=1)}function A(t){var e=/^(P|H1|H2|H3|H4|H5|H6|BLOCKQUOTE|LI|PRE)$/,n=[].slice.call(t.children).filter(function(t){return e.test(t.tagName)}),o=t.querySelectorAll("br").length,a=n.filter(function(t){return t.textContent.trim()}),r=a.length?a.reduce(function(t,e){return t+e.textContent.trim().length},0)/a.length:0,i=0===o&&r>=120,c=0===o&&r<70,l=[];function s(){l.length&&""!==l[l.length-1].t&&l.push({t:"",it:!1})}function p(t,e){var n;l.push({t:(n=t,n.replace(/ /g," ").replace(/\s+$/,"")),it:!!e})}for(n.forEach(function(t){if(t.textContent.trim()){c||s();var e=!1;try{e=0===(getComputedStyle(t).fontStyle||"").indexOf("italic")||/^(EM|I)$/.test((t.firstElementChild||{}).tagName||"")}catch(t){}var n="";[].slice.call(t.childNodes).forEach(function(t){1===t.nodeType&&"BR"===t.tagName?(p(n,e),n=""):n+=t.textContent||""}),p(n,e)}else s()});l.length&&!l[0].t;)l.shift();for(;l.length&&!l[l.length-1].t;)l.pop();return{lines:l,prose:i}}function w(){u&&Promise.all([a,r]).then(function(){var t=b(d.fmt);u.plan=function(t,o,a,r){var i=e[o.theme],c=n[o.theme],l=function(t,e){return{padX:112,areaTop:150,lineY:e-150,maxW:t-224,availH:e-174-150,hang:38}}(a,r),s="selection"===o.mode?80:58,p="selection"===o.mode?24:30;t.letterSpacing="0px",t.font=f(100);var d=o.lines.map(function(t){return t.t.trim()}).join(""),u=d.length?t.measureText(d).width/d.length:48,b=1;o.lines.forEach(function(e){var n=e.t.trim();n&&(b=Math.max(b,t.measureText(n).width))});var y,A=Math.min(b,50*u),w=Math.floor(100*l.maxW/A);function E(e){var n=[];if("poem"===o.mode){var a=Math.min(Math.round(1.5*e),84);if(t.font=m(a),t.letterSpacing="0px",v(t,o.title,l.maxW).forEach(function(t){n.push({text:t,font:m(a),color:c,lh:1.18*a,x:0})}),o.poet){var r=Math.min(.8*e,34);n.push({spacer:.34*e}),n.push({text:o.poet,font:g(r),color:c,lh:1.5*r,x:0})}n.push({spacer:.95*e})}return n}function C(e){var n=[],a=(o.prose?1.55:1.44)*e,r=.86*e;t.font=f(e),t.letterSpacing="0px";var c=t.measureText(" ").width||.28*e,s=Math.min(.8*e,34),p=4*c;return o.lines.forEach(function(d){var u=d.t;if(u.trim())if(o.prose){t.font=f(e);var g=v(t,u.trim(),l.maxW);g.forEach(function(t,o){n.push({text:t,words:t.split(" "),justify:o0?l.hang:0)})});t.font=f(e);var m=u.match(/^ */)[0].length,x=m*c,b=u.slice(m),y=Math.max(l.maxW-x,.45*l.maxW);v(t,b,y).forEach(function(t,o){n.push({text:t,font:f(e),color:i.ink,lh:a,x:x+(o>0?l.hang:0)})})}else n.push({spacer:r})}),n}function S(t){var e=[],n=Math.min(Math.max(.42*t,23),31);return e.push({spacer:1.1*t}),o.poet&&e.push({text:"— "+o.poet,font:g(n),color:c,lh:1.42*n,x:0}),o.title&&!o.interview&&e.push({text:"from “"+o.title+"”",font:h(.96*n),color:i.sub,lh:1.42*n,x:0}),e}for(y=Math.min(s,Math.max(w,p));y>=p;y-=2){var P=E(y).concat(C(y),"selection"===o.mode?S(y):[]);if(x(P)<=l.availH)return{pages:[P],centered:!0,L:l,T:i,acc:c}}if("selection"===o.mode)return{pages:[C(p).concat(S(p))],centered:!0,L:l,T:i,acc:c};var T=E(y=p),L=C(y).concat("selection"===o.mode?S(y):[]),j=x(T),K=[],O=[],N=0,k=!0;return L.forEach(function(t){var e=null!=t.spacer?t.spacer:t.lh,n=k?l.availH-j:l.availH;N+e>n&&O.length&&(K.push(k?T.concat(O):O),k=!1,O=[],N=0),(O.length||null==t.spacer)&&(O.push(t),N+=e)}),O.length&&K.push(k?T.concat(O):O),{pages:K,centered:!1,L:l,T:i,acc:c}}(p,E(),t[0],t[1]),d.page>=u.plan.pages.length&&(d.page=0),y(l,E(),u.plan,d.page);var o=u.plan.pages.length,a=document.getElementById("opc-nav");o>1?(a.style.display="flex",document.getElementById("opc-lbl").textContent=d.page+1+" / "+o,document.getElementById("opc-prev").disabled=0===d.page,document.getElementById("opc-next").disabled=d.page===o-1):a.style.display="none"})}function E(){return{mode:u.mode,title:u.title,poet:u.poet,lines:u.lines,prose:u.prose,article:u.article,interview:u.interview,theme:d.theme,format:d.fmt}}function C(t){u=t,d.page=0,c.style.display="flex",w()}function S(t,e){[].slice.call(document.querySelectorAll("#"+t+" button")).forEach(function(n){n.onclick=function(){d[e]=n.dataset.v,[].slice.call(document.querySelectorAll("#"+t+" button")).forEach(function(t){t.classList.toggle("on",t===n)}),d.page=0,w()}})}function P(t){var e=document.createElement("canvas");return y(e,E(),u.plan,t),new Promise(function(t){e.toBlob(t,"image/png")})}function T(t){return"onlypoems-"+(u.title||"poem").toLowerCase().replace(/[^a-z0-9]+/g,"-").slice(0,40)+(u.plan.pages.length>1?"-"+(t+1):"")+".png"}function L(){var t=u.plan.pages.length,e=0;!function n(){e>=t||P(e).then(function(t){var o=document.createElement("a");o.href=URL.createObjectURL(t),o.download=T(e),o.click(),setTimeout(function(){URL.revokeObjectURL(o.href)},3e3),e++,setTimeout(n,450)})}()}function j(){var t=function(){for(var t={title:"",poet:"",type:""},e=document.querySelectorAll('script[type="application/ld+json"]'),n=0;n=60&&!/\bnote\b/i.test(h(t))}));var c=o&&i.some(function(t){var e=t.querySelectorAll("br").length+(t.querySelectorAll("p,div,h1,h2,h3,li").length||1),n=(t.textContent||"").trim().length;return e>=3&&n/e<55}),l=!(a||c||/creativework|poem|book|poetry/i.test(t.type)&&!n&&!o);l||i.forEach(function(e){var n=(i.length>1?h(e):t.title||h(e))||t.title||h(e),o=document.createElement("button");o.className="opc-share",o.innerHTML='Share this poem',o.onclick=function(){var o=A(e);C({mode:"poem",title:n,poet:t.poet,lines:o.lines,prose:o.prose})},e.insertAdjacentElement("afterend",o)});var p=null,d=!1,u="";document.addEventListener("mouseup",function(){setTimeout(m,10)}),document.addEventListener("touchend",function(){setTimeout(m,10)}),document.addEventListener("selectionchange",function(){window.getSelection().isCollapsed&&(s.style.display="none")}),s.addEventListener("mousedown",function(t){t.preventDefault()}),s.onclick=function(){p&&p.length&&(s.style.display="none",C({mode:"selection",title:u,poet:t.poet,lines:p,prose:!!l||d,article:l,interview:n}))}}function f(t){return t&&!t.closest('nav,.w-nav,footer,.footer,[class*="footer"]')}function g(t){var e=t&&(1===t.nodeType?t:t.parentElement);return f(e=e&&e.closest?e.closest(".w-richtext"):null)?e:null}function h(t){for(var e=t;e;){for(var n=e.previousElementSibling;n;){var o=/^H[1-4]$/.test(n.tagName)?n:n.querySelector?n.querySelector("h1,h2,h3,h4"):null;if(o&&o.textContent.trim())return o.textContent.trim();n=n.previousElementSibling}if(!(e=e.parentElement)||"BODY"===e.tagName)break}return""}function m(){var e=window.getSelection();if(e&&!e.isCollapsed&&e.toString().trim()){var n=g(e.anchorNode);if(!n||n!==g(e.focusNode)||i.indexOf(n)<0)s.style.display="none";else{var o=e.getRangeAt(0).getBoundingClientRect(),a=e.toString();a.length>700&&(a=a.slice(0,700).replace(/\s+\S*$/,"")+"…"),p=a.split(/\n/).map(function(t){return{t:t.replace(/\u00A0/g," ").replace(/\s+$/,""),it:!1}}),d=A(n).prose,u=h(n)||t.title,s.style.display="block",s.style.top=window.scrollY+o.top-s.offsetHeight-12+"px",s.style.left=window.scrollX+o.left+o.width/2-s.offsetWidth/2+"px"}}else s.style.display="none"}}}();