<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-8662705757379383704</atom:id><lastBuildDate>Sun, 05 Jul 2026 22:50:27 +0000</lastBuildDate><category>grails</category><category>groovy</category><category>webtest</category><category>VR-4</category><category>legnum</category><category>ozvr4</category><category>plugins</category><category>portlets</category><category>Mistubisihi</category><category>australia</category><category>dyno</category><category>galant</category><category>jasper reports</category><category>jsr186</category><category>jsr268</category><category>1/4 mile</category><category>Evo</category><category>FTTD</category><category>GT-R</category><category>JDM</category><category>New Zealand</category><category>R35</category><category>SSL</category><category>TDD</category><category>WatchON</category><category>barcamp</category><category>cars</category><category>database</category><category>datasource</category><category>drag racing</category><category>functional testing</category><category>gold coast</category><category>grails code example</category><category>grails plugin</category><category>hillclimb</category><category>java</category><category>javascript</category><category>jetspeed</category><category>jquery</category><category>jsecurity</category><category>liferay</category><category>mySKY</category><category>open source</category><category>osdc</category><category>pluto</category><category>quartz</category><category>samsung</category><category>spring</category><category>switchable</category><category>sydney</category><category>test driven development</category><category>web flow</category><category>webflow</category><category>willowbank</category><category>work</category><title>Cars N Code</title><description>Random, infrequent postings about things I find interesting or humorous</description><link>http://www.leebutts.com/</link><managingEditor>noreply@blogger.com (Lee)</managingEditor><generator>Blogger</generator><openSearch:totalResults>50</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-7907360903328851413</guid><pubDate>Sun, 05 Jul 2026 22:49:05 +0000</pubDate><atom:updated>2026-07-06T08:50:27.589+10:00</atom:updated><title>Beware the Vibe-Berg</title><description>&lt;h1 style=&quot;text-align: left;&quot;&gt;&lt;span face=&quot;&amp;quot;Google Sans&amp;quot;, sans-serif&quot; style=&quot;color: #1f1f1f;&quot;&gt;Beware the Vibe-Berg: Why a Great Demo Doesn&#39;t Mean You&#39;re Ready for Production&lt;/span&gt;&lt;/h1&gt;&lt;div _ngcontent-ng-c777936403=&quot;&quot; aria-busy=&quot;false&quot; aria-live=&quot;polite&quot; class=&quot;markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color stronger tutor-markdown-rendering&quot; dir=&quot;ltr&quot; id=&quot;model-response-message-contentr_a84240fef2e24a8c&quot; inline-copy-host=&quot;&quot; style=&quot;--animation-duration: 400ms; --fade-animation-function: ease-out; animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; color: #1f1f1f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: column; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: 16px; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijePkliteseO7Mg-w4dfTl3yrkMUe55r9TPUytMcu0BGWCJSE4Sp1fmSB7E7q6q9JmcAlfp1cSfVzfJ_UO0GaJy-kwjY6qv09vfTSRhtTdov3Ry4B2ND1HnZj9OTIx5ms-Fou8MeGc2_vUK-VG5yzCEbvrOQQWLwZI_GZsdZKtDjAytnliG6ux7l_1iZ42/s1024/Gemini_Generated_Image_.png&quot; style=&quot;font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1024&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijePkliteseO7Mg-w4dfTl3yrkMUe55r9TPUytMcu0BGWCJSE4Sp1fmSB7E7q6q9JmcAlfp1cSfVzfJ_UO0GaJy-kwjY6qv09vfTSRhtTdov3Ry4B2ND1HnZj9OTIx5ms-Fou8MeGc2_vUK-VG5yzCEbvrOQQWLwZI_GZsdZKtDjAytnliG6ux7l_1iZ42/w640-h640/Gemini_Generated_Image_.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; text-align: left; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;span face=&quot;&amp;quot;Google Sans Text&amp;quot;, sans-serif&quot;&gt;You know the feeling. The local build runs flawlessly. The UI is pixel-perfect, the animations are buttery smooth, and the core user flow works like a charm. You present it to the stakeholders, and the room lights up. &lt;/span&gt;&lt;i data-index-in-node=&quot;218&quot; data-path-to-node=&quot;1&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&quot;Wow, this is amazing! It looks completely done. Can we launch it to our 100,000 users tomorrow?&quot;&lt;/i&gt;&lt;/p&gt;&lt;p data-path-to-node=&quot;2&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;Welcome to the surface of the &lt;b data-index-in-node=&quot;30&quot; data-path-to-node=&quot;2&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;Vibe-Berg&lt;/b&gt;.&lt;/p&gt;&lt;p data-path-to-node=&quot;3&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;It &lt;i data-index-in-node=&quot;3&quot; data-path-to-node=&quot;3&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;vibes&lt;/i&gt;. Everyone is happy. But underneath that calm, sunny water lies a massive, sprawling mass of cold, hard engineering reality.&lt;/p&gt;&lt;h2 data-path-to-node=&quot;5&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;Anatomy of the Vibe-Berg&lt;/h2&gt;&lt;p data-path-to-node=&quot;6&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;When we build a Minimum Viable Product (MVP) or a proof-of-concept, we are usually focusing on the tip of the iceberg. We focus on what people can see and touch. But shipping a product to production requires an entirely different universe of skills.&lt;/p&gt;&lt;h3 data-path-to-node=&quot;7&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: -8px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px 0px -8px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;Above the Surface: The &quot;Vibe&quot;&lt;/h3&gt;&lt;p data-path-to-node=&quot;8&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;This is the sunny, low-stress zone. The proof of concept works, the stakeholders are cheering, and on paper, you are &quot;Ready for Launch.&quot; It’s easy to look at a functioning frontend and assume the finish line is right there.&lt;/p&gt;&lt;h3 data-path-to-node=&quot;9&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: -8px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px 0px -8px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;Below the Surface: The Production Reality&lt;/h3&gt;&lt;p data-path-to-node=&quot;10&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;This is where the real architectural heavy lifting happens. To take that beautiful prototype and make it survive the harsh environment of the live internet, you have to submerge into deep-level software engineering:&lt;/p&gt;&lt;ul data-path-to-node=&quot;11&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;li style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;p data-path-to-node=&quot;11,0,0&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,0,0&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;Scalability &amp;amp; Load Balancing:&lt;/b&gt; Making sure the app doesn&#39;t melt when thousands of users hit it simultaneously.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;p data-path-to-node=&quot;11,1,0&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;Robust Security (SOC2, GDPR):&lt;/b&gt; Protecting user data, setting up firewalls, and ensuring compliance so you don&#39;t end up in the news for the wrong reasons.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;p data-path-to-node=&quot;11,2,0&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,0&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;Comprehensive Testing:&lt;/b&gt; Writing the unit, integration, and end-to-end tests to ensure a tiny frontend tweak doesn&#39;t quietly break the entire database.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;p data-path-to-node=&quot;11,3,0&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,0&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;Infrastructure as Code (IaC):&lt;/b&gt; Spinning up cloud environments reliably using tools like AWS and Terraform, rather than just clicking buttons in a dashboard and praying.&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;p data-path-to-node=&quot;11,4,0&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,4,0&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;Monitoring &amp;amp; Alerting:&lt;/b&gt; Setting up systems to wake you up at 3:00 AM &lt;i data-index-in-node=&quot;68&quot; data-path-to-node=&quot;11,4,0&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;before&lt;/i&gt; your users realise the platform is down.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-path-to-node=&quot;13&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;Enter the &quot;DevOps-opus&quot;&lt;/h2&gt;&lt;p data-path-to-node=&quot;14&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;Behind every application that seamlessly transitions from a cool demo to a rock-solid production environment is a chaotic hero. We call them the &lt;b data-index-in-node=&quot;145&quot; data-path-to-node=&quot;14&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;DevOps-opus&lt;/b&gt;.&lt;/p&gt;&lt;p data-path-to-node=&quot;15&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;Armed with eight tentacles, thick glasses, and a dangerous amount of caffeine, the DevOps-opus lives entirely below the waterline. They are simultaneously managing database migrations, tweaking performance optimisation gauges, cleaning up technical debt, and wiring up CI/CD pipelines.&lt;/p&gt;&lt;p data-path-to-node=&quot;16&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;While the surface team is celebrating a successful demo, the DevOps-opus is quietly ensuring that the infrastructure is fault-tolerant, cost-effective, and secure. They turn the &quot;vibe&quot; into an enterprise-grade reality.&lt;/p&gt;&lt;h2 data-path-to-node=&quot;18&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;The Takeaway: Respect the Underbelly&lt;/h2&gt;&lt;p data-path-to-node=&quot;19&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;There is absolutely nothing wrong with celebrating a great demo. Vibing your own creation is part of the joy of building things! But as teams, we have to stop mistaking a completed UI for a completed product.&lt;/p&gt;&lt;p data-path-to-node=&quot;20&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;Next time you&#39;re planning a roadmap, look beneath the waterline. Give your engineering and platform teams the time, resources, and respect they need to build the hidden infrastructure. Because it might vibe above, but reality is deep—and production ain&#39;t easy.&lt;/p&gt;&lt;blockquote data-path-to-node=&quot;21&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;p data-path-to-node=&quot;21,0&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0&quot; style=&quot;animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;&quot;&gt;What’s the craziest thing you&#39;ve ever had to build under the surface to save a &quot;successful&quot; launch? Let’s swap production horror stories in the comments below!&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;</description><link>http://www.leebutts.com/2026/07/beware-vibe-berg-why-great-demo-doesnt.html</link><author>noreply@blogger.com (Lee)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijePkliteseO7Mg-w4dfTl3yrkMUe55r9TPUytMcu0BGWCJSE4Sp1fmSB7E7q6q9JmcAlfp1cSfVzfJ_UO0GaJy-kwjY6qv09vfTSRhtTdov3Ry4B2ND1HnZj9OTIx5ms-Fou8MeGc2_vUK-VG5yzCEbvrOQQWLwZI_GZsdZKtDjAytnliG6ux7l_1iZ42/s72-w640-h640-c/Gemini_Generated_Image_.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-2496852344814586778</guid><pubDate>Sat, 29 Mar 2025 01:32:00 +0000</pubDate><atom:updated>2025-04-01T11:39:05.040+10:00</atom:updated><title>Gemini follow up</title><description>&lt;span style=&quot;font-family: verdana;&quot;&gt;I decided to have another try via the Gemini app using vanilla 2.0 Flash and it&#39;s Image 3 integration and it did way better! I didn&#39;t make the same mistake of asking for fireballs. But it did manage to refine several times including fixing spelling.&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;First image&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgvGe1dI4F-GLZlaE6Zf40wPtBQdNDx4hpRR8iocN4JX-nmUqssBONbXTw-DVES9hk8ACquJHF5oPiG_gqsB_pJlCBdsLEiwEn3LdHs3qSHBtzTx_rdSB1Oa3ZkMukkKMdq3u4Kd91VXw09FPilu_0BNtcGzHEqZyOmiL9ybcCQZqLA2nE-47ZVJIv9_h1n&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgvGe1dI4F-GLZlaE6Zf40wPtBQdNDx4hpRR8iocN4JX-nmUqssBONbXTw-DVES9hk8ACquJHF5oPiG_gqsB_pJlCBdsLEiwEn3LdHs3qSHBtzTx_rdSB1Oa3ZkMukkKMdq3u4Kd91VXw09FPilu_0BNtcGzHEqZyOmiL9ybcCQZqLA2nE-47ZVJIv9_h1n=w640-h640&quot; width=&quot;640&quot; /&gt;
  &lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Final edit&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
  &lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgpkv-qJUcDotdhpMZ82Xa1VMvf9m_Wx5WDqX3PYKwg9rqM8Z-kO5ZPaGxK6Mxk-nA7U8XlDIc1Bf4tcmWWr7mej59gFGtamkvuzjsrWPfmPZjKeDPHkuc-AvWtJvVsRqfdPdnQsCPkVh_HlV9pAaoXlm3kkoVmQGtqJvOq3yQc0BGz4HjlJ9n3209cypKV&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
    &lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgpkv-qJUcDotdhpMZ82Xa1VMvf9m_Wx5WDqX3PYKwg9rqM8Z-kO5ZPaGxK6Mxk-nA7U8XlDIc1Bf4tcmWWr7mej59gFGtamkvuzjsrWPfmPZjKeDPHkuc-AvWtJvVsRqfdPdnQsCPkVh_HlV9pAaoXlm3kkoVmQGtqJvOq3yQc0BGz4HjlJ9n3209cypKV=w640-h640&quot; width=&quot;640&quot; /&gt;
  &lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Nice work Gemini!&lt;/span&gt;&lt;/div&gt;</description><link>http://www.leebutts.com/2025/03/gemini-follow-up.html</link><author>noreply@blogger.com (Lee)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgvGe1dI4F-GLZlaE6Zf40wPtBQdNDx4hpRR8iocN4JX-nmUqssBONbXTw-DVES9hk8ACquJHF5oPiG_gqsB_pJlCBdsLEiwEn3LdHs3qSHBtzTx_rdSB1Oa3ZkMukkKMdq3u4Kd91VXw09FPilu_0BNtcGzHEqZyOmiL9ybcCQZqLA2nE-47ZVJIv9_h1n=s72-w640-h640-c" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-8852033470790364997</guid><pubDate>Wed, 26 Mar 2025 23:51:00 +0000</pubDate><atom:updated>2025-03-27T09:59:58.285+10:00</atom:updated><title>Gemini 2.0 Flash image editing </title><description>&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;i&gt;Wow - long time between posts...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;When I heard that Gemini had launched experimental support for iterative editing of generated images, I was keen to give it a try:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgXqSW6jz19m3nXwYMU19cz9ERA5H4LnrR3lTmcR3i9Wc6U-eIV4Br_ACCniEPd3cQAiDT3PVAgSq1HuyxqqV_BWgWt1VrBlzfmzyKPQtopaX96dI-cTQ9hgBFZDUQtJpbK_FdmmVjcigprNt57MjtNahAtw2bB_YhRS9R6Yzh2r6kLqiLIdmw7nQy4hs0s&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;584&quot; data-original-width=&quot;734&quot; height=&quot;509&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgXqSW6jz19m3nXwYMU19cz9ERA5H4LnrR3lTmcR3i9Wc6U-eIV4Br_ACCniEPd3cQAiDT3PVAgSq1HuyxqqV_BWgWt1VrBlzfmzyKPQtopaX96dI-cTQ9hgBFZDUQtJpbK_FdmmVjcigprNt57MjtNahAtw2bB_YhRS9R6Yzh2r6kLqiLIdmw7nQy4hs0s=w640-h509&quot; width=&quot;640&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;So far so good! But it needed to be more Eurovision!&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiK2e7Jz8BYiL9bsYCejiA7ZV0xIV8qzC8SKVKP8LuWzv9Wjmmr1818R_k62RukciXnr8E2WDXzuHo_Dfxd3WXyvtFeRx9K_hK1ANrZ-LiuQeuxdEki1NBQkxNRME0xscC0VOAompCaUoA4PpdcMnHz1Ht4J3apMs_e9ugSCdZMxJag6Jedoxehl7OpHYb_&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;491&quot; data-original-width=&quot;740&quot; height=&quot;424&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiK2e7Jz8BYiL9bsYCejiA7ZV0xIV8qzC8SKVKP8LuWzv9Wjmmr1818R_k62RukciXnr8E2WDXzuHo_Dfxd3WXyvtFeRx9K_hK1ANrZ-LiuQeuxdEki1NBQkxNRME0xscC0VOAompCaUoA4PpdcMnHz1Ht4J3apMs_e9ugSCdZMxJag6Jedoxehl7OpHYb_=w640-h424&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;Pretty good! He needs a name&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhd6wtnxjeGM5p0zbsFavT0ZNg7qCESIL4Srh4XSOg8lGGNZocE_sxAldmkjs7gj1Bd36U9sj6TKvYxQ7SUn3S-GBZizw83wiW7vzBc83zj1YFhShwvMXfOwWIqhpvbMJNIY0m-IKRSECnBubpxlFWPcELoa4n7w-JzrWOckhnRX2OcVKn84boLM-7zD_PH&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;457&quot; data-original-width=&quot;716&quot; height=&quot;408&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhd6wtnxjeGM5p0zbsFavT0ZNg7qCESIL4Srh4XSOg8lGGNZocE_sxAldmkjs7gj1Bd36U9sj6TKvYxQ7SUn3S-GBZizw83wiW7vzBc83zj1YFhShwvMXfOwWIqhpvbMJNIY0m-IKRSECnBubpxlFWPcELoa4n7w-JzrWOckhnRX2OcVKn84boLM-7zD_PH=w640-h408&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Introducing Glow Bandit from Slovakia! Eurovision is all about the show, bring on the wow factor&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjYC2uG49kdu0cAWfMnu-WqN74dACYW3z55-pOjDsSEhZ5EE9qpZNSpgCSbuKQpw631SmSSiYS5Im0Az-OXWRE5dIvAiROh44aZh6jdwgUtuQAo-xiQoMIHy6ChKXk92bsqzyD4FrwkzGZPqI0-KucZosC-ZQQ5pFijieQyxp4IB0QET5Smb0PYzi_o7zOo&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;596&quot; data-original-width=&quot;698&quot; height=&quot;547&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjYC2uG49kdu0cAWfMnu-WqN74dACYW3z55-pOjDsSEhZ5EE9qpZNSpgCSbuKQpw631SmSSiYS5Im0Az-OXWRE5dIvAiROh44aZh6jdwgUtuQAo-xiQoMIHy6ChKXk92bsqzyD4FrwkzGZPqI0-KucZosC-ZQQ5pFijieQyxp4IB0QET5Smb0PYzi_o7zOo=w640-h547&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Hmm, I was hoping for fireballs&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgqZwQr8GjKxrVFR8URgKbVSgM0ZH4GxoPQOP5D4z5cSxxKijAafOQTDj_cdl7Goq4u42y_pfvlfEIBAHrJm9u-OpNplQJ8hti0MJSajCIRaxSdJyBWDZnTRo11D_lZVMYzPbFjvc3KO7eehBJ2CyjRTPWIZRhHiZuz7TI4wQUuLqXXmAcH5Gimil-7_rO7&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;594&quot; data-original-width=&quot;713&quot; height=&quot;533&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgqZwQr8GjKxrVFR8URgKbVSgM0ZH4GxoPQOP5D4z5cSxxKijAafOQTDj_cdl7Goq4u42y_pfvlfEIBAHrJm9u-OpNplQJ8hti0MJSajCIRaxSdJyBWDZnTRo11D_lZVMYzPbFjvc3KO7eehBJ2CyjRTPWIZRhHiZuz7TI4wQUuLqXXmAcH5Gimil-7_rO7=w640-h533&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;Those don&#39;t look quite right&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjspzUnvZyK6tTYBnHuhJrdFaJ7kNEo2AztTXBuc563qsRQCWkKLBXlMfapdX2lcRxoPeNnjb9Rx6I139cjuD1-r463XnU0FWURREytH44iawoPoPLfg_F2hWT_XpDJZUXgBzMdSCdF8lthZ6QUbU6cPlA7b-rST9PpbMq2g9zcuhAMJOmr0a74N5QpbbZz&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;612&quot; data-original-width=&quot;694&quot; height=&quot;565&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjspzUnvZyK6tTYBnHuhJrdFaJ7kNEo2AztTXBuc563qsRQCWkKLBXlMfapdX2lcRxoPeNnjb9Rx6I139cjuD1-r463XnU0FWURREytH44iawoPoPLfg_F2hWT_XpDJZUXgBzMdSCdF8lthZ6QUbU6cPlA7b-rST9PpbMq2g9zcuhAMJOmr0a74N5QpbbZz=w640-h565&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;Geez, who turned out the lights&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhyUCMOMhjWfJOzmAIyMwGB4Xpnb2-gpH0FSO9gfYDqm0VFKGAsGZ-N91yhBnzSL_mYHNO7qa51HR9_eJrFIwXaLvqX6GMipbyCxce1KnLYHByoaNSdnj9vSth5zxnMps_T2588G_dmlhMq6SDHmuJZH6r_s5l3OpyzKNuSVotB0vUG-ZNw34z1oNOpVqX4&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;503&quot; data-original-width=&quot;690&quot; height=&quot;466&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhyUCMOMhjWfJOzmAIyMwGB4Xpnb2-gpH0FSO9gfYDqm0VFKGAsGZ-N91yhBnzSL_mYHNO7qa51HR9_eJrFIwXaLvqX6GMipbyCxce1KnLYHByoaNSdnj9vSth5zxnMps_T2588G_dmlhMq6SDHmuJZH6r_s5l3OpyzKNuSVotB0vUG-ZNw34z1oNOpVqX4=w640-h466&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;Oh dear, this is not going well&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiAAZ1CUjnWQpgcLDBe0jKqNu8LI20LkVbZn_hzgrzUp0oIRUxKtAIm14jHDRSqiVfJS5WY9rSoxV8RbeIpmxEUdj2GT_gs9-ewY6c4Gov8GV80MhcImSxvqt3UwYop4fwZsMCEfO5xMgAZIXEgJWJj8ty9t_jPJLB9IO0IydkKG7KT29u7FLI1vZEIZijz&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;577&quot; data-original-width=&quot;699&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiAAZ1CUjnWQpgcLDBe0jKqNu8LI20LkVbZn_hzgrzUp0oIRUxKtAIm14jHDRSqiVfJS5WY9rSoxV8RbeIpmxEUdj2GT_gs9-ewY6c4Gov8GV80MhcImSxvqt3UwYop4fwZsMCEfO5xMgAZIXEgJWJj8ty9t_jPJLB9IO0IydkKG7KT29u7FLI1vZEIZijz=w640-h528&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;Well I guess his hair got brighter, shame he now has no face.&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjAmvsU7c95vCXHH68FLd9jdNB0cC9KYT0HP4gd5KLRialwztz6zbJqsy07BD2zPafMClskzWfIlrGOzrDpp3nyWSWBt2WviXcsT5I7E_DsCP8zif9bLIugs-3M1D1YhPERfaPsdmEfLa8Y7Sugl2zVwAqW72DiIz8KCsm66zS9R5ehbXiqujZVS1HPj6Cc&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;689&quot; data-original-width=&quot;710&quot; height=&quot;622&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjAmvsU7c95vCXHH68FLd9jdNB0cC9KYT0HP4gd5KLRialwztz6zbJqsy07BD2zPafMClskzWfIlrGOzrDpp3nyWSWBt2WviXcsT5I7E_DsCP8zif9bLIugs-3M1D1YhPERfaPsdmEfLa8Y7Sugl2zVwAqW72DiIz8KCsm66zS9R5ehbXiqujZVS1HPj6Cc=w640-h622&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;Ok, not quite so dark. Can we fix his face?&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgG2_BgL10hiuflTqR95z86QYPzTg0CvS0HUVC3LzfUmfnPOUfGzM9cajTGCJvIFOYZ11GMV7u9q2jjzH6PTHkgYiHBU7HTRTfWycP4hQ2tMZ5pI3M9eiL6U39P0ODFVXSMOIuOv3YwDLgekcIq_IINXntVCR-ARmiTXSHnRe1OSUXq3cdQxjFwEPJwtEs2&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;602&quot; data-original-width=&quot;715&quot; height=&quot;539&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgG2_BgL10hiuflTqR95z86QYPzTg0CvS0HUVC3LzfUmfnPOUfGzM9cajTGCJvIFOYZ11GMV7u9q2jjzH6PTHkgYiHBU7HTRTfWycP4hQ2tMZ5pI3M9eiL6U39P0ODFVXSMOIuOv3YwDLgekcIq_IINXntVCR-ARmiTXSHnRe1OSUXq3cdQxjFwEPJwtEs2=w640-h539&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;He&#39;s back in the dark again&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhl9vfgry57sF2lBoxpB44Sl6ja_Dd_1H7vSHURdWDrvTYKF4qp0YAF5AelbH9TE0zDjbnpJ3uz78XkENjacU-FI0ErKPCrkaOHgY2pgZArxTftGUPKyNb1ZbNHzbkP6wfs6mSaRGJM2_o6WMRwEdkexc0Cnlx9kx0ffpH4HV8Qhz6C1ZciECxzpkKB9tMZ&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;773&quot; data-original-width=&quot;679&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhl9vfgry57sF2lBoxpB44Sl6ja_Dd_1H7vSHURdWDrvTYKF4qp0YAF5AelbH9TE0zDjbnpJ3uz78XkENjacU-FI0ErKPCrkaOHgY2pgZArxTftGUPKyNb1ZbNHzbkP6wfs6mSaRGJM2_o6WMRwEdkexc0Cnlx9kx0ffpH4HV8Qhz6C1ZciECxzpkKB9tMZ=w563-h640&quot; width=&quot;563&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Maybe if I ask it to think harder...&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiztdhvhvu7AtJsU4DeI_vPF63tS-6uABgIfJIJJF-M-qM2g8UJp0PQPLc3t-LmYXJ1dceXfrYzpO8qx-7bOyd9TuplCzo2IKDmlYLhcB0uzaQSnAzvy8-pZQZwMFF30jmT11oN-OHJ2ZDC0rUOYptpp6c44HOMflW1nHDIqCIsSHwll0Yp0ZDmMXv0D6gA&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;637&quot; data-original-width=&quot;667&quot; height=&quot;612&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiztdhvhvu7AtJsU4DeI_vPF63tS-6uABgIfJIJJF-M-qM2g8UJp0PQPLc3t-LmYXJ1dceXfrYzpO8qx-7bOyd9TuplCzo2IKDmlYLhcB0uzaQSnAzvy8-pZQZwMFF30jmT11oN-OHJ2ZDC0rUOYptpp6c44HOMflW1nHDIqCIsSHwll0Yp0ZDmMXv0D6gA=w640-h612&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;div style=&quot;text-align: left;&quot;&gt;After that fail, I think we should go back to the start&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh7-qaOvGG1eagEsNaDG9RxgXYXXMH-9jMbvyCGtR9EnLcIo2oK2NwRhf2zH9GeGMFUl_tZ1PisRncIbWzEKEal53NwsSV6Th_1okZ4Sd5C1wLaRmpqn1WxKyNL2yTNL7y1L-YNDl5tU3h4AxpaEHrAUa4-pYRZyTIbQPuA-qs8mVxWwL6516LK_t5zXEb_&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;715&quot; data-original-width=&quot;686&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh7-qaOvGG1eagEsNaDG9RxgXYXXMH-9jMbvyCGtR9EnLcIo2oK2NwRhf2zH9GeGMFUl_tZ1PisRncIbWzEKEal53NwsSV6Th_1okZ4Sd5C1wLaRmpqn1WxKyNL2yTNL7y1L-YNDl5tU3h4AxpaEHrAUa4-pYRZyTIbQPuA-qs8mVxWwL6516LK_t5zXEb_=w613-h640&quot; width=&quot;613&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEia9tpCEx8eU-fJSMzJ_XPhq6IUbwkh14uPhPM6OpuZ0JOusnXkBmwlNhbwmv89O54KyEhpnTgcd2dVKgWYkqbID36EUEz36fFzglVQTp90AAVfh5iqs4bgHV6DyD03nACde0Y-4fZYG9iIdsF503iP8hGDGK6_ez93svny32sr0r4E158hNEcFjmk97BZc&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;814&quot; data-original-width=&quot;667&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEia9tpCEx8eU-fJSMzJ_XPhq6IUbwkh14uPhPM6OpuZ0JOusnXkBmwlNhbwmv89O54KyEhpnTgcd2dVKgWYkqbID36EUEz36fFzglVQTp90AAVfh5iqs4bgHV6DyD03nACde0Y-4fZYG9iIdsF503iP8hGDGK6_ez93svny32sr0r4E158hNEcFjmk97BZc=w525-h640&quot; width=&quot;525&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEia9tpCEx8eU-fJSMzJ_XPhq6IUbwkh14uPhPM6OpuZ0JOusnXkBmwlNhbwmv89O54KyEhpnTgcd2dVKgWYkqbID36EUEz36fFzglVQTp90AAVfh5iqs4bgHV6DyD03nACde0Y-4fZYG9iIdsF503iP8hGDGK6_ez93svny32sr0r4E158hNEcFjmk97BZc&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjRt2QjeLcJY6kA85hBjdU_yvgEUL0wS8mq9Pwp66q1-VyEetg0IWr2f4l-jUbFjzkkEjK36mfOqsmUo9GLAAltj-Xi1dIvLgU5QiN6jBE5w_97_hJTKWHu5lnX8DLFyyoZX3DKHfxPLXqHKzyja0fRoL12QPEDywLiRpdLltPJiEgBECST44BB5Qgb7ASw&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1036&quot; data-original-width=&quot;691&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjRt2QjeLcJY6kA85hBjdU_yvgEUL0wS8mq9Pwp66q1-VyEetg0IWr2f4l-jUbFjzkkEjK36mfOqsmUo9GLAAltj-Xi1dIvLgU5QiN6jBE5w_97_hJTKWHu5lnX8DLFyyoZX3DKHfxPLXqHKzyja0fRoL12QPEDywLiRpdLltPJiEgBECST44BB5Qgb7ASw=w427-h640&quot; width=&quot;427&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;We seem to be stuck with this monstrosity&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhfwqBhXxf8V1SCj950lysrpzNlQ54DX6DL59kFTgX_6GLQ49XeQABmsz1maQFuxLSIeu_WIosby7jgqbWAyZph5JnPOn-GewEMPr_9O06wS8yYqpAJIPrS1bJjNlX9rcnLuXdIQeD6xQmz0lZ167HLQ8I6fVxHYIsksZXcJno300jobckM2nO4CiaHlSuM&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;866&quot; data-original-width=&quot;651&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhfwqBhXxf8V1SCj950lysrpzNlQ54DX6DL59kFTgX_6GLQ49XeQABmsz1maQFuxLSIeu_WIosby7jgqbWAyZph5JnPOn-GewEMPr_9O06wS8yYqpAJIPrS1bJjNlX9rcnLuXdIQeD6xQmz0lZ167HLQ8I6fVxHYIsksZXcJno300jobckM2nO4CiaHlSuM=w480-h640&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjA8oa-4azZWzXNkriq-JJlM9Qtm75CuHI-7Q2BnFzsenbP8qWZD3YSYRGWZ8w5OslCyfoRX69f1F1t4mOjnUv_PbbL7PVJ0d9JtmvbIxCHPgqHHcE8nRcLeTBC2Pl9vFlG3fWCqACPsaCAR_vAEMZAY8DVTNmwFzEN1f6ua0FmbWAllQkddGL7HhlYUxza&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;870&quot; data-original-width=&quot;678&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjA8oa-4azZWzXNkriq-JJlM9Qtm75CuHI-7Q2BnFzsenbP8qWZD3YSYRGWZ8w5OslCyfoRX69f1F1t4mOjnUv_PbbL7PVJ0d9JtmvbIxCHPgqHHcE8nRcLeTBC2Pl9vFlG3fWCqACPsaCAR_vAEMZAY8DVTNmwFzEN1f6ua0FmbWAllQkddGL7HhlYUxza=w499-h640&quot; width=&quot;499&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Lets point it back to before things went bad&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgJ8RRYMxklInpLDu5hh1q-VoeaKxjOfG6bDJdtmOjQJWymmXhTzScRh1iZaGNzJDQ0LJtaM4_IDhDY7WGzPxE5cOhENQREHccQLfXBk2m5JOXiBiQkqv9WMu2HYWD47H-PEZxTgueU9TBttBhFz_gqhl1u4y5bno8sTs1zZCljQHGFvXA7wH2EVX1cnJtw&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;994&quot; data-original-width=&quot;687&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgJ8RRYMxklInpLDu5hh1q-VoeaKxjOfG6bDJdtmOjQJWymmXhTzScRh1iZaGNzJDQ0LJtaM4_IDhDY7WGzPxE5cOhENQREHccQLfXBk2m5JOXiBiQkqv9WMu2HYWD47H-PEZxTgueU9TBttBhFz_gqhl1u4y5bno8sTs1zZCljQHGFvXA7wH2EVX1cnJtw=w443-h640&quot; width=&quot;443&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEixxR3MxUvaL9aM00iZWToTPke4kOhbwqDwfBLE5jReEMkODhULebLKzWf9hnskYqS2DMnys05AMTfp5fVIFhy7o7bdzHtmI6TuMXRxCQzZWCUC3Cy4O09ZZKYQrvgg2pq1Gns4g92T6CrhT3keTzH45vV5UeSZ21KbUM2JG8cT7FU6PfbL3RDyTi-BGSbF&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;550&quot; data-original-width=&quot;656&quot; height=&quot;537&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEixxR3MxUvaL9aM00iZWToTPke4kOhbwqDwfBLE5jReEMkODhULebLKzWf9hnskYqS2DMnys05AMTfp5fVIFhy7o7bdzHtmI6TuMXRxCQzZWCUC3Cy4O09ZZKYQrvgg2pq1Gns4g92T6CrhT3keTzH45vV5UeSZ21KbUM2JG8cT7FU6PfbL3RDyTi-BGSbF=w640-h537&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Maybe that&#39;s as good as it&#39;s gonna get. Let&#39;s see if we can get it to zoom an edited image and add detail&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhX_VNuLZ22ke7fbS3141CRigeBwewwGnR_TuBqVfScl3lbRPbzmc76i-3Kkd9qFxJiPPS_XqtE11w8e0lBlXD1S3e1vR27U0iXSneoBRo-OQ18nZTeqao_nn1ImDIOlBEWFyGI5IeBrI1HnpgqtcrZZ3dJrmQdmgRsy7sP-kURRJQ3CVmP-DadMGmZrzg7&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;577&quot; data-original-width=&quot;681&quot; height=&quot;543&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhX_VNuLZ22ke7fbS3141CRigeBwewwGnR_TuBqVfScl3lbRPbzmc76i-3Kkd9qFxJiPPS_XqtE11w8e0lBlXD1S3e1vR27U0iXSneoBRo-OQ18nZTeqao_nn1ImDIOlBEWFyGI5IeBrI1HnpgqtcrZZ3dJrmQdmgRsy7sP-kURRJQ3CVmP-DadMGmZrzg7=w640-h543&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;If at first you don&#39;t succeed...&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhYeGPZAQS8wAQz2vSD6p9XA84A8iGfIclFKUheAVkHH0tubLeCpK_N0ShEX9mMOVJ30sVvwWnTxeCMA3q93cVEbnauaUEz15i27U_k-Tw38wYB6eGQUPYVNdBRoLf1_sSMMeUKTAFqm0gQtjyzQTKRf6uYsePOdIO-nL0Z1YbXt6z3dG-YqxJWllxmFs4m&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;673&quot; data-original-width=&quot;667&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhYeGPZAQS8wAQz2vSD6p9XA84A8iGfIclFKUheAVkHH0tubLeCpK_N0ShEX9mMOVJ30sVvwWnTxeCMA3q93cVEbnauaUEz15i27U_k-Tw38wYB6eGQUPYVNdBRoLf1_sSMMeUKTAFqm0gQtjyzQTKRf6uYsePOdIO-nL0Z1YbXt6z3dG-YqxJWllxmFs4m=w635-h640&quot; width=&quot;635&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;LOL wut? The Sims - Eurovision edition. Lets see if we can make it more realistic&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEicbmfBxexZLv7sydDPclt6n2Eyrc1XQ6z95x1gTtwtkFm9Zs12AlACJ4a8PC5MYXu3j16HarH5YNrE-cuCjqQaL8cix9NqYAxS2LUlkQv5pp32iOAjej2Lb_HgXt1aVhw13w-hcwNWKxVp1pABYAFp4zEBqNrIw8QzVNeT4eVxmT8iMxRnbeCgC6KwuL9O&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;647&quot; data-original-width=&quot;664&quot; height=&quot;624&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEicbmfBxexZLv7sydDPclt6n2Eyrc1XQ6z95x1gTtwtkFm9Zs12AlACJ4a8PC5MYXu3j16HarH5YNrE-cuCjqQaL8cix9NqYAxS2LUlkQv5pp32iOAjej2Lb_HgXt1aVhw13w-hcwNWKxVp1pABYAFp4zEBqNrIw8QzVNeT4eVxmT8iMxRnbeCgC6KwuL9O=w640-h624&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;lt;slow clap with one massive hand &amp;gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgPO0ZfsvxkGPOm9Ha6CGT1UAiEfDyOdwKTgmJbhd2-wUfpb51iFu0xoCXAFeFZ4rmwDhDuW_CvOLNZQd_u5c2eVkI8brPk5xxKC4vNjSu-dAsN6oIjnlKshkpgHvI9x1e-vSPky26746fChv5hcO7q5ipqjVYk0O5Ty6ftkZVpzd-ECHUsWjei74JufZVz&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;843&quot; data-original-width=&quot;701&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgPO0ZfsvxkGPOm9Ha6CGT1UAiEfDyOdwKTgmJbhd2-wUfpb51iFu0xoCXAFeFZ4rmwDhDuW_CvOLNZQd_u5c2eVkI8brPk5xxKC4vNjSu-dAsN6oIjnlKshkpgHvI9x1e-vSPky26746fChv5hcO7q5ipqjVYk0O5Ty6ftkZVpzd-ECHUsWjei74JufZVz=w533-h640&quot; width=&quot;533&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Ok, hands almost work. What&#39;s up with his shirt?&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjIZ9bqT6hdhktOWzAxjMAZ1V_U692fA3GvaAF6GzWs5WwjmoH4B34e6QD_8fPi3N3uOeLdpvVbMV4v8I7PQv5xCu7vQOqNPDS_B8MCSYZ0_GdKX6QAMNqJptTH4bd6L0dM7x3S1VLhP9SB9oHjx2pVVOX-zHCywv7UyrBMTZb7KADgqVW-k9AmZzYcWmOq&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;673&quot; data-original-width=&quot;683&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjIZ9bqT6hdhktOWzAxjMAZ1V_U692fA3GvaAF6GzWs5WwjmoH4B34e6QD_8fPi3N3uOeLdpvVbMV4v8I7PQv5xCu7vQOqNPDS_B8MCSYZ0_GdKX6QAMNqJptTH4bd6L0dM7x3S1VLhP9SB9oHjx2pVVOX-zHCywv7UyrBMTZb7KADgqVW-k9AmZzYcWmOq=s16000&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;WTH?&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgrcUSh-uw3TxCbnLrIw_YdkqV2qxr0OtIPnmij_8sP_Bb0Ie0qNFla96Dmr9YzjfLmzjrxuKqWpeEFyzjf97Ah3HaX9zibhWUiLZSn9u2Tzo06dxsRjPFzjbRcg3W5d_vA0cBO93zDH73H8nbqroMMxa1SkaoTRDJoiU8OKbit-ab11qUy5906OSuO5CkK&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;950&quot; data-original-width=&quot;668&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgrcUSh-uw3TxCbnLrIw_YdkqV2qxr0OtIPnmij_8sP_Bb0Ie0qNFla96Dmr9YzjfLmzjrxuKqWpeEFyzjf97Ah3HaX9zibhWUiLZSn9u2Tzo06dxsRjPFzjbRcg3W5d_vA0cBO93zDH73H8nbqroMMxa1SkaoTRDJoiU8OKbit-ab11qUy5906OSuO5CkK=w450-h640&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In summary&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj16cGxLPncc6jry9-QKzXEK6TNEvY2tszHl6NXh90KD_DSKqRb7fdIJAksqohYzjTU8TWNWJJZBCKu9aIiL1nWGIzLOBpBiGiBs5yUvSv1uEGaF8GIqr3m4bLcDde8XX_hCU5qeDVcjC6w4LT_yFxWAAOkeqZstagcTYy7n8tjNU8XHsH26F_L12NDwq9h&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;500&quot; data-original-width=&quot;629&quot; height=&quot;509&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj16cGxLPncc6jry9-QKzXEK6TNEvY2tszHl6NXh90KD_DSKqRb7fdIJAksqohYzjTU8TWNWJJZBCKu9aIiL1nWGIzLOBpBiGiBs5yUvSv1uEGaF8GIqr3m4bLcDde8XX_hCU5qeDVcjC6w4LT_yFxWAAOkeqZstagcTYy7n8tjNU8XHsH26F_L12NDwq9h=w640-h509&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</description><link>http://www.leebutts.com/2025/03/gemini-20-flash-image-editing.html</link><author>noreply@blogger.com (Lee)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgXqSW6jz19m3nXwYMU19cz9ERA5H4LnrR3lTmcR3i9Wc6U-eIV4Br_ACCniEPd3cQAiDT3PVAgSq1HuyxqqV_BWgWt1VrBlzfmzyKPQtopaX96dI-cTQ9hgBFZDUQtJpbK_FdmmVjcigprNt57MjtNahAtw2bB_YhRS9R6Yzh2r6kLqiLIdmw7nQy4hs0s=s72-w640-h509-c" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-880168591686067069</guid><pubDate>Mon, 12 Jan 2015 00:36:00 +0000</pubDate><atom:updated>2025-04-21T15:07:00.645+10:00</atom:updated><title>Nurburgring covered in snow == perfect single seater conditions</title><description>&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;270&quot; src=&quot;https://www.youtube.com/embed/d2g6sTSbxBU&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;</description><link>http://www.leebutts.com/2015/01/nurburgring-covered-in-snow-perfect.html</link><author>noreply@blogger.com (Lee)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/d2g6sTSbxBU/default.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-8962708315331413268</guid><pubDate>Tue, 14 Oct 2014 03:33:00 +0000</pubDate><atom:updated>2025-04-21T15:19:50.874+10:00</atom:updated><title>Mango Cube</title><description>&lt;span style=&quot;font-family: helvetica;&quot;&gt;Can&#39;t wait for these to arrive so I can start doing some &quot;internet of things&quot; hacking!&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;

&lt;a href=&quot;https://www.kickstarter.com/projects/530456128/mangocube-the-pocket-sized-arduino-compatible-boar&quot;&gt;MangoCube; the Pocket sized Arduino compatible board&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh45JldapZmXTq_7qNIdzxjJ7W7GUN-pdRjjFMp9Yn4NQEKF41YUIrXjCt6UpnLWfJlBjevfNrk8aUladRDthnW9yiYTStV5cMpAOXLk5HIcHVRCNpUV-w__n3hklDgyoubPYGyC8svDEBe9KuGHApkvYaO0-1gsNuUYnZmQdDnSTXG7S6XkDYpAvZOAvHw/s1552/0f80a707cf87189e5370effd10fdc940_original.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;873&quot; data-original-width=&quot;1552&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh45JldapZmXTq_7qNIdzxjJ7W7GUN-pdRjjFMp9Yn4NQEKF41YUIrXjCt6UpnLWfJlBjevfNrk8aUladRDthnW9yiYTStV5cMpAOXLk5HIcHVRCNpUV-w__n3hklDgyoubPYGyC8svDEBe9KuGHApkvYaO0-1gsNuUYnZmQdDnSTXG7S6XkDYpAvZOAvHw/w640-h360/0f80a707cf87189e5370effd10fdc940_original.png&quot; width=&quot;640&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://www.leebutts.com/2014/10/mango-cube.html</link><author>noreply@blogger.com (Lee)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh45JldapZmXTq_7qNIdzxjJ7W7GUN-pdRjjFMp9Yn4NQEKF41YUIrXjCt6UpnLWfJlBjevfNrk8aUladRDthnW9yiYTStV5cMpAOXLk5HIcHVRCNpUV-w__n3hklDgyoubPYGyC8svDEBe9KuGHApkvYaO0-1gsNuUYnZmQdDnSTXG7S6XkDYpAvZOAvHw/s72-w640-h360-c/0f80a707cf87189e5370effd10fdc940_original.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-3190856239334975656</guid><pubDate>Mon, 22 Sep 2014 00:21:00 +0000</pubDate><atom:updated>2025-04-21T15:07:08.675+10:00</atom:updated><title>Amazing lap of the Nurburgring</title><description>An absolutely unbelievable lap of the Nurburgring in a Mclaren 12C GT3 during the 24hr race&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;270&quot; src=&quot;//www.youtube.com/embed/ajN5fVVOLOw&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;</description><link>http://www.leebutts.com/2014/09/amazing-lap-of-nurburgring.html</link><author>noreply@blogger.com (Lee)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-7459045053935032299</guid><pubDate>Sun, 23 Jun 2013 22:57:00 +0000</pubDate><atom:updated>2013-06-24T08:57:19.569+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">mySKY</category><category domain="http://www.blogger.com/atom/ns#">New Zealand</category><category domain="http://www.blogger.com/atom/ns#">samsung</category><category domain="http://www.blogger.com/atom/ns#">WatchON</category><title>Configuring Samsung WatchOn to control MySKY box</title><description>&lt;a href=&quot;https://play.google.com/store/apps/details?id=tv.peel.samsung.app&quot;&gt;Samsung WatchON&lt;/a&gt;&amp;nbsp;is a free app that came on my Galaxy S4 that turns the phone into a multi-device remote. It also provides video on demand (but not in NZ it seems).&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi41-wZ91afo9sKdibmt-YvBeO7MqYqNO2jhcDCcefLRZGHVplV1VZ-685tSlnn1BDKKfNovwjlTcWT2jUX2Kd7Yc6PsZZPJTMDmscMe9mfScygB7JTTzDlBeqn6Odb26Am4B3Z8t7-LFWI/s1600/watchon.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi41-wZ91afo9sKdibmt-YvBeO7MqYqNO2jhcDCcefLRZGHVplV1VZ-685tSlnn1BDKKfNovwjlTcWT2jUX2Kd7Yc6PsZZPJTMDmscMe9mfScygB7JTTzDlBeqn6Odb26Am4B3Z8t7-LFWI/s320/watchon.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
I successfully configured the Sony TV and Pioneer DVD player in our lounge, and proceeded to torment my wife by randomly adjusting the volume/changing channel/turning the TV off - good times!&lt;br /&gt;
&lt;br /&gt;
However, &amp;nbsp;I couldn&#39;t figure out how to add our MySKY HDi &amp;nbsp;pay TV box as a device.&lt;br /&gt;
&lt;br /&gt;
Turns out, they are made by &lt;a href=&quot;https://www.pace.com/universal/support/pace-tds850nnz/#.Ucd42T6SCzI&quot;&gt;Pace&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ938i_oX8Hq41JvjoftFxuQ8cHuQdR2TJ3xgxpPptSwCNXJXeStSaOIftOtiAuHTty6yi6vhQtGAJPuEwRMkRhdTF0pBsJeTB9q5U0iAR8_gc48ZrmUONSaZXXB9-XdqStzIQp1E_KV1T/s1600/Screenshot_2013-06-24-10-54-15.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ938i_oX8Hq41JvjoftFxuQ8cHuQdR2TJ3xgxpPptSwCNXJXeStSaOIftOtiAuHTty6yi6vhQtGAJPuEwRMkRhdTF0pBsJeTB9q5U0iAR8_gc48ZrmUONSaZXXB9-XdqStzIQp1E_KV1T/s400/Screenshot_2013-06-24-10-54-15.png&quot; width=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
To add it as a device choose, Add Device, Set Top Box, Show other brands. Then find Pace and keep trying codes until the box turns on/off (I think it was about code 14 before it worked). Then presto! No need to find three remotes to use the TV, it can all be done from your phone!</description><link>http://www.leebutts.com/2013/06/configuring-samsung-watchon-to-control.html</link><author>noreply@blogger.com (Lee)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi41-wZ91afo9sKdibmt-YvBeO7MqYqNO2jhcDCcefLRZGHVplV1VZ-685tSlnn1BDKKfNovwjlTcWT2jUX2Kd7Yc6PsZZPJTMDmscMe9mfScygB7JTTzDlBeqn6Odb26Am4B3Z8t7-LFWI/s72-c/watchon.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-2034372259005331558</guid><pubDate>Fri, 22 Jun 2012 04:07:00 +0000</pubDate><atom:updated>2025-04-21T15:07:02.916+10:00</atom:updated><title>The new Aston Martin Vanquish</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnCD2OPTKm2e1rBw8pvVCpV7vT2ARwcKRVJtjRzIIuXLPugfEsuIww_LVFRZFMWAv94FLTjbD5D6MZWyNa_esJICsuWXig73GcJ___BiaAL9s9KcoEHVGYs4VD9PwecHbG6g0COirw5iqI/s1600/689998520.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnCD2OPTKm2e1rBw8pvVCpV7vT2ARwcKRVJtjRzIIuXLPugfEsuIww_LVFRZFMWAv94FLTjbD5D6MZWyNa_esJICsuWXig73GcJ___BiaAL9s9KcoEHVGYs4VD9PwecHbG6g0COirw5iqI/s400/689998520.jpg&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimMp43APV6RVnKM3zp6JEn1KpGeFy6zE3Qrzr5Dgn6Exzw2QQ0KDiZT_i4L3JxdTbhY0BNhSL2uHE_EgUqNRWIPAV9AMbxNK_eg1FqwjbnaonLhw3OPr3g6Yjb1Mk5B6kM2LpmDusP3sEr/s1600/1039-jizz.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimMp43APV6RVnKM3zp6JEn1KpGeFy6zE3Qrzr5Dgn6Exzw2QQ0KDiZT_i4L3JxdTbhY0BNhSL2uHE_EgUqNRWIPAV9AMbxNK_eg1FqwjbnaonLhw3OPr3g6Yjb1Mk5B6kM2LpmDusP3sEr/s1600/1039-jizz.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</description><link>http://www.leebutts.com/2012/06/new-aston-martin-vanquish.html</link><author>noreply@blogger.com (Lee)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnCD2OPTKm2e1rBw8pvVCpV7vT2ARwcKRVJtjRzIIuXLPugfEsuIww_LVFRZFMWAv94FLTjbD5D6MZWyNa_esJICsuWXig73GcJ___BiaAL9s9KcoEHVGYs4VD9PwecHbG6g0COirw5iqI/s72-c/689998520.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-3256647674956579469</guid><pubDate>Wed, 06 Jun 2012 10:30:00 +0000</pubDate><atom:updated>2012-06-06T20:33:18.038+10:00</atom:updated><title>Dream Cars: Koenigsegg</title><description>Great episode from Drive about Koenigsegg and how they build their amazing cars. Definitely worth the 30 minutes if you&#39;re a car fan. The engineering and original thinking they put into these beasts just blows my mind. Truely deserving of the term &quot;super car&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width=&quot;586&quot; height=&quot;330&quot; src=&quot;http://www.youtube.com/embed/qp_qxKWMsVw&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;</description><link>http://www.leebutts.com/2012/06/dream-cars-koenigsegg.html</link><author>noreply@blogger.com (Lee)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/qp_qxKWMsVw/default.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-7899212245468716101</guid><pubDate>Sat, 24 Sep 2011 10:55:00 +0000</pubDate><atom:updated>2025-04-21T15:07:06.367+10:00</atom:updated><title>Motorkhana Perfection</title><description>&lt;b&gt;One day I&#39;ll get back to Motorkhana and hope to be half as good as his guy...&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;360&quot; src=&quot;http://www.youtube.com/embed/UCRUoeToLPk?rel=0&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;</description><link>http://www.leebutts.com/2011/09/motorkhana-perfection.html</link><author>noreply@blogger.com (Lee)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/UCRUoeToLPk/default.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-8614801567382185457</guid><pubDate>Sun, 12 Jun 2011 22:43:00 +0000</pubDate><atom:updated>2025-04-21T15:16:58.076+10:00</atom:updated><title>Amazing crash at Le Mans 24hr</title><description>&lt;p&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;I can&#39;t believe McNish walked away from this and no one behind that fence got killed!&lt;/span&gt;&lt;p&gt;

  &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe class=&quot;BLOG_video_class&quot; allowfullscreen=&quot;&quot; youtube-src-id=&quot;gZJPir6NaHY&quot; width=&quot;600&quot; height=&quot;498&quot; src=&quot;https://www.youtube.com/embed/gZJPir6NaHY&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;</description><link>http://www.leebutts.com/2011/06/amazing-crash-at-le-mans-24hr.html</link><author>noreply@blogger.com (Lee)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/gZJPir6NaHY/default.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-4849456944305494343</guid><pubDate>Wed, 07 Apr 2010 22:09:00 +0000</pubDate><atom:updated>2010-04-08T09:09:06.499+10:00</atom:updated><title>Grails UI Performance Plugin - beware of uiperformance.html.compress</title><description>See: &lt;a href=&quot;http://refactor.com.au/blog/grails-ui-performance-plugin-beware-uiperformancehtmlcompress-false&quot;&gt;http://refactor.com.au/blog/grails-ui-performance-plugin-beware-uiperformancehtmlcompress-false&lt;/a&gt;
&lt;br/&gt;
&lt;br/&gt;</description><link>http://www.leebutts.com/2010/04/grails-ui-performance-plugin-beware-of.html</link><author>noreply@blogger.com (Lee)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-5528902391549830917</guid><pubDate>Sat, 13 Feb 2010 23:15:00 +0000</pubDate><atom:updated>2010-02-14T09:18:11.681+10:00</atom:updated><title>ShareYourLove.com is live!</title><description>Our latest Grails powered application is now officially live!&lt;div&gt;
&lt;br/&gt;
&lt;a href=&quot;http://shareyourlove.com/&quot;&gt;ShareYourLove.com&lt;/a&gt; is a creative community where you can upload images of what you love and view other people&#39;s loves to raise money for charity. It&#39;s a fundraising platform where you don&#39;t have to spend a cent of your own money - all donations will be 100% funded by our advertising partners.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;
&lt;br/&gt;</description><link>http://www.leebutts.com/2010/02/shareyourlovecom-is-live.html</link><author>noreply@blogger.com (Lee)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-5897218011168685395</guid><pubDate>Tue, 27 Oct 2009 04:38:00 +0000</pubDate><atom:updated>2009-10-27T14:42:43.892+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hillclimb</category><category domain="http://www.blogger.com/atom/ns#">legnum</category><category domain="http://www.blogger.com/atom/ns#">Mistubisihi</category><category domain="http://www.blogger.com/atom/ns#">VR-4</category><title>Wow! Two car related posts in a row!</title><description>Here&#39;s some in-car footage from the Grafton Hillclimb. It&#39;s a short, tight course about 3 hours south of the Gold Coast. They hold 4 or 5 of these each year. Heaps of fun! I set a new PB this trip, beating my old best time by about 5 seconds thanks to better tires and suspension.&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;
&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/qc1mm2yYYO8&amp;hl=en&amp;fs=1&amp;&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/qc1mm2yYYO8&amp;hl=en&amp;fs=1&amp;&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;br/&gt;
&lt;br/&gt;
Check out &lt;a href=&quot;http://www.motorsportphotography.com.au&quot;&gt;Motorsport Photography&lt;/a&gt; for heaps of great shots of the events (including me!)</description><link>http://www.leebutts.com/2009/10/wow-two-car-related-posts-in-row.html</link><author>noreply@blogger.com (Lee)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-1004983859965520435</guid><pubDate>Fri, 16 Oct 2009 05:49:00 +0000</pubDate><atom:updated>2025-04-21T15:11:52.315+10:00</atom:updated><title>Finally something car related</title><description>So I&#39;ve been very lazy with posting anything car related but finally have something interesting :)

Here&#39;s some youtube video from my last two outings in the VR4. The first was to a track day at Queensland Raceway and the second was drag racing the following day.&lt;div&gt;&lt;br /&gt;&amp;nbsp;


&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;443&quot; src=&quot;https://www.youtube.com/embed/6uZBBwqhBbA&quot; width=&quot;551&quot; youtube-src-id=&quot;6uZBBwqhBbA&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;



&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;446&quot; src=&quot;https://www.youtube.com/embed/DePlRpWtnW0&quot; width=&quot;554&quot; youtube-src-id=&quot;DePlRpWtnW0&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://www.leebutts.com/2009/10/finally-something-car-related.html</link><author>noreply@blogger.com (Lee)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/6uZBBwqhBbA/default.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-7846326524520212290</guid><pubDate>Fri, 16 Oct 2009 05:47:00 +0000</pubDate><atom:updated>2009-10-16T15:49:09.620+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">grails</category><category domain="http://www.blogger.com/atom/ns#">grails plugin</category><category domain="http://www.blogger.com/atom/ns#">plugins</category><title>Grails Amazon S3 0.7.4 Released</title><description>see &lt;a href=&quot;http://refactor.com.au/blog/grails-amazon-s3-074-released&quot;&gt;http://refactor.com.au/blog/grails-amazon-s3-074-released&lt;/a&gt;
&lt;br/&gt;&lt;br/&gt;</description><link>http://www.leebutts.com/2009/10/grails-amazon-s3-074-released.html</link><author>noreply@blogger.com (Lee)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-7907458763454842790</guid><pubDate>Fri, 11 Sep 2009 02:15:00 +0000</pubDate><atom:updated>2009-09-11T12:16:19.416+10:00</atom:updated><title>Grails WebTest Plugin 1.2.0 Released</title><description>See &lt;a href=&quot;http://refactor.com.au/blog/grails-webtest-plugin-120-released&quot;&gt;http://refactor.com.au/blog/grails-webtest-plugin-120-released&lt;/a&gt;</description><link>http://www.leebutts.com/2009/09/grails-webtest-plugin-120-released.html</link><author>noreply@blogger.com (Lee)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-1139055973572263885</guid><pubDate>Thu, 16 Jul 2009 05:23:00 +0000</pubDate><atom:updated>2009-07-16T15:24:14.932+10:00</atom:updated><title>Grails Amazon S3 Plugin 0.6.3 released</title><description>See &lt;a href=&quot;http://refactor.com.au/blog/grails-amazon-s3-plugin-063-released&quot;&gt;http://refactor.com.au/blog/grails-amazon-s3-plugin-063-released&lt;/a&gt;
&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;</description><link>http://www.leebutts.com/2009/07/grails-amazon-s3-plugin-063-released.html</link><author>noreply@blogger.com (Lee)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-2512796383534398617</guid><pubDate>Sat, 13 Jun 2009 03:17:00 +0000</pubDate><atom:updated>2009-06-13T14:24:57.285+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">grails</category><category domain="http://www.blogger.com/atom/ns#">groovy</category><category domain="http://www.blogger.com/atom/ns#">web flow</category><category domain="http://www.blogger.com/atom/ns#">webflow</category><title>Adding pagination to a Grails WebFlow state</title><description>I noticed a few unanswered questions relating to paginating a WebFlow state on the users mailing list and thought I&#39;d post the solution I came up with for a &lt;a href=&quot;http://www.refactor.com.au/&quot;&gt;Refactor&lt;/a&gt; project I was working on last week.&lt;br/&gt;
&lt;br/&gt;
It basically involves splitting the behaviour into an action and a view state with a transition between them called &#39;paginate&#39;&lt;br/&gt;

&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;
loadResults {
 action {
    def criteria = MyDomain.createCriteria(){
        eq(&#39;someField&#39;,&#39;someval&#39;)
    }
    flow.myDomainResults  = criteria.list([max: 9, offset: flow.myDomainOffset ?: 0])   
    flow.totalMyDomains = flow.myDomainResults.totalCount
    return success()
 }
 on(&#39;success&#39;).to(&#39;browse&#39;)
 on(Exception).to &quot;handleError&quot;
}
browse {
 on(&#39;paginate&#39;) {
    flow.myDomainOffset = params.offset
 }.to(&#39;loadResults&#39;)
 on(&#39;selectItem&#39;).to(&#39;someOtherState&#39;)
 //...
}
&lt;/pre&gt;

One point to note is that I use a criteria in order to get the totalCount property populated for me automatically so that I don&#39;t have to run a separate query. Also, the above only works if your domain class is Serializable, in my real application this wasn&#39;t the case so I stored a list of maps containing the properties I wanted to display instead of the list of domain objects.&lt;br/&gt;
&lt;br/&gt;
Then in the view all we need to do is to pass the current page from the flow scope to the paginate tag. The paginate tag also contains an extra parameter in order to trigger the paginate event when the generated links are clicked.&lt;br/&gt;

&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;
&amp;lt;g:each in=&quot;${myDomainResults}&quot; status=&quot;i&quot; var=&quot;myDomain&quot;&amp;gt;
    &amp;lt;g:form action=&quot;myFlow&quot;&gt;
        &amp;lt;input name=&quot;id&quot; value=&quot;${myDomain.id}&quot; type=&quot;hidden&quot;&amp;gt;
        URL: ${myDomain.url}
        &amp;lt;g:submitbutton name=&quot;selectItem&quot; value=&quot;Select&quot;/&amp;gt;
    &amp;lt;/g:form&gt;
&amp;lt;/g:each&gt;
&amp;lt;div class=&quot;paginateButtons&quot;&amp;gt;
   &amp;lt;g:paginate max=&quot;9&quot; offset=&quot;${myDomainOffset}&quot; total=&quot;${totalMyDomains}&quot; params=&quot;${[_eventId_paginate:true]}&quot; /&amp;gt;
&amp;lt;/div&amp;gt;

&lt;/pre&gt;

You can also see I render each item as a separate form with a hidden id field and a submit button to trigger the &#39;selectItem&#39; event and move onto the next state.&lt;br/&gt;
&lt;br/&gt;
I haven&#39;t tried messing with all the options for g:paginate to make sure they still work so please let me know if you find any problems with the above code.&lt;br/&gt;
&lt;br/&gt;</description><link>http://www.leebutts.com/2009/06/adding-pagination-to-grails-webflow.html</link><author>noreply@blogger.com (Lee)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-4875257580394123047</guid><pubDate>Wed, 10 Jun 2009 14:29:00 +0000</pubDate><atom:updated>2009-06-11T00:30:42.932+10:00</atom:updated><title>Grails Amazon S3 Plugin 0.6 Released</title><description>Check out the &lt;a href=&quot;http://refactor.com.au/blog/grails-amazon-s3-plugin-06-released&quot;&gt;Refactor blog&lt;/a&gt; for the details.
&lt;br/&gt;
&lt;br/&gt;</description><link>http://www.leebutts.com/2009/06/grails-amazon-s3-plugin-06-released.html</link><author>noreply@blogger.com (Lee)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-2531364845404528652</guid><pubDate>Thu, 21 May 2009 00:43:00 +0000</pubDate><atom:updated>2009-05-21T10:50:51.636+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">grails</category><category domain="http://www.blogger.com/atom/ns#">groovy</category><category domain="http://www.blogger.com/atom/ns#">jsr186</category><category domain="http://www.blogger.com/atom/ns#">jsr268</category><category domain="http://www.blogger.com/atom/ns#">portlets</category><title>Grails JSR-186 Portlets Plugin Released</title><description>Kenji Nakamura has taken the reins of my initial work on the Grails Portlets plugin and done an awesome job of refactoring it into more manageable sub-plugins.&lt;br/&gt;
&lt;br/&gt;
You can now plug-in portal implementations with Pluto and Liferay supported initially.&lt;br/&gt;
&lt;br/&gt;
JSR-286 will be supported when the underlying version of Spring used by Grails is updated to Spring 3.0.&lt;br/&gt;
&lt;br/&gt;
Check it out at the Grails &lt;a href=&quot;http://grails.org/plugin/portlets&quot;&gt;plugin portal&lt;/a&gt;.&lt;br/&gt;
&lt;br/&gt;
Great work Kenji!</description><link>http://www.leebutts.com/2009/05/grails-jsr-186-portlets-plugin-released.html</link><author>noreply@blogger.com (Lee)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-6509415911570117461</guid><pubDate>Wed, 06 May 2009 01:00:00 +0000</pubDate><atom:updated>2009-05-06T11:21:13.838+10:00</atom:updated><title>Grails Amazon S3 Plugin 0.5 Released</title><description>The latest version of the Amazon S3 plugin has been released which incorporates the latest jets3t snapshot library (0.7.1-SNAPSHOT) which has improved compatibility with the Eucalyptus open source EC2/S3 clone and some bug fixes.&lt;br/&gt;
&lt;br/&gt;
The plugin S3 event handling code was also updated to avoid stale object and optimistic locking exceptions being thrown by Hibernate.</description><link>http://www.leebutts.com/2009/05/grails-amazon-s3-plugin-05-released.html</link><author>noreply@blogger.com (Lee)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-932613280779496621</guid><pubDate>Wed, 29 Apr 2009 23:43:00 +0000</pubDate><atom:updated>2009-04-30T10:21:11.677+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">grails</category><category domain="http://www.blogger.com/atom/ns#">plugins</category><category domain="http://www.blogger.com/atom/ns#">webtest</category><title>WebTest Plugin 1.1.4.2 Released</title><description>A new minor release of the Grails WebTest plugin to allow the plugin to download the latest WebTest snapshot (which uses HtmlUnit 2.5 which fixes issues with testing JQuery 1.3.2).&lt;br/&gt;
&lt;br/&gt;
It will download the latest snapshot by default when installed. If you would prefer the latest stable release (3.0) you can answer no when prompted.</description><link>http://www.leebutts.com/2009/04/webtest-plugin-1142-released.html</link><author>noreply@blogger.com (Lee)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-5247337825508295905</guid><pubDate>Wed, 29 Apr 2009 23:34:00 +0000</pubDate><atom:updated>2009-04-30T09:43:19.338+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">grails</category><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">jquery</category><category domain="http://www.blogger.com/atom/ns#">webtest</category><title>Testing a JQuery-UI Drag and Drop using WebTest</title><description>Just a quick post regarding using WebTest with JQuery-UI Draggable and Droppable.&lt;br/&gt;

The way that WebTest performs a drag and drop is as follows:
&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;
from.mouseDown()
to.mouseOver()
to.mouseUp()
&lt;/pre&gt;

Note that there is no intermediate move events between mouse down on the thing you&#39;re dragging and mousing over the target element.&lt;br/&gt;

What this means is that you need to configure your Draggable to start dragging on mousedown without delay. You can do this by setting the distance and delay options to zero (delay is zero by default):
&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;
$(&#39;.block&#39;).draggable({distance:0});
&lt;/pre&gt;
WebTest will now be able to click and drag it correctly. Unfortunately due to HtmlUnits &#39;renderless&#39; behaviour you cannot specify exactly where you want to drop it so if you require precise targeting to properly test your application you&#39;re out of luck.</description><link>http://www.leebutts.com/2009/04/webtesting-jquery-ui-drag-and-drop.html</link><author>noreply@blogger.com (Lee)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-611841215921687424</guid><pubDate>Sat, 04 Apr 2009 01:47:00 +0000</pubDate><atom:updated>2009-04-04T11:56:21.741+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">grails</category><category domain="http://www.blogger.com/atom/ns#">webtest</category><title>Grails WebTest Plugin 1.1.4 Released</title><description>&lt;p&gt;
Another WebTest plugin release, this time with some new functionality!
&lt;/p&gt;

&lt;p&gt;Soenke Sothmann has contributed a nice patch to allow you to run custom suites of tests:
&lt;/p&gt;
&lt;pre&gt;
run-webtest -suite=MyTestSuite
&lt;/pre&gt;
&lt;p&gt;Note that under windows you will need to quote the -suite argument due to an issue with Gant&#39;s argument parsing e.g. &quot;-suite=MyTestSuite&quot;&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;
import grails.util.WebTest

class MyTestSuite extends WebTest {

    static void main(args) {
        new MyTestSuite().runTests(args)
    }

    void suite() {
        new SomeTest1(ant:ant).suite()
        new SomeTest2(ant:ant).suite()
        // You could also load up certain tests based on naming conventions or annotations
    }
}
&lt;/pre&gt;

&lt;p&gt;In addition to this patch, there were some bug fixes relating to running webtests under Hudson and also around setting a custom port when starting up the server.&lt;/p&gt;</description><link>http://www.leebutts.com/2009/04/grails-webtest-plugin-114-released.html</link><author>noreply@blogger.com (Lee)</author><thr:total>0</thr:total></item></channel></rss>