[{"transcript":" One of the great things about Astro is that it ships zero client-side","confidence":0.8573846153846153,"words":[{"word":"One","start_time":0.08,"end_time":0.161},{"word":"of","start_time":0.201,"end_time":0.241},{"word":"the","start_time":0.282,"end_time":0.342},{"word":"great","start_time":0.382,"end_time":0.543},{"word":"things","start_time":0.563,"end_time":0.764},{"word":"about","start_time":0.804,"end_time":1.005},{"word":"Astro","start_time":1.126,"end_time":1.428},{"word":"is","start_time":1.528,"end_time":1.589},{"word":"that","start_time":1.629,"end_time":1.79},{"word":"it","start_time":1.89,"end_time":1.991},{"word":"ships","start_time":2.051,"end_time":2.373},{"word":"zero","start_time":2.594,"end_time":3.036},{"word":"client-side","start_time":3.157,"end_time":3.7}],"alternatives":[],"language":"en"},{"transcript":" JavaScript by default.","confidence":0.645,"words":[{"word":"JavaScript","start_time":3.983,"end_time":4.651},{"word":"by","start_time":4.813,"end_time":5.096},{"word":"default.","start_time":5.217,"end_time":5.44}],"alternatives":[],"language":"en"},{"transcript":" Wouldn't it be nice if you could keep this up when the request for","confidence":0.7477857142857144,"words":[{"word":"Wouldn't","start_time":5.941,"end_time":6.182},{"word":"it","start_time":6.223,"end_time":6.283},{"word":"be","start_time":6.323,"end_time":6.444},{"word":"nice","start_time":6.504,"end_time":6.847},{"word":"if","start_time":6.927,"end_time":6.987},{"word":"you","start_time":7.028,"end_time":7.189},{"word":"could","start_time":7.249,"end_time":7.41},{"word":"keep","start_time":7.491,"end_time":7.712},{"word":"this","start_time":7.752,"end_time":7.913},{"word":"up","start_time":8.014,"end_time":8.094},{"word":"when","start_time":8.155,"end_time":8.275},{"word":"the","start_time":8.316,"end_time":8.396},{"word":"request","start_time":8.436,"end_time":8.839},{"word":"for","start_time":8.859,"end_time":9.02}],"alternatives":[],"language":"en"},{"transcript":" user-generated content comes in?","confidence":0.6014999999999999,"words":[{"word":"user-generated","start_time":9.141,"end_time":10.111},{"word":"content","start_time":10.191,"end_time":10.595},{"word":"comes","start_time":10.716,"end_time":10.979},{"word":"in?","start_time":10.999,"end_time":11.04}],"alternatives":[],"language":"en"},{"transcript":" That is possible by using Astro's server-side capabilities with a","confidence":0.7549999999999999,"words":[{"word":"That","start_time":11.341,"end_time":11.561},{"word":"is","start_time":11.702,"end_time":11.802},{"word":"possible","start_time":11.963,"end_time":12.505},{"word":"by","start_time":12.887,"end_time":13.048},{"word":"using","start_time":13.168,"end_time":13.57},{"word":"Astro's","start_time":13.59,"end_time":14.112},{"word":"server-side","start_time":14.152,"end_time":14.654},{"word":"capabilities","start_time":14.675,"end_time":15.357},{"word":"with","start_time":15.639,"end_time":15.839},{"word":"a","start_time":15.859,"end_time":15.88}],"alternatives":[],"language":"en"},{"transcript":" straight up regular HTML form.","confidence":0.6552,"words":[{"word":"straight","start_time":16.202,"end_time":16.524},{"word":"up","start_time":16.625,"end_time":16.726},{"word":"regular","start_time":16.907,"end_time":17.311},{"word":"HTML","start_time":17.593,"end_time":18.097},{"word":"form.","start_time":18.399,"end_time":18.48}],"alternatives":[],"language":"en"},{"transcript":" HTML forms comes with interactivity out of the box.","confidence":0.8263333333333334,"words":[{"word":"HTML","start_time":22.903,"end_time":23.285},{"word":"forms","start_time":23.346,"end_time":23.607},{"word":"comes","start_time":23.688,"end_time":23.889},{"word":"with","start_time":23.97,"end_time":24.131},{"word":"interactivity","start_time":24.231,"end_time":24.956},{"word":"out","start_time":25.137,"end_time":25.218},{"word":"of","start_time":25.238,"end_time":25.298},{"word":"the","start_time":25.338,"end_time":25.399},{"word":"box.","start_time":25.439,"end_time":25.6}],"alternatives":[],"language":"en"},{"transcript":" When the user submits a form, it sends an HTTP request.","confidence":0.7102727272727272,"words":[{"word":"When","start_time":25.841,"end_time":25.941},{"word":"the","start_time":25.962,"end_time":26.022},{"word":"user","start_time":26.082,"end_time":26.304},{"word":"submits","start_time":26.324,"end_time":26.707},{"word":"a","start_time":26.767,"end_time":26.807},{"word":"form,","start_time":26.888,"end_time":27.19},{"word":"it","start_time":27.331,"end_time":27.391},{"word":"sends","start_time":27.451,"end_time":27.673},{"word":"an","start_time":27.733,"end_time":27.794},{"word":"HTTP","start_time":27.955,"end_time":28.418},{"word":"request.","start_time":28.478,"end_time":28.7}],"alternatives":[],"language":"en"},{"transcript":" And it's up to the code on the server to handle that request and","confidence":0.8360000000000002,"words":[{"word":"And","start_time":29.271,"end_time":29.351},{"word":"it's","start_time":29.391,"end_time":29.492},{"word":"up","start_time":29.573,"end_time":29.673},{"word":"to","start_time":29.693,"end_time":29.794},{"word":"the","start_time":29.814,"end_time":29.874},{"word":"code","start_time":29.955,"end_time":30.217},{"word":"on","start_time":30.297,"end_time":30.378},{"word":"the","start_time":30.398,"end_time":30.478},{"word":"server","start_time":30.599,"end_time":31.022},{"word":"to","start_time":31.162,"end_time":31.263},{"word":"handle","start_time":31.344,"end_time":31.646},{"word":"that","start_time":31.666,"end_time":31.907},{"word":"request","start_time":31.947,"end_time":32.289},{"word":"and","start_time":32.31,"end_time":32.37}],"alternatives":[],"language":"en"},{"transcript":" respond with something sensible.","confidence":0.7,"words":[{"word":"respond","start_time":32.471,"end_time":32.897},{"word":"with","start_time":32.917,"end_time":33.079},{"word":"something","start_time":33.241,"end_time":33.626},{"word":"sensible.","start_time":33.707,"end_time":33.91}],"alternatives":[],"language":"en"},{"transcript":" To be able to generate server-side rendered pages, we must change the","confidence":0.8023333333333335,"words":[{"word":"To","start_time":34.371,"end_time":34.472},{"word":"be","start_time":34.512,"end_time":34.612},{"word":"able","start_time":34.813,"end_time":35.075},{"word":"to","start_time":35.195,"end_time":35.316},{"word":"generate","start_time":35.396,"end_time":35.939},{"word":"server-side","start_time":36.039,"end_time":36.542},{"word":"rendered","start_time":36.582,"end_time":36.843},{"word":"pages,","start_time":36.863,"end_time":37.245},{"word":"we","start_time":37.366,"end_time":37.466},{"word":"must","start_time":37.507,"end_time":37.667},{"word":"change","start_time":37.748,"end_time":38.089},{"word":"the","start_time":38.11,"end_time":38.21}],"alternatives":[],"language":"en"},{"transcript":" Astro config value output from its default static to server or hybrid.","confidence":0.77725,"words":[{"word":"Astro","start_time":38.391,"end_time":38.632},{"word":"config","start_time":38.692,"end_time":39.093},{"word":"value","start_time":39.154,"end_time":39.615},{"word":"output","start_time":39.816,"end_time":40.278},{"word":"from","start_time":40.539,"end_time":40.74},{"word":"its","start_time":40.88,"end_time":40.98},{"word":"default","start_time":41.041,"end_time":41.422},{"word":"static","start_time":41.462,"end_time":41.824},{"word":"to","start_time":42.145,"end_time":42.305},{"word":"server","start_time":42.406,"end_time":42.827},{"word":"or","start_time":43.108,"end_time":43.209},{"word":"hybrid.","start_time":43.229,"end_time":43.51}],"alternatives":[],"language":"en"},{"transcript":" With that done, let's start by creating an upload form on our upload page.","confidence":0.7678571428571429,"words":[{"word":"With","start_time":44.201,"end_time":44.321},{"word":"that","start_time":44.342,"end_time":44.502},{"word":"done,","start_time":44.543,"end_time":44.744},{"word":"let's","start_time":44.764,"end_time":44.925},{"word":"start","start_time":44.945,"end_time":45.126},{"word":"by","start_time":45.146,"end_time":45.267},{"word":"creating","start_time":45.307,"end_time":45.669},{"word":"an","start_time":45.689,"end_time":45.77},{"word":"upload","start_time":45.83,"end_time":46.172},{"word":"form","start_time":46.213,"end_time":46.514},{"word":"on","start_time":46.736,"end_time":46.816},{"word":"our","start_time":46.856,"end_time":46.977},{"word":"upload","start_time":47.037,"end_time":47.339},{"word":"page.","start_time":47.379,"end_time":47.48}],"alternatives":[],"language":"en"},{"transcript":" We need a file picker, a labor for the picker, and a submit button.","confidence":0.7355,"words":[{"word":"We","start_time":48.042,"end_time":48.142},{"word":"need","start_time":48.162,"end_time":48.303},{"word":"a","start_time":48.323,"end_time":48.364},{"word":"file","start_time":48.404,"end_time":48.666},{"word":"picker,","start_time":48.706,"end_time":48.968},{"word":"a","start_time":48.988,"end_time":49.008},{"word":"labor","start_time":49.149,"end_time":49.391},{"word":"for","start_time":49.431,"end_time":49.552},{"word":"the","start_time":49.572,"end_time":49.652},{"word":"picker,","start_time":49.713,"end_time":50.015},{"word":"and","start_time":50.115,"end_time":50.196},{"word":"a","start_time":50.236,"end_time":50.277},{"word":"submit","start_time":50.317,"end_time":50.639},{"word":"button.","start_time":50.659,"end_time":50.8}],"alternatives":[],"language":"en"},{"transcript":" The form should generate a post request, and since we'll be sending along a file,","confidence":0.8138000000000001,"words":[{"word":"The","start_time":51.241,"end_time":51.342},{"word":"form","start_time":51.382,"end_time":51.603},{"word":"should","start_time":51.643,"end_time":51.804},{"word":"generate","start_time":51.844,"end_time":52.226},{"word":"a","start_time":52.306,"end_time":52.347},{"word":"post","start_time":52.427,"end_time":52.688},{"word":"request,","start_time":52.749,"end_time":53.151},{"word":"and","start_time":53.271,"end_time":53.372},{"word":"since","start_time":53.412,"end_time":53.573},{"word":"we'll","start_time":53.613,"end_time":53.774},{"word":"be","start_time":53.794,"end_time":53.874},{"word":"sending","start_time":53.914,"end_time":54.216},{"word":"along","start_time":54.276,"end_time":54.558},{"word":"a","start_time":54.698,"end_time":54.738},{"word":"file,","start_time":54.839,"end_time":55.04}],"alternatives":[],"language":"en"},{"transcript":" the encoding of the form data needs to be of type multipart.","confidence":0.8322499999999998,"words":[{"word":"the","start_time":55.542,"end_time":55.642},{"word":"encoding","start_time":55.703,"end_time":56.306},{"word":"of","start_time":56.386,"end_time":56.467},{"word":"the","start_time":56.507,"end_time":56.587},{"word":"form","start_time":56.688,"end_time":57.01},{"word":"data","start_time":57.03,"end_time":57.372},{"word":"needs","start_time":57.452,"end_time":57.673},{"word":"to","start_time":57.713,"end_time":57.794},{"word":"be","start_time":57.834,"end_time":57.955},{"word":"of","start_time":57.975,"end_time":58.035},{"word":"type","start_time":58.136,"end_time":58.457},{"word":"multipart.","start_time":58.538,"end_time":58.94}],"alternatives":[],"language":"en"},{"transcript":" Before I click submit, take a guess.","confidence":0.7975714285714285,"words":[{"word":"Before","start_time":59.182,"end_time":59.484},{"word":"I","start_time":59.545,"end_time":59.585},{"word":"click","start_time":59.646,"end_time":59.888},{"word":"submit,","start_time":59.908,"end_time":60.353},{"word":"take","start_time":60.635,"end_time":60.817},{"word":"a","start_time":60.858,"end_time":60.898},{"word":"guess.","start_time":60.938,"end_time":61.1}],"alternatives":[],"language":"en"},{"transcript":" What will happen?","confidence":0.7733333333333334,"words":[{"word":"What","start_time":61.687,"end_time":61.911},{"word":"will","start_time":62.033,"end_time":62.236},{"word":"happen?","start_time":62.297,"end_time":62.46}],"alternatives":[],"language":"en"},{"transcript":" If you guessed nothing, kudos to you.","confidence":0.5824285714285714,"words":[{"word":"If","start_time":63.104,"end_time":63.165},{"word":"you","start_time":63.205,"end_time":63.266},{"word":"guessed","start_time":63.306,"end_time":63.488},{"word":"nothing,","start_time":63.569,"end_time":63.913},{"word":"kudos","start_time":64.034,"end_time":64.398},{"word":"to","start_time":64.438,"end_time":64.539},{"word":"you.","start_time":64.559,"end_time":64.62}],"alternatives":[],"language":"en"},{"transcript":" If you guessed nothing and that the form would clear or reset, here is your gold star.","confidence":0.7668235294117647,"words":[{"word":"If","start_time":65.001,"end_time":65.061},{"word":"you","start_time":65.101,"end_time":65.202},{"word":"guessed","start_time":65.222,"end_time":65.463},{"word":"nothing","start_time":65.583,"end_time":65.965},{"word":"and","start_time":66.005,"end_time":66.085},{"word":"that","start_time":66.105,"end_time":66.226},{"word":"the","start_time":66.246,"end_time":66.326},{"word":"form","start_time":66.386,"end_time":66.667},{"word":"would","start_time":66.707,"end_time":66.908},{"word":"clear","start_time":67.169,"end_time":67.631},{"word":"or","start_time":67.651,"end_time":67.691},{"word":"reset,","start_time":68.152,"end_time":68.755},{"word":"here","start_time":69.297,"end_time":69.497},{"word":"is","start_time":69.558,"end_time":69.618},{"word":"your","start_time":69.658,"end_time":69.798},{"word":"gold","start_time":69.859,"end_time":70.099},{"word":"star.","start_time":70.14,"end_time":70.24}],"alternatives":[],"language":"en"},{"transcript":" So why did the form reset?","confidence":0.7424999999999998,"words":[{"word":"So","start_time":71.284,"end_time":71.425},{"word":"why","start_time":71.446,"end_time":71.607},{"word":"did","start_time":71.627,"end_time":71.769},{"word":"the","start_time":71.809,"end_time":71.89},{"word":"form","start_time":71.951,"end_time":72.274},{"word":"reset?","start_time":72.294,"end_time":72.84}],"alternatives":[],"language":"en"},{"transcript":" because the page reloaded and thus re-rendered.","confidence":0.842,"words":[{"word":"because","start_time":73.862,"end_time":74.203},{"word":"the","start_time":74.244,"end_time":74.344},{"word":"page","start_time":74.364,"end_time":74.666},{"word":"reloaded","start_time":74.907,"end_time":75.672},{"word":"and","start_time":75.812,"end_time":75.913},{"word":"thus","start_time":75.953,"end_time":76.174},{"word":"re-rendered.","start_time":76.396,"end_time":77.18}],"alternatives":[],"language":"en"},{"transcript":" Let's add a console log to make it clearer.","confidence":0.8252222222222223,"words":[{"word":"Let's","start_time":77.623,"end_time":77.825},{"word":"add","start_time":77.906,"end_time":78.027},{"word":"a","start_time":78.068,"end_time":78.088},{"word":"console","start_time":78.128,"end_time":78.532},{"word":"log","start_time":78.552,"end_time":78.754},{"word":"to","start_time":78.775,"end_time":78.815},{"word":"make","start_time":78.876,"end_time":79.037},{"word":"it","start_time":79.058,"end_time":79.098},{"word":"clearer.","start_time":79.118,"end_time":79.3}],"alternatives":[],"language":"en"},{"transcript":" The code in the front matter of an Astro file executes on the server","confidence":0.8614285714285713,"words":[{"word":"The","start_time":79.802,"end_time":79.882},{"word":"code","start_time":79.922,"end_time":80.123},{"word":"in","start_time":80.144,"end_time":80.224},{"word":"the","start_time":80.244,"end_time":80.304},{"word":"front","start_time":80.365,"end_time":80.606},{"word":"matter","start_time":80.666,"end_time":80.968},{"word":"of","start_time":81.069,"end_time":81.129},{"word":"an","start_time":81.169,"end_time":81.209},{"word":"Astro","start_time":81.33,"end_time":81.672},{"word":"file","start_time":81.692,"end_time":81.994},{"word":"executes","start_time":82.195,"end_time":82.637},{"word":"on","start_time":82.697,"end_time":82.758},{"word":"the","start_time":82.798,"end_time":82.899},{"word":"server","start_time":82.979,"end_time":83.14}],"alternatives":[],"language":"en"},{"transcript":" once when the page initially renders and then again when we submit the form.","confidence":0.8477857142857141,"words":[{"word":"once","start_time":84.082,"end_time":84.222},{"word":"when","start_time":84.263,"end_time":84.403},{"word":"the","start_time":84.423,"end_time":84.504},{"word":"page","start_time":84.524,"end_time":84.765},{"word":"initially","start_time":84.825,"end_time":85.307},{"word":"renders","start_time":85.367,"end_time":85.789},{"word":"and","start_time":86.452,"end_time":86.552},{"word":"then","start_time":86.593,"end_time":86.753},{"word":"again","start_time":86.814,"end_time":87.055},{"word":"when","start_time":87.135,"end_time":87.276},{"word":"we","start_time":87.316,"end_time":87.476},{"word":"submit","start_time":87.537,"end_time":87.858},{"word":"the","start_time":87.938,"end_time":88.039},{"word":"form.","start_time":88.079,"end_time":88.3}],"alternatives":[],"language":"en"},{"transcript":" And furthermore, the code does not get shipped to this client","confidence":0.7352727272727274,"words":[{"word":"And","start_time":89.043,"end_time":89.143},{"word":"furthermore,","start_time":89.204,"end_time":89.687},{"word":"the","start_time":89.747,"end_time":89.848},{"word":"code","start_time":89.908,"end_time":90.17},{"word":"does","start_time":90.21,"end_time":90.351},{"word":"not","start_time":90.492,"end_time":90.693},{"word":"get","start_time":90.753,"end_time":90.914},{"word":"shipped","start_time":90.934,"end_time":91.156},{"word":"to","start_time":91.297,"end_time":91.478},{"word":"this","start_time":91.498,"end_time":91.639},{"word":"client","start_time":91.699,"end_time":91.84}],"alternatives":[],"language":"en"},{"transcript":" as we can see by the lack of messages in the browser console.","confidence":0.7671538461538462,"words":[{"word":"as","start_time":92.162,"end_time":92.242},{"word":"we","start_time":92.263,"end_time":92.343},{"word":"can","start_time":92.383,"end_time":92.504},{"word":"see","start_time":92.564,"end_time":92.766},{"word":"by","start_time":92.806,"end_time":92.927},{"word":"the","start_time":92.967,"end_time":93.047},{"word":"lack","start_time":93.108,"end_time":93.329},{"word":"of","start_time":93.349,"end_time":93.43},{"word":"messages","start_time":93.51,"end_time":93.933},{"word":"in","start_time":94.114,"end_time":94.194},{"word":"the","start_time":94.255,"end_time":94.396},{"word":"browser","start_time":94.516,"end_time":94.919},{"word":"console.","start_time":94.939,"end_time":95.08}],"alternatives":[],"language":"en"},{"transcript":" So what should we do when the post request comes in?","confidence":0.790818181818182,"words":[{"word":"So","start_time":95.622,"end_time":95.723},{"word":"what","start_time":95.743,"end_time":95.844},{"word":"should","start_time":95.885,"end_time":96.026},{"word":"we","start_time":96.046,"end_time":96.147},{"word":"do","start_time":96.168,"end_time":96.269},{"word":"when","start_time":96.289,"end_time":96.39},{"word":"the","start_time":96.41,"end_time":96.471},{"word":"post","start_time":96.511,"end_time":96.734},{"word":"request","start_time":96.754,"end_time":97.057},{"word":"comes","start_time":97.077,"end_time":97.279},{"word":"in?","start_time":97.3,"end_time":97.34}],"alternatives":[],"language":"en"},{"transcript":" The task at hand is to upload the submitted file to Cloudinary.","confidence":0.7006666666666667,"words":[{"word":"The","start_time":97.701,"end_time":97.802},{"word":"task","start_time":97.842,"end_time":98.084},{"word":"at","start_time":98.104,"end_time":98.224},{"word":"hand","start_time":98.245,"end_time":98.486},{"word":"is","start_time":98.546,"end_time":98.607},{"word":"to","start_time":98.627,"end_time":98.707},{"word":"upload","start_time":98.808,"end_time":99.17},{"word":"the","start_time":99.291,"end_time":99.452},{"word":"submitted","start_time":99.472,"end_time":99.814},{"word":"file","start_time":99.834,"end_time":100.136},{"word":"to","start_time":100.216,"end_time":100.417},{"word":"Cloudinary.","start_time":100.518,"end_time":100.86}],"alternatives":[],"language":"en"},{"transcript":" anything, let's cast the file to be an actual file.","confidence":0.7878999999999998,"words":[{"word":"anything,","start_time":102.551,"end_time":103.133},{"word":"let's","start_time":103.453,"end_time":103.694},{"word":"cast","start_time":103.754,"end_time":104.155},{"word":"the","start_time":104.336,"end_time":104.496},{"word":"file","start_time":104.757,"end_time":105.238},{"word":"to","start_time":105.62,"end_time":105.72},{"word":"be","start_time":105.78,"end_time":105.96},{"word":"an","start_time":105.981,"end_time":106.021},{"word":"actual","start_time":106.321,"end_time":106.642},{"word":"file.","start_time":106.723,"end_time":107.084}],"alternatives":[],"language":"en"},{"transcript":"How do we upload to Cloudinary?","confidence":0.8180000000000001,"words":[{"word":"How","start_time":107.485,"end_time":107.605},{"word":"do","start_time":107.645,"end_time":107.725},{"word":"we","start_time":107.766,"end_time":107.826},{"word":"upload","start_time":107.866,"end_time":108.106},{"word":"to","start_time":108.127,"end_time":108.187},{"word":"Cloudinary?","start_time":108.207,"end_time":108.708}],"alternatives":[],"language":"en"},{"transcript":"We can use","confidence":0.6503333333333333,"words":[{"word":"We","start_time":109.029,"end_time":109.129},{"word":"can","start_time":109.169,"end_time":109.27},{"word":"use","start_time":109.31,"end_time":109.37}],"alternatives":[],"language":"en"},{"transcript":" our node SDK and more specifically the upload stream function.","confidence":0.7935999999999999,"words":[{"word":"our","start_time":109.531,"end_time":109.631},{"word":"node","start_time":109.691,"end_time":109.912},{"word":"SDK","start_time":110.032,"end_time":110.454},{"word":"and","start_time":110.494,"end_time":110.574},{"word":"more","start_time":110.614,"end_time":110.775},{"word":"specifically","start_time":110.815,"end_time":111.397},{"word":"the","start_time":111.457,"end_time":111.538},{"word":"upload","start_time":111.638,"end_time":112.361},{"word":"stream","start_time":112.401,"end_time":112.702},{"word":"function.","start_time":112.762,"end_time":113.164}],"alternatives":[],"language":"en"},{"transcript":"Why not the main upload function?","confidence":0.705,"words":[{"word":"Why","start_time":113.505,"end_time":113.726},{"word":"not","start_time":113.786,"end_time":113.926},{"word":"the","start_time":113.966,"end_time":114.087},{"word":"main","start_time":114.167,"end_time":114.448},{"word":"upload","start_time":114.568,"end_time":114.809},{"word":"function?","start_time":114.829,"end_time":114.99}],"alternatives":[],"language":"en"},{"transcript":" Because with Astro, the incoming file will never be temporarily saved as a file on the server.","confidence":0.8114705882352942,"words":[{"word":"Because","start_time":115.531,"end_time":115.772},{"word":"with","start_time":115.792,"end_time":115.933},{"word":"Astro,","start_time":116.093,"end_time":116.455},{"word":"the","start_time":116.495,"end_time":116.575},{"word":"incoming","start_time":116.696,"end_time":117.118},{"word":"file","start_time":117.198,"end_time":117.56},{"word":"will","start_time":117.66,"end_time":117.801},{"word":"never","start_time":117.841,"end_time":118.021},{"word":"be","start_time":118.082,"end_time":118.162},{"word":"temporarily","start_time":118.222,"end_time":118.644},{"word":"saved","start_time":118.724,"end_time":119.106},{"word":"as","start_time":119.206,"end_time":119.267},{"word":"a","start_time":119.327,"end_time":119.347},{"word":"file","start_time":119.387,"end_time":119.648},{"word":"on","start_time":119.708,"end_time":119.749},{"word":"the","start_time":119.769,"end_time":119.869},{"word":"server.","start_time":119.889,"end_time":120.07}],"alternatives":[],"language":"en"},{"transcript":" We'll start by creating a helper function that takes the file as binary data together with the","confidence":0.6385294117647058,"words":[{"word":"We'll","start_time":120.752,"end_time":120.872},{"word":"start","start_time":120.893,"end_time":121.053},{"word":"by","start_time":121.093,"end_time":121.194},{"word":"creating","start_time":121.214,"end_time":121.475},{"word":"a","start_time":121.515,"end_time":121.556},{"word":"helper","start_time":121.576,"end_time":121.817},{"word":"function","start_time":121.857,"end_time":122.239},{"word":"that","start_time":122.299,"end_time":122.46},{"word":"takes","start_time":122.52,"end_time":122.701},{"word":"the","start_time":122.721,"end_time":122.821},{"word":"file","start_time":122.841,"end_time":123.143},{"word":"as","start_time":123.263,"end_time":123.404},{"word":"binary","start_time":123.484,"end_time":123.926},{"word":"data","start_time":123.966,"end_time":124.207},{"word":"together","start_time":124.228,"end_time":124.449},{"word":"with","start_time":124.469,"end_time":124.649},{"word":"the","start_time":124.67,"end_time":124.73}],"alternatives":[],"language":"en"},{"transcript":" Cloudinary options objects and returns a promise that we may then await.","confidence":0.8563333333333333,"words":[{"word":"Cloudinary","start_time":124.87,"end_time":125.232},{"word":"options","start_time":125.312,"end_time":125.633},{"word":"objects","start_time":125.694,"end_time":126.055},{"word":"and","start_time":126.175,"end_time":126.276},{"word":"returns","start_time":126.316,"end_time":126.697},{"word":"a","start_time":126.778,"end_time":126.798},{"word":"promise","start_time":126.878,"end_time":127.24},{"word":"that","start_time":127.28,"end_time":127.42},{"word":"we","start_time":127.46,"end_time":127.561},{"word":"may","start_time":127.581,"end_time":127.701},{"word":"then","start_time":127.741,"end_time":127.942},{"word":"await.","start_time":128.063,"end_time":128.384}],"alternatives":[],"language":"en"},{"transcript":"Binary data is then","confidence":0.45824999999999994,"words":[{"word":"Binary","start_time":129.167,"end_time":129.569},{"word":"data","start_time":129.589,"end_time":129.749},{"word":"is","start_time":129.789,"end_time":129.83},{"word":"then","start_time":129.85,"end_time":129.95}],"alternatives":[],"language":"en"},{"transcript":" the binary data as one chunk using .end.","confidence":0.8645,"words":[{"word":"the","start_time":132.141,"end_time":132.301},{"word":"binary","start_time":132.401,"end_time":132.763},{"word":"data","start_time":132.803,"end_time":133.064},{"word":"as","start_time":133.184,"end_time":133.244},{"word":"one","start_time":133.345,"end_time":133.465},{"word":"chunk","start_time":133.505,"end_time":133.766},{"word":"using","start_time":133.886,"end_time":134.167},{"word":".end.","start_time":134.789,"end_time":134.99}],"alternatives":[],"language":"en"},{"transcript":"The missing piece at this point is going from a file","confidence":0.7408181818181819,"words":[{"word":"The","start_time":135.552,"end_time":135.632},{"word":"missing","start_time":135.672,"end_time":135.893},{"word":"piece","start_time":135.933,"end_time":136.094},{"word":"at","start_time":136.134,"end_time":136.194},{"word":"this","start_time":136.214,"end_time":136.355},{"word":"point","start_time":136.395,"end_time":136.575},{"word":"is","start_time":136.635,"end_time":136.696},{"word":"going","start_time":136.736,"end_time":136.977},{"word":"from","start_time":137.077,"end_time":137.318},{"word":"a","start_time":137.338,"end_time":137.358},{"word":"file","start_time":137.378,"end_time":137.679}],"alternatives":[],"language":"en"},{"transcript":" to binary data recognized by this CloudinaryUploadStream function.","confidence":0.798875,"words":[{"word":"to","start_time":138.662,"end_time":138.783},{"word":"binary","start_time":138.803,"end_time":139.305},{"word":"data","start_time":139.325,"end_time":139.666},{"word":"recognized","start_time":139.827,"end_time":140.429},{"word":"by","start_time":140.489,"end_time":140.61},{"word":"this","start_time":140.65,"end_time":140.79},{"word":"CloudinaryUploadStream","start_time":140.831,"end_time":141.935},{"word":"function.","start_time":141.995,"end_time":142.376}],"alternatives":[],"language":"en"},{"transcript":"We can do so by","confidence":0.6464,"words":[{"word":"We","start_time":142.838,"end_time":142.918},{"word":"can","start_time":142.938,"end_time":143.059},{"word":"do","start_time":143.079,"end_time":143.199},{"word":"so","start_time":143.24,"end_time":143.28},{"word":"by","start_time":143.3,"end_time":143.34}],"alternatives":[],"language":"en"},{"transcript":" transforming the file in two steps.","confidence":0.8940000000000001,"words":[{"word":"transforming","start_time":143.521,"end_time":144.042},{"word":"the","start_time":144.082,"end_time":144.163},{"word":"file","start_time":144.203,"end_time":144.464},{"word":"in","start_time":144.504,"end_time":144.604},{"word":"two","start_time":144.624,"end_time":144.805},{"word":"steps.","start_time":145.025,"end_time":145.326}],"alternatives":[],"language":"en"},{"transcript":"First to a buffer array and then to an array of 8-bit unsigned","confidence":0.6666923076923077,"words":[{"word":"First","start_time":146.129,"end_time":146.35},{"word":"to","start_time":146.37,"end_time":146.41},{"word":"a","start_time":146.47,"end_time":146.51},{"word":"buffer","start_time":146.55,"end_time":146.892},{"word":"array","start_time":146.952,"end_time":147.233},{"word":"and","start_time":147.393,"end_time":147.473},{"word":"then","start_time":147.514,"end_time":147.694},{"word":"to","start_time":147.734,"end_time":147.835},{"word":"an","start_time":147.875,"end_time":147.955},{"word":"array","start_time":148.075,"end_time":148.356},{"word":"of","start_time":148.457,"end_time":148.517},{"word":"8-bit","start_time":148.537,"end_time":149.039},{"word":"unsigned","start_time":149.179,"end_time":149.48}],"alternatives":[],"language":"en"},{"transcript":" integers aka binary data.","confidence":0.8065,"words":[{"word":"integers","start_time":149.681,"end_time":150.182},{"word":"aka","start_time":150.824,"end_time":151.305},{"word":"binary","start_time":151.365,"end_time":151.927},{"word":"data.","start_time":151.947,"end_time":152.228}],"alternatives":[],"language":"en"},{"transcript":"Again stop and guess what will happen when I submit.","confidence":0.8514999999999999,"words":[{"word":"Again","start_time":152.689,"end_time":152.95},{"word":"stop","start_time":153.13,"end_time":153.411},{"word":"and","start_time":153.591,"end_time":153.672},{"word":"guess","start_time":153.692,"end_time":153.912},{"word":"what","start_time":153.952,"end_time":154.073},{"word":"will","start_time":154.093,"end_time":154.233},{"word":"happen","start_time":154.273,"end_time":154.534},{"word":"when","start_time":154.634,"end_time":154.775},{"word":"I","start_time":154.815,"end_time":154.895},{"word":"submit.","start_time":154.935,"end_time":155.296}],"alternatives":[],"language":"en"},{"transcript":"The file uploads","confidence":0.6146666666666666,"words":[{"word":"The","start_time":156.018,"end_time":156.118},{"word":"file","start_time":156.159,"end_time":156.459},{"word":"uploads","start_time":156.52,"end_time":156.66}],"alternatives":[],"language":"en"},{"transcript":" to Cloudinary and we get this beautiful response from Cloudinary that we printed to the console.","confidence":0.79725,"words":[{"word":"to","start_time":156.861,"end_time":156.981},{"word":"Cloudinary","start_time":157.022,"end_time":157.664},{"word":"and","start_time":158.026,"end_time":158.106},{"word":"we","start_time":158.126,"end_time":158.227},{"word":"get","start_time":158.247,"end_time":158.388},{"word":"this","start_time":158.408,"end_time":158.568},{"word":"beautiful","start_time":158.609,"end_time":158.97},{"word":"response","start_time":159.01,"end_time":159.372},{"word":"from","start_time":159.392,"end_time":159.512},{"word":"Cloudinary","start_time":159.553,"end_time":160.175},{"word":"that","start_time":160.195,"end_time":160.336},{"word":"we","start_time":160.356,"end_time":160.477},{"word":"printed","start_time":160.517,"end_time":160.818},{"word":"to","start_time":160.858,"end_time":160.959},{"word":"the","start_time":160.979,"end_time":161.039},{"word":"console.","start_time":161.059,"end_time":161.22}],"alternatives":[],"language":"en"},{"transcript":" Not the most user-friendly printing to the console, so let's solve that by showing the uploaded file.","confidence":0.8194117647058824,"words":[{"word":"Not","start_time":161.911,"end_time":162.031},{"word":"the","start_time":162.051,"end_time":162.131},{"word":"most","start_time":162.151,"end_time":162.292},{"word":"user-friendly","start_time":162.352,"end_time":162.995},{"word":"printing","start_time":163.075,"end_time":163.356},{"word":"to","start_time":163.396,"end_time":163.496},{"word":"the","start_time":163.517,"end_time":163.577},{"word":"console,","start_time":163.617,"end_time":164.038},{"word":"so","start_time":164.099,"end_time":164.299},{"word":"let's","start_time":164.4,"end_time":164.581},{"word":"solve","start_time":164.621,"end_time":164.842},{"word":"that","start_time":164.882,"end_time":165.102},{"word":"by","start_time":165.243,"end_time":165.484},{"word":"showing","start_time":165.685,"end_time":166.066},{"word":"the","start_time":166.086,"end_time":166.387},{"word":"uploaded","start_time":166.568,"end_time":166.949},{"word":"file.","start_time":166.969,"end_time":167.11}],"alternatives":[],"language":"en"},{"transcript":" To do so, we define a variable uploaded file outside the if block to capture the Cloudinary response.","confidence":0.8106666666666666,"words":[{"word":"To","start_time":167.611,"end_time":167.711},{"word":"do","start_time":167.752,"end_time":167.872},{"word":"so,","start_time":167.912,"end_time":168.093},{"word":"we","start_time":168.133,"end_time":168.233},{"word":"define","start_time":168.253,"end_time":168.555},{"word":"a","start_time":168.595,"end_time":168.615},{"word":"variable","start_time":168.655,"end_time":169.097},{"word":"uploaded","start_time":169.237,"end_time":169.639},{"word":"file","start_time":169.699,"end_time":170.04},{"word":"outside","start_time":170.201,"end_time":170.542},{"word":"the","start_time":170.582,"end_time":170.642},{"word":"if","start_time":170.723,"end_time":170.843},{"word":"block","start_time":170.903,"end_time":171.144},{"word":"to","start_time":171.185,"end_time":171.285},{"word":"capture","start_time":171.325,"end_time":171.787},{"word":"the","start_time":171.847,"end_time":171.927},{"word":"Cloudinary","start_time":171.967,"end_time":172.409},{"word":"response.","start_time":172.429,"end_time":172.63}],"alternatives":[],"language":"en"},{"transcript":" Then on our page, we may conditionally render the form or a preview of the uploaded file.","confidence":0.8141764705882354,"words":[{"word":"Then","start_time":173.612,"end_time":173.873},{"word":"on","start_time":173.973,"end_time":174.033},{"word":"our","start_time":174.094,"end_time":174.214},{"word":"page,","start_time":174.274,"end_time":174.616},{"word":"we","start_time":174.676,"end_time":174.756},{"word":"may","start_time":174.796,"end_time":174.897},{"word":"conditionally","start_time":174.937,"end_time":175.68},{"word":"render","start_time":175.82,"end_time":176.141},{"word":"the","start_time":176.202,"end_time":176.282},{"word":"form","start_time":176.342,"end_time":176.683},{"word":"or","start_time":176.824,"end_time":176.884},{"word":"a","start_time":176.904,"end_time":176.924},{"word":"preview","start_time":177.105,"end_time":177.607},{"word":"of","start_time":177.667,"end_time":177.747},{"word":"the","start_time":177.767,"end_time":177.828},{"word":"uploaded","start_time":177.868,"end_time":178.249},{"word":"file.","start_time":178.31,"end_time":178.41}],"alternatives":[],"language":"en"},{"transcript":" Now, the beauty of Cloudinary is the ability to transfer images on the fly.","confidence":0.7796428571428571,"words":[{"word":"Now,","start_time":178.831,"end_time":178.952},{"word":"the","start_time":178.992,"end_time":179.073},{"word":"beauty","start_time":179.093,"end_time":179.314},{"word":"of","start_time":179.334,"end_time":179.414},{"word":"Cloudinary","start_time":179.435,"end_time":179.957},{"word":"is","start_time":180.038,"end_time":180.118},{"word":"the","start_time":180.159,"end_time":180.259},{"word":"ability","start_time":180.299,"end_time":180.661},{"word":"to","start_time":180.701,"end_time":180.802},{"word":"transfer","start_time":180.882,"end_time":181.325},{"word":"images","start_time":181.405,"end_time":181.707},{"word":"on","start_time":181.868,"end_time":181.968},{"word":"the","start_time":182.009,"end_time":182.109},{"word":"fly.","start_time":182.19,"end_time":182.27}],"alternatives":[],"language":"en"},{"transcript":" So let's not show a preview of the photo in its absolute highest resolution.","confidence":0.8200000000000001,"words":[{"word":"So","start_time":183.012,"end_time":183.193},{"word":"let's","start_time":183.373,"end_time":183.655},{"word":"not","start_time":183.795,"end_time":184.036},{"word":"show","start_time":184.177,"end_time":184.458},{"word":"a","start_time":184.518,"end_time":184.538},{"word":"preview","start_time":184.598,"end_time":185.04},{"word":"of","start_time":185.1,"end_time":185.181},{"word":"the","start_time":185.221,"end_time":185.301},{"word":"photo","start_time":185.361,"end_time":185.763},{"word":"in","start_time":185.944,"end_time":186.064},{"word":"its","start_time":186.165,"end_time":186.265},{"word":"absolute","start_time":186.466,"end_time":186.888},{"word":"highest","start_time":186.948,"end_time":187.269},{"word":"resolution.","start_time":187.289,"end_time":187.51}],"alternatives":[],"language":"en"},{"transcript":" We'll do so by using the awesome unpicked library from Matt Cain and ask for a much smaller square image.","confidence":0.8131,"words":[{"word":"We'll","start_time":188.28,"end_time":188.461},{"word":"do","start_time":188.501,"end_time":188.602},{"word":"so","start_time":188.662,"end_time":188.782},{"word":"by","start_time":188.822,"end_time":188.923},{"word":"using","start_time":189.003,"end_time":189.224},{"word":"the","start_time":189.264,"end_time":189.384},{"word":"awesome","start_time":189.505,"end_time":189.786},{"word":"unpicked","start_time":189.866,"end_time":190.187},{"word":"library","start_time":190.207,"end_time":190.568},{"word":"from","start_time":190.608,"end_time":190.749},{"word":"Matt","start_time":190.789,"end_time":190.97},{"word":"Cain","start_time":191.03,"end_time":191.311},{"word":"and","start_time":191.612,"end_time":191.712},{"word":"ask","start_time":191.793,"end_time":191.973},{"word":"for","start_time":192.013,"end_time":192.174},{"word":"a","start_time":192.214,"end_time":192.234},{"word":"much","start_time":192.294,"end_time":192.475},{"word":"smaller","start_time":192.676,"end_time":193.217},{"word":"square","start_time":193.378,"end_time":193.719},{"word":"image.","start_time":193.739,"end_time":193.96}],"alternatives":[],"language":"en"},{"transcript":" If you look at the resulting image URL, we find that both width, height, crop, and format transformations have been added for us.","confidence":0.8403913043478259,"words":[{"word":"If","start_time":194.441,"end_time":194.501},{"word":"you","start_time":194.541,"end_time":194.621},{"word":"look","start_time":194.641,"end_time":194.822},{"word":"at","start_time":194.842,"end_time":194.882},{"word":"the","start_time":194.922,"end_time":194.982},{"word":"resulting","start_time":195.022,"end_time":195.524},{"word":"image","start_time":195.604,"end_time":195.805},{"word":"URL,","start_time":195.825,"end_time":196.366},{"word":"we","start_time":196.607,"end_time":196.747},{"word":"find","start_time":196.808,"end_time":197.028},{"word":"that","start_time":197.068,"end_time":197.229},{"word":"both","start_time":197.329,"end_time":197.57},{"word":"width,","start_time":197.75,"end_time":197.971},{"word":"height,","start_time":198.091,"end_time":198.332},{"word":"crop,","start_time":198.432,"end_time":198.693},{"word":"and","start_time":198.733,"end_time":198.813},{"word":"format","start_time":198.914,"end_time":199.275},{"word":"transformations","start_time":199.315,"end_time":200.057},{"word":"have","start_time":200.097,"end_time":200.218},{"word":"been","start_time":200.238,"end_time":200.358},{"word":"added","start_time":200.438,"end_time":200.639},{"word":"for","start_time":200.719,"end_time":200.92},{"word":"us.","start_time":201.0,"end_time":201.04}],"alternatives":[],"language":"en"},{"transcript":" I've been in professional development for almost 15 years.","confidence":0.47033333333333327,"words":[{"word":"I've","start_time":201.381,"end_time":201.523},{"word":"been","start_time":201.543,"end_time":201.623},{"word":"in","start_time":201.644,"end_time":201.684},{"word":"professional","start_time":201.704,"end_time":202.047},{"word":"development","start_time":202.067,"end_time":202.45},{"word":"for","start_time":202.471,"end_time":202.672},{"word":"almost","start_time":202.773,"end_time":202.995},{"word":"15","start_time":203.015,"end_time":203.055},{"word":"years.","start_time":203.076,"end_time":203.217}],"alternatives":[],"language":"en"},{"transcript":" Media libraries will get out of hand if nobody has...","confidence":0.8158000000000001,"words":[{"word":"Media","start_time":203.861,"end_time":204.123},{"word":"libraries","start_time":204.143,"end_time":204.546},{"word":"will","start_time":204.666,"end_time":204.948},{"word":"get","start_time":205.008,"end_time":205.169},{"word":"out","start_time":205.21,"end_time":205.31},{"word":"of","start_time":205.331,"end_time":205.391},{"word":"hand","start_time":205.431,"end_time":205.713},{"word":"if","start_time":205.954,"end_time":206.055},{"word":"nobody","start_time":206.176,"end_time":206.518},{"word":"has...","start_time":206.558,"end_time":206.76}],"alternatives":[],"language":"en"},{"transcript":" the job to clean up and tag images correctly.","confidence":0.8286666666666667,"words":[{"word":"the","start_time":207.301,"end_time":207.402},{"word":"job","start_time":207.462,"end_time":207.825},{"word":"to","start_time":208.026,"end_time":208.126},{"word":"clean","start_time":208.227,"end_time":208.529},{"word":"up","start_time":208.63,"end_time":208.71},{"word":"and","start_time":208.831,"end_time":208.932},{"word":"tag","start_time":209.032,"end_time":209.435},{"word":"images","start_time":209.596,"end_time":209.938},{"word":"correctly.","start_time":209.958,"end_time":210.24}],"alternatives":[],"language":"en"},{"transcript":" Flylanary now offers to let AI do that job for you.","confidence":0.745909090909091,"words":[{"word":"Flylanary","start_time":210.701,"end_time":211.264},{"word":"now","start_time":211.304,"end_time":211.505},{"word":"offers","start_time":211.646,"end_time":211.948},{"word":"to","start_time":211.968,"end_time":212.049},{"word":"let","start_time":212.109,"end_time":212.25},{"word":"AI","start_time":212.451,"end_time":212.733},{"word":"do","start_time":212.793,"end_time":212.934},{"word":"that","start_time":212.974,"end_time":213.155},{"word":"job","start_time":213.236,"end_time":213.518},{"word":"for","start_time":213.638,"end_time":213.779},{"word":"you.","start_time":213.799,"end_time":213.88}],"alternatives":[],"language":"en"},{"transcript":" I tested it on the pizza image from this demo and the results were pretty good.","confidence":0.827875,"words":[{"word":"I","start_time":214.281,"end_time":214.341},{"word":"tested","start_time":214.422,"end_time":214.823},{"word":"it","start_time":214.864,"end_time":214.944},{"word":"on","start_time":215.085,"end_time":215.185},{"word":"the","start_time":215.245,"end_time":215.366},{"word":"pizza","start_time":215.446,"end_time":215.908},{"word":"image","start_time":216.069,"end_time":216.31},{"word":"from","start_time":216.35,"end_time":216.511},{"word":"this","start_time":216.551,"end_time":216.691},{"word":"demo","start_time":216.731,"end_time":217.153},{"word":"and","start_time":217.535,"end_time":217.635},{"word":"the","start_time":217.655,"end_time":217.796},{"word":"results","start_time":217.816,"end_time":218.158},{"word":"were","start_time":218.198,"end_time":218.318},{"word":"pretty","start_time":218.419,"end_time":218.64},{"word":"good.","start_time":218.66,"end_time":218.74}],"alternatives":[],"language":"en"}]